app: Add GimpDockContainer::get_ui_manager()

Add GimpDockContainer::get_ui_manager() and make GimpDockWindow
implement it. Primary client is session restoration code.
This commit is contained in:
Martin Nordholts 2011-05-13 18:56:03 +02:00
parent d15cebe649
commit ab1b50ad4a
9 changed files with 88 additions and 38 deletions

View file

@ -41,6 +41,7 @@
#include "gimpdock.h"
#include "gimpdockbook.h"
#include "gimpdockable.h"
#include "gimpdockcontainer.h"
#include "gimpdockwindow.h"
#include "gimpmenufactory.h"
#include "gimpsessioninfo.h"
@ -456,6 +457,8 @@ gimp_dialog_factory_dialog_new_internal (GimpDialogFactory *factory,
}
else if (strcmp ("gimp-toolbox", entry->identifier) == 0)
{
GimpDockContainer *dock_container;
dock_window = gimp_dialog_factory_dialog_new (factory,
screen,
NULL /*ui_manager*/,
@ -466,7 +469,8 @@ gimp_dialog_factory_dialog_new_internal (GimpDialogFactory *factory,
/* When we get a dock window, we also get a UI
* manager
*/
ui_manager = gimp_dock_window_get_ui_manager (GIMP_DOCK_WINDOW (dock_window));
dock_container = GIMP_DOCK_CONTAINER (dock_window);
ui_manager = gimp_dock_container_get_ui_manager (dock_container);
}
}

View file

@ -37,6 +37,7 @@
#include "gimpdockable.h"
#include "gimpdockbook.h"
#include "gimpdockcolumns.h"
#include "gimpdockcontainer.h"
#include "gimpdockwindow.h"
#include "gimppanedbox.h"
#include "gimpuimanager.h"
@ -564,13 +565,17 @@ gimp_dock_get_ui_manager (GimpDock *dock)
ui_manager = gimp_dock_columns_get_ui_manager (dock_columns);
}
/* Then GimpDockWindow */
/* Then GimpDockContainer */
if (! ui_manager)
{
GimpDockWindow *dock_window = gimp_dock_window_from_dock (dock);
if (dock_window)
ui_manager = gimp_dock_window_get_ui_manager (dock_window);
{
GimpDockContainer *dock_container = GIMP_DOCK_CONTAINER (dock_window);
ui_manager = gimp_dock_container_get_ui_manager (dock_container);
}
}
return ui_manager;

View file

@ -36,6 +36,7 @@
#include "gimpdockable.h"
#include "gimpdockbook.h"
#include "gimpdocked.h"
#include "gimpdockcontainer.h"
#include "gimpdockwindow.h"
#include "gimphelp-ids.h"
#include "gimpmenufactory.h"
@ -1076,7 +1077,8 @@ gimp_dockbook_create_tab_widget (GimpDockbook *dockbook,
/* EEK */
dock_window = gimp_dock_window_from_dock (dockbook->p->dock);
if (dock_window && gimp_dock_window_get_ui_manager (dock_window))
if (dock_window &&
gimp_dock_container_get_ui_manager (GIMP_DOCK_CONTAINER (dock_window)))
{
const gchar *dialog_id;
@ -1085,10 +1087,13 @@ gimp_dockbook_create_tab_widget (GimpDockbook *dockbook,
if (dialog_id)
{
GimpActionGroup *group;
GimpDockContainer *dock_container;
GimpActionGroup *group;
dock_container = GIMP_DOCK_CONTAINER (dock_window);
group = gimp_ui_manager_get_action_group
(gimp_dock_window_get_ui_manager (dock_window), "dialogs");
(gimp_dock_container_get_ui_manager (dock_container), "dialogs");
if (group)
{

View file

@ -79,6 +79,28 @@ gimp_dock_container_get_docks (GimpDockContainer *container)
if (iface->get_docks)
return iface->get_docks (container);
else
return NULL;
return NULL;
}
/**
* gimp_dock_container_get_ui_manager:
* @container: A #GimpDockContainer
*
* Returns: The #GimpUIManager of the #GimpDockContainer
**/
GimpUIManager *
gimp_dock_container_get_ui_manager (GimpDockContainer *container)
{
GimpDockContainerInterface *iface;
g_return_val_if_fail (GIMP_IS_DOCK_CONTAINER (container), NULL);
iface = GIMP_DOCK_CONTAINER_GET_INTERFACE (container);
if (iface->get_ui_manager)
return iface->get_ui_manager (container);
return NULL;
}

View file

@ -35,12 +35,14 @@ struct _GimpDockContainerInterface
GTypeInterface base_iface;
/* virtual functions */
GList * (* get_docks) (GimpDockContainer *container);
GList * (* get_docks) (GimpDockContainer *container);
GimpUIManager * (* get_ui_manager) (GimpDockContainer *container);
};
GType gimp_dock_container_interface_get_type (void) G_GNUC_CONST;
GList * gimp_dock_container_get_docks (GimpDockContainer *container);
GType gimp_dock_container_interface_get_type (void) G_GNUC_CONST;
GList * gimp_dock_container_get_docks (GimpDockContainer *container);
GimpUIManager * gimp_dock_container_get_ui_manager (GimpDockContainer *container);
#endif /* __GIMP_DOCK_CONTAINER_H__ */

View file

@ -130,6 +130,9 @@ static gboolean gimp_dock_window_delete_event (GtkWidget *widg
GdkEventAny *event);
static GList * gimp_dock_window_get_docks (GimpDockContainer
*dock_container);
static GimpUIManager *
gimp_dock_window_get_ui_manager (GimpDockContainer
*dock_container);
static gboolean gimp_dock_window_should_add_to_recent (GimpDockWindow *dock_window);
static void gimp_dock_window_display_changed (GimpDockWindow *dock_window,
@ -264,7 +267,8 @@ gimp_dock_window_init (GimpDockWindow *dock_window)
static void
gimp_dock_window_dock_container_iface_init (GimpDockContainerInterface *iface)
{
iface->get_docks = gimp_dock_window_get_docks;
iface->get_docks = gimp_dock_window_get_docks;
iface->get_ui_manager = gimp_dock_window_get_ui_manager;
}
static void
@ -699,6 +703,18 @@ gimp_dock_window_get_docks (GimpDockContainer *dock_container)
return gimp_dock_columns_get_docks (dock_window->p->dock_columns);
}
static GimpUIManager *
gimp_dock_window_get_ui_manager (GimpDockContainer *dock_container)
{
GimpDockWindow *dock_window;
g_return_val_if_fail (GIMP_IS_DOCK_WINDOW (dock_container), NULL);
dock_window = GIMP_DOCK_WINDOW (dock_container);
return dock_window->p->ui_manager;
}
/**
* gimp_dock_window_should_add_to_recent:
* @dock_window:
@ -1014,14 +1030,6 @@ gimp_dock_window_get_id (GimpDockWindow *dock_window)
return dock_window->p->ID;
}
GimpUIManager *
gimp_dock_window_get_ui_manager (GimpDockWindow *dock_window)
{
g_return_val_if_fail (GIMP_IS_DOCK_WINDOW (dock_window), NULL);
return dock_window->p->ui_manager;
}
GimpContext *
gimp_dock_window_get_context (GimpDockWindow *dock_window)
{

View file

@ -67,7 +67,6 @@ void gimp_dock_window_add_dock (GimpDockWindow *
gint index);
void gimp_dock_window_remove_dock (GimpDockWindow *dock_window,
GimpDock *dock);
GimpUIManager * gimp_dock_window_get_ui_manager (GimpDockWindow *dock_window);
GimpContext * gimp_dock_window_get_context (GimpDockWindow *dock);
GimpDialogFactory * gimp_dock_window_get_dialog_factory (GimpDockWindow *dock);
gboolean gimp_dock_window_get_auto_follow_active (GimpDockWindow *menu_dock);

View file

@ -29,6 +29,7 @@
#include "gimpdialogfactory.h"
#include "gimpdock.h"
#include "gimpdockbook.h"
#include "gimpdockcontainer.h"
#include "gimpdockwindow.h"
#include "gimpsessioninfo.h"
#include "gimpsessioninfo-aux.h"
@ -195,15 +196,16 @@ gimp_session_info_dock_restore (GimpSessionInfoDock *dock_info,
GdkScreen *screen,
GimpDockWindow *dock_window)
{
GtkWidget *dock = NULL;
GList *iter = NULL;
GimpUIManager *ui_manager = NULL;
gint n_books = 0;
GimpDockContainer *dock_container = GIMP_DOCK_CONTAINER (dock_window);
gint n_books = 0;
GtkWidget *dock;
GList *iter;
GimpUIManager *ui_manager;
g_return_val_if_fail (GIMP_IS_DIALOG_FACTORY (factory), NULL);
g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
ui_manager = gimp_dock_window_get_ui_manager (GIMP_DOCK_WINDOW (dock_window));
ui_manager = gimp_dock_container_get_ui_manager (dock_container);
dock = gimp_dialog_factory_dialog_new (factory,
screen,
ui_manager,

View file

@ -41,6 +41,7 @@
#include "gimpdialogfactory.h"
#include "gimpdock.h"
#include "gimpdockcontainer.h"
#include "gimpdockwindow.h"
#include "gimperrordialog.h"
#include "gimpwidgets-utils.h"
@ -1106,9 +1107,10 @@ gimp_dock_with_window_new (GimpDialogFactory *factory,
GdkScreen *screen,
gboolean toolbox)
{
GtkWidget *dock_window = NULL;
GtkWidget *dock = NULL;
GimpUIManager *ui_manager = NULL;
GtkWidget *dock_window;
GimpDockContainer *dock_container;
GtkWidget *dock;
GimpUIManager *ui_manager;
g_return_val_if_fail (GIMP_IS_DIALOG_FACTORY (factory), NULL);
g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
@ -1125,15 +1127,16 @@ gimp_dock_with_window_new (GimpDialogFactory *factory,
-1 /*view_size*/,
FALSE /*present*/);
ui_manager = gimp_dock_window_get_ui_manager (GIMP_DOCK_WINDOW (dock_window));
dock = gimp_dialog_factory_dialog_new (factory,
screen,
ui_manager,
(toolbox ?
"gimp-toolbox" :
"gimp-dock"),
-1 /*view_size*/,
FALSE /*present*/);
dock_container = GIMP_DOCK_CONTAINER (dock_window);
ui_manager = gimp_dock_container_get_ui_manager (dock_container);
dock = gimp_dialog_factory_dialog_new (factory,
screen,
ui_manager,
(toolbox ?
"gimp-toolbox" :
"gimp-dock"),
-1 /*view_size*/,
FALSE /*present*/);
if (dock)
gimp_dock_window_add_dock (GIMP_DOCK_WINDOW (dock_window),