mirror of https://github.com/GNOME/gimp.git
app: Add gimp_dockbook_add_from_dialog_factory()
This commit is contained in:
parent
a410716503
commit
91b7043aef
app
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue