Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/orxonox/branches/levelloader/src/lib/gui/gui/orxonox_gui_update.h @ 3499

Last change on this file since 3499 was 3499, checked in by chris, 19 years ago

orxonox/branches/levelloader: merged updated trunk structure into levelloader branch

File size: 4.0 KB
RevLine 
[3250]1/*!
2  \file orxonox_gui_update.h
3  \brief File that holds the class that creates the update-menu.
4*/
5
6#ifndef _ORXONOX_GUI_UPDATE_H
7#define _ORXONOX_GUI_UPDATE_H
8
9#include "orxonox_gui.h"
10#include <stdio.h>
[3270]11#ifdef HAVE_CURL
12#include <curl/curl.h>
13#include <curl/types.h>
14#include <curl/easy.h>
15#endif /* HAVE_CURL */
[3273]16#ifdef HAVE_PTHREAD_H
[3275]17#define _MULTI_THREADED
[3272]18#include <pthread.h>
[3273]19#endif /* HAVE_PTHREAD_H */
[3250]20using namespace std;
21
22//! Class that creates the execute-Options.
23class OrxonoxGuiUpdate
24{
25 private:
[3285]26  // Defining Variables
27  char* tmpDir;                         //!< The Temporary directory.
28  char* homeDir;                        //!< The Home directory.
29  char* installDataDir;                 //!< Where to install the Data to.
30  char* installSourceDir;               //!< Where to install the Source to.
31  char* userName;                       //!< The user logged in.
32
[3315]33  bool getSystemInfo(void);
[3298]34 
[3285]35  // Window creation.
[3284]36  Frame* updateFrame;                   //!< The Frame that holds the updateOptions.
37  Box* updateBox;                       //!< The Box that holds the updateOptions.
38  CheckButton* autoUpdate;              //!< A Checkbutton to enable the automatic Updating.
[3261]39
[3259]40 
[3284]41  Button* updateDataWindowButton;       //!< A Button to update the Data of orxonox.
42  Window* updateDataWindow;             //!< A Window for the data-update.
43  Box* updateDataBox;                   //!< A Box for the Window for the Data-update.
44  ProgressBar* updateDataBar;           //!< A Bar to display the progress of the download.
45  Button* updateDataBegin;              //!< A Button to start the process.
[3257]46
[3284]47  Button* updateSourceWindowButton;     //!< A Button to update the Source of orxonox. \todo tricky
48  Window* updateSourceWindow;           //!< A Window for the Source-update.
49  Box* updateSourceBox;                 //!< A Box for the Window for the Source-update.
50  ProgressBar* updateSourceBar;         //!< A Bar to display the progress of the download.
[3259]51
[3284]52  Button* test;                         //!< will be deleted soon.
[3285]53
54#ifdef HAVE_GTK2
[3315]55  static gint updateDataFunc(GtkWidget* w, GdkEventKey* event, void* info);
56  static gint updateSourceFunc(GtkWidget* w, GdkEventKey* event, void* info);
[3256]57#endif /* HAVE_GTK2 */
[3254]58
[3263]59#ifdef HAVE_CURL
[3267]60  //! A Struct to hold information about one File to download.
[3263]61  struct FileInfo
62  {
[3284]63    char* fileName;                     //!< The Name of the file we want to get.
64    char* webRoot;                      //!< The Root of the File on The Web
65    char* localRoot;                    //!< The Root directory to put the files on the local disk.
66    FILE* fileHandle;                   //!< A fileHandler.
[3267]67
[3284]68    Button* stateButton;                //!< A button that shows either start or cancel;
69    long int buttonSignal;              //!< The Signal of the stateButton.
70    ProgressBar* bar;                   //!< The ProgressBar, that sould be updated.
[3263]71  };
[3254]72
[3315]73  static size_t curlWriteFunc(void* ptr, size_t size, size_t nmemb, FILE* stream);
74  static size_t curlReadFunc(void* ptr, size_t size, size_t nmemb, FILE* stream);
75  static int curlProgressFunc(ProgressBar* bar, double totalSize, double progress, double upTotal, double upProgress);
[3263]76
[3270]77  static CURL* curlHandle;
[3268]78#ifdef HAVE_GTK2
79  static gint cancelDownload(GtkWidget* w, GdkEventKey* event, void* bar);
80#endif /* HAVE_GTK2 */ 
[3273]81#ifdef HAVE_PTHREAD_H
[3272]82  static pthread_t* downloadThreadID;
[3275]83  static pthread_t* downloadThreadFinishID;
[3273]84#endif /* HAVE_PTHREAD_H */
[3272]85  static bool isDownloading;
86
[3315]87  static bool download(void* fileInfo);
88  static bool downloadWithStyle(void* fileInfo);
89  static void* downloadThread(void* fileInfo);
[3274]90  static void* downloadThreadFinished(void* fileInfo);
[3271]91
92 
[3263]93#endif /* HAVE_CURL */
94
[3250]95 public:
[3315]96  OrxonoxGuiUpdate(void);
97  ~OrxonoxGuiUpdate(void);
[3250]98 
[3315]99  Widget* getWidget(void);
[3285]100#ifdef HAVE_CURL   
[3315]101  void updateDataWindowCreate(void);
[3259]102  Button* updateDataWindowGetButton(void);
103
[3315]104  void updateSourceWindowCreate(void);
[3259]105  Button* updateSourceWindowGetButton(void);
[3298]106
[3315]107  bool* checkForUpdates(void);
[3298]108 
[3285]109#endif /* HAVE_CURL */
110
[3250]111};
112
113#endif /* _ORXONOX_GUI_UPDATE_H */
Note: See TracBrowser for help on using the repository browser.