| [3156] | 1 | /*! | 
|---|
| [5024] | 2 |  * @file gui_gtk.h | 
|---|
 | 3 |  * Contains all th different Widgets. | 
|---|
 | 4 |  */ | 
|---|
| [4048] | 5 | #ifndef _GUI_GTK_H | 
|---|
 | 6 | #define _GUI_GTK_H | 
|---|
| [3147] | 7 |  | 
|---|
| [5015] | 8 | #if HAVE_CONFIG_H | 
|---|
 | 9 | #include <config.h> | 
|---|
| [3164] | 10 | #endif | 
|---|
 | 11 |  | 
|---|
| [3493] | 12 | #include "debug.h" | 
|---|
| [4091] | 13 | #include "globals.h" | 
|---|
| [3423] | 14 |  | 
|---|
| [3165] | 15 | #ifdef HAVE_GTK2 | 
|---|
| [3144] | 16 | #include <gtk/gtkmain.h> | 
|---|
 | 17 | #include <gtk/gtkwindow.h> | 
|---|
 | 18 | #include <gtk/gtkframe.h> | 
|---|
 | 19 | #include <gtk/gtkhbox.h> | 
|---|
 | 20 | #include <gtk/gtkvbox.h> | 
|---|
 | 21 | #include <gtk/gtkbutton.h> | 
|---|
 | 22 | #include <gtk/gtkcheckbutton.h> | 
|---|
 | 23 | #include <gtk/gtkhscale.h> | 
|---|
 | 24 | #include <gtk/gtkoptionmenu.h> | 
|---|
 | 25 | #include <gtk/gtkmenu.h> | 
|---|
 | 26 | #include <gtk/gtkmenuitem.h> | 
|---|
 | 27 | #include <gtk/gtklabel.h> | 
|---|
 | 28 | #include <gtk/gtkimage.h> | 
|---|
 | 29 | #include <gtk/gtkeventbox.h> | 
|---|
| [3423] | 30 | #include <gtk/gtkprogressbar.h> | 
|---|
| [4068] | 31 | #include <gtk/gtkfilesel.h> | 
|---|
| [3165] | 32 | #endif /* HAVE_GTK2 */ | 
|---|
| [3144] | 33 |  | 
|---|
| [4046] | 34 | // enumerator for different GuiOption-Types | 
|---|
| [5024] | 35 | enum GUI_OPTION | 
|---|
 | 36 | { | 
|---|
 | 37 |   GUI_BOX = -2, | 
|---|
 | 38 |   GUI_CONTAINER = -1, | 
|---|
 | 39 |   GUI_NOTHING = 0, | 
|---|
 | 40 |   GUI_BOOL = 1, | 
|---|
 | 41 |   GUI_INT = 2, | 
|---|
 | 42 |   GUI_FLOAT = 3, | 
|---|
 | 43 |   GUI_CHAR = 4, | 
|---|
 | 44 |   GUI_CHAR_ARRAY = 5 | 
|---|
 | 45 | }; | 
|---|
| [4046] | 46 |  | 
|---|
| [4052] | 47 | extern char* executable; | 
|---|
| [4039] | 48 |  | 
|---|
| [3423] | 49 | bool initGUI(int argc, char* argv[]); | 
|---|
| [4746] | 50 | bool mainloopGUI(); | 
|---|
| [3164] | 51 |  | 
|---|
| [3144] | 52 | //! This is the topmost object that can be displayed all others are derived from it. | 
|---|
 | 53 | class Widget | 
|---|
 | 54 | { | 
|---|
 | 55 |  private: | 
|---|
| [3187] | 56 |  | 
|---|
| [3144] | 57 |  public: | 
|---|
| [4746] | 58 |   Widget(); | 
|---|
 | 59 |   virtual ~Widget(); | 
|---|
| [3144] | 60 |  | 
|---|
| [4746] | 61 |   void show(); | 
|---|
 | 62 |   void hide(); | 
|---|
| [3423] | 63 |   void setSize(int width, int height); | 
|---|
| [4046] | 64 |  | 
|---|
| [3624] | 65 |   virtual void setTitle(const char* title);  //!< An abstract Function, that sets the title of Widgets. | 
|---|
| [4746] | 66 |   virtual const char* getTitle() const { return this->title; }; | 
|---|
| [3423] | 67 |  | 
|---|
 | 68 |   Widget* findWidgetByName(char* name, unsigned int depth); | 
|---|
 | 69 |   void walkThrough(void(*function)(Widget*), unsigned int depth); | 
|---|
 | 70 |   void walkThrough(void(*function)(Widget*, void*), void* data, unsigned int depth); | 
|---|
| [4071] | 71 |    static void listOptionsAndGroups(Widget* widget); | 
|---|
 | 72 |    static void listOptions(Widget* widget); | 
|---|
 | 73 |    static void listOptions(Widget* widget, void* data); | 
|---|
 | 74 |    Widget* findOptionByNumber(int* number, unsigned int depth); | 
|---|
 | 75 |    static void listGroups(Widget* widget); | 
|---|
 | 76 |    static void listGroups(Widget* widget, void* data); | 
|---|
| [4132] | 77 |    static void printHelp(Widget* widget); | 
|---|
| [4071] | 78 |    Widget* findGroupByNumber(int* number, unsigned int depth); | 
|---|
 | 79 |    static void setOptions(Widget* widget); | 
|---|
 | 80 |    static void redrawOptions(Widget* widget); | 
|---|
 | 81 |    static void flagCheck(Widget* widget, void* flagName); | 
|---|
| [5015] | 82 |  | 
|---|
| [3165] | 83 | #ifdef HAVE_GTK2 | 
|---|
| [3423] | 84 |   // Connection - Functions | 
|---|
 | 85 |   gulong connectSignal(char* event, gint(*signal)(GtkWidget*, GdkEvent*, void* )); | 
|---|
 | 86 |   gulong connectSignal(char* event, gint(*signal)(GtkWidget*, Widget* )); | 
|---|
 | 87 |   gulong connectSignal(char* event, void* extObj, gint(*signal)(GtkWidget*, GdkEvent*, void* )); | 
|---|
 | 88 |   gulong connectSignal(char* event, void* extObj, gint(*signal)(GtkWidget*, void* )); | 
|---|
 | 89 |   gulong connectSignal(char* event, void* extObj, gint(*signal)(GtkWidget*, GdkEventKey*, void* )); | 
|---|
 | 90 |   void disconnectSignal(gulong signalID); | 
|---|
 | 91 |   // Signals | 
|---|
 | 92 |   static gint doNothingSignal(GtkWidget* widget, GdkEvent* event, void* nothing); | 
|---|
| [4046] | 93 | #else /* HAVE_GTK2 */ | 
|---|
 | 94 |   // Connection - Functions | 
|---|
 | 95 |   unsigned long connectSignal(char* event, int(*signal)(void*, void*, void* )){}; | 
|---|
 | 96 |   unsigned long connectSignal(char* event, int(*signal)(void*, Widget* )){}; | 
|---|
 | 97 |   unsigned long connectSignal(char* event, void* extObj, int(*signal)(void*, void*, void* )){}; | 
|---|
 | 98 |   unsigned long connectSignal(char* event, void* extObj, int(*signal)(void*, void* )){}; | 
|---|
 | 99 |   void disconnectSignal(unsigned long signalID); | 
|---|
 | 100 |   // Signals | 
|---|
 | 101 |   static int doNothingSignal(void* widget, void* event, void* nothing); | 
|---|
| [3165] | 102 | #endif /* HAVE_GTK2 */ | 
|---|
| [3423] | 103 |  | 
|---|
| [4046] | 104 |  | 
|---|
| [3423] | 105 |   Widget* next;                     //!< next always points to the next Widget in the list. Every Widget has a next one, or has NULL as next | 
|---|
| [3165] | 106 | #ifdef HAVE_GTK2 | 
|---|
| [3423] | 107 |   GtkWidget* widget;                //!< widget is the gtk_widget that the specific Object Contains. | 
|---|
| [4046] | 108 | #else /* HAVE_GTK2 */ | 
|---|
 | 109 |   void* widget; | 
|---|
| [3165] | 110 | #endif /* HAVE_GTK2 */ | 
|---|
| [4046] | 111 |  | 
|---|
| [4071] | 112 |   GUI_OPTION optionType;            //!< The Type of the Widget. | 
|---|
| [3423] | 113 |   char* title;                      //!< The name of the Widget. Some do display it, Options need it to save; | 
|---|
| [3144] | 114 | }; | 
|---|
 | 115 |  | 
|---|
 | 116 | //! This is a Packer Object, which has the ability to Pack other Widgets into itself. | 
|---|
 | 117 | class Packer : public Widget | 
|---|
 | 118 | { | 
|---|
 | 119 |  public: | 
|---|
| [4746] | 120 |   Packer(); | 
|---|
 | 121 |   virtual ~Packer(); | 
|---|
| [3623] | 122 |  | 
|---|
| [4046] | 123 |   Widget* down;                      //!< this points to the Widget below this. | 
|---|
 | 124 |   char* groupName;                   //!< For each Packer you can specify a Groupname under which the lowerWidgets will be saved. | 
|---|
| [3144] | 125 |  | 
|---|
| [4046] | 126 |   void setGroupName(const char* name); | 
|---|
| [4836] | 127 |   /** @returns the GroupName if existent NULL otherwise */ | 
|---|
| [4746] | 128 |   inline const char* getGroupName() const {return this->groupName;} | 
|---|
| [3423] | 129 |  | 
|---|
| [4046] | 130 |  | 
|---|
| [3423] | 131 |   virtual void fill(Widget* lowerWidget) = 0; //!< An abstract function, that fills Packers. | 
|---|
| [3144] | 132 | }; | 
|---|
 | 133 |  | 
|---|
 | 134 | //! This is a Container Class, it can contain one sub-Widget: down. | 
|---|
 | 135 | /** | 
|---|
 | 136 |  * A Container is a Widget that can hold a subWidget in addition to a next-Widget. | 
|---|
 | 137 |  * The Container can by itself not be displayed created or used. | 
|---|
 | 138 |  * The derived classes of Container can be displayed | 
|---|
 | 139 | */ | 
|---|
 | 140 | class Container : public Packer | 
|---|
 | 141 | { | 
|---|
 | 142 |  private: | 
|---|
| [3423] | 143 |   int borderwidth;          //!< The width of The Container Boarder. | 
|---|
 | 144 |   int policy;               //!< The Update Policy of a Container. | 
|---|
| [5015] | 145 |  | 
|---|
| [3144] | 146 |  public: | 
|---|
| [4746] | 147 |   Container(); | 
|---|
 | 148 |   virtual ~Container(); | 
|---|
| [4071] | 149 |  | 
|---|
| [4046] | 150 |   void setBorderWidth(int borderwidth); | 
|---|
| [3423] | 151 |   void fill(Widget* lowerWidget); | 
|---|
| [3144] | 152 | }; | 
|---|
 | 153 |  | 
|---|
 | 154 | //! Window is the class that creates new Windows, and handels them | 
|---|
 | 155 | /** | 
|---|
 | 156 |  * A Window is a class derived from Container that contains a window-widget. | 
|---|
 | 157 |  * It has the ability to hold one sub-object | 
|---|
 | 158 |  */ | 
|---|
 | 159 | class Window : public Container | 
|---|
 | 160 | { | 
|---|
 | 161 |  private: | 
|---|
| [3423] | 162 |   bool isOpen;                      //!< A bool Variable that checks if a Window is already open. | 
|---|
| [3144] | 163 |  public: | 
|---|
| [3423] | 164 |   static Window* mainWindow;        //!< Pointer to the First Window that was opened. By default this should be the GUI's main-Window. | 
|---|
| [3148] | 165 |   static void addWindow(Window* windowToAdd); | 
|---|
 | 166 |  | 
|---|
| [4046] | 167 |   Window(const char* windowName = NULL); | 
|---|
| [4746] | 168 |   virtual ~Window(); | 
|---|
| [5015] | 169 |  | 
|---|
| [4046] | 170 |   virtual void setTitle(const char* title); | 
|---|
| [4746] | 171 |   void showall(); | 
|---|
 | 172 |   void open(); | 
|---|
 | 173 |   void close(); | 
|---|
| [3153] | 174 |  | 
|---|
| [3165] | 175 | #ifdef HAVE_GTK2 | 
|---|
| [3423] | 176 |   // Signals | 
|---|
 | 177 |   static gint windowOpen(GtkWidget* widget, GdkEvent* event, void* window); | 
|---|
 | 178 |   static gint windowClose(GtkWidget* widget, GdkEvent* event, void* window); | 
|---|
| [4046] | 179 | #else /* HAVE_GTK2 */ | 
|---|
 | 180 |   int Window::windowOpen(void* widget, void* event, void* window); | 
|---|
 | 181 |   int Window::windowClose(void* widget, void* event, void* window); | 
|---|
| [3165] | 182 | #endif /* HAVE_GTK2 */ | 
|---|
| [3144] | 183 | }; | 
|---|
 | 184 |  | 
|---|
 | 185 | //! Frame is the class that handles frames | 
|---|
 | 186 | /** | 
|---|
 | 187 |  * A Frame is an object, that has a border and if you like a name on it. | 
|---|
 | 188 |  * It can contain a Widget, which means that you can insert anything you like inside of a frame | 
|---|
 | 189 |  */ | 
|---|
 | 190 | class Frame :public Container | 
|---|
 | 191 | { | 
|---|
 | 192 |  public: | 
|---|
| [4068] | 193 |   Frame(const char* frameName = NULL); | 
|---|
| [4746] | 194 |   virtual ~Frame(); | 
|---|
| [3624] | 195 |  | 
|---|
| [4046] | 196 |   virtual void setTitle(const char* title); | 
|---|
| [3144] | 197 | }; | 
|---|
 | 198 |  | 
|---|
 | 199 | //! EventBox is a Container that can Handle all Events happening inside of it. | 
|---|
 | 200 | /** | 
|---|
 | 201 |  * Example: if you have a picture, and you want it to catch mouse-clicks, you have to pack it inside a EventBox | 
|---|
 | 202 |  */ | 
|---|
 | 203 | class EventBox : public Container | 
|---|
 | 204 | { | 
|---|
 | 205 |  public: | 
|---|
| [4046] | 206 |   EventBox(const char* eventBoxName = NULL); | 
|---|
| [4746] | 207 |   virtual ~EventBox(); | 
|---|
| [3144] | 208 | }; | 
|---|
 | 209 |  | 
|---|
 | 210 | //! A Box can contain multiple Widgets | 
|---|
 | 211 | /** | 
|---|
| [3187] | 212 |    A Box can Contain multiple Widgets, that are ordered either horizontally or vertically | 
|---|
 | 213 |    I defined the standartbox to be horizontally. | 
|---|
| [3423] | 214 |    A Box is always filled left->right(horizontally) or up->down(vertically) | 
|---|
| [3187] | 215 | */ | 
|---|
| [3144] | 216 | class Box : public Packer | 
|---|
 | 217 | { | 
|---|
 | 218 |  public: | 
|---|
| [4046] | 219 |   Box(char boxtype = 'h'); | 
|---|
| [4746] | 220 |   virtual ~Box(); | 
|---|
| [5015] | 221 |  | 
|---|
| [4046] | 222 |   virtual void fill(Widget* lowerWidget); | 
|---|
| [3144] | 223 | }; | 
|---|
 | 224 |  | 
|---|
 | 225 | //! An Option is a Widget that contains something that may change its state. | 
|---|
 | 226 | /** | 
|---|
 | 227 |  * Options are the essence of a GUI, they: Configure, Start, Quit, Execute, and make it worth something | 
|---|
 | 228 |  */ | 
|---|
 | 229 | class Option : public Widget | 
|---|
 | 230 | { | 
|---|
| [3423] | 231 |  protected: | 
|---|
| [4046] | 232 |   bool saveable;              //!< Options can be Saved. | 
|---|
| [5015] | 233 |  | 
|---|
| [3144] | 234 |  public: | 
|---|
| [4746] | 235 |   Option(); | 
|---|
 | 236 |   virtual ~Option(); | 
|---|
| [3144] | 237 |  | 
|---|
| [4046] | 238 |   int value;                  //!< every option has a value either true or false(0,1) or something else like 25 for 25% of the volume | 
|---|
 | 239 |   char* flagName;             //!< options have a flag name that will be appendet if you start the Program from the GUI. | 
|---|
 | 240 |   char* flagNameShort;        //!< like flag_name but shorter | 
|---|
 | 241 |   int defaultValue;           //!< A default value is good, for hiding a option if it is not needed.(hidden if value == default_value) | 
|---|
| [3144] | 242 |  | 
|---|
| [4046] | 243 |   char* shortDescription;      //!< A Text that describes this option in short | 
|---|
 | 244 |   char* longDescription;      //!< A Longer Text describing this option in a full way | 
|---|
 | 245 |  | 
|---|
 | 246 |   void saveability(bool isSaveable = true); | 
|---|
| [4746] | 247 |   virtual char* save(); | 
|---|
| [5015] | 248 |   virtual void load(const char* loadString); | 
|---|
| [3625] | 249 |  | 
|---|
| [4746] | 250 |   bool isSaveable(); | 
|---|
| [4058] | 251 |   void setDefaultValue(int defaultValue); | 
|---|
| [4046] | 252 |   void setFlagName(const char* flagname, int defaultvalue); | 
|---|
 | 253 |   void setFlagName(const char* flagname, const char* flagnameshort, int defaultvalue); | 
|---|
 | 254 |   void setDescription(const char* shortDescription, const char* longDescription = NULL); | 
|---|
 | 255 |  | 
|---|
| [4746] | 256 |   virtual void redraw() = 0;       //!< A Option must be able to redraw itself. | 
|---|
 | 257 |   virtual void changeOption() = 0; //!< What to do, if an Option is Changed. eacht option decides for itself. | 
|---|
| [3423] | 258 | #ifdef HAVE_GTK2 | 
|---|
| [5015] | 259 |     // Signals | 
|---|
| [3423] | 260 |   static gint OptionChange(GtkWidget* widget, Widget* option); //!< Signal for Options that change. | 
|---|
 | 261 | #endif /* HAVE_GTK2 */ | 
|---|
| [3144] | 262 | }; | 
|---|
 | 263 |  | 
|---|
 | 264 | //! Buttons can be pressed, and released. | 
|---|
 | 265 | /** | 
|---|
 | 266 |  * Buttons are mainly there for executing some action like Starting the Programm, or Quiting it. | 
|---|
 | 267 |  */ | 
|---|
| [5015] | 268 | class Button : public Option | 
|---|
| [3144] | 269 | { | 
|---|
 | 270 |  public: | 
|---|
| [4089] | 271 |   Button(const char* buttonName = NULL); | 
|---|
| [4746] | 272 |   virtual ~Button(); | 
|---|
| [3144] | 273 |  | 
|---|
| [4046] | 274 |   virtual void setTitle(const char* title); | 
|---|
| [4746] | 275 |   virtual void redraw(); | 
|---|
 | 276 |   virtual void changeOption(); | 
|---|
| [3144] | 277 | }; | 
|---|
 | 278 |  | 
|---|
 | 279 | //! CheckButtons are a key in configuring bool Variables | 
|---|
 | 280 | /** CheckButtons can configure bool Variables like wireframe on/off, enable_sound etc. | 
|---|
 | 281 |  */ | 
|---|
 | 282 | class CheckButton : public Option | 
|---|
 | 283 | { | 
|---|
 | 284 |  public: | 
|---|
| [4046] | 285 |   CheckButton(const char* buttonName = NULL); | 
|---|
| [4746] | 286 |   virtual ~CheckButton(); | 
|---|
| [3423] | 287 |  | 
|---|
| [4746] | 288 |   bool isActive(); | 
|---|
| [4046] | 289 |  | 
|---|
 | 290 |   virtual void setTitle(const char* title); | 
|---|
| [4746] | 291 |   virtual void redraw(); | 
|---|
 | 292 |   virtual void changeOption(); | 
|---|
| [3144] | 293 | }; | 
|---|
 | 294 |  | 
|---|
 | 295 | //! Sliders are Options that can be modified in their value | 
|---|
 | 296 | /** | 
|---|
 | 297 |  * good for volume, brightness, etc. | 
|---|
 | 298 |  */ | 
|---|
 | 299 | class Slider : public Option | 
|---|
 | 300 | { | 
|---|
| [3423] | 301 |  private: | 
|---|
| [4338] | 302 |   float start;                            //!< The beginning of the Slider-range. | 
|---|
 | 303 |   float end;                              //!< The end of the Slider-range. | 
|---|
 | 304 |   float fValue;                           //!< a value for the slider | 
|---|
| [3144] | 305 |  public: | 
|---|
| [4338] | 306 |   Slider(const char* slidername, float start, float end); | 
|---|
| [4746] | 307 |   virtual ~Slider(); | 
|---|
| [3144] | 308 |  | 
|---|
| [4338] | 309 |   void setExactness(int exactness); | 
|---|
 | 310 |   void setValue(float value); | 
|---|
| [4746] | 311 |   virtual void redraw(); | 
|---|
 | 312 |   virtual void changeOption(); | 
|---|
| [4338] | 313 |  | 
|---|
| [4746] | 314 |   virtual char* save(); | 
|---|
| [5015] | 315 |   virtual void load(const char* loadString); | 
|---|
| [3144] | 316 | }; | 
|---|
 | 317 |  | 
|---|
 | 318 | //! A Menu is an Option that has a dropdown menu, where you can chose between different Items | 
|---|
 | 319 | class Menu : public Option | 
|---|
 | 320 | { | 
|---|
 | 321 |  private: | 
|---|
| [3165] | 322 | #ifdef HAVE_GTK2 | 
|---|
| [3423] | 323 |   GtkWidget* menu;                      //!< The menu That will hold the Options. | 
|---|
| [3165] | 324 | #endif /* HAVE_GTK2 */ | 
|---|
| [3625] | 325 |  | 
|---|
| [3624] | 326 |   //! A struct to handle the MenuItems | 
|---|
 | 327 |   struct MenuItem | 
|---|
 | 328 |   { | 
|---|
| [3625] | 329 |     char* name;                         //!< The name of this entry. | 
|---|
 | 330 |     int itemNumber;                     //!< The n'th entry of this menu; | 
|---|
| [3624] | 331 | #ifdef HAVE_GTK2 | 
|---|
 | 332 |     GtkWidget* item;                    //!< One Item From a Menu. | 
|---|
 | 333 | #endif /* HAVE_GTK2 */ | 
|---|
| [4046] | 334 |  | 
|---|
| [3624] | 335 |     MenuItem* next;                     //!< Pointer to the next MenuItem. | 
|---|
 | 336 |   }; | 
|---|
 | 337 |   MenuItem* firstItem;                  //!< Pointer to the first Item. | 
|---|
 | 338 |   MenuItem* currItem;                   //!< Pointer to the current Item. | 
|---|
| [5015] | 339 |  | 
|---|
| [3144] | 340 |  public: | 
|---|
| [3624] | 341 |   Menu(const char* menuName); | 
|---|
| [3423] | 342 |   Menu(char* menuname, ...); | 
|---|
| [4746] | 343 |   virtual ~Menu(); | 
|---|
 | 344 |   void init(); | 
|---|
| [3625] | 345 |  | 
|---|
| [4746] | 346 |   virtual char* save(); | 
|---|
| [5015] | 347 |   virtual void load(const char* loadString); | 
|---|
 | 348 |  | 
|---|
| [3144] | 349 |   void addItem(char* itemName); | 
|---|
| [4746] | 350 |   virtual void redraw(); | 
|---|
 | 351 |   virtual void changeOption(); | 
|---|
| [3144] | 352 | }; | 
|---|
 | 353 |  | 
|---|
| [3423] | 354 | //! A OptionLabel is a simple Label, that holds a char*, and will be updated, if changed. | 
|---|
| [3156] | 355 | class OptionLabel : public Option | 
|---|
 | 356 | { | 
|---|
 | 357 |  public: | 
|---|
| [4046] | 358 |   OptionLabel(const char* label, const char* value); | 
|---|
| [4746] | 359 |   virtual ~OptionLabel(); | 
|---|
| [5015] | 360 |  | 
|---|
| [4046] | 361 |   void setValue(const char* newValue); | 
|---|
| [3625] | 362 |  | 
|---|
| [4746] | 363 |   virtual char* save(); | 
|---|
| [5015] | 364 |   virtual void load(const char* loadString); | 
|---|
| [3625] | 365 |  | 
|---|
| [4746] | 366 |   virtual void redraw(); | 
|---|
 | 367 |   virtual void changeOption(); | 
|---|
| [3423] | 368 |  | 
|---|
| [4836] | 369 |   char* cValue;                          //!< The Value the Label will have. @todo make private | 
|---|
| [3156] | 370 | }; | 
|---|
 | 371 |  | 
|---|
| [4064] | 372 | //! A EntryField is a TextEntry field, for putting some text into. | 
|---|
 | 373 | class EntryField : public Option | 
|---|
 | 374 | { | 
|---|
 | 375 |  public: | 
|---|
 | 376 |   EntryField(const char* name = NULL); | 
|---|
| [4746] | 377 |   virtual ~EntryField(); | 
|---|
| [5015] | 378 |  | 
|---|
| [4064] | 379 |   void setValue(const char* newValue); | 
|---|
| [4746] | 380 |   virtual char* save(); | 
|---|
| [5015] | 381 |   virtual void load(const char* loadString); | 
|---|
 | 382 |  | 
|---|
| [4746] | 383 |   virtual void redraw(); | 
|---|
 | 384 |   virtual void changeOption(); | 
|---|
| [4064] | 385 | }; | 
|---|
 | 386 |  | 
|---|
| [3144] | 387 | //! A label is a Widget, that displays a text | 
|---|
 | 388 | class Label : public Widget | 
|---|
 | 389 | { | 
|---|
 | 390 |  public: | 
|---|
| [4046] | 391 |   Label(const char* text = NULL); | 
|---|
| [4746] | 392 |   virtual ~Label(); | 
|---|
| [5015] | 393 |  | 
|---|
| [4046] | 394 |   virtual void setTitle(const char* text); | 
|---|
| [4746] | 395 |   void ereaseText(); | 
|---|
| [3423] | 396 |   void appendText(char* textToAppend); | 
|---|
 | 397 |   void appendInt(int intToAppend); | 
|---|
| [4746] | 398 |   const char* getText(); | 
|---|
| [3144] | 399 | }; | 
|---|
 | 400 |  | 
|---|
| [3423] | 401 | //! A ProgressBar is a Widget, that can display a Progress | 
|---|
 | 402 | class ProgressBar : public Widget | 
|---|
 | 403 | { | 
|---|
 | 404 |  public: | 
|---|
| [4046] | 405 |   ProgressBar(const char* label = NULL); | 
|---|
| [4746] | 406 |   virtual ~ProgressBar(); | 
|---|
| [3156] | 407 |  | 
|---|
| [3423] | 408 |   void setProgress(double progress); | 
|---|
 | 409 |   void setTotalSize(double totalSize); | 
|---|
| [4746] | 410 |   double getProgress(); | 
|---|
| [3144] | 411 |  | 
|---|
| [3423] | 412 |  private: | 
|---|
 | 413 |   double totalSize;         //!< The total Size of a download Bar | 
|---|
 | 414 |   double progress;          //!< The progress of a Bar. | 
|---|
 | 415 | #ifdef HAVE_GTK2 | 
|---|
 | 416 |   GtkAdjustment* adjustment; | 
|---|
 | 417 | #endif /* HAVE_GTK2 */ | 
|---|
 | 418 | }; | 
|---|
 | 419 |  | 
|---|
| [5015] | 420 | //! Image is the keeper of one Image | 
|---|
 | 421 | /** | 
|---|
| [3423] | 422 |  * Images are mighty cool. | 
|---|
 | 423 |  * Images can help you lighten up the Programming process, and will give everyone a better impression of the Software. | 
|---|
 | 424 |  */ | 
|---|
 | 425 | class Image : public Widget | 
|---|
 | 426 | { | 
|---|
 | 427 |  public: | 
|---|
| [4030] | 428 |   Image(const char* imgaeName); | 
|---|
 | 429 |   Image(char** imageData); | 
|---|
| [4746] | 430 |   virtual ~Image(); | 
|---|
| [4030] | 431 |   void init(const char* name); | 
|---|
| [3423] | 432 | }; | 
|---|
 | 433 |  | 
|---|
| [4068] | 434 | //! A FileDialog is a window with wich one can select a File | 
|---|
 | 435 | class FileDialog : public Widget | 
|---|
 | 436 | { | 
|---|
 | 437 |  private: | 
|---|
 | 438 |   OptionLabel* changeOption; | 
|---|
 | 439 |   Button* openUpButton; | 
|---|
 | 440 |   bool isOpen; | 
|---|
| [4083] | 441 |   bool (*okFunc)(const char* , void*); | 
|---|
 | 442 |   void* okObject; | 
|---|
 | 443 |  | 
|---|
| [4068] | 444 |  public: | 
|---|
 | 445 |   FileDialog(const char* fileDialogName); | 
|---|
| [4746] | 446 |   virtual ~FileDialog(); | 
|---|
| [3423] | 447 |  | 
|---|
| [4068] | 448 |   void setChangeOption(OptionLabel* changeOption); | 
|---|
| [4083] | 449 |   void setOKFunc(void* okObject, bool(*function)(const char* , void*)); | 
|---|
| [4068] | 450 |   void setOpenUpButton(Button* openUpButton); | 
|---|
 | 451 |   void setDefaultFileName(const char* defaultFileName); | 
|---|
 | 452 |   void setMask(const char* mask); | 
|---|
| [4746] | 453 |   void disableFileOpts(); | 
|---|
| [4068] | 454 |  | 
|---|
 | 455 |   void okEvent(); | 
|---|
 | 456 |   void open(); | 
|---|
 | 457 |   void close(); | 
|---|
 | 458 |  | 
|---|
 | 459 | #ifdef HAVE_GTK2 | 
|---|
 | 460 |   static gint dialogOK(GtkWidget* widget, GdkEvent* event, void* dialog); | 
|---|
 | 461 |   static gint dialogOpen(GtkWidget* widget, GdkEvent* event, void* dialog); | 
|---|
 | 462 |   static gint dialogClose(GtkWidget* widget, GdkEvent* event, void* dialog); | 
|---|
 | 463 | #else /* HAVE_GTK2 */ | 
|---|
 | 464 |   static int dialogOK(void* widget, void* event, void* dialog); | 
|---|
 | 465 |   static int dialogOpen(void* widget, void* event, void* dialog); | 
|---|
 | 466 |   static int dialogClose(void* widget, void* event, void* dialog); | 
|---|
 | 467 | #endif /* HAVE_GTK2 */ | 
|---|
 | 468 | }; | 
|---|
 | 469 |  | 
|---|
| [4048] | 470 | #endif /* _GUI_GTK_H */ | 
|---|