Index: orxonox/trunk/Makefile.in
===================================================================
--- orxonox/trunk/Makefile.in	(revision 4053)
+++ orxonox/trunk/Makefile.in	(revision 4054)
@@ -133,4 +133,5 @@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -141,4 +142,5 @@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
+ac_ct_RANLIB = @ac_ct_RANLIB@
 ac_ct_STRIP = @ac_ct_STRIP@
 am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
Index: orxonox/trunk/aclocal.m4
===================================================================
--- orxonox/trunk/aclocal.m4	(revision 4053)
+++ orxonox/trunk/aclocal.m4	(revision 4054)
@@ -1,3 +1,3 @@
-# generated automatically by aclocal 1.8.2 -*- Autoconf -*-
+# generated automatically by aclocal 1.8.5 -*- Autoconf -*-
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
@@ -41,5 +41,5 @@
 # This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-	 [AM_AUTOMAKE_VERSION([1.8.2])])
+	 [AM_AUTOMAKE_VERSION([1.8.5])])
 
 # AM_AUX_DIR_EXPAND
@@ -150,5 +150,5 @@
 fi])])
 
-# serial 6						-*- Autoconf -*-
+# serial 7						-*- Autoconf -*-
 
 # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
@@ -237,5 +237,7 @@
     for i in 1 2 3 4 5 6; do
       echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      : > sub/conftst$i.h
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
     done
     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
@@ -265,7 +267,12 @@
        ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
       # icc doesn't choke on unknown options, it will just issue warnings
-      # (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored.
-      if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
         am_cv_$1_dependencies_compiler_type=$depmode
         break
@@ -313,5 +320,5 @@
 # Generate code to set up dependency tracking.   -*- Autoconf -*-
 
-# Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
@@ -352,12 +359,12 @@
   # Extract the definition of DEP_FILES from the Makefile without
   # running `make'.
-  DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"`
+  DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
   test -z "$DEPDIR" && continue
   # When using ansi2knr, U may be empty or an underscore; expand it
-  U=`sed -n -e '/^U = / s///p' < "$mf"`
+  U=`sed -n 's/^U = //p' < "$mf"`
   test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
   # We invoke sed twice because it is the simplest approach to
   # changing $(DEPDIR) to its actual value in the expansion.
-  for file in `sed -n -e '
+  for file in `sed -n '
     /^DEP_FILES = .*\\\\$/ {
       s/^DEP_FILES = //
@@ -718,6 +725,14 @@
 # Do not use -m 0755 and let people choose whatever they expect by
 # setting umask.
+#
+# We cannot accept any implementation of `mkdir' that recognizes `-p'.
+# Some implementations (such as Solaris 8's) are not thread-safe: if a
+# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c'
+# concurrently, both version can detect that a/ is missing, but only
+# one can create it and the other will error out.  Consequently we
+# restrict ourselves to GNU make (using the --version option ensures
+# this.)
 AC_DEFUN([AM_PROG_MKDIR_P],
-[if mkdir -p -- . 2>/dev/null; then
+[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
   # Keeping the `.' argument allows $(mkdir_p) to be used without
   # argument.  Indeed, we sometimes output rules like
@@ -732,5 +747,5 @@
   # directories to create, and then abort because `.' already
   # exists.
-  for d in ./-p ./--;
+  for d in ./-p ./--version;
   do
     test -d $d && rmdir $d
Index: orxonox/trunk/configure
===================================================================
--- orxonox/trunk/configure	(revision 4053)
+++ orxonox/trunk/configure	(revision 4054)
@@ -312,5 +312,5 @@
 #endif"
 
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot CXX CXXFLAGS LDFLAGS CPPFLAGS ac_ct_CXX EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CC CFLAGS ac_ct_CC CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP EGREP DEBUG SUB_PROJECTS_TRUE SUB_PROJECTS_FALSE DOCUMENTATION_TRUE DOCUMENTATION_FALSE DOXYGEN DOXYGEN_TRUE DOXYGEN_FALSE GPROF MSBITFIELDS GTK2_LIBS GTK2_CFLAGS HAVE_GTK2_TRUE HAVE_GTK2_FALSE GTHREAD_LIBS GTHREAD_CFLAGS HAVE_GTHREAD_TRUE HAVE_GTHREAD_FALSE CURL_LIBS CURL_CFLAGS HAVE_CURL_TRUE HAVE_CURL_FALSE LIBOBJS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot CXX CXXFLAGS LDFLAGS CPPFLAGS ac_ct_CXX EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE RANLIB ac_ct_RANLIB CC CFLAGS ac_ct_CC CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP EGREP DEBUG SUB_PROJECTS_TRUE SUB_PROJECTS_FALSE DOCUMENTATION_TRUE DOCUMENTATION_FALSE DOXYGEN DOXYGEN_TRUE DOXYGEN_FALSE GPROF MSBITFIELDS GTK2_LIBS GTK2_CFLAGS HAVE_GTK2_TRUE HAVE_GTK2_FALSE GTHREAD_LIBS GTHREAD_CFLAGS HAVE_GTHREAD_TRUE HAVE_GTHREAD_FALSE CURL_LIBS CURL_CFLAGS HAVE_CURL_TRUE HAVE_CURL_FALSE LIBOBJS LTLIBOBJS'
 ac_subst_files=''
 
@@ -1604,5 +1604,5 @@
 fi
 
-if mkdir -p -- . 2>/dev/null; then
+if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
   # Keeping the `.' argument allows $(mkdir_p) to be used without
   # argument.  Indeed, we sometimes output rules like
@@ -1617,5 +1617,5 @@
   # directories to create, and then abort because `.' already
   # exists.
-  for d in ./-p ./--;
+  for d in ./-p ./--version;
   do
     test -d $d && rmdir $d
@@ -2523,5 +2523,7 @@
     for i in 1 2 3 4 5 6; do
       echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      : > sub/conftst$i.h
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
     done
     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
@@ -2551,7 +2553,12 @@
        ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
       # icc doesn't choke on unknown options, it will just issue warnings
-      # (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored.
-      if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
         am_cv_CXX_dependencies_compiler_type=$depmode
         break
@@ -2583,4 +2590,84 @@
 fi
 
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  echo "$as_me:$LINENO: result: $RANLIB" >&5
+echo "${ECHO_T}$RANLIB" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+echo "${ECHO_T}$ac_ct_RANLIB" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  RANLIB=$ac_ct_RANLIB
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
 
 ac_ext=c
@@ -3354,5 +3441,7 @@
     for i in 1 2 3 4 5 6; do
       echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      : > sub/conftst$i.h
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
     done
     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
@@ -3382,7 +3471,12 @@
        ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
       # icc doesn't choke on unknown options, it will just issue warnings
-      # (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored.
-      if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
         am_cv_CC_dependencies_compiler_type=$depmode
         break
@@ -8868,4 +8962,6 @@
 s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t
 s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t
+s,@RANLIB@,$RANLIB,;t t
+s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
 s,@CC@,$CC,;t t
 s,@CFLAGS@,$CFLAGS,;t t
@@ -9525,12 +9621,12 @@
   # Extract the definition of DEP_FILES from the Makefile without
   # running `make'.
-  DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"`
+  DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
   test -z "$DEPDIR" && continue
   # When using ansi2knr, U may be empty or an underscore; expand it
-  U=`sed -n -e '/^U = / s///p' < "$mf"`
+  U=`sed -n 's/^U = //p' < "$mf"`
   test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
   # We invoke sed twice because it is the simplest approach to
   # changing $(DEPDIR) to its actual value in the expansion.
-  for file in `sed -n -e '
+  for file in `sed -n '
     /^DEP_FILES = .*\\\\$/ {
       s/^DEP_FILES = //
Index: orxonox/trunk/configure.ac
===================================================================
--- orxonox/trunk/configure.ac	(revision 4053)
+++ orxonox/trunk/configure.ac	(revision 4054)
@@ -39,4 +39,5 @@
 #########################
 AC_PROG_CXX
+AC_PROG_RANLIB
 AC_HEADER_STDC
 
Index: orxonox/trunk/src/Makefile.am
===================================================================
--- orxonox/trunk/src/Makefile.am	(revision 4053)
+++ orxonox/trunk/src/Makefile.am	(revision 4054)
@@ -10,4 +10,5 @@
 AM_CXXFLAGS+=-I$(MAINSRCDIR)/lib/graphics/particles
 AM_CXXFLAGS+=-I$(MAINSRCDIR)/lib/gui
+AM_CXXFLAGS+=-I$(MAINSRCDIR)/lib/gui/gui
 AM_CXXFLAGS+=-I$(MAINSRCDIR)/lib/lang
 AM_CXXFLAGS+=-I$(MAINSRCDIR)/lib/util
@@ -23,11 +24,13 @@
 
 
-AM_LDFLAGS= $(MWINDOWS)
 
 #"-O3 -pedantic -fPIC -ffast-math -I/usr/X11R6/include"
 
 
-bin_PROGRAMS=orxonox orxonoxGui
-
+bin_PROGRAMS=orxonox 
+noinst_LIBRARIES = lib_orxonox_gui.a
+
+orxonox_DEPENDENCIES = lib_orxonox_gui.a
+orxonox_LDADD = lib_orxonox_gui.a
 orxonox_SOURCES= orxonox.cc \
 		 game_loader.cc \
@@ -147,29 +150,28 @@
 		 lib/math/curve.h \
 		 glmenu/glmenu_imagescreen.h \
-		 lib/gui/gui/orxonox_gui.h \
-	         lib/gui/gui/orxonox_gui_gtk.h \
-	         lib/gui/gui/orxonox_gui_element.h \
-	         lib/gui/gui/orxonox_gui_video.h \
-	         lib/gui/gui/orxonox_gui_audio.h \
-	         lib/gui/gui/orxonox_gui_exec.h \
-	         lib/gui/gui/orxonox_gui_flags.h \
-	         lib/gui/gui/orxonox_gui_banner.h \
-	         lib/gui/gui/orxonox_gui_keys.h \
-	         lib/gui/gui/orxonox_gui_update.h
-
-orxonoxGui_CPPFLAGS=$(GTK2_CFLAGS) $(GTHREAD_CFLAGS) $(CURL_CFLAGS) $(MSBITFIELDS)
-orxonoxGui_LDFLAGS=$(GTK2_LIBS) $(GTHREAD_LIBS) $(CURL_LIBS)
-
-orxonoxGui_SOURCES = lib/gui/gui/orxonox_gui_main.cc \
-                     lib/gui/gui/orxonox_gui.cc \
-	             lib/gui/gui/orxonox_gui_gtk.cc \
-	             lib/gui/gui/orxonox_gui_element.cc \
-	             lib/gui/gui/orxonox_gui_video.cc \
-	             lib/gui/gui/orxonox_gui_audio.cc \
-	             lib/gui/gui/orxonox_gui_exec.cc \
-	             lib/gui/gui/orxonox_gui_flags.cc \
-	             lib/gui/gui/orxonox_gui_banner.cc \
-	             lib/gui/gui/orxonox_gui_keys.cc \
-	             lib/gui/gui/orxonox_gui_update.cc
+		 lib/gui/gui/gui.h \
+	         lib/gui/gui/gui_gtk.h \
+	         lib/gui/gui/gui_element.h \
+	         lib/gui/gui/gui_video.h \
+	         lib/gui/gui/gui_audio.h \
+	         lib/gui/gui/gui_exec.h \
+	         lib/gui/gui/gui_flags.h \
+	         lib/gui/gui/gui_banner.h \
+	         lib/gui/gui/gui_keys.h \
+	         lib/gui/gui/gui_update.h
+
+lib_orxonox_gui_a_CPPFLAGS=$(GTK2_CFLAGS) $(GTHREAD_CFLAGS) $(CURL_CFLAGS) $(MSBITFIELDS)
+AM_LDFLAGS=$(GTK2_LIBS) $(GTHREAD_LIBS) $(CURL_LIBS)
+
+lib_orxonox_gui_a_SOURCES = lib/gui/gui/gui.cc \
+			    lib/gui/gui/gui_gtk.cc \
+	                    lib/gui/gui/gui_element.cc \
+	       	            lib/gui/gui/gui_video.cc \
+	                    lib/gui/gui/gui_audio.cc \
+	                    lib/gui/gui/gui_exec.cc \
+	                    lib/gui/gui/gui_flags.cc \
+	                    lib/gui/gui/gui_banner.cc \
+	                    lib/gui/gui/gui_keys.cc \
+	                    lib/gui/gui/gui_update.cc
 
 
Index: orxonox/trunk/src/Makefile.in
===================================================================
--- orxonox/trunk/src/Makefile.in	(revision 4053)
+++ orxonox/trunk/src/Makefile.in	(revision 4054)
@@ -16,5 +16,6 @@
 
 
-SOURCES = $(orxonox_SOURCES) $(orxonoxGui_SOURCES)
+
+SOURCES = $(lib_orxonox_gui_a_SOURCES) $(orxonox_SOURCES)
 
 srcdir = @srcdir@
@@ -39,5 +40,5 @@
 POST_UNINSTALL = :
 host_triplet = @host@
-bin_PROGRAMS = orxonox$(EXEEXT) orxonoxGui$(EXEEXT)
+bin_PROGRAMS = orxonox$(EXEEXT)
 subdir = src
 DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
@@ -50,4 +51,20 @@
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+AR = ar
+ARFLAGS = cru
+lib_orxonox_gui_a_AR = $(AR) $(ARFLAGS)
+lib_orxonox_gui_a_LIBADD =
+am_lib_orxonox_gui_a_OBJECTS = lib_orxonox_gui_a-gui.$(OBJEXT) \
+	lib_orxonox_gui_a-gui_gtk.$(OBJEXT) \
+	lib_orxonox_gui_a-gui_element.$(OBJEXT) \
+	lib_orxonox_gui_a-gui_video.$(OBJEXT) \
+	lib_orxonox_gui_a-gui_audio.$(OBJEXT) \
+	lib_orxonox_gui_a-gui_exec.$(OBJEXT) \
+	lib_orxonox_gui_a-gui_flags.$(OBJEXT) \
+	lib_orxonox_gui_a-gui_banner.$(OBJEXT) \
+	lib_orxonox_gui_a-gui_keys.$(OBJEXT) \
+	lib_orxonox_gui_a-gui_update.$(OBJEXT)
+lib_orxonox_gui_a_OBJECTS = $(am_lib_orxonox_gui_a_OBJECTS)
 am__installdirs = "$(DESTDIR)$(bindir)"
 binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
@@ -76,18 +93,4 @@
 	tinyxmlparser.$(OBJEXT)
 orxonox_OBJECTS = $(am_orxonox_OBJECTS)
-orxonox_LDADD = $(LDADD)
-am_orxonoxGui_OBJECTS = orxonoxGui-orxonox_gui_main.$(OBJEXT) \
-	orxonoxGui-orxonox_gui.$(OBJEXT) \
-	orxonoxGui-orxonox_gui_gtk.$(OBJEXT) \
-	orxonoxGui-orxonox_gui_element.$(OBJEXT) \
-	orxonoxGui-orxonox_gui_video.$(OBJEXT) \
-	orxonoxGui-orxonox_gui_audio.$(OBJEXT) \
-	orxonoxGui-orxonox_gui_exec.$(OBJEXT) \
-	orxonoxGui-orxonox_gui_flags.$(OBJEXT) \
-	orxonoxGui-orxonox_gui_banner.$(OBJEXT) \
-	orxonoxGui-orxonox_gui_keys.$(OBJEXT) \
-	orxonoxGui-orxonox_gui_update.$(OBJEXT)
-orxonoxGui_OBJECTS = $(am_orxonoxGui_OBJECTS)
-orxonoxGui_LDADD = $(LDADD)
 DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/depcomp
@@ -109,20 +112,18 @@
 @AMDEP_TRUE@	./$(DEPDIR)/helper_parent.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/ini_parser.Po ./$(DEPDIR)/keynames.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/lib_orxonox_gui_a-gui.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/lib_orxonox_gui_a-gui_audio.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/lib_orxonox_gui_a-gui_banner.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/lib_orxonox_gui_a-gui_element.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/lib_orxonox_gui_a-gui_exec.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/lib_orxonox_gui_a-gui_flags.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/lib_orxonox_gui_a-gui_gtk.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/lib_orxonox_gui_a-gui_keys.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/lib_orxonox_gui_a-gui_update.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/lib_orxonox_gui_a-gui_video.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/light.Po ./$(DEPDIR)/list.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/material.Po ./$(DEPDIR)/model.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/null_parent.Po ./$(DEPDIR)/objModel.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/orxonox.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/orxonoxGui-orxonox_gui.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/orxonoxGui-orxonox_gui_audio.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/orxonoxGui-orxonox_gui_banner.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/orxonoxGui-orxonox_gui_element.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/orxonoxGui-orxonox_gui_exec.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/orxonoxGui-orxonox_gui_flags.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/orxonoxGui-orxonox_gui_gtk.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/orxonoxGui-orxonox_gui_keys.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/orxonoxGui-orxonox_gui_main.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/orxonoxGui-orxonox_gui_update.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/orxonoxGui-orxonox_gui_video.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/p_node.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/orxonox.Po ./$(DEPDIR)/p_node.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/particle_emitter.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/particle_engine.Po \
@@ -149,6 +150,6 @@
 CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
 	-o $@
-SOURCES = $(orxonox_SOURCES) $(orxonoxGui_SOURCES)
-DIST_SOURCES = $(orxonox_SOURCES) $(orxonoxGui_SOURCES)
+SOURCES = $(lib_orxonox_gui_a_SOURCES) $(orxonox_SOURCES)
+DIST_SOURCES = $(lib_orxonox_gui_a_SOURCES) $(orxonox_SOURCES)
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	html-recursive info-recursive install-data-recursive \
@@ -223,4 +224,5 @@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -231,4 +233,5 @@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
+ac_ct_RANLIB = @ac_ct_RANLIB@
 ac_ct_STRIP = @ac_ct_STRIP@
 am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
@@ -272,6 +275,8 @@
 target_vendor = @target_vendor@
 MAINSRCDIR = .
-AM_CXXFLAGS = -I$(MAINSRCDIR) -I$(MAINSRCDIR)/world_entities -I$(MAINSRCDIR)/story_entities -I$(MAINSRCDIR)/lib -I$(MAINSRCDIR)/lib/coord -I$(MAINSRCDIR)/lib/data -I$(MAINSRCDIR)/lib/graphics -I$(MAINSRCDIR)/lib/graphics/importer -I$(MAINSRCDIR)/lib/graphics/particles -I$(MAINSRCDIR)/lib/gui -I$(MAINSRCDIR)/lib/lang -I$(MAINSRCDIR)/lib/util -I$(MAINSRCDIR)/lib/math -I$(MAINSRCDIR)/defs -I$(MAINSRCDIR)/font -I$(MAINSRCDIR)/network -I$(MAINSRCDIR)/glmenu -I$(MAINSRCDIR)/ai -I$(MAINSRCDIR)/util -I$(MAINSRCDIR)/util/animation -I$(MAINSRCDIR)/util/common
-AM_LDFLAGS = $(MWINDOWS)
+AM_CXXFLAGS = -I$(MAINSRCDIR) -I$(MAINSRCDIR)/world_entities -I$(MAINSRCDIR)/story_entities -I$(MAINSRCDIR)/lib -I$(MAINSRCDIR)/lib/coord -I$(MAINSRCDIR)/lib/data -I$(MAINSRCDIR)/lib/graphics -I$(MAINSRCDIR)/lib/graphics/importer -I$(MAINSRCDIR)/lib/graphics/particles -I$(MAINSRCDIR)/lib/gui -I$(MAINSRCDIR)/lib/gui/gui -I$(MAINSRCDIR)/lib/lang -I$(MAINSRCDIR)/lib/util -I$(MAINSRCDIR)/lib/math -I$(MAINSRCDIR)/defs -I$(MAINSRCDIR)/font -I$(MAINSRCDIR)/network -I$(MAINSRCDIR)/glmenu -I$(MAINSRCDIR)/ai -I$(MAINSRCDIR)/util -I$(MAINSRCDIR)/util/animation -I$(MAINSRCDIR)/util/common
+noinst_LIBRARIES = lib_orxonox_gui.a
+orxonox_DEPENDENCIES = lib_orxonox_gui.a
+orxonox_LDADD = lib_orxonox_gui.a
 orxonox_SOURCES = orxonox.cc \
 		 game_loader.cc \
@@ -391,28 +396,27 @@
 		 lib/math/curve.h \
 		 glmenu/glmenu_imagescreen.h \
-		 lib/gui/gui/orxonox_gui.h \
-	         lib/gui/gui/orxonox_gui_gtk.h \
-	         lib/gui/gui/orxonox_gui_element.h \
-	         lib/gui/gui/orxonox_gui_video.h \
-	         lib/gui/gui/orxonox_gui_audio.h \
-	         lib/gui/gui/orxonox_gui_exec.h \
-	         lib/gui/gui/orxonox_gui_flags.h \
-	         lib/gui/gui/orxonox_gui_banner.h \
-	         lib/gui/gui/orxonox_gui_keys.h \
-	         lib/gui/gui/orxonox_gui_update.h
-
-orxonoxGui_CPPFLAGS = $(GTK2_CFLAGS) $(GTHREAD_CFLAGS) $(CURL_CFLAGS) $(MSBITFIELDS)
-orxonoxGui_LDFLAGS = $(GTK2_LIBS) $(GTHREAD_LIBS) $(CURL_LIBS)
-orxonoxGui_SOURCES = lib/gui/gui/orxonox_gui_main.cc \
-                     lib/gui/gui/orxonox_gui.cc \
-	             lib/gui/gui/orxonox_gui_gtk.cc \
-	             lib/gui/gui/orxonox_gui_element.cc \
-	             lib/gui/gui/orxonox_gui_video.cc \
-	             lib/gui/gui/orxonox_gui_audio.cc \
-	             lib/gui/gui/orxonox_gui_exec.cc \
-	             lib/gui/gui/orxonox_gui_flags.cc \
-	             lib/gui/gui/orxonox_gui_banner.cc \
-	             lib/gui/gui/orxonox_gui_keys.cc \
-	             lib/gui/gui/orxonox_gui_update.cc
+		 lib/gui/gui/gui.h \
+	         lib/gui/gui/gui_gtk.h \
+	         lib/gui/gui/gui_element.h \
+	         lib/gui/gui/gui_video.h \
+	         lib/gui/gui/gui_audio.h \
+	         lib/gui/gui/gui_exec.h \
+	         lib/gui/gui/gui_flags.h \
+	         lib/gui/gui/gui_banner.h \
+	         lib/gui/gui/gui_keys.h \
+	         lib/gui/gui/gui_update.h
+
+lib_orxonox_gui_a_CPPFLAGS = $(GTK2_CFLAGS) $(GTHREAD_CFLAGS) $(CURL_CFLAGS) $(MSBITFIELDS)
+AM_LDFLAGS = $(GTK2_LIBS) $(GTHREAD_LIBS) $(CURL_LIBS)
+lib_orxonox_gui_a_SOURCES = lib/gui/gui/gui.cc \
+			    lib/gui/gui/gui_gtk.cc \
+	                    lib/gui/gui/gui_element.cc \
+	       	            lib/gui/gui/gui_video.cc \
+	                    lib/gui/gui/gui_audio.cc \
+	                    lib/gui/gui/gui_exec.cc \
+	                    lib/gui/gui/gui_flags.cc \
+	                    lib/gui/gui/gui_banner.cc \
+	                    lib/gui/gui/gui_keys.cc \
+	                    lib/gui/gui/gui_update.cc
 
 EXTRA_DIST = orxonox.conf \
@@ -462,4 +466,11 @@
 $(ACLOCAL_M4):  $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-noinstLIBRARIES:
+	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+lib_orxonox_gui.a: $(lib_orxonox_gui_a_OBJECTS) $(lib_orxonox_gui_a_DEPENDENCIES) 
+	-rm -f lib_orxonox_gui.a
+	$(lib_orxonox_gui_a_AR) lib_orxonox_gui.a $(lib_orxonox_gui_a_OBJECTS) $(lib_orxonox_gui_a_LIBADD)
+	$(RANLIB) lib_orxonox_gui.a
 install-binPROGRAMS: $(bin_PROGRAMS)
 	@$(NORMAL_INSTALL)
@@ -488,7 +499,4 @@
 	@rm -f orxonox$(EXEEXT)
 	$(CXXLINK) $(orxonox_LDFLAGS) $(orxonox_OBJECTS) $(orxonox_LDADD) $(LIBS)
-orxonoxGui$(EXEEXT): $(orxonoxGui_OBJECTS) $(orxonoxGui_DEPENDENCIES) 
-	@rm -f orxonoxGui$(EXEEXT)
-	$(CXXLINK) $(orxonoxGui_LDFLAGS) $(orxonoxGui_OBJECTS) $(orxonoxGui_LDADD) $(LIBS)
 
 mostlyclean-compile:
@@ -520,4 +528,14 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ini_parser.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keynames.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_orxonox_gui_a-gui.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_orxonox_gui_a-gui_audio.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_orxonox_gui_a-gui_banner.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_orxonox_gui_a-gui_element.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_orxonox_gui_a-gui_exec.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_orxonox_gui_a-gui_flags.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_orxonox_gui_a-gui_gtk.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_orxonox_gui_a-gui_keys.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_orxonox_gui_a-gui_update.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_orxonox_gui_a-gui_video.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/light.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list.Po@am__quote@
@@ -527,15 +545,4 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/objModel.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonoxGui-orxonox_gui.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonoxGui-orxonox_gui_audio.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonoxGui-orxonox_gui_banner.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonoxGui-orxonox_gui_element.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonoxGui-orxonox_gui_exec.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonoxGui-orxonox_gui_flags.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonoxGui-orxonox_gui_gtk.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonoxGui-orxonox_gui_keys.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonoxGui-orxonox_gui_main.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonoxGui-orxonox_gui_update.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonoxGui-orxonox_gui_video.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/p_node.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/particle_emitter.Po@am__quote@
@@ -582,4 +589,164 @@
 @am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
+lib_orxonox_gui_a-gui.o: lib/gui/gui/gui.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT lib_orxonox_gui_a-gui.o -MD -MP -MF "$(DEPDIR)/lib_orxonox_gui_a-gui.Tpo" -c -o lib_orxonox_gui_a-gui.o `test -f 'lib/gui/gui/gui.cc' || echo '$(srcdir)/'`lib/gui/gui/gui.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/lib_orxonox_gui_a-gui.Tpo" "$(DEPDIR)/lib_orxonox_gui_a-gui.Po"; else rm -f "$(DEPDIR)/lib_orxonox_gui_a-gui.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui.cc' object='lib_orxonox_gui_a-gui.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/lib_orxonox_gui_a-gui.Po' tmpdepfile='$(DEPDIR)/lib_orxonox_gui_a-gui.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lib_orxonox_gui_a-gui.o `test -f 'lib/gui/gui/gui.cc' || echo '$(srcdir)/'`lib/gui/gui/gui.cc
+
+lib_orxonox_gui_a-gui.obj: lib/gui/gui/gui.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT lib_orxonox_gui_a-gui.obj -MD -MP -MF "$(DEPDIR)/lib_orxonox_gui_a-gui.Tpo" -c -o lib_orxonox_gui_a-gui.obj `if test -f 'lib/gui/gui/gui.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/lib_orxonox_gui_a-gui.Tpo" "$(DEPDIR)/lib_orxonox_gui_a-gui.Po"; else rm -f "$(DEPDIR)/lib_orxonox_gui_a-gui.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui.cc' object='lib_orxonox_gui_a-gui.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/lib_orxonox_gui_a-gui.Po' tmpdepfile='$(DEPDIR)/lib_orxonox_gui_a-gui.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lib_orxonox_gui_a-gui.obj `if test -f 'lib/gui/gui/gui.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui.cc'; fi`
+
+lib_orxonox_gui_a-gui_gtk.o: lib/gui/gui/gui_gtk.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT lib_orxonox_gui_a-gui_gtk.o -MD -MP -MF "$(DEPDIR)/lib_orxonox_gui_a-gui_gtk.Tpo" -c -o lib_orxonox_gui_a-gui_gtk.o `test -f 'lib/gui/gui/gui_gtk.cc' || echo '$(srcdir)/'`lib/gui/gui/gui_gtk.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/lib_orxonox_gui_a-gui_gtk.Tpo" "$(DEPDIR)/lib_orxonox_gui_a-gui_gtk.Po"; else rm -f "$(DEPDIR)/lib_orxonox_gui_a-gui_gtk.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui_gtk.cc' object='lib_orxonox_gui_a-gui_gtk.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/lib_orxonox_gui_a-gui_gtk.Po' tmpdepfile='$(DEPDIR)/lib_orxonox_gui_a-gui_gtk.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lib_orxonox_gui_a-gui_gtk.o `test -f 'lib/gui/gui/gui_gtk.cc' || echo '$(srcdir)/'`lib/gui/gui/gui_gtk.cc
+
+lib_orxonox_gui_a-gui_gtk.obj: lib/gui/gui/gui_gtk.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT lib_orxonox_gui_a-gui_gtk.obj -MD -MP -MF "$(DEPDIR)/lib_orxonox_gui_a-gui_gtk.Tpo" -c -o lib_orxonox_gui_a-gui_gtk.obj `if test -f 'lib/gui/gui/gui_gtk.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui_gtk.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui_gtk.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/lib_orxonox_gui_a-gui_gtk.Tpo" "$(DEPDIR)/lib_orxonox_gui_a-gui_gtk.Po"; else rm -f "$(DEPDIR)/lib_orxonox_gui_a-gui_gtk.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui_gtk.cc' object='lib_orxonox_gui_a-gui_gtk.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/lib_orxonox_gui_a-gui_gtk.Po' tmpdepfile='$(DEPDIR)/lib_orxonox_gui_a-gui_gtk.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lib_orxonox_gui_a-gui_gtk.obj `if test -f 'lib/gui/gui/gui_gtk.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui_gtk.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui_gtk.cc'; fi`
+
+lib_orxonox_gui_a-gui_element.o: lib/gui/gui/gui_element.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT lib_orxonox_gui_a-gui_element.o -MD -MP -MF "$(DEPDIR)/lib_orxonox_gui_a-gui_element.Tpo" -c -o lib_orxonox_gui_a-gui_element.o `test -f 'lib/gui/gui/gui_element.cc' || echo '$(srcdir)/'`lib/gui/gui/gui_element.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/lib_orxonox_gui_a-gui_element.Tpo" "$(DEPDIR)/lib_orxonox_gui_a-gui_element.Po"; else rm -f "$(DEPDIR)/lib_orxonox_gui_a-gui_element.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui_element.cc' object='lib_orxonox_gui_a-gui_element.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/lib_orxonox_gui_a-gui_element.Po' tmpdepfile='$(DEPDIR)/lib_orxonox_gui_a-gui_element.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lib_orxonox_gui_a-gui_element.o `test -f 'lib/gui/gui/gui_element.cc' || echo '$(srcdir)/'`lib/gui/gui/gui_element.cc
+
+lib_orxonox_gui_a-gui_element.obj: lib/gui/gui/gui_element.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT lib_orxonox_gui_a-gui_element.obj -MD -MP -MF "$(DEPDIR)/lib_orxonox_gui_a-gui_element.Tpo" -c -o lib_orxonox_gui_a-gui_element.obj `if test -f 'lib/gui/gui/gui_element.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui_element.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui_element.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/lib_orxonox_gui_a-gui_element.Tpo" "$(DEPDIR)/lib_orxonox_gui_a-gui_element.Po"; else rm -f "$(DEPDIR)/lib_orxonox_gui_a-gui_element.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui_element.cc' object='lib_orxonox_gui_a-gui_element.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/lib_orxonox_gui_a-gui_element.Po' tmpdepfile='$(DEPDIR)/lib_orxonox_gui_a-gui_element.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lib_orxonox_gui_a-gui_element.obj `if test -f 'lib/gui/gui/gui_element.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui_element.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui_element.cc'; fi`
+
+lib_orxonox_gui_a-gui_video.o: lib/gui/gui/gui_video.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT lib_orxonox_gui_a-gui_video.o -MD -MP -MF "$(DEPDIR)/lib_orxonox_gui_a-gui_video.Tpo" -c -o lib_orxonox_gui_a-gui_video.o `test -f 'lib/gui/gui/gui_video.cc' || echo '$(srcdir)/'`lib/gui/gui/gui_video.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/lib_orxonox_gui_a-gui_video.Tpo" "$(DEPDIR)/lib_orxonox_gui_a-gui_video.Po"; else rm -f "$(DEPDIR)/lib_orxonox_gui_a-gui_video.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui_video.cc' object='lib_orxonox_gui_a-gui_video.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/lib_orxonox_gui_a-gui_video.Po' tmpdepfile='$(DEPDIR)/lib_orxonox_gui_a-gui_video.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lib_orxonox_gui_a-gui_video.o `test -f 'lib/gui/gui/gui_video.cc' || echo '$(srcdir)/'`lib/gui/gui/gui_video.cc
+
+lib_orxonox_gui_a-gui_video.obj: lib/gui/gui/gui_video.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT lib_orxonox_gui_a-gui_video.obj -MD -MP -MF "$(DEPDIR)/lib_orxonox_gui_a-gui_video.Tpo" -c -o lib_orxonox_gui_a-gui_video.obj `if test -f 'lib/gui/gui/gui_video.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui_video.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui_video.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/lib_orxonox_gui_a-gui_video.Tpo" "$(DEPDIR)/lib_orxonox_gui_a-gui_video.Po"; else rm -f "$(DEPDIR)/lib_orxonox_gui_a-gui_video.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui_video.cc' object='lib_orxonox_gui_a-gui_video.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/lib_orxonox_gui_a-gui_video.Po' tmpdepfile='$(DEPDIR)/lib_orxonox_gui_a-gui_video.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lib_orxonox_gui_a-gui_video.obj `if test -f 'lib/gui/gui/gui_video.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui_video.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui_video.cc'; fi`
+
+lib_orxonox_gui_a-gui_audio.o: lib/gui/gui/gui_audio.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT lib_orxonox_gui_a-gui_audio.o -MD -MP -MF "$(DEPDIR)/lib_orxonox_gui_a-gui_audio.Tpo" -c -o lib_orxonox_gui_a-gui_audio.o `test -f 'lib/gui/gui/gui_audio.cc' || echo '$(srcdir)/'`lib/gui/gui/gui_audio.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/lib_orxonox_gui_a-gui_audio.Tpo" "$(DEPDIR)/lib_orxonox_gui_a-gui_audio.Po"; else rm -f "$(DEPDIR)/lib_orxonox_gui_a-gui_audio.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui_audio.cc' object='lib_orxonox_gui_a-gui_audio.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/lib_orxonox_gui_a-gui_audio.Po' tmpdepfile='$(DEPDIR)/lib_orxonox_gui_a-gui_audio.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lib_orxonox_gui_a-gui_audio.o `test -f 'lib/gui/gui/gui_audio.cc' || echo '$(srcdir)/'`lib/gui/gui/gui_audio.cc
+
+lib_orxonox_gui_a-gui_audio.obj: lib/gui/gui/gui_audio.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT lib_orxonox_gui_a-gui_audio.obj -MD -MP -MF "$(DEPDIR)/lib_orxonox_gui_a-gui_audio.Tpo" -c -o lib_orxonox_gui_a-gui_audio.obj `if test -f 'lib/gui/gui/gui_audio.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui_audio.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui_audio.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/lib_orxonox_gui_a-gui_audio.Tpo" "$(DEPDIR)/lib_orxonox_gui_a-gui_audio.Po"; else rm -f "$(DEPDIR)/lib_orxonox_gui_a-gui_audio.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui_audio.cc' object='lib_orxonox_gui_a-gui_audio.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/lib_orxonox_gui_a-gui_audio.Po' tmpdepfile='$(DEPDIR)/lib_orxonox_gui_a-gui_audio.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lib_orxonox_gui_a-gui_audio.obj `if test -f 'lib/gui/gui/gui_audio.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui_audio.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui_audio.cc'; fi`
+
+lib_orxonox_gui_a-gui_exec.o: lib/gui/gui/gui_exec.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT lib_orxonox_gui_a-gui_exec.o -MD -MP -MF "$(DEPDIR)/lib_orxonox_gui_a-gui_exec.Tpo" -c -o lib_orxonox_gui_a-gui_exec.o `test -f 'lib/gui/gui/gui_exec.cc' || echo '$(srcdir)/'`lib/gui/gui/gui_exec.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/lib_orxonox_gui_a-gui_exec.Tpo" "$(DEPDIR)/lib_orxonox_gui_a-gui_exec.Po"; else rm -f "$(DEPDIR)/lib_orxonox_gui_a-gui_exec.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui_exec.cc' object='lib_orxonox_gui_a-gui_exec.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/lib_orxonox_gui_a-gui_exec.Po' tmpdepfile='$(DEPDIR)/lib_orxonox_gui_a-gui_exec.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lib_orxonox_gui_a-gui_exec.o `test -f 'lib/gui/gui/gui_exec.cc' || echo '$(srcdir)/'`lib/gui/gui/gui_exec.cc
+
+lib_orxonox_gui_a-gui_exec.obj: lib/gui/gui/gui_exec.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT lib_orxonox_gui_a-gui_exec.obj -MD -MP -MF "$(DEPDIR)/lib_orxonox_gui_a-gui_exec.Tpo" -c -o lib_orxonox_gui_a-gui_exec.obj `if test -f 'lib/gui/gui/gui_exec.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui_exec.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui_exec.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/lib_orxonox_gui_a-gui_exec.Tpo" "$(DEPDIR)/lib_orxonox_gui_a-gui_exec.Po"; else rm -f "$(DEPDIR)/lib_orxonox_gui_a-gui_exec.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui_exec.cc' object='lib_orxonox_gui_a-gui_exec.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/lib_orxonox_gui_a-gui_exec.Po' tmpdepfile='$(DEPDIR)/lib_orxonox_gui_a-gui_exec.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lib_orxonox_gui_a-gui_exec.obj `if test -f 'lib/gui/gui/gui_exec.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui_exec.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui_exec.cc'; fi`
+
+lib_orxonox_gui_a-gui_flags.o: lib/gui/gui/gui_flags.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT lib_orxonox_gui_a-gui_flags.o -MD -MP -MF "$(DEPDIR)/lib_orxonox_gui_a-gui_flags.Tpo" -c -o lib_orxonox_gui_a-gui_flags.o `test -f 'lib/gui/gui/gui_flags.cc' || echo '$(srcdir)/'`lib/gui/gui/gui_flags.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/lib_orxonox_gui_a-gui_flags.Tpo" "$(DEPDIR)/lib_orxonox_gui_a-gui_flags.Po"; else rm -f "$(DEPDIR)/lib_orxonox_gui_a-gui_flags.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui_flags.cc' object='lib_orxonox_gui_a-gui_flags.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/lib_orxonox_gui_a-gui_flags.Po' tmpdepfile='$(DEPDIR)/lib_orxonox_gui_a-gui_flags.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lib_orxonox_gui_a-gui_flags.o `test -f 'lib/gui/gui/gui_flags.cc' || echo '$(srcdir)/'`lib/gui/gui/gui_flags.cc
+
+lib_orxonox_gui_a-gui_flags.obj: lib/gui/gui/gui_flags.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT lib_orxonox_gui_a-gui_flags.obj -MD -MP -MF "$(DEPDIR)/lib_orxonox_gui_a-gui_flags.Tpo" -c -o lib_orxonox_gui_a-gui_flags.obj `if test -f 'lib/gui/gui/gui_flags.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui_flags.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui_flags.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/lib_orxonox_gui_a-gui_flags.Tpo" "$(DEPDIR)/lib_orxonox_gui_a-gui_flags.Po"; else rm -f "$(DEPDIR)/lib_orxonox_gui_a-gui_flags.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui_flags.cc' object='lib_orxonox_gui_a-gui_flags.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/lib_orxonox_gui_a-gui_flags.Po' tmpdepfile='$(DEPDIR)/lib_orxonox_gui_a-gui_flags.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lib_orxonox_gui_a-gui_flags.obj `if test -f 'lib/gui/gui/gui_flags.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui_flags.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui_flags.cc'; fi`
+
+lib_orxonox_gui_a-gui_banner.o: lib/gui/gui/gui_banner.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT lib_orxonox_gui_a-gui_banner.o -MD -MP -MF "$(DEPDIR)/lib_orxonox_gui_a-gui_banner.Tpo" -c -o lib_orxonox_gui_a-gui_banner.o `test -f 'lib/gui/gui/gui_banner.cc' || echo '$(srcdir)/'`lib/gui/gui/gui_banner.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/lib_orxonox_gui_a-gui_banner.Tpo" "$(DEPDIR)/lib_orxonox_gui_a-gui_banner.Po"; else rm -f "$(DEPDIR)/lib_orxonox_gui_a-gui_banner.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui_banner.cc' object='lib_orxonox_gui_a-gui_banner.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/lib_orxonox_gui_a-gui_banner.Po' tmpdepfile='$(DEPDIR)/lib_orxonox_gui_a-gui_banner.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lib_orxonox_gui_a-gui_banner.o `test -f 'lib/gui/gui/gui_banner.cc' || echo '$(srcdir)/'`lib/gui/gui/gui_banner.cc
+
+lib_orxonox_gui_a-gui_banner.obj: lib/gui/gui/gui_banner.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT lib_orxonox_gui_a-gui_banner.obj -MD -MP -MF "$(DEPDIR)/lib_orxonox_gui_a-gui_banner.Tpo" -c -o lib_orxonox_gui_a-gui_banner.obj `if test -f 'lib/gui/gui/gui_banner.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui_banner.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui_banner.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/lib_orxonox_gui_a-gui_banner.Tpo" "$(DEPDIR)/lib_orxonox_gui_a-gui_banner.Po"; else rm -f "$(DEPDIR)/lib_orxonox_gui_a-gui_banner.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui_banner.cc' object='lib_orxonox_gui_a-gui_banner.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/lib_orxonox_gui_a-gui_banner.Po' tmpdepfile='$(DEPDIR)/lib_orxonox_gui_a-gui_banner.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lib_orxonox_gui_a-gui_banner.obj `if test -f 'lib/gui/gui/gui_banner.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui_banner.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui_banner.cc'; fi`
+
+lib_orxonox_gui_a-gui_keys.o: lib/gui/gui/gui_keys.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT lib_orxonox_gui_a-gui_keys.o -MD -MP -MF "$(DEPDIR)/lib_orxonox_gui_a-gui_keys.Tpo" -c -o lib_orxonox_gui_a-gui_keys.o `test -f 'lib/gui/gui/gui_keys.cc' || echo '$(srcdir)/'`lib/gui/gui/gui_keys.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/lib_orxonox_gui_a-gui_keys.Tpo" "$(DEPDIR)/lib_orxonox_gui_a-gui_keys.Po"; else rm -f "$(DEPDIR)/lib_orxonox_gui_a-gui_keys.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui_keys.cc' object='lib_orxonox_gui_a-gui_keys.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/lib_orxonox_gui_a-gui_keys.Po' tmpdepfile='$(DEPDIR)/lib_orxonox_gui_a-gui_keys.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lib_orxonox_gui_a-gui_keys.o `test -f 'lib/gui/gui/gui_keys.cc' || echo '$(srcdir)/'`lib/gui/gui/gui_keys.cc
+
+lib_orxonox_gui_a-gui_keys.obj: lib/gui/gui/gui_keys.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT lib_orxonox_gui_a-gui_keys.obj -MD -MP -MF "$(DEPDIR)/lib_orxonox_gui_a-gui_keys.Tpo" -c -o lib_orxonox_gui_a-gui_keys.obj `if test -f 'lib/gui/gui/gui_keys.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui_keys.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui_keys.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/lib_orxonox_gui_a-gui_keys.Tpo" "$(DEPDIR)/lib_orxonox_gui_a-gui_keys.Po"; else rm -f "$(DEPDIR)/lib_orxonox_gui_a-gui_keys.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui_keys.cc' object='lib_orxonox_gui_a-gui_keys.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/lib_orxonox_gui_a-gui_keys.Po' tmpdepfile='$(DEPDIR)/lib_orxonox_gui_a-gui_keys.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lib_orxonox_gui_a-gui_keys.obj `if test -f 'lib/gui/gui/gui_keys.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui_keys.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui_keys.cc'; fi`
+
+lib_orxonox_gui_a-gui_update.o: lib/gui/gui/gui_update.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT lib_orxonox_gui_a-gui_update.o -MD -MP -MF "$(DEPDIR)/lib_orxonox_gui_a-gui_update.Tpo" -c -o lib_orxonox_gui_a-gui_update.o `test -f 'lib/gui/gui/gui_update.cc' || echo '$(srcdir)/'`lib/gui/gui/gui_update.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/lib_orxonox_gui_a-gui_update.Tpo" "$(DEPDIR)/lib_orxonox_gui_a-gui_update.Po"; else rm -f "$(DEPDIR)/lib_orxonox_gui_a-gui_update.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui_update.cc' object='lib_orxonox_gui_a-gui_update.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/lib_orxonox_gui_a-gui_update.Po' tmpdepfile='$(DEPDIR)/lib_orxonox_gui_a-gui_update.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lib_orxonox_gui_a-gui_update.o `test -f 'lib/gui/gui/gui_update.cc' || echo '$(srcdir)/'`lib/gui/gui/gui_update.cc
+
+lib_orxonox_gui_a-gui_update.obj: lib/gui/gui/gui_update.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT lib_orxonox_gui_a-gui_update.obj -MD -MP -MF "$(DEPDIR)/lib_orxonox_gui_a-gui_update.Tpo" -c -o lib_orxonox_gui_a-gui_update.obj `if test -f 'lib/gui/gui/gui_update.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui_update.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui_update.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/lib_orxonox_gui_a-gui_update.Tpo" "$(DEPDIR)/lib_orxonox_gui_a-gui_update.Po"; else rm -f "$(DEPDIR)/lib_orxonox_gui_a-gui_update.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui_update.cc' object='lib_orxonox_gui_a-gui_update.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/lib_orxonox_gui_a-gui_update.Po' tmpdepfile='$(DEPDIR)/lib_orxonox_gui_a-gui_update.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_orxonox_gui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o lib_orxonox_gui_a-gui_update.obj `if test -f 'lib/gui/gui/gui_update.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui_update.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui_update.cc'; fi`
+
 camera.o: world_entities/camera.cc
 @am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT camera.o -MD -MP -MF "$(DEPDIR)/camera.Tpo" -c -o camera.o `test -f 'world_entities/camera.cc' || echo '$(srcdir)/'`world_entities/camera.cc; \
@@ -1349,180 +1516,4 @@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tinyxmlparser.obj `if test -f 'lib/xmlparser/tinyxmlparser.cc'; then $(CYGPATH_W) 'lib/xmlparser/tinyxmlparser.cc'; else $(CYGPATH_W) '$(srcdir)/lib/xmlparser/tinyxmlparser.cc'; fi`
-
-orxonoxGui-orxonox_gui_main.o: lib/gui/gui/orxonox_gui_main.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orxonoxGui-orxonox_gui_main.o -MD -MP -MF "$(DEPDIR)/orxonoxGui-orxonox_gui_main.Tpo" -c -o orxonoxGui-orxonox_gui_main.o `test -f 'lib/gui/gui/orxonox_gui_main.cc' || echo '$(srcdir)/'`lib/gui/gui/orxonox_gui_main.cc; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/orxonoxGui-orxonox_gui_main.Tpo" "$(DEPDIR)/orxonoxGui-orxonox_gui_main.Po"; else rm -f "$(DEPDIR)/orxonoxGui-orxonox_gui_main.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/orxonox_gui_main.cc' object='orxonoxGui-orxonox_gui_main.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/orxonoxGui-orxonox_gui_main.Po' tmpdepfile='$(DEPDIR)/orxonoxGui-orxonox_gui_main.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orxonoxGui-orxonox_gui_main.o `test -f 'lib/gui/gui/orxonox_gui_main.cc' || echo '$(srcdir)/'`lib/gui/gui/orxonox_gui_main.cc
-
-orxonoxGui-orxonox_gui_main.obj: lib/gui/gui/orxonox_gui_main.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orxonoxGui-orxonox_gui_main.obj -MD -MP -MF "$(DEPDIR)/orxonoxGui-orxonox_gui_main.Tpo" -c -o orxonoxGui-orxonox_gui_main.obj `if test -f 'lib/gui/gui/orxonox_gui_main.cc'; then $(CYGPATH_W) 'lib/gui/gui/orxonox_gui_main.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/orxonox_gui_main.cc'; fi`; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/orxonoxGui-orxonox_gui_main.Tpo" "$(DEPDIR)/orxonoxGui-orxonox_gui_main.Po"; else rm -f "$(DEPDIR)/orxonoxGui-orxonox_gui_main.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/orxonox_gui_main.cc' object='orxonoxGui-orxonox_gui_main.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/orxonoxGui-orxonox_gui_main.Po' tmpdepfile='$(DEPDIR)/orxonoxGui-orxonox_gui_main.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orxonoxGui-orxonox_gui_main.obj `if test -f 'lib/gui/gui/orxonox_gui_main.cc'; then $(CYGPATH_W) 'lib/gui/gui/orxonox_gui_main.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/orxonox_gui_main.cc'; fi`
-
-orxonoxGui-orxonox_gui.o: lib/gui/gui/orxonox_gui.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orxonoxGui-orxonox_gui.o -MD -MP -MF "$(DEPDIR)/orxonoxGui-orxonox_gui.Tpo" -c -o orxonoxGui-orxonox_gui.o `test -f 'lib/gui/gui/orxonox_gui.cc' || echo '$(srcdir)/'`lib/gui/gui/orxonox_gui.cc; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/orxonoxGui-orxonox_gui.Tpo" "$(DEPDIR)/orxonoxGui-orxonox_gui.Po"; else rm -f "$(DEPDIR)/orxonoxGui-orxonox_gui.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/orxonox_gui.cc' object='orxonoxGui-orxonox_gui.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/orxonoxGui-orxonox_gui.Po' tmpdepfile='$(DEPDIR)/orxonoxGui-orxonox_gui.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orxonoxGui-orxonox_gui.o `test -f 'lib/gui/gui/orxonox_gui.cc' || echo '$(srcdir)/'`lib/gui/gui/orxonox_gui.cc
-
-orxonoxGui-orxonox_gui.obj: lib/gui/gui/orxonox_gui.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orxonoxGui-orxonox_gui.obj -MD -MP -MF "$(DEPDIR)/orxonoxGui-orxonox_gui.Tpo" -c -o orxonoxGui-orxonox_gui.obj `if test -f 'lib/gui/gui/orxonox_gui.cc'; then $(CYGPATH_W) 'lib/gui/gui/orxonox_gui.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/orxonox_gui.cc'; fi`; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/orxonoxGui-orxonox_gui.Tpo" "$(DEPDIR)/orxonoxGui-orxonox_gui.Po"; else rm -f "$(DEPDIR)/orxonoxGui-orxonox_gui.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/orxonox_gui.cc' object='orxonoxGui-orxonox_gui.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/orxonoxGui-orxonox_gui.Po' tmpdepfile='$(DEPDIR)/orxonoxGui-orxonox_gui.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orxonoxGui-orxonox_gui.obj `if test -f 'lib/gui/gui/orxonox_gui.cc'; then $(CYGPATH_W) 'lib/gui/gui/orxonox_gui.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/orxonox_gui.cc'; fi`
-
-orxonoxGui-orxonox_gui_gtk.o: lib/gui/gui/orxonox_gui_gtk.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orxonoxGui-orxonox_gui_gtk.o -MD -MP -MF "$(DEPDIR)/orxonoxGui-orxonox_gui_gtk.Tpo" -c -o orxonoxGui-orxonox_gui_gtk.o `test -f 'lib/gui/gui/orxonox_gui_gtk.cc' || echo '$(srcdir)/'`lib/gui/gui/orxonox_gui_gtk.cc; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/orxonoxGui-orxonox_gui_gtk.Tpo" "$(DEPDIR)/orxonoxGui-orxonox_gui_gtk.Po"; else rm -f "$(DEPDIR)/orxonoxGui-orxonox_gui_gtk.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/orxonox_gui_gtk.cc' object='orxonoxGui-orxonox_gui_gtk.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/orxonoxGui-orxonox_gui_gtk.Po' tmpdepfile='$(DEPDIR)/orxonoxGui-orxonox_gui_gtk.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orxonoxGui-orxonox_gui_gtk.o `test -f 'lib/gui/gui/orxonox_gui_gtk.cc' || echo '$(srcdir)/'`lib/gui/gui/orxonox_gui_gtk.cc
-
-orxonoxGui-orxonox_gui_gtk.obj: lib/gui/gui/orxonox_gui_gtk.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orxonoxGui-orxonox_gui_gtk.obj -MD -MP -MF "$(DEPDIR)/orxonoxGui-orxonox_gui_gtk.Tpo" -c -o orxonoxGui-orxonox_gui_gtk.obj `if test -f 'lib/gui/gui/orxonox_gui_gtk.cc'; then $(CYGPATH_W) 'lib/gui/gui/orxonox_gui_gtk.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/orxonox_gui_gtk.cc'; fi`; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/orxonoxGui-orxonox_gui_gtk.Tpo" "$(DEPDIR)/orxonoxGui-orxonox_gui_gtk.Po"; else rm -f "$(DEPDIR)/orxonoxGui-orxonox_gui_gtk.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/orxonox_gui_gtk.cc' object='orxonoxGui-orxonox_gui_gtk.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/orxonoxGui-orxonox_gui_gtk.Po' tmpdepfile='$(DEPDIR)/orxonoxGui-orxonox_gui_gtk.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orxonoxGui-orxonox_gui_gtk.obj `if test -f 'lib/gui/gui/orxonox_gui_gtk.cc'; then $(CYGPATH_W) 'lib/gui/gui/orxonox_gui_gtk.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/orxonox_gui_gtk.cc'; fi`
-
-orxonoxGui-orxonox_gui_element.o: lib/gui/gui/orxonox_gui_element.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orxonoxGui-orxonox_gui_element.o -MD -MP -MF "$(DEPDIR)/orxonoxGui-orxonox_gui_element.Tpo" -c -o orxonoxGui-orxonox_gui_element.o `test -f 'lib/gui/gui/orxonox_gui_element.cc' || echo '$(srcdir)/'`lib/gui/gui/orxonox_gui_element.cc; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/orxonoxGui-orxonox_gui_element.Tpo" "$(DEPDIR)/orxonoxGui-orxonox_gui_element.Po"; else rm -f "$(DEPDIR)/orxonoxGui-orxonox_gui_element.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/orxonox_gui_element.cc' object='orxonoxGui-orxonox_gui_element.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/orxonoxGui-orxonox_gui_element.Po' tmpdepfile='$(DEPDIR)/orxonoxGui-orxonox_gui_element.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orxonoxGui-orxonox_gui_element.o `test -f 'lib/gui/gui/orxonox_gui_element.cc' || echo '$(srcdir)/'`lib/gui/gui/orxonox_gui_element.cc
-
-orxonoxGui-orxonox_gui_element.obj: lib/gui/gui/orxonox_gui_element.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orxonoxGui-orxonox_gui_element.obj -MD -MP -MF "$(DEPDIR)/orxonoxGui-orxonox_gui_element.Tpo" -c -o orxonoxGui-orxonox_gui_element.obj `if test -f 'lib/gui/gui/orxonox_gui_element.cc'; then $(CYGPATH_W) 'lib/gui/gui/orxonox_gui_element.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/orxonox_gui_element.cc'; fi`; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/orxonoxGui-orxonox_gui_element.Tpo" "$(DEPDIR)/orxonoxGui-orxonox_gui_element.Po"; else rm -f "$(DEPDIR)/orxonoxGui-orxonox_gui_element.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/orxonox_gui_element.cc' object='orxonoxGui-orxonox_gui_element.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/orxonoxGui-orxonox_gui_element.Po' tmpdepfile='$(DEPDIR)/orxonoxGui-orxonox_gui_element.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orxonoxGui-orxonox_gui_element.obj `if test -f 'lib/gui/gui/orxonox_gui_element.cc'; then $(CYGPATH_W) 'lib/gui/gui/orxonox_gui_element.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/orxonox_gui_element.cc'; fi`
-
-orxonoxGui-orxonox_gui_video.o: lib/gui/gui/orxonox_gui_video.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orxonoxGui-orxonox_gui_video.o -MD -MP -MF "$(DEPDIR)/orxonoxGui-orxonox_gui_video.Tpo" -c -o orxonoxGui-orxonox_gui_video.o `test -f 'lib/gui/gui/orxonox_gui_video.cc' || echo '$(srcdir)/'`lib/gui/gui/orxonox_gui_video.cc; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/orxonoxGui-orxonox_gui_video.Tpo" "$(DEPDIR)/orxonoxGui-orxonox_gui_video.Po"; else rm -f "$(DEPDIR)/orxonoxGui-orxonox_gui_video.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/orxonox_gui_video.cc' object='orxonoxGui-orxonox_gui_video.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/orxonoxGui-orxonox_gui_video.Po' tmpdepfile='$(DEPDIR)/orxonoxGui-orxonox_gui_video.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orxonoxGui-orxonox_gui_video.o `test -f 'lib/gui/gui/orxonox_gui_video.cc' || echo '$(srcdir)/'`lib/gui/gui/orxonox_gui_video.cc
-
-orxonoxGui-orxonox_gui_video.obj: lib/gui/gui/orxonox_gui_video.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orxonoxGui-orxonox_gui_video.obj -MD -MP -MF "$(DEPDIR)/orxonoxGui-orxonox_gui_video.Tpo" -c -o orxonoxGui-orxonox_gui_video.obj `if test -f 'lib/gui/gui/orxonox_gui_video.cc'; then $(CYGPATH_W) 'lib/gui/gui/orxonox_gui_video.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/orxonox_gui_video.cc'; fi`; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/orxonoxGui-orxonox_gui_video.Tpo" "$(DEPDIR)/orxonoxGui-orxonox_gui_video.Po"; else rm -f "$(DEPDIR)/orxonoxGui-orxonox_gui_video.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/orxonox_gui_video.cc' object='orxonoxGui-orxonox_gui_video.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/orxonoxGui-orxonox_gui_video.Po' tmpdepfile='$(DEPDIR)/orxonoxGui-orxonox_gui_video.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orxonoxGui-orxonox_gui_video.obj `if test -f 'lib/gui/gui/orxonox_gui_video.cc'; then $(CYGPATH_W) 'lib/gui/gui/orxonox_gui_video.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/orxonox_gui_video.cc'; fi`
-
-orxonoxGui-orxonox_gui_audio.o: lib/gui/gui/orxonox_gui_audio.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orxonoxGui-orxonox_gui_audio.o -MD -MP -MF "$(DEPDIR)/orxonoxGui-orxonox_gui_audio.Tpo" -c -o orxonoxGui-orxonox_gui_audio.o `test -f 'lib/gui/gui/orxonox_gui_audio.cc' || echo '$(srcdir)/'`lib/gui/gui/orxonox_gui_audio.cc; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/orxonoxGui-orxonox_gui_audio.Tpo" "$(DEPDIR)/orxonoxGui-orxonox_gui_audio.Po"; else rm -f "$(DEPDIR)/orxonoxGui-orxonox_gui_audio.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/orxonox_gui_audio.cc' object='orxonoxGui-orxonox_gui_audio.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/orxonoxGui-orxonox_gui_audio.Po' tmpdepfile='$(DEPDIR)/orxonoxGui-orxonox_gui_audio.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orxonoxGui-orxonox_gui_audio.o `test -f 'lib/gui/gui/orxonox_gui_audio.cc' || echo '$(srcdir)/'`lib/gui/gui/orxonox_gui_audio.cc
-
-orxonoxGui-orxonox_gui_audio.obj: lib/gui/gui/orxonox_gui_audio.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orxonoxGui-orxonox_gui_audio.obj -MD -MP -MF "$(DEPDIR)/orxonoxGui-orxonox_gui_audio.Tpo" -c -o orxonoxGui-orxonox_gui_audio.obj `if test -f 'lib/gui/gui/orxonox_gui_audio.cc'; then $(CYGPATH_W) 'lib/gui/gui/orxonox_gui_audio.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/orxonox_gui_audio.cc'; fi`; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/orxonoxGui-orxonox_gui_audio.Tpo" "$(DEPDIR)/orxonoxGui-orxonox_gui_audio.Po"; else rm -f "$(DEPDIR)/orxonoxGui-orxonox_gui_audio.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/orxonox_gui_audio.cc' object='orxonoxGui-orxonox_gui_audio.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/orxonoxGui-orxonox_gui_audio.Po' tmpdepfile='$(DEPDIR)/orxonoxGui-orxonox_gui_audio.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orxonoxGui-orxonox_gui_audio.obj `if test -f 'lib/gui/gui/orxonox_gui_audio.cc'; then $(CYGPATH_W) 'lib/gui/gui/orxonox_gui_audio.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/orxonox_gui_audio.cc'; fi`
-
-orxonoxGui-orxonox_gui_exec.o: lib/gui/gui/orxonox_gui_exec.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orxonoxGui-orxonox_gui_exec.o -MD -MP -MF "$(DEPDIR)/orxonoxGui-orxonox_gui_exec.Tpo" -c -o orxonoxGui-orxonox_gui_exec.o `test -f 'lib/gui/gui/orxonox_gui_exec.cc' || echo '$(srcdir)/'`lib/gui/gui/orxonox_gui_exec.cc; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/orxonoxGui-orxonox_gui_exec.Tpo" "$(DEPDIR)/orxonoxGui-orxonox_gui_exec.Po"; else rm -f "$(DEPDIR)/orxonoxGui-orxonox_gui_exec.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/orxonox_gui_exec.cc' object='orxonoxGui-orxonox_gui_exec.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/orxonoxGui-orxonox_gui_exec.Po' tmpdepfile='$(DEPDIR)/orxonoxGui-orxonox_gui_exec.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orxonoxGui-orxonox_gui_exec.o `test -f 'lib/gui/gui/orxonox_gui_exec.cc' || echo '$(srcdir)/'`lib/gui/gui/orxonox_gui_exec.cc
-
-orxonoxGui-orxonox_gui_exec.obj: lib/gui/gui/orxonox_gui_exec.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orxonoxGui-orxonox_gui_exec.obj -MD -MP -MF "$(DEPDIR)/orxonoxGui-orxonox_gui_exec.Tpo" -c -o orxonoxGui-orxonox_gui_exec.obj `if test -f 'lib/gui/gui/orxonox_gui_exec.cc'; then $(CYGPATH_W) 'lib/gui/gui/orxonox_gui_exec.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/orxonox_gui_exec.cc'; fi`; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/orxonoxGui-orxonox_gui_exec.Tpo" "$(DEPDIR)/orxonoxGui-orxonox_gui_exec.Po"; else rm -f "$(DEPDIR)/orxonoxGui-orxonox_gui_exec.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/orxonox_gui_exec.cc' object='orxonoxGui-orxonox_gui_exec.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/orxonoxGui-orxonox_gui_exec.Po' tmpdepfile='$(DEPDIR)/orxonoxGui-orxonox_gui_exec.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orxonoxGui-orxonox_gui_exec.obj `if test -f 'lib/gui/gui/orxonox_gui_exec.cc'; then $(CYGPATH_W) 'lib/gui/gui/orxonox_gui_exec.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/orxonox_gui_exec.cc'; fi`
-
-orxonoxGui-orxonox_gui_flags.o: lib/gui/gui/orxonox_gui_flags.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orxonoxGui-orxonox_gui_flags.o -MD -MP -MF "$(DEPDIR)/orxonoxGui-orxonox_gui_flags.Tpo" -c -o orxonoxGui-orxonox_gui_flags.o `test -f 'lib/gui/gui/orxonox_gui_flags.cc' || echo '$(srcdir)/'`lib/gui/gui/orxonox_gui_flags.cc; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/orxonoxGui-orxonox_gui_flags.Tpo" "$(DEPDIR)/orxonoxGui-orxonox_gui_flags.Po"; else rm -f "$(DEPDIR)/orxonoxGui-orxonox_gui_flags.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/orxonox_gui_flags.cc' object='orxonoxGui-orxonox_gui_flags.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/orxonoxGui-orxonox_gui_flags.Po' tmpdepfile='$(DEPDIR)/orxonoxGui-orxonox_gui_flags.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orxonoxGui-orxonox_gui_flags.o `test -f 'lib/gui/gui/orxonox_gui_flags.cc' || echo '$(srcdir)/'`lib/gui/gui/orxonox_gui_flags.cc
-
-orxonoxGui-orxonox_gui_flags.obj: lib/gui/gui/orxonox_gui_flags.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orxonoxGui-orxonox_gui_flags.obj -MD -MP -MF "$(DEPDIR)/orxonoxGui-orxonox_gui_flags.Tpo" -c -o orxonoxGui-orxonox_gui_flags.obj `if test -f 'lib/gui/gui/orxonox_gui_flags.cc'; then $(CYGPATH_W) 'lib/gui/gui/orxonox_gui_flags.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/orxonox_gui_flags.cc'; fi`; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/orxonoxGui-orxonox_gui_flags.Tpo" "$(DEPDIR)/orxonoxGui-orxonox_gui_flags.Po"; else rm -f "$(DEPDIR)/orxonoxGui-orxonox_gui_flags.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/orxonox_gui_flags.cc' object='orxonoxGui-orxonox_gui_flags.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/orxonoxGui-orxonox_gui_flags.Po' tmpdepfile='$(DEPDIR)/orxonoxGui-orxonox_gui_flags.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orxonoxGui-orxonox_gui_flags.obj `if test -f 'lib/gui/gui/orxonox_gui_flags.cc'; then $(CYGPATH_W) 'lib/gui/gui/orxonox_gui_flags.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/orxonox_gui_flags.cc'; fi`
-
-orxonoxGui-orxonox_gui_banner.o: lib/gui/gui/orxonox_gui_banner.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orxonoxGui-orxonox_gui_banner.o -MD -MP -MF "$(DEPDIR)/orxonoxGui-orxonox_gui_banner.Tpo" -c -o orxonoxGui-orxonox_gui_banner.o `test -f 'lib/gui/gui/orxonox_gui_banner.cc' || echo '$(srcdir)/'`lib/gui/gui/orxonox_gui_banner.cc; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/orxonoxGui-orxonox_gui_banner.Tpo" "$(DEPDIR)/orxonoxGui-orxonox_gui_banner.Po"; else rm -f "$(DEPDIR)/orxonoxGui-orxonox_gui_banner.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/orxonox_gui_banner.cc' object='orxonoxGui-orxonox_gui_banner.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/orxonoxGui-orxonox_gui_banner.Po' tmpdepfile='$(DEPDIR)/orxonoxGui-orxonox_gui_banner.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orxonoxGui-orxonox_gui_banner.o `test -f 'lib/gui/gui/orxonox_gui_banner.cc' || echo '$(srcdir)/'`lib/gui/gui/orxonox_gui_banner.cc
-
-orxonoxGui-orxonox_gui_banner.obj: lib/gui/gui/orxonox_gui_banner.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orxonoxGui-orxonox_gui_banner.obj -MD -MP -MF "$(DEPDIR)/orxonoxGui-orxonox_gui_banner.Tpo" -c -o orxonoxGui-orxonox_gui_banner.obj `if test -f 'lib/gui/gui/orxonox_gui_banner.cc'; then $(CYGPATH_W) 'lib/gui/gui/orxonox_gui_banner.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/orxonox_gui_banner.cc'; fi`; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/orxonoxGui-orxonox_gui_banner.Tpo" "$(DEPDIR)/orxonoxGui-orxonox_gui_banner.Po"; else rm -f "$(DEPDIR)/orxonoxGui-orxonox_gui_banner.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/orxonox_gui_banner.cc' object='orxonoxGui-orxonox_gui_banner.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/orxonoxGui-orxonox_gui_banner.Po' tmpdepfile='$(DEPDIR)/orxonoxGui-orxonox_gui_banner.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orxonoxGui-orxonox_gui_banner.obj `if test -f 'lib/gui/gui/orxonox_gui_banner.cc'; then $(CYGPATH_W) 'lib/gui/gui/orxonox_gui_banner.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/orxonox_gui_banner.cc'; fi`
-
-orxonoxGui-orxonox_gui_keys.o: lib/gui/gui/orxonox_gui_keys.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orxonoxGui-orxonox_gui_keys.o -MD -MP -MF "$(DEPDIR)/orxonoxGui-orxonox_gui_keys.Tpo" -c -o orxonoxGui-orxonox_gui_keys.o `test -f 'lib/gui/gui/orxonox_gui_keys.cc' || echo '$(srcdir)/'`lib/gui/gui/orxonox_gui_keys.cc; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/orxonoxGui-orxonox_gui_keys.Tpo" "$(DEPDIR)/orxonoxGui-orxonox_gui_keys.Po"; else rm -f "$(DEPDIR)/orxonoxGui-orxonox_gui_keys.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/orxonox_gui_keys.cc' object='orxonoxGui-orxonox_gui_keys.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/orxonoxGui-orxonox_gui_keys.Po' tmpdepfile='$(DEPDIR)/orxonoxGui-orxonox_gui_keys.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orxonoxGui-orxonox_gui_keys.o `test -f 'lib/gui/gui/orxonox_gui_keys.cc' || echo '$(srcdir)/'`lib/gui/gui/orxonox_gui_keys.cc
-
-orxonoxGui-orxonox_gui_keys.obj: lib/gui/gui/orxonox_gui_keys.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orxonoxGui-orxonox_gui_keys.obj -MD -MP -MF "$(DEPDIR)/orxonoxGui-orxonox_gui_keys.Tpo" -c -o orxonoxGui-orxonox_gui_keys.obj `if test -f 'lib/gui/gui/orxonox_gui_keys.cc'; then $(CYGPATH_W) 'lib/gui/gui/orxonox_gui_keys.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/orxonox_gui_keys.cc'; fi`; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/orxonoxGui-orxonox_gui_keys.Tpo" "$(DEPDIR)/orxonoxGui-orxonox_gui_keys.Po"; else rm -f "$(DEPDIR)/orxonoxGui-orxonox_gui_keys.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/orxonox_gui_keys.cc' object='orxonoxGui-orxonox_gui_keys.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/orxonoxGui-orxonox_gui_keys.Po' tmpdepfile='$(DEPDIR)/orxonoxGui-orxonox_gui_keys.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orxonoxGui-orxonox_gui_keys.obj `if test -f 'lib/gui/gui/orxonox_gui_keys.cc'; then $(CYGPATH_W) 'lib/gui/gui/orxonox_gui_keys.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/orxonox_gui_keys.cc'; fi`
-
-orxonoxGui-orxonox_gui_update.o: lib/gui/gui/orxonox_gui_update.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orxonoxGui-orxonox_gui_update.o -MD -MP -MF "$(DEPDIR)/orxonoxGui-orxonox_gui_update.Tpo" -c -o orxonoxGui-orxonox_gui_update.o `test -f 'lib/gui/gui/orxonox_gui_update.cc' || echo '$(srcdir)/'`lib/gui/gui/orxonox_gui_update.cc; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/orxonoxGui-orxonox_gui_update.Tpo" "$(DEPDIR)/orxonoxGui-orxonox_gui_update.Po"; else rm -f "$(DEPDIR)/orxonoxGui-orxonox_gui_update.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/orxonox_gui_update.cc' object='orxonoxGui-orxonox_gui_update.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/orxonoxGui-orxonox_gui_update.Po' tmpdepfile='$(DEPDIR)/orxonoxGui-orxonox_gui_update.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orxonoxGui-orxonox_gui_update.o `test -f 'lib/gui/gui/orxonox_gui_update.cc' || echo '$(srcdir)/'`lib/gui/gui/orxonox_gui_update.cc
-
-orxonoxGui-orxonox_gui_update.obj: lib/gui/gui/orxonox_gui_update.cc
-@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orxonoxGui-orxonox_gui_update.obj -MD -MP -MF "$(DEPDIR)/orxonoxGui-orxonox_gui_update.Tpo" -c -o orxonoxGui-orxonox_gui_update.obj `if test -f 'lib/gui/gui/orxonox_gui_update.cc'; then $(CYGPATH_W) 'lib/gui/gui/orxonox_gui_update.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/orxonox_gui_update.cc'; fi`; \
-@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/orxonoxGui-orxonox_gui_update.Tpo" "$(DEPDIR)/orxonoxGui-orxonox_gui_update.Po"; else rm -f "$(DEPDIR)/orxonoxGui-orxonox_gui_update.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/orxonox_gui_update.cc' object='orxonoxGui-orxonox_gui_update.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/orxonoxGui-orxonox_gui_update.Po' tmpdepfile='$(DEPDIR)/orxonoxGui-orxonox_gui_update.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonoxGui_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orxonoxGui-orxonox_gui_update.obj `if test -f 'lib/gui/gui/orxonox_gui_update.cc'; then $(CYGPATH_W) 'lib/gui/gui/orxonox_gui_update.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/orxonox_gui_update.cc'; fi`
 uninstall-info-am:
 
@@ -1690,5 +1681,5 @@
 check-am: all-am
 check: check-recursive
-all-am: Makefile $(PROGRAMS) $(HEADERS)
+all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(HEADERS)
 installdirs: installdirs-recursive
 installdirs-am:
@@ -1722,5 +1713,6 @@
 clean: clean-recursive
 
-clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
+clean-am: clean-binPROGRAMS clean-generic clean-noinstLIBRARIES \
+	mostlyclean-am
 
 distclean: distclean-recursive
@@ -1772,16 +1764,16 @@
 
 .PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
-	clean clean-binPROGRAMS clean-generic clean-recursive ctags \
-	ctags-recursive distclean distclean-compile distclean-generic \
-	distclean-recursive distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-binPROGRAMS \
-	install-data install-data-am install-exec install-exec-am \
-	install-info install-info-am install-man install-strip \
-	installcheck installcheck-am installdirs installdirs-am \
-	maintainer-clean maintainer-clean-generic \
-	maintainer-clean-recursive mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-recursive pdf pdf-am ps ps-am \
-	tags tags-recursive uninstall uninstall-am \
-	uninstall-binPROGRAMS uninstall-info-am
+	clean clean-binPROGRAMS clean-generic clean-noinstLIBRARIES \
+	clean-recursive ctags ctags-recursive distclean \
+	distclean-compile distclean-generic distclean-recursive \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-binPROGRAMS install-data \
+	install-data-am install-exec install-exec-am install-info \
+	install-info-am install-man install-strip installcheck \
+	installcheck-am installdirs installdirs-am maintainer-clean \
+	maintainer-clean-generic maintainer-clean-recursive \
+	mostlyclean mostlyclean-compile mostlyclean-generic \
+	mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
+	uninstall uninstall-am uninstall-binPROGRAMS uninstall-info-am
 
 
Index: orxonox/trunk/src/lib/Makefile.in
===================================================================
--- orxonox/trunk/src/lib/Makefile.in	(revision 4053)
+++ orxonox/trunk/src/lib/Makefile.in	(revision 4054)
@@ -117,4 +117,5 @@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -125,4 +126,5 @@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
+ac_ct_RANLIB = @ac_ct_RANLIB@
 ac_ct_STRIP = @ac_ct_STRIP@
 am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
Index: orxonox/trunk/src/lib/graphics/Makefile.in
===================================================================
--- orxonox/trunk/src/lib/graphics/Makefile.in	(revision 4053)
+++ orxonox/trunk/src/lib/graphics/Makefile.in	(revision 4054)
@@ -117,4 +117,5 @@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -125,4 +126,5 @@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
+ac_ct_RANLIB = @ac_ct_RANLIB@
 ac_ct_STRIP = @ac_ct_STRIP@
 am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
Index: orxonox/trunk/src/lib/graphics/importer/Makefile.in
===================================================================
--- orxonox/trunk/src/lib/graphics/importer/Makefile.in	(revision 4053)
+++ orxonox/trunk/src/lib/graphics/importer/Makefile.in	(revision 4054)
@@ -147,4 +147,5 @@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -155,4 +156,5 @@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
+ac_ct_RANLIB = @ac_ct_RANLIB@
 ac_ct_STRIP = @ac_ct_STRIP@
 am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
Index: orxonox/trunk/src/lib/gui/Makefile.in
===================================================================
--- orxonox/trunk/src/lib/gui/Makefile.in	(revision 4053)
+++ orxonox/trunk/src/lib/gui/Makefile.in	(revision 4054)
@@ -117,4 +117,5 @@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -125,4 +126,5 @@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
+ac_ct_RANLIB = @ac_ct_RANLIB@
 ac_ct_STRIP = @ac_ct_STRIP@
 am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
Index: orxonox/trunk/src/lib/gui/console/Makefile.in
===================================================================
--- orxonox/trunk/src/lib/gui/console/Makefile.in	(revision 4053)
+++ orxonox/trunk/src/lib/gui/console/Makefile.in	(revision 4054)
@@ -136,4 +136,5 @@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -144,4 +145,5 @@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
+ac_ct_RANLIB = @ac_ct_RANLIB@
 ac_ct_STRIP = @ac_ct_STRIP@
 am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
Index: orxonox/trunk/src/lib/gui/gui/Makefile.am
===================================================================
--- orxonox/trunk/src/lib/gui/gui/Makefile.am	(revision 4053)
+++ orxonox/trunk/src/lib/gui/gui/Makefile.am	(revision 4054)
@@ -11,4 +11,5 @@
 AM_CXXFLAGS+=-I$(MAINSRCDIR)/lib/graphics/importer
 AM_CXXFLAGS+=-I$(MAINSRCDIR)/lib/gui
+AM_CXXFLAGS+=-I$(MAINSRCDIR)/lib/gui/gui
 AM_CXXFLAGS+=-I$(MAINSRCDIR)/lib/lang
 AM_CXXFLAGS+=-I$(MAINSRCDIR)/lib/util
@@ -24,26 +25,26 @@
 
 bin_PROGRAMS=gui
-gui_SOURCES=orxonox_gui_main.cc \
-	    orxonox_gui.cc \
-	    orxonox_gui_gtk.cc \
-	    orxonox_gui_element.cc \
-	    orxonox_gui_video.cc \
-	    orxonox_gui_audio.cc \
-	    orxonox_gui_exec.cc \
-	    orxonox_gui_flags.cc \
-	    orxonox_gui_banner.cc \
-	    orxonox_gui_keys.cc \
-	    orxonox_gui_update.cc
+gui_SOURCES=gui_main.cc \
+	    gui.cc \
+	    gui_gtk.cc \
+	    gui_element.cc \
+	    gui_video.cc \
+	    gui_audio.cc \
+	    gui_exec.cc \
+	    gui_flags.cc \
+	    gui_banner.cc \
+	    gui_keys.cc \
+	    gui_update.cc
 
-noinst_HEADERS=orxonox_gui.h \
-	    orxonox_gui_gtk.h \
-	    orxonox_gui_element.h \
-	    orxonox_gui_video.h \
-	    orxonox_gui_audio.h \
-	    orxonox_gui_exec.h \
-	    orxonox_gui_flags.h \
-	    orxonox_gui_banner.h \
-	    orxonox_gui_keys.h \
-	    orxonox_gui_update.h
+noinst_HEADERS=gui.h \
+	    gui_gtk.h \
+	    gui_element.h \
+	    gui_video.h \
+	    gui_audio.h \
+	    gui_exec.h \
+	    gui_flags.h \
+	    gui_banner.h \
+	    gui_keys.h \
+	    gui_update.h
 
 #  uncomment the following if orxonox requires the mathlibrary
Index: orxonox/trunk/src/lib/gui/gui/Makefile.in
===================================================================
--- orxonox/trunk/src/lib/gui/gui/Makefile.in	(revision 4053)
+++ orxonox/trunk/src/lib/gui/gui/Makefile.in	(revision 4054)
@@ -53,10 +53,8 @@
 binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
 PROGRAMS = $(bin_PROGRAMS)
-am_gui_OBJECTS = orxonox_gui_main.$(OBJEXT) orxonox_gui.$(OBJEXT) \
-	orxonox_gui_gtk.$(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)
+am_gui_OBJECTS = gui_main.$(OBJEXT) gui.$(OBJEXT) gui_gtk.$(OBJEXT) \
+	gui_element.$(OBJEXT) gui_video.$(OBJEXT) gui_audio.$(OBJEXT) \
+	gui_exec.$(OBJEXT) gui_flags.$(OBJEXT) gui_banner.$(OBJEXT) \
+	gui_keys.$(OBJEXT) gui_update.$(OBJEXT)
 gui_OBJECTS = $(am_gui_OBJECTS)
 gui_LDADD = $(LDADD)
@@ -64,15 +62,10 @@
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/orxonox_gui.Po \
-@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 \
-@AMDEP_TRUE@	./$(DEPDIR)/orxonox_gui_gtk.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/orxonox_gui_keys.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/orxonox_gui_main.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/orxonox_gui_update.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/orxonox_gui_video.Po
+@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/gui.Po ./$(DEPDIR)/gui_audio.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/gui_banner.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/gui_element.Po ./$(DEPDIR)/gui_exec.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/gui_flags.Po ./$(DEPDIR)/gui_gtk.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/gui_keys.Po ./$(DEPDIR)/gui_main.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/gui_update.Po ./$(DEPDIR)/gui_video.Po
 CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
 	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
@@ -147,4 +140,5 @@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -155,4 +149,5 @@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
+ac_ct_RANLIB = @ac_ct_RANLIB@
 ac_ct_STRIP = @ac_ct_STRIP@
 am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
@@ -196,30 +191,30 @@
 target_vendor = @target_vendor@
 MAINSRCDIR = ../../..
-AM_CXXFLAGS = $(GTK2_CFLAGS) $(GTHREAD_CFLAGS) $(CURL_CFLAGS) $(MSBITFIELDS) -I$(MAINSRCDIR) -I$(MAINSRCDIR)/world_entities -I$(MAINSRCDIR)/story_entities -I$(MAINSRCDIR)/lib -I$(MAINSRCDIR)/lib/coord -I$(MAINSRCDIR)/lib/data -I$(MAINSRCDIR)/lib/gaphics -I$(MAINSRCDIR)/lib/graphics/font -I$(MAINSRCDIR)/lib/graphics/importer -I$(MAINSRCDIR)/lib/gui -I$(MAINSRCDIR)/lib/lang -I$(MAINSRCDIR)/lib/util -I$(MAINSRCDIR)/lib/math -I$(MAINSRCDIR)/defs -I$(MAINSRCDIR)/font -I$(MAINSRCDIR)/network -I$(MAINSRCDIR)/glmenu -I$(MAINSRCDIR)/ai
+AM_CXXFLAGS = $(GTK2_CFLAGS) $(GTHREAD_CFLAGS) $(CURL_CFLAGS) $(MSBITFIELDS) -I$(MAINSRCDIR) -I$(MAINSRCDIR)/world_entities -I$(MAINSRCDIR)/story_entities -I$(MAINSRCDIR)/lib -I$(MAINSRCDIR)/lib/coord -I$(MAINSRCDIR)/lib/data -I$(MAINSRCDIR)/lib/gaphics -I$(MAINSRCDIR)/lib/graphics/font -I$(MAINSRCDIR)/lib/graphics/importer -I$(MAINSRCDIR)/lib/gui -I$(MAINSRCDIR)/lib/gui/gui -I$(MAINSRCDIR)/lib/lang -I$(MAINSRCDIR)/lib/util -I$(MAINSRCDIR)/lib/math -I$(MAINSRCDIR)/defs -I$(MAINSRCDIR)/font -I$(MAINSRCDIR)/network -I$(MAINSRCDIR)/glmenu -I$(MAINSRCDIR)/ai
 
 #AM_LDFLAGS=$(GTK2_LIBS)   $(GTHREAD_LIBS)
 AM_LDFLAGS = $(GTK2_LIBS) $(GTHREAD_LIBS) $(CURL_LIBS)
-gui_SOURCES = orxonox_gui_main.cc \
-	    orxonox_gui.cc \
-	    orxonox_gui_gtk.cc \
-	    orxonox_gui_element.cc \
-	    orxonox_gui_video.cc \
-	    orxonox_gui_audio.cc \
-	    orxonox_gui_exec.cc \
-	    orxonox_gui_flags.cc \
-	    orxonox_gui_banner.cc \
-	    orxonox_gui_keys.cc \
-	    orxonox_gui_update.cc
-
-noinst_HEADERS = orxonox_gui.h \
-	    orxonox_gui_gtk.h \
-	    orxonox_gui_element.h \
-	    orxonox_gui_video.h \
-	    orxonox_gui_audio.h \
-	    orxonox_gui_exec.h \
-	    orxonox_gui_flags.h \
-	    orxonox_gui_banner.h \
-	    orxonox_gui_keys.h \
-	    orxonox_gui_update.h
+gui_SOURCES = gui_main.cc \
+	    gui.cc \
+	    gui_gtk.cc \
+	    gui_element.cc \
+	    gui_video.cc \
+	    gui_audio.cc \
+	    gui_exec.cc \
+	    gui_flags.cc \
+	    gui_banner.cc \
+	    gui_keys.cc \
+	    gui_update.cc
+
+noinst_HEADERS = gui.h \
+	    gui_gtk.h \
+	    gui_element.h \
+	    gui_video.h \
+	    gui_audio.h \
+	    gui_exec.h \
+	    gui_flags.h \
+	    gui_banner.h \
+	    gui_keys.h \
+	    gui_update.h
 
 
@@ -299,15 +294,15 @@
 	-rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox_gui.Po@am__quote@
-@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@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox_gui_gtk.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox_gui_keys.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox_gui_main.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox_gui_update.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox_gui_video.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gui.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gui_audio.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gui_banner.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gui_element.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gui_exec.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gui_flags.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gui_gtk.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gui_keys.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gui_main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gui_update.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gui_video.Po@am__quote@
 
 .cc.o:
Index: orxonox/trunk/src/lib/gui/gui/gui.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui.cc	(revision 4054)
+++ orxonox/trunk/src/lib/gui/gui/gui.cc	(revision 4054)
@@ -0,0 +1,142 @@
+/* 
+   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.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
+
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+
+*/
+
+#include <unistd.h>
+
+#include "gui_gtk.h"
+#include "gui.h"
+#include "gui_video.h"
+#include "gui_audio.h"
+#include "gui_exec.h"
+#include "gui_flags.h"
+#include "gui_banner.h"
+#include "gui_keys.h"
+#include "gui_update.h"
+
+// GUI-modules
+OrxonoxGuiFlags* flags = NULL;
+OrxonoxGuiVideo* video = NULL;
+OrxonoxGuiAudio* audio = NULL;
+OrxonoxGuiExec* exec = NULL;
+OrxonoxGuiBanner* banner = NULL;
+OrxonoxGuiKeys* keys = NULL;
+OrxonoxGuiUpdate* update = NULL;
+
+/* ORXONOXGUI */
+
+/**
+   \brief Initializes the Gui
+*/
+OrxonoxGui::OrxonoxGui(int argc, char *argv[])
+{
+  Window* orxonoxGUI = NULL;
+
+  initGUI(argc, argv);
+
+  orxonoxGUI = new Window( "grafical orxonox loader, "PACKAGE_VERSION);
+  {
+    Box* windowBox = new Box ('h');
+    {
+      banner = new OrxonoxGuiBanner();
+      windowBox->fill (banner->getWidget());
+      
+      Box* optionBoxL = new Box('v');
+      {
+	Box* avBox = new Box('h');
+	
+	video = new OrxonoxGuiVideo();
+	avBox->fill(video->getWidget());
+	audio = new OrxonoxGuiAudio();
+	avBox->fill(audio->getWidget());
+      
+	optionBoxL->fill(avBox);
+
+	keys = new OrxonoxGuiKeys();
+	optionBoxL->fill(keys->getWidget());
+	windowBox->fill(optionBoxL);
+      }
+      Box* optionBoxR = new Box('v');
+      {
+	exec = new OrxonoxGuiExec();
+	optionBoxR->fill(exec->getWidget());
+	
+	flags = new OrxonoxGuiFlags();
+	
+	optionBoxR->fill(flags->getWidget());
+	
+	update = new OrxonoxGuiUpdate();
+	optionBoxR->fill(update->getWidget());
+      }
+      windowBox->fill(optionBoxR);
+    }
+    orxonoxGUI->fill(windowBox);
+  }
+  // Reading Values from File
+  exec->setConfDir(GUI_DEFAULT_CONF_DIR);
+  exec->setConfFile(GUI_DEFAULT_CONF_FILE);
+  exec->readFromFile(Window::mainWindow);
+  // Merging changes to the Options from appended flags.
+  for (int optCount = 1; optCount < argc; optCount++)
+    orxonoxGUI->walkThrough(Widget::flagCheck, argv[optCount], 0);
+
+  flags->setTextFromFlags(Window::mainWindow);
+  orxonoxGUI->showall();
+
+  //// Handling special Cases. ///
+
+  // case update //
+#ifdef HAVE_CURL
+  if (static_cast<Option*>(Window::mainWindow->findWidgetByName("auto update", 0))->value == 1)
+    {
+      update->checkForUpdates();
+    }
+#endif /* HAVE_CURL */
+
+  // case start-with-gui.
+  if (!access(exec->getConfigFile(), F_OK) && 
+      static_cast<Option*>(orxonoxGUI->findWidgetByName("Always Show this Menu", 0))->value == 0)
+    OrxonoxGuiExec::startOrxonox(NULL, exec);
+  else
+    {
+      mainloopGUI();
+    }
+
+}
+
+bool OrxonoxGui::startOrxonox = false;
+
+/**
+   \brief Destructor.
+*/
+OrxonoxGui::~OrxonoxGui(void)
+{
+  delete video;
+  delete audio;
+  delete exec;
+  delete flags;
+  delete banner;
+  delete keys;
+  delete update;
+}
Index: orxonox/trunk/src/lib/gui/gui/gui.h
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui.h	(revision 4054)
+++ orxonox/trunk/src/lib/gui/gui/gui.h	(revision 4054)
@@ -0,0 +1,33 @@
+/*!
+ \file gui.h
+ \brief Creation of the Gui
+
+ \todo way to start gui without GTK (textmode) AND IMPROOVE
+ \todo curl interface to Download cool stuff
+
+ \todo widgets save themselves
+ \todo good way to step through all the Widgets
+ \todo label -> protected : getlabel function
+*/
+
+#ifndef _GUI_H
+#define _GUI_H
+
+using namespace std;
+
+#define GUI_DEFAULT_CONF_DIR "~/.orxonox"
+#define GUI_DEFAULT_CONF_FILE "orxonox.conf"
+
+class OrxonoxGuiElement;
+
+//! Class that creates the OrxonoxGui
+class OrxonoxGui
+{
+ public:
+  OrxonoxGui(int argc, char *argv[]);
+  ~OrxonoxGui(void);
+
+  static bool startOrxonox;
+};
+
+#endif /* _GUI_H */
Index: orxonox/trunk/src/lib/gui/gui/gui_audio.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui_audio.cc	(revision 4054)
+++ orxonox/trunk/src/lib/gui/gui/gui_audio.cc	(revision 4054)
@@ -0,0 +1,75 @@
+/* 
+   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.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
+
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+
+*/
+
+#include "gui_audio.h"
+
+#include "gui_gtk.h"
+
+/**
+   \brief Creates an Audio-Frame
+*/
+OrxonoxGuiAudio::OrxonoxGuiAudio(void)
+{
+  Frame* audioFrame;        //!< The Frame that holds the audio Options.
+
+  audioFrame = new Frame("Audio-Options:");
+  audioFrame->setGroupName("audio");
+  {
+    Box* audioBox;            //!< The Box that holds the audio Options.
+    audioBox = new Box('v');
+    {
+      CheckButton* enableSound; //!< A Ckeckbutton for enabling Sound.
+      Slider* musicVolume;      //!< A Slider for music volume.
+      Slider* effectsVolume;    //!< A Slider for effects volume.
+      
+      enableSound = new CheckButton("Disable Sound");
+      enableSound->setFlagName ("no-sound", 0);
+      enableSound->saveability();
+      audioBox->fill(enableSound);
+      Label* musicVolumeLabel = new Label("Music Volume");
+      audioBox->fill(musicVolumeLabel);
+      musicVolume = new Slider("Music Volume", 0, 100);
+      musicVolume->setFlagName("music-volume", "m", 80);
+      musicVolume->saveability();
+      audioBox->fill (musicVolume);
+      Label* effectsVolumeLabel = new Label ("Effects Volume");
+      audioBox->fill (effectsVolumeLabel);
+      effectsVolume = new Slider ("Effects Volume", 0, 100);
+      effectsVolume->setFlagName ("effects-volume", "e", 80);
+      effectsVolume->saveability();
+      audioBox->fill (effectsVolume);
+    }
+    audioFrame->fill(audioBox);
+  }
+  setMainWidget(audioFrame);
+}
+
+/** 
+    \brief Destructs the Audio-Stuff
+*/
+OrxonoxGuiAudio::~OrxonoxGuiAudio(void)
+{
+  // nothing to do here.
+}
Index: orxonox/trunk/src/lib/gui/gui/gui_audio.h
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui_audio.h	(revision 4054)
+++ orxonox/trunk/src/lib/gui/gui/gui_audio.h	(revision 4054)
@@ -0,0 +1,18 @@
+/*!
+  \file gui_audio.h
+  \brief File that holds the class that creates the Audio-Options.
+*/
+
+#ifndef _GUI_AUDIO_H
+#define _GUI_AUDIO_H
+
+#include "gui_element.h"
+
+//! Class that creates the Audio-Options.
+class OrxonoxGuiAudio : public OrxonoxGuiElement
+{
+ public:
+  OrxonoxGuiAudio(void);
+  ~OrxonoxGuiAudio(void);
+};
+#endif /* _GUI_AUDIO_H */
Index: orxonox/trunk/src/lib/gui/gui/gui_banner.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui_banner.cc	(revision 4054)
+++ orxonox/trunk/src/lib/gui/gui/gui_banner.cc	(revision 4054)
@@ -0,0 +1,97 @@
+/* 
+   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.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
+
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+
+*/
+
+#include "gui_banner.h"
+
+#include "gui_gtk.h"
+
+#include "banner.xpm"
+#include "logo.xpm"
+
+/**
+   \brief Creates a new BannerEventBox and its content.
+*/
+OrxonoxGuiBanner::OrxonoxGuiBanner(void)
+{
+  // the banner Frame
+  Frame* bannerFrame;       //!< The frame that holds the Banner.
+  Box* bannerBox;           //!< The box that holds the Banner.
+  EventBox* bannerEventBox; //!< an Image needs an EventBox to catch klicks.
+  Label* bannerLabel;       //!< The Label of the Banner.
+
+  // the logo Window
+  Window* logoWindow;       //!< The Window that holds the Orxonox-CrewLogo.
+  Box* logoBox;             //!< The Box that holds the Orxonox-CrewLogo
+  Image* logoImage;         //!< The Orxonox-CrewLogo-Image
+  Label* logoLabel;         //!< The Label for the Orxonox-CrewLogo
+  Label* orxIsLabel;        //!< Some text about us.
+
+
+  // Banner Itself //
+  bannerEventBox = new EventBox("BannerEventBox");
+  {
+    Image* bannerImage;       //!< The Image for the Banner.
+
+    bannerImage = new Image(banner_xpm);
+    bannerEventBox->fill(bannerImage);
+  }
+  // Banner Window //
+  logoWindow = new Window(PACKAGE_NAME " is:");
+  {
+  EventBox* logoEventBox;   //!< The EventBox that holds the Orxonox-CrewLogo. it has to be an eventbox, because Images can not receive clicks.
+  
+#ifdef HAVE_GTK2
+    bannerEventBox->connectSignal("button_press_event", logoWindow, Window::windowOpen);
+    logoWindow->connectSignal("destroy", logoWindow, Window::windowClose);
+    logoWindow->connectSignal("delete_event", logoWindow, Window::windowClose);
+#endif /* HAVE_GTK2 */
+    logoEventBox = new EventBox();
+    logoBox = new Box('v');
+    logoLabel = new Label(PACKAGE_NAME " v." PACKAGE_VERSION);
+    logoBox->fill(logoLabel);
+    logoImage = new Image(logo_xpm);
+    logoBox->fill(logoImage);
+
+    //! \todo add the names of all the guys working on orxonox
+    orxIsLabel = new Label(PACKAGE_NAME " is:\nPatrick Boenzli - main Developer\nBenjamin Grauer - right Hand\n....");
+    logoBox->fill(orxIsLabel);
+    logoEventBox->fill(logoBox);
+#ifdef HAVE_GTK2
+    logoEventBox->connectSignal("button_press_event", logoWindow, Window::windowClose);
+#endif /* HAVE_GTK2 */
+    logoWindow->fill(logoEventBox);
+  }
+  Window::addWindow(logoWindow);
+  
+  setMainWidget(bannerEventBox);
+}
+
+/**
+   \brief Destructs it.
+*/
+OrxonoxGuiBanner::~OrxonoxGuiBanner(void)
+{
+  // nothing to do here
+}
Index: orxonox/trunk/src/lib/gui/gui/gui_banner.h
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui_banner.h	(revision 4054)
+++ orxonox/trunk/src/lib/gui/gui/gui_banner.h	(revision 4054)
@@ -0,0 +1,22 @@
+/*!
+  \file gui_banner.h
+  \brief  File that holds the class that creates the Banner-Image.\n
+  This is Commercial :-)
+*/
+
+#ifndef _GUI_BANNER_H
+#define _GUI_BANNER_H
+
+#include "gui.h"
+#include "gui_element.h"
+
+//! Class that creates the Banner-Image
+class OrxonoxGuiBanner : public OrxonoxGuiElement
+{
+ public:
+  OrxonoxGuiBanner(void);
+  ~OrxonoxGuiBanner(void);
+};
+
+
+#endif /* _GUI_BANNER_H */
Index: orxonox/trunk/src/lib/gui/gui/gui_element.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui_element.cc	(revision 4054)
+++ orxonox/trunk/src/lib/gui/gui/gui_element.cc	(revision 4054)
@@ -0,0 +1,50 @@
+/* 
+   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 "gui_element.h"
+
+#include "gui_gtk.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
+}
+
+/**
+   \brief Every GuiElement should set this, or it could result in a SegFault.
+*/
+void OrxonoxGuiElement::setMainWidget(Widget* widget)
+{
+  this->mainWidget = widget;
+}
Index: orxonox/trunk/src/lib/gui/gui/gui_element.h
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui_element.h	(revision 4054)
+++ orxonox/trunk/src/lib/gui/gui/gui_element.h	(revision 4054)
@@ -0,0 +1,28 @@
+/*! 
+    \file gui_element.h
+    \brief Definition of ...
+
+*/
+
+#ifndef _GUI_ELEMENT_H
+#define _GUI_ELEMENT_H
+
+class Widget;
+
+//! A SuperClass for all the Different GuiElements
+class OrxonoxGuiElement {
+
+ public:
+  OrxonoxGuiElement();
+  virtual ~OrxonoxGuiElement();
+  
+  /** \returns the main Widget of this GuiElement. */
+  Widget* getWidget(void) {return this->mainWidget;}
+ protected:
+  void setMainWidget(Widget* widget);
+  
+ private:
+  Widget* mainWidget;
+};
+
+#endif /* _GUI_ELEMENT_H */
Index: orxonox/trunk/src/lib/gui/gui/gui_exec.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui_exec.cc	(revision 4054)
+++ orxonox/trunk/src/lib/gui/gui/gui_exec.cc	(revision 4054)
@@ -0,0 +1,368 @@
+/* 
+   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.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
+
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+
+*/
+
+#include "gui_exec.h"
+
+#include "resource_manager.h"
+
+#include <string.h>
+#include <stdlib.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+
+HashTable* orxonoxFlagHash;
+
+/** 
+    \brief Creates the Exec-Frame
+*/
+OrxonoxGuiExec::OrxonoxGuiExec(void)
+{
+  Frame* execFrame;            //!< The Frame that holds the ExecutionOptions.
+
+  this->confFile = NULL;
+  this->confDir = NULL;
+
+  execFrame = new Frame("Execute-Tags:");
+  {
+    Box* execBox;                //!< The Box that holds the ExecutionOptions.
+
+    execBox = new Box('v');
+    execFrame->setGroupName("misc");
+    {
+      Button* start;               //!< The start Button of orxonox.
+      Menu* verboseMode;           //!< A Menu for setting the verbose-Mode. \todo setting up a verbose-class.
+      CheckButton* alwaysShow;     //!< A CheckButton, for if orxonox should start with or without gui.
+      Button* quit;                //!< A Button to quit the Gui without starting orxonox.
+      
+      start = new Button("Start");
+#ifdef HAVE_GTK2
+      start->connectSignal("clicked", this, startOrxonox);
+#endif /* HAVE_GTK2 */
+      execBox->fill(start);
+      this->saveSettings = new CheckButton("Save Settings");
+      this->saveSettings->value = 1;
+      this->saveSettings->saveability();
+      execBox->fill(this->saveSettings);
+      verboseMode = new Menu("verbose mode", "nothing", "error", "warning", "info", "lastItem");
+      verboseMode->setFlagName("verbose", "v", 0);
+      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
+      quit->connectSignal("clicked", this, OrxonoxGuiExec::quitGui);
+      //  Window::mainWindow->connectSignal("remove", this, OrxonoxGuiExec::quitGui);
+      Window::mainWindow->connectSignal("destroy", this, OrxonoxGuiExec::quitGui);
+#endif /* HAVE_GTK2 */
+      execBox->fill(quit);
+    }
+    execFrame->fill(execBox);
+  }
+  setMainWidget(execFrame);
+}
+
+/**
+   \brief Destructs the Execution-stuff
+*/
+OrxonoxGuiExec::~OrxonoxGuiExec(void)
+{
+  if(this->confFile)
+    delete []this->confFile;
+  if(this->confDir)
+    delete []this->confDir;
+}
+
+/* FILE HANDLING */
+
+/**
+   \brief sets the Directory of the configuration files
+   \param confDir the Directory for the configuration files
+*/
+void OrxonoxGuiExec::setConfDir(const char* confDir)
+{
+  this->confDir = ResourceManager::homeDirCheck(confDir);
+
+  PRINTF(3)("Config Directory is: %s.\n", this->confDir);
+  //! \todo F** Windows-support
+#ifndef __WIN32__
+  mkdir(this->confDir, 0755);
+#else /* __WiN32__ */
+  mkdir(this->confDir);
+#endif /* __WIN32__ */
+}
+
+/**
+   \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::setConfFile(const char* fileName)
+{
+  if (!this->confDir)
+    this->setConfDir("~/");
+  this->confFile = new char[strlen(this->confDir)+strlen(fileName)+2];
+  sprintf(this->confFile, "%s/%s", this->confDir, fileName);
+  PRINTF(3)("ConfigurationFile is %s.\n", this->confFile);
+}
+
+/**
+   \returns The name of the Configuration-File
+*/
+const char* OrxonoxGuiExec::getConfigFile(void) const
+{
+  return this->confFile;
+}
+
+/**
+   \brief checks if a option should be saved.
+   \return 1 if it should 0 if not/
+*/
+int OrxonoxGuiExec::shouldsave()
+{
+  return(static_cast<Option*>(this->saveSettings)->value);
+}
+
+/** 
+    \brief Saves the configuration-file to the Disk.\n
+    \param widget from which Widget on should be saved.
+
+    this Function only opens and closes the file, in between OrxonoxGuiExec::writeFileText(Widget* widget) will execute the real writing process.
+*/
+void OrxonoxGuiExec::writeToFile(Widget* widget)
+{
+  this->CONFIG_FILE = fopen(this->confFile, "w");
+  if(this->CONFIG_FILE)
+    this->writeFileText(widget, 0);
+  fclose(this->CONFIG_FILE);
+}
+
+/**
+   \brief Actually writes into the configuration file to the disk.
+   \param widget from which Widget on should be saved.
+   \param depth initially "0", and grows higher, while new Groups are bundeled.
+*/
+void OrxonoxGuiExec::writeFileText(Widget* widget, int depth)
+{
+  int counter = 0;
+  while(counter < depth &&((widget->isOption>0
+			      &&(static_cast<Option*>(widget)->isSaveable()))
+			     ||(widget->isOption<0
+				&& static_cast<Packer*>(widget)->getGroupName())))
+    {
+      fprintf(this->CONFIG_FILE, "  ", depth);
+      counter++;
+    }
+  
+  // check if it is a Packer, and if it is, check if it has a name and if there is something in it.
+  if(widget->isOption <0)
+    {
+      if(static_cast<Packer*>(widget)->getGroupName())
+	{
+	  fprintf(CONFIG_FILE, "[%s]\n", static_cast<Packer*>(widget)->getGroupName());
+	  this->writeFileText(static_cast<Packer*>(widget)->down, depth+1);
+	  fprintf(CONFIG_FILE, "\n");
+	}
+      else
+	{
+	  this->writeFileText(static_cast<Packer*>(widget)->down, depth);
+	}
+    } 
+  //  if(widget->isOption == 0)
+  //    printf("%s\n",widget->title);
+  if(widget->isOption >= 1)
+    if (static_cast<Option*>(widget)->isSaveable())
+      {
+	char Buffer[256];
+	char* space2under;
+	strcpy(Buffer, static_cast<Option*>(widget)->title);
+	if(strchr(Buffer, '_'))
+	  PRINTF(2)("Optionname %s is not Valid for Saving, because it includes an underscore\n", Buffer);
+	while(space2under = strchr(Buffer, ' '))
+	  {
+	    space2under[0] = '_';
+	  }
+	  fprintf(CONFIG_FILE, "%s = %s\n", Buffer, static_cast<Option*>(widget)->save());
+      }
+
+  if(widget->next != NULL)
+    this->writeFileText(widget->next, depth);
+}
+
+/**
+   \brief Reads in Configuration Data.
+   \param widget from which Widget on should be saved.
+*/
+void OrxonoxGuiExec::readFromFile(Widget* widget)
+{
+  this->CONFIG_FILE = fopen(this->confFile, "r");
+  VarInfo varInfo;
+  if(this->CONFIG_FILE)
+    {
+      Widget* groupWidget = widget;
+      char Buffer[256] = "";
+      char Variable[256]= "";
+      char* Value;
+      while(fscanf(this->CONFIG_FILE, "%s", Buffer) != EOF)
+	{
+	  // group-search //
+	  if(!strncmp(Buffer, "[", 1))
+	    {
+	      if((groupWidget = locateGroup(widget, Buffer, 1))==NULL)
+		{
+		  PRINTF(2)("!!There is no group called %s in this GUI.\n First best Widget will get the Infos assigned.\n Config-File will be updated in next Save\n", Buffer);
+		  groupWidget = widget;
+		}
+	      else
+		PRINT(5)("Group %s located.\n", static_cast<Packer*>(groupWidget)->groupName);
+	    }
+	  // option-setting //
+	  if(!strcmp(Buffer, "="))
+	    {
+	      char* under2space;
+	      while(under2space = strchr(Variable, '_'))
+		{
+		  sprintf(under2space, " %s", under2space+1);
+		}
+	      
+	      fscanf(this->CONFIG_FILE, "%s", Buffer);
+	      varInfo.variableName = Variable;
+	      varInfo.variableValue = Buffer;
+	      groupWidget->walkThrough(this->readFileText, &varInfo, 0);
+	      sprintf(Variable, "");
+	    }
+	  sprintf(Variable, "%s", Buffer);
+	}
+      widget->walkThrough(widget->setOptions, 0);
+    }
+}
+
+/**
+   \brief Maps Confugurations to the Options.
+   \param widget which widget downwards
+   \param varInfo Information about the Variable to read
+*/
+void OrxonoxGuiExec::readFileText(Widget* widget, void* varInfo)
+{
+  VarInfo* info =(VarInfo*)varInfo;
+  if(widget->title && !strcmp(widget->title, info->variableName))
+    {
+      PRINT(5)("Located Option %s.\n", widget->title);
+      if(widget->isOption >= 1)
+	static_cast<Option*>(widget)->load(info->variableValue);
+    }
+}
+
+/**
+   \brief Locates a Group.
+   \param widget The Widget from where to search from
+   \param groupName The GroupName for which to search.
+   \param depth The Depth of the search seen from the first widget we searched from.
+   \returns The Widget that holds the Group, or the NULL if the Group wasn't found.
+
+   \todo do this in gui-gtk.
+*/
+Widget* OrxonoxGuiExec::locateGroup(Widget* widget, char* groupName, int depth)
+{
+  Widget* tmp;
+
+  // removes the trailing and ending [ ].
+  if(!strncmp(groupName, "[", 1))
+    {
+      groupName = groupName+1;
+      groupName[strlen(groupName)-1] = '\0';
+    }
+
+  if(widget->isOption < 0)
+    {
+      if(static_cast<Packer*>(widget)->getGroupName() &&
+	 !strcmp(groupName, static_cast<Packer*>(widget)->getGroupName()))
+	{
+	  return widget;
+	}
+      else
+	{
+	  if((tmp = locateGroup(static_cast<Packer*>(widget)->down, groupName, depth+1)) != NULL)
+	    return tmp;
+	}
+    } 
+  
+  if(widget->next != NULL && depth != 0)
+    {
+      if((tmp = locateGroup(widget->next, groupName, depth)) != NULL)
+	return tmp;
+    }
+  return NULL;
+}
+
+/**
+   \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
+
+   This is a Signal and can be executed through Widget::signal_connect
+*/
+#ifdef HAVE_GTK2
+int OrxonoxGuiExec::startOrxonox(GtkWidget* widget, void* data)
+#else /* HAVE_GTK2 */
+int OrxonoxGuiExec::startOrxonox(void* widget, void* data)
+#endif /* HAVE_GTK2 */
+{
+  Window::mainWindow->hide();
+
+#ifdef HAVE_GTK2
+  gtk_widget_destroy(Window::mainWindow->widget);
+#else
+  quitGui(widget, data);
+#endif /* HAVE_GTK2 */
+
+  PRINT(3)("Starting Orxonox\n");
+  OrxonoxGui::startOrxonox = true;
+}
+
+/**
+   \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
+
+   This is a Signal and can be executed through Widget::signal_connect
+*/
+#ifdef HAVE_GTK2
+int OrxonoxGuiExec::quitGui(GtkWidget* widget, void* data)
+#else /* HAVE_GTK2 */
+int OrxonoxGuiExec::quitGui(void* widget, void* data)
+#endif /* HAVE_GTK2 */
+{
+  OrxonoxGuiExec* exec =(OrxonoxGuiExec*)data;
+  if(exec->shouldsave())
+    exec->writeToFile(Window::mainWindow);
+#ifdef HAVE_GTK2
+  gtk_main_quit();
+  while(gtk_events_pending()) gtk_main_iteration();
+#endif /* HAVE_GTK2 */
+}
Index: orxonox/trunk/src/lib/gui/gui/gui_exec.h
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui_exec.h	(revision 4054)
+++ orxonox/trunk/src/lib/gui/gui/gui_exec.h	(revision 4054)
@@ -0,0 +1,66 @@
+/*!
+  \file gui_exec.h
+  \brief File that holds the class that creates the execute-Options.
+*/
+
+#ifndef _GUI_EXEC_H
+#define _GUI_EXEC_H
+
+#include "gui.h"
+#include "gui_element.h"
+#include "gui_gtk.h"
+
+class Widget;
+class CheckButton;
+using namespace std;
+
+//! Class that creates the execute-Options.
+class OrxonoxGuiExec : public OrxonoxGuiElement
+{
+ private:
+  CheckButton* saveSettings;   //!< A CheckBox for if the Options should be saved.
+
+  char* confDir;               //!< The directory of the orxonox-configuration-files.
+  char* confFile;              //!< The name of the .orxonox.conf(ig)-file.
+  FILE* CONFIG_FILE;           //!< Filehandler for reading and writing.
+
+  //! A struct that holds informations about variables.
+  struct VarInfo
+  {
+    char* variableName;        //!< The Name of this variable;
+    char* variableValue;       //!< The Value this variable gets.
+  };
+
+ public:
+  OrxonoxGuiExec(void);
+  ~OrxonoxGuiExec(void);
+  
+  void setConfDir(const char* confDir);
+  void setConfFile(const char* confFile);
+  const char* getConfigFile(void) const;
+  int shouldsave(void);
+  void writeToFile(Widget* widget);
+  void writeFileText(Widget* widget, int depth);
+  void readFromFile(Widget* widget);
+  static void readFileText(Widget* widget, void* varInfo);
+  Widget* locateGroup(Widget* widget, char* groupName, int depth);
+
+#ifdef HAVE_GTK2
+  static int startOrxonox(GtkWidget *widget, void* data);
+  static int quitGui(GtkWidget *widget, void* data);
+#else /* HAVE_GTK2 */
+  static int startOrxonox(void* widget, void* data);
+  static int quitGui(void* widget, void* data);
+#endif /* HAVE_GTK2 */
+};
+
+//! A simple hashtable 
+struct HashTable
+{
+  char* name;           //!< name of the entry
+  char* value;          //!< value of the entry
+  HashTable* next;      //!< pointer to the next entry
+};
+
+
+#endif /* _GUI_EXEC_H */
Index: orxonox/trunk/src/lib/gui/gui/gui_flags.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui_flags.cc	(revision 4054)
+++ orxonox/trunk/src/lib/gui/gui/gui_flags.cc	(revision 4054)
@@ -0,0 +1,98 @@
+/* 
+   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.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
+
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+
+*/
+
+#include "gui_flags.h"
+
+/**
+   \brief Creates the Flags-Frame
+*/
+OrxonoxGuiFlags::OrxonoxGuiFlags(void)
+{
+  this->flagsFrame = new Frame("Orxonox-Startup-Flags:");
+  this->flagsBox = new Box('v');
+
+  this->flagsLabel = new Label();
+  this->flagsLabel->setSize(260,60);
+  this->flagsBox->fill(flagsLabel);
+  this->shortFlags = new CheckButton("shortFlags");
+  this->flagsBox->fill(shortFlags);
+
+  this->flagsFrame->fill(flagsBox);
+  this->setMainWidget(flagsFrame);
+}
+
+/**
+   \brief Destructs the Flags-stuff
+*/
+OrxonoxGuiFlags::~OrxonoxGuiFlags(void)
+{
+  // nothing to do here
+}
+
+/**
+   \brief Sets the Flags from widget downwards.
+   \param widget the Widget from which on to scan for deeper Options and their settings.
+*/
+void OrxonoxGuiFlags::setTextFromFlags(Widget* widget)
+{
+  FlagInfo flagInfo;
+  flagInfo.shortFlags = this->shortFlags;
+  flagInfo.flagsLabel = this->flagsLabel;
+
+  this->flagsLabel->ereaseText();
+  this->flagsLabel->appendText(executable);
+  widget->walkThrough(OrxonoxGuiFlags::flagsText, &flagInfo, 0);
+  //  flagsLabel->setTitle(flagText);
+}
+
+/** 
+    \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)
+{
+  FlagInfo* info =(FlagInfo*)flagInfo;
+  if(widget->isOption >= 1)
+    if (static_cast<Option*>(widget)->value != static_cast<Option*>(widget)->defaultValue )
+      {
+	if(info->shortFlags->isActive() && static_cast<Option*>(widget)->flagNameShort)
+	  {
+	    info->flagsLabel->appendText(" -");
+	    info->flagsLabel->appendText(static_cast<Option*>(widget)->flagNameShort);
+	  }
+	else if(!info->shortFlags->isActive() && static_cast<Option*>(widget)->flagName)
+	  {
+	    info->flagsLabel->appendText(" --");
+	    info->flagsLabel->appendText(static_cast<Option*>(widget)->flagName);
+	  }
+
+	if(static_cast<Option*>(widget)->isOption == 2)
+	  {
+	    info->flagsLabel->appendText("=");
+	    info->flagsLabel->appendInt(static_cast<Option*>(widget)->value);
+	  }
+      }
+}
Index: orxonox/trunk/src/lib/gui/gui/gui_flags.h
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui_flags.h	(revision 4054)
+++ orxonox/trunk/src/lib/gui/gui/gui_flags.h	(revision 4054)
@@ -0,0 +1,36 @@
+/*!
+  \file gui_flags.h
+  \brief File that holds the class that creates the flags-Text.
+*/
+
+#ifndef _GUI_FLAGS_H
+#define _GUI_FLAGS_H
+
+#include "gui.h"
+#include "gui_element.h"
+#include "gui_gtk.h"
+
+//! Class that creates the flags-Text.
+class OrxonoxGuiFlags : public OrxonoxGuiElement
+{
+ private:
+  Frame* flagsFrame;          //!< The Frame that holds the flagsDisplay.
+  Box* flagsBox;              //!< The Box that holds the flagsDisplay.
+  CheckButton* shortFlags;    //!< CheckButton to change the display of short and long flags \todo show long if long not availible...
+  Label* flagsLabel;          //!< The Label of the Flags
+
+ public:
+  OrxonoxGuiFlags(void);
+  ~OrxonoxGuiFlags(void);
+
+  void setTextFromFlags(Widget* widget);
+  static void flagsText(Widget* widget, void* flagInfo);
+  
+  //! Struct that handles flag information.
+  struct FlagInfo
+  {
+    CheckButton* shortFlags;     //!< Button for the flag.
+    Label* flagsLabel;           //!< Label for the flag.
+  };
+};
+#endif /* _GUI_FLAGS_H */
Index: orxonox/trunk/src/lib/gui/gui/gui_gtk.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui_gtk.cc	(revision 4054)
+++ orxonox/trunk/src/lib/gui/gui/gui_gtk.cc	(revision 4054)
@@ -0,0 +1,1725 @@
+/* 
+   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.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
+
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+
+*/
+
+
+#include "gui_gtk.h"
+
+#include <stdarg.h>
+#include <string.h>
+#include <stdlib.h>
+
+using namespace std;
+
+#include "gui_flags.h"
+extern OrxonoxGuiFlags* flags;
+
+char* executable;
+
+/**
+   \brief Initializes the Guis GTK-stuff.
+   \param argc the argument count.
+   \param argv The Argument strings.
+*/
+bool initGUI(int argc, char *argv[])
+{
+  executable = new char[strlen(argv[0])+1];
+  strcpy(executable, argv[0]);
+
+#ifdef HAVE_GTK2
+#ifdef HAVE_GTHREAD
+  PRINTF(4)("Initializing the ThreadSystem of the GUI\n");
+  g_thread_init(NULL);
+  gdk_threads_init();
+#endif /* HAVE_GTHREAD */
+  gtk_init(&argc, &argv);
+#include "rc"
+  gtk_rc_parse_string( rc_string );
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \brief enters the GUI's main-loop
+*/
+bool mainloopGUI(void)
+{
+#ifdef HAVE_GTK2
+  gdk_threads_enter();
+  gtk_main();
+  gdk_threads_leave();
+  delete Window::mainWindow;
+#else /* HAVE_GTK2 */
+  char boolAns = 'y';
+  char ans[1000];
+  PRINT(0)("================================\n");
+  PRINT(0)("= ORXONOX CONFIGURATION WIZARD =\n");
+  PRINT(0)("================================ - v." PACKAGE_VERSION "\n");
+
+  while(true)
+    {
+      PRINT(0)("\n Listing all the Orxonox Options: \n");
+      PRINT(0)("  #############################\n");
+      Window::mainWindow->walkThrough(Widget::listOptionsAndGroups, 1);
+      
+      PRINT(0)("\nDo you want change any of the above values now? [Yn] ");
+      scanf("%s", ans);
+      if (ans[0] =='n' || ans[0]=='N')
+	break;
+      
+      PRINT(0)("\n Listing all groups\n");
+      PRINT(0)("  #################\n");
+      int groupCount = 0;
+      Window::mainWindow->walkThrough(Widget::listGroups, &groupCount, 1);
+      
+      PRINT(0)("\nIn which Group? [1-%d] ", groupCount);
+      Packer* group;
+      while(true)
+	{
+	  scanf("%s", ans);
+	  int ansIp = atoi(ans);
+	  if (ansIp <= groupCount)
+	    {
+	      group = static_cast<Packer*>(Window::mainWindow->findGroupByNumber(&ansIp, 1));
+	      break;
+	    }
+	  else
+	    PRINT(0)("\nChoose a smaller Number please: [1-%d] ", groupCount);
+	}
+      PRINT(0)("\n\nGroup: [%s]\n\n", group->groupName);
+      int optionCount = 0;
+      group->walkThrough(Widget::listOptions, &optionCount, 0);
+      PRINT(0)("\nWhich Option? [1-%d] ", optionCount);
+      Option* option;
+      while(true)
+	{
+	  scanf("%s", ans);
+	  int ansIp = atoi(ans);
+	  if (ansIp <= groupCount)
+	    {
+	      option = static_cast<Option*>(group->findOptionByNumber(&ansIp, 0));
+	      break;
+	    }
+	  else
+	    PRINT(0)("\nChoose a smaler Number please: [1-%d] ", optionCount);
+	}
+      PRINT(0)("\n\n:: %s ::\n", option->title);
+      option->changeOption();
+      
+      // here follows the rest.... this will be nasty.
+      //! \todo move this into the gui-gtk-file
+      //! \todo finish it.
+      //! \todo memory leek at save(); and save is a BAD word, use saveString instead, or something like it.
+    }
+#endif /* HAVE_GTK2 */
+  
+}
+
+
+//////////////////////////////
+/// DEFINING WIDGET-CLASES ///
+//////////////////////////////
+
+////////////
+/* WIDGET */
+////////////
+/**
+   \brief constructs a Widget
+*/
+Widget::Widget(void)
+{
+  next = NULL;
+  this->title = NULL;
+}
+
+/**
+   \brief deletes any given Widget
+   This is still pretty crappy.
+*/
+Widget::~Widget(void)
+{
+  if (this->title)
+    {
+      delete []this->title;
+    }
+  
+  PRINTF(5)("deleting the Widget part.\n");
+
+  // deleting next item if existent
+  if (this->next)
+    delete this->next;
+  this->next = NULL;
+
+  //!  \todo not hiding widget, deleting.
+  //  this->hide();
+  // gtk_destroy_widget(this->widget);
+}
+
+/**
+   \brief sets a new Title to a Widget
+   \param title The new Title to set to the Widget
+*/
+void Widget::setTitle(const char* title)
+{
+  if (this->title)
+    delete []this->title;
+  this->title = new char[strlen(title)+1];
+  strcpy(this->title, title);
+}
+
+/**
+   \brief makes the widget visible.
+*/
+void Widget::show(void)
+{
+#ifdef HAVE_GTK2
+  gtk_widget_show(this->widget);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \brief hides the widget.
+*/
+void Widget::hide(void)
+{
+#ifdef HAVE_GTK2
+  gtk_widget_hide(this->widget);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \brief Sets the resolution of a specific widget to the given size.
+   \param width the width of the widget to set.
+   \param height the height of the widget to set.
+*/
+void Widget::setSize(int width, int height)
+{
+#ifdef HAVE_GTK2
+  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)
+{
+
+  if (this->title && !strcmp(this->title, name))
+    return this;
+
+  if (this->isOption < 0 && static_cast<Packer*>(this)->down)
+    {
+      Widget* 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;
+}
+
+/**
+   \brief Moves through all the Widgets downwards from this and executes the function on them.
+   \param function must be of type void and takes a Widget* as an Input. 
+   \param depth the current depth. if > 0 then the next Widget will also be walked through.
+*/
+void Widget::walkThrough(void(*function)(Widget*), unsigned int depth)
+{
+  function(this);
+  if (this->isOption < 0)
+    {
+      static_cast<Packer*>(this)->down->walkThrough(function, depth+1);
+    } 
+
+  if (this->next && depth != 0)
+    this->next->walkThrough(function, depth);
+}
+
+/**
+   \brief Moves through all the Widgets downwards from this and executes the function on them.
+   \param function must be of type void and takes a Widget* as an Input.
+   \param data Additional Data you want to pass to the function.
+   \param depth the current depth. if > 0 then the next Widget will also be walked through.
+*/
+void Widget::walkThrough(void(*function)(Widget*, void*), void* data, unsigned int depth)
+{
+  function(this, data);
+  if (this->isOption < 0)
+    {
+      static_cast<Packer*>(this)->down->walkThrough(function, data, depth+1);
+    }
+  if (this->next && depth != 0)
+    this->next->walkThrough(function, data, depth);
+}
+
+/** 
+    \brief This is for listing the options of "widget"
+    \param widget specifies the widget that should be listed
+*/
+void Widget::listOptionsAndGroups(Widget* widget)
+{
+  if (widget->isOption < 0 && static_cast<Packer*>(widget)->groupName)
+    PRINT(0)("[%s]\n", static_cast<Packer*>(widget)->groupName);
+  if (widget->isOption >= 1)
+    {
+      Widget::listOptions(widget);
+    }
+}
+
+/** 
+    \brief This is for listing the options of "widget"
+    \param widget specifies the widget that should be listed
+*/
+void Widget::listOptions(Widget* widget)
+{
+  if(widget->isOption >= 1)
+    PRINT(0)("  %s is %s\n", static_cast<Option*>(widget)->title, static_cast<Option*>(widget)->save());
+}
+
+/** 
+    \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::listOptions(Widget* widget, void* data)
+{
+  
+  if (widget->isOption >= 1)
+    {
+      int* count =(int*)data;
+      *count = *count +1;
+      PRINT(0)(" %d:%s is %s\n", *count,
+	       static_cast<Option*>(widget)->title,
+	       static_cast<Option*>(widget)->save());
+    }
+}
+
+/** 
+    \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)
+    \param depth The depth of the sarch. if 0 it will not search next pointer
+    
+    \todo should return Option* would be much sexier.
+*/
+Widget* Widget::findOptionByNumber(int* number, unsigned int depth)
+{
+  if (isOption > 0)
+    {
+      --*number;
+      if (*number <= 0)
+	{
+	  return this;
+	}
+    }
+  if (this->isOption < 0 && static_cast<Packer*>(this)->down)
+    {
+      Widget* tmp = static_cast<Packer*>(this)->down->findOptionByNumber(number, depth+1);
+      if (tmp)
+	return tmp;
+    }
+  if (depth>0 && this->next)
+    return this->next->findOptionByNumber(number, depth);
+
+  return NULL;
+}
+
+/** 
+    \brief This is for listing the groups of "widget"
+    \param widget specifies the widget that should be listed
+*/
+void Widget::listGroups(Widget* widget)
+{
+  if (widget->isOption < 0 && static_cast<Packer*>(widget)->groupName)
+    PRINT(0)("[%s]\n", static_cast<Packer*>(widget)->groupName);
+}
+
+/** 
+    \brief This is for listing the Groups of "widget". It also displays the n'th number found.
+    \param widget specifies the widget that should be listed
+    \param data the Counter, that will show the number(this function will raise it by one if a Group is fount.
+*/
+void Widget::listGroups(Widget* widget, void* data)
+{
+  int* count = (int*)data;
+  if (widget->isOption < 0 && static_cast<Packer*>(widget)->groupName)
+    PRINT(0)("%d: [%s]\n", ++*count, static_cast<Packer*>(widget)->groupName);
+}
+
+/** 
+    \brief Finds a Group by a given number(the n'th Group found away from this Widget)
+    \param number The Count of options to wait(by reference)
+    \param depth The depth of the sarch. if 0 it will not search next pointer
+*/
+Widget* Widget::findGroupByNumber(int* number, unsigned int depth)
+{
+  if (isOption < 0 && static_cast<Packer*>(this)->groupName)
+    {
+      --*number;
+      if (*number <= 0)
+	{
+	  return this;
+	}
+    }
+  if (this->isOption < 0 && static_cast<Packer*>(this)->down)
+    {
+      Widget* tmp = static_cast<Packer*>(this)->down->findGroupByNumber(number, depth+1);
+      if (tmp)
+	return tmp;
+    }
+  if (depth>0 && this->next)
+    return this->next->findGroupByNumber(number, depth);
+
+  return NULL;
+}
+ 
+/** 
+    \brief This is for setting the option of "widget"
+    \param widget specifies the widget that should be set.
+*/
+void Widget::setOptions(Widget* widget)
+{
+  if (widget->isOption >= 1)
+    static_cast<Option*>(widget)->redraw();
+}
+
+/**
+   \brief Walks through all the Flags given at startuptime.
+*/
+void Widget::flagCheck(Widget* widget, void* flagName)
+{
+  if (widget->isOption>=1)
+    {      
+      Option* option =(Option*)widget;
+      char* name =(char*)flagName;
+      char* value = NULL;
+      bool found = false;
+      // check if long flag matches
+      if ((option->flagName && strlen(name) > 2 &&
+	   !strncmp(name+2, option->flagName, strlen(option->flagName)) &&
+	   (name[strlen(option->flagName)+2] == '\0' || name[strlen(option->flagName)+2] == '=') ))
+	{
+	  found = true;
+	  if (name[strlen(option->flagName)+2] == '=')
+	    {
+	      value = name+strlen(option->flagName)+3;
+	    }
+	}
+      // check if short flag matches
+      else if (option->flagNameShort && strlen(name)>1 &&
+	       !strncmp(name+1, option->flagNameShort, strlen(option->flagNameShort)) &&
+	       (name[strlen(option->flagNameShort)+1] == '\0' || name[strlen(option->flagNameShort)+1] == '='))
+	{
+	  found = true;
+	  if (name[strlen(option->flagNameShort)+1] == '=')
+	    {
+	      value = name+strlen(option->flagNameShort)+2;
+	    }	  
+	}
+
+      if (found)
+	{
+	  PRINT(4)("found matching Flag %s\n", name);
+	  if (value)
+	    {
+	      PRINT(4)("with Value %s\n", value);
+	      option->value = atoi(value);
+	    }
+	  else
+	    {
+	      option->value = !option->defaultValue;
+	    }
+	  option->redraw();
+	}
+
+    }
+}
+
+#ifdef HAVE_GTK2
+/** 
+    \brief Connect any signal to any given Sub-widget
+*/
+gulong Widget::connectSignal(char* event, gint(*signal)(GtkWidget*, GdkEvent*, void *))
+{
+  return g_signal_connect(G_OBJECT(this->widget), event, G_CALLBACK(signal), NULL);
+}
+
+/**
+   \brief Connect a signal with additionally passing the whole Object
+*/
+gulong Widget::connectSignal(char* event, gint(*signal)( GtkWidget*, Widget *))
+{
+  return g_signal_connect(G_OBJECT(this->widget), event, G_CALLBACK(signal), this);
+}
+
+/**
+   \brief Connect a signal with additionally passing a whole external Object
+*/
+gulong Widget::connectSignal(char* event, void* extObj, gint(*signal)(GtkWidget*, GdkEvent*, 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*, 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 *))
+{
+  return g_signal_connect(G_OBJECT(this->widget), event, G_CALLBACK(signal), extObj);
+}
+
+void Widget::disconnectSignal(gulong signalID)
+{
+  g_signal_handler_disconnect(G_OBJECT(this->widget), signalID);
+}
+
+/**
+   \brief Signal that does absolutely nothing
+   \param widget The widget that initiated the Signal
+   \param event The event-type.
+   \param nothing nothin.
+*/
+gint Widget::doNothingSignal(GtkWidget *widget, GdkEvent* event, void* nothing)
+{
+}
+#endif /* HAVE_GTK2 */
+
+/////////////
+/* PACKERS */
+/////////////
+/**
+   \brief Constructs a Packer
+*/
+Packer::Packer(void)
+{
+  this->down = NULL;
+  this->groupName = NULL;
+}
+
+/**
+   \brief Destroys a Packer.
+*/
+Packer::~Packer(void)
+{ 
+  PRINTF(5)("deleting the Packer part.\n");
+  if (this->groupName)
+    delete []this->groupName;
+  
+  //deleting recursively.
+  if (this->down)
+    delete this->down;
+}
+
+/**
+   \brief Sets the group name under which all the lower widgets of this will be saved.
+   \param name The name of the group.
+*/
+void Packer::setGroupName(const char* name)
+{
+  if (this->groupName)
+    delete []this->groupName;
+  this->groupName = new char[strlen(name)+1];
+  strcpy(this->groupName, name);
+}
+
+////////////////
+/* CONTAINERS */
+////////////////
+/**
+   \brief Initializes a Container.
+
+   sets the Container-Specific defaults.
+*/
+Container::Container(void)
+{
+  this->isOption = -1;
+}
+
+/**
+   \brief Destroys a Container.
+*/
+Container::~Container(void)
+{ 
+  PRINTF(5)("deleting the Container part.\n");
+}
+
+/**
+   \briefFills a Container with lowerWidget.
+   \param lowerWidget the Widget that should be filled into the Container.
+
+   It does this by filling up the down pointer only if down points to NULL.
+*/
+void Container::fill(Widget* lowerWidget)
+{
+  if (this->down == NULL)
+    {
+#ifdef HAVE_GTK2
+      gtk_container_add(GTK_CONTAINER(this->widget), lowerWidget->widget);
+#endif /* HAVE_GTK2 */
+
+      this->down = lowerWidget;
+    }
+  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");
+}
+
+/**
+   \param borderwidth sets the Width of the border
+*/
+void Container::setBorderWidth(int borderwidth)
+{
+  this->borderwidth = borderwidth;
+
+#ifdef HAVE_GTK2
+  gtk_container_set_border_width(GTK_CONTAINER(widget), borderwidth);
+#endif /* HAVE_GTK2 */
+}
+
+////////////
+/* WINDOW */
+////////////
+
+/**
+   \brief The main Window of Th Gui
+*/
+Window* Window::mainWindow = NULL;      
+
+/**
+   \brief Creating a Window with a name
+   \param windowName the name the window should get.
+*/
+Window::Window(const char* windowName)
+{
+  if (!mainWindow)
+    {
+      mainWindow = this;
+      this->isOpen = true;
+    }
+  isOpen = false;
+
+#ifdef HAVE_GTK2
+  widget = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+  gtk_window_set_policy(GTK_WINDOW(widget), TRUE, TRUE, TRUE);
+#if !defined(__WIN32__)
+  //  gtk_window_set_decorated(GTK_WINDOW(widget), FALSE);
+#endif 
+  gtk_container_set_border_width(GTK_CONTAINER(widget), 3);
+#endif /* HAVE_GTK2 */
+
+  if (windowName)
+    this->setTitle(windowName);
+}
+
+/**
+   \brief Destructs a Window.
+*/
+Window::~Window(void)
+{
+  PRINTF(5)("deleting the Window: %s\n", this->title);
+}
+
+/**
+   \brief Adds a new Window Windows to the List of Windows.
+   \param windowToAdd The Windows that should be added to the List
+   \todo this instead of windowToAdd(possibly)
+*/
+void Window::addWindow(Window* windowToAdd)
+{
+  if (!mainWindow)
+    {
+      mainWindow = windowToAdd;
+      windowToAdd->isOpen = true;
+    }
+  else
+    {
+      Widget* tmpWindow = mainWindow;
+      while(tmpWindow->next)
+	tmpWindow = tmpWindow->next;
+      tmpWindow->next = windowToAdd;
+      windowToAdd->isOpen = false;
+    }
+  return;
+}
+
+/**
+   \brief Shows all Widgets that are included within this->widget.
+*/
+void Window::showall(void)
+{
+#ifdef HAVE_GTK2
+  if (!this->isOpen)
+    gtk_widget_show_all(this->widget);
+  else
+    gtk_widget_show(this->widget);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \brief Set The Window-title to title
+   \param title title the Window should get.
+*/
+void Window::setTitle(const char* title)
+{
+  if (this->title)
+    delete []this->title;
+  this->title = new char[strlen(title)+1];
+  strcpy(this->title, title);
+#ifdef HAVE_GTK2
+  gtk_window_set_title(GTK_WINDOW(widget), title);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \brief opens up a Window and fixes the Focus to it
+*/
+void Window::open(void)
+{
+  if (this != mainWindow)
+    {
+      isOpen = true;
+#ifdef HAVE_GTK2
+      gtk_widget_show_all(this->widget);
+      gtk_grab_add(this->widget);
+#endif /* HAVE_GTK2 */
+    }
+}
+
+/**
+   \brief closes up a Window and removes the Focus from it
+*/
+void Window::close(void)
+{
+  if (this != mainWindow)
+    {
+      this->isOpen = false;
+#ifdef HAVE_GTK2
+      gtk_grab_remove(this->widget);
+      gtk_widget_hide(this->widget);
+#endif /* HAVE_GTK2 */
+    }
+}
+
+/**
+   \brief opens up a window(not topmost Window).
+   this is the Signal that does it. !!SIGNALS ARE STATIC!!
+   \param widget the widget that did it.
+   \param event the event that did it.
+   \param window the Window that should be opened
+*/
+#ifdef HAVE_GTK2
+gint Window::windowOpen(GtkWidget* widget, GdkEvent* event, void* window)
+{
+  static_cast<Window*>(window)->open();
+}
+#else /* HAVE_GTK2 */
+int Window::windowOpen(void* widget, void* event, void* window){}
+#endif /* HAVE_GTK2 */
+
+/**
+   \brief closes a window(not topmost Window).
+   this is the Signal that does it. !!SIGNALS ARE STATIC!!
+   \param widget the widget that did it!
+   \param event the event that did it!
+   \param window the Window that should be closed
+*/
+#ifdef HAVE_GTK2
+gint Window::windowClose(GtkWidget* widget, GdkEvent* event, void* window)
+{
+  static_cast<Window*>(window)->close();
+}
+#else /* HAVE_GTK2 */
+int Window::windowClose(void* widget, void* event, void* window){}
+#endif /* HAVE_GTK2 */
+
+///////////
+/* FRAME */
+///////////
+/**
+   \brief Creates a new Frame with name title
+*/
+Frame::Frame(char* frameName)
+{
+#ifdef HAVE_GTK2
+  this->widget = gtk_frame_new("");
+  gtk_container_set_border_width(GTK_CONTAINER(this->widget), 3);
+#endif /* HAVE_GTK2 */
+  if (title)
+    this->setTitle(frameName);
+}
+
+/**
+   \brief destrcucts a Frame
+*/
+Frame::~Frame(void)
+{
+  PRINTF(5)("deleting the Frame: %s\n", this->title);
+}
+
+/**
+   \brief Sets the Frames name to title
+   \param title The title the Frame should get.
+*/
+void Frame::setTitle(const char* title)
+{
+  if (this->title)
+    delete []this->title;
+  this->title = new char[strlen(title)+1];
+  strcpy(this->title, title);
+#ifdef HAVE_GTK2
+  gtk_frame_set_label(GTK_FRAME(widget), title);
+#endif /* HAVE_GTK2 */
+}
+
+//////////////
+/* EVENTBOX */
+//////////////
+/**
+   \brief Creates a new EventBox with name title
+   \param eventBoxName title the Eventbox should get(only data-structure-internal)
+*/
+EventBox::EventBox(const char* eventBoxName)
+{
+  this->isOption = -1;
+
+#ifdef HAVE_GTK2
+  this->widget = gtk_event_box_new();
+  gtk_container_set_border_width(GTK_CONTAINER(this->widget), 3);
+#endif /* HAVE_GTK2 */
+
+  if (eventBoxName)
+    this->setTitle(eventBoxName);
+}
+
+/**
+   \brief destructs an EventBox.
+*/
+EventBox::~EventBox(void)
+{
+  PRINTF(5)("deleting the EventBox: %s\n", this->title);
+}
+
+/////////
+/* BOX */
+/////////
+/**
+   \brief Creates a new Box of type boxtype
+   \param boxtype if 'v' the Box will be vertically, if 'h' the Box will be horizontally
+*/
+Box::Box(char boxtype)
+{
+  this->isOption = -2;
+
+#ifdef HAVE_GTK2
+  if (boxtype == 'v')
+    this->widget = gtk_vbox_new(FALSE, 0);
+  else
+    this->widget = gtk_hbox_new(FALSE, 0);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \brief destructs a Box.
+*/
+Box::~Box(void)
+{
+  PRINTF(5)("deleting the Box: %s\n", this->title);
+}
+
+/** 
+    \brief Fills a box with a given Widget.
+    \param lowerWidget the next Widget that should be appendet to this Box
+
+    It does this by apending the first one to its down-pointer and all its following ones to the preceding next-pointer. The last one will receive a NULL pointer as Next
+*/
+void Box::fill(Widget* lowerWidget)
+{
+#ifdef HAVE_GTK2
+  gtk_box_pack_start(GTK_BOX(this->widget), lowerWidget->widget, TRUE, TRUE, 0);
+#endif /* HAVE_GTK2 */
+  if (this->down == NULL)
+    this->down = lowerWidget;
+  else
+    {
+      Widget* tmp;
+      tmp = this->down;
+      while(tmp->next != NULL)
+	tmp = tmp->next;
+      tmp->next = lowerWidget;
+    }
+}
+
+////////////
+/* OPTION */
+////////////
+/**
+   \brief Initializes a new Option.
+   sets all Option-Specific-Values to their defaults.
+*/
+Option::Option(void)
+{
+  this->value = 0;
+  this->flagName = NULL;
+  this->flagNameShort = NULL;
+  
+  this->shortDescription = NULL;
+  this->longDescription = NULL;
+
+  this->saveable = false;
+  this->defaultValue = 0;
+}
+
+/**
+   \brief Destroys an Option.
+*/
+Option::~Option(void)
+{ 
+  PRINTF(5)("deleting the Option Part.\n");
+  if (this->flagName)
+    delete []this->flagName;
+  if (this->flagNameShort)
+    delete []this->flagNameShort;
+  if (this->shortDescription)
+    delete []this->shortDescription;
+  if (this->longDescription)
+    delete []this->longDescription;
+}
+
+/**
+   \brief This sets The FlagName of an Option and defines its default Values
+   !! Options will be saved if flagname is different from NULL !!
+   \param flagname the Name that will be displayed in the output
+   \param defaultvalue the default Value for this Option(see definition of defaultvalue
+*/
+void Option::setFlagName(const char* flagname, int defaultvalue)
+{
+  if (this->flagName)
+    delete this->flagName;
+  this->flagName = new char [strlen(flagname)+1];
+  strcpy(this->flagName, flagname);
+
+  this->defaultValue = defaultvalue;
+
+  if (this->flagNameShort)
+    {
+      delete this->flagNameShort;
+      this->flagNameShort = NULL;
+    }
+
+  //  cout << "Set Flagname of " << this->title << " to " << flagname << endl;
+}
+
+/** 
+    \brief see Option::setFlagName(char* flagname, int defaultvalue)
+    \param flagname the Name that will be displayed in the output
+    \param defaultvalue the default Value for this Option(see definition of defaultvalue
+    \param flagnameshort a short flagname to be displayed in the output
+*/
+void Option::setFlagName(const char* flagname, const char* flagnameshort,  int defaultvalue)
+{
+  if (this->flagName)
+    delete []this->flagName;
+  this->flagName = new char [strlen(flagname)+1];
+  strcpy(this->flagName, flagname);
+
+  if (this->flagNameShort)
+    delete []this->flagNameShort;
+  this->flagNameShort = new char [strlen(flagnameshort)+1];
+  strcpy(this->flagNameShort, flagnameshort);
+  this->defaultValue = defaultvalue;
+  //  cout << "Set Flagname of " << this->title << " to " << flagname << endl;
+}
+
+void Option::setDescription(const char* shortDescription, const char* longDescription)
+{
+  // setting up the short description
+  if (this->shortDescription)
+    delete []this->shortDescription;
+  this->shortDescription = new char [strlen(shortDescription)+1];
+  strcpy(this->shortDescription, shortDescription);
+
+  //setting up the long description
+  if (this->longDescription)
+    delete []this->longDescription;
+  if (longDescription)
+    {
+      this->longDescription = new char [strlen(longDescription)+1];
+      strcpy(this->longDescription, longDescription);
+    }
+  else
+    this->longDescription = NULL;
+}
+
+/**
+   \brief Sets the saveable-state of the option.
+   \param isSaveable the saveable-state to set.
+*/
+void Option::saveability(bool isSaveable)
+{
+  this->saveable = isSaveable;
+}
+
+/**
+   \brief saves an Option
+   \returns the String that should be saved. (this string __should__ be deleted)
+
+   this is a default Option save
+*/
+char* Option::save(void)
+{
+  char* value = new char [30];
+  sprintf (value, "%d", this->value);
+  return value;
+}
+
+/**
+   \brief loads an Option from of its loadString
+   \param loadString the string from which to load the data from
+*/
+void Option::load(char* loadString)
+{
+  this->value = atoi(loadString);
+  PRINT(5)("Loading %s: %s %d\n", this->title, loadString, value); 
+  this->redraw();
+}
+
+/**
+   \returns The saveable-state.
+*/
+bool Option::isSaveable(void)
+{
+  return this->saveable;
+}
+
+#ifdef HAVE_GTK2
+/** 
+    \brief Signal OptionChange writes the Value from the Slider to its Object-Database.
+    \param widget The widget(Slider) that has a changed Value
+    \param slider the Slider-Object that should receive the change.
+*/
+gint Option::OptionChange(GtkWidget *widget, Widget* option)
+{
+  static_cast<Option*>(option)->changeOption();
+  flags->setTextFromFlags(Window::mainWindow);  //// must be different !!!
+}
+#endif /* HAVE_GTK2 */
+
+////////////
+/* BUTTON */
+////////////
+/**
+   \brief Creates a new Button with a buttonname
+   \param buttonName sets the Name of the Button
+*/
+Button::Button(char* buttonName)
+{
+  isOption = 0;
+
+#ifdef HAVE_GTK2
+  widget = gtk_button_new_with_label("");
+#endif /* HAVE_GTK2 */
+
+  if (buttonName)
+    this->setTitle(buttonName);
+}
+
+/**
+   \brief destructs a Button.
+*/
+Button::~Button(void)
+{
+  PRINTF(5)("deleting the Label: %s\n", this->title);
+}
+
+/**
+   \brief Sets a new name to the Button
+   \param title The name the Button should get
+*/
+void Button::setTitle(const char *title)
+{
+  if (this->title)
+    delete []this->title;
+  this->title = new char[strlen(title)+1];
+  strcpy(this->title, title);
+#ifdef HAVE_GTK2
+  gtk_button_set_label(GTK_BUTTON(widget), title);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \brief redraws the Button
+   \todo not implemented yet
+*/
+void Button::redraw(void)
+{
+}
+
+/**
+   \brief Button can not be changed, optionChange is empty)
+
+   \todo Actions for non-GTK-mode
+*/
+void Button::changeOption(void)
+{
+  // This will possibly be used for ACTIONS !
+}
+
+/////////////////
+/* CHECKBUTTON */
+/////////////////
+/**
+   \brief Creates a new CheckButton with an ame 
+   \param buttonName The name the CheckButton should display.
+*/
+CheckButton::CheckButton(const char* buttonName)
+{
+  this->isOption = 1;
+
+#ifdef HAVE_GTK2
+  this->widget = gtk_check_button_new_with_label("");
+#endif /* HAVE_GTK2 */
+
+  if (buttonName)
+    this->setTitle(buttonName);
+
+#ifdef HAVE_GTK2
+  this->connectSignal("clicked", this->OptionChange);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \brief destructs a CheckButton.
+*/
+CheckButton::~CheckButton(void)
+{
+  if (this->title)
+    PRINTF(5)("deleting the CheckButton: %s\n", this->title);
+  else 
+    PRINTF(5)("deleting the CheckButton.\n");
+}
+
+/**
+   \brief Sets a new Title to a CheckButton
+   \param title The new Name the CheckButton should display.
+*/
+void CheckButton::setTitle(const char* title)
+{
+  if (this->title)
+    delete []this->title;
+  this->title = new char[strlen(title)+1];
+  strcpy(this->title, title);
+#ifdef HAVE_GTK2
+  gtk_button_set_label(GTK_BUTTON(widget), title);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \returns the Active state of the checkButton
+*/
+bool CheckButton::isActive(void)
+{
+#ifdef HAVE_GTK2
+  return gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \brief Changed the Option, call this Function
+*/
+void CheckButton::changeOption(void)
+{
+#ifdef HAVE_GTK2
+  this->value =(int)gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(this->widget));
+#else /* HAVE_GTK2 */
+  char tmpChar[200];
+  PRINT(0)("\nPlease give me a new value for %s [0,1](default:%d): ",this->title, this->defaultValue);
+  scanf("%s", tmpChar);
+
+  if ((this->value = atoi(tmpChar))=!0)
+    this->value = 1;
+#endif /* HAVE_GTK2 */
+  PRINT(0)("%s set to: %d\n", this->title, this->value);
+}
+
+/**
+   \brief Redraws the CheckButton(if option has changed).
+   Example: if new settings are loaded the Button must be redrawn for the GUI to display that Change
+*/
+void CheckButton::redraw(void)
+{
+#ifdef HAVE_GTK2
+  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(this->widget), value);
+#endif /* HAVE_GTK2 */
+}
+
+////////////
+/* SLIDER */
+////////////
+/**
+   \brief Creates a new Slider
+   \param slidername The data-structure-name of the slider.
+   \param start The minimal Value of the slider.
+   \param end The maximal Value of the slider.
+*/
+Slider::Slider(const char* slidername, int start, int end)
+{
+  this->isOption = 2;
+
+  this->start = start;
+  this->end = end;
+#ifdef HAVE_GTK2
+ widget = gtk_hscale_new_with_range(this->start, this->end, 5);
+#endif /* HAVE_GTK2 */
+
+  this->setValue(start);
+  this->setTitle(slidername);
+#ifdef HAVE_GTK2
+  this->connectSignal("value_changed", this->OptionChange);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \brief destructs a Slider.
+*/
+Slider::~Slider(void)
+{
+  PRINTF(5)("deleting the Slider: %s\n", this->title);
+}
+
+/**
+   \brief Setting a new value to the Slider.
+   Maybe you also require a Slider::redraw() for this to display
+*/
+void Slider::setValue(int value)
+{
+  this->value = value;
+}
+
+/**
+   \brief Redraws the widget
+   Example: see void CheckButton::redraw(void)
+*/
+void Slider::redraw(void)
+{
+#ifdef HAVE_GTK2
+  gtk_range_set_value(GTK_RANGE(this->widget), this->value);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \brief Changed the Option, call this Function
+*/
+void Slider::changeOption(void)
+{
+#ifdef HAVE_GTK2
+  this->value =(int)gtk_range_get_value(GTK_RANGE(this->widget));
+#else /* HAVE_GTK2 */
+  char tmpChar[20];
+  PRINT(0)("\nPlease give me a new value for %s [%d-%d] (default:%d): ", this->title, this->start, this->end, this->defaultValue);
+  scanf("%s", tmpChar);
+
+  if ((this->value = atoi(tmpChar))> this->end)
+    this->value = this->end;
+  if (this->value <= this->start)
+    this->value = this->start;
+#endif /* HAVE_GTK2 */
+  PRINT(0)("%s set to: %d\n",this->title, this->value);
+}
+
+//////////
+/* MENU */
+//////////
+/**
+   \brief constructs a new Menu, without adding any items to it.
+   \param menuName the Name the Menu gets.
+*/
+Menu::Menu(const char* menuName)
+{
+  this->init();
+  this->setTitle(menuName);
+}
+
+/** 
+    \brief Creates a Menu-Item-list out of multiple input.
+    !! Consider, that the last input argument has to be "lastItem" for this to work!!
+    \param menuname The Database-Name of this Menu
+    \param ... items to be added to this Menu. !! Consider, that the last input argument has to be "lastItem" for this to work!!
+*/
+Menu::Menu(char* menuname, ...)
+{
+  this->init();
+  this->setTitle(menuname);
+  va_list itemlist;                     //!< The list to readin multiple Options.
+
+  char *itemName;
+
+  va_start(itemlist, menuname);
+  while(strcmp(itemName = va_arg(itemlist, char*), "lastItem"))
+    {
+      this->addItem(itemName);
+    }
+  va_end(itemlist);
+}
+
+/**
+   \brief destructs a Menu.
+*/
+Menu::~Menu(void)
+{
+  PRINTF(5)("deleting the Menu: %s\n", this->title);
+  this->currItem = this->firstItem;
+  while(this->currItem)
+    {
+      delete []this->currItem->name;
+      //! \todo destroy menu
+      /*
+	#ifdef HAVE_GTK2
+	gtk_widget_destroy(this->currItem->item);
+	#endif /* HAVE_GTK2 */
+      MenuItem* tmpItem = this->currItem;
+      this->currItem = this->currItem->next;
+      delete tmpItem;
+    }
+}
+
+/**
+   \brief Initializes a new Menu with no items
+*/
+void Menu::init(void)
+{
+  this->isOption = 2;
+  this->firstItem = NULL;
+
+#ifdef HAVE_GTK2
+  this->widget = gtk_option_menu_new();
+  this->menu = gtk_menu_new();
+  gtk_option_menu_set_menu(GTK_OPTION_MENU(this->widget), menu);
+  this->connectSignal("changed", this->OptionChange);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \brief saves the Label of the Menu
+   \returns the name of the selected Menu-Item
+*/
+char* Menu::save(void)
+{
+  MenuItem* tmpItem = this->firstItem;
+  for (int i = 0; i<this->value; i++)
+    tmpItem = tmpItem->next;
+      
+  return tmpItem->name;
+}
+
+/**
+   \brief loads a Menu from of its loadString
+   \param loadString the string from which to load the data from
+*/
+void Menu::load(char* loadString)
+{
+  MenuItem* tmpItem = firstItem;
+  bool foundItem = false;
+  while (tmpItem)
+    {
+      if (!strcmp(loadString, tmpItem->name))
+	{foundItem = true; break;}
+      tmpItem = tmpItem->next;
+    }
+  if (foundItem)
+    this->value = tmpItem->itemNumber;
+  else
+    {
+      this->value = 0;
+      PRINTF(2)("Sorry, but %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); 
+  this->redraw();
+}
+
+/**
+   \brief appends a new Item to the Menu-List.
+   \param itemName the itemName to be appendet.
+*/
+void Menu::addItem(char* itemName)
+{
+  if (!this->firstItem)
+    {
+      this->firstItem = this->currItem = new MenuItem;
+      this->currItem->itemNumber = 0;
+    }
+  else
+    {
+      int tmpI = this->currItem->itemNumber;
+      this->currItem = this->currItem->next = new MenuItem;
+      this->currItem->itemNumber = tmpI+1;
+    }
+
+  this->currItem->name = new char[strlen(itemName)+1];
+  strcpy(this->currItem->name, itemName);
+
+#ifdef HAVE_GTK2
+  this->currItem->item = gtk_menu_item_new_with_label(itemName);
+  gtk_menu_shell_append(GTK_MENU_SHELL(this->menu), this->currItem->item);
+#endif /* HAVE_GTK2 */
+  this->currItem->next = NULL;
+}
+
+/**
+   \brief Redraws the widget
+   Example: see void CheckButton::redraw(void)
+*/
+void Menu::redraw(void)
+{
+#ifdef HAVE_GTK2
+  gtk_option_menu_set_history(GTK_OPTION_MENU(this->widget), this->value);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \brief Changed the Option, call this Function
+*/
+void Menu::changeOption(void)
+{
+#ifdef HAVE_GTK2
+  this->value =(int)gtk_option_menu_get_history(GTK_OPTION_MENU(this->widget));
+#else /* HAVE_GTK2 */
+  char tmpChar[20];
+  PRINT(0)("\nPlease give me a new value for %s (default: %d): ", this->title, this->defaultValue);
+  scanf("%s",tmpChar);
+  this->value = atoi(tmpChar);
+
+#endif /* HAVE_GTK2 */
+  PRINT(4)("%s set to: %d\n", this->title, this->value);
+}
+
+/* OPTION LABEL */
+
+/**
+   \brief Creates a new OptionLabel with a LabelName and a Value.
+   \param label The name of the OptionLabel.
+   \param value The Value of the OptionLabel(what will be displayed).
+*/
+OptionLabel::OptionLabel(const char* label, const char* value)
+{
+  this->isOption = 5;
+  cValue = NULL;
+
+#ifdef HAVE_GTK2
+  this->widget = gtk_label_new("");
+#endif /* HAVE_GTK2 */
+
+  this->setTitle(label);
+  this->setValue(value);
+}
+
+/**
+   \brief destructs an OptionLabel.
+*/
+OptionLabel::~OptionLabel(void)
+{
+  PRINTF(5)("deleting the OptionLabel: %s\n", this->title);
+  if (this->cValue)
+    delete []this->cValue;
+}
+
+/**
+   \brief Updates the value of an OptionLabel
+   \param newValue The new Name that should be displayed.
+*/
+void OptionLabel::setValue(const char* newValue)
+{
+  if (this->cValue)
+    delete []this->cValue;
+  this->cValue = new char [strlen(newValue)+1];
+  strcpy(this->cValue, newValue);
+#ifdef HAVE_GTK2
+  gtk_label_set_text(GTK_LABEL(this->widget), this->cValue);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \brief Redraws an OptionLabel(not implemented yet, but it works).
+*/
+void OptionLabel::redraw(void)
+{
+#ifdef HAVE_GTK2
+  gtk_label_set_text(GTK_LABEL(widget), title);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \brief Changed the Option, call this Function
+*/
+void OptionLabel::changeOption(void)
+{
+#ifdef HAVE_GTK2
+  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);
+  char tmpChar[100];
+  scanf("%s",tmpChar);
+  this->setValue(tmpChar);
+#endif /* HAVE_GTK2 */
+  PRINT(4)("%s set to: %s\n", this->title,  this->cValue);
+}
+
+
+/**
+   \brief creates the Optionlabel save-string
+   \returns the String to save.
+*/
+char* OptionLabel::save(void)
+{
+  return cValue;
+}
+
+/**
+   \brief loads an Option from of its loadString
+   \param loadString the string from which to load the data from
+*/
+void OptionLabel::load(char* loadString)
+{
+  PRINTF(4)("Loading %s: setting to %s\n", this->title, loadString); 
+  this->setValue(loadString);
+}
+
+///////////
+/* LABEL */
+///////////
+/**
+   \brief Creates a new Label with a Text.
+   \param text The text to be displayed.
+*/
+Label:: Label(const char* text)
+{
+  this->isOption = 0;
+  
+#ifdef HAVE_GTK2
+  this->widget = gtk_label_new("");
+  gtk_label_set_line_wrap(GTK_LABEL(this->widget), TRUE);
+#endif /* HAVE_GTK2 */
+  
+  if (text)
+    this->setTitle(text);
+}
+
+/**
+   \brief destructs a Label.
+*/
+Label::~Label(void)
+{
+  PRINTF(5)("deleting the Label: %s\n", this->title);
+}
+
+/**
+   \brief Sets a new Text to a Label.
+   \param text The text to be inserted into the Label.
+*/
+void Label::setTitle(const char* text)
+{
+  if (this->title)
+    delete []this->title;
+  this->title = new char[strlen(text)+1];
+  strcpy(this->title, text);
+#ifdef HAVE_GTK2
+  gtk_label_set_text(GTK_LABEL(this->widget), this->title);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \brief ereases the Text of a Label
+*/
+void Label::ereaseText(void)
+{
+  this->setTitle("");
+}
+
+/** 
+    \brief appends some Text to a Label
+    \param textToAppend The text that will be appended to this Label
+*/
+void Label::appendText(char* textToAppend)
+{
+  if (this->title)
+    {
+      char* tmpTitle = new char[strlen(this->title)+strlen(textToAppend)+1];
+      strcpy(tmpTitle, title);  
+      strcat(tmpTitle, textToAppend);
+      delete []this->title;
+      this->title = tmpTitle;
+    }
+  else
+    this->title = new char[strlen(textToAppend)];
+  
+#ifdef HAVE_GTK2
+  gtk_label_set_text(GTK_LABEL(this->widget), title);
+#endif /* HAVE_GTK2 */
+}
+
+/** 
+    \brief Appends some integer to the Label
+    \param intToAppend The Int that will be added.
+    
+    it does this by just converting the int into a char* and send it to appendText
+*/
+void Label::appendInt(int intToAppend)
+{
+  char append [32];
+  sprintf(append, "%d", intToAppend);
+  this->appendText(append);
+}
+
+
+/**
+   \brief get the Text of a Label
+   \return The Text the Label holds.
+*/
+const char* Label::getText(void)
+{
+  return this->title;
+}
+
+//////////////////
+/* PROGRESS-BAR */
+//////////////////
+/**
+   \brief Creates a new ProgressBar.
+   \param label The name you want to get the ProgressBar.
+*/
+ProgressBar::ProgressBar(const char* label)
+{
+  this->isOption = 0;
+  this->progress = 0.0;
+  this->totalSize = 0.0;
+
+#ifdef HAVE_GTK2
+  this->adjustment =(GtkAdjustment*)gtk_adjustment_new(0, 0, 100, 0, 0, 0);
+  this->widget = gtk_progress_bar_new_with_adjustment(this->adjustment);
+#endif /* HAVE_GTK2 */
+
+  if (label)
+    this->setTitle(label);
+}
+
+/**
+   \brief destructs a ProgressBar
+*/
+ProgressBar::~ProgressBar(void)
+{
+  PRINTF(5)("deleting the ProgressBar: %s\n", this->title);
+}
+
+/**
+   \brief Sets the Total size of the Bar.(ex. The maximum one can download)
+*/
+void ProgressBar::setTotalSize(double totalSize)
+{
+  this->totalSize = totalSize;
+}
+
+/**
+   \brief Sets the progress maximum is this->totalSize
+*/
+void ProgressBar::setProgress(double progress)
+{
+  this->progress = progress;
+
+  if (this->progress > this->totalSize)
+    this->progress = this->totalSize;
+
+#ifdef HAVE_GTK2
+  gtk_progress_set_value(GTK_PROGRESS(widget), this->progress*100.0/this->totalSize);
+  PRINTF(4)("Progress: %f%%\n", this->progress*100.0/this->totalSize);
+#else /* HVE_GTK2 */
+  PRINT(0)("Progress: %f%%\n", this->progress*100.0/this->totalSize);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+    \brief returns the Progress Status
+*/
+double ProgressBar::getProgress(void)
+{
+  return this->progress;
+}
+
+///////////
+/* IMAGE */
+///////////
+/**
+   \brief Creates a new Image
+   \param imageName the location of the Image on the Hard Disc
+*/
+Image::Image(const char* imageName)
+{
+  this->init(imageName);
+
+#ifdef HAVE_GTK2
+  widget = gtk_image_new_from_file(imageName);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \brief Creates a new Image
+   \param imageData data to the PixBuff
+*/
+Image::Image(char** imageData)
+{
+  this->init("pixBuffImage");
+
+#ifdef HAVE_GTK2
+  widget = gtk_image_new_from_pixbuf(gdk_pixbuf_new_from_xpm_data((const char**)imageData));
+#endif /* HAVE_GTK2 */
+}
+
+
+/**
+   \brief destructs an Image.
+*/
+Image::~Image(void)
+{
+  PRINTF(5)("deleting the Image: %s\n", this->title);
+}
+
+/** 
+    \brief Initializes a new Image
+    \param name the name to set to the Image
+*/
+void Image::init(const char* name)
+{
+  isOption = 0;
+
+  if (this->title)
+    delete []this->title;
+  this->title = new char[strlen(name)+1];
+  strcpy(this->title, name);
+}
Index: orxonox/trunk/src/lib/gui/gui/gui_gtk.h
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui_gtk.h	(revision 4054)
+++ orxonox/trunk/src/lib/gui/gui/gui_gtk.h	(revision 4054)
@@ -0,0 +1,407 @@
+/*!
+ \file gui_gtk.h
+ \brief Contains all th different Widgets.
+*/
+#ifndef _GUI_GTK_H
+#define _GUI_GTK_H
+
+#if HAVE_CONFIG_H 
+#include <config.h> 
+#endif
+
+#include "debug.h"
+
+#ifdef HAVE_GTK2
+#include <gtk/gtkmain.h>
+#include <gtk/gtkwindow.h>
+#include <gtk/gtkframe.h>
+#include <gtk/gtkhbox.h>
+#include <gtk/gtkvbox.h>
+#include <gtk/gtkbutton.h>
+#include <gtk/gtkcheckbutton.h>
+#include <gtk/gtkhscale.h>
+#include <gtk/gtkoptionmenu.h>
+#include <gtk/gtkmenu.h>
+#include <gtk/gtkmenuitem.h>
+#include <gtk/gtklabel.h>
+#include <gtk/gtkimage.h>
+#include <gtk/gtkeventbox.h>
+#include <gtk/gtkprogressbar.h>
+#endif /* HAVE_GTK2 */
+
+// enumerator for different GuiOption-Types
+enum GUI_OPTION {GUI_CONTAINER = -2,
+		 GUI_BOX = -1,
+		 GUI_NOTHING = 0,
+		 GUI_BOOL = 1,
+		 GUI_INT = 2,
+		 GUI_FLOAT = 3,
+		 GUI_CHAR = 4,
+		 GUI_CHAR_ARRAY = 5};
+
+extern char* executable;
+
+bool initGUI(int argc, char* argv[]);
+bool mainloopGUI(void);
+
+//! This is the topmost object that can be displayed all others are derived from it.
+class Widget
+{
+ private:
+
+ public:
+  Widget(void);
+  virtual ~Widget(void);
+
+  void show(void);
+  void hide(void);
+  void setSize(int width, int height);
+
+  virtual void setTitle(const char* title);  //!< 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);
+  static void listOptionsAndGroups(Widget* widget);
+  static void listOptions(Widget* widget);
+  static void listOptions(Widget* widget, void* data);
+  Widget* findOptionByNumber(int* number, unsigned int depth);
+  static void listGroups(Widget* widget);
+  static void listGroups(Widget* widget, void* data);
+  Widget* findGroupByNumber(int* number, unsigned int depth);
+  static void setOptions(Widget* widget);
+  static void flagCheck(Widget* widget, void* flagName);
+  
+#ifdef HAVE_GTK2
+  // Connection - Functions
+  gulong connectSignal(char* event, gint(*signal)(GtkWidget*, GdkEvent*, void* ));
+  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);
+  // Signals
+  static gint doNothingSignal(GtkWidget* widget, GdkEvent* event, void* nothing);
+#else /* HAVE_GTK2 */
+  // Connection - Functions
+  unsigned long connectSignal(char* event, int(*signal)(void*, void*, void* )){};
+  unsigned long connectSignal(char* event, int(*signal)(void*, Widget* )){};
+  unsigned long connectSignal(char* event, void* extObj, int(*signal)(void*, void*, void* )){};
+  unsigned long connectSignal(char* event, void* extObj, int(*signal)(void*, void* )){};
+  void disconnectSignal(unsigned long signalID);
+  // Signals
+  static int doNothingSignal(void* widget, void* event, void* nothing);
+#endif /* HAVE_GTK2 */
+
+
+  Widget* next;                     //!< next always points to the next Widget in the list. Every Widget has a next one, or has NULL as next
+#ifdef HAVE_GTK2
+  GtkWidget* widget;                //!< widget is the gtk_widget that the specific Object Contains.
+#else /* HAVE_GTK2 */
+  void* widget;
+#endif /* HAVE_GTK2 */
+
+  int isOption;                     //!< with this Paramenter one can set the option-type: -2:Container, -1: Box, 0: not an Option, 1: Bool-option, 2: int-option, 3: float option, 4:char option, 5: char* option
+  
+  char* title;                      //!< The name of the Widget. Some do display it, Options need it to save;
+};
+
+//! This is a Packer Object, which has the ability to Pack other Widgets into itself.
+class Packer : public Widget
+{
+ public:
+  Packer(void);
+  virtual ~Packer(void);
+
+  Widget* down;                      //!< this points to the Widget below this.
+  char* groupName;                   //!< For each Packer you can specify a Groupname under which the lowerWidgets will be saved.
+
+  void setGroupName(const char* name);
+  /** \returns the GroupName if existent NULL otherwise */
+  inline const char* getGroupName(void) const {return this->groupName;}
+
+
+  virtual void fill(Widget* lowerWidget) = 0; //!< An abstract function, that fills Packers.
+};
+
+//! This is a Container Class, it can contain one sub-Widget: down.
+/**
+ * A Container is a Widget that can hold a subWidget in addition to a next-Widget.
+ * The Container can by itself not be displayed created or used.
+ * The derived classes of Container can be displayed
+*/
+class Container : public Packer
+{
+ private:
+  int borderwidth;          //!< The width of The Container Boarder.
+  int policy;               //!< The Update Policy of a Container.
+  
+ public:
+  Container(void);
+  virtual ~Container(void);
+  void setBorderWidth(int borderwidth);
+  void fill(Widget* lowerWidget);
+};
+
+//! Window is the class that creates new Windows, and handels them
+/**
+ * A Window is a class derived from Container that contains a window-widget.
+ * It has the ability to hold one sub-object
+ */
+class Window : public Container
+{
+ private:
+  bool isOpen;                      //!< A bool Variable that checks if a Window is already open.
+ public:
+  static Window* mainWindow;        //!< Pointer to the First Window that was opened. By default this should be the GUI's main-Window.
+  static void addWindow(Window* windowToAdd);
+
+  Window(const char* windowName = NULL);
+  virtual ~Window(void);
+  
+  virtual void setTitle(const char* title);
+  void showall(void);
+  void open(void);
+  void close(void);
+
+#ifdef HAVE_GTK2
+  // Signals
+  static gint windowOpen(GtkWidget* widget, GdkEvent* event, void* window);
+  static gint windowClose(GtkWidget* widget, GdkEvent* event, void* window);
+#else /* HAVE_GTK2 */
+  int Window::windowOpen(void* widget, void* event, void* window);
+  int Window::windowClose(void* widget, void* event, void* window);
+#endif /* HAVE_GTK2 */
+};
+
+//! Frame is the class that handles frames
+/**
+ * A Frame is an object, that has a border and if you like a name on it.
+ * It can contain a Widget, which means that you can insert anything you like inside of a frame
+ */
+class Frame :public Container
+{
+ public:
+  Frame(char* frameName = NULL);
+  virtual ~Frame(void);
+
+  virtual void setTitle(const char* title);
+};
+
+//! EventBox is a Container that can Handle all Events happening inside of it.
+/**
+ * Example: if you have a picture, and you want it to catch mouse-clicks, you have to pack it inside a EventBox
+ */
+class EventBox : public Container
+{
+ public:
+  EventBox(const char* eventBoxName = NULL);
+  virtual ~EventBox(void);
+};
+
+//! A Box can contain multiple Widgets
+/**
+   A Box can Contain multiple Widgets, that are ordered either horizontally or vertically
+   I defined the standartbox to be horizontally.
+   A Box is always filled left->right(horizontally) or up->down(vertically)
+*/
+class Box : public Packer
+{
+ public:
+  Box(char boxtype = 'h');
+  virtual ~Box(void);
+  
+  virtual void fill(Widget* lowerWidget);
+};
+
+//! An Option is a Widget that contains something that may change its state.
+/**
+ * Options are the essence of a GUI, they: Configure, Start, Quit, Execute, and make it worth something
+ */
+class Option : public Widget
+{
+ protected:
+  bool saveable;              //!< Options can be Saved.
+  
+ public:
+  Option(void);
+  virtual ~Option(void);
+
+  int value;                  //!< every option has a value either true or false(0,1) or something else like 25 for 25% of the volume
+  char* flagName;             //!< options have a flag name that will be appendet if you start the Program from the GUI.
+  char* flagNameShort;        //!< like flag_name but shorter
+  int defaultValue;           //!< A default value is good, for hiding a option if it is not needed.(hidden if value == default_value)
+
+  char* shortDescription;      //!< A Text that describes this option in short
+  char* longDescription;      //!< A Longer Text describing this option in a full way
+
+  void saveability(bool isSaveable = true);
+  virtual char* save(void);
+  virtual void load(char* loadString);
+
+  bool isSaveable(void);
+  void setFlagName(const char* flagname, int defaultvalue);
+  void setFlagName(const char* flagname, const char* flagnameshort, int defaultvalue);
+  void setDescription(const char* shortDescription, const char* longDescription = NULL);
+
+  virtual void redraw(void) = 0;       //!< A Option must be able to redraw itself.
+  virtual void changeOption(void) = 0; //!< What to do, if an Option is Changed. eacht option decides for itself.
+#ifdef HAVE_GTK2
+    // Signals  
+  static gint OptionChange(GtkWidget* widget, Widget* option); //!< Signal for Options that change.
+#endif /* HAVE_GTK2 */
+};
+
+//! Buttons can be pressed, and released.
+/**
+ * Buttons are mainly there for executing some action like Starting the Programm, or Quiting it.
+ */
+class Button : public Option 
+{
+ public:
+  Button(char* buttonName = NULL);
+  virtual ~Button(void);
+
+  virtual void setTitle(const char* title);
+  virtual void redraw(void);
+  virtual void changeOption(void);
+};
+
+//! CheckButtons are a key in configuring bool Variables
+/** CheckButtons can configure bool Variables like wireframe on/off, enable_sound etc.
+ */
+class CheckButton : public Option
+{
+ public:
+  CheckButton(const char* buttonName = NULL);
+  virtual ~CheckButton(void);
+
+  bool isActive(void);
+
+  virtual void setTitle(const char* title);
+  virtual void redraw(void);
+  virtual void changeOption(void);
+};
+
+//! Sliders are Options that can be modified in their value
+/**
+ * good for volume, brightness, etc.
+ */
+class Slider : public Option
+{
+ private:
+  int start;                            //!< The beginning of the Slider-range.
+  int end;                              //!< The end of the Slider-range.
+ public:
+  Slider(const char* slidername, int start, int end);
+  virtual ~Slider(void);
+
+  void setValue(int value);
+  virtual void redraw(void);
+  virtual void changeOption(void);
+};
+
+//! A Menu is an Option that has a dropdown menu, where you can chose between different Items
+class Menu : public Option
+{
+ private:
+#ifdef HAVE_GTK2
+  GtkWidget* menu;                      //!< The menu That will hold the Options.
+#endif /* HAVE_GTK2 */
+
+  //! A struct to handle the MenuItems
+  struct MenuItem
+  {
+    char* name;                         //!< The name of this entry.
+    int itemNumber;                     //!< The n'th entry of this menu;
+#ifdef HAVE_GTK2
+    GtkWidget* item;                    //!< One Item From a Menu.
+#endif /* HAVE_GTK2 */
+
+    MenuItem* next;                     //!< Pointer to the next MenuItem.
+  };
+  MenuItem* firstItem;                  //!< Pointer to the first Item.
+  MenuItem* currItem;                   //!< Pointer to the current Item.
+  
+ public:
+  Menu(const char* menuName);
+  Menu(char* menuname, ...);
+  virtual ~Menu(void);
+  void init(void);
+
+  virtual char* save(void);
+  virtual void load(char* loadString);
+  
+  void addItem(char* itemName);
+  virtual void redraw(void);
+  virtual void changeOption(void);
+};
+
+//! A OptionLabel is a simple Label, that holds a char*, and will be updated, if changed.
+class OptionLabel : public Option
+{
+ public:
+  OptionLabel(const char* label, const char* value);
+  virtual ~OptionLabel(void);
+  
+  void setValue(const char* newValue);
+
+  virtual char* save(void);
+  virtual void load(char* loadString);
+
+  virtual void redraw(void);
+  virtual void changeOption(void);
+
+  char* cValue;                          //!< The Value the Label will have. \todo make private
+};
+
+//! A label is a Widget, that displays a text
+class Label : public Widget
+{
+ public:
+  Label(const char* text = NULL);
+  virtual ~Label(void);
+  
+  virtual void setTitle(const char* text);
+  void ereaseText(void);
+  void appendText(char* textToAppend);
+  void appendInt(int intToAppend);
+  const char* getText(void);
+};
+
+//! A ProgressBar is a Widget, that can display a Progress
+class ProgressBar : public Widget
+{
+ public:
+  ProgressBar(const char* label = NULL);
+  virtual ~ProgressBar(void);
+
+  void setProgress(double progress);
+  void setTotalSize(double totalSize);
+  double getProgress(void);
+
+ private:
+  double totalSize;         //!< The total Size of a download Bar
+  double progress;          //!< The progress of a Bar.
+#ifdef HAVE_GTK2
+  GtkAdjustment* adjustment;
+#endif /* HAVE_GTK2 */
+};
+
+//! Image is the keeper of one Image 
+/** 
+ * Images are mighty cool.
+ * Images can help you lighten up the Programming process, and will give everyone a better impression of the Software.
+ */
+class Image : public Widget
+{
+ public:
+  Image(const char* imgaeName);
+  Image(char** imageData);
+  virtual ~Image(void);
+  void init(const char* name);
+};
+
+//gint orxonox_gui_quit(GtkWidget* widget, GdkEvent* event, gpointer data);
+
+#endif /* _GUI_GTK_H */
Index: orxonox/trunk/src/lib/gui/gui/gui_keys.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui_keys.cc	(revision 4054)
+++ orxonox/trunk/src/lib/gui/gui/gui_keys.cc	(revision 4054)
@@ -0,0 +1,270 @@
+/* 
+   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.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
+
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+
+*/
+
+#include "gui_keys.h"
+
+#include <string.h>
+
+/**
+   \brief Creates an Keyboard-Frame
+*/
+OrxonoxGuiKeys::OrxonoxGuiKeys(void)
+{
+  this->keysFrame = new Frame("Keyboard-Options:");
+  //  keysFrame->setGroupName("Keyboard");
+  this->keysBox = new Box('h');
+  this->player1 = new Player("player1");
+  this->player2 = new Player("player2");
+
+  this->keysBox->fill(this->player1->getOpenButton());
+  this->keysBox->fill(this->player2->getOpenButton());
+
+  this->keysFrame->fill(this->keysBox);
+  this->setMainWidget(keysFrame);
+}
+
+/**
+   \brief Destructs the Keys-stuff
+*/
+OrxonoxGuiKeys::~OrxonoxGuiKeys(void)
+{
+  // nothing to do here.
+}
+
+/* PLAYER */
+
+/**
+   \brief Creates new inputs for a player
+   \param player the name of the Player
+*/
+Player::Player(char* player)
+{
+  char* windowName = new char[strlen(player)+25];
+  strcpy(windowName, "Keyboard settings of ");
+  strcat(windowName, player);
+  this->pKeyWindow = new Window(windowName);
+  this->pKeyFrame = new Frame(windowName);
+   this->pKeysBox = new Box('v');
+   this->pKeysBox->setGroupName(player);
+    this->pKeysBox->fill(addKey(UP, "up"));
+    this->pKeysBox->fill(addKey(DOWN, "down"));
+    this->pKeysBox->fill(addKey(LEFT, "left"));
+    this->pKeysBox->fill(addKey(RIGHT, "right"));
+    this->pKeysBox->fill(addKey(SHOOT, "shoot"));
+    delete windowName;
+    closeButton = new Button("close");
+#ifdef HAVE_GTK2
+    this->closeButton->connectSignal("button_press_event", this->pKeyWindow, Window::windowClose);
+#endif /* HAVE_GTK2 */
+
+    this->pKeysBox->fill(this->closeButton);
+    this->pKeyFrame->fill(this->pKeysBox);
+   this->pKeyWindow->fill(this->pKeyFrame);
+   Window::addWindow(this->pKeyWindow);
+#ifdef HAVE_GTK2
+   this->pKeyWindow->connectSignal("destroy", this->pKeyWindow, Window::windowClose);
+   this->pKeyWindow->connectSignal("delete_event", this->pKeyWindow, Window::windowClose);
+#endif /* HAVE_GTK2 */
+
+  this->openButton = new Button(player);
+#ifdef HAVE_GTK2
+  this->openButton->connectSignal("button_press_event", this->pKeyWindow, Window::windowOpen);
+#endif /* HAVE_GTK2 */
+
+  this->inputWindow = new Window("inputWindow");
+
+  this->inputButton = new Button("test");
+  this->inputWindow->fill(inputButton);
+#ifdef HAVE_GTK2
+  this->inputWindow->connectSignal("destroy",  Widget::doNothingSignal);
+  this->inputWindow->connectSignal("delete_event", Widget::doNothingSignal);
+#endif /* HAVE_GTK2 */
+
+}
+
+/**
+   \brief adds a new Key.
+   \param key the number of the Key
+   \param name The name of the new Key.
+   \returns A widget that has the Key-Box
+*/
+Widget* Player::addKey(KEYS key, char* name)
+{
+  this->inputKey[key] = new InputKey;
+  this->inputKey[key]->pKeyBox = new Box();
+  this->inputKey[key]->pKeyButton = new Button(name);
+  this->inputKey[key]->pKeyOLabel = new OptionLabel(name, name);
+  this->inputKey[key]->pKeyOLabel->saveability();
+
+#ifdef HAVE_GTK2
+  //inputKey[key]->pKeyButton->connectSignal("key_press_event", inputKey[key]->pKeyButton, key_cb);
+  this->inputKey[key]->pKeyButton->connectSignal("button_press_event", this->inputKey[key], inputWindowEvent);
+#endif /* HAVE_GTK2 */
+  this->inputKey[key]->pKeyBox->fill(this->inputKey[key]->pKeyButton);
+  this->inputKey[key]->pKeyBox->fill(this->inputKey[key]->pKeyOLabel);
+  return this->inputKey[key]->pKeyBox;
+}
+
+/**
+   \returns the OpenButton of a Player
+*/
+Button* Player::getOpenButton(void)
+{
+  return this->openButton;
+}
+
+/**
+   \brief sets a new Key(only output)
+   \param key the new Key.
+*/
+void Player::setkey(KEYS key)
+{
+  PRINT(4)("setting up Key: %d\n", key);
+}
+
+Window* Player::inputWindow = NULL;
+Button* Player::inputButton = NULL;
+long Player::keySignal = 0;
+
+#ifdef HAVE_GTK2
+gint Player::inputWindowEvent(GtkWidget* w, GdkEventKey* event, void* inputKey)
+{
+  inputButton->setTitle("press a Key");
+  keySignal = inputButton->connectSignal("key_press_event", inputKey, key_cb);
+  inputWindow->open();
+}
+  
+/**
+   \brief Function which gets keystrokes
+   \param w the widget that released the Function.
+   \param event The event that happened.
+   \param Widget the Widget which will be applied.
+   \returns Nothing
+*/
+gint Player::key_cb(GtkWidget* w, GdkEventKey* event, void* inputKey)
+{
+  InputKey* inputkey =(InputKey*) inputKey;
+  char title [20];
+
+  switch(event->keyval) 
+    {
+    case GDK_Up:
+      strcpy(title, "up");
+      break;
+    case GDK_Down:
+      strcpy(title, "down");
+      break;
+    case GDK_Left:
+      strcpy(title, "left");
+      break;
+    case GDK_Right:
+      strcpy(title, "right");
+      break;
+      
+    case GDK_space:
+      strcpy(title, "space");
+      break;
+      
+    case 65293:
+      strcpy(title, "enter");
+      break;
+      
+      // Special Keys //
+    case GDK_Escape:
+      strcpy(title, "esc");
+      break;
+    case GDK_Tab:
+      strcpy(title, "tab");
+      break;
+    case GDK_Shift_L:
+      strcpy(title, "l_shift");
+      break;
+    case GDK_Shift_R:
+      strcpy(title, "r_shift");
+      break;
+    case GDK_Control_L:
+      strcpy(title, "l_ctrl");
+      break;
+    case GDK_Control_R:
+      strcpy(title, "r_ctrl");
+      break;
+    case GDK_Alt_L:
+      strcpy(title, "l_alt");
+      break;
+    case GDK_Alt_R:
+      strcpy(title, "r_alt");
+      break;
+      // FXX KEYS //
+    case GDK_F1:
+      strcpy(title, "f1");
+      break;
+    case GDK_F2:
+      strcpy(title, "f2");
+      break;
+    case GDK_F3:
+      strcpy(title, "f3");
+      break;
+    case GDK_F4:
+      strcpy(title, "f4");
+      break;
+    case GDK_F5:
+      strcpy(title, "f5");
+      break;
+    case GDK_F6:
+      strcpy(title, "f6");
+      break;
+    case GDK_F7:
+      strcpy(title, "f7");
+      break;
+    case GDK_F8:
+      strcpy(title, "f8");
+      break;
+    case GDK_F9:
+      strcpy(title, "f9");
+      break;
+    case GDK_F10:
+      strcpy(title, "f10");
+      break;
+    case GDK_F11:
+      strcpy(title, "f11");
+      break;
+    case GDK_F12:
+      strcpy(title, "f12");
+      break;
+      
+      
+    default:
+      char* tmp;
+      sprintf(tmp, "%c", event->keyval);
+      printf("other key %s \n", tmp);
+      strcpy(title, tmp);
+      break;
+    }
+
+  inputkey->pKeyOLabel->setValue(title);
+  inputButton->disconnectSignal(keySignal);
+  inputWindow->close();
+}
+#endif /* HAVE_GTK2 */
Index: orxonox/trunk/src/lib/gui/gui/gui_keys.h
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui_keys.h	(revision 4054)
+++ orxonox/trunk/src/lib/gui/gui/gui_keys.h	(revision 4054)
@@ -0,0 +1,81 @@
+/*!
+  \file gui_keys.h
+  \brief File that holds the class that creates the Keyboard-Options.
+*/
+
+#ifndef _GUI_KEYS_H
+#define _GUI_KEYS_H
+
+#include "gui.h"
+#include "gui_element.h"
+#include "gui_gtk.h"
+
+#ifdef HAVE_GTK2
+#include <gdk/gdkkeysyms.h>
+#endif /* HAVE_GTK2 */
+
+/**
+   \brief defines the Possible Player Keys
+*/
+enum KEYS {UP, DOWN, LEFT, RIGHT, SHOOT};
+
+class Player;
+//! Class that creates the Keys-Options.
+class OrxonoxGuiKeys : public OrxonoxGuiElement
+{
+ private:
+  Frame* keysFrame;      //!< The Frame that holds the keyOptions.
+  Box* keysBox;          //!< The Frame that holds the keyOptions.
+  Player* player1;       //!< The first Player's keys.
+  Player* player2;       //!< The seconds Player's keys.
+  Button* misc;          //!< Other keyboeard options come here. \todo include some like pause, quit and so on.
+
+ public:
+  OrxonoxGuiKeys(void);
+  ~OrxonoxGuiKeys(void);
+};
+
+//! Class to hold infos about a Player
+/**
+   \todo split into subclass and superclass ButtonConfigurator
+*/
+class Player
+{
+ private:
+  Window* pKeyWindow;     //!< The Window for a new Key-setting.
+  Frame* pKeyFrame;       //!< The Frame for a new Key-setting.
+  Button* openButton;     //!< The OpenButton for this key-settings.
+  Button* closeButton;    //!< The CloseButton for this key-settings.
+  Box* pKeysBox;          //!< The Box that holds the Key-settings.
+  
+  //! One KeyOption has one InputKey
+  struct InputKey
+  {
+    Box* pKeyBox;           //!< One Box that holds the Keys
+    Button* pKeyButton;     //!< The Button for changing the Key.
+    OptionLabel* pKeyOLabel;//!< The Label for displaying the Key-setting.
+  };
+
+  InputKey* inputKey[10];     //!< Buttons-array. \todo make it dynamic.
+
+  static Window* inputWindow; //!< A Window that gets keyboard clicks. Static, because only one needed.
+  static Button* inputButton; //!< A Button that gets keyboard clicks. Static, because only one needed.
+  static long keySignal;      //!< A keySignal that handles keyboard clicks. Static, because only one needed.
+ public:
+  Player(char* player);
+
+  Widget* addKey(KEYS key, char* name);
+
+  Button* getOpenButton(void);
+
+#ifdef HAVE_GTK2
+  static gint inputWindowEvent(GtkWidget* w, GdkEventKey* event, void* widget);
+  static gint key_cb(GtkWidget* w, GdkEventKey* event, void* inputKey);
+#endif /* HAVE_GTK2 */
+  void setkey(KEYS key);
+  
+};
+
+
+
+#endif /* _GUI_KEYS_H */
Index: orxonox/trunk/src/lib/gui/gui/gui_main.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui_main.cc	(revision 4054)
+++ orxonox/trunk/src/lib/gui/gui/gui_main.cc	(revision 4054)
@@ -0,0 +1,34 @@
+/* 
+   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.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
+
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+
+*/
+
+#include "gui.h"
+
+int verbose = 4;
+
+int main(int argc, char *argv[])
+{
+  OrxonoxGui* orxonoxgui = new OrxonoxGui(argc, argv);
+  return 0;
+}
Index: orxonox/trunk/src/lib/gui/gui/gui_update.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui_update.cc	(revision 4054)
+++ orxonox/trunk/src/lib/gui/gui/gui_update.cc	(revision 4054)
@@ -0,0 +1,489 @@
+/* 
+   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.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
+
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+
+*/
+
+#include "gui_update.h"
+#include <string.h>
+
+#include "gui.h"
+#include <stdio.h>
+#include <stdlib.h>
+
+using namespace std;
+
+/**
+   \brief Creates an Update-Frame
+*/
+OrxonoxGuiUpdate::OrxonoxGuiUpdate(void)
+{
+  this->tmpDir = NULL;
+  this->homeDir = NULL;
+  this->installSourceDir = NULL;
+  this->userName = NULL;
+
+  this->getSystemInfo();
+
+  this->updateFrame = new Frame("Update-Options:");
+  this->updateFrame->setGroupName("update");
+  this->updateBox = new Box('v');
+#ifdef HAVE_CURL
+
+  // the Button for autoUpdating
+  this->autoUpdate = new CheckButton("auto update");
+  this->updateBox->fill(this->autoUpdate);
+  this->autoUpdate->setFlagName("update", "u", 0);
+  this->autoUpdate->saveability();
+
+  this->updateSourceWindowCreate();
+  this->updateBox->fill(this->updateSourceWindowGetButton());
+
+  this->updateDataWindowCreate();
+  this->updateBox->fill(this->updateDataWindowGetButton());
+
+#else /* HAVE_CURL */
+  Label* noCurlLabel = new Label("since you do not have cURL,\nthis option is not availible");
+  this->updateBox->fill(noCurlLabel);  
+#endif /* HAVE_CURL */
+  this->updateFrame->fill(this->updateBox);
+  this->setMainWidget(this->updateFrame);
+
+}
+
+/**
+   \brief Destructs the Update-stuff
+*/
+OrxonoxGuiUpdate::~OrxonoxGuiUpdate(void)
+{
+
+}
+
+/** 
+    \brief Look what info we can get from this system
+*/
+bool OrxonoxGuiUpdate::getSystemInfo(void)
+{
+  PRINTF(3)("Grabbing system information\n");
+  this->tmpDir = getenv("TMPDIR");
+  if(!tmpDir)
+    this->tmpDir = "/tmp";
+  PRINTF(4)("Temporary directory is: %s\n", this->tmpDir);
+
+#ifdef __WIN32__
+  this->homeDir = getenv("USERPROFILE");
+#else
+  this->homeDir = getenv("HOME");
+#endif
+  PRINTF(4)("Home directory is %s\n", homeDir);
+
+  this->installDataDir = "/usr/share/games/orxonox";
+  PRINTF(4)("Installation of orxonox-data will go to this directory: %s\n", this->installDataDir);
+
+  this->installSourceDir = "/usr/games/bin";
+  PRINTF(4)("Installation of orxonox-source will go to this directory: %s\n", this->installSourceDir);
+
+  this->userName = getenv("USER");
+  PRINTF(4)("Logged in username is: %s\n", this->userName);
+}
+
+#ifdef HAVE_CURL
+bool* OrxonoxGuiUpdate::checkForUpdates(void)
+{
+  PRINTF(3)("checking for new version of orxonox\n");
+  FileInfo updateFileInfo;
+  updateFileInfo.fileName = "update_info";
+  updateFileInfo.webRoot = "http://www.orxonox.ethz.ch/files/data";
+  updateFileInfo.localRoot = this->tmpDir;
+  
+  download(&updateFileInfo);
+}
+#endif /* HAVE_CURL */
+#ifdef HAVE_CURL
+/**
+   \brief Creates a window, and all it contains for the Data-update.
+*/
+void OrxonoxGuiUpdate::updateDataWindowCreate(void)
+{
+  this->updateDataWindow = new Window("update orxonox::Data");   
+  this->updateDataBox = new Box('v');
+
+  // the close-Button of the Update Window.
+  //  updateWindowClose = new Button("close");
+#ifdef HAVE_GTK2 
+  //  updateWindowClose->connectSignal("button_press_event", updateWindow, Window::windowClose);
+#endif /* HAVE_GTK2 */
+  //  updateWindowBox->fill(updateWindowClose);
+
+  this->updateDataBar = new ProgressBar();
+  this->updateDataBox->fill(this->updateDataBar);
+
+  FileInfo* dataInfo = new FileInfo;
+  dataInfo->bar = this->updateDataBar;
+
+  this->updateDataBegin = new Button("begin.");
+  dataInfo->stateButton = this->updateDataBegin;
+#ifdef HAVE_GTK2 
+  dataInfo->buttonSignal = updateDataBegin->connectSignal("button_press_event", dataInfo, updateDataFunc);
+#endif /* HAVE_GTK2 */
+  this->updateDataBox->fill(this->updateDataBegin);
+
+  this->updateDataWindow->fill(this->updateDataBox);
+
+  this->updateDataWindowButton = new Button("update orxonox::Data");
+#ifdef HAVE_GTK2 
+  this->updateDataWindowButton->connectSignal("button_press_event", this->updateDataWindow, Window::windowOpen);
+  this->updateDataWindow->connectSignal("destroy", this->updateDataWindow, Window::windowClose);
+  this->updateDataWindow->connectSignal("delete_event", this->updateDataWindow, Window::windowClose);
+#endif /* HAVE_GTK2 */
+
+}
+
+/**
+   \returns A Pointer to the Button of the UpdaterDataWindow
+*/
+Button* OrxonoxGuiUpdate::updateDataWindowGetButton(void)
+{
+  return this->updateDataWindowButton;
+}
+
+/**
+   \brief Creates a window, and all it contains for the Source-update.
+*/
+void OrxonoxGuiUpdate::updateSourceWindowCreate(void)
+{
+  // the button, that opens this Window.
+  this->updateSourceWindowButton = new Button("update orxonox::Source");
+
+  // the Window itself
+  this->updateSourceWindow = new Window("update orxonox::Source");
+
+  this->updateSourceBox = new Box();
+
+  this->updateSourceBar = new ProgressBar();
+  this->updateSourceBox->fill(this->updateSourceBar);
+  test = new Button("increment");
+
+#ifdef HAVE_GTK2 
+  test->connectSignal("button_press_event", updateSourceBar, updateSourceFunc);
+#endif /* HAVE_GTK2 */
+
+  this->updateSourceBox->fill(test);
+  this->updateSourceWindow->fill(updateSourceBox); 
+#ifdef HAVE_GTK2 
+  this->updateSourceWindowButton->connectSignal("button_press_event", this->updateSourceWindow, Window::windowOpen);
+  this->updateSourceWindow->connectSignal("destroy", this->updateSourceWindow, Window::windowClose);
+  this->updateSourceWindow->connectSignal("delete_event", this->updateSourceWindow, Window::windowClose);
+#endif /* HAVE_GTK2 */
+
+}
+
+/**
+   \returns A Pointer to the Button of the UpdaterSourceWindow
+*/
+Button* OrxonoxGuiUpdate::updateSourceWindowGetButton(void)
+{
+  return this->updateSourceWindowButton;
+}
+
+
+#ifdef HAVE_GTK2 
+/**
+   \brief updates the Data of orxonox.
+   \param w The widget, that executed this Function.
+   \param event The event that trigered this Function.
+   \param button The Button, that triggered this event.
+*/
+gint OrxonoxGuiUpdate::updateDataFunc(GtkWidget* w, GdkEventKey* event, void* info)
+{
+  FileInfo* dataInfo =(FileInfo*)info;
+
+  dataInfo->fileName = "02%20orxonox%203.mp3";
+  dataInfo->webRoot  = "http://www.orxonox.ethz.ch/files/";
+  dataInfo->localRoot = "./";
+  PRINTF(3)("Preparing to download file %s.\n", dataInfo->fileName);
+  downloadWithStyle(dataInfo);
+}
+
+/**
+   \brief updates the source of orxonox.
+   \param w The widget, that executed this Function.
+   \param event The event that trigered this Function.
+   \param button The Button, that triggered this event.
+*/
+gint OrxonoxGuiUpdate::updateSourceFunc(GtkWidget* w, GdkEventKey* event, void* bar)
+{
+  ProgressBar* tmpBar = static_cast<ProgressBar*>(bar);
+  tmpBar->setTotalSize(20);
+  tmpBar->setProgress(tmpBar->getProgress()+1);
+}
+#endif /* HAVE_GTK2 */
+
+/**
+   \brief The Function Curl calls to write out the File.
+   \param ptr A Pointer to the date to write.
+   \param size The size in bytes of one nmemb to write.
+   \param nmemb The Count of size to write.
+   \param stream Filehandler to write to.
+*/
+size_t OrxonoxGuiUpdate::curlWriteFunc(void* ptr, size_t size, size_t nmemb, FILE* stream)
+{
+  return fwrite(ptr, size, nmemb, stream);
+}
+
+/**
+   \brief The Function Curl calls to write out the File.
+   \param ptr A Pointer to the date to write to.
+   \param size The size in bytes of one nmemb to write.
+   \param nmemb The Count of size to write.
+   \param stream Filehandler to get data from.
+*/
+size_t OrxonoxGuiUpdate::curlReadFunc(void* ptr, size_t size, size_t nmemb, FILE* stream)
+{
+  return fread(ptr, size, nmemb, stream);
+}
+
+
+/**
+   \brief An update Function for the GUI, to show the progress.
+   \param Bar th ProgressBar to update
+   \param totalSize The total size of the download in bytes.
+   \param progress The current Progress of the download in bytes.
+   \param upTotal not needed
+   \param upProgress not needed
+*/
+int OrxonoxGuiUpdate::curlProgressFunc(ProgressBar* bar, double totalSize, double progress, double upTotal, double upProgress)
+{
+  bar->setProgress(progress);
+  bar->setTotalSize(totalSize);
+#ifdef HAVE_GTK2
+#ifndef HAVE_PTHREAD_H
+  while(gtk_events_pending()) gtk_main_iteration();
+#endif
+#endif
+  return 0;
+}
+
+/**
+   \brief The Curl handle for only one CURL(static).
+*/
+CURL* OrxonoxGuiUpdate::curlHandle = NULL;
+
+#ifdef HAVE_PTHREAD_H
+/** \brief The download Thread ID */
+pthread_t* OrxonoxGuiUpdate::downloadThreadID = new pthread_t;
+/**   \brief The download Thread ID*/
+pthread_t* OrxonoxGuiUpdate::downloadThreadFinishID = new pthread_t;
+#endif /* HAVE_PTHREAD_H */
+/**
+   \brief A bool parameter that shows if we are downloading.
+*/
+bool OrxonoxGuiUpdate::isDownloading = false;
+
+
+/**
+   \brief Initializes a Download without displaying it.
+   \param fileInfo the FileInfo.
+
+   !! BE AWARE THIS WILL NOT BE THREADED. !!
+*/
+bool OrxonoxGuiUpdate::download(void* fileInfo)
+{
+  if(isDownloading)
+    {
+      PRINTF(2)("unable to Download. already getting some file\n");
+      return false;
+    }
+  PRINTF(3)("Downloading.\n");
+  FileInfo* info =(FileInfo*)fileInfo;
+  CURLcode res;
+  CURL* localCurl;
+  localCurl = curl_easy_init();
+  char* fileOnNet = new char [strlen(info->webRoot)+strlen(info->fileName)+2];
+  strcpy(fileOnNet, info->webRoot);
+  if(fileOnNet[strlen(fileOnNet)] != '/') //!< \todo windows-shit
+    strcat(fileOnNet, "/");
+  strcat(fileOnNet, info->fileName);
+  char* fileOnDisk = new char [strlen(info->localRoot)+strlen(info->fileName)+2];
+  strcpy(fileOnDisk, info->localRoot);
+  if(fileOnDisk[strlen(fileOnDisk)] != '/') //!< \todo windows-shit
+    strcat(fileOnDisk, "/");
+  strcat(fileOnDisk, info->fileName);
+  
+  if(localCurl)
+    {
+      
+      info->fileHandle = fopen(fileOnDisk, "w");
+      
+      curl_easy_setopt(localCurl, CURLOPT_URL, fileOnNet);
+      curl_easy_setopt(localCurl, CURLOPT_WRITEDATA, info->fileHandle);
+      curl_easy_setopt(localCurl, CURLOPT_WRITEFUNCTION, curlWriteFunc);
+      curl_easy_setopt(localCurl, CURLOPT_READFUNCTION, curlReadFunc);
+      curl_easy_setopt(localCurl, CURLOPT_NOPROGRESS, true);
+      
+      curl_easy_perform(localCurl);
+
+      curl_easy_cleanup(localCurl);
+      fclose(info->fileHandle);
+    }
+}
+
+/**
+   \brief Initializes a Download with some style.
+   \param fileInfo the FileInfo.
+   \todo release thread-lock.
+
+   Downloading with a Button that gets a different Name while downloading, and a Bar, that gets to be updated. More to be followed
+*/
+bool OrxonoxGuiUpdate::downloadWithStyle(void* fileInfo)
+{
+  if(isDownloading)
+    {
+      PRINTF(2)("unable to Download. already getting some file\n");
+      return false;
+    }
+  PRINTF(3)("Downloading.\n");
+  FileInfo* info =(FileInfo*)fileInfo;
+  CURLcode res;
+  curlHandle = curl_easy_init();
+  char* fileOnNet = new char [strlen(info->webRoot)+strlen(info->fileName)+1];
+  strcpy(fileOnNet, info->webRoot);
+  strcat(fileOnNet, info->fileName);
+  char* fileOnDisk = new char [strlen(info->localRoot)+strlen(info->fileName)+1];
+  strcpy(fileOnDisk, info->localRoot);
+  strcat(fileOnDisk, info->fileName);
+
+  if(curlHandle)
+    {
+      
+      info->fileHandle = fopen(fileOnDisk, "w");
+      
+      curl_easy_setopt(curlHandle, CURLOPT_URL, fileOnNet);
+      curl_easy_setopt(curlHandle, CURLOPT_WRITEDATA, info->fileHandle);
+      curl_easy_setopt(curlHandle, CURLOPT_WRITEFUNCTION, curlWriteFunc);
+      curl_easy_setopt(curlHandle, CURLOPT_READFUNCTION, curlReadFunc);
+      curl_easy_setopt(curlHandle, CURLOPT_NOPROGRESS, false);
+      curl_easy_setopt(curlHandle, CURLOPT_PROGRESSFUNCTION, curlProgressFunc);
+      curl_easy_setopt(curlHandle, CURLOPT_PROGRESSDATA, info->bar);
+
+      if(!isDownloading)
+	{
+#ifdef HAVE_PTHREAD_H	  
+	  pthread_join(*downloadThreadFinishID, NULL);
+#endif /* HAVE_PTHREAD_H */
+#ifdef HAVE_GTK2 
+	  info->stateButton->disconnectSignal(info->buttonSignal);
+	  info->buttonSignal = info->stateButton->connectSignal("button_press_event", info, cancelDownload);
+#endif /* HAVE_GTK2 */
+#ifdef HAVE_PTHREAD_H
+	  info->stateButton->setTitle("cancel");
+#else /* HAVE_PTHREAD_H */
+	  info->stateButton->setTitle("please wait");
+#endif /* HAVE_PTHREAD_H */
+	  
+	  //! \todo check if threads really were created.
+#ifdef HAVE_PTHREAD_H
+	  pthread_create(downloadThreadID, NULL, downloadThread, info);
+	  pthread_create(downloadThreadFinishID, NULL, downloadThreadFinished, info);  
+#else
+	  downloadThread(info);
+	  downloadThreadFinished(info);
+#endif /* HAVE_PTHREAD_H */
+	 
+	  //      res = curl_easy_perform(curlHandle);
+	  
+	  //      fclose(outfile);
+	}
+      else 
+	PRINTF(1)("thread already in use\n");
+
+    }
+  return true;
+}
+
+/**
+   \brief The downloading process(either threaded or not).
+   \param fileInfo the FileInfo.
+
+   \todo Threads get locked, if the cancel button is pressed in to small intervals.
+*/
+void* OrxonoxGuiUpdate::downloadThread(void* fileInfo)
+{
+  isDownloading = true;
+  curl_easy_perform(curlHandle);
+}
+
+/**
+   \brief Finishes a downloading process. 
+   \param fileInfo the FileInfo.
+*/
+void* OrxonoxGuiUpdate::downloadThreadFinished(void* fileInfo)
+{ 
+  FileInfo* info =(FileInfo*)fileInfo;
+#ifdef HAVE_PTHREAD_H
+  pthread_join(*downloadThreadID, NULL);
+#ifdef HAVE_GTK2 
+  gdk_threads_enter();
+#endif /* HAVE_GTK2 */
+#endif /* HAVE_PTHREAD_H */
+  if(curlHandle)
+    curl_easy_cleanup(curlHandle);
+ 
+  PRINTF(3)("Closing the downloaded file.\n");
+  fclose(info->fileHandle);
+
+  if(isDownloading)
+    info->stateButton->setTitle("go on");
+  //  else
+  //    info->stateButton->setTitle("done");
+#ifdef HAVE_GTK2 
+  info->stateButton->disconnectSignal(info->buttonSignal);
+  info->buttonSignal = info->stateButton->connectSignal("button_press_event", info, updateDataFunc);
+#endif /* HAVE_GTK2 */
+  isDownloading = false;
+#ifdef HAVE_PTHREAD_H
+#ifdef HAVE_GTK2 
+  gdk_threads_leave();
+#endif /* HAVE_GTK2 */
+#endif /* HAVE_PTHREAD_H */
+
+}
+
+#ifdef HAVE_GTK2
+/**
+   \brief canceles a downloading session.
+   \param w The widget, that executed this Function.
+   \param event The event that trigered this Function.
+   \param bar The Bar, that triggered this event.
+
+   \todo canceling a session in non-threaded mode.
+*/
+gint OrxonoxGuiUpdate::cancelDownload(GtkWidget* w, GdkEventKey* event, void* bar)
+{
+#ifdef HAVE_PTHREAD_H
+  pthread_cancel(*downloadThreadID);
+#else
+  PRINTF(2)("Cannot cancle the Downloading process until after this File, because no threading was enabled\n");
+#endif /* HAVE_PTHREAD_H*/
+}
+#endif /* HAVE_GTK2 */
+
+#endif /* HAVE_CURL */
Index: orxonox/trunk/src/lib/gui/gui/gui_update.h
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui_update.h	(revision 4054)
+++ orxonox/trunk/src/lib/gui/gui/gui_update.h	(revision 4054)
@@ -0,0 +1,115 @@
+/*!
+  \file gui_update.h
+  \brief File that holds the class that creates the update-menu.
+*/
+
+#ifndef _GUI_UPDATE_H
+#define _GUI_UPDATE_H
+
+#include "gui.h"
+#include "gui_element.h"
+#include "gui_gtk.h"
+
+#include <stdio.h>
+#ifdef HAVE_CURL
+#include <curl/curl.h>
+#include <curl/types.h>
+#include <curl/easy.h>
+#endif /* HAVE_CURL */
+#ifdef HAVE_PTHREAD_H
+#define _MULTI_THREADED
+#include <pthread.h>
+#endif /* HAVE_PTHREAD_H */
+using namespace std;
+
+//! Class that creates the execute-Options.
+class OrxonoxGuiUpdate : public OrxonoxGuiElement
+{
+ private:
+  // Defining Variables
+  char* tmpDir;                         //!< The Temporary directory.
+  char* homeDir;                        //!< The Home directory.
+  char* installDataDir;                 //!< Where to install the Data to.
+  char* installSourceDir;               //!< Where to install the Source to.
+  char* userName;                       //!< The user logged in.
+
+  bool getSystemInfo(void);
+ 
+  // Window creation.
+  Frame* updateFrame;                   //!< The Frame that holds the updateOptions.
+  Box* updateBox;                       //!< The Box that holds the updateOptions.
+  CheckButton* autoUpdate;              //!< A Checkbutton to enable the automatic Updating.
+
+  
+  Button* updateDataWindowButton;       //!< A Button to update the Data of orxonox.
+  Window* updateDataWindow;             //!< A Window for the data-update.
+  Box* updateDataBox;                   //!< A Box for the Window for the Data-update.
+  ProgressBar* updateDataBar;           //!< A Bar to display the progress of the download.
+  Button* updateDataBegin;              //!< A Button to start the process.
+
+  Button* updateSourceWindowButton;     //!< A Button to update the Source of orxonox. \todo tricky
+  Window* updateSourceWindow;           //!< A Window for the Source-update.
+  Box* updateSourceBox;                 //!< A Box for the Window for the Source-update.
+  ProgressBar* updateSourceBar;         //!< A Bar to display the progress of the download.
+
+  Button* test;                         //!< will be deleted soon.
+
+#ifdef HAVE_GTK2
+  static gint updateDataFunc(GtkWidget* w, GdkEventKey* event, void* info);
+  static gint updateSourceFunc(GtkWidget* w, GdkEventKey* event, void* info);
+#endif /* HAVE_GTK2 */
+
+#ifdef HAVE_CURL
+  //! A Struct to hold information about one File to download.
+  struct FileInfo
+  {
+    char* fileName;                     //!< The Name of the file we want to get.
+    char* webRoot;                      //!< The Root of the File on The Web
+    char* localRoot;                    //!< The Root directory to put the files on the local disk.
+    FILE* fileHandle;                   //!< A fileHandler.
+
+    Button* stateButton;                //!< A button that shows either start or cancel;
+    long int buttonSignal;              //!< The Signal of the stateButton.
+    ProgressBar* bar;                   //!< The ProgressBar, that sould be updated.
+  };
+
+  static size_t curlWriteFunc(void* ptr, size_t size, size_t nmemb, FILE* stream);
+  static size_t curlReadFunc(void* ptr, size_t size, size_t nmemb, FILE* stream);
+  static int curlProgressFunc(ProgressBar* bar, double totalSize, double progress, double upTotal, double upProgress);
+
+  static CURL* curlHandle;
+#ifdef HAVE_GTK2 
+  static gint cancelDownload(GtkWidget* w, GdkEventKey* event, void* bar);
+#endif /* HAVE_GTK2 */  
+#ifdef HAVE_PTHREAD_H
+  static pthread_t* downloadThreadID;
+  static pthread_t* downloadThreadFinishID;
+#endif /* HAVE_PTHREAD_H */
+  static bool isDownloading;
+
+  static bool download(void* fileInfo);
+  static bool downloadWithStyle(void* fileInfo);
+  static void* downloadThread(void* fileInfo);
+  static void* downloadThreadFinished(void* fileInfo);
+
+  
+#endif /* HAVE_CURL */
+
+ public:
+  OrxonoxGuiUpdate(void);
+  ~OrxonoxGuiUpdate(void);
+  
+#ifdef HAVE_CURL   
+  void updateDataWindowCreate(void);
+  Button* updateDataWindowGetButton(void);
+
+  void updateSourceWindowCreate(void);
+  Button* updateSourceWindowGetButton(void);
+
+  bool* checkForUpdates(void);
+ 
+#endif /* HAVE_CURL */
+
+};
+
+#endif /* _GUI_UPDATE_H */
Index: orxonox/trunk/src/lib/gui/gui/gui_video.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui_video.cc	(revision 4054)
+++ orxonox/trunk/src/lib/gui/gui/gui_video.cc	(revision 4054)
@@ -0,0 +1,180 @@
+/* 
+   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.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
+
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+
+*/
+
+
+#include "gui_video.h"
+
+#include "glincl.h"
+#include <stdlib.h>
+
+/**
+   \brief Creates the Video-Option-Frame
+*/
+OrxonoxGuiVideo::OrxonoxGuiVideo(void)
+{
+  this->videoFrame = new Frame("Video-Options:");
+  this->videoBox = new Box('v');
+  this->videoFrame->setGroupName("video");
+  
+  this->fullscreen = new CheckButton("Fullscreen-mode");
+  this->fullscreen->setFlagName("windowed", "q", 1);
+  this->fullscreen->saveability();
+  this->videoBox->fill(this->fullscreen);
+  this->resolution = new Menu("Resolution");
+  this->getResolutions(this->resolution);
+  this->resolution->saveability();
+  this->videoBox->fill(this->resolution);
+  this->wireframe = new CheckButton("WireFrame-mode");
+  this->wireframe->setFlagName("wireframe", "w", 0);
+  this->wireframe->saveability();
+  this->videoBox->fill(this->wireframe);
+
+  this->advancedWindowCreate();
+  this->videoBox->fill(this->advancedWindowGetButton());
+
+  this->videoFrame->fill(videoBox);
+  this->setMainWidget(this->videoFrame);
+}
+
+/**
+   \brief Destructs the Video-stuff
+*/
+OrxonoxGuiVideo::~OrxonoxGuiVideo(void)
+{
+  // nothing to do here.
+}
+
+/**
+   \brief Creates a window, and all it contains for the Source-update.
+*/
+void OrxonoxGuiVideo::advancedWindowCreate(void)
+{
+  // the button, that opens this Window.
+  this->advancedButton = new Button("advanced");
+
+  // the Window itself
+  this->advancedWindow = new Window("Advanced Video Options");
+  this->advancedWindow->setGroupName("advancedVideoOptions");
+
+  this->advancedBox = new Box('v');
+
+  // Advanced Performance Options
+  this->shadows = new CheckButton("Shadows");
+  this->shadows->saveability();
+  this->advancedBox->fill(this->shadows);
+
+  this->fog = new CheckButton("Fog");
+  this->fog->saveability();
+  this->advancedBox->fill(this->fog);
+
+  this->reflections = new CheckButton("Reflections");
+  this->reflections->saveability();
+  this->advancedBox->fill(this->reflections);
+
+  this->textures = new CheckButton("Textures");
+  this->textures->saveability();
+  this->advancedBox->fill(this->textures);
+
+  this->textureDetail = new Menu("Texture Detail", "low", "medium", "high", "lastItem");
+  this->textureDetail->saveability();
+  this->advancedBox->fill(this->textureDetail);
+
+  this->modelDetailLabel = new Label("Model Detail");
+  this->advancedBox->fill(this->modelDetailLabel);
+  this->modelDetail = new Menu("Model Detail", "low", "medium", "high", "lastItem");
+  this->modelDetail->saveability();
+  this->advancedBox->fill(this->modelDetail);
+
+  this->antiAliasingLabel = new Label("Anti-Aliasing-depth:");
+  this->advancedBox->fill(this->antiAliasingLabel);
+  this->antiAliasing = new Menu("Anti Aliasing", "0", "1", "2", "4", "8",  "lastItem");
+  this->antiAliasing->saveability();
+  this->advancedBox->fill(this->antiAliasing);
+
+  this->filterMethodLabel = new Label("Filtering Method:");
+  this->advancedBox->fill(this->filterMethodLabel);
+  this->filterMethod = new Menu("Filtering Method", "none", "linear", "bilinear", "trilinear", "anisortopic", "lastItem");
+  this->filterMethod->saveability();
+  this->advancedBox->fill(this->filterMethod);
+  
+  this->closeButton = new Button("close");
+  this->advancedBox->fill(this->closeButton);
+
+  this->advancedWindow->fill(advancedBox);
+#ifdef HAVE_GTK2 
+  this->advancedButton->connectSignal("button_press_event", this->advancedWindow, Window::windowOpen);
+  this->closeButton->connectSignal("button_press_event", this->advancedWindow, Window::windowClose);
+  this->advancedWindow->connectSignal("destroy", this->advancedWindow, Window::windowClose);
+  this->advancedWindow->connectSignal("delete_event", this->advancedWindow, Window::windowClose);
+#endif /* HAVE_GTK2 */
+   Window::addWindow(this->advancedWindow);
+
+}
+
+/**
+   \returns A Pointer to the Button of the UpdaterSourceWindow
+*/
+Button* OrxonoxGuiVideo::advancedWindowGetButton(void)
+{
+  return this->advancedButton;
+}
+
+void OrxonoxGuiVideo::getResolutions(Menu* menu)
+{
+  SDL_Init(SDL_INIT_VIDEO);
+  SDL_Rect **modes;
+  int i;
+  int x = 0,y =0; // check for difference
+  char tmpChar[100];
+  
+  /* Get available fullscreen/hardware modes */
+  modes=SDL_ListModes(NULL, SDL_FULLSCREEN|SDL_HWSURFACE);
+  
+  /* Check is there are any modes available */
+  if(modes == (SDL_Rect **)0){
+    PRINTF(2)("No video-modes available!\n");
+    exit(-1);
+  }
+  
+  /* Check if our resolution is restricted */
+  if(modes == (SDL_Rect **)-1){
+    PRINTF(2)("All resolutions available.\n");
+  }
+  else{
+    /* Print valid modes */
+    PRINT(4)("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);
+	    sprintf(tmpChar, "%dx%d", modes[i]->w, modes[i]->h);
+	    menu->addItem(tmpChar);
+	    x = modes[i]->w; y = modes[i]->h;
+	  }
+      }
+  }
+  SDL_Quit();
+}
Index: orxonox/trunk/src/lib/gui/gui/gui_video.h
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui_video.h	(revision 4054)
+++ orxonox/trunk/src/lib/gui/gui/gui_video.h	(revision 4054)
@@ -0,0 +1,54 @@
+/*!
+  \file gui_video.h
+  \brief File that holds the class that creates the Video-Options.
+*/
+#ifndef _GUI_VIDEO_H
+#define _GUI_VIDEO_H
+
+#include "gui.h"
+#include "gui_element.h"
+#include "gui_gtk.h"
+
+//! Class that creates the Video-Options.
+class OrxonoxGuiVideo : public OrxonoxGuiElement
+{
+ private:
+  Frame* videoFrame;        //!< The Frame that holds the video options.
+  Box* videoBox;            //!< The Box that holds the video options.
+  CheckButton* fullscreen;  //!< CheckButton for fullscreen-mode
+  Menu* resolution;         //!< Menu for the resolution
+  CheckButton* wireframe;   //!< CheckButton for wireframe Mode.
+
+  // advanced-Performance-Options
+  Window* advancedWindow;   //!< A Window to display advanced options.
+  Button* advancedButton;   //!< A Button to open the Advanced Video Performance Window.
+  Box* advancedBox;         //!< A Box to pack the options into.
+  CheckButton* shadows;     //!< CheckButton for shadows
+  CheckButton* fog;         //!< CheckButton for fog.
+  CheckButton* reflections; //!< CheckButton for reflections
+  CheckButton* textures;    //!< CheckButton for textures
+  Menu* textureDetail;      //!< Menu for the Texture-Detail.
+  
+  Label* modelDetailLabel;  //!< Label for model-detail.
+  Menu* modelDetail;        //!< model-detail.
+  
+  Label* antiAliasingLabel; //!< Label for the anti-aliasing mode.
+  Menu* antiAliasing;       //!< Menu for the Antialiasing-mode.
+
+  Label* filterMethodLabel; //!< Label for filtering-Method.
+  Menu* filterMethod;       //!< Menu for filtering Method.
+
+  Button* closeButton;      //!< A Button to close the Advanced-settingsWindow.
+
+  Button* advancedWindowGetButton(void);
+  void advancedWindowCreate(void);
+  
+ public:
+  OrxonoxGuiVideo(void);
+  ~OrxonoxGuiVideo(void);
+
+  void getResolutions(Menu* menu);
+  
+
+};
+#endif /* _GUI_VIDEO_H */
Index: orxonox/trunk/src/lib/gui/gui/orxonox_gui.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/orxonox_gui.cc	(revision 4053)
+++ 	(revision )
@@ -1,135 +1,0 @@
-/* 
-   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.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-
-
-   ### File Specific:
-   main-programmer: Benjamin Grauer
-
-*/
-
-#include <unistd.h>
-
-#include "orxonox_gui.h"
-#include "orxonox_gui_video.h"
-#include "orxonox_gui_audio.h"
-#include "orxonox_gui_exec.h"
-#include "orxonox_gui_flags.h"
-#include "orxonox_gui_banner.h"
-#include "orxonox_gui_keys.h"
-#include "orxonox_gui_update.h"
-
-  Window* orxonoxGUI = NULL;
-  OrxonoxGuiVideo* video = NULL;
-  OrxonoxGuiAudio* audio = NULL;
-  OrxonoxGuiExec* exec = NULL;
-  OrxonoxGuiFlags* flags = NULL;
-  OrxonoxGuiBanner* banner = NULL;
-  OrxonoxGuiKeys* keys = NULL;
-  OrxonoxGuiUpdate* update = NULL;
-int verbose = 4;
-
-/* ORXONOXGUI */
-
-/**
-   \brief Initializes the Gui
-*/
-OrxonoxGui::OrxonoxGui(int argc, char *argv[])
-{
-  initGUI(argc, argv);
-
-  orxonoxGUI = new Window( "grafical orxonox loader, "PACKAGE_VERSION);
-  
-  Box* windowBox = new Box ('h');
-
-  banner = new OrxonoxGuiBanner();
-  windowBox->fill (banner->getWidget());
-  
-  Box* optionBoxL = new Box('v');
-  Box* optionBoxR = new Box('v');
-  
-  Box* avBox = new Box('h');
-
-  video = new OrxonoxGuiVideo();
-  avBox->fill(video->getWidget());
-  audio = new OrxonoxGuiAudio();
-  avBox->fill(audio->getWidget());
-      
-  optionBoxL->fill(avBox);
-
-  keys = new OrxonoxGuiKeys();
-  optionBoxL->fill(keys->getWidget());
-  windowBox->fill(optionBoxL);
-
-  exec = new OrxonoxGuiExec();
-  optionBoxR->fill(exec->getWidget());
-
-  flags = new OrxonoxGuiFlags();
-
-  optionBoxR->fill(flags->getWidget());
-
-  update = new OrxonoxGuiUpdate();
-  optionBoxR->fill(update->getWidget());
-  windowBox->fill(optionBoxR);
-  
-  orxonoxGUI->fill(windowBox);
-
-  // Reading Values from File
-  exec->setConfFile("~/.orxonox/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);
-
-  flags->setTextFromFlags(orxonoxGUI);
-  orxonoxGUI->showall();
-
-  //// Handling special Cases. ///
-
-  // case update //
-#ifdef HAVE_CURL
-  if (static_cast<Option*>(orxonoxGUI->findWidgetByName("auto update", 0))->value == 1)
-    {
-      update->checkForUpdates();
-    }
-#endif /* HAVE_CURL */
-
-  // case start-with-gui.
-  if (!access(exec->getConfigFile(), F_OK) && static_cast<Option*>(orxonoxGUI->findWidgetByName("Always Show this Menu", 0))->value == 0)
-    OrxonoxGuiExec::startOrxonox(NULL, exec);
-  else
-    {
-      mainloopGUI();
-    }
-
-}
-
-
-/**
-   \brief Destructor.
-*/
-OrxonoxGui::~OrxonoxGui(void)
-{
-  delete video;
-  delete audio;
-  delete exec;
-  delete flags;
-  delete banner;
-  delete keys;
-  delete update;
-}
Index: orxonox/trunk/src/lib/gui/gui/orxonox_gui.h
===================================================================
--- orxonox/trunk/src/lib/gui/gui/orxonox_gui.h	(revision 4053)
+++ 	(revision )
@@ -1,31 +1,0 @@
-/*!
- \file orxonox_gui.h
- \brief Creation of the Gui
-
- \todo way to start gui without GTK (textmode) AND IMPROOVE
- \todo curl interface to Download cool stuff
-
- \todo widgets save themselves
- \todo good way to step through all the Widgets
- \todo label -> protected : getlabel function
-*/
-
-#ifndef _ORXONOX_GUI_H
-#define _ORXONOX_GUI_H
-
-using namespace std;
-
-#include "orxonox_gui_gtk.h"
-
-#include <stdlib.h>
-
-//! Class that creates the OrxonoxGui
-class OrxonoxGui
-{
- public:
-  OrxonoxGui(int argc, char *argv[]);
-  ~OrxonoxGui(void);
-
-};
-
-#endif /* _ORXONOX_GUI_H */
Index: orxonox/trunk/src/lib/gui/gui/orxonox_gui_audio.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/orxonox_gui_audio.cc	(revision 4053)
+++ 	(revision )
@@ -1,64 +1,0 @@
-/* 
-   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.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-
-
-   ### File Specific:
-   main-programmer: Benjamin Grauer
-
-*/
-
-#include "orxonox_gui_audio.h"
-
-/**
-   \brief Creates an Audio-Frame
-*/
-OrxonoxGuiAudio::OrxonoxGuiAudio(void)
-{
-  this->audioFrame = new Frame("Audio-Options:");
-  this->audioBox = new Box('v');
-  this->audioFrame->setGroupName("audio");
-  
-  this->enableSound = new CheckButton("Disable Sound");
-  this->enableSound->setFlagName ("no-sound", 0);
-  this->enableSound->saveability();
-  this->audioBox->fill(this->enableSound);
-  Label* musicVolumeLabel = new Label("Music Volume");
-  this->audioBox->fill(musicVolumeLabel);
-  this->musicVolume = new Slider("Music Volume", 0, 100);
-  this->musicVolume->setFlagName("music-volume", "m", 80);
-  this->musicVolume->saveability();
-  this->audioBox->fill (this->musicVolume);
-  Label* effectsVolumeLabel = new Label ("Effects Volume");
-  this->audioBox->fill (effectsVolumeLabel);
-  this->effectsVolume = new Slider ("Effects Volume", 0, 100);
-  this->effectsVolume->setFlagName ("effects-volume", "e", 80);
-  this->effectsVolume->saveability();
-  this->audioBox->fill (this->effectsVolume);
-
-  this->audioFrame->fill(this->audioBox);
-  this->setMainWidget(this->audioFrame);
-}
-
-/** 
-    \brief Destructs the Audio-Stuff
-*/
-OrxonoxGuiAudio::~OrxonoxGuiAudio(void)
-{
-  // nothing to do here.
-}
Index: orxonox/trunk/src/lib/gui/gui/orxonox_gui_audio.h
===================================================================
--- orxonox/trunk/src/lib/gui/gui/orxonox_gui_audio.h	(revision 4053)
+++ 	(revision )
@@ -1,25 +1,0 @@
-/*!
-  \file orxonox_gui_audio.h
-  \brief File that holds the class that creates the Audio-Options.
-*/
-
-#ifndef _ORXONOX_GUI_AUDIO_H
-#define _ORXONOX_GUI_AUDIO_H
-
-#include "orxonox_gui.h"
-#include "orxonox_gui_element.h"
-
-//! Class that creates the Audio-Options.
-class OrxonoxGuiAudio : public OrxonoxGuiElement
-{
- private:
-  Frame* audioFrame;        //!< The Frame that holds the audio Options.
-  Box* audioBox;            //!< The Box that holds the audio Options.
-  CheckButton* enableSound; //!< A Ckeckbutton for enabling Sound.
-  Slider* musicVolume;      //!< A Slider for music volume.
-  Slider* effectsVolume;    //!< A Slider for effects volume.
- public:
-  OrxonoxGuiAudio(void);
-  ~OrxonoxGuiAudio(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 4053)
+++ 	(revision )
@@ -1,77 +1,0 @@
-/* 
-   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.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-
-
-   ### File Specific:
-   main-programmer: Benjamin Grauer
-
-*/
-
-#include "orxonox_gui_banner.h"
-#include "banner.xpm"
-#include "logo.xpm"
-
-/**
-   \brief Creates a new BannerEventBox and its content.
-*/
-OrxonoxGuiBanner::OrxonoxGuiBanner(void)
-{
-  // Banner Itself //
-  this->bannerEventBox = new EventBox("BannerEventBox");
-  this->bannerImage = new Image(banner_xpm);
-  this->bannerEventBox->fill(this->bannerImage);
-
-  // Banner Window //
-  this->logoWindow = new Window("Logo");
-
-#ifdef HAVE_GTK2
-  this->bannerEventBox->connectSignal("button_press_event", this->logoWindow, Window::windowOpen);
-
-  this->logoWindow->connectSignal("destroy", this->logoWindow, Window::windowClose);
-  this->logoWindow->connectSignal("delete_event", this->logoWindow, Window::windowClose);
-#endif /* HAVE_GTK2 */
-  this->logoEventBox = new EventBox();
-  this->logoBox = new Box('v');
-  this->logoLabel = new Label("orxonox, version: " PACKAGE_VERSION);
-  this->logoBox->fill(this->logoLabel);
-  this->logoImage = new Image(logo_xpm);
-  this->logoBox->fill(this->logoImage);
-
-  //! \todo add the names of all the guys working on orxonox
-  this->orxIsLabel = new Label("orxonox is:\nPatrick Boenzli - main Developer\nBenjamin Grauer - right Hand\n....");
-  this->logoBox->fill(this->orxIsLabel);
-  this->logoEventBox->fill(this->logoBox);
-#ifdef HAVE_GTK2
-  this->logoEventBox->connectSignal("button_press_event", this->logoWindow, Window::windowClose);
-#endif /* HAVE_GTK2 */
-
-  this->logoWindow->fill(this->logoEventBox);
-  
-  Window::addWindow(this->logoWindow);
-
-  this->setMainWidget(bannerEventBox);
-}
-
-/**
-   \brief Destructs it.
-*/
-OrxonoxGuiBanner::~OrxonoxGuiBanner(void)
-{
-  // nothing to do here
-}
Index: orxonox/trunk/src/lib/gui/gui/orxonox_gui_banner.h
===================================================================
--- orxonox/trunk/src/lib/gui/gui/orxonox_gui_banner.h	(revision 4053)
+++ 	(revision )
@@ -1,38 +1,0 @@
-/*!
-  \file orxonox_gui_banner.h
-  \brief  File that holds the class that creates the Banner-Image.\n
-  This is Commercial :-)
-*/
-
-#ifndef _ORXONOX_GUI_BANNER_H
-#define _ORXONOX_GUI_BANNER_H
-
-#include "orxonox_gui.h"
-#include "orxonox_gui_element.h"
-
-//! Class that creates the Banner-Image
-class OrxonoxGuiBanner : public OrxonoxGuiElement
-{
- private:
-  // the banner Frame
-  Frame* bannerFrame;       //!< The frame that holds the Banner.
-  Box* bannerBox;           //!< The box that holds the Banner.
-  EventBox* bannerEventBox; //!< an Image needs an EventBox to catch klicks.
-  Image* bannerImage;       //!< The Image for the Banner.
-  Label* bannerLabel;       //!< The Label of the Banner.
-
-  // the logo Window
-  Window* logoWindow;       //!< The Window that holds the Orxonox-CrewLogo.
-  EventBox* logoEventBox;   //!< The EventBox that holds the Orxonox-CrewLogo. it has to be an eventbox, because Images can not receive clicks.
-  Box* logoBox;             //!< The Box that holds the Orxonox-CrewLogo
-  Image* logoImage;         //!< The Orxonox-CrewLogo-Image
-  Label* logoLabel;         //!< The Label for the Orxonox-CrewLogo
-  Label* orxIsLabel;        //!< Some text about us.
-
- public:
-  OrxonoxGuiBanner(void);
-  ~OrxonoxGuiBanner(void);
-};
-
-
-#endif /* _ORXONOX_GUI_BANNER_H */
Index: orxonox/trunk/src/lib/gui/gui/orxonox_gui_element.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/orxonox_gui_element.cc	(revision 4053)
+++ 	(revision )
@@ -1,45 +1,0 @@
-/* 
-   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 4053)
+++ 	(revision )
@@ -1,31 +1,0 @@
-/*! 
-    \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 4053)
+++ 	(revision )
@@ -1,393 +1,0 @@
-/* 
-   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.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-
-
-   ### File Specific:
-   main-programmer: Benjamin Grauer
-
-*/
-
-#include "orxonox_gui_exec.h"
-
-#include <string.h>
-
-#include <sys/stat.h>
-#include <sys/types.h>
-
-
-HashTable* orxonoxFlagHash;
-
-/** 
-    \brief Creates the Exec-Frame
-*/
-OrxonoxGuiExec::OrxonoxGuiExec(void)
-{
-  configFile = new char[512];
-
-  this->execFrame = new Frame("Execute-Tags:");
-  this->execBox = new Box('v');
-  this->execFrame->setGroupName("misc");
-  
-  this->start = new Button("Start");
-#ifdef HAVE_GTK2
-  this->start->connectSignal("clicked", this, startOrxonox);
-#endif /* HAVE_GTK2 */
-  this->execBox->fill(start);
-  this->saveSettings = new CheckButton("Save Settings");
-  this->saveSettings->value = 1;
-  this->saveSettings->saveability();
-  this->execBox->fill(this->saveSettings);
-  this->verboseMode = new Menu("verbose mode", "nothing", "error", "warning", "info", "lastItem");
-  this->verboseMode->setFlagName("verbose", "v", 0);
-  this->verboseMode->saveability();
-  this->execBox->fill(this->verboseMode);
-  this->alwaysShow = new CheckButton("Always Show this Menu");
-  this->alwaysShow->setFlagName("gui", "g", 0);
-  this->alwaysShow->saveability();
-  this->execBox->fill(this->alwaysShow);
-  this->quit = new Button("Quit");
-#ifdef HAVE_GTK2
-  this->quit->connectSignal("clicked", this, OrxonoxGuiExec::quitGui);
-  //  Window::mainWindow->connectSignal("remove", this, OrxonoxGuiExec::quitGui);
-  Window::mainWindow->connectSignal("destroy", this, OrxonoxGuiExec::quitGui);
-#endif /* HAVE_GTK2 */
-  this->execBox->fill(this->quit);
-
-  this->execFrame->fill(this->execBox);
-
-  this->setMainWidget(execFrame);
-}
-
-/**
-   \brief Destructs the Execution-stuff
-*/
-OrxonoxGuiExec::~OrxonoxGuiExec(void)
-{
-  if(this->configFile)
-    delete []this->configFile;
-}
-
-/* FILE HANDLING */
-
-/**
-   \brief sets the confDir and File-name out of an input-string
-*/
-void OrxonoxGuiExec::setConfFile(char* confFile)
-{
-  char splitter = 
-#ifdef __WIN32__ 
-    '\\';
-#else
-  '/';
-#endif
-  char* tmpConfFile = new char[strlen(confFile)+1];
-  strcpy(tmpConfFile, confFile);
-  char* tmp = strrchr(tmpConfFile, splitter);
-  if (tmp)
-    {
-      tmp[0] = '\0';
-      this->setConfDir(tmpConfFile);
-      this->setFileName(tmp+1);
-    }
-  else
-    {
-      this->setConfDir("~/");
-      this->setFileName(tmpConfFile);
-    }
-  delete []tmp;
-  delete []tmpConfFile;
-}
-
-/**
-   \brief sets the Directory of the configuration files
-   \param confDir the Directory for the configuration files
-*/
-void OrxonoxGuiExec::setConfDir(char* confDir)
-{
-  if (!strncmp(confDir, "~/", 2))
-    {
-      char tmp[500];
-#ifdef __WIN32__
-      strcpy(tmp, getenv("USERPROFILE"));
-#else
-      strcpy(tmp, getenv("HOME"));
-#endif
-      this->confDir = new char[strlen(tmp)+strlen(confDir)];
-      sprintf(this->confDir, "%s%s", tmp, confDir+1);
-    }
-  else
-    {
-      this->confDir = new char[strlen(confDir)+1];
-      strcpy(this->confDir, confDir);
-    }
-  PRINTF(3)("Config Directory is: %s.\n", this->confDir);
-  mkdir(this->confDir, 0755);
-}
-
-/**
-   \brief Sets the location of the configuration File.
-   \param fileName the location of the configFile
-
-   \todo: memory allocation could be better.
-
-   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)
-{
-  if (!this->confDir)
-    this->setConfDir("~/");
-  this->configFile = new char[strlen(this->confDir)+strlen(fileName)+2];
-  sprintf(this->configFile, "%s/%s", this->confDir, fileName);
-  PRINTF(3)("ConfigurationFile is %s.\n", this->configFile);
-}
-
-/**
-   \returns The name of the Configuration-File
-*/
-char* OrxonoxGuiExec::getConfigFile(void) const
-{
-  return this->configFile;
-}
-
-/**
-   \brief checks if a option should be saved.
-   \return 1 if it should 0 if not/
-*/
-int OrxonoxGuiExec::shouldsave()
-{
-  return(static_cast<Option*>(this->saveSettings)->value);
-}
-
-/** 
-    \brief Saves the configuration-file to the Disk.\n
-    \param widget from which Widget on should be saved.
-
-    this Function only opens and closes the file, in between OrxonoxGuiExec::writeFileText(Widget* widget) will execute the real writing process.
-*/
-void OrxonoxGuiExec::writeToFile(Widget* widget)
-{
-  this->CONFIG_FILE = fopen(configFile, "w");
-  if(this->CONFIG_FILE)
-    this->writeFileText(widget, 0);
-  fclose(this->CONFIG_FILE);
-}
-
-/**
-   \brief Actually writes into the configuration file to the disk.
-   \param widget from which Widget on should be saved.
-   \param depth initially "0", and grows higher, while new Groups are bundeled.
-*/
-void OrxonoxGuiExec::writeFileText(Widget* widget, int depth)
-{
-  int counter = 0;
-  while(counter < depth &&((widget->isOption>0
-			      &&(static_cast<Option*>(widget)->isSaveable()))
-			     ||(widget->isOption<0
-				&& static_cast<Packer*>(widget)->getGroupName())))
-    {
-      fprintf(this->CONFIG_FILE, "  ", depth);
-      counter++;
-    }
-  
-  // check if it is a Packer, and if it is, check if it has a name and if there is something in it.
-  if(widget->isOption <0)
-    {
-      if(static_cast<Packer*>(widget)->getGroupName())
-	{
-	  fprintf(CONFIG_FILE, "[%s]\n", static_cast<Packer*>(widget)->getGroupName());
-	  this->writeFileText(static_cast<Packer*>(widget)->down, depth+1);
-	  fprintf(CONFIG_FILE, "\n");
-	}
-      else
-	{
-	  this->writeFileText(static_cast<Packer*>(widget)->down, depth);
-	}
-    } 
-  //  if(widget->isOption == 0)
-  //    printf("%s\n",widget->title);
-  if(widget->isOption >= 1)
-    if (static_cast<Option*>(widget)->isSaveable())
-      {
-	char Buffer[256];
-	char* space2under;
-	strcpy(Buffer, static_cast<Option*>(widget)->title);
-	if(strchr(Buffer, '_'))
-	  PRINTF(2)("Optionname %s is not Valid for Saving, because it includes an underscore\n", Buffer);
-	while(space2under = strchr(Buffer, ' '))
-	  {
-	    space2under[0] = '_';
-	  }
-	  fprintf(CONFIG_FILE, "%s = %s\n", Buffer, static_cast<Option*>(widget)->save());
-      }
-
-  if(widget->next != NULL)
-    this->writeFileText(widget->next, depth);
-}
-
-/**
-   \brief Reads in Configuration Data.
-   \param widget from which Widget on should be saved.
-*/
-void OrxonoxGuiExec::readFromFile(Widget* widget)
-{
-  this->CONFIG_FILE = fopen(configFile, "r");
-  VarInfo varInfo;
-  if(this->CONFIG_FILE)
-    {
-      Widget* groupWidget = widget;
-      char Buffer[256] = "";
-      char Variable[256]= "";
-      char* Value;
-      while(fscanf(this->CONFIG_FILE, "%s", Buffer) != EOF)
-	{
-	  // group-search //
-	  if(!strncmp(Buffer, "[", 1))
-	    {
-	      if((groupWidget = locateGroup(widget, Buffer, 1))==NULL)
-		{
-		  PRINTF(2)("!!There is no group called %s in this GUI.\n First best Widget will get the Infos assigned.\n Config-File will be updated in next Save\n", Buffer);
-		  groupWidget = widget;
-		}
-	      else
-		PRINT(5)("Group %s located.\n", static_cast<Packer*>(groupWidget)->groupName);
-	    }
-	  // option-setting //
-	  if(!strcmp(Buffer, "="))
-	    {
-	      char* under2space;
-	      while(under2space = strchr(Variable, '_'))
-		{
-		  sprintf(under2space, " %s", under2space+1);
-		}
-	      
-	      fscanf(this->CONFIG_FILE, "%s", Buffer);
-	      varInfo.variableName = Variable;
-	      varInfo.variableValue = Buffer;
-	      groupWidget->walkThrough(this->readFileText, &varInfo, 0);
-	      sprintf(Variable, "");
-	    }
-	  sprintf(Variable, "%s", Buffer);
-	}
-      widget->walkThrough(widget->setOptions, 0);
-    }
-}
-
-/**
-   \brief Maps Confugurations to the Options.
-   \param widget which widget downwards
-   \param varInfo Information about the Variable to read
-*/
-void OrxonoxGuiExec::readFileText(Widget* widget, void* varInfo)
-{
-  VarInfo* info =(VarInfo*)varInfo;
-  if(widget->title && !strcmp(widget->title, info->variableName))
-    {
-      PRINT(5)("Located Option %s.\n", widget->title);
-      if(widget->isOption >= 1)
-	  static_cast<Option*>(widget)->load(info->variableValue);
-    }
-}
-
-/**
-   \brief Locates a Group.
-   \param widget The Widget from where to search from
-   \param groupName The GroupName for which to search.
-   \param depth The Depth of the search seen from the first widget we searched from.
-   \returns The Widget that holds the Group, or the NULL if the Group wasn't found.
-
-   \todo do this in gui-gtk.
-*/
-Widget* OrxonoxGuiExec::locateGroup(Widget* widget, char* groupName, int depth)
-{
-  Widget* tmp;
-
-  // removes the trailing and ending [ ].
-  if(!strncmp(groupName, "[", 1))
-    {
-      groupName = groupName+1;
-      groupName[strlen(groupName)-1] = '\0';
-    }
-
-  if(widget->isOption < 0)
-    {
-      if(static_cast<Packer*>(widget)->getGroupName() && !strcmp(groupName, static_cast<Packer*>(widget)->getGroupName()))
-	{
-	  return widget;
-	}
-      else
-	{
-	  if((tmp = locateGroup(static_cast<Packer*>(widget)->down, groupName, depth+1)) != NULL)
-	    return tmp;
-	}
-    } 
-  
-  if(widget->next != NULL && depth != 0)
-    {
-      if((tmp = locateGroup(widget->next, groupName, depth)) != NULL)
-	return tmp;
-    }
-  return NULL;
-}
-
-/**
-   \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
-
-   This is a Signal and can be executed through Widget::signal_connect
-*/
-#ifdef HAVE_GTK2
-int OrxonoxGuiExec::startOrxonox(GtkWidget* widget, void* data)
-#else /* HAVE_GTK2 */
-int OrxonoxGuiExec::startOrxonox(void* widget, void* data)
-#endif /* HAVE_GTK2 */
-{
-  Window::mainWindow->hide();
-
-#ifdef HAVE_GTK2
-  gtk_widget_destroy(Window::mainWindow->widget);
-#else
-  quitGui(widget, data);
-#endif /* HAVE_GTK2 */
-
-  PRINT(3)("Starting Orxonox\n");
-  system(progExecutable); //!< \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
-   \param widget the widget that executed the start command
-   \param data additional data
-
-   This is a Signal and can be executed through Widget::signal_connect
-*/
-#ifdef HAVE_GTK2
-int OrxonoxGuiExec::quitGui(GtkWidget* widget, void* data)
-#else /* HAVE_GTK2 */
-int OrxonoxGuiExec::quitGui(void* widget, void* data)
-#endif /* HAVE_GTK2 */
-{
-  OrxonoxGuiExec* exec =(OrxonoxGuiExec*)data;
-  if(exec->shouldsave())
-    exec->writeToFile(Window::mainWindow);
-#ifdef HAVE_GTK2
-  gtk_main_quit();
-  while(gtk_events_pending()) gtk_main_iteration();
-#endif /* HAVE_GTK2 */
-}
Index: orxonox/trunk/src/lib/gui/gui/orxonox_gui_exec.h
===================================================================
--- orxonox/trunk/src/lib/gui/gui/orxonox_gui_exec.h	(revision 4053)
+++ 	(revision )
@@ -1,69 +1,0 @@
-/*!
-  \file orxonox_gui_exec.h
-  \brief File that holds the class that creates the execute-Options.
-*/
-
-#ifndef _ORXONOX_GUI_EXEC_H
-#define _ORXONOX_GUI_EXEC_H
-
-#include "orxonox_gui.h"
-#include "orxonox_gui_element.h"
-
-using namespace std;
-
-//! Class that creates the execute-Options.
-class OrxonoxGuiExec : public OrxonoxGuiElement
-{
- private:
-  Frame* execFrame;            //!< The Frame that holds the ExecutionOptions.
-  Box* execBox;                //!< The Box that holds the ExecutionOptions.
-  Button* start;               //!< The start Button of orxonox.
-  CheckButton* saveSettings;   //!< A CheckBox for if the Options should be saved.
-  Menu* verboseMode;           //!< A Menu for setting the verbose-Mode. \todo setting up a verbose-class.
-  CheckButton* alwaysShow;     //!< A CheckButton, for if orxonox should start with or without gui.
-  Button* quit;                //!< A Button to quit the Gui without starting orxonox.
-  char* confDir;               //!< The directory of the orxonox-configuration-files.
-  char* configFile;            //!< The name of the .orxonox.conf(ig)-file.
-  FILE* CONFIG_FILE;           //!< Filehandler for reading and writing.
-  
-  //! A struct that holds informations about variables.
-  struct VarInfo
-  {
-    char* variableName;        //!< The Name of this variable;
-    char* variableValue;       //!< The Value this variable gets.
-  };
-
- public:
-  OrxonoxGuiExec(void);
-  ~OrxonoxGuiExec(void);
-  
-  void setConfFile(char* confFile);
-  void setConfDir(char* confDir);
-  void setFileName(char* fileName);
-  char* getConfigFile(void) const;
-  int shouldsave(void);
-  void writeToFile(Widget* widget);
-  void writeFileText(Widget* widget, int depth);
-  void readFromFile(Widget* widget);
-  static void readFileText(Widget* widget, void* varInfo);
-  Widget* locateGroup(Widget* widget, char* groupName, int depth);
-
-#ifdef HAVE_GTK2
-  static int startOrxonox(GtkWidget *widget, void* data);
-  static int quitGui(GtkWidget *widget, void* data);
-#else /* HAVE_GTK2 */
-  static int startOrxonox(void* widget, void* data);
-  static int quitGui(void* widget, void* data);
-#endif /* HAVE_GTK2 */
-};
-
-//! A simple hashtable 
-struct HashTable
-{
-  char* name;           //!< name of the entry
-  char* value;          //!< value of the entry
-  HashTable* next;      //!< pointer to the next entry
-};
-
-
-#endif /* _ORXONOX_GUI_EXEC_H */
Index: orxonox/trunk/src/lib/gui/gui/orxonox_gui_flags.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/orxonox_gui_flags.cc	(revision 4053)
+++ 	(revision )
@@ -1,98 +1,0 @@
-/* 
-   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.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-
-
-   ### File Specific:
-   main-programmer: Benjamin Grauer
-
-*/
-
-#include "orxonox_gui_flags.h"
-
-/**
-   \brief Creates the Flags-Frame
-*/
-OrxonoxGuiFlags::OrxonoxGuiFlags(void)
-{
-  this->flagsFrame = new Frame("Orxonox-Startup-Flags:");
-  this->flagsBox = new Box('v');
-
-  this->flagsLabel = new Label();
-  this->flagsLabel->setSize(260,60);
-  this->flagsBox->fill(flagsLabel);
-  this->shortFlags = new CheckButton("shortFlags");
-  this->flagsBox->fill(shortFlags);
-
-  this->flagsFrame->fill(flagsBox);
-  this->setMainWidget(flagsFrame);
-}
-
-/**
-   \brief Destructs the Flags-stuff
-*/
-OrxonoxGuiFlags::~OrxonoxGuiFlags(void)
-{
-  // nothing to do here
-}
-
-/**
-   \brief Sets the Flags from widget downwards.
-   \param widget the Widget from which on to scan for deeper Options and their settings.
-*/
-void OrxonoxGuiFlags::setTextFromFlags(Widget* widget)
-{
-  FlagInfo flagInfo;
-  flagInfo.shortFlags = this->shortFlags;
-  flagInfo.flagsLabel = this->flagsLabel;
-
-  this->flagsLabel->ereaseText();
-  this->flagsLabel->appendText(progExecutable);
-  widget->walkThrough(OrxonoxGuiFlags::flagsText, &flagInfo, 0);
-  //  flagsLabel->setTitle(flagText);
-}
-
-/** 
-    \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)
-{
-  FlagInfo* info =(FlagInfo*)flagInfo;
-  if(widget->isOption >= 1)
-    if (static_cast<Option*>(widget)->value != static_cast<Option*>(widget)->defaultValue )
-      {
-	if(info->shortFlags->isActive() && static_cast<Option*>(widget)->flagNameShort)
-	  {
-	    info->flagsLabel->appendText(" -");
-	    info->flagsLabel->appendText(static_cast<Option*>(widget)->flagNameShort);
-	  }
-	else if(!info->shortFlags->isActive() && static_cast<Option*>(widget)->flagName)
-	  {
-	    info->flagsLabel->appendText(" --");
-	    info->flagsLabel->appendText(static_cast<Option*>(widget)->flagName);
-	  }
-
-	if(static_cast<Option*>(widget)->isOption == 2)
-	  {
-	    info->flagsLabel->appendText("=");
-	    info->flagsLabel->appendInt(static_cast<Option*>(widget)->value);
-	  }
-      }
-}
Index: orxonox/trunk/src/lib/gui/gui/orxonox_gui_flags.h
===================================================================
--- orxonox/trunk/src/lib/gui/gui/orxonox_gui_flags.h	(revision 4053)
+++ 	(revision )
@@ -1,35 +1,0 @@
-/*!
-  \file orxonox_gui_flags.h
-  \brief File that holds the class that creates the flags-Text.
-*/
-
-#ifndef _ORXONOX_GUI_FLAGS_H
-#define _ORXONOX_GUI_FLAGS_H
-
-#include "orxonox_gui.h"
-#include "orxonox_gui_element.h"
-
-//! Class that creates the flags-Text.
-class OrxonoxGuiFlags : public OrxonoxGuiElement
-{
- private:
-  Frame* flagsFrame;          //!< The Frame that holds the flagsDisplay.
-  Box* flagsBox;              //!< The Box that holds the flagsDisplay.
-  CheckButton* shortFlags;    //!< CheckButton to change the display of short and long flags \todo show long if long not availible...
-  Label* flagsLabel;          //!< The Label of the Flags
-
- public:
-  OrxonoxGuiFlags(void);
-  ~OrxonoxGuiFlags(void);
-
-  void setTextFromFlags(Widget* widget);
-  static void flagsText(Widget* widget, void* flagInfo);
-  
-  //! Struct that handles flag information.
-  struct FlagInfo
-  {
-    CheckButton* shortFlags;     //!< Button for the flag.
-    Label* flagsLabel;           //!< Label for the flag.
-  };
-};
-#endif /* _ORXONOX_GUI_FLAGS_H */
Index: orxonox/trunk/src/lib/gui/gui/orxonox_gui_gtk.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/orxonox_gui_gtk.cc	(revision 4053)
+++ 	(revision )
@@ -1,1804 +1,0 @@
-/* 
-   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.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-
-
-   ### File Specific:
-   main-programmer: Benjamin Grauer
-
-*/
-
-
-#include "orxonox_gui_gtk.h"
-
-#include <stdarg.h>
-#include <string.h>
-
-using namespace std;
-
-// temporarily.
-#include "orxonox_gui_flags.h"
-extern Window* orxonoxGUI;
-extern OrxonoxGuiFlags* flags;
-char* guiExecutable;
-char* progExecutable;
-
-/**
-   \brief Initializes the Guis GTK-stuff.
-   \param argc the argument count.
-   \param argv The Argument strings.
-*/
-bool initGUI(int argc, char *argv[])
-{
-  guiExecutable = new char[strlen(argv[0])+1];
-  strcpy(guiExecutable, argv[0]);
-  progExecutable = new char[strlen(guiExecutable)-2];
-  strncpy(progExecutable, guiExecutable, strlen(guiExecutable)-3);
-  progExecutable[strlen(progExecutable)]= '\0';
-
-#ifdef HAVE_GTK2
-#ifdef HAVE_GTHREAD
-  PRINTF(4)("Initializing the ThreadSystem of the GUI\n");
-  g_thread_init(NULL);
-  gdk_threads_init();
-#endif /* HAVE_GTHREAD */
-  gtk_init(&argc, &argv);
-#include "rc"
-  gtk_rc_parse_string( rc_string );
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief enters the GUI's main-loop
-*/
-bool mainloopGUI(void)
-{
-#ifdef HAVE_GTK2
-  gdk_threads_enter();
-  gtk_main();
-  gdk_threads_leave();
-  delete Window::mainWindow;
-#else /* HAVE_GTK2 */
-  char boolAns = 'y';
-  char ans[1000];
-  PRINT(0)("================================\n");
-  PRINT(0)("= ORXONOX CONFIGURATION WIZARD =\n");
-  PRINT(0)("================================    - version:" PACKAGE_VERSION "\n");
-
-  while(true)
-    {
-      PRINT(0)("\n Listing all the Orxonox Options: \n");
-      PRINT(0)("  #############################\n");
-      Window::mainWindow->walkThrough(Widget::listOptionsAndGroups, 1);
-      
-      PRINT(0)("\nDo you want change any of the above values now? [Yn] ");
-      scanf("%s", ans);
-      if (ans[0] =='n' || ans[0]=='N')
-	break;
-      
-      PRINT(0)("\n Listing all groups\n");
-      PRINT(0)("  #################\n");
-      int groupCount = 0;
-      Window::mainWindow->walkThrough(Widget::listGroups, &groupCount, 1);
-      
-      PRINT(0)("\nIn which Group? [1-%d] ", groupCount);
-      Packer* group;
-      while(true)
-	{
-	  scanf("%s", ans);
-	  int ansIp = atoi(ans);
-	  if (ansIp <= groupCount)
-	    {
-	      group = static_cast<Packer*>(Window::mainWindow->findGroupByNumber(&ansIp, 1));
-	      break;
-	    }
-	  else
-	    PRINT(0)("\nChoose a smaller Number please: [1-%d] ", groupCount);
-	}
-      PRINT(0)("\n\nGroup: [%s]\n\n", group->groupName);
-      int optionCount = 0;
-      group->walkThrough(Widget::listOptions, &optionCount, 0);
-      PRINT(0)("\nWhich Option? [1-%d] ", optionCount);
-      Option* option;
-      while(true)
-	{
-	  scanf("%s", ans);
-	  int ansIp = atoi(ans);
-	  if (ansIp <= groupCount)
-	    {
-	      option = static_cast<Option*>(group->findOptionByNumber(&ansIp, 0));
-	      break;
-	    }
-	  else
-	    PRINT(0)("\nChoose a smaler Number please: [1-%d] ", optionCount);
-	}
-      PRINT(0)("\n\n:: %s ::\n", option->title);
-      option->changeOption();
-      
-      // here follows the rest.... this will be nasty.
-      //! \todo move this into the gui-gtk-file
-      //! \todo finish it.
-      //! \todo memory leek at save(); and save is a BAD word, use saveString instead, or something like it.
-    }
-#endif /* HAVE_GTK2 */
-  
-}
-
-
-//////////////////////////////
-/// DEFINING WIDGET-CLASES ///
-//////////////////////////////
-
-/* WIDGET */
-/**
-   \brief constructs a Widget
-*/
-Widget::Widget(void)
-{
-  next = NULL;
-  this->title = NULL;
-  return;
-}
-
-/**
-   \brief deletes any given Widget
-   This is still pretty crappy.
-*/
-Widget::~Widget(void)
-{
-    if (this->title)
-    {
-      delete []this->title;
-    }
-    
-    PRINTF(5)("deleting the Widget part.\n");
-    
-  PRINTF(5)("deleting recursively\n");
-
-  // deleting next item if existent
-  if (this->next)
-    delete this->next;
-  this->next = NULL;
-
-  //!  \todo not hiding widget, deleting.
-  //  this->hide();
-  //  delete this->widget;
-}
-
-/**
-   \brief sets a new Title to a Widget
-   \param title The new Title to set to the Widget
-*/
-void Widget::setTitle(const char* title)
-{
-  if (this->title)
-    delete []this->title;
-  this->title = new char[strlen(title)+1];
-  strcpy(this->title, title);
-}
-
-/**
-   \brief makes the widget visible.
-*/
-void Widget::show(void)
-{
-#ifdef HAVE_GTK2
-  gtk_widget_show(this->widget);
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief hides the widget.
-*/
-void Widget::hide(void)
-{
-#ifdef HAVE_GTK2
-  gtk_widget_hide(this->widget);
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief Sets the resolution of a specific widget to the given size.
-   \param width the width of the widget to set.
-   \param height the height of the widget to set.
-*/
-void Widget::setSize(int width, int height)
-{
-#ifdef HAVE_GTK2
-  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)
-{
-
-  if (this->title && !strcmp(this->title, name))
-    return this;
-
-  if (this->isOption < 0 && static_cast<Packer*>(this)->down)
-    {
-      Widget* 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;
-}
-
-/**
-   \brief Moves through all the Widgets downwards from this and executes the function on them.
-   \param function must be of type void and takes a Widget* as an Input. 
-   \param depth the current depth. if > 0 then the next Widget will also be walked through.
-*/
-void Widget::walkThrough(void(*function)(Widget*), unsigned int depth)
-{
-  function(this);
-  if (this->isOption < 0)
-    {
-      static_cast<Packer*>(this)->down->walkThrough(function, depth+1);
-    } 
-
-  if (this->next && depth != 0)
-    this->next->walkThrough(function, depth);
-}
-
-/**
-   \brief Moves through all the Widgets downwards from this and executes the function on them.
-   \param function must be of type void and takes a Widget* as an Input.
-   \param data Additional Data you want to pass to the function.
-   \param depth the current depth. if > 0 then the next Widget will also be walked through.
-*/
-void Widget::walkThrough(void(*function)(Widget*, void*), void* data, unsigned int depth)
-{
-  function(this, data);
-  if (this->isOption < 0)
-    {
-      static_cast<Packer*>(this)->down->walkThrough(function, data, depth+1);
-    }
-  if (this->next && depth != 0)
-    this->next->walkThrough(function, data, depth);
-}
-
-/** 
-    \brief This is for listing the options of "widget"
-    \param widget specifies the widget that should be listed
-*/
-void Widget::listOptionsAndGroups(Widget* widget)
-{
-  if (widget->isOption < 0 && static_cast<Packer*>(widget)->groupName)
-    PRINT(0)("[%s]\n", static_cast<Packer*>(widget)->groupName);
-  if (widget->isOption >= 1)
-    {
-      Widget::listOptions(widget);
-    }
-}
-
-/** 
-    \brief This is for listing the options of "widget"
-    \param widget specifies the widget that should be listed
-*/
-void Widget::listOptions(Widget* widget)
-{
-  if(widget->isOption >= 1)
-    PRINT(0)("  %s is %s\n", static_cast<Option*>(widget)->title, static_cast<Option*>(widget)->save());
-}
-
-/** 
-    \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::listOptions(Widget* widget, void* data)
-{
-  
-  if (widget->isOption >= 1)
-    {
-      int* count =(int*)data;
-      *count = *count +1;
-      PRINT(0)(" %d:%s is %s\n", *count, static_cast<Option*>(widget)->title, static_cast<Option*>(widget)->save());
-    }
-}
-
-/** 
-    \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)
-    \param depth The depth of the sarch. if 0 it will not search next pointer
-    
-    \todo should return Option* would be much sexier.
-*/
-Widget* Widget::findOptionByNumber(int* number, unsigned int depth)
-{
-  if (isOption > 0)
-    {
-      --*number;
-      if (*number <= 0)
-	{
-	  return this;
-	}
-    }
-  if (this->isOption < 0 && static_cast<Packer*>(this)->down)
-    {
-      Widget* tmp = static_cast<Packer*>(this)->down->findOptionByNumber(number, depth+1);
-      if (tmp)
-	return tmp;
-    }
-  if (depth>0 && this->next)
-    return this->next->findOptionByNumber(number, depth);
-
-  return NULL;
-}
-
-/** 
-    \brief This is for listing the groups of "widget"
-    \param widget specifies the widget that should be listed
-*/
-void Widget::listGroups(Widget* widget)
-{
-  if (widget->isOption < 0 && static_cast<Packer*>(widget)->groupName)
-    PRINT(0)("[%s]\n", static_cast<Packer*>(widget)->groupName);
-}
-
-/** 
-    \brief This is for listing the Groups of "widget". It also displays the n'th number found.
-    \param widget specifies the widget that should be listed
-    \param data the Counter, that will show the number(this function will raise it by one if a Group is fount.
-*/
-void Widget::listGroups(Widget* widget, void* data)
-{
-  int* count = (int*)data;
-  if (widget->isOption < 0 && static_cast<Packer*>(widget)->groupName)
-    PRINT(0)("%d: [%s]\n", ++*count, static_cast<Packer*>(widget)->groupName);
-}
-
-/** 
-    \brief Finds a Group by a given number(the n'th Group found away from this Widget)
-    \param number The Count of options to wait(by reference)
-    \param depth The depth of the sarch. if 0 it will not search next pointer
-*/
-Widget* Widget::findGroupByNumber(int* number, unsigned int depth)
-{
-  if (isOption < 0 && static_cast<Packer*>(this)->groupName)
-    {
-      --*number;
-      if (*number <= 0)
-	{
-	  return this;
-	}
-    }
-  if (this->isOption < 0 && static_cast<Packer*>(this)->down)
-    {
-      Widget* tmp = static_cast<Packer*>(this)->down->findGroupByNumber(number, depth+1);
-      if (tmp)
-	return tmp;
-    }
-  if (depth>0 && this->next)
-    return this->next->findGroupByNumber(number, depth);
-
-  return NULL;
-}
- 
-/** 
-    \brief This is for setting the option of "widget"
-    \param widget specifies the widget that should be set.
-*/
-void Widget::setOptions(Widget* widget)
-{
-  if (widget->isOption >= 1)
-    static_cast<Option*>(widget)->redraw();
-}
-
-/**
-   \brief Walks through all the Flags given at startuptime.
-*/
-void Widget::flagCheck(Widget* widget, void* flagName)
-{
-  if (widget->isOption>=1)
-    {      
-      Option* option =(Option*)widget;
-      char* name =(char*)flagName;
-      char* value = NULL;
-      bool found = false;
-      // check if long flag matches
-      if ((option->flagName && strlen(name)>2 &&
-	   !strncmp(name+2, option->flagName, strlen(option->flagName)) &&
-	   (name[strlen(option->flagName)+2] == '\0' || name[strlen(option->flagName)+2] == '=') ))
-	{
-	  found = true;
-	  if (name[strlen(option->flagName)+2] == '=')
-	    {
-	      value = name+strlen(option->flagName)+3;
-	    }
-	}
-      // check if short flag matches
-      else if (option->flagNameShort && strlen(name)>1 &&
-	       !strncmp(name+1, option->flagNameShort, strlen(option->flagNameShort)) &&
-	       (name[strlen(option->flagNameShort)+1] == '\0' || name[strlen(option->flagNameShort)+1] == '='))
-	{
-	  found = true;
-	  if (name[strlen(option->flagNameShort)+1] == '=')
-	    {
-	      value = name+strlen(option->flagNameShort)+2;
-	    }	  
-	}
-
-      if (found)
-	{
-	  PRINT(4)("found matching Flag %s\n", name);
-	  if (value)
-	    {
-	      PRINT(4)("with Value %s\n", value);
-	      option->value = atoi(value);
-	    }
-	  else
-	    {
-	      option->value = !option->defaultValue;
-	    }
-	  option->redraw();
-	}
-
-    }
-}
-
-#ifdef HAVE_GTK2
-/** 
-    \brief Connect any signal to any given Sub-widget
-*/
-gulong Widget::connectSignal(char* event, gint(*signal)(GtkWidget*, GdkEvent*, void *))
-{
-  return g_signal_connect(G_OBJECT(this->widget), event, G_CALLBACK(signal), NULL);
-}
-
-/**
-   \brief Connect a signal with additionally passing the whole Object
-*/
-gulong Widget::connectSignal(char* event, gint(*signal)( GtkWidget*, Widget *))
-{
-  return g_signal_connect(G_OBJECT(this->widget), event, G_CALLBACK(signal), this);
-}
-
-/**
-   \brief Connect a signal with additionally passing a whole external Object
-*/
-gulong Widget::connectSignal(char* event, void* extObj, gint(*signal)(GtkWidget*, GdkEvent*, 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*, 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 *))
-{
-  return g_signal_connect(G_OBJECT(this->widget), event, G_CALLBACK(signal), extObj);
-}
-
-void Widget::disconnectSignal(gulong signalID)
-{
-  g_signal_handler_disconnect(G_OBJECT(this->widget), signalID);
-}
-
-/**
-   \brief Signal that does absolutely nothing
-   \param widget The widget that initiated the Signal
-   \param event The event-type.
-   \param nothing nothin.
-*/
-gint Widget::doNothingSignal(GtkWidget *widget, GdkEvent* event, void* nothing)
-{
-}
-#endif /* HAVE_GTK2 */
-
-//void deleteWidget(Widget* lastWidget)
-
-
-/* PACKERS */
-/**
-   \brief Constructs a Packer
-*/
-Packer::Packer(void)
-{
-  this->down = NULL;
-  this->groupName = NULL;
-}
-
-/**
-   \brief Destroys a Packer.
-*/
-Packer::~Packer(void)
-{ 
-  PRINTF(5)("deleting the Packer part.\n");
-  
-  if (this->groupName)
-    delete []this->groupName;
-
-  //deleting recursively.
-  if (this->down)
-    delete this->down;
-  this->down = NULL;
-}
-
-/**
-   \brief Sets the group name under which all the lower widgets of this will be saved.
-   \param name The name of the group.
-*/
-void Packer::setGroupName(char* name)
-{
-  if (this->groupName)
-    delete []this->groupName;
-  this->groupName = new char[strlen(name)+1];
-  strcpy(this->groupName, name);
-}
-
-/**
-   \brief Retrieves the group name under which all the lower widgets of this will be saved.
-   \returns name The name of the group.
-*/
-char* Packer::getGroupName(void)
-{
-  return this->groupName;
-}
-
-/* CONTAINERS */
-
-/**
-   \brief Initializes a Container.
-
-   sets the Container-Specific defaults.
-*/
-Container::Container(void)
-{
-  this->isOption = -1;
-}
-
-/**
-   \brief Destroys a Container.
-*/
-Container::~Container(void)
-{ 
-  PRINTF(5)("deleting the Container part.\n");
-}
-
-/**
-   \briefFills a Container with lowerWidget.
-   \param lowerWidget the Widget that should be filled into the Container.
-
-   It does this by filling up the down pointer only if down points to NULL.
-*/
-void Container::fill(Widget *lowerWidget)
-{
-  if (this->down == NULL)
-    {
-#ifdef HAVE_GTK2
-      gtk_container_add(GTK_CONTAINER(this->widget), lowerWidget->widget);
-#endif /* HAVE_GTK2 */
-      this->down = lowerWidget;
-    }
-  else
-    PRINTF(1)("!!error!! You try to put more than one Widget into a Container. \nNot including this item.\nThis is only possible with Boxes.\n");
-}
-
-// gtk_container_set_border_width(GTK_CONTAINER(widget), 5);
-
-/* WINDOW */
-
-Window* Window::mainWindow = NULL;
-
-/**
-   \brief Adds a new Window Windows to the List of Windows.
-   \param windowToAdd The Windows that should be added to the List
-   \todo this instead of windowToAdd(possibly)
-*/
-void Window::addWindow(Window* windowToAdd)
-{
-  if (!mainWindow)
-    {
-      mainWindow = windowToAdd;
-      return;
-    }
-
-  Widget* tmpWindow = mainWindow;
-  while(tmpWindow->next)
-    tmpWindow = tmpWindow->next;
-  tmpWindow->next = windowToAdd;
-  
-  return;
-}
-      
-
-/**
-   \brief Creating a new Window without a Name
-*/
-Window::Window(void)
-{
-  this->init();
-}
-
-/**
-   \brief Creating a Window with a name
-   \param windowName the name the window should get.
-*/
-
-Window::Window(char* windowName)
-{
-  this->init();
-  this->setTitle(windowName);
-}
-
-/**
-   \brief Destructs a Window.
-*/
-Window::~Window(void)
-{
-  if (this->title)
-    PRINTF(5)("deleting the Window: %s\n", this->title);
-  else 
-    PRINTF(5)("deleting the Window.\n");
-  //  this->hide();
-}
-
-/**
-   \brief initializes a new Window
-*/
-void Window::init(void)
-{
-  if (!mainWindow)
-    mainWindow = this;
-  
-  isOpen = false;
-
-#ifdef HAVE_GTK2
-  widget = gtk_window_new(GTK_WINDOW_TOPLEVEL);
-  gtk_window_set_policy(GTK_WINDOW(widget), TRUE, TRUE, TRUE);
-#if !defined(__WIN32__)
-  //  gtk_window_set_decorated(GTK_WINDOW(widget), FALSE);
-#endif 
-  gtk_container_set_border_width(GTK_CONTAINER(widget), 3);
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief Shows all Widgets that are included within this->widget.
-*/
-void Window::showall(void)
-{
-  if (!this->isOpen)
-    {
-      //      printf("showall\n");
-#ifdef HAVE_GTK2
-      gtk_widget_show_all(this->widget);
-#endif /* HAVE_GTK2 */ 
-     this->isOpen = true;
-    }
-  else
-    {
-      //      printf("showone\n");
-#ifdef HAVE_GTK2
-      gtk_widget_show(this->widget);
-#endif /* HAVE_GTK2 */
-    }
-}
-
-/**
-   \brief Set The Window-title to title
-   \param title title the Window should get.
-*/
-void Window::setTitle(const char* title)
-{
-  if (this->title)
-    delete []this->title;
-  this->title = new char[strlen(title)+1];
-  strcpy(this->title, title);
-#ifdef HAVE_GTK2
-  gtk_window_set_title(GTK_WINDOW(widget), title);
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief opens up a Window and fixes the Focus to it
-*/
-void Window::open(void)
-{
-  if (this != mainWindow)
-    {
-      isOpen = true;
-#ifdef HAVE_GTK2
-      gtk_widget_show_all(this->widget);
-      gtk_grab_add(this->widget);
-#endif /* HAVE_GTK2 */
-    }
-}
-
-/**
-   \brief closes up a Window and removes the Focus from it
-*/
-void Window::close(void)
-{
-  if (this != mainWindow)
-    {
-      this->isOpen = false;
-#ifdef HAVE_GTK2
-      gtk_grab_remove(this->widget);
-      gtk_widget_hide(this->widget);
-#endif /* HAVE_GTK2 */
-    }
-}
-
-#ifdef HAVE_GTK2
-/**
-   \brief opens up a window(not topmost Window).
-   this is the Signal that does it. !!SIGNALS ARE STATIC!!
-   \param widget the widget that did it.
-   \param event the event that did it.
-   \param window the Window that should be opened
-*/
-gint Window::windowOpen(GtkWidget *widget, GdkEvent* event, void* window)
-{
-  static_cast<Window*>(window)->open();
-}
-
-/**
-   \brief closes a window(not topmost Window).
-   this is the Signal that does it. !!SIGNALS ARE STATIC!!
-   \param widget the widget that did it!
-   \param event the event that did it!
-   \param window the Window that should be closed
-*/
-gint Window::windowClose(GtkWidget *widget, GdkEvent* event, void* window)
-{
-  static_cast<Window*>(window)->close();
-}
-
-#endif /* HAVE_GTK2 */
-
-
-/* FRAME */
-
-/** 
-    \brief Creates a new Frame without a name
-*/
-Frame::Frame(void)
-{
-  this->init();
-}
-
-/**
-   \brief Creates a new Frame with name title
-*/
-Frame::Frame(char* title)
-{
-  this->init();
-  this->setTitle(title);
-}
-
-/**
-   \brief destrcucts a Frame
-*/
-Frame::~Frame(void)
-{
-  PRINTF(5)("deleting the Frame: %s\n", this->title);
-}
-
-/** 
-    \brief Initializes a new Frame with default settings
-*/
-void Frame::init(void)
-{
-#ifdef HAVE_GTK2
-  this->widget = gtk_frame_new("");
-  gtk_container_set_border_width(GTK_CONTAINER(this->widget), 3);
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief Sets the Frames name to title
-   \param title The title the Frame should get.
-*/
-void Frame::setTitle(const char* title)
-{
-  if (this->title)
-    delete []this->title;
-  this->title = new char[strlen(title)+1];
-  strcpy(this->title, title);
-#ifdef HAVE_GTK2
-  gtk_frame_set_label(GTK_FRAME(widget), title);
-#endif /* HAVE_GTK2 */
-}
-
-// EVENTBOX //
-
-/**
-   \brief Creates a new EventBox with default settings.
-*/
-EventBox::EventBox(void)
-{
-  this->init();
-}
-
-/**
-   \brief Creates a new EventBox with name title
-   \param title title the Eventbox should get(only data-structure-internal)
-*/
-EventBox::EventBox(char* title)
-{
-  this->init();
-  this->setTitle(title);
-}
-
-/**
-   \brief destructs an EventBox.
-*/
-EventBox::~EventBox(void)
-{
-  PRINTF(5)("deleting the EventBox: %s\n", this->title);
-}
-
-/**
-   \brief Initializes a new EventBox
-*/
-void EventBox::init(void)
-{
-  this->isOption = -1;
-
-#ifdef HAVE_GTK2
-  this->widget = gtk_event_box_new();
-  gtk_container_set_border_width(GTK_CONTAINER(this->widget), 3);
-#endif /* HAVE_GTK2 */
-}
-
-/* BOX */
-
-/**
-   \brief Creates a new horizontal Box
-*/
-Box::Box(void)
-{
-  this->init('h');
-}
-
-/**
-   \brief Creates a new Box of type boxtype
-   \param boxtype if 'v' the Box will be vertically, if 'h' the Box will be horizontally
-*/
-Box::Box(char boxtype)
-{
-  this->init(boxtype);
-}
-
-/**
-   \brief destructs a Box.
-*/
-Box::~Box(void)
-{
-  PRINTF(5)("deleting the Box: %s\n", this->title);
-}
-
-/**
-   \brief Initializes a new Box with type boxtype
-   \param boxtype see Box(char boxtype)
-*/
-void Box::init(char boxtype)
-{
-  this->isOption = -2;
-
-#ifdef HAVE_GTK2
-  if (boxtype == 'v')
-    this->widget = gtk_vbox_new(FALSE, 0);
-  else
-    this->widget = gtk_hbox_new(FALSE, 0);
-#endif /* HAVE_GTK2 */
-}
-
-/** 
-    \brief Fills a box with a given Widget.
-    \param lowerWidget the next Widget that should be appendet to this Box
-
-    It does this by apending the first one to its down-pointer and all its following ones to the preceding next-pointer. The last one will receive a NULL pointer as Next
-*/
-void Box::fill(Widget* lowerWidget)
-{
-#ifdef HAVE_GTK2
-  gtk_box_pack_start(GTK_BOX(this->widget), lowerWidget->widget, TRUE, TRUE, 0);
-#endif /* HAVE_GTK2 */
-  if (this->down == NULL)
-    this->down = lowerWidget;
-  else
-    {
-      Widget* tmp;
-      tmp = this->down;
-      while(tmp->next != NULL)
-	{
-	  tmp = tmp->next;
-	}
-      tmp->next = lowerWidget;
-    }
-}
-
-/* OPTION */
-
-/**
-   \brief Initializes a new Option.
-   sets all Option-Specific-Values to their defaults.
-*/
-Option::Option(void)
-{
-  this->value = 0;
-  this->flagName = NULL;
-  this->flagNameShort = NULL;
-  this->saveable = false;
-  this->defaultValue = 0;
-}
-
-/**
-   \brief Destroys an Option.
-*/
-Option::~Option(void)
-{ 
-  PRINTF(5)("deleting the Option Part.\n");
-  if (this->flagName)
-    delete []this->flagName;
-  if (this->flagNameShort)
-    delete []this->flagNameShort;
-}
-
-/**
-   \brief This sets The FlagName of an Option and defines its default Values
-   !! Options will be saved if flagname is different from NULL !!
-   \param flagname the Name that will be displayed in the output
-   \param defaultvalue the default Value for this Option(see definition of defaultvalue
-*/
-void Option::setFlagName(char* flagname, int defaultvalue)
-{
-  if (this->flagName)
-    delete this->flagName;
-  this->flagName = new char [strlen(flagname)+1];
-  strcpy(this->flagName, flagname);
-  this->defaultValue = defaultvalue;
-
-  //  cout << "Set Flagname of " << this->title << " to " << flagname << endl;
-}
-
-/** 
-    \brief see Option::setFlagName(char* flagname, int defaultvalue)
-    \param flagname the Name that will be displayed in the output
-    \param defaultvalue the default Value for this Option(see definition of defaultvalue
-    \param flagnameshort a short flagname to be displayed in the output
-*/
-void Option::setFlagName(char* flagname, char* flagnameshort,  int defaultvalue)
-{
-  if (this->flagName)
-    delete []this->flagName;
-  this->flagName = new char [strlen(flagname)+1];
-  strcpy(this->flagName, flagname);
-
-  if (this->flagNameShort)
-    delete []this->flagNameShort;
-  this->flagNameShort = new char [strlen(flagnameshort)+1];
-  strcpy(this->flagNameShort, flagnameshort);
-  this->defaultValue = defaultvalue;
-  //  cout << "Set Flagname of " << this->title << " to " << flagname << endl;
-}
-
-/**
-   \brief Sets the saveable-state of the option to true.
-*/
-void Option::saveability(void)
-{
-  this->saveable = true;
-}
-
-/**
-   \brief Sets the saveable-state of the option.
-   \param isSaveable the saveable-state to set.
-*/
-void Option::saveability(bool isSaveable)
-{
-  this->saveable = isSaveable;
-}
-
-/**
-   \brief saves an Option
-   \returns the String that should be saved.
-
-   this is a default Option save
-*/
-char* Option::save(void)
-{
-  char* value = new char [10];
-  sprintf (value, "%d", this->value);
-  return value;
-}
-
-/**
-   \brief loads an Option from of its loadString
-   \param loadString the string from which to load the data from
-*/
-void Option::load(char* loadString)
-{
-  this->value = atoi(loadString);
-  PRINT(5)("Loading %s: %s %d\n", this->title, loadString, value); 
-  this->redraw();
-}
-
-/**
-   \returns The saveable-state.
-*/
-bool Option::isSaveable(void)
-{
-  return this->saveable;
-}
-
-#ifdef HAVE_GTK2
-/** 
-    \brief Signal OptionChange writes the Value from the Slider to its Object-Database.
-    \param widget The widget(Slider) that has a changed Value
-    \param slider the Slider-Object that should receive the change.
-*/
-gint Option::OptionChange(GtkWidget *widget, Widget* option)
-{
-  static_cast<Option*>(option)->changeOption();
-  flags->setTextFromFlags(Window::mainWindow);  //// must be different !!!
-}
-#endif /* HAVE_GTK2 */
-
-
-/* BUTTON */
-
-/**
-   \brief Creates a new Button with a buttonname
-   \param buttonname sets the Name of the Button
-*/
-Button::Button(char* buttonname)
-{
-  this->init();
-  this->setTitle(buttonname);
-}
-
-/**
-   \brief destructs a Button.
-*/
-Button::~Button(void)
-{
-  PRINTF(5)("deleting the Label: %s\n", this->title);
-}
-
-/**
-   \brief Initializes a new Button
-*/
-void Button::init(void)
-{
-  isOption = 0;
-
-#ifdef HAVE_GTK2
-  widget = gtk_button_new_with_label("");
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief Sets a new name to the Button
-   \param title The name the Button should get
-*/
-void Button::setTitle(const char *title)
-{
-  if (this->title)
-    delete []this->title;
-  this->title = new char[strlen(title)+1];
-  strcpy(this->title, title);
-#ifdef HAVE_GTK2
-  gtk_button_set_label(GTK_BUTTON(widget), title);
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief redraws the Button
-   not implemented yet
-*/
-void Button::redraw(void)
-{
-}
-
-/**
-   \brief Button can not be changed, optionChange is empty)
-
-   \todo Actions for non-GTK-mode
-*/
-void Button::changeOption(void)
-{
-  // This will possibly be used for ACTIONS !
-}
-
-/* CHECKBUTTON */
-
-/**
-   \brief Creates a new CheckButton with an ame 
-   \param buttonname The name the CheckButton should display.
-*/
-CheckButton::CheckButton(char* buttonname)
-{
-  this->init();
-  this->setTitle(buttonname);
-
-#ifdef HAVE_GTK2
-  this->connectSignal("clicked", this->OptionChange);
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief destructs a CheckButton.
-*/
-CheckButton::~CheckButton(void)
-{
-  if (this->title)
-    PRINTF(5)("deleting the CheckButton: %s\n", this->title);
-  else 
-    PRINTF(5)("deleting the CheckButton.\n");
-}
-
-/**
-   \brief Initialize a new CheckButton with default settings
-*/
-void CheckButton::init(void)
-{
-  this->isOption = 1;
-
-#ifdef HAVE_GTK2
-  this->widget = gtk_check_button_new_with_label("");
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief Sets a new Title to a CheckButton
-   \param title The new Name the CheckButton should display.
-*/
-void CheckButton::setTitle(const char* title)
-{
-  if (this->title)
-    delete []this->title;
-  this->title = new char[strlen(title)+1];
-  strcpy(this->title, title);
-#ifdef HAVE_GTK2
-  gtk_button_set_label(GTK_BUTTON(widget), title);
-#endif /* HAVE_GTK2 */
-}
-
-bool CheckButton::isActive(void)
-{
-#ifdef HAVE_GTK2
-  return gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief Changed the Option, call this Function
-*/
-void CheckButton::changeOption(void)
-{
-#ifdef HAVE_GTK2
-  this->value =(int)gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(this->widget));
-#else /* HAVE_GTK2 */
-  char tmpChar[200];
-  PRINT(0)("\nPlease give me a new value for %s [0,1](default:%d): ",this->title, this->defaultValue);
-  scanf("%s", tmpChar);
-
-  if ((this->value = atoi(tmpChar))=!0)
-    this->value = 1;
-#endif /* HAVE_GTK2 */
-  PRINT(0)("%s set to: %d\n", this->title, this->value);
-}
-
-
-/**
-   \brief Redraws the CheckButton(if option has changed).
-   Example: if new settings are loaded the Button must be redrawn for the GUI to display that Change
-*/
-void CheckButton::redraw(void)
-{
-#ifdef HAVE_GTK2
-  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(this->widget), value);
-#endif /* HAVE_GTK2 */
-}
-
-/* SLIDER */
-
-/**
-   \brief Creates a new Slider
-   \param slidername The data-structure-name of the slider.
-   \param start The minimal Value of the slider.
-   \param end The maximal Value of the slider.
-*/
-Slider::Slider(char* slidername, int start, int end)
-{
-  this->init(start, end);
-  this->setValue(start);
-  this->setTitle(slidername);
-#ifdef HAVE_GTK2
-  this->connectSignal("value_changed", this->OptionChange);
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief destructs a Slider.
-*/
-Slider::~Slider(void)
-{
-  PRINTF(5)("deleting the Slider: %s\n", this->title);
-}
-
-/**
-   \brief Initializes a Slider with start and end Values
-   params: see Slider::Slider(char* slidername, int start, int end)
-*/
-void Slider::init(int start, int end)
-{
-  this->isOption = 2;
-
-  this->start = start;
-  this->end = end;
-#ifdef HAVE_GTK2
- widget = gtk_hscale_new_with_range(this->start, this->end, 5);
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief Setting a new value to the Slider.
-   Maybe you also require a Slider::redraw() for this to display
-*/
-void Slider::setValue(int value)
-{
-  this->value = value;
-}
-
-/**
-   \brief Redraws the widget
-   Example: see void CheckButton::redraw(void)
-*/
-void Slider::redraw(void)
-{
-#ifdef HAVE_GTK2
-  gtk_range_set_value(GTK_RANGE(this->widget), value);
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief Changed the Option, call this Function
-*/
-void Slider::changeOption(void)
-{
-#ifdef HAVE_GTK2
-  this->value =(int)gtk_range_get_value(GTK_RANGE(this->widget));
-#else /* HAVE_GTK2 */
-  char tmpChar[20];
-  PRINT(0)("\nPlease give me a new value for %s [%d-%d] (default:%d): ", this->title, this->start, this->end, this->defaultValue);
-  scanf("%s", tmpChar);
-
-  if ((this->value = atoi(tmpChar))> this->end)
-    this->value = this->end;
-  if (this->value <= this->start)
-    this->value = this->start;
-#endif /* HAVE_GTK2 */
-  PRINT(0)("%s set to: %d\n",this->title, this->value);
-}
-
-/* MENU */
-
-/**
-   \brief constructs a new Menu, without adding any items to it.
-   \param menuName the Name the Menu gets.
-*/
-Menu::Menu(const char* menuName)
-{
-  this->init();
-  this->setTitle(menuName);
-}
-
-/** 
-    \brief Creates a Menu-Item-list out of multiple input.
-    !! Consider, that the last input argument has to be "lastItem" for this to work!!
-    \param menuname The Database-Name of this Menu
-    \param ... items to be added to this Menu. !! Consider, that the last input argument has to be "lastItem" for this to work!!
-*/
-Menu::Menu(char* menuname, ...)
-{
-  this->init();
-  this->setTitle(menuname);
-  va_list itemlist;                     //!< The list to readin multiple Options.
-
-  char *itemName;
-
-  va_start(itemlist, menuname);
-  while(strcmp(itemName = va_arg(itemlist, char*), "lastItem"))
-    {
-      this->addItem(itemName);
-    }
-  va_end(itemlist);
-}
-
-/**
-   \brief destructs a Menu.
-*/
-Menu::~Menu(void)
-{
-  PRINTF(5)("deleting the Menu: %s\n", this->title);
-  this->currItem = this->firstItem;
-  while(this->currItem)
-    {
-      delete []this->currItem->name;
-      //! \todo destroy menu
-      /*
-	#ifdef HAVE_GTK2
-	free(this->currItem->item);
-	#endif /* HAVE_GTK2 */
-      MenuItem* tmpItem = this->currItem;
-      this->currItem = this->currItem->next;
-      delete tmpItem;
-    }
-}
-
-/**
-   \brief Initializes a new Menu with no items
-*/
-void Menu::init(void)
-{
-  this->isOption = 2;
-  this->firstItem = NULL;
-
-#ifdef HAVE_GTK2
-  this->widget = gtk_option_menu_new();
-  this->menu = gtk_menu_new();
-  gtk_option_menu_set_menu(GTK_OPTION_MENU(this->widget), menu);
-  this->connectSignal("changed", this->OptionChange);
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief saves the Label of the Menu
-   \returns the name of the selected Menu-Item
-*/
-char* Menu::save(void)
-{
-  MenuItem* tmpItem = this->firstItem;
-  for (int i = 0; i<this->value; i++)
-    tmpItem = tmpItem->next;
-      
-  return tmpItem->name;
-}
-
-/**
-   \brief loads a Menu from of its loadString
-   \param loadString the string from which to load the data from
-*/
-void Menu::load(char* loadString)
-{
-  MenuItem* tmpItem = firstItem;
-  bool foundItem = false;
-  while (tmpItem)
-    {
-      if (!strcmp(loadString, tmpItem->name))
-	{foundItem = true; break;}
-      tmpItem = tmpItem->next;
-    }
-  if (foundItem)
-    this->value = tmpItem->itemNumber;
-  else
-    {
-      this->value = 0;
-      PRINTF(2)("Sorry, but %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); 
-  this->redraw();
-}
-
-/**
-   \brief appends a new Item to the Menu-List.
-   \param itemName the itemName to be appendet.
-*/
-void Menu::addItem(char* itemName)
-{
-  if (!this->firstItem)
-    {
-      this->firstItem = this->currItem = new MenuItem;
-      this->currItem->itemNumber = 0;
-    }
-  else
-    {
-      int tmpI = this->currItem->itemNumber;
-      this->currItem = this->currItem->next = new MenuItem;
-      this->currItem->itemNumber = tmpI+1;
-    }
-
-  this->currItem->name = new char[strlen(itemName)+1];
-  strcpy(this->currItem->name, itemName);
-
-#ifdef HAVE_GTK2
-  this->currItem->item = gtk_menu_item_new_with_label(itemName);
-  gtk_menu_shell_append(GTK_MENU_SHELL(this->menu), this->currItem->item);
-#endif /* HAVE_GTK2 */
-  this->currItem->next = NULL;
-}
-
-/**
-   \brief Redraws the widget
-   Example: see void CheckButton::redraw(void)
-*/
-void Menu::redraw(void)
-{
-#ifdef HAVE_GTK2
-  gtk_option_menu_set_history(GTK_OPTION_MENU(this->widget), this->value);
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief Changed the Option, call this Function
-*/
-void Menu::changeOption(void)
-{
-#ifdef HAVE_GTK2
-  this->value =(int)gtk_option_menu_get_history(GTK_OPTION_MENU(this->widget));
-#else /* HAVE_GTK2 */
-  char tmpChar[20];
-  PRINT(0)("\nPlease give me a new value for %s (default: %d): ", this->title, this->defaultValue);
-  scanf("%s",tmpChar);
-  this->value = atoi(tmpChar);
-
-#endif /* HAVE_GTK2 */
-  PRINT(4)("%s set to: %d\n", this->title, this->value);
-}
-
-/* OPTION LABEL */
-
-/**
-   \brief Creates a new OptionLabel with a LabelName and a Value.
-   \param label The name of the OptionLabel.
-   \param value The Value of the OptionLabel(what will be displayed).
-*/
-OptionLabel::OptionLabel(char* label, char* value)
-{
-  this->init();
-  this->setTitle(label);
-  this->setValue(value);
-}
-
-/**
-   \brief destructs an OptionLabel.
-*/
-OptionLabel::~OptionLabel(void)
-{
-  PRINTF(5)("deleting the OptionLabel: %s\n", this->title);
-  if (this->cValue)
-    delete []this->cValue;
-}
-
-/**
-   \brief Initializes an OptionLabel
-*/
-void OptionLabel::init(void)
-{
-  this->isOption = 5;
-  cValue = NULL;
-
-#ifdef HAVE_GTK2
-  this->widget = gtk_label_new("");
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief Updates the value of an OptionLabel
-   \param newValue The new Name that should be displayed.
-*/
-void OptionLabel::setValue(char* newValue)
-{
-  if (this->cValue)
-    delete []this->cValue;
-  this->cValue = new char [strlen(newValue)+1];
-  strcpy(this->cValue, newValue);
-#ifdef HAVE_GTK2
-  gtk_label_set_text(GTK_LABEL(this->widget), this->cValue);
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief Redraws an OptionLabel(not implemented yet, but it works).
-*/
-void OptionLabel::redraw(void)
-{
-#ifdef HAVE_GTK2
-  gtk_label_set_text(GTK_LABEL(widget), title);
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief Changed the Option, call this Function
-*/
-void OptionLabel::changeOption(void)
-{
-#ifdef HAVE_GTK2
-  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);
-  char tmpChar[100];
-  scanf("%s",tmpChar);
-  this->setValue(tmpChar);
-#endif /* HAVE_GTK2 */
-  PRINT(4)("%s set to: %s\n", this->title,  this->cValue);
-}
-
-
-/**
-   \brief creates the Optionlabel save-string
-   \returns the String to save.
-*/
-char* OptionLabel::save(void)
-{
-  return cValue;
-}
-
-/**
-   \brief loads an Option from of its loadString
-   \param loadString the string from which to load the data from
-*/
-void OptionLabel::load(char* loadString)
-{
-  PRINTF(4)( "Loading %s: setting to %s\n", this->title, loadString); 
-  this->setValue(loadString);
-}
-
-/**
-   \brief Creates a new default Label with no Text.
-   You migth consider adding Label::setTitle with this.
-*/
-Label::Label(void)
-{
-  this->init();
-}
-
-/**
-   \brief Creates a new Label with a Text.
-   \param text The text to be displayed.
-*/
-Label:: Label(char* text)
-{
-  this->init();
-  this->setTitle(text);
-}
-
-/**
-   \brief destructs a Label.
-*/
-Label::~Label(void)
-{
-  PRINTF(5)("deleting the Label: %s\n", this->title);
-}
-
-/**
-   \brief initializes a new Label
-*/
-void Label::init(void)
-{
-  this->isOption = 0;
-
-#ifdef HAVE_GTK2
-  this->widget = gtk_label_new("");
-  gtk_label_set_line_wrap(GTK_LABEL(this->widget), TRUE);
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief Sets a new Text to a Label.
-   \param text The text to be inserted into the Label.
-*/
-void Label::setTitle(char* text)
-{
-  if (this->title)
-    delete []this->title;
-  this->title = new char[strlen(text)+1];
-  strcpy(this->title, text);
-#ifdef HAVE_GTK2
-  gtk_label_set_text(GTK_LABEL(this->widget), this->title);
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief ereases the Text of a Label
-*/
-void Label::ereaseText(void)
-{
-  this->setTitle("");
-}
-
-/** 
-    \brief appends some Text to a Label
-    \param textToAppend The text that will be appended to this Label
-*/
-void Label::appendText(char* textToAppend)
-{
-  if (this->title)
-    {
-      char* tmpTitle = new char[strlen(this->title)+strlen(textToAppend)+1];
-      strcpy(tmpTitle, title);  
-      strcat(tmpTitle, textToAppend);
-      delete []this->title;
-      this->title = tmpTitle;
-    }
-  else
-    this->title = new char[strlen(textToAppend)];
-  
-#ifdef HAVE_GTK2
-  gtk_label_set_text(GTK_LABEL(this->widget), title);
-#endif /* HAVE_GTK2 */
-}
-
-/** 
-    \brief Appends some integer to the Label
-    \param intToAppend The Int that will be added.
-    
-    it does this by just converting the int into a char* and send it to appendText
-*/
-void Label::appendInt(int intToAppend)
-{
-  char append [32];
-  sprintf(append, "%d", intToAppend);
-  this->appendText(append);
-}
-
-
-/**
-   \brief get the Text of a Label
-   \return The Text the Label holds.
-*/
-char* Label::getText(void)
-{
-  return this->title;
-}
-
-/**
-   \brief Creates a new ProgressBar.
-*/
-ProgressBar::ProgressBar(void)
-{
-  this->init();
-}
-
-/**
-   \brief Creates a new ProgressBar.
-   \param label The name you want to get the ProgressBar.
-*/
-ProgressBar::ProgressBar(char* label)
-{
-  this->init();
-  this->setTitle(label);
-}
-
-/**
-   \brief destructs a ProgressBar
-*/
-ProgressBar::~ProgressBar(void)
-{
-  PRINTF(5)("deleting the ProgressBar: %s\n", this->title);
-}
-
-/**
-   \brief Initializes a ProgressBar
-*/
-void ProgressBar::init(void)
-{
-  this->isOption = 0;
-  this->progress = 0.0;
-  this->totalSize = 0.0;
-
-#ifdef HAVE_GTK2
-  this->adjustment =(GtkAdjustment*)gtk_adjustment_new(0, 0, 100, 0, 0, 0);
-  this->widget = gtk_progress_bar_new_with_adjustment(this->adjustment);
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief Sets the Total size of the Bar.(ex. The maximum one can download)
-*/
-void ProgressBar::setTotalSize(double totalSize)
-{
-  this->totalSize = totalSize;
-}
-
-/**
-   \brief Sets the progress maximum is this->totalSize
-*/
-void ProgressBar::setProgress(double progress)
-{
-  this->progress = progress;
-
-  if (this->progress > this->totalSize)
-    this->progress = this->totalSize;
-
-#ifdef HAVE_GTK2
-  gtk_progress_set_value(GTK_PROGRESS(widget), this->progress*100.0/this->totalSize);
-#endif /* HAVE_GTK2 */
-  PRINTF(3)("Progress: %f\n", this->progress*100.0/this->totalSize);
-}
-
-/**
-    \brief returns the Progress Status
-*/
-double ProgressBar::getProgress(void)
-{
-  return this->progress;
-}
-
-/* IMAGE */
-
-/**
-   \brief Creates a new Image
-   \param imageName the location of the Image on the Hard Disc
-*/
-Image::Image(const char* imageName)
-{
-  this->init(imageName);
-
-#ifdef HAVE_GTK2
-  widget = gtk_image_new_from_file(imageName);
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief Creates a new Image
-   \param imageData data to the PixBuff
-*/
-Image::Image(char** imageData)
-{
-  this->init("pixBuffImage");
-
-#ifdef HAVE_GTK2
-  widget = gtk_image_new_from_pixbuf(gdk_pixbuf_new_from_xpm_data((const char**)imageData));
-#endif /* HAVE_GTK2 */
-}
-
-
-/**
-   \brief destructs an Image.
-*/
-Image::~Image(void)
-{
-  PRINTF(5)("deleting the Image: %s\n", this->title);
-}
-
-/** 
-    \brief Initializes a new Image
-    \param name the name to set to the Image
-*/
-void Image::init(const char* name)
-{
-  isOption = 0;
-
-  if (this->title)
-    delete []this->title;
-  this->title = new char[strlen(name)+1];
-  strcpy(this->title, name);
-
-}
Index: orxonox/trunk/src/lib/gui/gui/orxonox_gui_gtk.h
===================================================================
--- orxonox/trunk/src/lib/gui/gui/orxonox_gui_gtk.h	(revision 4053)
+++ 	(revision )
@@ -1,397 +1,0 @@
-/*!
- \file orxonox_gui_gtk.h
- \brief Contains all th different Widgets.
-*/
-#ifndef _ORXONOX_GUI_GTK_H
-#define _ORXONOX_GUI_GTK_H
-
-#if HAVE_CONFIG_H 
-#include <config.h> 
-#endif
-
-#include "debug.h"
-
-#ifdef HAVE_GTK2
-#include <gtk/gtkmain.h>
-#include <gtk/gtkwindow.h>
-#include <gtk/gtkframe.h>
-#include <gtk/gtkhbox.h>
-#include <gtk/gtkvbox.h>
-#include <gtk/gtkbutton.h>
-#include <gtk/gtkcheckbutton.h>
-#include <gtk/gtkhscale.h>
-#include <gtk/gtkoptionmenu.h>
-#include <gtk/gtkmenu.h>
-#include <gtk/gtkmenuitem.h>
-#include <gtk/gtklabel.h>
-#include <gtk/gtkimage.h>
-#include <gtk/gtkeventbox.h>
-#include <gtk/gtkprogressbar.h>
-#endif /* HAVE_GTK2 */
-
-extern char* guiExecutable;
-extern char* progExecutable;
-
-bool initGUI(int argc, char* argv[]);
-bool mainloopGUI(void);
-
-//! This is the topmost object that can be displayed all others are derived from it.
-class Widget
-{
- private:
-
- public:
-  Widget(void);
-  virtual ~Widget(void);
-
-  void show(void);
-  void hide(void);
-  void setSize(int width, int height);
-  virtual void setTitle(const char* title);  //!< 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);
-  static void listOptionsAndGroups(Widget* widget);
-  static void listOptions(Widget* widget);
-  static void listOptions(Widget* widget, void* data);
-  Widget* findOptionByNumber(int* number, unsigned int depth);
-  static void listGroups(Widget* widget);
-  static void listGroups(Widget* widget, void* data);
-  Widget* findGroupByNumber(int* number, unsigned int depth);
-  static void setOptions(Widget* widget);
-  static void flagCheck(Widget* widget, void* flagName);
-  
-#ifdef HAVE_GTK2
-  // Connection - Functions
-
-  gulong connectSignal(char* event, gint(*signal)(GtkWidget*, GdkEvent*, void* ));
-  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);
-
-  // Signals
-  static gint doNothingSignal(GtkWidget* widget, GdkEvent* event, void* nothing);
-#endif /* HAVE_GTK2 */
-
-  Widget* next;                     //!< next always points to the next Widget in the list. Every Widget has a next one, or has NULL as next
-#ifdef HAVE_GTK2
-  GtkWidget* widget;                //!< widget is the gtk_widget that the specific Object Contains.
-#endif /* HAVE_GTK2 */
-  int isOption;                     //!< with this Paramenter one can set the option-type: -2:Container, -1: Box, 0: not an Option, 1: Bool-option, 2: int-option, 3: float option, 4:char option, 5: char* option
-
-  //! defines isOption states
-  enum option { containerType = -2, boxType = -1, nothingType = 0, boolType = 1, intType = 2}; 
-  char* title;                      //!< The name of the Widget. Some do display it, Options need it to save;
-};
-
-//! This is a Packer Object, which has the ability to Pack other Widgets into itself.
-class Packer : public Widget
-{
- public:
-  Packer(void);
-  virtual ~Packer(void);
-
-  Widget* down; //!< this points to the Widget below this.
-  char* groupName; //!< For each Packer you can specify a Groupname under which the lowerWidgets will be saved.
-
-  void setGroupName(char* name);
-  char* getGroupName(void);
-
-  virtual void fill(Widget* lowerWidget) = 0; //!< An abstract function, that fills Packers.
-};
-
-//! This is a Container Class, it can contain one sub-Widget: down.
-/**
- * A Container is a Widget that can hold a subWidget in addition to a next-Widget.
- * The Container can by itself not be displayed created or used.
- * The derived classes of Container can be displayed
-*/
-class Container : public Packer
-{
- private:
-  int borderwidth;          //!< The width of The Container Boarder.
-  int policy;               //!< The Update Policy of a Container.
-  
- public:
-  Container(void);
-  virtual ~Container(void);
-  //  void setBorderWidth(int borderwidth);
-  void fill(Widget* lowerWidget);
-};
-
-//! Window is the class that creates new Windows, and handels them
-/**
- * A Window is a class derived from Container that contains a window-widget.
- * It has the ability to hold one sub-object
- */
-class Window : public Container
-{
- private:
-  bool isOpen;                      //!< A bool Variable that checks if a Window is already open.
- public:
-  static Window* mainWindow;        //!< Pointer to the First Window that was opened. By default this should be the GUI's main-Window.
-  static void addWindow(Window* windowToAdd);
-
-  Window(void);
-  Window(char* windowName);
-  virtual ~Window(void);
-  void init(void);
-  
-  void setTitle(const char* title);
-  void showall(void);
-  void open(void);
-  void close(void);
-
-#ifdef HAVE_GTK2
-  // Signals
-  static gint windowOpen(GtkWidget* widget, GdkEvent* event, void* window);
-  static gint windowClose(GtkWidget* widget, GdkEvent* event, void* window);
-#endif /* HAVE_GTK2 */
-};
-
-//! Frame is the class that handles frames
-/**
- * A Frame is an object, that has a border and if you like a name on it.
- * It can contain a Widget, which means that you can insert anything you like inside of a frame
- */
-class Frame :public Container
-{
- public:
-  Frame(void);
-  Frame(char* frameName);
-  virtual ~Frame(void);
-  void init(void);
-
-  void setTitle(const char* title);
-};
-
-//! EventBox is a Container that can Handle all Events happening inside of it.
-/**
- * Example: if you have a picture, and you want it to catch mouse-clicks, you have to pack it inside a EventBox
- */
-class EventBox : public Container
-{
- public:
-  EventBox(void);
-  EventBox(char* eventBoxName);
-  virtual ~EventBox(void);
-  void init(void);
-};
-
-//! A Box can contain multiple Widgets
-/**
-   A Box can Contain multiple Widgets, that are ordered either horizontally or vertically
-   I defined the standartbox to be horizontally.
-   A Box is always filled left->right(horizontally) or up->down(vertically)
-*/
-class Box : public Packer
-{
- public:
-  Box(void);
-  Box(char boxtype);
-  virtual ~Box(void);
-  void init(char boxtype);
-  
-  void fill(Widget* lowerWidget);
-};
-
-//! An Option is a Widget that contains something that may change its state.
-/**
- * Options are the essence of a GUI, they: Configure, Start, Quit, Execute, and make it worth something
- */
-class Option : public Widget
-{
- protected:
-  bool saveable;  //!< Options can be Saved.
-  
- public:
-  Option(void);
-  virtual ~Option(void);
-  void init(void);
-
-  int value; //!< every option has a value either true or false(0,1) or something else like 25 for 25% of the volume
-  char* flagName; //!< options have a flag name that will be appendet if you start the Program from the GUI.
-  char* flagNameShort; //!< like flag_name but shorter
-  int defaultValue; //!< A default value is good, for hiding a option if it is not needed.(hidden if value == default_value)
-
-  void saveability(void);
-  void saveability(bool isSaveable);
-  virtual char* save(void);
-  virtual void load(char* loadString);
-
-  bool isSaveable(void);
-  void setFlagName(char* flagname, int defaultvalue);
-  void setFlagName(char* flagname, char* flagnameshort, int defaultvalue);
-  virtual void redraw(void) = 0; //!< A Option must be able to redraw itself.
-  virtual void changeOption(void) = 0; //!< What to do, if an Option is Changed. eacht option decides for itself.
-#ifdef HAVE_GTK2
-    // Signals  
-  static gint OptionChange(GtkWidget* widget, Widget* option); //!< Signal for Options that change.
-#endif /* HAVE_GTK2 */
-};
-
-//! Buttons can be pressed, and released.
-/**
- * Buttons are mainly there for executing some action like Starting the Programm, or Quiting it.
- */
-class Button : public Option 
-{
- public:
-  Button(char* buttonname);
-  virtual ~Button(void);
-  void init(void);
-
-  void setTitle(const char* title);
-  void redraw(void);
-  void changeOption(void);
-};
-
-//! CheckButtons are a key in configuring bool Variables
-/** CheckButtons can configure bool Variables like wireframe on/off, enable_sound etc.
- */
-class CheckButton : public Option
-{
- public:
-  CheckButton(char* buttonname);
-  virtual ~CheckButton(void);
-  void init(void);
-
-  void setTitle(const char* title);
-  bool isActive(void);           //!< a Bool value to see, if this CheckButton is active.
-  void redraw(void);
-  void changeOption(void);
-};
-
-//! Sliders are Options that can be modified in their value
-/**
- * good for volume, brightness, etc.
- */
-class Slider : public Option
-{
- private:
-  int start;                            //!< The beginning of the Slider-range.
-  int end;                              //!< The end of the Slider-range.
- public:
-  Slider(char* slidername, int start, int end);
-  virtual ~Slider(void);
-  void init(int start, int end);
-
-  void setValue(int value);
-  void redraw(void);
-  void changeOption(void);
-};
-
-//! A Menu is an Option that has a dropdown menu, where you can chose between different Items
-class Menu : public Option
-{
- private:
-#ifdef HAVE_GTK2
-  GtkWidget* menu;                      //!< The menu That will hold the Options.
-#endif /* HAVE_GTK2 */
-
-  //! A struct to handle the MenuItems
-  struct MenuItem
-  {
-    char* name;                         //!< The name of this entry.
-    int itemNumber;                     //!< The n'th entry of this menu;
-#ifdef HAVE_GTK2
-    GtkWidget* item;                    //!< One Item From a Menu.
-#endif /* HAVE_GTK2 */
-    MenuItem* next;                     //!< Pointer to the next MenuItem.
-  };
-  MenuItem* firstItem;                  //!< Pointer to the first Item.
-  MenuItem* currItem;                   //!< Pointer to the current Item.
-  
- public:
-  Menu(const char* menuName);
-  Menu(char* menuname, ...);
-  virtual ~Menu(void);
-  void init(void);
-
-  virtual char* save(void);
-  virtual void load(char* loadString);
-  
-  void addItem(char* itemName);
-  void redraw(void);
-  void changeOption(void);
-};
-
-//! A OptionLabel is a simple Label, that holds a char*, and will be updated, if changed.
-class OptionLabel : public Option
-{
- private:
-
- public:
-  OptionLabel(char* label, char* value);
-  virtual ~OptionLabel(void);
-  void init(void);
-  
-  void setValue(char* newValue);
-
-  virtual char* save(void);
-  virtual void load(char* loadString);
-
-  void redraw(void);
-  void changeOption(void);
-
-  char* cValue;                          //!< The Value the Label will have. \todo make private
-
-};
-
-//! A label is a Widget, that displays a text
-class Label : public Widget
-{
- public:
-  Label(void);
-  Label(char* text);
-  virtual ~Label(void);
-  void init(void);
-  
-  void setTitle(char* text);
-  void ereaseText(void);
-  void appendText(char* textToAppend);
-  void appendInt(int intToAppend);
-  char* getText(void);
-};
-
-//! A ProgressBar is a Widget, that can display a Progress
-class ProgressBar : public Widget
-{
- public:
-  ProgressBar(void);
-  ProgressBar(char* label);
-  virtual ~ProgressBar(void);
-  void init(void);
-
-  void setProgress(double progress);
-  void setTotalSize(double totalSize);
-  double getProgress(void);
-
- private:
-  double totalSize;         //!< The total Size of a download Bar
-  double progress;          //!< The progress of a Bar.
-#ifdef HAVE_GTK2
-  GtkAdjustment* adjustment;
-#endif /* HAVE_GTK2 */
-};
-
-//! Image is the keeper of one Image 
-/** 
- * Images are mighty cool.
- * Images can help you lighten up the Programming process, and will give everyone a better impression of the Software.
- */
-class Image : public Widget
-{
- public:
-  Image(const char* imgaeName);
-  Image(char** imageData);
-  virtual ~Image(void);
-  void init(const char* name);
-};
-
-//gint orxonox_gui_quit(GtkWidget* widget, GdkEvent* event, gpointer data);
-
-#endif /* _ORXONOX_GUI_GTK_H */
Index: orxonox/trunk/src/lib/gui/gui/orxonox_gui_keys.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/orxonox_gui_keys.cc	(revision 4053)
+++ 	(revision )
@@ -1,270 +1,0 @@
-/* 
-   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.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-
-
-   ### File Specific:
-   main-programmer: Benjamin Grauer
-
-*/
-
-#include "orxonox_gui_keys.h"
-
-#include <string.h>
-
-/**
-   \brief Creates an Keyboard-Frame
-*/
-OrxonoxGuiKeys::OrxonoxGuiKeys(void)
-{
-  this->keysFrame = new Frame("Keyboard-Options:");
-  //  keysFrame->setGroupName("Keyboard");
-  this->keysBox = new Box('h');
-  this->player1 = new Player("player1");
-  this->player2 = new Player("player2");
-
-  this->keysBox->fill(this->player1->getOpenButton());
-  this->keysBox->fill(this->player2->getOpenButton());
-
-  this->keysFrame->fill(this->keysBox);
-  this->setMainWidget(keysFrame);
-}
-
-/**
-   \brief Destructs the Keys-stuff
-*/
-OrxonoxGuiKeys::~OrxonoxGuiKeys(void)
-{
-  // nothing to do here.
-}
-
-/* PLAYER */
-
-/**
-   \brief Creates new inputs for a player
-   \param player the name of the Player
-*/
-Player::Player(char* player)
-{
-  char* windowName = new char[strlen(player)+25];
-  strcpy(windowName, "Keyboard settings of ");
-  strcat(windowName, player);
-  this->pKeyWindow = new Window(windowName);
-  this->pKeyFrame = new Frame(windowName);
-   this->pKeysBox = new Box('v');
-   this->pKeysBox->setGroupName(player);
-    this->pKeysBox->fill(addKey(UP, "up"));
-    this->pKeysBox->fill(addKey(DOWN, "down"));
-    this->pKeysBox->fill(addKey(LEFT, "left"));
-    this->pKeysBox->fill(addKey(RIGHT, "right"));
-    this->pKeysBox->fill(addKey(SHOOT, "shoot"));
-    delete windowName;
-    closeButton = new Button("close");
-#ifdef HAVE_GTK2
-    this->closeButton->connectSignal("button_press_event", this->pKeyWindow, Window::windowClose);
-#endif /* HAVE_GTK2 */
-
-    this->pKeysBox->fill(this->closeButton);
-    this->pKeyFrame->fill(this->pKeysBox);
-   this->pKeyWindow->fill(this->pKeyFrame);
-   Window::addWindow(this->pKeyWindow);
-#ifdef HAVE_GTK2
-   this->pKeyWindow->connectSignal("destroy", this->pKeyWindow, Window::windowClose);
-   this->pKeyWindow->connectSignal("delete_event", this->pKeyWindow, Window::windowClose);
-#endif /* HAVE_GTK2 */
-
-  this->openButton = new Button(player);
-#ifdef HAVE_GTK2
-  this->openButton->connectSignal("button_press_event", this->pKeyWindow, Window::windowOpen);
-#endif /* HAVE_GTK2 */
-
-  this->inputWindow = new Window("inputWindow");
-
-  this->inputButton = new Button("test");
-  this->inputWindow->fill(inputButton);
-#ifdef HAVE_GTK2
-  this->inputWindow->connectSignal("destroy",  Widget::doNothingSignal);
-  this->inputWindow->connectSignal("delete_event", Widget::doNothingSignal);
-#endif /* HAVE_GTK2 */
-
-}
-
-/**
-   \brief adds a new Key.
-   \param key the number of the Key
-   \param name The name of the new Key.
-   \returns A widget that has the Key-Box
-*/
-Widget* Player::addKey(KEYS key, char* name)
-{
-  this->inputKey[key] = new InputKey;
-  this->inputKey[key]->pKeyBox = new Box();
-  this->inputKey[key]->pKeyButton = new Button(name);
-  this->inputKey[key]->pKeyOLabel = new OptionLabel(name, name);
-  this->inputKey[key]->pKeyOLabel->saveability();
-
-#ifdef HAVE_GTK2
-  //inputKey[key]->pKeyButton->connectSignal("key_press_event", inputKey[key]->pKeyButton, key_cb);
-  this->inputKey[key]->pKeyButton->connectSignal("button_press_event", this->inputKey[key], inputWindowEvent);
-#endif /* HAVE_GTK2 */
-  this->inputKey[key]->pKeyBox->fill(this->inputKey[key]->pKeyButton);
-  this->inputKey[key]->pKeyBox->fill(this->inputKey[key]->pKeyOLabel);
-  return this->inputKey[key]->pKeyBox;
-}
-
-/**
-   \returns the OpenButton of a Player
-*/
-Button* Player::getOpenButton(void)
-{
-  return this->openButton;
-}
-
-/**
-   \brief sets a new Key(only output)
-   \param key the new Key.
-*/
-void Player::setkey(KEYS key)
-{
-  PRINT(4)("setting up Key: %d\n", key);
-}
-
-Window* Player::inputWindow = NULL;
-Button* Player::inputButton = NULL;
-long Player::keySignal = 0;
-
-#ifdef HAVE_GTK2
-gint Player::inputWindowEvent(GtkWidget* w, GdkEventKey* event, void* inputKey)
-{
-  inputButton->setTitle("press a Key");
-  keySignal = inputButton->connectSignal("key_press_event", inputKey, key_cb);
-  inputWindow->open();
-}
-  
-/**
-   \brief Function which gets keystrokes
-   \param w the widget that released the Function.
-   \param event The event that happened.
-   \param Widget the Widget which will be applied.
-   \returns Nothing
-*/
-gint Player::key_cb(GtkWidget* w, GdkEventKey* event, void* inputKey)
-{
-  InputKey* inputkey =(InputKey*) inputKey;
-  char title [20];
-
-  switch(event->keyval) 
-    {
-    case GDK_Up:
-      strcpy(title, "up");
-      break;
-    case GDK_Down:
-      strcpy(title, "down");
-      break;
-    case GDK_Left:
-      strcpy(title, "left");
-      break;
-    case GDK_Right:
-      strcpy(title, "right");
-      break;
-      
-    case GDK_space:
-      strcpy(title, "space");
-      break;
-      
-    case 65293:
-      strcpy(title, "enter");
-      break;
-      
-      // Special Keys //
-    case GDK_Escape:
-      strcpy(title, "esc");
-      break;
-    case GDK_Tab:
-      strcpy(title, "tab");
-      break;
-    case GDK_Shift_L:
-      strcpy(title, "l_shift");
-      break;
-    case GDK_Shift_R:
-      strcpy(title, "r_shift");
-      break;
-    case GDK_Control_L:
-      strcpy(title, "l_ctrl");
-      break;
-    case GDK_Control_R:
-      strcpy(title, "r_ctrl");
-      break;
-    case GDK_Alt_L:
-      strcpy(title, "l_alt");
-      break;
-    case GDK_Alt_R:
-      strcpy(title, "r_alt");
-      break;
-      // FXX KEYS //
-    case GDK_F1:
-      strcpy(title, "f1");
-      break;
-    case GDK_F2:
-      strcpy(title, "f2");
-      break;
-    case GDK_F3:
-      strcpy(title, "f3");
-      break;
-    case GDK_F4:
-      strcpy(title, "f4");
-      break;
-    case GDK_F5:
-      strcpy(title, "f5");
-      break;
-    case GDK_F6:
-      strcpy(title, "f6");
-      break;
-    case GDK_F7:
-      strcpy(title, "f7");
-      break;
-    case GDK_F8:
-      strcpy(title, "f8");
-      break;
-    case GDK_F9:
-      strcpy(title, "f9");
-      break;
-    case GDK_F10:
-      strcpy(title, "f10");
-      break;
-    case GDK_F11:
-      strcpy(title, "f11");
-      break;
-    case GDK_F12:
-      strcpy(title, "f12");
-      break;
-      
-      
-    default:
-      char* tmp;
-      sprintf(tmp, "%c", event->keyval);
-      printf("other key %s \n", tmp);
-      strcpy(title, tmp);
-      break;
-    }
-
-  inputkey->pKeyOLabel->setValue(title);
-  inputButton->disconnectSignal(keySignal);
-  inputWindow->close();
-}
-#endif /* HAVE_GTK2 */
Index: orxonox/trunk/src/lib/gui/gui/orxonox_gui_keys.h
===================================================================
--- orxonox/trunk/src/lib/gui/gui/orxonox_gui_keys.h	(revision 4053)
+++ 	(revision )
@@ -1,80 +1,0 @@
-/*!
-  \file orxonox_gui_keys.h
-  \brief File that holds the class that creates the Keyboard-Options.
-*/
-
-#ifndef _ORXONOX_GUI_KEYS_H
-#define _ORXONOX_GUI_KEYS_H
-
-#include "orxonox_gui.h"
-#include "orxonox_gui_element.h"
-
-#ifdef HAVE_GTK2
-#include <gdk/gdkkeysyms.h>
-#endif /* HAVE_GTK2 */
-
-/**
-   \brief defines the Possible Player Keys
-*/
-enum KEYS {UP, DOWN, LEFT, RIGHT, SHOOT};
-
-class Player;
-//! Class that creates the Keys-Options.
-class OrxonoxGuiKeys : public OrxonoxGuiElement
-{
- private:
-  Frame* keysFrame;      //!< The Frame that holds the keyOptions.
-  Box* keysBox;          //!< The Frame that holds the keyOptions.
-  Player* player1;       //!< The first Player's keys.
-  Player* player2;       //!< The seconds Player's keys.
-  Button* misc;          //!< Other keyboeard options come here. \todo include some like pause, quit and so on.
-
- public:
-  OrxonoxGuiKeys(void);
-  ~OrxonoxGuiKeys(void);
-};
-
-//! Class to hold infos about a Player
-/**
-   \todo split into subclass and superclass ButtonConfigurator
-*/
-class Player
-{
- private:
-  Window* pKeyWindow;     //!< The Window for a new Key-setting.
-  Frame* pKeyFrame;       //!< The Frame for a new Key-setting.
-  Button* openButton;     //!< The OpenButton for this key-settings.
-  Button* closeButton;    //!< The CloseButton for this key-settings.
-  Box* pKeysBox;          //!< The Box that holds the Key-settings.
-  
-  //! One KeyOption has one InputKey
-  struct InputKey
-  {
-    Box* pKeyBox;           //!< One Box that holds the Keys
-    Button* pKeyButton;     //!< The Button for changing the Key.
-    OptionLabel* pKeyOLabel;//!< The Label for displaying the Key-setting.
-  };
-
-  InputKey* inputKey[10];     //!< Buttons-array. \todo make it dynamic.
-
-  static Window* inputWindow; //!< A Window that gets keyboard clicks. Static, because only one needed.
-  static Button* inputButton; //!< A Button that gets keyboard clicks. Static, because only one needed.
-  static long keySignal;      //!< A keySignal that handles keyboard clicks. Static, because only one needed.
- public:
-  Player(char* player);
-
-  Widget* addKey(KEYS key, char* name);
-
-  Button* getOpenButton(void);
-
-#ifdef HAVE_GTK2
-  static gint inputWindowEvent(GtkWidget* w, GdkEventKey* event, void* widget);
-  static gint key_cb(GtkWidget* w, GdkEventKey* event, void* inputKey);
-#endif /* HAVE_GTK2 */
-  void setkey(KEYS key);
-  
-};
-
-
-
-#endif /* _ORXONOX_GUI_KEYS_H */
Index: orxonox/trunk/src/lib/gui/gui/orxonox_gui_main.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/orxonox_gui_main.cc	(revision 4053)
+++ 	(revision )
@@ -1,32 +1,0 @@
-/* 
-   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.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-
-
-   ### File Specific:
-   main-programmer: Benjamin Grauer
-
-*/
-
-#include "orxonox_gui.h"
-
-int main(int argc, char *argv[])
-{
-  OrxonoxGui* orxonoxgui = new OrxonoxGui(argc, argv);
-  return 0;
-}
Index: orxonox/trunk/src/lib/gui/gui/orxonox_gui_update.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/orxonox_gui_update.cc	(revision 4053)
+++ 	(revision )
@@ -1,494 +1,0 @@
-/* 
-   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.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-
-
-   ### File Specific:
-   main-programmer: Benjamin Grauer
-
-*/
-
-#include "orxonox_gui_update.h"
-#include <string.h>
-
-#include "orxonox_gui.h"
-#include <stdio.h>
-#include <stdlib.h>
-
-using namespace std;
-
-/**
-   \brief Creates an Update-Frame
-*/
-OrxonoxGuiUpdate::OrxonoxGuiUpdate(void)
-{
-  this->getSystemInfo();
-
-  this->updateFrame = new Frame("Update-Options:");
-  this->updateFrame->setGroupName("update");
-  this->updateBox = new Box('v');
-#ifdef HAVE_CURL
-
-  // the Button for autoUpdating
-  this->autoUpdate = new CheckButton("auto update");
-  this->updateBox->fill(this->autoUpdate);
-  this->autoUpdate->setFlagName("update", "u", 0);
-  this->autoUpdate->saveability();
-
-  this->updateSourceWindowCreate();
-  this->updateBox->fill(this->updateSourceWindowGetButton());
-
-  this->updateDataWindowCreate();
-  this->updateBox->fill(this->updateDataWindowGetButton());
-
-#else /* HAVE_CURL */
-  Label* noCurlLabel = new Label("since you do not have cURL,\nthis option is not availible");
-  this->updateBox->fill(noCurlLabel);  
-#endif /* HAVE_CURL */
-  this->updateFrame->fill(this->updateBox);
-  this->setMainWidget(this->updateFrame);
-}
-
-/**
-   \brief Destructs the Update-stuff
-*/
-OrxonoxGuiUpdate::~OrxonoxGuiUpdate(void)
-{
-  if(this->tmpDir)
-    delete []this->tmpDir;
-  if(this->homeDir)
-    delete []homeDir;
-  if(this->installDataDir)
-    delete []this->installDataDir;
-  if(this->installSourceDir)
-    delete []this->installSourceDir;
-  if(this->userName)
-    delete []this->userName;
-
-
-}
-
-/** 
-    \brief Look what info we can get from this system
-*/
-bool OrxonoxGuiUpdate::getSystemInfo(void)
-{
-  PRINTF(3)("Grabbing system information\n");
-  this->tmpDir = getenv("TMPDIR");
-  if(!tmpDir)
-    this->tmpDir = "/tmp";
-  PRINTF(4)("Temporary directory is: %s\n", this->tmpDir);
-
-#ifdef __WIN32__
-  this->homeDir = getenv("USERPROFILE");
-#else
-  this->homeDir = getenv("HOME");
-#endif
-  PRINTF(4)("Home directory is %s\n", homeDir);
-
-  this->installDataDir = "/usr/share/games/orxonox";
-  PRINTF(4)("Installation of orxonox-data will go to this directory: %s\n", this->installDataDir);
-
-  this->installSourceDir = "/usr/games/bin";
-  PRINTF(4)("Installation of orxonox-source will go to this directory: %s\n", this->installSourceDir);
-
-  this->userName = getenv("USER");
-  PRINTF(4)("Logged in username is: %s\n", this->userName);
-}
-
-#ifdef HAVE_CURL
-bool* OrxonoxGuiUpdate::checkForUpdates(void)
-{
-  PRINTF(3)("checking for new version of orxonox\n");
-  FileInfo updateFileInfo;
-  updateFileInfo.fileName = "update_info";
-  updateFileInfo.webRoot = "http://www.orxonox.ethz.ch/files/data";
-  updateFileInfo.localRoot = this->tmpDir;
-  
-  download(&updateFileInfo);
-}
-#endif /* HAVE_CURL */
-#ifdef HAVE_CURL
-/**
-   \brief Creates a window, and all it contains for the Data-update.
-*/
-void OrxonoxGuiUpdate::updateDataWindowCreate(void)
-{
-  this->updateDataWindow = new Window("update orxonox::Data");   
-  this->updateDataBox = new Box('v');
-
-  // the close-Button of the Update Window.
-  //  updateWindowClose = new Button("close");
-#ifdef HAVE_GTK2 
-  //  updateWindowClose->connectSignal("button_press_event", updateWindow, Window::windowClose);
-#endif /* HAVE_GTK2 */
-  //  updateWindowBox->fill(updateWindowClose);
-
-  this->updateDataBar = new ProgressBar();
-  this->updateDataBox->fill(this->updateDataBar);
-
-  FileInfo* dataInfo = new FileInfo;
-  dataInfo->bar = this->updateDataBar;
-
-  this->updateDataBegin = new Button("begin.");
-  dataInfo->stateButton = this->updateDataBegin;
-#ifdef HAVE_GTK2 
-  dataInfo->buttonSignal = updateDataBegin->connectSignal("button_press_event", dataInfo, updateDataFunc);
-#endif /* HAVE_GTK2 */
-  this->updateDataBox->fill(this->updateDataBegin);
-
-  this->updateDataWindow->fill(this->updateDataBox);
-
-  this->updateDataWindowButton = new Button("update orxonox::Data");
-#ifdef HAVE_GTK2 
-  this->updateDataWindowButton->connectSignal("button_press_event", this->updateDataWindow, Window::windowOpen);
-  this->updateDataWindow->connectSignal("destroy", this->updateDataWindow, Window::windowClose);
-  this->updateDataWindow->connectSignal("delete_event", this->updateDataWindow, Window::windowClose);
-#endif /* HAVE_GTK2 */
-
-}
-
-/**
-   \returns A Pointer to the Button of the UpdaterDataWindow
-*/
-Button* OrxonoxGuiUpdate::updateDataWindowGetButton(void)
-{
-  return this->updateDataWindowButton;
-}
-
-/**
-   \brief Creates a window, and all it contains for the Source-update.
-*/
-void OrxonoxGuiUpdate::updateSourceWindowCreate(void)
-{
-  // the button, that opens this Window.
-  this->updateSourceWindowButton = new Button("update orxonox::Source");
-
-  // the Window itself
-  this->updateSourceWindow = new Window("update orxonox::Source");
-
-  this->updateSourceBox = new Box();
-
-  this->updateSourceBar = new ProgressBar();
-  this->updateSourceBox->fill(this->updateSourceBar);
-  test = new Button("increment");
-
-#ifdef HAVE_GTK2 
-  test->connectSignal("button_press_event", updateSourceBar, updateSourceFunc);
-#endif /* HAVE_GTK2 */
-
-  this->updateSourceBox->fill(test);
-  this->updateSourceWindow->fill(updateSourceBox); 
-#ifdef HAVE_GTK2 
-  this->updateSourceWindowButton->connectSignal("button_press_event", this->updateSourceWindow, Window::windowOpen);
-  this->updateSourceWindow->connectSignal("destroy", this->updateSourceWindow, Window::windowClose);
-  this->updateSourceWindow->connectSignal("delete_event", this->updateSourceWindow, Window::windowClose);
-#endif /* HAVE_GTK2 */
-
-}
-
-/**
-   \returns A Pointer to the Button of the UpdaterSourceWindow
-*/
-Button* OrxonoxGuiUpdate::updateSourceWindowGetButton(void)
-{
-  return this->updateSourceWindowButton;
-}
-
-
-#ifdef HAVE_GTK2 
-/**
-   \brief updates the Data of orxonox.
-   \param w The widget, that executed this Function.
-   \param event The event that trigered this Function.
-   \param button The Button, that triggered this event.
-*/
-gint OrxonoxGuiUpdate::updateDataFunc(GtkWidget* w, GdkEventKey* event, void* info)
-{
-  FileInfo* dataInfo =(FileInfo*)info;
-
-  dataInfo->fileName = "02%20orxonox%203.mp3";
-  dataInfo->webRoot  = "http://www.orxonox.ethz.ch/files/";
-  dataInfo->localRoot = "./";
-  PRINTF(3)("Preparing to download file %s.\n", dataInfo->fileName);
-  downloadWithStyle(dataInfo);
-}
-
-/**
-   \brief updates the source of orxonox.
-   \param w The widget, that executed this Function.
-   \param event The event that trigered this Function.
-   \param button The Button, that triggered this event.
-*/
-gint OrxonoxGuiUpdate::updateSourceFunc(GtkWidget* w, GdkEventKey* event, void* bar)
-{
-  ProgressBar* tmpBar = static_cast<ProgressBar*>(bar);
-  tmpBar->setTotalSize(20);
-  tmpBar->setProgress(tmpBar->getProgress()+1);
-}
-#endif /* HAVE_GTK2 */
-
-/**
-   \brief The Function Curl calls to write out the File.
-   \param ptr A Pointer to the date to write.
-   \param size The size in bytes of one nmemb to write.
-   \param nmemb The Count of size to write.
-   \param stream Filehandler to write to.
-*/
-size_t OrxonoxGuiUpdate::curlWriteFunc(void* ptr, size_t size, size_t nmemb, FILE* stream)
-{
-  return fwrite(ptr, size, nmemb, stream);
-}
-
-/**
-   \brief The Function Curl calls to write out the File.
-   \param ptr A Pointer to the date to write to.
-   \param size The size in bytes of one nmemb to write.
-   \param nmemb The Count of size to write.
-   \param stream Filehandler to get data from.
-*/
-size_t OrxonoxGuiUpdate::curlReadFunc(void* ptr, size_t size, size_t nmemb, FILE* stream)
-{
-  return fread(ptr, size, nmemb, stream);
-}
-
-
-/**
-   \brief An update Function for the GUI, to show the progress.
-   \param Bar th ProgressBar to update
-   \param totalSize The total size of the download in bytes.
-   \param progress The current Progress of the download in bytes.
-   \param upTotal not needed
-   \param upProgress not needed
-*/
-int OrxonoxGuiUpdate::curlProgressFunc(ProgressBar* bar, double totalSize, double progress, double upTotal, double upProgress)
-{
-  bar->setProgress(progress);
-  bar->setTotalSize(totalSize);
-#ifdef HAVE_GTK2
-#ifndef HAVE_PTHREAD_H
-  while(gtk_events_pending()) gtk_main_iteration();
-#endif
-#endif
-  return 0;
-}
-
-/**
-   \brief The Curl handle for only one CURL(static).
-*/
-CURL* OrxonoxGuiUpdate::curlHandle = NULL;
-
-#ifdef HAVE_PTHREAD_H
-/** \brief The download Thread ID */
-pthread_t* OrxonoxGuiUpdate::downloadThreadID = new pthread_t;
-/**   \brief The download Thread ID*/
-pthread_t* OrxonoxGuiUpdate::downloadThreadFinishID = new pthread_t;
-#endif /* HAVE_PTHREAD_H */
-/**
-   \brief A bool parameter that shows if we are downloading.
-*/
-bool OrxonoxGuiUpdate::isDownloading = false;
-
-
-/**
-   \brief Initializes a Download without displaying it.
-   \param fileInfo the FileInfo.
-
-   !! BE AWARE THIS WILL NOT BE THREADED. !!
-*/
-bool OrxonoxGuiUpdate::download(void* fileInfo)
-{
-  if(isDownloading)
-    {
-      PRINTF(2)("unable to Download. already getting some file\n");
-      return false;
-    }
-  PRINTF(3)("Downloading.\n");
-  FileInfo* info =(FileInfo*)fileInfo;
-  CURLcode res;
-  CURL* localCurl;
-  localCurl = curl_easy_init();
-  char* fileOnNet = new char [strlen(info->webRoot)+strlen(info->fileName)+2];
-  strcpy(fileOnNet, info->webRoot);
-  if(fileOnNet[strlen(fileOnNet)] != '/') //!< \todo windows-shit
-    strcat(fileOnNet, "/");
-  strcat(fileOnNet, info->fileName);
-  char* fileOnDisk = new char [strlen(info->localRoot)+strlen(info->fileName)+2];
-  strcpy(fileOnDisk, info->localRoot);
-  if(fileOnDisk[strlen(fileOnDisk)] != '/') //!< \todo windows-shit
-    strcat(fileOnDisk, "/");
-  strcat(fileOnDisk, info->fileName);
-  
-  if(localCurl)
-    {
-      
-      info->fileHandle = fopen(fileOnDisk, "w");
-      
-      curl_easy_setopt(localCurl, CURLOPT_URL, fileOnNet);
-      curl_easy_setopt(localCurl, CURLOPT_WRITEDATA, info->fileHandle);
-      curl_easy_setopt(localCurl, CURLOPT_WRITEFUNCTION, curlWriteFunc);
-      curl_easy_setopt(localCurl, CURLOPT_READFUNCTION, curlReadFunc);
-      curl_easy_setopt(localCurl, CURLOPT_NOPROGRESS, true);
-      
-      curl_easy_perform(localCurl);
-
-      curl_easy_cleanup(localCurl);
-      fclose(info->fileHandle);
-    }
-}
-
-/**
-   \brief Initializes a Download with some style.
-   \param fileInfo the FileInfo.
-   \todo release thread-lock.
-
-   Downloading with a Button that gets a different Name while downloading, and a Bar, that gets to be updated. More to be followed
-*/
-bool OrxonoxGuiUpdate::downloadWithStyle(void* fileInfo)
-{
-  if(isDownloading)
-    {
-      PRINTF(2)("unable to Download. already getting some file\n");
-      return false;
-    }
-  PRINTF(3)("Downloading.\n");
-  FileInfo* info =(FileInfo*)fileInfo;
-  CURLcode res;
-  curlHandle = curl_easy_init();
-  char* fileOnNet = new char [strlen(info->webRoot)+strlen(info->fileName)+1];
-  strcpy(fileOnNet, info->webRoot);
-  strcat(fileOnNet, info->fileName);
-  char* fileOnDisk = new char [strlen(info->localRoot)+strlen(info->fileName)+1];
-  strcpy(fileOnDisk, info->localRoot);
-  strcat(fileOnDisk, info->fileName);
-
-  if(curlHandle)
-    {
-      
-      info->fileHandle = fopen(fileOnDisk, "w");
-      
-      curl_easy_setopt(curlHandle, CURLOPT_URL, fileOnNet);
-      curl_easy_setopt(curlHandle, CURLOPT_WRITEDATA, info->fileHandle);
-      curl_easy_setopt(curlHandle, CURLOPT_WRITEFUNCTION, curlWriteFunc);
-      curl_easy_setopt(curlHandle, CURLOPT_READFUNCTION, curlReadFunc);
-      curl_easy_setopt(curlHandle, CURLOPT_NOPROGRESS, false);
-      curl_easy_setopt(curlHandle, CURLOPT_PROGRESSFUNCTION, curlProgressFunc);
-      curl_easy_setopt(curlHandle, CURLOPT_PROGRESSDATA, info->bar);
-
-      if(!isDownloading)
-	{
-#ifdef HAVE_PTHREAD_H	  
-	  pthread_join(*downloadThreadFinishID, NULL);
-#endif /* HAVE_PTHREAD_H */
-#ifdef HAVE_GTK2 
-	  info->stateButton->disconnectSignal(info->buttonSignal);
-	  info->buttonSignal = info->stateButton->connectSignal("button_press_event", info, cancelDownload);
-#endif /* HAVE_GTK2 */
-#ifdef HAVE_PTHREAD_H
-	  info->stateButton->setTitle("cancel");
-#else /* HAVE_PTHREAD_H */
-	  info->stateButton->setTitle("please wait");
-#endif /* HAVE_PTHREAD_H */
-	  
-	  //! \todo check if threads really were created.
-#ifdef HAVE_PTHREAD_H
-	  pthread_create(downloadThreadID, NULL, downloadThread, info);
-	  pthread_create(downloadThreadFinishID, NULL, downloadThreadFinished, info);  
-#else
-	  downloadThread(info);
-	  downloadThreadFinished(info);
-#endif /* HAVE_PTHREAD_H */
-	 
-	  //      res = curl_easy_perform(curlHandle);
-	  
-	  //      fclose(outfile);
-	}
-      else 
-	PRINTF(1)("thread already in use\n");
-
-    }
-  return true;
-}
-
-/**
-   \brief The downloading process(either threaded or not).
-   \param fileInfo the FileInfo.
-
-   \todo Threads get locked, if the cancel button is pressed in to small intervals.
-*/
-void* OrxonoxGuiUpdate::downloadThread(void* fileInfo)
-{
-  isDownloading = true;
-  curl_easy_perform(curlHandle);
-}
-
-/**
-   \brief Finishes a downloading process. 
-   \param fileInfo the FileInfo.
-*/
-void* OrxonoxGuiUpdate::downloadThreadFinished(void* fileInfo)
-{ 
-  FileInfo* info =(FileInfo*)fileInfo;
-#ifdef HAVE_PTHREAD_H
-  pthread_join(*downloadThreadID, NULL);
-#ifdef HAVE_GTK2 
-  gdk_threads_enter();
-#endif /* HAVE_GTK2 */
-#endif /* HAVE_PTHREAD_H */
-  if(curlHandle)
-    curl_easy_cleanup(curlHandle);
- 
-  PRINTF(3)("Closing the downloaded file.\n");
-  fclose(info->fileHandle);
-
-  if(isDownloading)
-    info->stateButton->setTitle("go on");
-  //  else
-  //    info->stateButton->setTitle("done");
-#ifdef HAVE_GTK2 
-  info->stateButton->disconnectSignal(info->buttonSignal);
-  info->buttonSignal = info->stateButton->connectSignal("button_press_event", info, updateDataFunc);
-#endif /* HAVE_GTK2 */
-  isDownloading = false;
-#ifdef HAVE_PTHREAD_H
-#ifdef HAVE_GTK2 
-  gdk_threads_leave();
-#endif /* HAVE_GTK2 */
-#endif /* HAVE_PTHREAD_H */
-
-}
-
-#ifdef HAVE_GTK2
-/**
-   \brief canceles a downloading session.
-   \param w The widget, that executed this Function.
-   \param event The event that trigered this Function.
-   \param bar The Bar, that triggered this event.
-
-   \todo canceling a session in non-threaded mode.
-*/
-gint OrxonoxGuiUpdate::cancelDownload(GtkWidget* w, GdkEventKey* event, void* bar)
-{
-#ifdef HAVE_PTHREAD_H
-  pthread_cancel(*downloadThreadID);
-#else
-  PRINTF(2)("Cannot cancle the Downloading process until after this File, because no threading was enabled\n");
-#endif /* HAVE_PTHREAD_H*/
-}
-#endif /* HAVE_GTK2 */
-
-#endif /* HAVE_CURL */
Index: orxonox/trunk/src/lib/gui/gui/orxonox_gui_update.h
===================================================================
--- orxonox/trunk/src/lib/gui/gui/orxonox_gui_update.h	(revision 4053)
+++ 	(revision )
@@ -1,114 +1,0 @@
-/*!
-  \file orxonox_gui_update.h
-  \brief File that holds the class that creates the update-menu.
-*/
-
-#ifndef _ORXONOX_GUI_UPDATE_H
-#define _ORXONOX_GUI_UPDATE_H
-
-#include "orxonox_gui.h"
-#include "orxonox_gui_element.h"
-
-#include <stdio.h>
-#ifdef HAVE_CURL
-#include <curl/curl.h>
-#include <curl/types.h>
-#include <curl/easy.h>
-#endif /* HAVE_CURL */
-#ifdef HAVE_PTHREAD_H
-#define _MULTI_THREADED
-#include <pthread.h>
-#endif /* HAVE_PTHREAD_H */
-using namespace std;
-
-//! Class that creates the execute-Options.
-class OrxonoxGuiUpdate : public OrxonoxGuiElement
-{
- private:
-  // Defining Variables
-  char* tmpDir;                         //!< The Temporary directory.
-  char* homeDir;                        //!< The Home directory.
-  char* installDataDir;                 //!< Where to install the Data to.
-  char* installSourceDir;               //!< Where to install the Source to.
-  char* userName;                       //!< The user logged in.
-
-  bool getSystemInfo(void);
- 
-  // Window creation.
-  Frame* updateFrame;                   //!< The Frame that holds the updateOptions.
-  Box* updateBox;                       //!< The Box that holds the updateOptions.
-  CheckButton* autoUpdate;              //!< A Checkbutton to enable the automatic Updating.
-
-  
-  Button* updateDataWindowButton;       //!< A Button to update the Data of orxonox.
-  Window* updateDataWindow;             //!< A Window for the data-update.
-  Box* updateDataBox;                   //!< A Box for the Window for the Data-update.
-  ProgressBar* updateDataBar;           //!< A Bar to display the progress of the download.
-  Button* updateDataBegin;              //!< A Button to start the process.
-
-  Button* updateSourceWindowButton;     //!< A Button to update the Source of orxonox. \todo tricky
-  Window* updateSourceWindow;           //!< A Window for the Source-update.
-  Box* updateSourceBox;                 //!< A Box for the Window for the Source-update.
-  ProgressBar* updateSourceBar;         //!< A Bar to display the progress of the download.
-
-  Button* test;                         //!< will be deleted soon.
-
-#ifdef HAVE_GTK2
-  static gint updateDataFunc(GtkWidget* w, GdkEventKey* event, void* info);
-  static gint updateSourceFunc(GtkWidget* w, GdkEventKey* event, void* info);
-#endif /* HAVE_GTK2 */
-
-#ifdef HAVE_CURL
-  //! A Struct to hold information about one File to download.
-  struct FileInfo
-  {
-    char* fileName;                     //!< The Name of the file we want to get.
-    char* webRoot;                      //!< The Root of the File on The Web
-    char* localRoot;                    //!< The Root directory to put the files on the local disk.
-    FILE* fileHandle;                   //!< A fileHandler.
-
-    Button* stateButton;                //!< A button that shows either start or cancel;
-    long int buttonSignal;              //!< The Signal of the stateButton.
-    ProgressBar* bar;                   //!< The ProgressBar, that sould be updated.
-  };
-
-  static size_t curlWriteFunc(void* ptr, size_t size, size_t nmemb, FILE* stream);
-  static size_t curlReadFunc(void* ptr, size_t size, size_t nmemb, FILE* stream);
-  static int curlProgressFunc(ProgressBar* bar, double totalSize, double progress, double upTotal, double upProgress);
-
-  static CURL* curlHandle;
-#ifdef HAVE_GTK2 
-  static gint cancelDownload(GtkWidget* w, GdkEventKey* event, void* bar);
-#endif /* HAVE_GTK2 */  
-#ifdef HAVE_PTHREAD_H
-  static pthread_t* downloadThreadID;
-  static pthread_t* downloadThreadFinishID;
-#endif /* HAVE_PTHREAD_H */
-  static bool isDownloading;
-
-  static bool download(void* fileInfo);
-  static bool downloadWithStyle(void* fileInfo);
-  static void* downloadThread(void* fileInfo);
-  static void* downloadThreadFinished(void* fileInfo);
-
-  
-#endif /* HAVE_CURL */
-
- public:
-  OrxonoxGuiUpdate(void);
-  ~OrxonoxGuiUpdate(void);
-  
-#ifdef HAVE_CURL   
-  void updateDataWindowCreate(void);
-  Button* updateDataWindowGetButton(void);
-
-  void updateSourceWindowCreate(void);
-  Button* updateSourceWindowGetButton(void);
-
-  bool* checkForUpdates(void);
- 
-#endif /* HAVE_CURL */
-
-};
-
-#endif /* _ORXONOX_GUI_UPDATE_H */
Index: orxonox/trunk/src/lib/gui/gui/orxonox_gui_video.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/orxonox_gui_video.cc	(revision 4053)
+++ 	(revision )
@@ -1,179 +1,0 @@
-/* 
-   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.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-
-
-   ### File Specific:
-   main-programmer: Benjamin Grauer
-
-*/
-
-
-#include "orxonox_gui_video.h"
-
-#include "glincl.h"
-
-/**
-   \brief Creates the Video-Option-Frame
-*/
-OrxonoxGuiVideo::OrxonoxGuiVideo(void)
-{
-  this->videoFrame = new Frame("Video-Options:");
-  this->videoBox = new Box('v');
-  this->videoFrame->setGroupName("video");
-  
-  this->fullscreen = new CheckButton("Fullscreen-mode");
-  this->fullscreen->setFlagName("windowed", "q", 1);
-  this->fullscreen->saveability();
-  this->videoBox->fill(this->fullscreen);
-  this->resolution = new Menu("Resolution");
-  this->getResolutions(this->resolution);
-  this->resolution->saveability();
-  this->videoBox->fill(this->resolution);
-  this->wireframe = new CheckButton("WireFrame-mode");
-  this->wireframe->setFlagName("wireframe", "w", 0);
-  this->wireframe->saveability();
-  this->videoBox->fill(this->wireframe);
-
-  this->advancedWindowCreate();
-  this->videoBox->fill(this->advancedWindowGetButton());
-
-  this->videoFrame->fill(videoBox);
-  this->setMainWidget(this->videoFrame);
-}
-
-/**
-   \brief Destructs the Video-stuff
-*/
-OrxonoxGuiVideo::~OrxonoxGuiVideo(void)
-{
-  // nothing to do here.
-}
-
-/**
-   \brief Creates a window, and all it contains for the Source-update.
-*/
-void OrxonoxGuiVideo::advancedWindowCreate(void)
-{
-  // the button, that opens this Window.
-  this->advancedButton = new Button("advanced");
-
-  // the Window itself
-  this->advancedWindow = new Window("Advanced Video Options");
-  this->advancedWindow->setGroupName("advancedVideoOptions");
-
-  this->advancedBox = new Box('v');
-
-  // Advanced Performance Options
-  this->shadows = new CheckButton("Shadows");
-  this->shadows->saveability();
-  this->advancedBox->fill(this->shadows);
-
-  this->fog = new CheckButton("Fog");
-  this->fog->saveability();
-  this->advancedBox->fill(this->fog);
-
-  this->reflections = new CheckButton("Reflections");
-  this->reflections->saveability();
-  this->advancedBox->fill(this->reflections);
-
-  this->textures = new CheckButton("Textures");
-  this->textures->saveability();
-  this->advancedBox->fill(this->textures);
-
-  this->textureDetail = new Menu("Texture Detail", "low", "medium", "high", "lastItem");
-  this->textureDetail->saveability();
-  this->advancedBox->fill(this->textureDetail);
-
-  this->modelDetailLabel = new Label("Model Detail");
-  this->advancedBox->fill(this->modelDetailLabel);
-  this->modelDetail = new Menu("Model Detail", "low", "medium", "high", "lastItem");
-  this->modelDetail->saveability();
-  this->advancedBox->fill(this->modelDetail);
-
-  this->antiAliasingLabel = new Label("Anti-Aliasing-depth:");
-  this->advancedBox->fill(this->antiAliasingLabel);
-  this->antiAliasing = new Menu("Anti Aliasing", "0", "1", "2", "4", "8",  "lastItem");
-  this->antiAliasing->saveability();
-  this->advancedBox->fill(this->antiAliasing);
-
-  this->filterMethodLabel = new Label("Filtering Method:");
-  this->advancedBox->fill(this->filterMethodLabel);
-  this->filterMethod = new Menu("Filtering Method", "none", "linear", "bilinear", "trilinear", "anisortopic", "lastItem");
-  this->filterMethod->saveability();
-  this->advancedBox->fill(this->filterMethod);
-  
-  this->closeButton = new Button("close");
-  this->advancedBox->fill(this->closeButton);
-
-  this->advancedWindow->fill(advancedBox);
-#ifdef HAVE_GTK2 
-  this->advancedButton->connectSignal("button_press_event", this->advancedWindow, Window::windowOpen);
-  this->closeButton->connectSignal("button_press_event", this->advancedWindow, Window::windowClose);
-  this->advancedWindow->connectSignal("destroy", this->advancedWindow, Window::windowClose);
-  this->advancedWindow->connectSignal("delete_event", this->advancedWindow, Window::windowClose);
-#endif /* HAVE_GTK2 */
-   Window::addWindow(this->advancedWindow);
-
-}
-
-/**
-   \returns A Pointer to the Button of the UpdaterSourceWindow
-*/
-Button* OrxonoxGuiVideo::advancedWindowGetButton(void)
-{
-  return this->advancedButton;
-}
-
-void OrxonoxGuiVideo::getResolutions(Menu* menu)
-{
-  SDL_Init(SDL_INIT_VIDEO);
-  SDL_Rect **modes;
-  int i;
-  int x = 0,y =0; // check for difference
-  char tmpChar[100];
-  
-  /* Get available fullscreen/hardware modes */
-  modes=SDL_ListModes(NULL, SDL_FULLSCREEN|SDL_HWSURFACE);
-  
-  /* Check is there are any modes available */
-  if(modes == (SDL_Rect **)0){
-    PRINTF(2)("No video-modes available!\n");
-    exit(-1);
-  }
-  
-  /* Check if our resolution is restricted */
-  if(modes == (SDL_Rect **)-1){
-    PRINTF(2)("All resolutions available.\n");
-  }
-  else{
-    /* Print valid modes */
-    PRINT(4)("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);
-	    sprintf(tmpChar, "%dx%d", modes[i]->w, modes[i]->h);
-	    menu->addItem(tmpChar);
-	    x = modes[i]->w; y = modes[i]->h;
-	  }
-      }
-  }
-  SDL_Quit();
-}
Index: orxonox/trunk/src/lib/gui/gui/orxonox_gui_video.h
===================================================================
--- orxonox/trunk/src/lib/gui/gui/orxonox_gui_video.h	(revision 4053)
+++ 	(revision )
@@ -1,53 +1,0 @@
-/*!
-  \file orxonox_gui_video.h
-  \brief File that holds the class that creates the Video-Options.
-*/
-#ifndef _ORXONOX_GUI_VIDEO_H
-#define _ORXONOX_GUI_VIDEO_H
-
-#include "orxonox_gui.h"
-#include "orxonox_gui_element.h"
-
-//! Class that creates the Video-Options.
-class OrxonoxGuiVideo : public OrxonoxGuiElement
-{
- private:
-  Frame* videoFrame;        //!< The Frame that holds the video options.
-  Box* videoBox;            //!< The Box that holds the video options.
-  CheckButton* fullscreen;  //!< CheckButton for fullscreen-mode
-  Menu* resolution;         //!< Menu for the resolution
-  CheckButton* wireframe;   //!< CheckButton for wireframe Mode.
-
-  // advanced-Performance-Options
-  Window* advancedWindow;   //!< A Window to display advanced options.
-  Button* advancedButton;   //!< A Button to open the Advanced Video Performance Window.
-  Box* advancedBox;         //!< A Box to pack the options into.
-  CheckButton* shadows;     //!< CheckButton for shadows
-  CheckButton* fog;         //!< CheckButton for fog.
-  CheckButton* reflections; //!< CheckButton for reflections
-  CheckButton* textures;    //!< CheckButton for textures
-  Menu* textureDetail;      //!< Menu for the Texture-Detail.
-  
-  Label* modelDetailLabel;  //!< Label for model-detail.
-  Menu* modelDetail;        //!< model-detail.
-  
-  Label* antiAliasingLabel; //!< Label for the anti-aliasing mode.
-  Menu* antiAliasing;       //!< Menu for the Antialiasing-mode.
-
-  Label* filterMethodLabel; //!< Label for filtering-Method.
-  Menu* filterMethod;       //!< Menu for filtering Method.
-
-  Button* closeButton;      //!< A Button to close the Advanced-settingsWindow.
-
-  Button* advancedWindowGetButton(void);
-  void advancedWindowCreate(void);
-  
- public:
-  OrxonoxGuiVideo(void);
-  ~OrxonoxGuiVideo(void);
-
-  void getResolutions(Menu* menu);
-  
-
-};
-#endif /* _ORXONOX_GUI_VIDEO_H */
Index: orxonox/trunk/src/orxonox.cc
===================================================================
--- orxonox/trunk/src/orxonox.cc	(revision 4053)
+++ orxonox/trunk/src/orxonox.cc	(revision 4054)
@@ -22,8 +22,10 @@
    main-programmer: Patrick Boenzli
    co-programmer: Christian Meyer
-   co-programmer: Benjamin Grauer: injected ResourceManager/GraphicsEngine
+   co-programmer: Benjamin Grauer: injected ResourceManager/GraphicsEngine/GUI
 */
 
 #include "orxonox.h"
+
+#include "gui.h"
 
 #include "world.h"
@@ -48,4 +50,7 @@
 {
   pause = false;
+  this->world = NULL;
+  this->resources = NULL;
+  this->localinput = NULL;
 }
 
@@ -55,7 +60,8 @@
 Orxonox::~Orxonox () 
 {
+  int i =0;
   Orxonox::singletonRef = NULL;
   if( world != NULL) delete world;
-  if( localinput != NULL) delete world;
+  if( localinput != NULL) delete localinput;
   if( resources != NULL) delete resources;
   delete GraphicsEngine::getInstance(); // deleting the Graphics
@@ -172,5 +178,5 @@
     {
       PRINTF(1)("Data Could not be located\n");
-      exit( -1);
+      exit(-1);
     }
 
@@ -337,9 +343,13 @@
       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]);
-      system(guiExec);
-      delete guiExec;
-      return 0;
+      //      char* guiExec = new char[strlen(argv[0])+20];
+      //      sprintf(guiExec,"%sGui --gui", argv[0]);
+      OrxonoxGui* gui = new OrxonoxGui(argc, argv);
+      if (! gui->startOrxonox)
+	return 0;
+      
+      delete gui;
+      //      delete guiExec;
+      //      return 0;
     }
   
Index: orxonox/trunk/src/subprojects/Makefile.in
===================================================================
--- orxonox/trunk/src/subprojects/Makefile.in	(revision 4053)
+++ orxonox/trunk/src/subprojects/Makefile.in	(revision 4054)
@@ -117,4 +117,5 @@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -125,4 +126,5 @@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
+ac_ct_RANLIB = @ac_ct_RANLIB@
 ac_ct_STRIP = @ac_ct_STRIP@
 am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
Index: orxonox/trunk/src/subprojects/testmain/Makefile.in
===================================================================
--- orxonox/trunk/src/subprojects/testmain/Makefile.in	(revision 4053)
+++ orxonox/trunk/src/subprojects/testmain/Makefile.in	(revision 4054)
@@ -132,4 +132,5 @@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -140,4 +141,5 @@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
+ac_ct_RANLIB = @ac_ct_RANLIB@
 ac_ct_STRIP = @ac_ct_STRIP@
 am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
Index: orxonox/trunk/src/util/resource_manager.h
===================================================================
--- orxonox/trunk/src/util/resource_manager.h	(revision 4053)
+++ orxonox/trunk/src/util/resource_manager.h	(revision 4054)
@@ -81,4 +81,5 @@
   static bool touchFile(const char* fileName);
   static bool deleteFile(const char* fileName);
+  static char* homeDirCheck(const char* name);
 
  private:
@@ -94,5 +95,4 @@
   Resource* locateResourceByPointer(const void* pointer);
   
-  static char* homeDirCheck(const char* name);
 };
 
