[gimp] app: Add GimpMenuFactoryPrivate



commit 482f31cd3fa35e0a704bd70b48c0207cdb3d1d68
Author: Martin Nordholts <martinn src gnome org>
Date:   Sun Dec 6 10:23:05 2009 +0100

    app: Add GimpMenuFactoryPrivate
    
    Add GimpMenuFactoryPrivate. Note that we don't introduce a Gimp-getter
    since the menu factory is globally accesible and we want to have as
    much control as possible in who can get the Gimp instance.

 app/actions/debug-commands.c  |    4 ++--
 app/menus/menus.c             |    1 -
 app/widgets/gimpmenufactory.c |   41 ++++++++++++++++++++++++++++++-----------
 app/widgets/gimpmenufactory.h |   34 ++++++++++++++++------------------
 4 files changed, 48 insertions(+), 32 deletions(-)
---
diff --git a/app/actions/debug-commands.c b/app/actions/debug-commands.c
index 5f1a266..83e4811 100644
--- a/app/actions/debug-commands.c
+++ b/app/actions/debug-commands.c
@@ -120,7 +120,7 @@ debug_dump_menus_cmd_callback (GtkAction *action,
 {
   GList *list;
 
-  for (list = global_menu_factory->registered_menus;
+  for (list = gimp_menu_factory_get_registered_menus (global_menu_factory);
        list;
        list = g_list_next (list))
     {
@@ -161,7 +161,7 @@ debug_dump_managers_cmd_callback (GtkAction *action,
 {
   GList *list;
 
-  for (list = global_menu_factory->registered_menus;
+  for (list = gimp_menu_factory_get_registered_menus (global_menu_factory);
        list;
        list = g_list_next (list))
     {
diff --git a/app/menus/menus.c b/app/menus/menus.c
index a9a522b..12b2767 100644
--- a/app/menus/menus.c
+++ b/app/menus/menus.c
@@ -377,7 +377,6 @@ menus_exit (Gimp *gimp)
 {
   g_return_if_fail (GIMP_IS_GIMP (gimp));
   g_return_if_fail (global_menu_factory != NULL);
-  g_return_if_fail (global_menu_factory->gimp == gimp);
 
   g_object_unref (global_menu_factory);
   global_menu_factory = NULL;
diff --git a/app/widgets/gimpmenufactory.c b/app/widgets/gimpmenufactory.c
index b84f996..bc9acaf 100644
--- a/app/widgets/gimpmenufactory.c
+++ b/app/widgets/gimpmenufactory.c
@@ -35,6 +35,14 @@
 #include "gimpuimanager.h"
 
 
+struct _GimpMenuFactoryPrivate
+{
+  Gimp              *gimp;
+  GimpActionFactory *action_factory;
+  GList             *registered_menus;
+};
+
+
 static void   gimp_menu_factory_finalize (GObject *object);
 
 
@@ -49,13 +57,16 @@ gimp_menu_factory_class_init (GimpMenuFactoryClass *klass)
   GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
   object_class->finalize = gimp_menu_factory_finalize;
+
+  g_type_class_add_private (klass, sizeof (GimpMenuFactoryPrivate));
 }
 
 static void
 gimp_menu_factory_init (GimpMenuFactory *factory)
 {
-  factory->gimp             = NULL;
-  factory->registered_menus = NULL;
+  factory->p = G_TYPE_INSTANCE_GET_PRIVATE (factory,
+                                            GIMP_TYPE_MENU_FACTORY,
+                                            GimpMenuFactoryPrivate);
 }
 
 static void
@@ -64,7 +75,7 @@ gimp_menu_factory_finalize (GObject *object)
   GimpMenuFactory *factory = GIMP_MENU_FACTORY (object);
   GList           *list;
 
-  for (list = factory->registered_menus; list; list = g_list_next (list))
+  for (list = factory->p->registered_menus; list; list = g_list_next (list))
     {
       GimpMenuFactoryEntry *entry = list->data;
       GList                *uis;
@@ -89,8 +100,8 @@ gimp_menu_factory_finalize (GObject *object)
       g_slice_free (GimpMenuFactoryEntry, entry);
     }
 
-  g_list_free (factory->registered_menus);
-  factory->registered_menus = NULL;
+  g_list_free (factory->p->registered_menus);
+  factory->p->registered_menus = NULL;
 
   G_OBJECT_CLASS (parent_class)->finalize (object);
 }
@@ -106,8 +117,8 @@ gimp_menu_factory_new (Gimp              *gimp,
 
   factory = g_object_new (GIMP_TYPE_MENU_FACTORY, NULL);
 
-  factory->gimp           = gimp;
-  factory->action_factory = action_factory;
+  factory->p->gimp           = gimp;
+  factory->p->action_factory = action_factory;
 
   return factory;
 }
@@ -131,7 +142,7 @@ gimp_menu_factory_manager_register (GimpMenuFactory *factory,
 
   entry->identifier = g_strdup (identifier);
 
-  factory->registered_menus = g_list_prepend (factory->registered_menus, entry);
+  factory->p->registered_menus = g_list_prepend (factory->p->registered_menus, entry);
 
   va_start (args, first_group);
 
@@ -172,6 +183,14 @@ gimp_menu_factory_manager_register (GimpMenuFactory *factory,
   va_end (args);
 }
 
+GList *
+gimp_menu_factory_get_registered_menus (GimpMenuFactory *factory)
+{
+  g_return_val_if_fail (GIMP_IS_MENU_FACTORY (factory), NULL);
+
+  return factory->p->registered_menus;
+}
+
 GimpUIManager *
 gimp_menu_factory_manager_new (GimpMenuFactory *factory,
                                const gchar     *identifier,
@@ -183,7 +202,7 @@ gimp_menu_factory_manager_new (GimpMenuFactory *factory,
   g_return_val_if_fail (GIMP_IS_MENU_FACTORY (factory), NULL);
   g_return_val_if_fail (identifier != NULL, NULL);
 
-  for (list = factory->registered_menus; list; list = g_list_next (list))
+  for (list = factory->p->registered_menus; list; list = g_list_next (list))
     {
       GimpMenuFactoryEntry *entry = list->data;
 
@@ -193,7 +212,7 @@ gimp_menu_factory_manager_new (GimpMenuFactory *factory,
           GtkAccelGroup *accel_group;
           GList         *list;
 
-          manager = gimp_ui_manager_new (factory->gimp, entry->identifier);
+          manager = gimp_ui_manager_new (factory->p->gimp, entry->identifier);
           gtk_ui_manager_set_add_tearoffs (GTK_UI_MANAGER (manager),
                                            create_tearoff);
 
@@ -205,7 +224,7 @@ gimp_menu_factory_manager_new (GimpMenuFactory *factory,
               GList           *actions;
               GList           *list2;
 
-              group = gimp_action_factory_group_new (factory->action_factory,
+              group = gimp_action_factory_group_new (factory->p->action_factory,
                                                      (const gchar *) list->data,
                                                      callback_data);
 
diff --git a/app/widgets/gimpmenufactory.h b/app/widgets/gimpmenufactory.h
index ed7c13f..0202b89 100644
--- a/app/widgets/gimpmenufactory.h
+++ b/app/widgets/gimpmenufactory.h
@@ -43,15 +43,14 @@ struct _GimpMenuFactoryEntry
 #define GIMP_MENU_FACTORY_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GIMP_TYPE_MENU_FACTORY, GimpMenuFactoryClass))
 
 
-typedef struct _GimpMenuFactoryClass  GimpMenuFactoryClass;
+typedef struct _GimpMenuFactoryPrivate  GimpMenuFactoryPrivate;
+typedef struct _GimpMenuFactoryClass    GimpMenuFactoryClass;
 
 struct _GimpMenuFactory
 {
-  GimpObject         parent_instance;
+  GimpObject              parent_instance;
 
-  Gimp              *gimp;
-  GimpActionFactory *action_factory;
-  GList             *registered_menus;
+  GimpMenuFactoryPrivate *p;
 };
 
 struct _GimpMenuFactoryClass
@@ -60,20 +59,19 @@ struct _GimpMenuFactoryClass
 };
 
 
-GType             gimp_menu_factory_get_type      (void) G_GNUC_CONST;
+GType             gimp_menu_factory_get_type             (void) G_GNUC_CONST;
+GimpMenuFactory * gimp_menu_factory_new                  (Gimp              *gimp,
+                                                          GimpActionFactory *action_factory);
+void              gimp_menu_factory_manager_register     (GimpMenuFactory   *factory,
+                                                          const gchar       *identifier,
+                                                          const gchar       *first_group,
+                                                          ...)  G_GNUC_NULL_TERMINATED;
+GList           * gimp_menu_factory_get_registered_menus (GimpMenuFactory   *factory);
+GimpUIManager   * gimp_menu_factory_manager_new          (GimpMenuFactory   *factory,
+                                                          const gchar       *identifier,
+                                                          gpointer           callback_data,
+                                                          gboolean           create_tearoff);
 
-GimpMenuFactory * gimp_menu_factory_new           (Gimp              *gimp,
-                                                   GimpActionFactory *action_factory);
-
-void           gimp_menu_factory_manager_register (GimpMenuFactory *factory,
-                                                   const gchar     *identifier,
-                                                   const gchar     *first_group,
-                                                   ...) G_GNUC_NULL_TERMINATED;
-
-GimpUIManager * gimp_menu_factory_manager_new     (GimpMenuFactory *factory,
-                                                   const gchar     *identifier,
-                                                   gpointer         callback_data,
-                                                   gboolean         create_tearoff);
 
 
 #endif  /*  __GIMP_MENU_FACTORY_H__  */



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]