Index: orxonox/branches/updater/src/gui/orxonox_gui.cc
===================================================================
--- orxonox/branches/updater/src/gui/orxonox_gui.cc	(revision 3295)
+++ orxonox/branches/updater/src/gui/orxonox_gui.cc	(revision 3296)
@@ -23,4 +23,6 @@
 
 */
+
+#include <unistd.h>
 
 #include "orxonox_gui.h"
@@ -99,6 +101,8 @@
   flags->setTextFromFlags (orxonoxGUI);
 
+  // Reading Values from File
   exec->setFilename ("~/.orxonox.conf");
   exec->readFromFile (orxonoxGUI);
+  // Merging changes to the Options from appended flags.
   for (int optCount = 1; optCount < argc; optCount++)
     orxonoxGUI->walkThrough(Widget::flagCheck, argv[optCount], 0);
@@ -106,5 +110,9 @@
   orxonoxGUI->showall ();
 
-  
+  // Handling special Cases.
+  if (!access(exec->getConfigFile(), F_OK) && static_cast<Option*>(orxonoxGUI->findWidgetByName("Always Show this Menu", 0))->value == 0)
+    OrxonoxGuiExec::startOrxonox(NULL, NULL);
+  else
+    {
 #ifdef HAVE_GTK2
   mainloopGTK();
@@ -118,6 +126,6 @@
   if ((c == 'y' || c == 'Y' || c== 10) && exec->shouldsave())
     exec->writeToFile (Window::mainWindow);
- 
+    
 #endif /* HAVE_GTK2 */
-
+    }
 }
Index: orxonox/branches/updater/src/gui/orxonox_gui_exec.cc
===================================================================
--- orxonox/branches/updater/src/gui/orxonox_gui_exec.cc	(revision 3295)
+++ orxonox/branches/updater/src/gui/orxonox_gui_exec.cc	(revision 3296)
@@ -78,7 +78,8 @@
 
 /**
-   \brief Sets the location of the configuration File.\n
-   * The name will be parsed from ~/ to /home/[username] on unix and c:/Documents and Settings/username/Settings/ on Windows
+   \brief Sets the location of the configuration File.
    \param filename the location of the configFile
+
+   The name will be parsed from ~/ to /home/[username] on unix and c:/Documents and Settings/username/Settings/ on Windows
 */
 void OrxonoxGuiExec::setFilename (char* filename)
@@ -97,4 +98,12 @@
     sprintf(configFile, "%s", buffer);
   delete buffer;
+}
+
+/**
+   \returns The name of the Configuration-File
+*/
+char* OrxonoxGuiExec::getConfigFile(void)
+{
+  return configFile;
 }
 
@@ -289,5 +298,5 @@
    \param data additional data
 */
-gint startOrxonox (GtkWidget *widget, Widget* data)
+gint OrxonoxGuiExec::startOrxonox (GtkWidget *widget, Widget* data)
 {
   cout << "Starting Orxonox" <<endl;
Index: orxonox/branches/updater/src/gui/orxonox_gui_exec.h
===================================================================
--- orxonox/branches/updater/src/gui/orxonox_gui_exec.h	(revision 3295)
+++ orxonox/branches/updater/src/gui/orxonox_gui_exec.h	(revision 3296)
@@ -39,5 +39,6 @@
   
   void setFilename (char* filename);
-  int shouldsave ();
+  char* getConfigFile(void);
+  int shouldsave();
   void writeToFile (Widget* widget);
   void writeFileText (Widget* widget, int depth);
@@ -46,7 +47,7 @@
   Widget* locateGroup(Widget* widget, char* groupName, int depth);
 
+#ifdef HAVE_GTK2
+  static gint startOrxonox (GtkWidget *widget, Widget* data);
+#endif /* HAVE_GTK2 */
 };
-#ifdef HAVE_GTK2
-  gint startOrxonox (GtkWidget *widget, Widget* data);
-#endif /* HAVE_GTK2 */
 #endif /* _ORXONOX_GUI_EXEC_H */
Index: orxonox/branches/updater/src/gui/orxonox_gui_gtk.cc
===================================================================
--- orxonox/branches/updater/src/gui/orxonox_gui_gtk.cc	(revision 3295)
+++ orxonox/branches/updater/src/gui/orxonox_gui_gtk.cc	(revision 3296)
@@ -149,4 +149,25 @@
   gtk_widget_set_usize (this->widget, width, height);
 #endif /* HAVE_GTK2 */
+}
+
+/**
+   \brief searches through widgets for a Name.
+*/
+Widget* Widget::findWidgetByName(char* name, unsigned int depth)
+{
+  Widget* tmp = NULL;
+  if (this->title && !strcmp(this->title, name))
+    return this;
+
+  if (this->isOption < 0 && static_cast<Packer*>(this)->down)
+    tmp = static_cast<Packer*>(this)->down->findWidgetByName(name, depth+1);
+  if (tmp)
+    return tmp;
+
+  
+  if (depth>0 && this->next)
+    return this->next->findWidgetByName(name, depth);
+
+  return NULL;
 }
 
Index: orxonox/branches/updater/src/gui/orxonox_gui_gtk.h
===================================================================
--- orxonox/branches/updater/src/gui/orxonox_gui_gtk.h	(revision 3295)
+++ orxonox/branches/updater/src/gui/orxonox_gui_gtk.h	(revision 3296)
@@ -53,4 +53,5 @@
   virtual void setTitle(char* title) = 0;  //!< An abstract Function, that sets the title of Widgets.
 
+  Widget* findWidgetByName(char* name, unsigned int depth);
   void walkThrough (void (*function)(Widget*), unsigned int depth);
   void walkThrough (void (*function)(Widget*, void*), void* data, unsigned int depth);
