diff --git a/include/Desktop/widget.h b/include/Desktop/widget.h index 9ae420d..acca7b7 100644 --- a/include/Desktop/widget.h +++ b/include/Desktop/widget.h @@ -20,6 +20,16 @@ /* Widget */ -GtkWidget * desktop_widget_new(char const * name); +/* public */ +/* types */ +typedef struct _DesktopWidget DesktopWidget; + + +/* functions */ +DesktopWidget * desktop_widget_new(char const * name); +void desktop_widget_delete(DesktopWidget * widget); + +/* accessors */ +GtkWidget * desktop_widget_get_widget(DesktopWidget * widget); #endif /* !LIBDESKTOP_DESKTOP_WIDGET_H */ diff --git a/src/widget.c b/src/widget.c index 25017c4..76f5b22 100644 --- a/src/widget.c +++ b/src/widget.c @@ -15,6 +15,7 @@ +#include #include "Desktop.h" #include "../config.h" @@ -27,12 +28,41 @@ /* Widget */ -/* desktop_widget_new */ -GtkWidget * desktop_widget_new(char const * name) +/* private */ +/* types */ +struct _DesktopWidget { - GtkWidget * ret; + GtkWidget * widget; +}; + +/* public */ +/* functions */ +/* desktop_widget_new */ +DesktopWidget * desktop_widget_new(char const * name) +{ + DesktopWidget * ret; + + if((ret = object_new(sizeof(*ret))) == NULL) + return NULL; /* FIXME really implement */ - ret = gtk_label_new(name); + ret->widget = gtk_label_new(name); return ret; } + + +/* desktop_widget_delete */ +void desktop_widget_delete(DesktopWidget * widget) +{ + gtk_widget_destroy(widget->widget); + object_delete(widget); +} + + +/* accessors */ +/* desktop_widget_get_widget */ +GtkWidget * desktop_widget_get_widget(DesktopWidget * widget) +{ + /* FIXME really implement */ + return widget->widget; +}