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

View File

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

View File

@ -62,7 +62,8 @@ enum
PROP_0, PROP_0,
PROP_GIMP, PROP_GIMP,
PROP_MENU_FACTORY, PROP_MENU_FACTORY,
PROP_DISPLAY_FACTORY PROP_DISPLAY_FACTORY,
PROP_DOCK_FACTORY
}; };
@ -73,6 +74,7 @@ struct _GimpImageWindowPrivate
Gimp *gimp; Gimp *gimp;
GimpUIManager *menubar_manager; GimpUIManager *menubar_manager;
GimpDialogFactory *display_factory; GimpDialogFactory *display_factory;
GimpDialogFactory *dock_factory;
GList *shells; GList *shells;
GimpDisplayShell *active_shell; GimpDisplayShell *active_shell;
@ -208,6 +210,13 @@ gimp_image_window_class_init (GimpImageWindowClass *klass)
GIMP_PARAM_READWRITE | GIMP_PARAM_READWRITE |
G_PARAM_CONSTRUCT_ONLY)); 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)); g_type_class_add_private (klass, sizeof (GimpImageWindowPrivate));
gtk_rc_parse_string (image_window_rc_style); gtk_rc_parse_string (image_window_rc_style);
@ -379,6 +388,9 @@ gimp_image_window_set_property (GObject *object,
case PROP_DISPLAY_FACTORY: case PROP_DISPLAY_FACTORY:
private->display_factory = g_value_get_object (value); private->display_factory = g_value_get_object (value);
break; break;
case PROP_DOCK_FACTORY:
private->dock_factory = g_value_get_object (value);
break;
default: default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); 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: case PROP_DISPLAY_FACTORY:
g_value_set_object (value, private->display_factory); g_value_set_object (value, private->display_factory);
break; break;
case PROP_DOCK_FACTORY:
g_value_set_object (value, private->dock_factory);
break;
case PROP_MENU_FACTORY: case PROP_MENU_FACTORY:
default: default:
@ -595,7 +610,8 @@ GimpImageWindow *
gimp_image_window_new (Gimp *gimp, gimp_image_window_new (Gimp *gimp,
GimpImage *image, GimpImage *image,
GimpMenuFactory *menu_factory, GimpMenuFactory *menu_factory,
GimpDialogFactory *display_factory) GimpDialogFactory *display_factory,
GimpDialogFactory *dock_factory)
{ {
GimpImageWindow *window; GimpImageWindow *window;
@ -608,6 +624,7 @@ gimp_image_window_new (Gimp *gimp,
"gimp", gimp, "gimp", gimp,
"menu-factory", menu_factory, "menu-factory", menu_factory,
"display-factory", display_factory, "display-factory", display_factory,
"dock-factory", dock_factory,
/* The window position will be overridden by the /* The window position will be overridden by the
* dialog factory, it is only really used on first * dialog factory, it is only really used on first
* startup. * startup.
@ -648,6 +665,18 @@ gimp_image_window_get_ui_manager (GimpImageWindow *window)
return private->menubar_manager; 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 * GimpDockColumns *
gimp_image_window_get_left_docks (GimpImageWindow *window) 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, GimpImageWindow * gimp_image_window_new (Gimp *gimp,
GimpImage *image, GimpImage *image,
GimpMenuFactory *menu_factory, GimpMenuFactory *menu_factory,
GimpDialogFactory *display_factory); GimpDialogFactory *display_factory,
GimpDialogFactory *dock_factory);
void gimp_image_window_destroy (GimpImageWindow *window); void gimp_image_window_destroy (GimpImageWindow *window);
GimpUIManager * gimp_image_window_get_ui_manager (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_left_docks (GimpImageWindow *window);
GimpDockColumns * gimp_image_window_get_right_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, new_image_window = gimp_image_window_new (ui_configurer->p->gimp,
NULL, NULL,
global_menu_factory, global_menu_factory,
global_display_factory); global_display_factory,
global_dock_factory);
/* Move the shell there */ /* Move the shell there */
shell = gimp_image_window_get_shell (source_image_window, 1); 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, display = gimp_display_new (gimp, image, unit, scale,
global_menu_factory, global_menu_factory,
image_managers->data, image_managers->data,
global_display_factory); global_display_factory,
global_dock_factory);
} }
if (gimp_context_get_display (context) == display) if (gimp_context_get_display (context) == display)