[gimp] app: Add gimp_dockbook_add_from_dialog_factory()



commit 91b7043aef42d5bdca53fc6f377bca963017d2c5
Author: Martin Nordholts <martinn src gnome org>
Date:   Sun Jul 3 16:36:38 2011 +0200

    app: Add gimp_dockbook_add_from_dialog_factory()

 app/actions/dockable-commands.c |   31 ++-----------------------
 app/widgets/gimpdockbook.c      |   46 +++++++++++++++++++++++++++++++++++++++
 app/widgets/gimpdockbook.h      |    3 ++
 3 files changed, 52 insertions(+), 28 deletions(-)
---
diff --git a/app/actions/dockable-commands.c b/app/actions/dockable-commands.c
index 8623849..6fcb72d 100644
--- a/app/actions/dockable-commands.c
+++ b/app/actions/dockable-commands.c
@@ -49,34 +49,9 @@ dockable_add_tab_cmd_callback (GtkAction   *action,
 {
   GimpDockbook *dockbook = GIMP_DOCKBOOK (data);
 
-  if (value)
-    {
-      GtkWidget *dockable;
-      GimpDock  *dock;
-      gchar     *identifier;
-      gchar     *p;
-
-      identifier = g_strdup (value);
-
-      p = strchr (identifier, '|');
-
-      if (p)
-        *p = '\0';
-
-      dock     = gimp_dockbook_get_dock (dockbook);
-      dockable = gimp_dialog_factory_dockable_new (gimp_dock_get_dialog_factory (dock),
-                                                   dock,
-                                                   identifier, -1);
-
-      g_free (identifier);
-
-      /*  Maybe gimp_dialog_factory_dockable_new() returned an already
-       *  existing singleton dockable, so check if it already is
-       *  attached to a dockbook.
-       */
-      if (dockable && ! gimp_dockable_get_dockbook (GIMP_DOCKABLE (dockable)))
-        gimp_dockbook_add (dockbook, GIMP_DOCKABLE (dockable), -1);
-    }
+  gimp_dockbook_add_from_dialog_factory (dockbook,
+                                         value /*identifiers*/,
+                                         -1);
 }
 
 void
diff --git a/app/widgets/gimpdockbook.c b/app/widgets/gimpdockbook.c
index fb08c30..bf47c16 100644
--- a/app/widgets/gimpdockbook.c
+++ b/app/widgets/gimpdockbook.c
@@ -31,6 +31,7 @@
 #include "core/gimpcontext.h"
 #include "core/gimpmarshal.h"
 
+#include "gimpdialogfactory.h"
 #include "gimpdnd.h"
 #include "gimpdock.h"
 #include "gimpdockable.h"
@@ -989,6 +990,51 @@ gimp_dockbook_add (GimpDockbook *dockbook,
   g_signal_emit (dockbook, dockbook_signals[DOCKABLE_ADDED], 0, dockable);
 }
 
+/**
+ * gimp_dockbook_add_from_dialog_factory:
+ * @dockbook:    The #DockBook
+ * @identifiers: The dockable identifier(s)
+ * @position:    The insert position
+ *
+ * Add a dockable from the dialog factory associated wth the dockbook.
+ **/
+GtkWidget *
+gimp_dockbook_add_from_dialog_factory (GimpDockbook *dockbook,
+                                       const gchar  *identifiers,
+                                       gint          position)
+{
+  GtkWidget *dockable;
+  GimpDock  *dock;
+  gchar     *identifier;
+  gchar     *p;
+
+  g_return_val_if_fail (GIMP_IS_DOCKBOOK (dockbook), NULL);
+  g_return_val_if_fail (identifiers != NULL, NULL);
+
+  identifier = g_strdup (identifiers);
+
+  p = strchr (identifier, '|');
+
+  if (p)
+    *p = '\0';
+
+  dock     = gimp_dockbook_get_dock (dockbook);
+  dockable = gimp_dialog_factory_dockable_new (gimp_dock_get_dialog_factory (dock),
+                                               dock,
+                                               identifier, -1);
+
+  g_free (identifier);
+
+  /*  Maybe gimp_dialog_factory_dockable_new() returned an already
+   *  existing singleton dockable, so check if it already is
+   *  attached to a dockbook.
+   */
+  if (dockable && ! gimp_dockable_get_dockbook (GIMP_DOCKABLE (dockable)))
+    gimp_dockbook_add (dockbook, GIMP_DOCKABLE (dockable), position);
+
+  return dockable;
+}
+
 void
 gimp_dockbook_remove (GimpDockbook *dockbook,
                       GimpDockable *dockable)
diff --git a/app/widgets/gimpdockbook.h b/app/widgets/gimpdockbook.h
index e3249fe..2af7b40 100644
--- a/app/widgets/gimpdockbook.h
+++ b/app/widgets/gimpdockbook.h
@@ -68,6 +68,9 @@ GimpUIManager * gimp_dockbook_get_ui_manager            (GimpDockbook    *dockbo
 void            gimp_dockbook_add                       (GimpDockbook    *dockbook,
                                                          GimpDockable    *dockable,
                                                          gint             position);
+GtkWidget     * gimp_dockbook_add_from_dialog_factory   (GimpDockbook    *dockbook,
+                                                         const gchar     *identifiers,
+                                                         gint             position);
 void            gimp_dockbook_remove                    (GimpDockbook    *dockbook,
                                                          GimpDockable    *dockable);
 void            gimp_dockbook_update_with_context       (GimpDockbook    *dockbook,



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