Index: orxonox/branches/updater/src/gui/orxonox_gui.cc
===================================================================
--- orxonox/branches/updater/src/gui/orxonox_gui.cc	(revision 3299)
+++ orxonox/branches/updater/src/gui/orxonox_gui.cc	(revision 3300)
@@ -63,8 +63,4 @@
 
   orxonoxGUI = new Window( "Grafical OrxOnoX loader, "PACKAGE_VERSION);
-#ifdef HAVE_GTK2
-  orxonoxGUI->connectSignal ("destroy", orxonoxGUI->orxonox_gui_quit);
-  orxonoxGUI->connectSignal ("delete_event", orxonoxGUI->orxonox_gui_quit);
-#endif /* HAVE_GTK2 */
   
   Box* windowBox = new Box ('h');
@@ -108,4 +104,5 @@
     orxonoxGUI->walkThrough(Widget::flagCheck, argv[optCount], 0);
 
+
   orxonoxGUI->showall ();
 
Index: orxonox/branches/updater/src/gui/orxonox_gui.h
===================================================================
--- orxonox/branches/updater/src/gui/orxonox_gui.h	(revision 3299)
+++ orxonox/branches/updater/src/gui/orxonox_gui.h	(revision 3300)
@@ -28,7 +28,5 @@
   ~OrxonoxGui ();
 
-  void copyOptionsToGameStruct();
 };
 
-
 #endif /* _ORXONOX_GUI_H */
Index: orxonox/branches/updater/src/gui/orxonox_gui_exec.cc
===================================================================
--- orxonox/branches/updater/src/gui/orxonox_gui_exec.cc	(revision 3299)
+++ orxonox/branches/updater/src/gui/orxonox_gui_exec.cc	(revision 3300)
@@ -27,4 +27,6 @@
 #include <iostream>
 #include <string>
+
+HashTable* orxonoxFlagHash;
 
 /** 
@@ -42,5 +44,5 @@
   start = new Button ("Start");
 #ifdef HAVE_GTK2
-  start->connectSignal ("clicked", startOrxonox);
+  start->connectSignal ("clicked", this, startOrxonox);
 #endif /* HAVE_GTK2 */
   execBox->fill (start);
@@ -59,5 +61,7 @@
   quit = new Button ("Quit");
 #ifdef HAVE_GTK2
-  quit->connectSignal ("clicked", orxonoxGUI->orxonox_gui_quit);
+  quit->connectSignal ("clicked", this, OrxonoxGuiExec::quitOrxonox);
+  orxonoxGUI->connectSignal ("destroy", this, OrxonoxGuiExec::quitOrxonox);
+  //! orxonoxGUI->connectSignal ("delete_event", this, OrxonoxGuiExec::quitOrxonox); \todo fix this to work.
 #endif /* HAVE_GTK2 */
   execBox->fill (quit);
@@ -294,22 +298,60 @@
 /**
    \brief Starts ORXONOX. (not really implemented yet, but the function is there.\n
-   This is a Signal and can be executed through Widget::signal_connect
    \param widget the widget that executed the start command
    \param data additional data
-*/
-int OrxonoxGuiExec::startOrxonox (GtkWidget* widget, Widget* data)
-{
+
+   This is a Signal and can be executed through Widget::signal_connect
+*/
+int OrxonoxGuiExec::startOrxonox (GtkWidget* widget, void* data)
+{
+  OrxonoxGuiExec* exec = (OrxonoxGuiExec*)data;
+  if (exec->shouldsave())
+    exec->writeToFile (Window::mainWindow);
   cout << "Starting Orxonox" <<endl;
-}
-#else /* HAVE_GTK2 */
+  gtk_main_quit();
+  system("cd ..;./orxonox"); //!< \todo fix this. should execute orxonox for real (coded not over the shell)
+}
+
 /**
    \brief Starts ORXONOX. (not really implemented yet, but the function is there.\n
-   This is a Signal and can be executed through Widget::signal_connect
    \param widget the widget that executed the start command
    \param data additional data
-*/
-int OrxonoxGuiExec::startOrxonox (void* widget, Widget* data)
-{
-  cout << "Starting Orxonox" <<endl;
+
+   This is a Signal and can be executed through Widget::signal_connect
+*/
+int OrxonoxGuiExec::quitOrxonox (GtkWidget* widget, void* data)
+{
+  OrxonoxGuiExec* exec = (OrxonoxGuiExec*)data;
+  PRINT(3)( "Quitting Orxonox %p\n", exec);
+  if (exec->shouldsave())
+    exec->writeToFile (Window::mainWindow);
+  gtk_main_quit();
+}
+#else /* HAVE_GTK2 */
+/**
+   \brief Starts ORXONOX. (not really implemented yet, but the function is there.\n
+   \param widget the widget that executed the start command
+   \param data additional data
+*/
+int OrxonoxGuiExec::startOrxonox (void* widget, void* data)
+{
+  OrxonoxGuiExec* exec = (OrxonoxGuiExec*)data;
+  COUT(3) << "Starting Orxonox" <<endl;
+  if (exec->shouldsave())
+    exec->writeToFile (Window::mainWindow);
+}
+/**
+   \brief Quits ORXONOX.
+   \param widget the widget that executed the Quit command
+   \param data additional data
+
+   This is a Signal and can be executed through Widget::signal_connect
+*/
+int OrxonoxGuiExec::quitOrxonox (void* widget, void* data)
+{
+  OrxonoxGuiExec* exec = (OrxonoxGuiExec*)data;
+  COUT(3) << "Quiting Orxonox" <<endl;
+  if (exec->shouldsave())
+    exec->writeToFile (Window::mainWindow);
 }
 
Index: orxonox/branches/updater/src/gui/orxonox_gui_exec.h
===================================================================
--- orxonox/branches/updater/src/gui/orxonox_gui_exec.h	(revision 3299)
+++ orxonox/branches/updater/src/gui/orxonox_gui_exec.h	(revision 3300)
@@ -48,8 +48,20 @@
 
 #ifdef HAVE_GTK2
-  static int startOrxonox (GtkWidget *widget, Widget* data);
+  static int startOrxonox (GtkWidget *widget, void* data);
+  static int quitOrxonox (GtkWidget *widget, void* data);
 #else /* HAVE_GTK2 */
-  static int startOrxonox (void* widget, Widget* data);
+  static int startOrxonox (void* widget, void* data);
+  static int quitOrxonox (void* widget, void* data);
 #endif /* HAVE_GTK2 */
 };
+
+
+struct HashTable
+{
+  char* name;
+  char* value;
+  HashTable* next;
+};
+
+
 #endif /* _ORXONOX_GUI_EXEC_H */
Index: orxonox/branches/updater/src/gui/orxonox_gui_flags.cc
===================================================================
--- orxonox/branches/updater/src/gui/orxonox_gui_flags.cc	(revision 3299)
+++ orxonox/branches/updater/src/gui/orxonox_gui_flags.cc	(revision 3300)
@@ -72,4 +72,5 @@
     \brief this actually sets the flagtext, and appends it to flagText
     \param widget like OrxonoxGuiFlags::setTextFromFlags(widget)
+    \param flagInfo Information aboout the Flag that should be updated.
 */
 void OrxonoxGuiFlags::flagsText(Widget* widget, void* flagInfo)
Index: orxonox/branches/updater/src/gui/orxonox_gui_gtk.cc
===================================================================
--- orxonox/branches/updater/src/gui/orxonox_gui_gtk.cc	(revision 3299)
+++ orxonox/branches/updater/src/gui/orxonox_gui_gtk.cc	(revision 3300)
@@ -34,8 +34,6 @@
 // temporarily.
 #include "orxonox_gui_flags.h"
-#include "orxonox_gui_exec.h"
 extern Window* orxonoxGUI;
 extern OrxonoxGuiFlags* flags;
-extern OrxonoxGuiExec* exec;
 
 #ifdef HAVE_GTK2
@@ -306,4 +304,12 @@
    \brief Connect a signal with additionally passing a whole external Object
 */
+gulong Widget::connectSignal (char* event, void* extObj, gint (*signal)(GtkWidget*, void *))
+{
+  return g_signal_connect (G_OBJECT (this->widget), event, G_CALLBACK (signal), extObj);
+}
+
+/**
+   \brief Connect a signal with additionally passing a whole external Object
+*/
 gulong Widget::connectSignal (char* event, void* extObj, gint (*signal)(GtkWidget*, GdkEventKey*, void *))
 {
@@ -615,19 +621,4 @@
 }
 
-/**
- * Quits the orxonox_GUI.
- * This can be called as a Signal and is therefor static
- \param widget The widget that called this function
- \param event the event that happened to execute this function
- \param data some data passed with the Signal
- */
-gint Window::orxonox_gui_quit (GtkWidget *widget, GdkEvent *event, gpointer data)
-{
-  if (exec->shouldsave())
-    exec->writeToFile (Window::mainWindow);
-
-  gtk_main_quit();
-  return FALSE;
-}
 #endif /* HAVE_GTK2 */
 
Index: orxonox/branches/updater/src/gui/orxonox_gui_gtk.h
===================================================================
--- orxonox/branches/updater/src/gui/orxonox_gui_gtk.h	(revision 3299)
+++ orxonox/branches/updater/src/gui/orxonox_gui_gtk.h	(revision 3300)
@@ -66,4 +66,5 @@
   gulong connectSignal (char* event, gint (*signal)(GtkWidget*, Widget* ));
   gulong connectSignal (char* event, void* extObj, gint (*signal)(GtkWidget*, GdkEvent*, void* ));
+  gulong connectSignal (char* event, void* extObj, gint (*signal)(GtkWidget*, void* ));
   gulong connectSignal (char* event, void* extObj, gint (*signal)(GtkWidget*, GdkEventKey*, void* ));
   void disconnectSignal (gulong signalID);
@@ -149,5 +150,4 @@
   static gint windowOpen(GtkWidget* widget, GdkEvent* event, void* window);
   static gint windowClose(GtkWidget* widget, GdkEvent* event, void* window);
-  static gint orxonox_gui_quit(GtkWidget* widget, GdkEvent* event, gpointer data);
 #endif /* HAVE_GTK2 */
 };
