Index: orxonox/trunk/src/lib/gui/gui/Makefile.am
===================================================================
--- orxonox/trunk/src/lib/gui/gui/Makefile.am	(revision 4276)
+++ orxonox/trunk/src/lib/gui/gui/Makefile.am	(revision 4338)
@@ -25,5 +25,6 @@
 noinst_LIBRARIES = libORXgui.a 
 
-libORXgui_a_CPPFLAGS=$(GTK2_CFLAGS) $(GTHREAD_CFLAGS) $(CURL_CFLAGS) $(MSBITFIELDS)
+libORXgui_a_CPPFLAGS = -DBUILD_ORXONOX \
+			$(GTK2_CFLAGS) $(GTHREAD_CFLAGS) $(CURL_CFLAGS) $(MSBITFIELDS)
 
 libORXgui_a_SOURCES = gui.cc \
Index: orxonox/trunk/src/lib/gui/gui/Makefile.in
===================================================================
--- orxonox/trunk/src/lib/gui/gui/Makefile.in	(revision 4276)
+++ orxonox/trunk/src/lib/gui/gui/Makefile.in	(revision 4338)
@@ -200,5 +200,7 @@
 AM_LDFLAGS = $(GTK2_LIBS) $(GTHREAD_LIBS) $(CURL_LIBS)
 noinst_LIBRARIES = libORXgui.a 
-libORXgui_a_CPPFLAGS = $(GTK2_CFLAGS) $(GTHREAD_CFLAGS) $(CURL_CFLAGS) $(MSBITFIELDS)
+libORXgui_a_CPPFLAGS = -DBUILD_ORXONOX \
+			$(GTK2_CFLAGS) $(GTHREAD_CFLAGS) $(CURL_CFLAGS) $(MSBITFIELDS)
+
 libORXgui_a_SOURCES = gui.cc \
 		      gui_gtk.cc \
Index: orxonox/trunk/src/lib/gui/gui/gui_gtk.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui_gtk.cc	(revision 4276)
+++ orxonox/trunk/src/lib/gui/gui/gui_gtk.cc	(revision 4338)
@@ -47,6 +47,11 @@
 bool initGUI(int argc, char *argv[])
 {
-  executable = new char[strlen(argv[0])+1];
-  strcpy(executable, argv[0]);
+  if (argv)
+    {
+      executable = new char[strlen(argv[0])+1];
+      strcpy(executable, argv[0]);
+    }
+  else
+    executable = NULL;
 
 #ifdef HAVE_GTK2
@@ -1073,12 +1078,14 @@
 #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.
+    \brief Signal OptionChange writes the Value from the Option to its Object-Database.
+    \param widget The widget(Option) that has a changed Value
+    \param option the Option-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 !!!
+#ifdef BUILD_ORXONOX
+  flags->setTextFromFlags(Window::mainWindow);
+#endif
 }
 #endif /* HAVE_GTK2 */
@@ -1242,7 +1249,7 @@
    \param end The maximal Value of the slider.
 */
-Slider::Slider(const char* slidername, int start, int end)
-{
-  this->optionType = GUI_INT;
+Slider::Slider(const char* slidername, float start, float end)
+{
+  this->optionType = GUI_FLOAT;
 
   this->start = start;
@@ -1268,10 +1275,21 @@
 
 /**
+   \brief sets the exactness of the widget
+   \param exactness count of digits after the dot
+*/
+void Slider::setExactness(int exactness)
+{
+#ifdef HAVE_GTK2
+ gtk_scale_set_digits(GTK_SCALE(this->widget), exactness);
+#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;
+void Slider::setValue(float value)
+{
+  this->fValue = value;
 }
 
@@ -1283,5 +1301,5 @@
 {
 #ifdef HAVE_GTK2
-  gtk_range_set_value(GTK_RANGE(this->widget), this->value);
+  gtk_range_set_value(GTK_RANGE(this->widget), this->fValue);
 #endif /* HAVE_GTK2 */
 }
@@ -1293,5 +1311,5 @@
 {
 #ifdef HAVE_GTK2
-  this->value =(int)gtk_range_get_value(GTK_RANGE(this->widget));
+  this->fValue = gtk_range_get_value(GTK_RANGE(this->widget));
 #else /* HAVE_GTK2 */
   char tmpChar[20];
@@ -1299,12 +1317,26 @@
   scanf("%s", tmpChar);
 
-  if ((this->value = atoi(tmpChar))> this->end)
-    this->value = this->end;
-  if (this->value <= this->start)
-    this->value = this->start;
-
-  PRINT(0)("%s set to: %d\n",this->title, this->value);
-#endif /* HAVE_GTK2 */
-}
+  if ((this->fValue = atof(tmpChar))> this->end)
+    this->fValue = this->end;
+  if (this->fValue <= this->start)
+    this->fValue = this->start;
+
+  PRINT(0)("%s set to: %d\n",this->title, this->fValue);
+#endif /* HAVE_GTK2 */
+}
+
+char* Slider::save(void)
+{
+  char* value = new char [30];
+  sprintf (value, "%f", this->fValue);
+  return value;
+}
+void Slider::load(char* loadString)
+{
+  this->fValue = atof(loadString);
+  PRINT(5)("Loading %s: %s %f\n", this->title, loadString, fValue); 
+  this->redraw();
+}
+
 
 //////////
@@ -1387,8 +1419,17 @@
 {
   MenuItem* tmpItem = this->firstItem;
-  for (int i = 0; i<this->value; i++)
-    tmpItem = tmpItem->next;
-      
-  return tmpItem->name;
+  for (int i = 0; i < this->value; i++)
+    if (tmpItem)
+      tmpItem = tmpItem->next;
+    else
+      break;
+  if (tmpItem)
+    {
+      char* tmpName = new char[strlen(tmpItem->name)+1];
+      strcpy(tmpName, tmpItem->name);
+      return tmpName;
+    }
+  else 
+    return NULL;
 }
 
@@ -1471,5 +1512,5 @@
 
 #endif /* HAVE_GTK2 */
-  PRINT(5)("%s set to: %d\n", this->title, this->value);
+  PRINT(1)("%s set to: %d\n", this->title, this->value);
 }
 
Index: orxonox/trunk/src/lib/gui/gui/gui_gtk.h
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui_gtk.h	(revision 4276)
+++ orxonox/trunk/src/lib/gui/gui/gui_gtk.h	(revision 4338)
@@ -61,4 +61,5 @@
 
   virtual void setTitle(const char* title);  //!< An abstract Function, that sets the title of Widgets.
+  virtual const char* getTitle(void) const { return this->title; };
 
   Widget* findWidgetByName(char* name, unsigned int depth);
@@ -296,13 +297,18 @@
 {
  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);
+  float start;                            //!< The beginning of the Slider-range.
+  float end;                              //!< The end of the Slider-range.
+  float fValue;                           //!< a value for the slider
+ public:
+  Slider(const char* slidername, float start, float end);
   virtual ~Slider(void);
 
-  void setValue(int value);
-  virtual void redraw(void);
-  virtual void changeOption(void);
+  void setExactness(int exactness);
+  void setValue(float value);
+  virtual void redraw(void);
+  virtual void changeOption(void);
+
+  virtual char* save(void);
+  virtual void load(char* loadString);
 };
 
