Index: /orxonox/branches/updater/src/gui/orxonox_gui_gtk.cc
===================================================================
--- /orxonox/branches/updater/src/gui/orxonox_gui_gtk.cc	(revision 3303)
+++ /orxonox/branches/updater/src/gui/orxonox_gui_gtk.cc	(revision 3304)
@@ -955,4 +955,18 @@
 }
 
+#ifdef HAVE_GTK2
+/** 
+    \brief Signal OptionChange writes the Value from the Slider to its Object-Database.
+    \param widget The widget(Slider) that has a changed Value
+    \param slider the Slider-Object that should receive the change.
+*/
+gint Option::OptionChange (GtkWidget *widget, Widget* option)
+{
+  static_cast<Option*>(option)->changeOption();
+  flags->setTextFromFlags(orxonoxGUI);  //// must be different !!!
+}
+#endif /* HAVE_GTK2 */
+
+
 /* BUTTON */
 
@@ -1021,6 +1035,14 @@
    not implemented yet
 */
-void Button::redraw ()
-{
+void Button::redraw (void)
+{
+}
+
+/**
+   \brief Button can not be changed, optionChange is empty)
+*/
+void Button::changeOption(void)
+{
+  
 }
 
@@ -1098,17 +1120,15 @@
 }
 
-#ifdef HAVE_GTK2
-/** 
-    \brief Signal OptionChange writes the Value from the CheckButton to its Object-Database.
-    \param widget The widget(CheckButton) that has a changed Value
-    \param checkbutton the CheckButton-Object that should receive the change.
-*/
-gint CheckButton::OptionChange (GtkWidget *widget, Widget* checkbutton)
-{
-  static_cast<CheckButton*>(checkbutton)->value = (int)gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON ((CheckButton*)checkbutton->widget));
-  flags->setTextFromFlags(orxonoxGUI);   ////// must be different!!!
-  cout << static_cast<CheckButton*>(checkbutton)->title << " set to: " << static_cast<CheckButton*>(checkbutton)->value << endl;
-}
-#endif /* HAVE_GTK2 */
+/**
+   \brief Changed the Option, call this Function
+*/
+void CheckButton::changeOption()
+{
+#ifdef HAVE_GTK2
+  this->value = (int)gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (this->widget));
+#endif /* HAVE_GTK2 */
+  cout << this->title << " set to: " << this->value << endl;
+}
+
 
 /**
@@ -1210,18 +1230,14 @@
 }
 
-#ifdef HAVE_GTK2
-/** 
-    \brief Signal OptionChange writes the Value from the Slider to its Object-Database.
-    \param widget The widget(Slider) that has a changed Value
-    \param slider the Slider-Object that should receive the change.
-*/
-gint Slider::OptionChange (GtkWidget *widget, Widget* slider)
-{
-  static_cast<Slider*>(slider)->value = (int)gtk_range_get_value (GTK_RANGE ((Slider*)slider->widget));
-  flags->setTextFromFlags(orxonoxGUI);  //// must be different !!!
-  cout << static_cast<Slider*>(slider)->title << " set to: "<< static_cast<Slider*>(slider)->value << endl;
-}
-#endif /* HAVE_GTK2 */
-
+/**
+   \brief Changed the Option, call this Function
+*/
+void Slider::changeOption()
+{
+#ifdef HAVE_GTK2
+  this->value = (int)gtk_range_get_value(GTK_RANGE(this->widget));
+#endif /* HAVE_GTK2 */
+  cout << this->title << " set to: " << this->value << endl;
+}
 
 /* MENU */
@@ -1329,17 +1345,14 @@
 }
 
-#ifdef HAVE_GTK2
-/** 
-    \brief Signal OptionChange writes the Value from the Menu to its Object-Database.
-    \param widget The widget(Menu) that has a changed Value
-    \param menu the Menu-Object that should receive the change.
-*/
-gint Menu::OptionChange (GtkWidget *widget, Widget* menu)
-{
-  static_cast<Menu*>(menu)->value = (int)gtk_option_menu_get_history (GTK_OPTION_MENU (menu->widget));
-  flags->setTextFromFlags(orxonoxGUI); //// must be different !!!
-  cout << static_cast<Menu*>(menu)->title << " changed to : " << static_cast<Menu*>(menu)->value << endl;
-}
-#endif /* HAVE_GTK2 */
+/**
+   \brief Changed the Option, call this Function
+*/
+void Menu::changeOption()
+{
+#ifdef HAVE_GTK2
+  this->value = (int)gtk_option_menu_get_history (GTK_OPTION_MENU (this->widget));
+#endif /* HAVE_GTK2 */
+  cout << this->title << " set to: " << this->value << endl;
+}
 
 /* OPTION LABEL */
@@ -1421,5 +1434,5 @@
   strcpy(this->title, title);
 #ifdef HAVE_GTK2
-  gtk_label_set_text (GTK_LABEL (widget), title);
+  gtk_label_set_text (GTK_LABEL(widget), title);
 #endif /* HAVE_GTK2 */
 }
@@ -1432,4 +1445,16 @@
   
 }
+
+/**
+   \brief Changed the Option, call this Function
+*/
+void OptionLabel::changeOption()
+{
+#ifdef HAVE_GTK2
+  this->cValue = (char*)gtk_label_get_text (GTK_LABEL(this->widget));
+#endif /* HAVE_GTK2 */
+  cout << this->title << " set to: " << this->cValue << endl;
+}
+
 
 /**
Index: /orxonox/branches/updater/src/gui/orxonox_gui_gtk.h
===================================================================
--- /orxonox/branches/updater/src/gui/orxonox_gui_gtk.h	(revision 3303)
+++ /orxonox/branches/updater/src/gui/orxonox_gui_gtk.h	(revision 3304)
@@ -216,5 +216,4 @@
   
  public:
-  //virtual gint OptionChange (GtkWidget* widget, GdkEvent* event, gpointer data);
   void init(void);
   void destroy(void);
@@ -230,5 +229,10 @@
   void setFlagName (char* flagname, int defaultvalue);
   void setFlagName (char* flagname, char* flagnameshort, int defaultvalue);
-  virtual void redraw () = 0; //!< A Option must be able to redraw itself.
+  virtual void redraw (void) = 0; //!< A Option must be able to redraw itself.
+  virtual void changeOption(void) = 0; //!< What to do, if an Option is Changed. eacht option decides for itself.
+#ifdef HAVE_GTK2
+    // Signals  
+  static gint OptionChange (GtkWidget* widget, Widget* option); //!< Signal for Options that change.
+#endif /* HAVE_GTK2 */
 };
 
@@ -247,4 +251,5 @@
   void setTitle(char* title);
   void redraw();
+  void changeOption(void);
 };
 
@@ -263,9 +268,5 @@
   bool isActive();           //!< a Bool value to see, if this CheckButton is active.
   void redraw ();
-
-#ifdef HAVE_GTK2
-  // Signals
-  static gint OptionChange (GtkWidget* widget, Widget* checkbutton);
-#endif /* HAVE_GTK2 */
+  void changeOption(void);
 };
 
@@ -284,10 +285,6 @@
   void setTitle(char* title);
   void setValue(int value);
-  void redraw();
-
-#ifdef HAVE_GTK2
-  // Signals
-  static gint OptionChange (GtkWidget* widget, Widget* slider);
-#endif /* HAVE_GTK2 */
+  void redraw(void);
+  void changeOption(void);
 };
 
@@ -310,8 +307,6 @@
   void setTitle(char* title);
   void addItem(char* itemName);
-#ifdef HAVE_GTK2
-  static gint OptionChange (GtkWidget* widget, Widget* menu);
-#endif /* HAVE_GTK2 */
-  void redraw();
+  void redraw(void);
+  void changeOption(void);
 };
 
@@ -331,4 +326,5 @@
   void setTitle(char* title);
   void redraw();
+  void changeOption();
 
   char* cValue;                          //!< The Value the Label will have. \todo make private
