Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Apr 7, 2005, 3:54:49 PM (19 years ago)
Author:
chris
Message:

orxonox/branches/levelloader: Merged trunk into branch… still not working though…

File:
1 edited

Legend:

Unmodified
Added
Removed
  • orxonox/branches/levelloader/src/lib/gui/gui/orxonox_gui_gtk.cc

    r3499 r3746  
    2525
    2626
     27#include "orxonox_gui_gtk.h"
     28
     29#include <stdarg.h>
    2730#include <iostream>
    28 
    29 #include "orxonox_gui_gtk.h"
    3031
    3132
     
    6869#else /* HAVE_GTK2 */
    6970  char boolAns = 'y';
    70   char ans[10];
     71  char ans[10];
     72  PRINT(0)("================================\n");
     73  PRINT(0)("= ORXONOX CONFIGURATION WIZARD =\n");
     74  PRINT(0)("================================    - version:" PACKAGE_VERSION "\n");
     75
    7176  while(true)
    7277    {
    73       PRINT(0)(" Listing all the Orxonox Options: \n");
     78      PRINT(0)("\n Listing all the Orxonox Options: \n");
    7479      PRINT(0)("  #############################\n");
    7580      Window::mainWindow->walkThrough(Widget::listOptionsAndGroups, 1);
     
    122127      //! \todo move this into the gui-gtk-file
    123128      //! \todo finish it.
     129      //! \todo memory leek at save(); and save is a BAD word, use saveString instead, or something like it.
    124130    }
    125131#endif /* HAVE_GTK2 */
     
    133139
    134140/* WIDGET */
    135 
    136 /**
    137    \brief deletes any given Widget
    138    This is still pretty crappy.
    139 */
    140 Widget::~Widget(void)
    141 {
    142   this->destroy();
    143 }
    144 
    145 /**
    146    \brief Initializes a widget.
    147    Initializes the next Pointer and the other Widget-specific Defaults.
    148 */
    149 void Widget::init(void)
     141/**
     142   \brief constructs a Widget
     143*/
     144Widget::Widget(void)
    150145{
    151146  next = NULL;
     
    155150
    156151/**
    157    \brief Destroys a Widget
    158 */
    159 void Widget::destroy(void)
    160 {
    161   if (this->title)
     152   \brief deletes any given Widget
     153   This is still pretty crappy.
     154*/
     155Widget::~Widget(void)
     156{
     157    if (this->title)
    162158    {
    163159      delete []this->title;
     
    172168    delete this->next;
    173169  this->next = NULL;
    174 
    175170  //!  \todo not hiding widget, deleting.
    176171  //  this->hide();
    177172  //  delete this->widget;
     173}
     174
     175/**
     176   \brief sets a new Title to a Widget
     177   \param title The new Title to set to the Widget
     178*/
     179void Widget::setTitle(const char* title)
     180{
     181  if (this->title)
     182    delete []this->title;
     183  this->title = new char[strlen(title)+1];
     184  strcpy(this->title, title);
    178185}
    179186
     
    273280{
    274281  if (widget->isOption < 0 && static_cast<Packer*>(widget)->groupName)
    275     cout << "[" << static_cast<Packer*>(widget)->groupName << "]\n";
    276   if (widget->isOption >= 1 && widget->isOption <= 3)
    277     cout << "  " << static_cast<Option*>(widget)->title <<" is : " << static_cast<Option*>(widget)->value <<endl;
    278   else if (widget->isOption == 5)
    279     cout << "  " << static_cast<Option*>(widget)->title <<" is : " << static_cast<OptionLabel*>(widget)->cValue <<endl;
     282    PRINT(0)("[%s]\n", static_cast<Packer*>(widget)->groupName);
     283  if (widget->isOption >= 1)
     284    {
     285      Widget::listOptions(widget);
     286    }
    280287}
    281288
     
    286293void Widget::listOptions(Widget* widget)
    287294{
    288   if (widget->isOption >= 1 && widget->isOption <= 3)
    289     cout << "  " << static_cast<Option*>(widget)->title <<" is : " << static_cast<Option*>(widget)->value <<endl;
    290   else if (widget->isOption == 5)
    291     cout << "  " << static_cast<Option*>(widget)->title <<" is : " << static_cast<OptionLabel*>(widget)->cValue <<endl;
     295  if(widget->isOption >= 1)
     296    PRINT(0)("  %s is %s\n", static_cast<Option*>(widget)->title, static_cast<Option*>(widget)->save());
    292297}
    293298
     
    300305{
    301306 
    302   if (widget->isOption >= 1 && widget->isOption <= 3)
     307  if (widget->isOption >= 1)
    303308    {
    304309      int* count =(int*)data;
    305310      *count = *count +1;
    306       cout << *count << ": " << static_cast<Option*>(widget)->title <<" is : " << static_cast<Option*>(widget)->value <<endl;
    307     }
    308   else if (widget->isOption == 5)
    309     {
    310       int* count =(int*)data;
    311       *count = *count +1;
    312       cout << *count << ": " << static_cast<Option*>(widget)->title <<" is : " << static_cast<OptionLabel*>(widget)->cValue <<endl;
     311      PRINT(0)(" %d:%s is %s\n", *count, static_cast<Option*>(widget)->title, static_cast<Option*>(widget)->save());
    313312    }
    314313}
     
    513512
    514513/* PACKERS */
    515 
    516 /**
    517    \brief Initializes a Packer.
    518 
    519    Sets the down-pinter to NULL and other PackerSpecific-values to their defaults.
    520 */
    521 void Packer::init(void)
     514/**
     515   \brief Constructs a Packer
     516*/
     517Packer::Packer(void)
    522518{
    523519  this->down = NULL;
    524520  this->groupName = NULL;
    525 
    526 
    527   static_cast<Widget*>(this)->init();
    528   return;
    529521}
    530522
     
    532524   \brief Destroys a Packer.
    533525*/
    534 void Packer::destroy(void)
     526Packer::~Packer(void)
    535527{
    536528  PRINTF(4)("deleting the Packer part.\n");
     
    543535    delete this->down;
    544536  this->down = NULL;
    545 
    546   static_cast<Widget*>(this)->destroy();
    547537}
    548538
     
    575565   sets the Container-Specific defaults.
    576566*/
    577 void Container::init(void)
     567Container::Container(void)
    578568{
    579569  this->isOption = -1;
    580 
    581   static_cast<Packer*>(this)->init();
    582 
    583   return;
    584570}
    585571
     
    587573   \brief Destroys a Container.
    588574*/
    589 void Container::destroy(void)
     575Container::~Container(void)
    590576{
    591577  PRINTF(4)("deleting the Container part.\n");
    592 
    593   static_cast<Packer*>(this)->destroy();
    594578}
    595579
     
    665649Window::~Window(void)
    666650{
    667   this->destroy();
     651  if (this->title)
     652    PRINTF(3)("deleting the Window: %s\n", this->title);
     653  else
     654    PRINTF(3)("deleting the Window.\n");
     655  //  this->hide();
    668656}
    669657
     
    677665 
    678666  isOpen = false;
    679 
    680   static_cast<Container*>(this)->init();
    681667
    682668#ifdef HAVE_GTK2
     
    691677
    692678/**
    693    \brief Destroys a Window.
    694 */
    695 void Window::destroy(void)
    696 {
    697   if (this->title)
    698     PRINTF(3)("deleting the Window: %s\n", this->title);
    699   else
    700     PRINTF(3)("deleting the Window.\n");
    701   //  this->hide();
    702   static_cast<Container*>(this)->destroy();
    703  
    704 }
    705 
    706 /**
    707679   \brief Shows all Widgets that are included within this->widget.
    708680*/
     
    730702   \param title title the Window should get.
    731703*/
    732 void Window::setTitle(char* title)
     704void Window::setTitle(const char* title)
    733705{
    734706  if (this->title)
     
    823795Frame::~Frame(void)
    824796{
    825   this->destroy();
    826 }
    827 
    828 /**
    829     \brief Initializes a new Frame with default settings
    830 */
    831 void Frame::init(void)
    832 {
    833   static_cast<Container*>(this)->init();
    834 
    835 #ifdef HAVE_GTK2
    836   this->widget = gtk_frame_new("");
    837   gtk_container_set_border_width(GTK_CONTAINER(this->widget), 3);
    838 #endif /* HAVE_GTK2 */
    839 }
    840 
    841 /**
    842    \brief Destroys a Frame.
    843 */
    844 void Frame::destroy(void)
    845 {
    846797  if (this->title)
    847798    PRINTF(3)("deleting the Frame: %s\n", this->title);
    848799  else
    849800    PRINTF(3)("deleting the Frame.\n");
    850 
    851    static_cast<Container*>(this)->destroy();
     801}
     802
     803/**
     804    \brief Initializes a new Frame with default settings
     805*/
     806void Frame::init(void)
     807{
     808#ifdef HAVE_GTK2
     809  this->widget = gtk_frame_new("");
     810  gtk_container_set_border_width(GTK_CONTAINER(this->widget), 3);
     811#endif /* HAVE_GTK2 */
    852812}
    853813
     
    856816   \param title The title the Frame should get.
    857817*/
    858 void Frame::setTitle(char* title)
     818void Frame::setTitle(const char* title)
    859819{
    860820  if (this->title)
     
    892852EventBox::~EventBox(void)
    893853{
    894   this->destroy();
    895 
    896 }
    897 
    898 /**
    899    \brief Initializes a new EventBox
    900 */
    901 void EventBox::init(void)
    902 {
    903   this->isOption = -1;
    904 
    905   static_cast<Container*>(this)->init();
    906 
    907 #ifdef HAVE_GTK2
    908   this->widget = gtk_event_box_new();
    909   gtk_container_set_border_width(GTK_CONTAINER(this->widget), 3);
    910 #endif /* HAVE_GTK2 */
    911 }
    912 
    913 /**
    914    \brief Destroys an EventBox.
    915 */
    916 void EventBox::destroy(void)
    917 {
    918854  if (this->title)
    919855    PRINTF(3)("deleting the EventBox: %s\n", this->title);
    920856  else
    921857    PRINTF(3)("deleting the EventBox.\n");
    922 
    923   static_cast<Container*>(this)->destroy();
    924 }
    925 
    926 /**
    927    \brief Sets the Title of the EventBox(not implemented)
    928    \param title Name the EventBox should get(only datastructure-internal).
    929 */
    930 void EventBox::setTitle(char* title)
    931 {
    932   if (this->title)
    933     delete []this->title;
    934   this->title = new char[strlen(title)+1];
    935   strcpy(this->title, title);
     858}
     859
     860/**
     861   \brief Initializes a new EventBox
     862*/
     863void EventBox::init(void)
     864{
     865  this->isOption = -1;
     866
     867#ifdef HAVE_GTK2
     868  this->widget = gtk_event_box_new();
     869  gtk_container_set_border_width(GTK_CONTAINER(this->widget), 3);
     870#endif /* HAVE_GTK2 */
    936871}
    937872
     
    960895Box::~Box(void)
    961896{
    962   this->destroy();
    963 }
    964 
    965 /**
    966    \brief Initializes a new Box with type boxtype
    967    \param boxtype see Box(char boxtype)
    968 */
    969 void Box::init(char boxtype)
    970 {
    971   this->isOption = -2;
    972 
    973   static_cast<Packer*>(this)->init();
    974 #ifdef HAVE_GTK2
    975   if (boxtype == 'v')
    976     {
    977       this->widget = gtk_vbox_new(FALSE, 0);
    978     }
    979   else
    980     {
    981       this->widget = gtk_hbox_new(FALSE, 0);
    982     }
    983 #endif /* HAVE_GTK2 */
    984 }
    985 
    986 /**
    987    \brief Destroys a Box.
    988 */
    989 void Box::destroy(void)
    990 {
    991897  if (this->title)
    992898    PRINTF(3)("deleting the Box: %s\n", this->title);
     
    994900    PRINTF(3)("deleting the Box.\n");
    995901
    996   static_cast<Packer*>(this)->destroy();
     902}
     903
     904/**
     905   \brief Initializes a new Box with type boxtype
     906   \param boxtype see Box(char boxtype)
     907*/
     908void Box::init(char boxtype)
     909{
     910  this->isOption = -2;
     911
     912#ifdef HAVE_GTK2
     913  if (boxtype == 'v')
     914    {
     915      this->widget = gtk_vbox_new(FALSE, 0);
     916    }
     917  else
     918    {
     919      this->widget = gtk_hbox_new(FALSE, 0);
     920    }
     921#endif /* HAVE_GTK2 */
    997922}
    998923
     
    1022947}
    1023948
    1024 /**
    1025    \brief Sets the Title of a Box.
    1026    \param title the new Title to set.
    1027 */
    1028 void Box::setTitle(char* title)
    1029 {
    1030   if (this->title)
    1031     delete []this->title;
    1032   this->title = new char[strlen(title)+1];
    1033   strcpy(this->title, title);
    1034 }
    1035 
    1036949/* OPTION */
    1037950
     
    1040953   sets all Option-Specific-Values to their defaults.
    1041954*/
    1042 void Option::init(void)
     955Option::Option(void)
    1043956{
    1044957  this->value = 0;
     
    1047960  this->saveable = false;
    1048961  this->defaultValue = 0;
    1049 
    1050   static_cast<Widget*>(this)->init();
    1051 
    1052   return;
    1053962}
    1054963
     
    1056965   \brief Destroys an Option.
    1057966*/
    1058 void Option::destroy(void)
     967Option::~Option(void)
    1059968{
    1060969  PRINTF(4)("deleting the Option Part.\n");
     
    1063972  if (this->flagNameShort)
    1064973    delete []this->flagNameShort;
    1065 
    1066   static_cast<Widget*>(this)->destroy();
    1067974}
    1068975
     
    11231030
    11241031/**
     1032   \brief saves an Option
     1033   \returns the String that should be saved.
     1034
     1035   this is a default Option save
     1036*/
     1037char* Option::save(void)
     1038{
     1039  char* value = new char [10];
     1040  sprintf (value, "%d", this->value);
     1041  return value;
     1042}
     1043
     1044/**
     1045   \brief loads an Option from of its loadString
     1046   \param loadString the string from which to load the data from
     1047*/
     1048void Option::load(char* loadString)
     1049{
     1050  this->value = atoi(loadString);
     1051  PRINT(3)("Loading %s: %s %d\n", this->title, loadString, value);
     1052  this->redraw();
     1053}
     1054
     1055/**
    11251056   \returns The saveable-state.
    11261057*/
     
    11611092Button::~Button(void)
    11621093{
    1163   this->destroy();
    1164 }
    1165 
    1166 /**
    1167    \brief Initializes a new Button
    1168 */
    1169 void Button::init(void)
    1170 {
    1171   isOption = 0;
    1172 
    1173   static_cast<Option*>(this)->init();
    1174 
    1175 #ifdef HAVE_GTK2
    1176   widget = gtk_button_new_with_label("");
    1177 #endif /* HAVE_GTK2 */
    1178 }
    1179 
    1180 /**
    1181    \brief Destroys a Button.
    1182 */
    1183 void Button::destroy(void)
    1184 {
    11851094  if (this->title)
    11861095    PRINTF(3)("deleting the Label: %s\n", this->title);
     
    11881097    PRINTF(3)("deleting the Label.\n");
    11891098
    1190   static_cast<Option*>(this)->destroy();
     1099}
     1100
     1101/**
     1102   \brief Initializes a new Button
     1103*/
     1104void Button::init(void)
     1105{
     1106  isOption = 0;
     1107
     1108#ifdef HAVE_GTK2
     1109  widget = gtk_button_new_with_label("");
     1110#endif /* HAVE_GTK2 */
    11911111}
    11921112
     
    11951115   \param title The name the Button should get
    11961116*/
    1197 void Button::setTitle(char *title)
     1117void Button::setTitle(const char *title)
    11981118{
    11991119  if (this->title)
     
    12451165CheckButton::~CheckButton(void)
    12461166{
    1247   this->destroy();
    1248 }
    1249 
    1250 /**
    1251    \brief Initialize a new CheckButton with default settings
    1252 */
    1253 void CheckButton::init(void)
    1254 {
    1255   this->isOption = 1;
    1256 
    1257   static_cast<Option*>(this)->init();
    1258 
    1259 #ifdef HAVE_GTK2
    1260   this->widget = gtk_check_button_new_with_label("");
    1261 #endif /* HAVE_GTK2 */
    1262 }
    1263 
    1264 /**
    1265    \brief Destroys a CheckButton.
    1266 */
    1267 void CheckButton::destroy(void)
    1268 {
    12691167  if (this->title)
    12701168    PRINTF(3)("deleting the CheckButton: %s\n", this->title);
    12711169  else
    12721170    PRINTF(3)("deleting the CheckButton.\n");
    1273 
    1274   static_cast<Option*>(this)->destroy();
     1171}
     1172
     1173/**
     1174   \brief Initialize a new CheckButton with default settings
     1175*/
     1176void CheckButton::init(void)
     1177{
     1178  this->isOption = 1;
     1179
     1180#ifdef HAVE_GTK2
     1181  this->widget = gtk_check_button_new_with_label("");
     1182#endif /* HAVE_GTK2 */
    12751183}
    12761184
     
    12791187   \param title The new Name the CheckButton should display.
    12801188*/
    1281 void CheckButton::setTitle(char* title)
     1189void CheckButton::setTitle(const char* title)
    12821190{
    12831191  if (this->title)
     
    13061214#else /* HAVE_GTK2 */
    13071215  char tmpChar[20];
    1308   cout << "\nPlease give me a new value for " << this->title << " [0,1](defualt:" << this->defaultValue << "): ";
     1216  cout << "\nPlease give me a new value for " << this->title << " [0,1](default:" << this->defaultValue << "): ";
    13091217  cin >> tmpChar;
    13101218
     
    13501258Slider::~Slider(void)
    13511259{
    1352   this->destroy();
    1353 }
    1354 
    1355 /**
    1356    \brief Initializes a Slider with start and end Values
    1357    params: see Slider::Slider(char* slidername, int start, int end)
    1358 */
    1359 void Slider::init(int start, int end)
    1360 {
    1361   this->isOption = 2;
    1362 
    1363   static_cast<Option*>(this)->init();
    1364 
    1365   this->start = start;
    1366   this->end = end;
    1367 #ifdef HAVE_GTK2
    1368  widget = gtk_hscale_new_with_range(this->start, this->end, 5);
    1369 #endif /* HAVE_GTK2 */
    1370 }
    1371 
    1372 /**
    1373    \brief Destroys a Slider.
    1374 */
    1375 void Slider::destroy(void)
    1376 {
    13771260  if (this->title)
    13781261    PRINTF(3)("deleting the Slider: %s\n", this->title);
    13791262  else
    13801263    PRINTF(3)("deleting the Slider.\n");
    1381 
    1382   static_cast<Option*>(this)->destroy();
    1383 
    1384 }
    1385 
    1386 /**
    1387    \brief Sets a new Title to the Slider
    1388    \param title The new Name of the slider
    1389 */
    1390 void Slider::setTitle(char* title)
    1391 {
    1392   if (this->title)
    1393     delete []this->title;
    1394   this->title = new char[strlen(title)+1];
    1395   strcpy(this->title, title);
     1264}
     1265
     1266/**
     1267   \brief Initializes a Slider with start and end Values
     1268   params: see Slider::Slider(char* slidername, int start, int end)
     1269*/
     1270void Slider::init(int start, int end)
     1271{
     1272  this->isOption = 2;
     1273
     1274  this->start = start;
     1275  this->end = end;
     1276#ifdef HAVE_GTK2
     1277 widget = gtk_hscale_new_with_range(this->start, this->end, 5);
     1278#endif /* HAVE_GTK2 */
    13961279}
    13971280
     
    14251308#else /* HAVE_GTK2 */
    14261309  char tmpChar[20];
    1427   cout << "\nPlease give me a new value for " << this->title << " [" <<this->start << "-" << this->end << "](defualt:" << this->defaultValue << "): ";
     1310  cout << "\nPlease give me a new value for " << this->title << " [" <<this->start << "-" << this->end << "](default:" << this->defaultValue << "): ";
    14281311  cin >> tmpChar;
    14291312
     
    14371320
    14381321/* MENU */
     1322
     1323/**
     1324   \brief constructs a new Menu, without adding any items to it.
     1325   \param menuName the Name the Menu gets.
     1326*/
     1327Menu::Menu(const char* menuName)
     1328{
     1329  this->init();
     1330  this->setTitle(menuName);
     1331}
    14391332
    14401333/**
     
    14481341  this->init();
    14491342  this->setTitle(menuname);
    1450    
     1343  va_list itemlist;                     //!< The list to readin multiple Options.
     1344
    14511345  char *itemName;
    14521346
    1453 #ifdef HAVE_GTK2             /////////////////////// REINPLEMENT
    14541347  va_start(itemlist, menuname);
    14551348  while(strcmp(itemName = va_arg(itemlist, char*), "lastItem"))
     
    14581351    }
    14591352  va_end(itemlist);
    1460 #endif /* HAVE_GTK2 */
    1461 
    1462 #ifdef HAVE_GTK2
    1463   gtk_option_menu_set_menu(GTK_OPTION_MENU(this->widget), menu);
    1464   this->connectSignal("changed", this->OptionChange);
    1465 #endif /* HAVE_GTK2 */
    14661353}
    14671354
     
    14711358Menu::~Menu(void)
    14721359{
    1473   this->destroy();
    1474 }
    1475 
    1476 /**
    1477    \brief Initializes a new Menu with no items
    1478 */
    1479 void Menu::init(void)
    1480 {
    1481   this->isOption = 2;
    1482 
    1483   static_cast<Option*>(this)->init();
    1484 
    1485 #ifdef HAVE_GTK2
    1486   this->widget = gtk_option_menu_new();
    1487   this->menu = gtk_menu_new();
    1488 #endif /* HAVE_GTK2 */
    1489 
    1490 }
    1491 
    1492 /**
    1493    \brief Destroys a Menu.
    1494 */
    1495 void Menu::destroy(void)
    1496 {
    14971360  if (this->title)
    14981361    PRINTF(3)("deleting the Menu: %s\n", this->title);
     
    15001363    PRINTF(3)("deleting the Menu.\n");
    15011364  //! \todo destroy menu
    1502  
    1503   static_cast<Option*>(this)->destroy();
    1504 }
    1505 
    1506 
    1507 /**
    1508  * Sets the Database-Name of this Menu
    1509  \param title Database-Name to be set.
    1510 */
    1511 void Menu::setTitle(char* title)
    1512 {
    1513   if (this->title)
    1514     delete []this->title;
    1515   this->title = new char[strlen(title)+1];
    1516   strcpy(this->title, title);
     1365  this->currItem = this->firstItem;
     1366  while(this->currItem)
     1367    {
     1368      delete []this->currItem->name;
     1369      /*
     1370        #ifdef HAVE_GTK2
     1371        free(this->currItem->item);
     1372        #endif /* HAVE_GTK2 */
     1373      MenuItem* tmpItem = this->currItem;
     1374      this->currItem = this->currItem->next;
     1375      delete tmpItem;
     1376    }
     1377}
     1378
     1379/**
     1380   \brief Initializes a new Menu with no items
     1381*/
     1382void Menu::init(void)
     1383{
     1384  this->isOption = 2;
     1385  this->firstItem = NULL;
     1386
     1387#ifdef HAVE_GTK2
     1388  this->widget = gtk_option_menu_new();
     1389  this->menu = gtk_menu_new();
     1390  gtk_option_menu_set_menu(GTK_OPTION_MENU(this->widget), menu);
     1391  this->connectSignal("changed", this->OptionChange);
     1392#endif /* HAVE_GTK2 */
     1393}
     1394
     1395/**
     1396   \brief saves the Label of the Menu
     1397   \returns the name of the selected Menu-Item
     1398*/
     1399char* Menu::save(void)
     1400{
     1401  MenuItem* tmpItem = this->firstItem;
     1402  for (int i = 0; i<this->value; i++)
     1403    tmpItem = tmpItem->next;
     1404     
     1405  return tmpItem->name;
     1406}
     1407
     1408/**
     1409   \brief loads a Menu from of its loadString
     1410   \param loadString the string from which to load the data from
     1411*/
     1412void Menu::load(char* loadString)
     1413{
     1414  MenuItem* tmpItem = firstItem;
     1415  bool foundItem = false;
     1416  while (tmpItem)
     1417    {
     1418      if (!strcmp(loadString, tmpItem->name))
     1419        {foundItem = true; break;}
     1420      tmpItem = tmpItem->next;
     1421    }
     1422  if (foundItem)
     1423    this->value = tmpItem->itemNumber;
     1424  else
     1425    {
     1426      this->value = 0;
     1427      PRINTF(2)("Sorry, but %s has not been found in the Itemlist of %s\n", loadString, this->title);
     1428    }
     1429  PRINTF(3)( "Loading %s: setting to %d\n", this->title, this->value);
     1430  this->redraw();
    15171431}
    15181432
     
    15201434   \brief appends a new Item to the Menu-List.
    15211435   \param itemName the itemName to be appendet.
    1522 
    1523    \todo make the item-list readable without GTK
    15241436*/
    15251437void Menu::addItem(char* itemName)
    15261438{
    1527 #ifdef HAVE_GTK2
    1528   this->item = gtk_menu_item_new_with_label(itemName);
    1529   gtk_menu_shell_append(GTK_MENU_SHELL(this->menu), this->item);
    1530 #endif /* HAVE_GTK2 */
     1439  if (!this->firstItem)
     1440    {
     1441      this->firstItem = this->currItem = new MenuItem;
     1442      this->currItem->itemNumber = 0;
     1443    }
     1444  else
     1445    {
     1446      int tmpI = this->currItem->itemNumber;
     1447      this->currItem = this->currItem->next = new MenuItem;
     1448      this->currItem->itemNumber = tmpI+1;
     1449    }
     1450
     1451  this->currItem->name = new char[strlen(itemName)+1];
     1452  strcpy(this->currItem->name, itemName);
     1453
     1454#ifdef HAVE_GTK2
     1455  this->currItem->item = gtk_menu_item_new_with_label(itemName);
     1456  gtk_menu_shell_append(GTK_MENU_SHELL(this->menu), this->currItem->item);
     1457#endif /* HAVE_GTK2 */
     1458  this->currItem->next = NULL;
    15311459}
    15321460
     
    15511479#else /* HAVE_GTK2 */
    15521480  char tmpChar[20];
    1553   cout << "\nPlease give me a new value for " << this->title << "(defualt:" << this->defaultValue << "): ";
     1481  cout << "\nPlease give me a new value for " << this->title << "(default:" << this->defaultValue << "): ";
    15541482  cin >> tmpChar;
    15551483  this->value = atoi(tmpChar);
     
    15781506OptionLabel::~OptionLabel(void)
    15791507{
    1580   this->destroy();
    1581 }
    1582 
    1583 /**
    1584    \brief Initializes an OptionLabel
    1585 */
    1586 void OptionLabel::init(void)
    1587 {
    1588   this->isOption = 5;
    1589   static_cast<Option*>(this)->init();
    1590 
    1591   cValue = NULL;
    1592 
    1593 #ifdef HAVE_GTK2
    1594   this->widget = gtk_label_new("");
    1595 #endif /* HAVE_GTK2 */
    1596 }
    1597 
    1598 /**
    1599    \brief Destroys a OptionLabel.
    1600 */
    1601 void OptionLabel::destroy(void)
    1602 {
    16031508  if (this->title)
    16041509    PRINTF(3)("deleting the OptionLabel: %s\n", this->title);
     
    16071512  if (this->cValue)
    16081513    delete []this->cValue;
    1609 
    1610   static_cast<Option*>(this)->destroy();
    1611 }
    1612 
     1514}
     1515
     1516/**
     1517   \brief Initializes an OptionLabel
     1518*/
     1519void OptionLabel::init(void)
     1520{
     1521  this->isOption = 5;
     1522  cValue = NULL;
     1523
     1524#ifdef HAVE_GTK2
     1525  this->widget = gtk_label_new("");
     1526#endif /* HAVE_GTK2 */
     1527}
    16131528
    16141529/**
     
    16281543
    16291544/**
    1630    \brief Sets a ned Title to the OptionLabel.
    1631    \param title The now title of the OptionLabel.
    1632 */
    1633 void OptionLabel::setTitle(char* title)
    1634 {
    1635   if (this->title)
    1636     delete []this->title;
    1637   this->title = new char [strlen(title)+1];
    1638   strcpy(this->title, title);
    1639   this->redraw();
    1640 }
    1641 
    1642 /**
    16431545   \brief Redraws an OptionLabel(not implemented yet, but it works).
    16441546*/
     
    16661568
    16671569/**
     1570   \brief creates the Optionlabel save-string
     1571   \returns the String to save.
     1572*/
     1573char* OptionLabel::save(void)
     1574{
     1575  return cValue;
     1576}
     1577
     1578/**
     1579   \brief loads an Option from of its loadString
     1580   \param loadString the string from which to load the data from
     1581*/
     1582void OptionLabel::load(char* loadString)
     1583{
     1584  PRINTF(3)( "Loading %s: setting to %s\n", this->title, loadString);
     1585  this->setValue(loadString);
     1586}
     1587
     1588/**
    16681589   \brief Creates a new default Label with no Text.
    16691590   You migth consider adding Label::setTitle with this.
     
    16891610Label::~Label(void)
    16901611{
    1691   this->destroy();
    1692 }
    1693 
    1694 /**
    1695    \brief initializes a new Label
    1696 */
    1697 void Label::init(void)
    1698 {
    1699   this->isOption = 0;
    1700 
    1701   static_cast<Widget*>(this)->init();
    1702 
    1703 #ifdef HAVE_GTK2
    1704   this->widget = gtk_label_new("");
    1705   gtk_label_set_line_wrap(GTK_LABEL(this->widget), TRUE);
    1706 #endif /* HAVE_GTK2 */
    1707 }
    1708 
    1709 /**
    1710    \brief Destroys a Label.
    1711 */
    1712 void Label::destroy(void)
    1713 {
    17141612  if (this->title)
    17151613    PRINTF(3)("deleting the Label: %s\n", this->title);
    17161614  else
    17171615    PRINTF(3)("deleting the Label.\n");
    1718 
    1719   static_cast<Widget*>(this)->destroy();
     1616}
     1617
     1618/**
     1619   \brief initializes a new Label
     1620*/
     1621void Label::init(void)
     1622{
     1623  this->isOption = 0;
     1624
     1625#ifdef HAVE_GTK2
     1626  this->widget = gtk_label_new("");
     1627  gtk_label_set_line_wrap(GTK_LABEL(this->widget), TRUE);
     1628#endif /* HAVE_GTK2 */
    17201629}
    17211630
     
    18131722ProgressBar::~ProgressBar(void)
    18141723{
    1815   this->destroy();
     1724  if (this->title)
     1725    PRINTF(3)("deleting the ProgressBar: %s\n", this->title);
     1726  else
     1727    PRINTF(3)("deleting the ProgressBar.\n");
    18161728}
    18171729
     
    18251737  this->totalSize = 0.0;
    18261738
    1827   static_cast<Widget*>(this)->init();
    18281739#ifdef HAVE_GTK2
    18291740  this->adjustment =(GtkAdjustment*)gtk_adjustment_new(0, 0, 100, 0, 0, 0);
    18301741  this->widget = gtk_progress_bar_new_with_adjustment(this->adjustment);
    18311742#endif /* HAVE_GTK2 */
    1832 }
    1833 
    1834 /**
    1835    \brief Destroys a ProgressBar.
    1836 */
    1837 void ProgressBar::destroy(void)
    1838 {
    1839   if (this->title)
    1840     PRINTF(3)("deleting the ProgressBar: %s\n", this->title);
    1841   else
    1842     PRINTF(3)("deleting the ProgressBar.\n");
    1843 
    1844   static_cast<Widget*>(this)->destroy();
    1845 }
    1846 
    1847 /**
    1848    \brief Sets a ned Title to the ProgressBar.
    1849    \param title The now title of the ProgressBar.
    1850 */
    1851 void ProgressBar::setTitle(char* title)
    1852 {
    1853   if (this->title)
    1854     delete []this->title;
    1855   this->title = new char [strlen(title)+1];
    1856   strcpy(this->title, title);
    18571743}
    18581744
     
    19131799Image::~Image(void)
    19141800{
    1915   this->destroy();
    1916 }
    1917 
    1918 /**
    1919     \brief Initializes a new Image
    1920 */
    1921 void Image::init(void)
    1922 {
    1923   isOption = 0;
    1924 
    1925   static_cast<Widget*>(this)->init();
    1926 }
    1927 
    1928 /**
    1929    \brief Destroys a Image.
    1930 */
    1931 void Image::destroy(void)
    1932 {
    19331801  if (this->title)
    19341802    PRINTF(3)("deleting the Image: %s\n", this->title);
    19351803  else
    19361804    PRINTF(3)("deleting the Image.\n");
    1937 
    1938   static_cast<Widget*>(this)->destroy();
    1939 }
    1940 
    1941 /**
    1942    \brief Sets a ned Title to the Image.
    1943    \param title The now title of the OptionLabel.
    1944 */
    1945 void Image::setTitle(char* title)
    1946 {
    1947   if (this->title)
    1948     delete []this->title;
    1949   this->title = new char [strlen(title)+1];
    1950   strcpy(this->title, title);
    1951 }
     1805}
     1806
     1807/**
     1808    \brief Initializes a new Image
     1809*/
     1810void Image::init(void)
     1811{
     1812  isOption = 0;
     1813}
Note: See TracChangeset for help on using the changeset viewer.