[gimp] app: Add gimp_dockbook_add_from_dialog_factory()
- From: Martin Nordholts <martinn src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: Add gimp_dockbook_add_from_dialog_factory()
- Date: Sun, 3 Jul 2011 19:21:43 +0000 (UTC)
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]