Index: orxonox/trunk/src/lib/gui/gui/Makefile.am
===================================================================
--- orxonox/trunk/src/lib/gui/gui/Makefile.am	(revision 3789)
+++ orxonox/trunk/src/lib/gui/gui/Makefile.am	(revision 4024)
@@ -26,4 +26,5 @@
 gui_SOURCES=orxonox_gui.cc \
 	    orxonox_gui_gtk.cc \
+	    orxonox_gui_element.cc \
 	    orxonox_gui_video.cc \
 	    orxonox_gui_audio.cc \
@@ -36,4 +37,5 @@
 noinst_HEADERS=orxonox_gui.h \
 	    orxonox_gui_gtk.h \
+	    orxonox_gui_element.h \
 	    orxonox_gui_video.h \
 	    orxonox_gui_audio.h \
Index: orxonox/trunk/src/lib/gui/gui/Makefile.in
===================================================================
--- orxonox/trunk/src/lib/gui/gui/Makefile.in	(revision 3789)
+++ orxonox/trunk/src/lib/gui/gui/Makefile.in	(revision 4024)
@@ -54,8 +54,8 @@
 PROGRAMS = $(bin_PROGRAMS)
 am_gui_OBJECTS = orxonox_gui.$(OBJEXT) orxonox_gui_gtk.$(OBJEXT) \
-	orxonox_gui_video.$(OBJEXT) orxonox_gui_audio.$(OBJEXT) \
-	orxonox_gui_exec.$(OBJEXT) orxonox_gui_flags.$(OBJEXT) \
-	orxonox_gui_banner.$(OBJEXT) orxonox_gui_keys.$(OBJEXT) \
-	orxonox_gui_update.$(OBJEXT)
+	orxonox_gui_element.$(OBJEXT) orxonox_gui_video.$(OBJEXT) \
+	orxonox_gui_audio.$(OBJEXT) orxonox_gui_exec.$(OBJEXT) \
+	orxonox_gui_flags.$(OBJEXT) orxonox_gui_banner.$(OBJEXT) \
+	orxonox_gui_keys.$(OBJEXT) orxonox_gui_update.$(OBJEXT)
 gui_OBJECTS = $(am_gui_OBJECTS)
 gui_LDADD = $(LDADD)
@@ -66,4 +66,5 @@
 @AMDEP_TRUE@	./$(DEPDIR)/orxonox_gui_audio.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/orxonox_gui_banner.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/orxonox_gui_element.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/orxonox_gui_exec.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/orxonox_gui_flags.Po \
@@ -199,4 +200,5 @@
 gui_SOURCES = orxonox_gui.cc \
 	    orxonox_gui_gtk.cc \
+	    orxonox_gui_element.cc \
 	    orxonox_gui_video.cc \
 	    orxonox_gui_audio.cc \
@@ -209,4 +211,5 @@
 noinst_HEADERS = orxonox_gui.h \
 	    orxonox_gui_gtk.h \
+	    orxonox_gui_element.h \
 	    orxonox_gui_video.h \
 	    orxonox_gui_audio.h \
@@ -296,4 +299,5 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox_gui_audio.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox_gui_banner.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox_gui_element.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox_gui_exec.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox_gui_flags.Po@am__quote@
Index: orxonox/trunk/src/lib/gui/gui/orxonox_gui_audio.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/orxonox_gui_audio.cc	(revision 3789)
+++ orxonox/trunk/src/lib/gui/gui/orxonox_gui_audio.cc	(revision 4024)
@@ -52,5 +52,6 @@
   this->audioBox->fill (this->effectsVolume);
 
-  this->audioFrame->fill (this->audioBox);
+  this->audioFrame->fill(this->audioBox);
+  this->setMainWidget(this->audioFrame);
 }
 
@@ -62,11 +63,2 @@
   // nothing to do here.
 }
-
-/**
-   \brief Return the Frame
-   \return Returns the Audio-frame
-*/
-Widget* OrxonoxGuiAudio::getWidget(void)
-{
-  return this->audioFrame;
-}
Index: orxonox/trunk/src/lib/gui/gui/orxonox_gui_audio.h
===================================================================
--- orxonox/trunk/src/lib/gui/gui/orxonox_gui_audio.h	(revision 3789)
+++ orxonox/trunk/src/lib/gui/gui/orxonox_gui_audio.h	(revision 4024)
@@ -8,7 +8,8 @@
 
 #include "orxonox_gui.h"
+#include "orxonox_gui_element.h"
 
 //! Class that creates the Audio-Options.
-class OrxonoxGuiAudio
+class OrxonoxGuiAudio : public OrxonoxGuiElement
 {
  private:
@@ -21,6 +22,4 @@
   OrxonoxGuiAudio(void);
   ~OrxonoxGuiAudio(void);
-  
-  Widget* getWidget(void);
 };
 #endif /* _ORXONOX_GUI_AUDIO_H */
Index: orxonox/trunk/src/lib/gui/gui/orxonox_gui_banner.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/orxonox_gui_banner.cc	(revision 3789)
+++ orxonox/trunk/src/lib/gui/gui/orxonox_gui_banner.cc	(revision 4024)
@@ -60,4 +60,6 @@
   
   Window::addWindow(this->logoWindow);
+
+  this->setMainWidget(bannerEventBox);
 }
 
@@ -69,13 +71,2 @@
   // nothing to do here
 }
-
-/**
-   \brief Returns an EventBox
-   \return The EventBox, that holds the Banner.
-*/
-Widget* OrxonoxGuiBanner::getWidget(void)
-{
-  return this->bannerEventBox;
-}
-
-
Index: orxonox/trunk/src/lib/gui/gui/orxonox_gui_banner.h
===================================================================
--- orxonox/trunk/src/lib/gui/gui/orxonox_gui_banner.h	(revision 3789)
+++ orxonox/trunk/src/lib/gui/gui/orxonox_gui_banner.h	(revision 4024)
@@ -9,7 +9,8 @@
 
 #include "orxonox_gui.h"
+#include "orxonox_gui_element.h"
 
 //! Class that creates the Banner-Image
-class OrxonoxGuiBanner
+class OrxonoxGuiBanner : public OrxonoxGuiElement
 {
  private:
@@ -31,7 +32,4 @@
   OrxonoxGuiBanner(void);
   ~OrxonoxGuiBanner(void);
-
-  Widget* getWidget(void);
-
 };
 
Index: orxonox/trunk/src/lib/gui/gui/orxonox_gui_element.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/orxonox_gui_element.cc	(revision 4024)
+++ orxonox/trunk/src/lib/gui/gui/orxonox_gui_element.cc	(revision 4024)
@@ -0,0 +1,45 @@
+/* 
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: ...
+   co-programmer: ...
+*/
+
+//#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_
+
+#include "orxonox_gui_element.h"
+
+using namespace std;
+
+
+/**
+   \brief standard constructor
+   \todo this constructor is not jet implemented - do it
+*/
+OrxonoxGuiElement::OrxonoxGuiElement () 
+{
+  this->mainWidget = NULL;
+}
+
+
+/**
+   \brief standard deconstructor
+
+*/
+OrxonoxGuiElement::~OrxonoxGuiElement () 
+{
+  // delete what has to be deleted here
+}
+
+void OrxonoxGuiElement::setMainWidget(Widget* widget)
+{
+  this->mainWidget = widget;
+}
Index: orxonox/trunk/src/lib/gui/gui/orxonox_gui_element.h
===================================================================
--- orxonox/trunk/src/lib/gui/gui/orxonox_gui_element.h	(revision 4024)
+++ orxonox/trunk/src/lib/gui/gui/orxonox_gui_element.h	(revision 4024)
@@ -0,0 +1,31 @@
+/*! 
+    \file orxonox_gui_element.h
+    \brief Definition of ...
+
+*/
+
+#ifndef _ORXONOX_GUI_ELEMENT_H
+#define _ORXONOX_GUI_ELEMENT_H
+
+#include "orxonox_gui_gtk.h"
+
+// FORWARD DEFINITION
+
+
+
+//! A class for ...
+class OrxonoxGuiElement {
+
+ public:
+  OrxonoxGuiElement();
+  virtual ~OrxonoxGuiElement();
+  
+  Widget* getWidget(void) {return this->mainWidget;}
+ protected:
+  void setMainWidget(Widget* widget);
+  
+ private:
+  Widget* mainWidget;
+};
+
+#endif /* _ORXONOX_GUI_ELEMENT_H */
Index: orxonox/trunk/src/lib/gui/gui/orxonox_gui_exec.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/orxonox_gui_exec.cc	(revision 3789)
+++ orxonox/trunk/src/lib/gui/gui/orxonox_gui_exec.cc	(revision 4024)
@@ -72,4 +72,6 @@
 
   this->execFrame->fill(this->execBox);
+
+  this->setMainWidget(execFrame);
 }
 
@@ -81,13 +83,4 @@
   if(this->configFile)
     delete []this->configFile;
-}
-
-/**
-   \brief Return the Frame
-   \return Returns the Exec-frame
-*/
-Widget* OrxonoxGuiExec::getWidget(void)
-{
-  return execFrame;
 }
 
Index: orxonox/trunk/src/lib/gui/gui/orxonox_gui_exec.h
===================================================================
--- orxonox/trunk/src/lib/gui/gui/orxonox_gui_exec.h	(revision 3789)
+++ orxonox/trunk/src/lib/gui/gui/orxonox_gui_exec.h	(revision 4024)
@@ -8,9 +8,11 @@
 
 #include "orxonox_gui.h"
+#include "orxonox_gui_element.h"
+
 #include <stdio.h>
 using namespace std;
 
 //! Class that creates the execute-Options.
-class OrxonoxGuiExec
+class OrxonoxGuiExec : public OrxonoxGuiElement
 {
  private:
@@ -37,6 +39,4 @@
   ~OrxonoxGuiExec(void);
   
-  Widget* getWidget(void);
-
   void setConfFile(char* confFile);
   void setConfDir(char* confDir);
Index: orxonox/trunk/src/lib/gui/gui/orxonox_gui_flags.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/orxonox_gui_flags.cc	(revision 3789)
+++ orxonox/trunk/src/lib/gui/gui/orxonox_gui_flags.cc	(revision 4024)
@@ -41,4 +41,5 @@
 
   this->flagsFrame->fill(flagsBox);
+  this->setMainWidget(flagsFrame);
 }
 
@@ -49,13 +50,4 @@
 {
   // nothing to do here
-}
-
-/**
-   \brief Function to return the Frame that holds the Flagtext.
-   \returns Frame that holds the Flagtext.
-*/
-Widget* OrxonoxGuiFlags::getWidget(void)
-{
-  return this->flagsFrame;
 }
 
Index: orxonox/trunk/src/lib/gui/gui/orxonox_gui_flags.h
===================================================================
--- orxonox/trunk/src/lib/gui/gui/orxonox_gui_flags.h	(revision 3789)
+++ orxonox/trunk/src/lib/gui/gui/orxonox_gui_flags.h	(revision 4024)
@@ -8,7 +8,8 @@
 
 #include "orxonox_gui.h"
+#include "orxonox_gui_element.h"
 
 //! Class that creates the flags-Text.
-class OrxonoxGuiFlags
+class OrxonoxGuiFlags : public OrxonoxGuiElement
 {
  private:
@@ -31,5 +32,4 @@
     Label* flagsLabel;           //!< Label for the flag.
   };
-  Widget* getWidget(void);
 };
 #endif /* _ORXONOX_GUI_FLAGS_H */
Index: orxonox/trunk/src/lib/gui/gui/orxonox_gui_keys.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/orxonox_gui_keys.cc	(revision 3789)
+++ orxonox/trunk/src/lib/gui/gui/orxonox_gui_keys.cc	(revision 4024)
@@ -41,4 +41,5 @@
 
   this->keysFrame->fill(this->keysBox);
+  this->setMainWidget(keysFrame);
 }
 
@@ -49,13 +50,4 @@
 {
   // nothing to do here.
-}
-
-/**
-   \brief Return the Frame
-   \return Returns the Audio-frame
-*/
-Widget* OrxonoxGuiKeys::getWidget(void)
-{
-  return this->keysFrame;
 }
 
Index: orxonox/trunk/src/lib/gui/gui/orxonox_gui_keys.h
===================================================================
--- orxonox/trunk/src/lib/gui/gui/orxonox_gui_keys.h	(revision 3789)
+++ orxonox/trunk/src/lib/gui/gui/orxonox_gui_keys.h	(revision 4024)
@@ -8,4 +8,6 @@
 
 #include "orxonox_gui.h"
+#include "orxonox_gui_element.h"
+
 #ifdef HAVE_GTK2
 #include <gdk/gdkkeysyms.h>
@@ -19,5 +21,5 @@
 class Player;
 //! Class that creates the Keys-Options.
-class OrxonoxGuiKeys
+class OrxonoxGuiKeys : public OrxonoxGuiElement
 {
  private:
@@ -31,6 +33,4 @@
   OrxonoxGuiKeys(void);
   ~OrxonoxGuiKeys(void);
-  
-  Widget* getWidget(void);
 };
 
Index: orxonox/trunk/src/lib/gui/gui/orxonox_gui_update.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/orxonox_gui_update.cc	(revision 3789)
+++ orxonox/trunk/src/lib/gui/gui/orxonox_gui_update.cc	(revision 4024)
@@ -62,4 +62,5 @@
 #endif /* HAVE_CURL */
   this->updateFrame->fill(this->updateBox);
+  this->setMainWidget(this->updateFrame);
 }
 
@@ -81,13 +82,4 @@
 
 
-}
-
-/**
-   \brief Return the Frame
-   \return Returns the Audio-frame
-*/
-Widget* OrxonoxGuiUpdate::getWidget(void)
-{
-  return this->updateFrame;
 }
 
Index: orxonox/trunk/src/lib/gui/gui/orxonox_gui_update.h
===================================================================
--- orxonox/trunk/src/lib/gui/gui/orxonox_gui_update.h	(revision 3789)
+++ orxonox/trunk/src/lib/gui/gui/orxonox_gui_update.h	(revision 4024)
@@ -8,4 +8,6 @@
 
 #include "orxonox_gui.h"
+#include "orxonox_gui_element.h"
+
 #include <stdio.h>
 #ifdef HAVE_CURL
@@ -21,5 +23,5 @@
 
 //! Class that creates the execute-Options.
-class OrxonoxGuiUpdate
+class OrxonoxGuiUpdate : public OrxonoxGuiElement
 {
  private:
@@ -97,5 +99,4 @@
   ~OrxonoxGuiUpdate(void);
   
-  Widget* getWidget(void);
 #ifdef HAVE_CURL   
   void updateDataWindowCreate(void);
Index: orxonox/trunk/src/lib/gui/gui/orxonox_gui_video.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/orxonox_gui_video.cc	(revision 3789)
+++ orxonox/trunk/src/lib/gui/gui/orxonox_gui_video.cc	(revision 4024)
@@ -55,4 +55,5 @@
 
   this->videoFrame->fill(videoBox);
+  this->setMainWidget(this->videoFrame);
 }
 
@@ -64,13 +65,4 @@
   // nothing to do here.
 }
-
-/**
-   \return Returns the Video-frame
-*/
-Widget* OrxonoxGuiVideo::getWidget(void)
-{
-  return this->videoFrame;
-}
-
 
 /**
Index: orxonox/trunk/src/lib/gui/gui/orxonox_gui_video.h
===================================================================
--- orxonox/trunk/src/lib/gui/gui/orxonox_gui_video.h	(revision 3789)
+++ orxonox/trunk/src/lib/gui/gui/orxonox_gui_video.h	(revision 4024)
@@ -7,7 +7,8 @@
 
 #include "orxonox_gui.h"
+#include "orxonox_gui_element.h"
 
 //! Class that creates the Video-Options.
-class OrxonoxGuiVideo
+class OrxonoxGuiVideo : public OrxonoxGuiElement
 {
  private:
@@ -46,6 +47,4 @@
   ~OrxonoxGuiVideo(void);
 
-  Widget* getWidget(void);
-
   void getResolutions(Menu* menu);
   
