--- a/gntmenuitem.c Wed Apr 24 03:33:15 2019 -0400
+++ b/gntmenuitem.c Wed Apr 24 03:44:25 2019 -0400
@@ -24,6 +24,28 @@
+ /* These will be used to determine the position of the submenu */ + /* A GntMenuItem can have a callback associated with it. + * The callback will be activated whenever the user selects it and + * presses enter (or clicks). However, if the GntMenuItem has some + * child, then the callback and callbackdata will be ignored. */ + GntMenuItemCallback callback; @@ -31,7 +53,7 @@
static guint signals[SIGS] = { 0 };
-G_DEFINE_TYPE(GntMenuItem, gnt_menuitem, G_TYPE_OBJECT)
+G_DEFINE_TYPE_WITH_PRIVATE(GntMenuItem, gnt_menuitem, G_TYPE_OBJECT) /******************************************************************************
@@ -41,11 +63,15 @@
gnt_menuitem_destroy(GObject *obj)
GntMenuItem *item = GNT_MENU_ITEM(obj);
- gnt_widget_destroy(GNT_WIDGET(item->submenu));
+ GntMenuItemPrivate *priv = gnt_menuitem_get_instance_private(item); + gnt_widget_destroy(GNT_WIDGET(priv->submenu)); G_OBJECT_CLASS(gnt_menuitem_parent_class)->dispose(obj);
@@ -67,18 +93,22 @@
gnt_menuitem_init(GntMenuItem *item)
+ GntMenuItemPrivate *priv = gnt_menuitem_get_instance_private(item); /******************************************************************************
*****************************************************************************/
-GntMenuItem *gnt_menuitem_new(const char *text)
+gnt_menuitem_new(const gchar *text) GObject *item = g_object_new(GNT_TYPE_MENU_ITEM, NULL);
GntMenuItem *menuitem = GNT_MENU_ITEM(item);
+ GntMenuItemPrivate *priv = gnt_menuitem_get_instance_private(menuitem); - menuitem->text = g_strdup(text);
+ priv->text = g_strdup(text); @@ -87,22 +117,26 @@
gnt_menuitem_set_position(GntMenuItem *item, gint x, gint y)
+ GntMenuItemPrivate *priv = NULL; g_return_if_fail(GNT_IS_MENU_ITEM(item));
+ priv = gnt_menuitem_get_instance_private(item); gnt_menuitem_get_position(GntMenuItem *item, gint *x, gint *y)
+ GntMenuItemPrivate *priv = NULL; g_return_if_fail(GNT_IS_MENU_ITEM(item));
+ priv = gnt_menuitem_get_instance_private(item);
@@ -110,54 +144,101 @@
gnt_menuitem_has_callback(GntMenuItem *item)
+ GntMenuItemPrivate *priv = NULL; g_return_val_if_fail(GNT_IS_MENU_ITEM(item), FALSE);
- return item->callback != NULL;
+ priv = gnt_menuitem_get_instance_private(item); + return priv->callback != NULL; void gnt_menuitem_set_callback(GntMenuItem *item, GntMenuItemCallback callback, gpointer data)
- item->callback = callback;
- item->callbackdata = data;
+ GntMenuItemPrivate *priv = NULL; + g_return_if_fail(GNT_IS_MENU_ITEM(item)); + priv = gnt_menuitem_get_instance_private(item); + priv->callback = callback; + priv->callbackdata = data; void gnt_menuitem_set_submenu(GntMenuItem *item, GntMenu *menu)
- gnt_widget_destroy(GNT_WIDGET(item->submenu));
+ GntMenuItemPrivate *priv = NULL; + g_return_if_fail(GNT_IS_MENU_ITEM(item)); + priv = gnt_menuitem_get_instance_private(item); + gnt_widget_destroy(GNT_WIDGET(priv->submenu)); GntMenu *gnt_menuitem_get_submenu(GntMenuItem *item)
+ GntMenuItemPrivate *priv = NULL; + g_return_val_if_fail(GNT_IS_MENU_ITEM(item), NULL); + priv = gnt_menuitem_get_instance_private(item); -void gnt_menuitem_set_trigger(GntMenuItem *item, char trigger)
+gnt_menuitem_set_trigger(GntMenuItem *item, gchar trigger) - item->priv.trigger = trigger;
+ GntMenuItemPrivate *priv = NULL; + g_return_if_fail(GNT_IS_MENU_ITEM(item)); + priv = gnt_menuitem_get_instance_private(item); + priv->trigger = trigger; -char gnt_menuitem_get_trigger(GntMenuItem *item)
+gnt_menuitem_get_trigger(GntMenuItem *item) - return item->priv.trigger;
+ GntMenuItemPrivate *priv = NULL; + g_return_val_if_fail(GNT_IS_MENU_ITEM(item), 0); + priv = gnt_menuitem_get_instance_private(item); -void gnt_menuitem_set_id(GntMenuItem *item, const char *id)
+gnt_menuitem_set_id(GntMenuItem *item, const gchar *id)
- item->priv.id = g_strdup(id);
+ GntMenuItemPrivate *priv = NULL; + g_return_if_fail(GNT_IS_MENU_ITEM(item)); + priv = gnt_menuitem_get_instance_private(item); + priv->id = g_strdup(id); -const char * gnt_menuitem_get_id(GntMenuItem *item)
+gnt_menuitem_get_id(GntMenuItem *item)
+ GntMenuItemPrivate *priv = NULL; + g_return_val_if_fail(GNT_IS_MENU_ITEM(item), NULL); + priv = gnt_menuitem_get_instance_private(item); gboolean gnt_menuitem_activate(GntMenuItem *item)
+ GntMenuItemPrivate *priv = NULL; + g_return_val_if_fail(GNT_IS_MENU_ITEM(item), FALSE); + priv = gnt_menuitem_get_instance_private(item); g_signal_emit(item, signals[SIG_ACTIVATE], 0);
- item->callback(item, item->callbackdata);
+ priv->callback(item, priv->callbackdata); @@ -166,28 +247,43 @@
gnt_menuitem_set_visible(GntMenuItem *item, gboolean visible)
- item->visible = visible;
+ GntMenuItemPrivate *priv = NULL; + g_return_if_fail(GNT_IS_MENU_ITEM(item)); + priv = gnt_menuitem_get_instance_private(item); + priv->visible = visible; gnt_menuitem_is_visible(GntMenuItem *item)
- g_return_val_if_fail(GNT_IS_MENU_ITEM(item), FALSE);
+ GntMenuItemPrivate *priv = NULL;
+ g_return_val_if_fail(GNT_IS_MENU_ITEM(item), FALSE); + priv = gnt_menuitem_get_instance_private(item); gnt_menuitem_set_text(GntMenuItem *item, const gchar *text)
- item->text = g_strdup(text);
+ GntMenuItemPrivate *priv = NULL; + g_return_if_fail(GNT_IS_MENU_ITEM(item)); + priv = gnt_menuitem_get_instance_private(item); + priv->text = g_strdup(text); gnt_menuitem_get_text(GntMenuItem *item)
+ GntMenuItemPrivate *priv = NULL; g_return_val_if_fail(GNT_IS_MENU_ITEM(item), NULL);
+ priv = gnt_menuitem_get_instance_private(item); --- a/gntmenuitem.h Wed Apr 24 03:33:15 2019 -0400
+++ b/gntmenuitem.h Wed Apr 24 03:44:25 2019 -0400
@@ -33,59 +33,14 @@
-#define GNT_TYPE_MENU_ITEM (gnt_menuitem_get_type())
-#define GNT_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GNT_TYPE_MENU_ITEM, GntMenuItem))
-#define GNT_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GNT_TYPE_MENU_ITEM, GntMenuItemClass))
-#define GNT_IS_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GNT_TYPE_MENU_ITEM))
-#define GNT_IS_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GNT_TYPE_MENU_ITEM))
-#define GNT_MENU_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GNT_TYPE_MENU_ITEM, GntMenuItemClass))
-typedef struct _GntMenuItem GntMenuItem;
-typedef struct _GntMenuItemPriv GntMenuItemPriv;
-typedef struct _GntMenuItemClass GntMenuItemClass;
+typedef struct _GntMenuItem GntMenuItem;
- * Access to any fields is deprecated. See inline comments for replacements.
- /* These will be used to determine the position of the submenu */
+#define GNT_TYPE_MENU_ITEM gnt_menuitem_get_type() typedef void (*GntMenuItemCallback)(GntMenuItem *item, gpointer data);
- * Access to any fields is deprecated. See inline comments for replacements.
- GntMenuItemPriv GNTSEAL(priv);
- /* A GntMenuItem can have a callback associated with it.
- * The callback will be activated whenever the suer selects it and presses enter (or clicks).
- * However, if the GntMenuItem has some child, then the callback and callbackdata will be ignored. */
- gpointer GNTSEAL(callbackdata);
- GntMenuItemCallback GNTSEAL(callback);
- GntMenu *GNTSEAL(submenu);
- gboolean GNTSEAL(visible);
@@ -104,7 +59,7 @@
* Returns: GType for GntMenuItem.
-GType gnt_menuitem_get_type(void);
+G_DECLARE_DERIVABLE_TYPE(GntMenuItem, gnt_menuitem, GNT, MENU_ITEM, GObject) @@ -114,7 +69,7 @@
* Returns: The newly created menuitem.
-GntMenuItem * gnt_menuitem_new(const char *text);
+GntMenuItem *gnt_menuitem_new(const gchar *text); * gnt_menuitem_set_callback:
@@ -154,7 +109,7 @@
* Set a trigger key for the item.
-void gnt_menuitem_set_trigger(GntMenuItem *item, char trigger);
+void gnt_menuitem_set_trigger(GntMenuItem *item, gchar trigger); * gnt_menuitem_get_trigger:
@@ -166,7 +121,7 @@
* Returns: The trigger key for the menuitem.
-char gnt_menuitem_get_trigger(GntMenuItem *item);
+gchar gnt_menuitem_get_trigger(GntMenuItem *item); @@ -177,7 +132,7 @@
-void gnt_menuitem_set_id(GntMenuItem *item, const char *id);
+void gnt_menuitem_set_id(GntMenuItem *item, const gchar *id); @@ -189,7 +144,7 @@
-const char * gnt_menuitem_get_id(GntMenuItem *item);
+const gchar *gnt_menuitem_get_id(GntMenuItem *item);