[gimp] app: Use the dialog factory for creating docks



commit 408c22b79e9571f2fa19ba002e8ee66c91409bac
Author: Martin Nordholts <martinn src gnome org>
Date:   Sun Jan 17 00:00:19 2010 +0100

    app: Use the dialog factory for creating docks
    
    Instead of having one dock constructor per dialog factory, put entries
    for the normal dock and the toolbox dock in the dock window
    factory. To do this we also need to merge the dock and normal dialog
    constructors into one function protptype.
    
    This takes us one step closer to be able to merge the
    global_dock_window_factory and the global_toolbox_factory into one.
    
    The long term goal: Support multi-column dock windows with one of the
    docks being the toolbox. In this situation we can't have the toolbox
    dock created by a separate dialog factory, that is too messy.

 app/dialogs/dialogs-constructors.c |   63 +++++++++++++++++++++++++++++++++--
 app/dialogs/dialogs-constructors.h |   60 +++++++++++++++++++++++++++++++++-
 app/dialogs/dialogs.c              |   24 +++++++++++--
 app/widgets/gimpdialogfactory.c    |   47 +++++++++++++++-----------
 app/widgets/gimpdialogfactory.h    |   13 +++----
 app/widgets/gimpsessioninfo-dock.c |   19 ++++++++++-
 6 files changed, 188 insertions(+), 38 deletions(-)
---
diff --git a/app/dialogs/dialogs-constructors.c b/app/dialogs/dialogs-constructors.c
index 2305fc1..d546999 100644
--- a/app/dialogs/dialogs-constructors.c
+++ b/app/dialogs/dialogs-constructors.c
@@ -101,6 +101,7 @@ static void   dialogs_indexed_palette_selected (GimpColormapEditor *editor,
 GtkWidget *
 dialogs_image_new_new (GimpDialogFactory *factory,
                        GimpContext       *context,
+                       GimpUIManager     *ui_manager,
                        gint               view_size)
 {
   return image_new_dialog_new (context);
@@ -109,6 +110,7 @@ dialogs_image_new_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_file_open_new (GimpDialogFactory *factory,
                        GimpContext       *context,
+                       GimpUIManager     *ui_manager,
                        gint               view_size)
 {
   return file_open_dialog_new (context->gimp);
@@ -117,6 +119,7 @@ dialogs_file_open_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_file_open_location_new (GimpDialogFactory *factory,
                                 GimpContext       *context,
+                                GimpUIManager     *ui_manager,
                                 gint               view_size)
 {
   return file_open_location_dialog_new (context->gimp);
@@ -125,6 +128,7 @@ dialogs_file_open_location_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_file_save_new (GimpDialogFactory *factory,
                        GimpContext       *context,
+                       GimpUIManager     *ui_manager,
                        gint               view_size)
 {
   return file_save_dialog_new (context->gimp, FALSE);
@@ -133,6 +137,7 @@ dialogs_file_save_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_file_export_new (GimpDialogFactory *factory,
                          GimpContext       *context,
+                         GimpUIManager     *ui_manager,
                          gint               view_size)
 {
   return file_save_dialog_new (context->gimp, TRUE);
@@ -141,6 +146,7 @@ dialogs_file_export_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_preferences_get (GimpDialogFactory *factory,
                          GimpContext       *context,
+                         GimpUIManager     *ui_manager,
                          gint               view_size)
 {
   return preferences_dialog_create (context->gimp);
@@ -149,6 +155,7 @@ dialogs_preferences_get (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_keyboard_shortcuts_get (GimpDialogFactory *factory,
                                 GimpContext       *context,
+                                GimpUIManager     *ui_manager,
                                 gint               view_size)
 {
   return keyboard_shortcuts_dialog_new (context->gimp);
@@ -157,6 +164,7 @@ dialogs_keyboard_shortcuts_get (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_module_get (GimpDialogFactory *factory,
                     GimpContext       *context,
+                    GimpUIManager     *ui_manager,
                     gint               view_size)
 {
   return module_dialog_new (context->gimp);
@@ -165,6 +173,7 @@ dialogs_module_get (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_palette_import_get (GimpDialogFactory *factory,
                             GimpContext       *context,
+                            GimpUIManager     *ui_manager,
                             gint               view_size)
 {
   return palette_import_dialog_new (context);
@@ -173,6 +182,7 @@ dialogs_palette_import_get (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_tips_get (GimpDialogFactory *factory,
                   GimpContext       *context,
+                  GimpUIManager     *ui_manager,
                   gint               view_size)
 {
   return tips_dialog_create (context->gimp);
@@ -181,6 +191,7 @@ dialogs_tips_get (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_about_get (GimpDialogFactory *factory,
                    GimpContext       *context,
+                   GimpUIManager     *ui_manager,
                    gint               view_size)
 {
   return about_dialog_create (context);
@@ -189,6 +200,7 @@ dialogs_about_get (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_error_get (GimpDialogFactory *factory,
                    GimpContext       *context,
+                   GimpUIManager     *ui_manager,
                    gint               view_size)
 {
   return gimp_error_dialog_new (_("GIMP Message"));
@@ -197,6 +209,7 @@ dialogs_error_get (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_close_all_get (GimpDialogFactory *factory,
                        GimpContext       *context,
+                       GimpUIManager     *ui_manager,
                        gint               view_size)
 {
   return close_all_dialog_new (context->gimp);
@@ -205,6 +218,7 @@ dialogs_close_all_get (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_quit_get (GimpDialogFactory *factory,
                   GimpContext       *context,
+                  GimpUIManager     *ui_manager,
                   gint               view_size)
 {
   return quit_dialog_new (context->gimp);
@@ -218,7 +232,8 @@ dialogs_quit_get (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_toolbox_new (GimpDialogFactory *factory,
                      GimpContext       *context,
-                     GimpUIManager     *ui_manager)
+                     GimpUIManager     *ui_manager,
+                     gint               view_size)
 {
   /*  we pass "global_dock_window_factory", _not_
    *  "global_toolbox_factory" to the toolbox constructor, because the
@@ -232,6 +247,7 @@ dialogs_toolbox_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_toolbox_dock_window_new (GimpDialogFactory *factory,
                                  GimpContext       *context,
+                                 GimpUIManager     *ui_manager,
                                  gint               view_size)
 {
   return gimp_dock_window_new ("gimp-toolbox",
@@ -244,7 +260,8 @@ dialogs_toolbox_dock_window_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_dock_new (GimpDialogFactory *factory,
                   GimpContext       *context,
-                  GimpUIManager     *ui_manager)
+                  GimpUIManager     *ui_manager,
+                  gint               view_size)
 {
   return gimp_menu_dock_new ();
 }
@@ -252,6 +269,7 @@ dialogs_dock_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_dock_window_new (GimpDialogFactory *factory,
                          GimpContext       *context,
+                         GimpUIManager     *ui_manager,
                          gint               view_size)
 {
   return gimp_dock_window_new ("gimp-dock",
@@ -271,6 +289,7 @@ dialogs_dock_window_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_tool_options_new (GimpDialogFactory *factory,
                           GimpContext       *context,
+                          GimpUIManager     *ui_manager,
                           gint               view_size)
 {
   return gimp_tool_options_editor_new (context->gimp,
@@ -280,6 +299,7 @@ dialogs_tool_options_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_device_status_new (GimpDialogFactory *factory,
                            GimpContext       *context,
+                           GimpUIManager     *ui_manager,
                            gint               view_size)
 {
   return gimp_device_status_new (context->gimp);
@@ -288,6 +308,7 @@ dialogs_device_status_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_error_console_new (GimpDialogFactory *factory,
                            GimpContext       *context,
+                           GimpUIManager     *ui_manager,
                            gint               view_size)
 {
   return gimp_error_console_new (context->gimp,
@@ -297,6 +318,7 @@ dialogs_error_console_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_cursor_view_new (GimpDialogFactory *factory,
                          GimpContext       *context,
+                         GimpUIManager     *ui_manager,
                          gint               view_size)
 {
   return gimp_cursor_view_new (gimp_dialog_factory_get_menu_factory (factory));
@@ -308,6 +330,7 @@ dialogs_cursor_view_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_image_list_view_new (GimpDialogFactory *factory,
                              GimpContext       *context,
+                             GimpUIManager     *ui_manager,
                              gint               view_size)
 {
   return gimp_image_view_new (GIMP_VIEW_TYPE_LIST,
@@ -320,6 +343,7 @@ dialogs_image_list_view_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_brush_list_view_new (GimpDialogFactory *factory,
                              GimpContext       *context,
+                             GimpUIManager     *ui_manager,
                              gint               view_size)
 {
   return gimp_brush_factory_view_new (GIMP_VIEW_TYPE_LIST,
@@ -333,6 +357,7 @@ dialogs_brush_list_view_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_dynamics_list_view_new (GimpDialogFactory *factory,
                                 GimpContext       *context,
+                                GimpUIManager     *ui_manager,
                                 gint               view_size)
 {
   return gimp_dynamics_factory_view_new (GIMP_VIEW_TYPE_LIST,
@@ -345,6 +370,7 @@ dialogs_dynamics_list_view_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_pattern_list_view_new (GimpDialogFactory *factory,
                                GimpContext       *context,
+                               GimpUIManager     *ui_manager,
                                gint               view_size)
 {
   return gimp_pattern_factory_view_new (GIMP_VIEW_TYPE_LIST,
@@ -357,6 +383,7 @@ dialogs_pattern_list_view_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_gradient_list_view_new (GimpDialogFactory *factory,
                                 GimpContext       *context,
+                                GimpUIManager     *ui_manager,
                                 gint               view_size)
 {
   return gimp_data_factory_view_new (GIMP_VIEW_TYPE_LIST,
@@ -371,6 +398,7 @@ dialogs_gradient_list_view_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_palette_list_view_new (GimpDialogFactory *factory,
                                GimpContext       *context,
+                               GimpUIManager     *ui_manager,
                                gint               view_size)
 {
   return gimp_data_factory_view_new (GIMP_VIEW_TYPE_LIST,
@@ -385,6 +413,7 @@ dialogs_palette_list_view_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_font_list_view_new (GimpDialogFactory *factory,
                             GimpContext       *context,
+                            GimpUIManager     *ui_manager,
                             gint               view_size)
 {
   return gimp_font_view_new (GIMP_VIEW_TYPE_LIST,
@@ -397,6 +426,7 @@ dialogs_font_list_view_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_buffer_list_view_new (GimpDialogFactory *factory,
                               GimpContext       *context,
+                              GimpUIManager     *ui_manager,
                               gint               view_size)
 {
   return gimp_buffer_view_new (GIMP_VIEW_TYPE_LIST,
@@ -409,6 +439,7 @@ dialogs_buffer_list_view_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_document_list_view_new (GimpDialogFactory *factory,
                                 GimpContext       *context,
+                                GimpUIManager     *ui_manager,
                                 gint               view_size)
 {
   return gimp_document_view_new (GIMP_VIEW_TYPE_LIST,
@@ -421,6 +452,7 @@ dialogs_document_list_view_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_template_list_view_new (GimpDialogFactory *factory,
                                 GimpContext       *context,
+                                GimpUIManager     *ui_manager,
                                 gint               view_size)
 {
   return gimp_template_view_new (GIMP_VIEW_TYPE_LIST,
@@ -436,6 +468,7 @@ dialogs_template_list_view_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_image_grid_view_new (GimpDialogFactory *factory,
                              GimpContext       *context,
+                             GimpUIManager     *ui_manager,
                              gint               view_size)
 {
   return gimp_image_view_new (GIMP_VIEW_TYPE_GRID,
@@ -448,6 +481,7 @@ dialogs_image_grid_view_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_brush_grid_view_new (GimpDialogFactory *factory,
                              GimpContext       *context,
+                             GimpUIManager     *ui_manager,
                              gint               view_size)
 {
   return gimp_brush_factory_view_new (GIMP_VIEW_TYPE_GRID,
@@ -461,6 +495,7 @@ dialogs_brush_grid_view_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_pattern_grid_view_new (GimpDialogFactory *factory,
                                GimpContext       *context,
+                               GimpUIManager     *ui_manager,
                                gint               view_size)
 {
   return gimp_pattern_factory_view_new (GIMP_VIEW_TYPE_GRID,
@@ -473,6 +508,7 @@ dialogs_pattern_grid_view_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_gradient_grid_view_new (GimpDialogFactory *factory,
                                 GimpContext       *context,
+                                GimpUIManager     *ui_manager,
                                 gint               view_size)
 {
   return gimp_data_factory_view_new (GIMP_VIEW_TYPE_GRID,
@@ -487,6 +523,7 @@ dialogs_gradient_grid_view_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_palette_grid_view_new (GimpDialogFactory *factory,
                                GimpContext       *context,
+                               GimpUIManager     *ui_manager,
                                gint               view_size)
 {
   return gimp_data_factory_view_new (GIMP_VIEW_TYPE_GRID,
@@ -501,6 +538,7 @@ dialogs_palette_grid_view_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_font_grid_view_new (GimpDialogFactory *factory,
                             GimpContext       *context,
+                            GimpUIManager     *ui_manager,
                             gint               view_size)
 {
   return gimp_font_view_new (GIMP_VIEW_TYPE_GRID,
@@ -513,6 +551,7 @@ dialogs_font_grid_view_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_buffer_grid_view_new (GimpDialogFactory *factory,
                               GimpContext       *context,
+                              GimpUIManager     *ui_manager,
                               gint               view_size)
 {
   return gimp_buffer_view_new (GIMP_VIEW_TYPE_GRID,
@@ -525,6 +564,7 @@ dialogs_buffer_grid_view_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_document_grid_view_new (GimpDialogFactory *factory,
                                 GimpContext       *context,
+                                GimpUIManager     *ui_manager,
                                 gint               view_size)
 {
   return gimp_document_view_new (GIMP_VIEW_TYPE_GRID,
@@ -537,6 +577,7 @@ dialogs_document_grid_view_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_template_grid_view_new (GimpDialogFactory *factory,
                                 GimpContext       *context,
+                                GimpUIManager     *ui_manager,
                                 gint               view_size)
 {
   return gimp_template_view_new (GIMP_VIEW_TYPE_GRID,
@@ -552,6 +593,7 @@ dialogs_template_grid_view_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_layer_list_view_new (GimpDialogFactory *factory,
                              GimpContext       *context,
+                             GimpUIManager     *ui_manager,
                              gint               view_size)
 {
   if (view_size < 1)
@@ -567,6 +609,7 @@ dialogs_layer_list_view_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_channel_list_view_new (GimpDialogFactory *factory,
                                GimpContext       *context,
+                               GimpUIManager     *ui_manager,
                                gint               view_size)
 {
   if (view_size < 1)
@@ -582,6 +625,7 @@ dialogs_channel_list_view_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_vectors_list_view_new (GimpDialogFactory *factory,
                                GimpContext       *context,
+                               GimpUIManager     *ui_manager,
                                gint               view_size)
 {
   if (view_size < 1)
@@ -597,6 +641,7 @@ dialogs_vectors_list_view_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_colormap_editor_new (GimpDialogFactory *factory,
                              GimpContext       *context,
+                             GimpUIManager     *ui_manager,
                              gint               view_size)
 {
   GtkWidget *view;
@@ -613,6 +658,7 @@ dialogs_colormap_editor_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_histogram_editor_new (GimpDialogFactory *factory,
                               GimpContext       *context,
+                              GimpUIManager     *ui_manager,
                               gint               view_size)
 {
   return gimp_histogram_editor_new ();
@@ -621,6 +667,7 @@ dialogs_histogram_editor_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_selection_editor_new (GimpDialogFactory *factory,
                               GimpContext       *context,
+                              GimpUIManager     *ui_manager,
                               gint               view_size)
 {
   return gimp_selection_editor_new (gimp_dialog_factory_get_menu_factory (factory));
@@ -629,6 +676,7 @@ dialogs_selection_editor_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_undo_editor_new (GimpDialogFactory *factory,
                          GimpContext       *context,
+                         GimpUIManager     *ui_manager,
                          gint               view_size)
 {
   return gimp_undo_editor_new (context->gimp->config,
@@ -638,6 +686,7 @@ dialogs_undo_editor_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_sample_point_editor_new (GimpDialogFactory *factory,
                                  GimpContext       *context,
+                                 GimpUIManager     *ui_manager,
                                  gint               view_size)
 {
   return gimp_sample_point_editor_new (gimp_dialog_factory_get_menu_factory (factory));
@@ -649,6 +698,7 @@ dialogs_sample_point_editor_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_navigation_editor_new (GimpDialogFactory *factory,
                                GimpContext       *context,
+                               GimpUIManager     *ui_manager,
                                gint               view_size)
 {
   return gimp_navigation_editor_new (gimp_dialog_factory_get_menu_factory (factory));
@@ -660,6 +710,7 @@ dialogs_navigation_editor_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_color_editor_new (GimpDialogFactory *factory,
                           GimpContext       *context,
+                          GimpUIManager     *ui_manager,
                           gint               view_size)
 {
   return gimp_color_editor_new (context);
@@ -673,6 +724,7 @@ dialogs_color_editor_new (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_brush_editor_get (GimpDialogFactory *factory,
                           GimpContext       *context,
+                          GimpUIManager     *ui_manager,
                           gint               view_size)
 {
   return gimp_brush_editor_new (context,
@@ -681,8 +733,9 @@ dialogs_brush_editor_get (GimpDialogFactory *factory,
 
 GtkWidget *
 dialogs_dynamics_editor_get (GimpDialogFactory *factory,
-                          GimpContext       *context,
-                          gint               view_size)
+                             GimpContext       *context,
+                             GimpUIManager     *ui_manager,
+                             gint               view_size)
 {
   return gimp_dynamics_editor_new (context,
                                    gimp_dialog_factory_get_menu_factory (factory));
@@ -691,6 +744,7 @@ dialogs_dynamics_editor_get (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_gradient_editor_get (GimpDialogFactory *factory,
                              GimpContext       *context,
+                             GimpUIManager     *ui_manager,
                              gint               view_size)
 {
   return gimp_gradient_editor_new (context,
@@ -700,6 +754,7 @@ dialogs_gradient_editor_get (GimpDialogFactory *factory,
 GtkWidget *
 dialogs_palette_editor_get (GimpDialogFactory *factory,
                             GimpContext       *context,
+                            GimpUIManager     *ui_manager,
                             gint               view_size)
 {
   return gimp_palette_editor_new (context,
diff --git a/app/dialogs/dialogs-constructors.h b/app/dialogs/dialogs-constructors.h
index 1b757a1..570c4ed 100644
--- a/app/dialogs/dialogs-constructors.h
+++ b/app/dialogs/dialogs-constructors.h
@@ -23,45 +23,59 @@
 
 GtkWidget * dialogs_image_new_new          (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_file_open_new          (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_file_open_location_new (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_file_save_new          (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_file_export_new        (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_preferences_get        (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_keyboard_shortcuts_get (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_module_get             (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_palette_import_get     (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_tips_get               (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_about_get              (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_error_get              (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_close_all_get          (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_quit_get               (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 
 
@@ -69,16 +83,20 @@ GtkWidget * dialogs_quit_get               (GimpDialogFactory *factory,
 
 GtkWidget * dialogs_toolbox_new            (GimpDialogFactory *factory,
                                             GimpContext       *context,
-                                            GimpUIManager     *ui_manager);
+                                            GimpUIManager     *ui_manager,
+                                            gint               view_size);
 GtkWidget * dialogs_toolbox_dock_window_new
                                            (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_dock_new               (GimpDialogFactory *factory,
                                             GimpContext       *context,
-                                            GimpUIManager     *ui_manager);
+                                            GimpUIManager     *ui_manager,
+                                            gint               view_size);
 GtkWidget * dialogs_dock_window_new        (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 
 
@@ -86,123 +104,161 @@ GtkWidget * dialogs_dock_window_new        (GimpDialogFactory *factory,
 
 GtkWidget * dialogs_tool_options_new       (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_device_status_new      (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_error_console_new      (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_cursor_view_new        (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 
 GtkWidget * dialogs_image_list_view_new    (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_brush_list_view_new    (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_dynamics_list_view_new (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_pattern_list_view_new  (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_gradient_list_view_new (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_palette_list_view_new  (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_font_list_view_new     (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_buffer_list_view_new   (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_document_list_view_new (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_template_list_view_new (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 
 GtkWidget * dialogs_image_grid_view_new    (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_brush_grid_view_new    (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_pattern_grid_view_new  (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_gradient_grid_view_new (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_palette_grid_view_new  (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_font_grid_view_new     (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_buffer_grid_view_new   (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_document_grid_view_new (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_template_grid_view_new (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 
 GtkWidget * dialogs_layer_list_view_new    (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_channel_list_view_new  (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_vectors_list_view_new  (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_path_list_view_new     (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_colormap_editor_new    (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_histogram_editor_new   (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_selection_editor_new   (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_undo_editor_new        (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_sample_point_editor_new(GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 
 GtkWidget * dialogs_navigation_editor_new  (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 
 GtkWidget * dialogs_color_editor_new       (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 
 GtkWidget * dialogs_brush_editor_get       (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_dynamics_editor_get    (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_gradient_editor_get    (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 GtkWidget * dialogs_palette_editor_get     (GimpDialogFactory *factory,
                                             GimpContext       *context,
+                                            GimpUIManager     *ui_manager,
                                             gint               view_size);
 
 
diff --git a/app/dialogs/dialogs.c b/app/dialogs/dialogs.c
index be21d61..55cdcdc 100644
--- a/app/dialogs/dialogs.c
+++ b/app/dialogs/dialogs.c
@@ -90,6 +90,20 @@ GimpContainer     *global_recent_docks        = NULL;
     TRUE       /* remember_if_open */, \
     TRUE       /* dockable         */}
 
+#define DOCK(id, new_func) \
+  { id         /* identifier       */, \
+    NULL       /* name             */, \
+    NULL       /* blurb            */, \
+    NULL       /* stock_id         */, \
+    NULL       /* help_id          */, \
+    new_func   /* new_func         */, \
+    0          /* view_size        */, \
+    FALSE      /* singleton        */, \
+    FALSE      /* session_managed  */, \
+    FALSE      /* remember_size    */, \
+    FALSE      /* remember_if_open */, \
+    FALSE      /* dockable         */}
+
 #define LISTGRID(id, name, blurb, stock_id, help_id, view_size) \
   { "gimp-"#id"-list"             /* identifier       */,  \
     name                          /* name             */,  \
@@ -196,6 +210,12 @@ static const GimpDialogFactoryEntry toplevel_entries[] =
 
 static const GimpDialogFactoryEntry dock_entries[] =
 {
+  /* docks */
+  DOCK ("gimp-dock",
+        dialogs_dock_new),
+  DOCK ("gimp-toolbox",
+        dialogs_toolbox_new),
+
   /*  singleton dockables  */
   DOCKABLE ("gimp-tool-options",
             N_("Tool Options"), NULL, GIMP_STOCK_TOOL_OPTIONS,
@@ -319,14 +339,12 @@ dialogs_init (Gimp            *gimp,
   global_dialog_factory = gimp_dialog_factory_new ("toplevel",
                                                    gimp_get_user_context (gimp),
                                                    menu_factory,
-                                                   NULL,
                                                    TRUE);
 
   /* Toolbox */
   global_toolbox_factory = gimp_dialog_factory_new ("toolbox",
                                                     gimp_get_user_context (gimp),
                                                     menu_factory,
-                                                    dialogs_toolbox_new,
                                                     TRUE);
   gimp_dialog_factory_set_dock_window_func (global_toolbox_factory,
                                             dialogs_toolbox_dock_window_new);
@@ -335,7 +353,6 @@ dialogs_init (Gimp            *gimp,
   global_dock_window_factory = gimp_dialog_factory_new ("dock",
                                                         gimp_get_user_context (gimp),
                                                         menu_factory,
-                                                        dialogs_dock_new,
                                                         TRUE);
   gimp_dialog_factory_set_dock_window_func (global_dock_window_factory,
                                             dialogs_dock_window_new);
@@ -344,7 +361,6 @@ dialogs_init (Gimp            *gimp,
   global_display_factory = gimp_dialog_factory_new ("display",
                                                     gimp_get_user_context (gimp),
                                                     menu_factory,
-                                                    NULL,
                                                     FALSE);
 
 
diff --git a/app/widgets/gimpdialogfactory.c b/app/widgets/gimpdialogfactory.c
index 83a8381..20d8ef3 100644
--- a/app/widgets/gimpdialogfactory.c
+++ b/app/widgets/gimpdialogfactory.c
@@ -30,6 +30,11 @@
 
 #include "widgets-types.h"
 
+/* FIXME: Remove when the toolbox and dock window factories have been
+ * merged
+ */
+#include "dialogs/dialogs.h"
+
 #include "core/gimpcontext.h"
 #include "core/gimpmarshal.h"
 
@@ -69,7 +74,6 @@ struct _GimpDialogFactoryPrivate
   GList                 *session_infos;
 
   GimpDialogNewFunc      new_dock_window_func;
-  GimpDialogNewDockFunc  new_dock_func;
 
   GList                 *registered_dialogs;
 
@@ -82,6 +86,7 @@ static void        gimp_dialog_factory_finalize             (GObject
 static GtkWidget * gimp_dialog_factory_constructor          (GimpDialogFactory      *factory,
                                                              GimpDialogFactoryEntry *entry,
                                                              GimpContext            *context,
+                                                             GimpUIManager          *ui_manager,
                                                              gint                    view_size);
 static void        gimp_dialog_factory_set_widget_data      (GtkWidget              *dialog,
                                                              GimpDialogFactory      *factory,
@@ -255,7 +260,6 @@ GimpDialogFactory *
 gimp_dialog_factory_new (const gchar           *name,
                          GimpContext           *context,
                          GimpMenuFactory       *menu_factory,
-                         GimpDialogNewDockFunc  new_dock_func,
                          gboolean               toggle_visibility)
 {
   GimpDialogFactory *factory;
@@ -288,7 +292,6 @@ gimp_dialog_factory_new (const gchar           *name,
 
   factory->p->context           = context;
   factory->p->menu_factory      = menu_factory;
-  factory->p->new_dock_func     = new_dock_func;
   factory->p->toggle_visibility = toggle_visibility;
 
   return factory;
@@ -449,6 +452,7 @@ static GtkWidget *
 gimp_dialog_factory_dialog_new_internal (GimpDialogFactory *factory,
                                          GdkScreen         *screen,
                                          GimpContext       *context,
+                                         GimpUIManager     *ui_manager,
                                          const gchar       *identifier,
                                          gint               view_size,
                                          gboolean           return_existing,
@@ -524,14 +528,17 @@ gimp_dialog_factory_dialog_new_internal (GimpDialogFactory *factory,
       if (context)
         dialog = gimp_dialog_factory_constructor (factory, entry,
                                                   context,
+                                                  ui_manager,
                                                   view_size);
       else if (dock)
         dialog = gimp_dialog_factory_constructor (factory, entry,
                                                   gimp_dock_get_context (GIMP_DOCK (dock)),
+                                                  gimp_dock_get_ui_manager (GIMP_DOCK (dock)),
                                                   view_size);
       else
         dialog = gimp_dialog_factory_constructor (factory, entry,
                                                   factory->p->context,
+                                                  ui_manager,
                                                   view_size);
 
       if (dialog)
@@ -650,6 +657,7 @@ gimp_dialog_factory_dialog_new (GimpDialogFactory *factory,
   return gimp_dialog_factory_dialog_new_internal (factory,
                                                   screen,
                                                   factory->p->context,
+                                                  NULL,
                                                   identifier,
                                                   view_size,
                                                   FALSE,
@@ -745,6 +753,7 @@ gimp_dialog_factory_dialog_raise (GimpDialogFactory *factory,
       dialog = gimp_dialog_factory_dialog_new_internal (factory,
                                                         screen,
                                                         NULL,
+                                                        NULL,
                                                         ids[i] ? ids[i] : ids[0],
                                                         view_size,
                                                         TRUE,
@@ -756,6 +765,7 @@ gimp_dialog_factory_dialog_raise (GimpDialogFactory *factory,
       dialog = gimp_dialog_factory_dialog_new_internal (factory,
                                                         screen,
                                                         NULL,
+                                                        NULL,
                                                         identifiers,
                                                         view_size,
                                                         TRUE,
@@ -796,6 +806,7 @@ gimp_dialog_factory_dockable_new (GimpDialogFactory *factory,
   return gimp_dialog_factory_dialog_new_internal (factory,
                                                   gtk_widget_get_screen (GTK_WIDGET (dock)),
                                                   gimp_dock_get_context (dock),
+                                                  gimp_dock_get_ui_manager (dock),
                                                   identifier,
                                                   view_size,
                                                   FALSE,
@@ -820,12 +831,12 @@ gimp_dialog_factory_dock_with_window_new (GimpDialogFactory *factory,
                                           GdkScreen         *screen)
 {
   GtkWidget     *dock_window = NULL;
+  gchar         *dock_id     = NULL;
   GtkWidget     *dock        = NULL;
   GimpUIManager *ui_manager  = NULL;
 
   g_return_val_if_fail (GIMP_IS_DIALOG_FACTORY (factory), NULL);
   g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
-  g_return_val_if_fail (factory->p->new_dock_func != NULL, NULL);
 
   /* Create a dock window to put the dock in. We need to create the
    * dock window before the dock because the dock has a dependnecy to
@@ -835,7 +846,14 @@ gimp_dialog_factory_dock_with_window_new (GimpDialogFactory *factory,
 
   /* Create the dock */
   ui_manager = gimp_dock_window_get_ui_manager (GIMP_DOCK_WINDOW (dock_window));
-  dock = gimp_dialog_factory_dock_new (factory, screen, ui_manager);
+  
+  dock_id = g_strconcat ("gimp-", gimp_object_get_name (factory), NULL);
+  dock    = gimp_dialog_factory_dialog_new (global_dock_window_factory,
+                                            screen,
+                                            "gimp-dock",
+                                            -1 /*view_size*/,
+                                            FALSE /*present*/);
+  g_free (dock_id);
 
   if (dock)
     {
@@ -868,7 +886,7 @@ gimp_dialog_factory_dock_window_new (GimpDialogFactory *factory,
   g_return_val_if_fail (factory->p->new_dock_window_func != NULL, NULL);
 
   /* Create the dock window */
-  dock_window = factory->p->new_dock_window_func (factory, factory->p->context, 0);
+  dock_window = factory->p->new_dock_window_func (factory, factory->p->context, NULL, 0);
   gtk_window_set_screen (GTK_WINDOW (dock_window), screen);
   gimp_dialog_factory_set_widget_data (dock_window, factory, NULL);
   
@@ -880,19 +898,6 @@ gimp_dialog_factory_dock_window_new (GimpDialogFactory *factory,
   return dock_window;
 }
 
-GtkWidget *
-gimp_dialog_factory_dock_new (GimpDialogFactory *factory,
-                              GdkScreen         *screen,
-                              GimpUIManager     *ui_manager)
-{
-  g_return_val_if_fail (GIMP_IS_DIALOG_FACTORY (factory), NULL);
-  g_return_val_if_fail (factory->p->new_dock_func != NULL, NULL);
-  g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
-  g_return_val_if_fail (ui_manager != NULL, NULL);
-
-  return factory->p->new_dock_func (factory, factory->p->context, ui_manager);
-}
-
 void
 gimp_dialog_factory_add_dialog (GimpDialogFactory *factory,
                                 GtkWidget         *dialog)
@@ -1373,14 +1378,16 @@ gimp_dialog_factory_get_has_min_size (GtkWindow *window)
 /*  private functions  */
 
 static GtkWidget *
+
 gimp_dialog_factory_constructor (GimpDialogFactory      *factory,
                                  GimpDialogFactoryEntry *entry,
                                  GimpContext            *context,
+                                 GimpUIManager          *ui_manager,
                                  gint                    view_size)
 {
   GtkWidget *widget;
 
-  widget = entry->new_func (factory, context, view_size);
+  widget = entry->new_func (factory, context, ui_manager, view_size);
 
   /* The entry is for a dockable, so we simply need to put the created
    * widget in a dockable
diff --git a/app/widgets/gimpdialogfactory.h b/app/widgets/gimpdialogfactory.h
index 375deb1..8387a74 100644
--- a/app/widgets/gimpdialogfactory.h
+++ b/app/widgets/gimpdialogfactory.h
@@ -34,12 +34,15 @@ typedef enum
 } GimpDialogVisibilityState;
 
 
+/* In order to support constructors of various types, these functions
+ * takes the union of the set of arguments required for each type of
+ * widget constructor. If this set becomes too big we can consider
+ * passing a struct or use varargs.
+ */ 
 typedef GtkWidget * (* GimpDialogNewFunc)     (GimpDialogFactory      *factory,
                                                GimpContext            *context,
+                                               GimpUIManager          *ui_manager,
                                                gint                    view_size);
-typedef GtkWidget * (* GimpDialogNewDockFunc) (GimpDialogFactory      *factory,
-                                               GimpContext            *context,
-                                               GimpUIManager          *ui_manager);
 
 
 struct _GimpDialogFactoryEntry
@@ -105,7 +108,6 @@ GType               gimp_dialog_factory_get_type             (void) G_GNUC_CONST
 GimpDialogFactory * gimp_dialog_factory_new                  (const gchar             *name,
                                                               GimpContext             *context,
                                                               GimpMenuFactory         *menu_factory,
-                                                              GimpDialogNewDockFunc    new_dock_func,
                                                               gboolean                 toggle_visibility);
 GimpDialogFactory * gimp_dialog_factory_from_name            (const gchar             *name);
 void                gimp_dialog_factory_set_dock_window_func (GimpDialogFactory       *factory,
@@ -151,9 +153,6 @@ GtkWidget *         gimp_dialog_factory_dock_with_window_new (GimpDialogFactory
                                                               GdkScreen               *screen);
 GtkWidget *         gimp_dialog_factory_dock_window_new      (GimpDialogFactory       *factory,
                                                               GdkScreen               *screen);
-GtkWidget *         gimp_dialog_factory_dock_new             (GimpDialogFactory       *factory,
-                                                              GdkScreen               *screen,
-                                                              GimpUIManager           *ui_manager);
 void                gimp_dialog_factory_add_dialog           (GimpDialogFactory       *factory,
                                                               GtkWidget               *dialog);
 void                gimp_dialog_factory_add_foreign          (GimpDialogFactory       *factory,
diff --git a/app/widgets/gimpsessioninfo-dock.c b/app/widgets/gimpsessioninfo-dock.c
index 931bddd..91d4377 100644
--- a/app/widgets/gimpsessioninfo-dock.c
+++ b/app/widgets/gimpsessioninfo-dock.c
@@ -26,6 +26,11 @@
 
 #include "widgets-types.h"
 
+/* FIXME: Remove when the toolbox and dock window factories have been
+ * merged
+ */
+#include "dialogs/dialogs.h"
+
 #include "gimpdialogfactory.h"
 #include "gimpdock.h"
 #include "gimpdockwindow.h"
@@ -206,6 +211,7 @@ gimp_session_info_dock_restore (GimpSessionInfoDock *dock_info,
                                 GdkScreen           *screen,
                                 GimpDockWindow      *dock_window)
 {
+  gchar         *dock_id    = NULL;
   GtkWidget     *dock       = NULL;
   GList         *iter       = NULL;
   GimpUIManager *ui_manager = NULL;
@@ -214,7 +220,18 @@ gimp_session_info_dock_restore (GimpSessionInfoDock *dock_info,
   g_return_if_fail (GDK_IS_SCREEN (screen));
 
   ui_manager = gimp_dock_window_get_ui_manager (GIMP_DOCK_WINDOW (dock_window));
-  dock       = gimp_dialog_factory_dock_new (factory, screen, ui_manager);
+
+  /* Create the dock. Always use the dock window factory for it (but
+   * we want to refactor away that hard-coding eventually) but the
+   * type of dock depends on the factory
+   */
+  dock_id    = g_strconcat ("gimp-", gimp_object_get_name (factory), NULL);
+  dock       = gimp_dialog_factory_dialog_new (global_dock_window_factory /* FIXME */,
+                                               screen,
+                                               dock_id,
+                                               -1 /*view_size*/,
+                                               FALSE /*present*/);
+  g_free (dock_id);
 
   g_return_if_fail (GIMP_IS_DOCK (dock));
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]