aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libdbusmenu-gtk/serializablemenuitem.c99
-rw-r--r--libdbusmenu-gtk/serializablemenuitem.h58
2 files changed, 157 insertions, 0 deletions
diff --git a/libdbusmenu-gtk/serializablemenuitem.c b/libdbusmenu-gtk/serializablemenuitem.c
new file mode 100644
index 0000000..2c166d8
--- /dev/null
+++ b/libdbusmenu-gtk/serializablemenuitem.c
@@ -0,0 +1,99 @@
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "idoserializablemenuitem.h"
+
+struct _IdoSerializableMenuItemPrivate {
+ int dummy;
+};
+
+#define IDO_SERIALIZABLE_MENU_ITEM_GET_PRIVATE(o) \
+(G_TYPE_INSTANCE_GET_PRIVATE ((o), IDO_TYPE_SERIALIZABLE_MENU_ITEM, IdoSerializableMenuItemPrivate))
+
+static void ido_serializable_menu_item_class_init (IdoSerializableMenuItemClass *klass);
+static void ido_serializable_menu_item_init (IdoSerializableMenuItem *self);
+static void ido_serializable_menu_item_dispose (GObject *object);
+static void ido_serializable_menu_item_finalize (GObject *object);
+
+G_DEFINE_TYPE (IdoSerializableMenuItem, ido_serializable_menu_item, GTK_TYPE_MENU_ITEM);
+
+static void
+ido_serializable_menu_item_class_init (IdoSerializableMenuItemClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ g_type_class_add_private (klass, sizeof (IdoSerializableMenuItemPrivate));
+
+ object_class->dispose = ido_serializable_menu_item_dispose;
+ object_class->finalize = ido_serializable_menu_item_finalize;
+
+ return;
+}
+
+static void
+ido_serializable_menu_item_init (IdoSerializableMenuItem *self)
+{
+ self->priv = IDO_SERIALIZABLE_MENU_ITEM_GET_PRIVATE(self);
+
+ self->priv->dummy = 5;
+
+ return;
+}
+
+static void
+ido_serializable_menu_item_dispose (GObject *object)
+{
+
+
+ G_OBJECT_CLASS (ido_serializable_menu_item_parent_class)->dispose (object);
+ return;
+}
+
+static void
+ido_serializable_menu_item_finalize (GObject *object)
+{
+
+
+
+ G_OBJECT_CLASS (ido_serializable_menu_item_parent_class)->finalize (object);
+ return;
+}
+
+DbusmenuMenuitem *
+ido_serializable_menu_item_get_dbusmenu_menuitem (IdoSerializableMenuItem * smi)
+{
+ g_return_val_if_fail(IDO_IS_SERIALIZABLE_MENU_ITEM(smi), NULL);
+
+ IdoSerializableMenuItemClass * klass = IDO_SERIALIZABLE_MENU_ITEM_GET_CLASS(smi);
+ if (klass->get_dbusmenu_menuitem != NULL) {
+ return klass->get_dbusmenu_menuitem(smi);
+ }
+
+ return NULL;
+}
+
+void
+ido_serializable_menu_item_register_to_client (DbusmenuClient * client, GType item_type)
+{
+ g_return_if_fail(g_type_is_a(item_type, IDO_TYPE_SERIALIZABLE_MENU_ITEM));
+
+ gpointer type_class = g_type_class_ref(item_type);
+ g_return_if_fail(type_class != NULL);
+
+ IdoSerializableMenuItemClass * class = IDO_SERIALIZABLE_MENU_ITEM_CLASS(type_class);
+
+ if (class->get_type_string == NULL) {
+ g_type_class_unref(type_class);
+ g_error("No 'get_type_string' in subclass of IdoSerializableMenuItem");
+ return;
+ }
+
+ /* Register type */
+
+
+ /* Register defaults */
+
+
+ return;
+}
diff --git a/libdbusmenu-gtk/serializablemenuitem.h b/libdbusmenu-gtk/serializablemenuitem.h
new file mode 100644
index 0000000..48fdb49
--- /dev/null
+++ b/libdbusmenu-gtk/serializablemenuitem.h
@@ -0,0 +1,58 @@
+#ifndef __IDO_SERIALIZABLE_MENU_ITEM_H__
+#define __IDO_SERIALIZABLE_MENU_ITEM_H__
+
+#include <glib.h>
+#include <glib-object.h>
+#include <gtk/gtk.h>
+#include <libdbusmenu-glib/menuitem.h>
+#include <libdbusmenu-glib/client.h>
+
+G_BEGIN_DECLS
+
+#define IDO_TYPE_SERIALIZABLE_MENU_ITEM (ido_serializable_menu_item_get_type ())
+#define IDO_SERIALIZABLE_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IDO_TYPE_SERIALIZABLE_MENU_ITEM, IdoSerializableMenuItem))
+#define IDO_SERIALIZABLE_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IDO_TYPE_SERIALIZABLE_MENU_ITEM, IdoSerializableMenuItemClass))
+#define IDO_IS_SERIALIZABLE_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IDO_TYPE_SERIALIZABLE_MENU_ITEM))
+#define IDO_IS_SERIALIZABLE_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IDO_TYPE_SERIALIZABLE_MENU_ITEM))
+#define IDO_SERIALIZABLE_MENU_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IDO_TYPE_SERIALIZABLE_MENU_ITEM, IdoSerializableMenuItemClass))
+
+typedef struct _IdoSerializableMenuItem IdoSerializableMenuItem;
+typedef struct _IdoSerializableMenuItemClass IdoSerializableMenuItemClass;
+typedef struct _IdoSerializableMenuItemPrivate IdoSerializableMenuItemPrivate;
+
+struct _IdoSerializableMenuItemClass {
+ GtkMenuItemClass parent_class;
+
+ /* Subclassable functions */
+ const gchar * (*get_type_string) (void);
+ GHashTable * (*get_default_properties) (void);
+
+ DbusmenuMenuitem * (*get_dbusmenu_menuitem) (IdoSerializableMenuItem * smi);
+
+ /* Signals */
+
+
+
+ /* Empty Space */
+ void (*_ido_serializable_menu_item_reserved1) (void);
+ void (*_ido_serializable_menu_item_reserved2) (void);
+ void (*_ido_serializable_menu_item_reserved3) (void);
+ void (*_ido_serializable_menu_item_reserved4) (void);
+ void (*_ido_serializable_menu_item_reserved5) (void);
+ void (*_ido_serializable_menu_item_reserved6) (void);
+};
+
+struct _IdoSerializableMenuItem {
+ GtkMenuItem parent;
+
+ IdoSerializableMenuItemPrivate * priv;
+};
+
+GType ido_serializable_menu_item_get_type (void);
+
+DbusmenuMenuitem * ido_serializable_menu_item_get_dbusmenu_menuitem (IdoSerializableMenuItem * smi);
+void ido_serializable_menu_item_register_to_client (DbusmenuClient * client, GType item_type);
+
+G_END_DECLS
+
+#endif