Index: orxonox/trunk/src/lib/gui/gui/gui_exec.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui_exec.cc	(revision 4064)
+++ orxonox/trunk/src/lib/gui/gui/gui_exec.cc	(revision 4068)
@@ -69,12 +69,15 @@
       this->saveSettings->saveability();
       execBox->fill(this->saveSettings);
+
       verboseMode = new Menu("verbose mode", "nothing", "error", "warning", "info", "lastItem");
       verboseMode->setFlagName("verbose", "v", 2);
       verboseMode->saveability();
       execBox->fill(verboseMode);
+
       alwaysShow = new CheckButton("Always Show this Menu");
       alwaysShow->setFlagName("gui", "g", 0);
       alwaysShow->saveability();
       execBox->fill(alwaysShow);
+
       quit = new Button("Quit");
 #ifdef HAVE_GTK2
Index: orxonox/trunk/src/lib/gui/gui/gui_gtk.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui_gtk.cc	(revision 4064)
+++ orxonox/trunk/src/lib/gui/gui/gui_gtk.cc	(revision 4068)
@@ -772,5 +772,5 @@
    \brief Creates a new Frame with name title
 */
-Frame::Frame(char* frameName)
+Frame::Frame(const char* frameName)
 {
 #ifdef HAVE_GTK2
@@ -1475,5 +1475,5 @@
   strcpy(this->cValue, newValue);
 #ifdef HAVE_GTK2
-  gtk_label_set_text(GTK_LABEL(this->widget), this->cValue);
+  gtk_label_set_text(GTK_LABEL(this->widget), newValue);
 #endif /* HAVE_GTK2 */
 }
@@ -1495,5 +1495,5 @@
 {
 #ifdef HAVE_GTK2
-  this->cValue =(char*)gtk_label_get_text(GTK_LABEL(this->widget));
+  this->cValue = (char*)gtk_label_get_text(GTK_LABEL(this->widget));
 #else /* HAVE_GTK2 */
   PRINT(0)("\nPlease give me a new input for %s: ", this->title);
@@ -1736,2 +1736,125 @@
   strcpy(this->title, name);
 }
+
+
+/////////////////
+/* FILE DIALOG */
+/////////////////
+/**
+   \brief Creates a new FileDialog
+   \param fileDialogName a Name for the Dialog
+*/
+FileDialog::FileDialog(const char* fileDialogName)
+{
+  this->isOption = 0;
+  this->isOpen = false;
+  this->changeOption = NULL;
+  this->openUpButton = NULL;
+
+#ifdef HAVE_GTK2
+  this->widget = gtk_file_selection_new(fileDialogName);
+  g_signal_connect(GTK_FILE_SELECTION (this->widget)->cancel_button,
+                     "button_release_event",
+                     G_CALLBACK (FileDialog::dialogClose),
+                     this);
+  g_signal_connect(GTK_FILE_SELECTION (this->widget),
+                     "delete_event",
+                     G_CALLBACK (FileDialog::dialogClose),
+                     this);
+  g_signal_connect(GTK_FILE_SELECTION (this->widget)->ok_button,
+                     "button_release_event",
+                     G_CALLBACK (FileDialog::dialogOK),
+                     this);
+#endif /* HAVE_GTK2 */
+  if (fileDialogName)
+    this->setTitle(fileDialogName);
+}
+
+/**
+   \brief destructs a FileDialog
+*/
+FileDialog::~FileDialog(void)
+{
+  PRINTF(5)("deleting FileDialog %s\n", this->title);
+}
+
+void FileDialog::setChangeOption(OptionLabel* changeOption)
+{
+  this->changeOption = changeOption;
+}
+
+void FileDialog::setOpenUpButton(Button* openUpButton)
+{
+  this->openUpButton = openUpButton;
+
+  openUpButton->connectSignal("button_release_event", this, FileDialog::dialogOpen);
+}
+
+
+void FileDialog::setDefaultFileName(const char* defaultFileName)
+{
+#ifdef HAVE_GTK2
+  gtk_file_selection_set_filename (GTK_FILE_SELECTION(this->widget), defaultFileName);
+#endif /* HAVE_GTK2 */
+}
+
+void FileDialog::setMask(const char* mask)
+{
+#ifdef HAVE_GTK2
+  gtk_file_selection_complete(GTK_FILE_SELECTION(this->widget), mask);
+#endif /* HAVE_GTK2 */
+}
+
+void FileDialog::okEvent(void)
+{
+  if (this->changeOption)
+#ifdef HAVE_GTK2
+    changeOption->setValue(gtk_file_selection_get_filename(GTK_FILE_SELECTION(this->widget)));
+#endif /* HAVE_GTK2 */
+  this->close();
+}
+
+void FileDialog::open(void)
+{
+  isOpen = true;
+#ifdef HAVE_GTK2
+  gtk_widget_show_all(this->widget);
+  gtk_grab_add(this->widget);
+#endif /* HAVE_GTK2 */
+}
+
+void FileDialog::close(void)
+{
+  this->isOpen = false;
+#ifdef HAVE_GTK2
+  gtk_grab_remove(this->widget);
+  gtk_widget_hide(this->widget);
+#endif /* HAVE_GTK2 */
+}
+
+#ifdef HAVE_GTK2
+gint FileDialog::dialogOK(GtkWidget* widget, GdkEvent* event, void* dialog)
+{
+  static_cast<FileDialog*>(dialog)->okEvent();
+}
+#else /* HAVE_GTK2 */
+int FileDialog::dialogOK(void* widget, void* event, void* dialog){}
+#endif /* HAVE_GTK2 */
+
+#ifdef HAVE_GTK2
+gint FileDialog::dialogOpen(GtkWidget* widget, GdkEvent* event, void* dialog)
+{
+  static_cast<FileDialog*>(dialog)->open();
+}
+#else /* HAVE_GTK2 */
+int FileDialog::dialogOpen(void* widget, void* event, void* dialog){}
+#endif /* HAVE_GTK2 */
+
+#ifdef HAVE_GTK2
+gint FileDialog::dialogClose(GtkWidget* widget, GdkEvent* event, void* dialog)
+{
+  static_cast<FileDialog*>(dialog)->close();
+}
+#else /* HAVE_GTK2 */
+int FileDialog::dialogClose(void* widget, void* event, void* dialog){}
+#endif /* HAVE_GTK2 */
Index: orxonox/trunk/src/lib/gui/gui/gui_gtk.h
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui_gtk.h	(revision 4064)
+++ orxonox/trunk/src/lib/gui/gui/gui_gtk.h	(revision 4068)
@@ -28,4 +28,5 @@
 #include <gtk/gtkeventbox.h>
 #include <gtk/gtkprogressbar.h>
+#include <gtk/gtkfilesel.h>
 #endif /* HAVE_GTK2 */
 
@@ -184,5 +185,5 @@
 {
  public:
-  Frame(char* frameName = NULL);
+  Frame(const char* frameName = NULL);
   virtual ~Frame(void);
 
@@ -420,5 +421,34 @@
 };
 
-//gint orxonox_gui_quit(GtkWidget* widget, GdkEvent* event, gpointer data);
+//! A FileDialog is a window with wich one can select a File
+class FileDialog : public Widget
+{
+ private:
+  OptionLabel* changeOption;
+  Button* openUpButton;
+  bool isOpen;
+ public:
+  FileDialog(const char* fileDialogName);
+  virtual ~FileDialog(void);
+
+  void setChangeOption(OptionLabel* changeOption);
+  void setOpenUpButton(Button* openUpButton);
+  void setDefaultFileName(const char* defaultFileName);
+  void setMask(const char* mask);
+
+  void okEvent();
+  void open();
+  void close();
+
+#ifdef HAVE_GTK2
+  static gint dialogOK(GtkWidget* widget, GdkEvent* event, void* dialog);
+  static gint dialogOpen(GtkWidget* widget, GdkEvent* event, void* dialog);
+  static gint dialogClose(GtkWidget* widget, GdkEvent* event, void* dialog);
+#else /* HAVE_GTK2 */
+  static int dialogOK(void* widget, void* event, void* dialog);
+  static int dialogOpen(void* widget, void* event, void* dialog);
+  static int dialogClose(void* widget, void* event, void* dialog);
+#endif /* HAVE_GTK2 */
+};
 
 #endif /* _GUI_GTK_H */
Index: orxonox/trunk/src/lib/gui/gui/gui_update.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui_update.cc	(revision 4064)
+++ orxonox/trunk/src/lib/gui/gui/gui_update.cc	(revision 4068)
@@ -37,4 +37,8 @@
 GuiUpdate::GuiUpdate(void)
 {
+  FileDialog* dataDirDialog;   //!< A FileDialog for the selection of the DataRepos
+  Button* dataDirButton;       //!< A Button for the selection of the DataRepos
+  OptionLabel* dataDirLabel;   //!< A Label fot the selection of the DataRepos
+
   this->tmpDir = NULL;
   this->homeDir = NULL;
@@ -54,4 +58,16 @@
   this->autoUpdate->setFlagName("update", "u", 0);
   this->autoUpdate->saveability();
+
+  
+  dataDirButton = new Button("browse");
+  dataDirLabel = new OptionLabel("DataDir", "test");
+  dataDirLabel->saveability();
+  dataDirDialog = new FileDialog("data-Repos-location");
+  dataDirDialog->setDefaultFileName("../data");
+  dataDirDialog->setOpenUpButton(dataDirButton);
+  dataDirDialog->setChangeOption(dataDirLabel);
+  updateBox->fill(dataDirLabel);
+  updateBox->fill(dataDirButton);
+
 
   this->updateSourceWindowCreate();
@@ -67,4 +83,6 @@
   this->updateFrame->fill(this->updateBox);
   this->setMainWidget(this->updateFrame);
+
+
 }
 
Index: orxonox/trunk/src/lib/gui/gui/gui_video.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui_video.cc	(revision 4064)
+++ orxonox/trunk/src/lib/gui/gui/gui_video.cc	(revision 4068)
@@ -154,5 +154,7 @@
   
       closeButton = new Button("close");
+#ifdef HAVE_GTK2
       closeButton->connectSignal("button_press_event", advancedWindow, Window::windowClose);
+#endif /* HAVE_GTK2 */
 
       advancedBox->fill(closeButton);
