app: Add "dock-factory" property to GimpImageWindow

With the introduction of a single-window mode, not only dock windows
needs to be able to create docks, the image window also needs to. So
give it a "dock-factory" property.
This commit is contained in:
Martin Nordholts 2009-12-08 19:49:13 +01:00
parent a736b8f972
commit f3235e6f45
6 changed files with 44 additions and 8 deletions

View File

@ -384,7 +384,8 @@ gimp_display_new (Gimp *gimp,
gdouble scale,
GimpMenuFactory *menu_factory,
GimpUIManager *popup_manager,
GimpDialogFactory *display_factory)
GimpDialogFactory *display_factory,
GimpDialogFactory *dock_factory)
{
GimpDisplay *display;
GimpDisplayPrivate *private;
@ -434,7 +435,8 @@ gimp_display_new (Gimp *gimp,
window = gimp_image_window_new (gimp,
display->image,
menu_factory,
display_factory);
display_factory,
dock_factory);
}
/* create the shell for the image */

View File

@ -56,7 +56,8 @@ GimpDisplay * gimp_display_new (Gimp *gimp,
gdouble scale,
GimpMenuFactory *menu_factory,
GimpUIManager *popup_manager,
GimpDialogFactory *display_factory);
GimpDialogFactory *display_factory,
GimpDialogFactory *dock_factory);
void gimp_display_delete (GimpDisplay *display);
void gimp_display_close (GimpDisplay *display);

View File

@ -62,7 +62,8 @@ enum
PROP_0,
PROP_GIMP,
PROP_MENU_FACTORY,
PROP_DISPLAY_FACTORY
PROP_DISPLAY_FACTORY,
PROP_DOCK_FACTORY
};
@ -73,6 +74,7 @@ struct _GimpImageWindowPrivate
Gimp *gimp;
GimpUIManager *menubar_manager;
GimpDialogFactory *display_factory;
GimpDialogFactory *dock_factory;
GList *shells;
GimpDisplayShell *active_shell;
@ -208,6 +210,13 @@ gimp_image_window_class_init (GimpImageWindowClass *klass)
GIMP_PARAM_READWRITE |
G_PARAM_CONSTRUCT_ONLY));
g_object_class_install_property (object_class, PROP_DOCK_FACTORY,
g_param_spec_object ("dock-factory",
NULL, NULL,
GIMP_TYPE_DIALOG_FACTORY,
GIMP_PARAM_READWRITE |
G_PARAM_CONSTRUCT_ONLY));
g_type_class_add_private (klass, sizeof (GimpImageWindowPrivate));
gtk_rc_parse_string (image_window_rc_style);
@ -379,6 +388,9 @@ gimp_image_window_set_property (GObject *object,
case PROP_DISPLAY_FACTORY:
private->display_factory = g_value_get_object (value);
break;
case PROP_DOCK_FACTORY:
private->dock_factory = g_value_get_object (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@ -403,6 +415,9 @@ gimp_image_window_get_property (GObject *object,
case PROP_DISPLAY_FACTORY:
g_value_set_object (value, private->display_factory);
break;
case PROP_DOCK_FACTORY:
g_value_set_object (value, private->dock_factory);
break;
case PROP_MENU_FACTORY:
default:
@ -595,7 +610,8 @@ GimpImageWindow *
gimp_image_window_new (Gimp *gimp,
GimpImage *image,
GimpMenuFactory *menu_factory,
GimpDialogFactory *display_factory)
GimpDialogFactory *display_factory,
GimpDialogFactory *dock_factory)
{
GimpImageWindow *window;
@ -608,6 +624,7 @@ gimp_image_window_new (Gimp *gimp,
"gimp", gimp,
"menu-factory", menu_factory,
"display-factory", display_factory,
"dock-factory", dock_factory,
/* The window position will be overridden by the
* dialog factory, it is only really used on first
* startup.
@ -648,6 +665,18 @@ gimp_image_window_get_ui_manager (GimpImageWindow *window)
return private->menubar_manager;
}
GimpDialogFactory*
gimp_image_window_get_dock_factory (GimpImageWindow *window)
{
GimpImageWindowPrivate *private;
g_return_val_if_fail (GIMP_IS_IMAGE_WINDOW (window), FALSE);
private = GIMP_IMAGE_WINDOW_GET_PRIVATE (window);
return private->dock_factory;
}
GimpDockColumns *
gimp_image_window_get_left_docks (GimpImageWindow *window)
{

View File

@ -48,10 +48,12 @@ GType gimp_image_window_get_type (void) G_GNUC_CONST;
GimpImageWindow * gimp_image_window_new (Gimp *gimp,
GimpImage *image,
GimpMenuFactory *menu_factory,
GimpDialogFactory *display_factory);
GimpDialogFactory *display_factory,
GimpDialogFactory *dock_factory);
void gimp_image_window_destroy (GimpImageWindow *window);
GimpUIManager * gimp_image_window_get_ui_manager (GimpImageWindow *window);
GimpDialogFactory* gimp_image_window_get_dock_factory (GimpImageWindow *window);
GimpDockColumns * gimp_image_window_get_left_docks (GimpImageWindow *window);
GimpDockColumns * gimp_image_window_get_right_docks (GimpImageWindow *window);

View File

@ -311,7 +311,8 @@ gimp_ui_configurer_separate_shells (GimpUIConfigurer *ui_configurer,
new_image_window = gimp_image_window_new (ui_configurer->p->gimp,
NULL,
global_menu_factory,
global_display_factory);
global_display_factory,
global_dock_factory);
/* Move the shell there */
shell = gimp_image_window_get_shell (source_image_window, 1);

View File

@ -351,7 +351,8 @@ gui_display_create (Gimp *gimp,
display = gimp_display_new (gimp, image, unit, scale,
global_menu_factory,
image_managers->data,
global_display_factory);
global_display_factory,
global_dock_factory);
}
if (gimp_context_get_display (context) == display)