diff options
author | Ted Gould <ted@gould.cx> | 2010-02-09 14:15:36 -0600 |
---|---|---|
committer | Ted Gould <ted@gould.cx> | 2010-02-09 14:15:36 -0600 |
commit | cd276bc30c0c05155868420b7afb0f4e3ce66a37 (patch) | |
tree | 541ee796d7a7c6d8e9da3220d6f359be04920814 /libdbusmenu-glib | |
parent | 106cfac3df317f1244d7d779ed2cb640eb359a6c (diff) | |
download | libdbusmenu-cd276bc30c0c05155868420b7afb0f4e3ce66a37.tar.gz libdbusmenu-cd276bc30c0c05155868420b7afb0f4e3ce66a37.tar.bz2 libdbusmenu-cd276bc30c0c05155868420b7afb0f4e3ce66a37.zip |
Setting up code to get and set the menuitem.
Diffstat (limited to 'libdbusmenu-glib')
-rw-r--r-- | libdbusmenu-glib/menuitem-proxy.c | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/libdbusmenu-glib/menuitem-proxy.c b/libdbusmenu-glib/menuitem-proxy.c index b50d8a5..d91ecfd 100644 --- a/libdbusmenu-glib/menuitem-proxy.c +++ b/libdbusmenu-glib/menuitem-proxy.c @@ -37,6 +37,14 @@ struct _DbusmenuMenuitemProxyPrivate { DbusmenuMenuitem * mi; }; +/* Properties */ +enum { + PROP_0, + PROP_MENU_ITEM +}; + +#define PROP_MENU_ITEM_S "menu-item" + #define DBUSMENU_MENUITEM_PROXY_GET_PRIVATE(o) \ (G_TYPE_INSTANCE_GET_PRIVATE ((o), DBUSMENU_TYPE_MENUITEM_PROXY, DbusmenuMenuitemProxyPrivate)) @@ -44,6 +52,8 @@ static void dbusmenu_menuitem_proxy_class_init (DbusmenuMenuitemProxyClass *klas static void dbusmenu_menuitem_proxy_init (DbusmenuMenuitemProxy *self); static void dbusmenu_menuitem_proxy_dispose (GObject *object); static void dbusmenu_menuitem_proxy_finalize (GObject *object); +static void set_property (GObject * obj, guint id, const GValue * value, GParamSpec * pspec); +static void get_property (GObject * obj, guint id, GValue * value, GParamSpec * pspec); static void handle_event (DbusmenuMenuitem * mi, const gchar * name, const GValue * value, guint timestamp); static void add_menuitem (DbusmenuMenuitemProxy * pmi, DbusmenuMenuitem * mi); static void remove_menuitem (DbusmenuMenuitemProxy * pmi); @@ -59,11 +69,19 @@ dbusmenu_menuitem_proxy_class_init (DbusmenuMenuitemProxyClass *klass) object_class->dispose = dbusmenu_menuitem_proxy_dispose; object_class->finalize = dbusmenu_menuitem_proxy_finalize; + object_class->set_property = set_property; + object_class->get_property = get_property; DbusmenuMenuitemClass * miclass = DBUSMENU_MENUITEM_CLASS(klass); miclass->handle_event = handle_event; + g_object_class_install_property (object_class, PROP_MENU_ITEM, + g_param_spec_object(PROP_MENU_ITEM_S, "The Menuitem we're proxying", + "An instance of the DbusmenuMenuitem class that this menuitem will mimic.", + DBUSMENU_TYPE_MENUITEM, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS)); + return; } @@ -96,6 +114,42 @@ dbusmenu_menuitem_proxy_finalize (GObject *object) return; } +/* Set a property using the generic GObject interface */ +static void +set_property (GObject * obj, guint id, const GValue * value, GParamSpec * pspec) +{ + switch (id) { + case PROP_MENU_ITEM: { + GObject * lobj = g_value_get_object(value); + add_menuitem(DBUSMENU_MENUITEM_PROXY(obj), DBUSMENU_MENUITEM(lobj)); + break; + } + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, id, pspec); + break; + } + + return; +} + +/* Get a property using the generic GObject interface */ +static void +get_property (GObject * obj, guint id, GValue * value, GParamSpec * pspec) +{ + DbusmenuMenuitemProxyPrivate * priv = DBUSMENU_MENUITEM_PROXY_GET_PRIVATE(obj); + + switch (id) { + case PROP_MENU_ITEM: + g_value_set_object(value, priv->mi); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, id, pspec); + break; + } + + return; +} + /* Takes the event and passes it along to the item that we're playing proxy for. */ static void |