diff options
author | Ernestas Kulik <ernestask@gnome.org> | 2018-02-01 13:41:39 +0200 |
---|---|---|
committer | Ernestas Kulik <ernestask@gnome.org> | 2018-02-09 06:32:38 +0200 |
commit | 7e2605c681d065e6b0a3d779c30b892932597991 (patch) | |
tree | 44bccc88603a7cc530a80de6349df69d3413a148 /libnautilus-extension/nautilus-menu-item.c | |
parent | 2128efccae664ba12a870deb1720a08e58954dd2 (diff) | |
download | nautilus-7e2605c681d065e6b0a3d779c30b892932597991.tar.gz |
general: refactor extension library
The changes include:
* adding a single-include header and deprecating
nautilus-extension-types.h and direct inclusions of individual
headers;
* type definition simplifications - this causes some breakages in
nautilus-file, because NautilusFile used to be typedefed to
NautilusFileInfo, and that is no longer possible, so the interface
implementation was moved to static functions and the public
NautilusFile API provides thin wrappers for them to maintain
compatibility;
* documentation cleanups and reorganization;
* general build rule and code cleanups: mostly g_auto* sprinkled
around and style changes (sorry)
Diffstat (limited to 'libnautilus-extension/nautilus-menu-item.c')
-rw-r--r-- | libnautilus-extension/nautilus-menu-item.c | 143 |
1 files changed, 61 insertions, 82 deletions
diff --git a/libnautilus-extension/nautilus-menu-item.c b/libnautilus-extension/nautilus-menu-item.c index 068188a6b..85c8b8a72 100644 --- a/libnautilus-extension/nautilus-menu-item.c +++ b/libnautilus-extension/nautilus-menu-item.c @@ -25,6 +25,19 @@ #include <glib/gi18n-lib.h> #include "nautilus-menu.h" +typedef struct +{ + char *name; + char *label; + char *tip; + char *icon; + NautilusMenu *menu; + gboolean sensitive; + gboolean priority; +} NautilusMenuItemPrivate; + +G_DEFINE_TYPE_WITH_PRIVATE (NautilusMenuItem, nautilus_menu_item, G_TYPE_OBJECT) + enum { ACTIVATE, @@ -44,26 +57,12 @@ enum LAST_PROP }; -struct _NautilusMenuItemDetails -{ - char *name; - char *label; - char *tip; - char *icon; - NautilusMenu *menu; - gboolean sensitive; - gboolean priority; -}; - static guint signals[LAST_SIGNAL]; -static GObjectClass *parent_class = NULL; - /** * SECTION:nautilus-menu-item * @title: NautilusMenuItem * @short_description: Menu item descriptor object - * @include: libnautilus-extension/nautilus-menu-item.h * * #NautilusMenuItem is an object that describes an item in a file manager * menu. Extensions can provide #NautilusMenuItem objects by registering a @@ -113,9 +112,11 @@ nautilus_menu_item_new (const char *name, * emits the activate signal. */ void -nautilus_menu_item_activate (NautilusMenuItem *item) +nautilus_menu_item_activate (NautilusMenuItem *self) { - g_signal_emit (item, signals[ACTIVATE], 0); + g_return_if_fail (NAUTILUS_IS_MENU_ITEM (self)); + + g_signal_emit (self, signals[ACTIVATE], 0); } /** @@ -126,10 +127,12 @@ nautilus_menu_item_activate (NautilusMenuItem *item) * Attachs a menu to the given #NautilusMenuItem. */ void -nautilus_menu_item_set_submenu (NautilusMenuItem *item, +nautilus_menu_item_set_submenu (NautilusMenuItem *self, NautilusMenu *menu) { - g_object_set (item, "menu", menu, NULL); + g_return_if_fail (NAUTILUS_IS_MENU_ITEM (self)); + + g_object_set (self, "menu", menu, NULL); } static void @@ -139,50 +142,52 @@ nautilus_menu_item_get_property (GObject *object, GParamSpec *pspec) { NautilusMenuItem *item; + NautilusMenuItemPrivate *priv; item = NAUTILUS_MENU_ITEM (object); + priv = nautilus_menu_item_get_instance_private (item); switch (param_id) { case PROP_NAME: { - g_value_set_string (value, item->details->name); + g_value_set_string (value, priv->name); } break; case PROP_LABEL: { - g_value_set_string (value, item->details->label); + g_value_set_string (value, priv->label); } break; case PROP_TIP: { - g_value_set_string (value, item->details->tip); + g_value_set_string (value, priv->tip); } break; case PROP_ICON: { - g_value_set_string (value, item->details->icon); + g_value_set_string (value, priv->icon); } break; case PROP_SENSITIVE: { - g_value_set_boolean (value, item->details->sensitive); + g_value_set_boolean (value, priv->sensitive); } break; case PROP_PRIORITY: { - g_value_set_boolean (value, item->details->priority); + g_value_set_boolean (value, priv->priority); } break; case PROP_MENU: { - g_value_set_object (value, item->details->menu); + g_value_set_object (value, priv->menu); } break; @@ -201,64 +206,66 @@ nautilus_menu_item_set_property (GObject *object, GParamSpec *pspec) { NautilusMenuItem *item; + NautilusMenuItemPrivate *priv; item = NAUTILUS_MENU_ITEM (object); + priv = nautilus_menu_item_get_instance_private (item); switch (param_id) { case PROP_NAME: { - g_free (item->details->name); - item->details->name = g_strdup (g_value_get_string (value)); + g_free (priv->name); + priv->name = g_strdup (g_value_get_string (value)); g_object_notify (object, "name"); } break; case PROP_LABEL: { - g_free (item->details->label); - item->details->label = g_strdup (g_value_get_string (value)); + g_free (priv->label); + priv->label = g_strdup (g_value_get_string (value)); g_object_notify (object, "label"); } break; case PROP_TIP: { - g_free (item->details->tip); - item->details->tip = g_strdup (g_value_get_string (value)); + g_free (priv->tip); + priv->tip = g_strdup (g_value_get_string (value)); g_object_notify (object, "tip"); } break; case PROP_ICON: { - g_free (item->details->icon); - item->details->icon = g_strdup (g_value_get_string (value)); + g_free (priv->icon); + priv->icon = g_strdup (g_value_get_string (value)); g_object_notify (object, "icon"); } break; case PROP_SENSITIVE: { - item->details->sensitive = g_value_get_boolean (value); + priv->sensitive = g_value_get_boolean (value); g_object_notify (object, "sensitive"); } break; case PROP_PRIORITY: { - item->details->priority = g_value_get_boolean (value); + priv->priority = g_value_get_boolean (value); g_object_notify (object, "priority"); } break; case PROP_MENU: { - if (item->details->menu) + if (priv->menu) { - g_object_unref (item->details->menu); + g_object_unref (priv->menu); } - item->details->menu = g_object_ref (g_value_get_object (value)); + priv->menu = g_object_ref (g_value_get_object (value)); g_object_notify (object, "menu"); } break; @@ -275,36 +282,37 @@ static void nautilus_menu_item_finalize (GObject *object) { NautilusMenuItem *item; + NautilusMenuItemPrivate *priv; item = NAUTILUS_MENU_ITEM (object); + priv = nautilus_menu_item_get_instance_private (item); - g_free (item->details->name); - g_free (item->details->label); - g_free (item->details->tip); - g_free (item->details->icon); - if (item->details->menu) + g_free (priv->name); + g_free (priv->label); + g_free (priv->tip); + g_free (priv->icon); + if (priv->menu) { - g_object_unref (item->details->menu); + g_object_unref (priv->menu); } - g_free (item->details); - - G_OBJECT_CLASS (parent_class)->finalize (object); + G_OBJECT_CLASS (nautilus_menu_item_parent_class)->finalize (object); } static void -nautilus_menu_item_instance_init (NautilusMenuItem *item) +nautilus_menu_item_init (NautilusMenuItem *self) { - item->details = g_new0 (NautilusMenuItemDetails, 1); - item->details->sensitive = TRUE; - item->details->menu = NULL; + NautilusMenuItemPrivate *priv; + + priv = nautilus_menu_item_get_instance_private (self); + + priv->sensitive = TRUE; + priv->menu = NULL; } static void nautilus_menu_item_class_init (NautilusMenuItemClass *class) { - parent_class = g_type_class_peek_parent (class); - G_OBJECT_CLASS (class)->finalize = nautilus_menu_item_finalize; G_OBJECT_CLASS (class)->get_property = nautilus_menu_item_get_property; G_OBJECT_CLASS (class)->set_property = nautilus_menu_item_set_property; @@ -370,32 +378,3 @@ nautilus_menu_item_class_init (NautilusMenuItemClass *class) NAUTILUS_TYPE_MENU, G_PARAM_READWRITE)); } - -GType -nautilus_menu_item_get_type (void) -{ - static GType type = 0; - - if (!type) - { - const GTypeInfo info = - { - sizeof (NautilusMenuItemClass), - NULL, - NULL, - (GClassInitFunc) nautilus_menu_item_class_init, - NULL, - NULL, - sizeof (NautilusMenuItem), - 0, - (GInstanceInitFunc) nautilus_menu_item_instance_init - }; - - type = g_type_register_static - (G_TYPE_OBJECT, - "NautilusMenuItem", - &info, 0); - } - - return type; -} |