Index: orxonox/trunk/src/lib/gui/gui/gui.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui.cc	(revision 4131)
+++ orxonox/trunk/src/lib/gui/gui/gui.cc	(revision 4132)
@@ -53,5 +53,6 @@
 {
   Window* orxonoxGUI = NULL;
-
+  executable = NULL;
+  
   initGUI(argc, argv);
 
@@ -94,4 +95,6 @@
     orxonoxGUI->fill(windowBox);
   }
+
+
   // Reading Values from File
   exec->setConfDir(GUI_DEFAULT_CONF_DIR);
@@ -116,6 +119,13 @@
     }
 #endif /* HAVE_CURL */
+}
 
+/**
+   \brief starts the OrxonoxGUI
+*/
+void Gui::startGui(void)
+{
   mainloopGUI();
+  
 #ifndef HAVE_GTK2
   GuiExec::startOrxonox(NULL, exec);
@@ -123,4 +133,12 @@
 }
 
+void Gui::printHelp()
+{
+  Window::mainWindow->walkThrough(Widget::printHelp, 1);
+}
+
+/**
+   \brief a bool that knows if orxonox should be started
+*/
 bool Gui::startOrxonox = false;
 
Index: orxonox/trunk/src/lib/gui/gui/gui.h
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui.h	(revision 4131)
+++ orxonox/trunk/src/lib/gui/gui/gui.h	(revision 4132)
@@ -26,4 +26,7 @@
   ~Gui(void);
 
+  void startGui(void);
+  void printHelp(void);
+
   static bool startOrxonox;
 };
Index: orxonox/trunk/src/lib/gui/gui/gui_audio.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui_audio.cc	(revision 4131)
+++ orxonox/trunk/src/lib/gui/gui/gui_audio.cc	(revision 4132)
@@ -47,4 +47,6 @@
       enableSound = new CheckButton(CONFIG_NAME_DISABLE_AUDIO);
       enableSound->setFlagName ("no-sound", 0);
+      enableSound->setDescription("Disables Sound", "Check this to disable Sound in Orxonox");
+      enableSound->setDefaultValue(0);
       enableSound->saveability();
       audioBox->fill(enableSound);
@@ -53,4 +55,5 @@
       musicVolume = new Slider("Music Volume", 0, 100);
       musicVolume->setFlagName("music-volume", "m", 80);
+      musicVolume->setDescription("Sets the volume of the ingame music");
       musicVolume->saveability();
       audioBox->fill (musicVolume);
@@ -59,4 +62,5 @@
       effectsVolume = new Slider ("Effects Volume", 0, 100);
       effectsVolume->setFlagName ("effects-volume", "e", 80);
+      effectsVolume->setDescription("Sets the volune of the ingame SoundEffects");
       effectsVolume->saveability();
       audioBox->fill (effectsVolume);
Index: orxonox/trunk/src/lib/gui/gui/gui_exec.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui_exec.cc	(revision 4131)
+++ orxonox/trunk/src/lib/gui/gui/gui_exec.cc	(revision 4132)
@@ -70,11 +70,48 @@
       execBox->fill(this->saveSettings);
 
-      verboseMode = new Menu(CONFIG_NAME_VERBOSE_MODE, "nothing", "error", "warning", "info", "lastItem");
+#ifdef DEBUG
+      verboseMode = new Menu(CONFIG_NAME_VERBOSE_MODE, "nothing",
+#if DEBUG >=1
+			     "error",
+#endif
+#if DEBUG >=2
+			     "warning",
+#endif
+#if DEBUG >=3
+			     "info",
+#endif
+#if DEBUG >=4
+			     "debug",
+#endif
+#if DEBUG >=5
+			     "heavydebug",
+#endif
+			     "lastItem");
       verboseMode->setFlagName("verbose", "v", 2);
+      verboseMode->setDescription("Sets the Output Mode", "This Enables Outbug messages\n"
+				  "0: nothing will be displayed, but stuff one cannot do without (eg.GUI)\n"
+#if DEBUG >=1
+				  "1: error: outputs all the above and errors"
+#endif
+#if DEBUG >=2
+				  "2: warning: outputs all the above plus warnings"
+#endif
+#if DEBUG >=3
+				  "3: info: outputs all the above plus Information"
+#endif
+#if DEBUG >=4
+				  "4: debug: displays all the above plus debug information"
+#endif
+#if DEBUG >=5
+				  "5: heavydebug: displays all the above plus heavy debug information: WARNING: the game will run very slow with this."
+#endif
+				  );
       verboseMode->saveability();
       execBox->fill(verboseMode);
+#endif
 
       alwaysShow = new CheckButton(CONFIG_NAME_ALWAYS_SHOW_GUI);
       alwaysShow->setFlagName("gui", "g", 0);
+      alwaysShow->setDescription("shows the gui when starting orxonox");
       alwaysShow->saveability();
       execBox->fill(alwaysShow);
Index: orxonox/trunk/src/lib/gui/gui/gui_flags.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui_flags.cc	(revision 4131)
+++ orxonox/trunk/src/lib/gui/gui/gui_flags.cc	(revision 4132)
@@ -38,4 +38,5 @@
   this->flagsBox->fill(flagsLabel);
   this->shortFlags = new CheckButton("shortFlags");
+  this->shortFlags->setDefaultValue(0);
   this->flagsBox->fill(shortFlags);
 
Index: orxonox/trunk/src/lib/gui/gui/gui_gtk.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui_gtk.cc	(revision 4131)
+++ orxonox/trunk/src/lib/gui/gui/gui_gtk.cc	(revision 4132)
@@ -312,4 +312,39 @@
 
 /** 
+    \brief This is for listing the options of "widget"
+    \param widget specifies the widget that should be listed
+    \param data A Counter, that always knows how many Options have been found yet.
+*/
+void Widget::printHelp(Widget* widget)
+{
+  bool hasFlag = false;
+
+  if (widget->optionType > GUI_NOTHING)
+    {
+      Option* option = (Option*)widget;
+      if (option->flagName || option->flagNameShort)
+	{
+	  PRINT(0)("  ");
+	  if (option->flagNameShort)
+	    {
+	      PRINT(0)("-%s", option->flagNameShort);
+	      hasFlag = true;
+	    }
+	  if (option->flagName)
+	    {
+	      if (hasFlag)
+		PRINT(0)("|");
+	      PRINT(0)("--%s:", option->flagName);
+	      hasFlag = true;
+	    }
+	  if (option->shortDescription)
+	    PRINT(0)("\t\t%s\n", option->shortDescription);
+	  else
+	    PRINT(0)("\n");
+	}
+    }
+}
+
+/** 
     \brief Finds an Option by a given number(the n'th option found away from this Widget)
     \param number The Count of options to wait(by reference)
@@ -595,5 +630,5 @@
     }
   else
-    PRINTF(1)("You tried to put more than one Widget into a Container. \nNot including this item.\nThis is only possible with Boxes.\n");
+    PRINTF(2)("You tried to put more than one Widget into a Container. \nNot including this item.\nThis is only possible with Boxes.\n");
 }
 
@@ -1177,6 +1212,7 @@
   if ((this->value = atoi(tmpChar))=!0)
     this->value = 1;
-#endif /* HAVE_GTK2 */
+
   PRINT(0)("%s set to: %d\n", this->title, this->value);
+#endif /* HAVE_GTK2 */
 }
 
@@ -1262,6 +1298,7 @@
   if (this->value <= this->start)
     this->value = this->start;
-#endif /* HAVE_GTK2 */
+
   PRINT(0)("%s set to: %d\n",this->title, this->value);
+#endif /* HAVE_GTK2 */
 }
 
@@ -1370,5 +1407,5 @@
     {
       this->value = 0;
-      PRINTF(2)("Sorry, but %s has not been found in the Itemlist of %s\n", loadString, this->title);
+      PRINTF(2)("%s has not been found in the Itemlist of %s\n", loadString, this->title);
     }
   PRINTF(4)( "Loading %s: setting to %d\n", this->title, this->value); 
Index: orxonox/trunk/src/lib/gui/gui/gui_gtk.h
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui_gtk.h	(revision 4131)
+++ orxonox/trunk/src/lib/gui/gui/gui_gtk.h	(revision 4132)
@@ -71,4 +71,5 @@
    static void listGroups(Widget* widget);
    static void listGroups(Widget* widget, void* data);
+   static void printHelp(Widget* widget);
    Widget* findGroupByNumber(int* number, unsigned int depth);
    static void setOptions(Widget* widget);
Index: orxonox/trunk/src/lib/gui/gui/gui_update.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui_update.cc	(revision 4131)
+++ orxonox/trunk/src/lib/gui/gui/gui_update.cc	(revision 4132)
@@ -55,4 +55,6 @@
   dataDirButton = new Button(CONFIG_NAME_DATADIR);
   dataDirLabel = new OptionLabel(CONFIG_NAME_DATADIR, "unknown");
+  dataDirLabel->setFlagName("-d", "--data-dir", 0);
+  dataDirLabel->setDescription("Sets the location of the orxonox' Data-Directory");
   dataDirLabel->saveability();
   dataDirDialog = new FileDialog("data-Repos-location");
@@ -73,4 +75,5 @@
   this->updateBox->fill(this->autoUpdate);
   this->autoUpdate->setFlagName("update", "u", 0);
+  this->autoUpdate->setDescription("Updates orxonox", "When this option is selected orxonox automatically searches for updates, and if found installs them");
   this->autoUpdate->saveability();
 
Index: orxonox/trunk/src/lib/gui/gui/gui_video.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui_video.cc	(revision 4131)
+++ orxonox/trunk/src/lib/gui/gui/gui_video.cc	(revision 4132)
@@ -51,4 +51,5 @@
       fullscreen = new CheckButton(CONFIG_NAME_FULLSCREEN);
       fullscreen->setFlagName("windowed", "q", 1);
+      fullscreen->setDescription("Starts orxonox in windowed mode");
       fullscreen->saveability();
       videoBox->fill(fullscreen);
@@ -57,7 +58,9 @@
       resolution->saveability();
       resolution->setFlagName("resolution", "r", 0);
+      resolution->setDescription("Sets the resolution of orxonox");
       videoBox->fill(resolution);
       wireframe = new CheckButton(CONFIG_NAME_WIREFRAME);
       wireframe->setFlagName("wireframe", "w", 0);
+      wireframe->setDescription("Starts orxonox in wireframe mode");
       wireframe->saveability();
       videoBox->fill(wireframe);
@@ -199,10 +202,10 @@
   else{
     /* Print valid modes */
-    PRINT(4)("Available Modes\n");
+    PRINT(5)("Available Modes\n");
     for(i = 0; modes[i] ;++i)
       {
 	if (x != modes[i]->w || y != modes[i]->h)
 	  { 
-	    PRINT(4)("  %d x %d\n", modes[i]->w, modes[i]->h);
+	    PRINTF(5)("  %d x %d\n", modes[i]->w, modes[i]->h);
 	    sprintf(tmpChar, "%dx%d", modes[i]->w, modes[i]->h);
 	    menu->addItem(tmpChar);
Index: orxonox/trunk/src/orxonox.cc
===================================================================
--- orxonox/trunk/src/orxonox.cc	(revision 4131)
+++ orxonox/trunk/src/orxonox.cc	(revision 4132)
@@ -220,4 +220,6 @@
   PRINT(3)("initializing TextEngine\n");
   TextEngine::getInstance();
+
+  return 0;
 }
 
@@ -353,5 +355,5 @@
   for(i = 1; i < argc; ++i)
     {
-      if(! strcmp( "--help", argv[i])) return startHelp();
+      if(! strcmp( "--help", argv[i])) return startHelp(argc, argv);
       else if(! strcmp( "--benchmark", argv[i])) return startBenchmarks();
       else if(! strcmp( "--gui", argv[i]) || !strcmp("-g", argv[i])) showGui = true;
@@ -364,5 +366,5 @@
 
 
-int startHelp()
+int startHelp(int argc, char** argv)
 {
   PRINT(0)("orxonox: starts the orxonox game - rules\n");
@@ -372,4 +374,10 @@
   PRINT(0)(" --help \tshows this menu\n");
   PRINT(0)(" --gui/-g \tDisplays the Gui on startup\n");
+  
+  {
+    Gui* gui = new Gui(argc, argv);
+    gui->printHelp();
+    delete gui;
+  }
 }
 
@@ -384,7 +392,9 @@
       if (ResourceManager::isFile("~/.orxonox/orxonox.lock"))
 	ResourceManager::deleteFile("~/.orxonox/orxonox.lock");
-      //      char* guiExec = new char[strlen(argv[0])+20];
-      //      sprintf(guiExec,"%sGui --gui", argv[0]);
+      
+      // starting the GUI
       Gui* gui = new Gui(argc, argv);
+      gui->startGui();
+
       if (! gui->startOrxonox)
 	return 0;
Index: orxonox/trunk/src/orxonox.h
===================================================================
--- orxonox/trunk/src/orxonox.h	(revision 4131)
+++ orxonox/trunk/src/orxonox.h	(revision 4132)
@@ -75,5 +75,5 @@
 };
 
-int startHelp(void);
+int startHelp(int argc, char** argv);
 int startOrxonox(int argc, char** argv);
 
