Index: branches/gui/src/lib/gui/gl_gui/Makefile.am
===================================================================
--- branches/gui/src/lib/gui/gl_gui/Makefile.am	(revision 8007)
+++ branches/gui/src/lib/gui/gl_gui/Makefile.am	(revision 8008)
@@ -25,4 +25,5 @@
 		glgui_inputline.cc \
 		glgui_textfield.cc \
+		glgui_image.cc \
 		glgui_window.cc \
 		glgui_cursor.cc
@@ -47,4 +48,5 @@
 		glgui_inputline.h \
 		glgui_textfield.h \
+		glgui_image.h \
 		glgui_window.h \
 		glgui_cursor.h
Index: branches/gui/src/lib/gui/gl_gui/glgui.h
===================================================================
--- branches/gui/src/lib/gui/gl_gui/glgui.h	(revision 8007)
+++ branches/gui/src/lib/gui/gl_gui/glgui.h	(revision 8008)
@@ -22,4 +22,5 @@
 #include "glgui_inputline.h"
 #include "glgui_textfield.h"
+#include "glgui_image.h"
 
 
Index: branches/gui/src/lib/gui/gl_gui/glgui_image.cc
===================================================================
--- branches/gui/src/lib/gui/gl_gui/glgui_image.cc	(revision 8007)
+++ branches/gui/src/lib/gui/gl_gui/glgui_image.cc	(revision 8008)
@@ -43,13 +43,53 @@
   void GLGuiImage::init()
   {
-    this->setClassID(CL_GLGUI_, "GLGuiImage");
+    this->setClassID(CL_GLGUI_IMAGE, "GLGuiImage");
+
+    this->frontMaterial().setDiffuseMap(this->texture);
+
+    this->resize();
+  }
+
+
+  void GLGuiImage::loadImageFromTexture(const Texture& texture)
+  {
+    this->texture = texture;
+  }
+
+  void GLGuiImage::loadImageFromFile(const std::string& fileName)
+  {
+    this->texture.loadImage(fileName);
+  }
+
+  void GLGuiImage::loadImageFromSDLSurface(SDL_Surface* surface)
+  {
+    //this->texture.loadSurface(surface);
+  }
+
+  void GLGuiImage::loadImageFromDisplayList(GLuint texture)
+  {
+//    this->texture.setTexture(texture);
+  }
+
+  void GLGuiImage::resize()
+  {
+    this->frontRect().setTopLeft(1, 1);
+    this->frontRect().setSize(this->getSizeX2D() -2, this->getSizeY2D() -2);
+    GLGuiWidget::resize();
+  }
+
+
+  /**
+   * @brief draws the GLGuiImage
+   */
+  void GLGuiImage::draw() const
+  {
+    this->beginDraw();
+    GLGuiWidget::draw();
+
+    this->frontMaterial().select();
+    this->drawRect(this->frontRect());
+    this->endDraw();
+
 
   }
-
-  /**
-   * draws the GLGuiImage
-   */
-  void GLGuiImage::draw()
-  {
-  }
 }
Index: branches/gui/src/lib/gui/gl_gui/glgui_image.h
===================================================================
--- branches/gui/src/lib/gui/gl_gui/glgui_image.h	(revision 8007)
+++ branches/gui/src/lib/gui/gl_gui/glgui_image.h	(revision 8008)
@@ -8,5 +8,5 @@
 #define _GLGUI_IMAGE_H
 
-#include "base_object.h"
+#include "glgui_widget.h"
 
 // FORWARD DECLARATION
@@ -26,13 +26,20 @@
     virtual ~GLGuiImage();
 
-    void init();
-    void loadImageFromFile(const char* fileName);
+    void loadImageFromTexture(const Texture& texture);
+
+    void loadImageFromFile(const std::string& fileName);
     void loadImageFromSDLSurface(SDL_Surface* surface);
-    void loadImageFromDisplayList(GLuint displayList);
+    void loadImageFromDisplayList(GLuint texture);
 
-    virtual void draw();
+    virtual void draw() const;
+
+    DeclareSignal0(imageChanged);
 
   private:
+    void init();
+    virtual void resize();
 
+  private:
+    Texture       texture;
   };
 }
Index: branches/gui/src/lib/gui/gl_gui/glgui_pushbutton.cc
===================================================================
--- branches/gui/src/lib/gui/gl_gui/glgui_pushbutton.cc	(revision 8007)
+++ branches/gui/src/lib/gui/gl_gui/glgui_pushbutton.cc	(revision 8008)
@@ -98,12 +98,5 @@
 
     this->frontMaterial().select();
-    glBegin(GL_QUADS);
-
-    glTexCoord2i(0,0); glVertex2d(1, 1);
-    glTexCoord2i(0,1); glVertex2d(1, this->getSizeY2D() - 1);
-    glTexCoord2i(1,1); glVertex2d(this->getSizeX2D() - 1, this->getSizeY2D() -1);
-    glTexCoord2i(1,0); glVertex2d(this->getSizeX2D() - 1, 1);
-
-    glEnd();
+    this->drawRect(this->frontRect());
     this->endDraw();
     //   this->label->draw();
Index: branches/gui/src/lib/gui/gl_gui/glgui_textfield.cc
===================================================================
--- branches/gui/src/lib/gui/gl_gui/glgui_textfield.cc	(revision 8007)
+++ branches/gui/src/lib/gui/gl_gui/glgui_textfield.cc	(revision 8008)
@@ -43,13 +43,17 @@
   {
     this->setClassID(CL_GLGUI_TEXTFIELD, "GLGuiTextfield");
-
-
   }
 
   /**
-   * draws the GLGuiTextfield
+   * @brief draws the GLGuiTextfield
    */
   void GLGuiTextfield::draw() const
   {
+    this->beginDraw();
+    GLGuiWidget::draw();
+
+    this->frontMaterial().select();
+    this->drawRect(this->frontRect());
+    this->endDraw();
   }
 }
Index: branches/gui/src/lib/gui/gl_gui/glgui_widget.cc
===================================================================
--- branches/gui/src/lib/gui/gl_gui/glgui_widget.cc	(revision 8007)
+++ branches/gui/src/lib/gui/gl_gui/glgui_widget.cc	(revision 8008)
@@ -163,4 +163,16 @@
   ;
 
+  void GLGuiWidget::setWidgetSize(const Vector2D& size)
+  {
+    this->setSize2D(size);
+    this->resize();
+
+  }
+
+
+  void GLGuiWidget::setWidgetSize(float x, float y)
+  {
+    this->setWidgetSize(Vector2D(x, y));
+  }
 
 
Index: branches/gui/src/lib/gui/gl_gui/glgui_widget.h
===================================================================
--- branches/gui/src/lib/gui/gl_gui/glgui_widget.h	(revision 8007)
+++ branches/gui/src/lib/gui/gl_gui/glgui_widget.h	(revision 8008)
@@ -88,4 +88,7 @@
     void setBorderSize(float borderSize);
 
+    void setWidgetSize(const Vector2D& size);
+    void setWidgetSize(float x, float y);
+
 
     void setBackgroundColor(float x, float y, float z) { this->backMaterial().setDiffuse(x,y,z); };
