app: Introduce gimp_dialog_factory_get_singleton()

Instead of including dialogs/dialogs.h everywhere, introduce
gimp_dialog_factory_get_singleton(). The dialog factory singleton is
still initialized by dialogs.c though.

Right now the assumption is that we never will have another dialog
factory instance around. There were so many problems before when we
had four of them, so let's just keep one of them around.
This commit is contained in:
Martin Nordholts
2010-02-28 23:20:57 +01:00
parent 82c52974e2
commit 11b1300b6f
45 changed files with 133 additions and 158 deletions

View File

@ -33,8 +33,6 @@
#include "widgets/gimpcolormapeditor.h"
#include "widgets/gimpdialogfactory.h"
#include "dialogs/dialogs.h"
#include "actions.h"
#include "colormap-commands.h"
@ -83,7 +81,7 @@ colormap_edit_color_cmd_callback (GtkAction *action,
GIMP_STOCK_COLORMAP,
desc,
GTK_WIDGET (editor),
global_dialog_factory,
gimp_dialog_factory_get_singleton (),
"gimp-colormap-editor-color-dialog",
(const GimpRGB *) &color,
FALSE, FALSE);

View File

@ -41,8 +41,6 @@
#include "widgets/gimppaletteeditor.h"
#include "widgets/gimpcolormapeditor.h"
#include "dialogs/dialogs.h"
#include "actions.h"
#include "context-commands.h"
@ -872,9 +870,9 @@ context_get_palette_editor (void)
{
GimpSessionInfo *info = NULL;
g_return_val_if_fail (GIMP_IS_DIALOG_FACTORY (global_dialog_factory), NULL);
g_return_val_if_fail (GIMP_IS_DIALOG_FACTORY (gimp_dialog_factory_get_singleton ()), NULL);
info = gimp_dialog_factory_find_session_info (global_dialog_factory,
info = gimp_dialog_factory_find_session_info (gimp_dialog_factory_get_singleton (),
"gimp-palette-editor");
if (info && gimp_session_info_get_widget (info))
return GIMP_PALETTE_EDITOR (gtk_bin_get_child (GTK_BIN (gimp_session_info_get_widget (info))));
@ -887,9 +885,9 @@ context_get_colormap_editor (void)
{
GimpSessionInfo *info = NULL;
g_return_val_if_fail (GIMP_IS_DIALOG_FACTORY (global_dialog_factory), NULL);
g_return_val_if_fail (GIMP_IS_DIALOG_FACTORY (gimp_dialog_factory_get_singleton ()), NULL);
info = gimp_dialog_factory_find_session_info (global_dialog_factory,
info = gimp_dialog_factory_find_session_info (gimp_dialog_factory_get_singleton (),
"gimp-indexed-palette");
if (info && gimp_session_info_get_widget (info))
return GIMP_COLORMAP_EDITOR (gtk_bin_get_child (GTK_BIN (gimp_session_info_get_widget (info))));

View File

@ -41,8 +41,6 @@
#include "widgets/gimpmessagebox.h"
#include "widgets/gimpmessagedialog.h"
#include "dialogs/dialogs.h"
#include "actions.h"
#include "data-commands.h"
@ -302,7 +300,7 @@ data_edit_cmd_callback (GtkAction *action,
GdkScreen *screen = gtk_widget_get_screen (GTK_WIDGET (view));
GtkWidget *dockable;
dockable = gimp_dialog_factory_dialog_raise (global_dialog_factory, screen,
dockable = gimp_dialog_factory_dialog_raise (gimp_dialog_factory_get_singleton (), screen,
value, -1);
gimp_data_editor_set_data (GIMP_DATA_EDITOR (gtk_bin_get_child (GTK_BIN (dockable))),

View File

@ -25,8 +25,6 @@
#include "widgets/gimpdialogfactory.h"
#include "dialogs/dialogs.h"
#include "actions.h"
#include "dialogs-commands.h"
@ -42,7 +40,7 @@ dialogs_create_toplevel_cmd_callback (GtkAction *action,
return_if_no_widget (widget, data);
if (value)
gimp_dialog_factory_dialog_new (global_dialog_factory,
gimp_dialog_factory_dialog_new (gimp_dialog_factory_get_singleton (),
gtk_widget_get_screen (widget),
value, -1, TRUE);
}
@ -56,7 +54,7 @@ dialogs_create_dockable_cmd_callback (GtkAction *action,
return_if_no_widget (widget, data);
if (value)
gimp_dialog_factory_dialog_raise (global_dialog_factory,
gimp_dialog_factory_dialog_raise (gimp_dialog_factory_get_singleton (),
gtk_widget_get_screen (widget),
value, -1);
}

View File

@ -34,8 +34,6 @@
#include "widgets/gimpdocked.h"
#include "widgets/gimpsessioninfo.h"
#include "dialogs/dialogs.h"
#include "dockable-commands.h"

View File

@ -49,7 +49,6 @@
#include "display/gimpdisplayshell.h"
#include "display/gimpdisplayshell-transform.h"
#include "dialogs/dialogs.h"
#include "dialogs/fade-dialog.h"
#include "actions.h"
@ -449,7 +448,7 @@ edit_named_paste_cmd_callback (GtkAction *action,
GtkWidget *widget;
return_if_no_widget (widget, data);
gimp_dialog_factory_dialog_raise (global_dialog_factory,
gimp_dialog_factory_dialog_raise (gimp_dialog_factory_get_singleton (),
gtk_widget_get_screen (widget),
"gimp-buffer-list|gimp-buffer-grid", -1);
}

View File

@ -52,7 +52,6 @@
#include "display/gimpdisplay.h"
#include "display/gimpdisplay-foreach.h"
#include "dialogs/dialogs.h"
#include "dialogs/file-save-dialog.h"
#include "actions.h"
@ -142,7 +141,7 @@ file_open_location_cmd_callback (GtkAction *action,
GtkWidget *widget;
return_if_no_widget (widget, data);
gimp_dialog_factory_dialog_new (global_dialog_factory,
gimp_dialog_factory_dialog_new (gimp_dialog_factory_get_singleton (),
gtk_widget_get_screen (widget),
"gimp-file-open-location-dialog", -1, TRUE);
}
@ -450,7 +449,7 @@ file_close_all_cmd_callback (GtkAction *action,
GtkWidget *widget;
return_if_no_widget (widget, data);
gimp_dialog_factory_dialog_raise (global_dialog_factory,
gimp_dialog_factory_dialog_raise (gimp_dialog_factory_get_singleton (),
gtk_widget_get_screen (widget),
"gimp-close-all-dialog", -1);
}
@ -489,7 +488,7 @@ file_open_dialog_show (Gimp *gimp,
{
GtkWidget *dialog;
dialog = gimp_dialog_factory_dialog_new (global_dialog_factory,
dialog = gimp_dialog_factory_dialog_new (gimp_dialog_factory_get_singleton (),
gtk_widget_get_screen (parent),
"gimp-file-open-dialog", -1, FALSE);
@ -531,7 +530,7 @@ file_save_dialog_show (Gimp *gimp,
if (! dialog)
{
dialog = gimp_dialog_factory_dialog_new (global_dialog_factory,
dialog = gimp_dialog_factory_dialog_new (gimp_dialog_factory_get_singleton (),
gtk_widget_get_screen (parent),
"gimp-file-save-dialog",
-1, FALSE);
@ -581,7 +580,7 @@ file_export_dialog_show (Gimp *gimp,
if (! dialog)
{
dialog = gimp_dialog_factory_dialog_new (global_dialog_factory,
dialog = gimp_dialog_factory_dialog_new (gimp_dialog_factory_get_singleton (),
gtk_widget_get_screen (parent),
"gimp-file-export-dialog",
-1, FALSE);

View File

@ -29,13 +29,12 @@
#include "core/gimpgradient.h"
#include "widgets/gimpcolordialog.h"
#include "widgets/gimpdialogfactory.h"
#include "widgets/gimpgradienteditor.h"
#include "widgets/gimphelp-ids.h"
#include "widgets/gimpuimanager.h"
#include "widgets/gimpviewabledialog.h"
#include "dialogs/dialogs.h"
#include "gradient-editor-commands.h"
#include "gimp-intl.h"
@ -86,7 +85,7 @@ gradient_editor_left_color_cmd_callback (GtkAction *action,
GIMP_STOCK_GRADIENT,
_("Gradient Segment's Left Endpoint Color"),
GTK_WIDGET (editor),
global_dialog_factory,
gimp_dialog_factory_get_singleton (),
"gimp-gradient-editor-color-dialog",
&editor->control_sel_l->left_color,
editor->instant_update, TRUE);
@ -237,7 +236,7 @@ gradient_editor_right_color_cmd_callback (GtkAction *action,
GIMP_STOCK_GRADIENT,
_("Gradient Segment's Right Endpoint Color"),
GTK_WIDGET (editor),
global_dialog_factory,
gimp_dialog_factory_get_singleton (),
"gimp-gradient-editor-color-dialog",
&editor->control_sel_l->right_color,
editor->instant_update, TRUE);

View File

@ -50,7 +50,6 @@
#include "display/gimpdisplayshell.h"
#include "dialogs/convert-dialog.h"
#include "dialogs/dialogs.h"
#include "dialogs/grid-dialog.h"
#include "dialogs/image-merge-layers-dialog.h"
#include "dialogs/image-new-dialog.h"
@ -127,7 +126,7 @@ image_new_cmd_callback (GtkAction *action,
GtkWidget *dialog;
return_if_no_widget (widget, data);
dialog = gimp_dialog_factory_dialog_new (global_dialog_factory,
dialog = gimp_dialog_factory_dialog_new (gimp_dialog_factory_get_singleton (),
gtk_widget_get_screen (widget),
"gimp-image-new-dialog", -1, FALSE);

View File

@ -32,8 +32,6 @@
#include "widgets/gimpdialogfactory.h"
#include "widgets/gimppaletteeditor.h"
#include "dialogs/dialogs.h"
#include "palette-editor-commands.h"
#include "gimp-intl.h"
@ -71,7 +69,7 @@ palette_editor_edit_color_cmd_callback (GtkAction *action,
GIMP_STOCK_PALETTE,
_("Edit Color Palette Entry"),
GTK_WIDGET (editor),
global_dialog_factory,
gimp_dialog_factory_get_singleton (),
"gimp-palette-editor-color-dialog",
&editor->color->color,
FALSE, FALSE);

View File

@ -34,8 +34,6 @@
#include "widgets/gimphelp-ids.h"
#include "widgets/gimpview.h"
#include "dialogs/dialogs.h"
#include "actions.h"
#include "palettes-commands.h"
@ -58,7 +56,7 @@ palettes_import_cmd_callback (GtkAction *action,
GtkWidget *widget;
return_if_no_widget (widget, data);
gimp_dialog_factory_dialog_new (global_dialog_factory,
gimp_dialog_factory_dialog_new (gimp_dialog_factory_get_singleton (),
gtk_widget_get_screen (widget),
"gimp-palette-import-dialog", -1, TRUE);
}

View File

@ -38,7 +38,6 @@
#include "display/gimpdisplay.h"
#include "display/gimpdisplayshell.h"
#include "dialogs/dialogs.h"
#include "dialogs/stroke-dialog.h"
#include "actions.h"
@ -319,7 +318,7 @@ select_save_cmd_callback (GtkAction *action,
gimp_selection_save (GIMP_SELECTION (gimp_image_get_mask (image)));
gimp_image_flush (image);
gimp_dialog_factory_dialog_raise (global_dialog_factory,
gimp_dialog_factory_dialog_raise (gimp_dialog_factory_get_singleton (),
gtk_widget_get_screen (widget),
"gimp-channel-list", -1);
}

View File

@ -41,7 +41,6 @@
#include "widgets/gimptemplateeditor.h"
#include "widgets/gimptemplateview.h"
#include "dialogs/dialogs.h"
#include "dialogs/template-options-dialog.h"
#include "actions.h"

View File

@ -50,8 +50,6 @@
#include "widgets/gimpdialogfactory.h"
#include "widgets/gimpuimanager.h"
#include "dialogs/dialogs.h"
#include "actions.h"
#include "view-commands.h"
@ -320,7 +318,7 @@ view_navigation_window_cmd_callback (GtkAction *action,
GimpDisplayShell *shell;
return_if_no_shell (shell, data);
gimp_dialog_factory_dialog_raise (global_dialog_factory,
gimp_dialog_factory_dialog_raise (gimp_dialog_factory_get_singleton (),
gtk_widget_get_screen (GTK_WIDGET (shell)),
"gimp-navigation-view", -1);
}

View File

@ -151,21 +151,21 @@ windows_actions_setup (GimpActionGroup *group)
windows_actions_display_add (group->gimp->displays, display, group);
}
g_signal_connect_object (global_dialog_factory, "dock-window-added",
g_signal_connect_object (gimp_dialog_factory_get_singleton (), "dock-window-added",
G_CALLBACK (windows_actions_dock_window_added),
group, 0);
g_signal_connect_object (global_dialog_factory, "dock-window-removed",
g_signal_connect_object (gimp_dialog_factory_get_singleton (), "dock-window-removed",
G_CALLBACK (windows_actions_dock_window_removed),
group, 0);
for (list = gimp_dialog_factory_get_open_dialogs (global_dialog_factory);
for (list = gimp_dialog_factory_get_open_dialogs (gimp_dialog_factory_get_singleton ());
list;
list = g_list_next (list))
{
GimpDockWindow *dock_window = list->data;
if (GIMP_IS_DOCK_WINDOW (dock_window))
windows_actions_dock_window_added (global_dialog_factory,
windows_actions_dock_window_added (gimp_dialog_factory_get_singleton (),
dock_window,
group);
}

View File

@ -54,7 +54,7 @@ windows_hide_docks_cmd_callback (GtkAction *action,
gpointer data)
{
gboolean active = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action));
GimpDialogsState state = gimp_dialog_factory_get_state (global_dialog_factory);
GimpDialogsState state = gimp_dialog_factory_get_state (gimp_dialog_factory_get_singleton ());
GimpDialogsState new_state = state;
Gimp *gimp = NULL;
return_if_no_gimp (gimp, data);
@ -69,7 +69,7 @@ windows_hide_docks_cmd_callback (GtkAction *action,
new_state = GIMP_DIALOGS_SHOWN;
if (state != new_state)
gimp_dialog_factory_set_state (global_dialog_factory, new_state);
gimp_dialog_factory_set_state (gimp_dialog_factory_get_singleton (), new_state);
g_object_set (gimp->config,
"hide-docks", active,
@ -119,9 +119,9 @@ windows_open_recent_cmd_callback (GtkAction *action,
g_object_ref (info);
gimp_container_remove (global_recent_docks, GIMP_OBJECT (info));
gimp_dialog_factory_add_session_info (global_dialog_factory, info);
gimp_dialog_factory_add_session_info (gimp_dialog_factory_get_singleton (), info);
gimp_session_info_restore (info, global_dialog_factory);
gimp_session_info_restore (info, gimp_dialog_factory_get_singleton ());
gimp_session_info_clear_info (info);
}
@ -132,7 +132,7 @@ windows_show_toolbox (void)
if (! dialogs_get_toolbox ())
{
toolbox = gimp_dock_with_window_new (global_dialog_factory,
toolbox = gimp_dock_with_window_new (gimp_dialog_factory_get_singleton (),
gdk_screen_get_default (),
TRUE /*toolbox*/);

View File

@ -45,7 +45,6 @@
#include "gimp-intl.h"
GimpDialogFactory *global_dialog_factory = NULL;
GimpContainer *global_recent_docks = NULL;
@ -377,17 +376,19 @@ void
dialogs_init (Gimp *gimp,
GimpMenuFactory *menu_factory)
{
gint i;
GimpDialogFactory *factory = NULL;
gint i = 0;
g_return_if_fail (GIMP_IS_GIMP (gimp));
g_return_if_fail (GIMP_IS_MENU_FACTORY (menu_factory));
global_dialog_factory = gimp_dialog_factory_new ("toplevel",
factory = gimp_dialog_factory_new ("toplevel",
gimp_get_user_context (gimp),
menu_factory);
gimp_dialog_factory_set_singleton (factory);
for (i = 0; i < G_N_ELEMENTS (entries); i++)
gimp_dialog_factory_register_entry (global_dialog_factory,
gimp_dialog_factory_register_entry (gimp_dialog_factory_get_singleton (),
entries[i].identifier,
gettext (entries[i].name),
gettext (entries[i].blurb),
@ -410,10 +411,10 @@ dialogs_exit (Gimp *gimp)
{
g_return_if_fail (GIMP_IS_GIMP (gimp));
if (global_dialog_factory)
if (gimp_dialog_factory_get_singleton ())
{
g_object_unref (global_dialog_factory);
global_dialog_factory = NULL;
g_object_unref (gimp_dialog_factory_get_singleton ());
gimp_dialog_factory_set_singleton (NULL);
}
if (global_recent_docks)
@ -433,7 +434,7 @@ dialogs_ensure_factory_entry_on_recent_dock (GimpSessionInfo *info)
/* The recent docks container only contains session infos for
* dock windows
*/
entry = gimp_dialog_factory_find_entry (global_dialog_factory,
entry = gimp_dialog_factory_find_entry (gimp_dialog_factory_get_singleton (),
"gimp-dock-window");
gimp_session_info_set_factory_entry (info, entry);
@ -506,9 +507,9 @@ dialogs_get_toolbox (void)
{
GList *list;
g_return_val_if_fail (GIMP_IS_DIALOG_FACTORY (global_dialog_factory), NULL);
g_return_val_if_fail (GIMP_IS_DIALOG_FACTORY (gimp_dialog_factory_get_singleton ()), NULL);
for (list = gimp_dialog_factory_get_open_dialogs (global_dialog_factory);
for (list = gimp_dialog_factory_get_open_dialogs (gimp_dialog_factory_get_singleton ());
list;
list = g_list_next (list))
{

View File

@ -59,8 +59,6 @@
#include "gui/session.h"
#include "gui/themes.h"
#include "dialogs/dialogs.h"
#include "preferences-dialog.h"
#include "resolution-calibrate-dialog.h"
@ -493,7 +491,7 @@ static void
prefs_input_devices_dialog (GtkWidget *widget,
Gimp *gimp)
{
gimp_dialog_factory_dialog_raise (global_dialog_factory,
gimp_dialog_factory_dialog_raise (gimp_dialog_factory_get_singleton (),
gtk_widget_get_screen (widget),
"gimp-input-devices-dialog", 0);
}
@ -502,7 +500,7 @@ static void
prefs_keyboard_shortcuts_dialog (GtkWidget *widget,
Gimp *gimp)
{
gimp_dialog_factory_dialog_raise (global_dialog_factory,
gimp_dialog_factory_dialog_raise (gimp_dialog_factory_get_singleton (),
gtk_widget_get_screen (widget),
"gimp-keyboard-shortcuts-dialog", 0);
}

View File

@ -31,8 +31,6 @@
#include "widgets/gimpdialogfactory.h"
#include "widgets/gimpsessioninfo.h"
#include "dialogs/dialogs.h"
#include "gimpdisplay.h"
#include "gimpcursorview.h"
#include "gimpdisplayshell.h"
@ -166,7 +164,7 @@ gimp_display_shell_update_cursor (GimpDisplayShell *shell,
gimp_statusbar_update_cursor (statusbar, precision, image_x, image_y);
session_info = gimp_dialog_factory_find_session_info (global_dialog_factory,
session_info = gimp_dialog_factory_find_session_info (gimp_dialog_factory_get_singleton (),
"gimp-cursor-view");
if (session_info && gimp_session_info_get_widget (session_info))
{
@ -203,7 +201,7 @@ gimp_display_shell_clear_cursor (GimpDisplayShell *shell)
gimp_statusbar_clear_cursor (statusbar);
session_info = gimp_dialog_factory_find_session_info (global_dialog_factory,
session_info = gimp_dialog_factory_find_session_info (gimp_dialog_factory_get_singleton (),
"gimp-cursor-view");
if (session_info && gimp_session_info_get_widget (session_info))
{

View File

@ -37,8 +37,6 @@
#include "display/gimpdisplayshell.h"
#include "display/gimpimagewindow.h"
#include "dialogs/dialogs.h"
#include "menus/menus.h"
#include "gimpuiconfigurer.h"
@ -161,7 +159,7 @@ gimp_ui_configurer_move_docks_to_columns (GimpUIConfigurer *ui_configurer,
GList *dialog_iter = NULL;
dialogs =
g_list_copy (gimp_dialog_factory_get_open_dialogs (global_dialog_factory));
g_list_copy (gimp_dialog_factory_get_open_dialogs (gimp_dialog_factory_get_singleton ()));
for (dialog_iter = dialogs; dialog_iter; dialog_iter = dialog_iter->next)
{
@ -203,7 +201,7 @@ gimp_ui_configurer_move_docks_to_columns (GimpUIConfigurer *ui_configurer,
if (GTK_IS_WIDGET (dock_window) &&
g_list_length (gimp_dock_window_get_docks (dock_window)) == 0)
{
gimp_dialog_factory_remove_dialog (global_dialog_factory,
gimp_dialog_factory_remove_dialog (gimp_dialog_factory_get_singleton (),
GTK_WIDGET (dock_window));
gtk_widget_destroy (GTK_WIDGET (dock_window));
}
@ -283,7 +281,7 @@ gimp_ui_configurer_move_docks_to_window (GimpUIConfigurer *ui_configurer,
* toolbox
*/
dock_window =
gimp_dialog_factory_dialog_new (global_dialog_factory,
gimp_dialog_factory_dialog_new (gimp_dialog_factory_get_singleton (),
screen,
(GIMP_IS_TOOLBOX (dock) ?
"gimp-toolbox-window" :
@ -325,7 +323,7 @@ gimp_ui_configurer_separate_shells (GimpUIConfigurer *ui_configurer,
new_image_window = gimp_image_window_new (ui_configurer->p->gimp,
NULL,
global_menu_factory,
global_dialog_factory);
gimp_dialog_factory_get_singleton ());
/* Move the shell there */
shell = gimp_image_window_get_shell (source_image_window, 1);

View File

@ -41,8 +41,6 @@
#include "widgets/gimpsessioninfo.h"
#include "widgets/gimpwidgets-utils.h"
#include "dialogs/dialogs.h"
#include "gui-message.h"
#include "gimp-intl.h"
@ -102,7 +100,7 @@ gui_message_error_console (GimpMessageSeverity severity,
{
GimpSessionInfo *info;
info = gimp_dialog_factory_find_session_info (global_dialog_factory,
info = gimp_dialog_factory_find_session_info (gimp_dialog_factory_get_singleton (),
"gimp-error-console");
if (info && GIMP_IS_DOCKABLE (gimp_session_info_get_widget (info)))
@ -110,7 +108,7 @@ gui_message_error_console (GimpMessageSeverity severity,
}
if (! dockable)
dockable = gimp_dialog_factory_dialog_raise (global_dialog_factory,
dockable = gimp_dialog_factory_dialog_raise (gimp_dialog_factory_get_singleton (),
gdk_screen_get_default (),
"gimp-error-console", -1);
@ -175,7 +173,7 @@ progress_error_dialog (GimpProgress *progress)
static GtkWidget *
global_error_dialog (void)
{
return gimp_dialog_factory_dialog_new (global_dialog_factory,
return gimp_dialog_factory_dialog_new (gimp_dialog_factory_get_singleton (),
gdk_screen_get_default (),
"gimp-error-dialog", -1,
FALSE);

View File

@ -70,8 +70,6 @@
#include "menus/menus.h"
#include "dialogs/dialogs.h"
#include "gui-message.h"
#include "gui-vtable.h"
#include "themes.h"
@ -199,7 +197,7 @@ static void
gui_set_busy (Gimp *gimp)
{
gimp_displays_set_busy (gimp);
gimp_dialog_factory_set_busy (global_dialog_factory);
gimp_dialog_factory_set_busy (gimp_dialog_factory_get_singleton ());
gdk_flush ();
}
@ -208,7 +206,7 @@ static void
gui_unset_busy (Gimp *gimp)
{
gimp_displays_unset_busy (gimp);
gimp_dialog_factory_unset_busy (global_dialog_factory);
gimp_dialog_factory_unset_busy (gimp_dialog_factory_get_singleton ());
gdk_flush ();
}
@ -351,7 +349,7 @@ gui_display_create (Gimp *gimp,
display = gimp_display_new (gimp, image, unit, scale,
global_menu_factory,
image_managers->data,
global_dialog_factory);
gimp_dialog_factory_get_singleton ());
}
if (gimp_context_get_display (context) == display)

View File

@ -560,7 +560,7 @@ gui_exit_callback (Gimp *gimp,
if (! force && gimp_displays_dirty (gimp))
{
gimp_dialog_factory_dialog_raise (global_dialog_factory,
gimp_dialog_factory_dialog_raise (gimp_dialog_factory_get_singleton (),
gdk_screen_get_default (),
"gimp-quit-dialog", -1);
@ -697,7 +697,7 @@ gui_device_change_notify (Gimp *gimp)
{
GimpSessionInfo *session_info;
session_info = gimp_dialog_factory_find_session_info (global_dialog_factory,
session_info = gimp_dialog_factory_find_session_info (gimp_dialog_factory_get_singleton (),
"gimp-device-status");
if (session_info && gimp_session_info_get_widget (session_info))

View File

@ -139,10 +139,10 @@ session_init (Gimp *gimp)
/* In versions <= GIMP 2.6 there was a "toolbox", a
* "dock", a "display" and a "toplevel" factory. These
* are now merged to a single global_dialog_factory. We
* are now merged to a single gimp_dialog_factory_get_singleton (). We
* need the legacy name though, so keep it around.
*/
factory = global_dialog_factory;
factory = gimp_dialog_factory_get_singleton ();
info = gimp_session_info_new ();
@ -268,7 +268,7 @@ session_restore (Gimp *gimp)
{
g_return_if_fail (GIMP_IS_GIMP (gimp));
gimp_dialog_factory_restore (global_dialog_factory);
gimp_dialog_factory_restore (gimp_dialog_factory_get_singleton ());
}
void
@ -307,7 +307,7 @@ session_save (Gimp *gimp,
if (!writer)
return;
gimp_dialog_factory_save (global_dialog_factory, writer);
gimp_dialog_factory_save (gimp_dialog_factory_get_singleton (), writer);
gimp_config_writer_linefeed (writer);
/* save last tip shown

View File

@ -104,21 +104,21 @@ windows_menu_setup (GimpUIManager *manager,
windows_menu_display_add (manager->gimp->displays, display, manager);
}
g_signal_connect_object (global_dialog_factory, "dock-window-added",
g_signal_connect_object (gimp_dialog_factory_get_singleton (), "dock-window-added",
G_CALLBACK (windows_menu_dock_window_added),
manager, 0);
g_signal_connect_object (global_dialog_factory, "dock-window-removed",
g_signal_connect_object (gimp_dialog_factory_get_singleton (), "dock-window-removed",
G_CALLBACK (windows_menu_dock_window_removed),
manager, 0);
for (list = gimp_dialog_factory_get_open_dialogs (global_dialog_factory);
for (list = gimp_dialog_factory_get_open_dialogs (gimp_dialog_factory_get_singleton ());
list;
list = g_list_next (list))
{
GimpDockWindow *dock_window = list->data;
if (GIMP_IS_DOCK_WINDOW (dock_window))
windows_menu_dock_window_added (global_dialog_factory,
windows_menu_dock_window_added (gimp_dialog_factory_get_singleton (),
dock_window,
manager);
}

View File

@ -25,8 +25,6 @@
#include "actions/actions.h"
#include "dialogs/dialogs.h"
#include "menus/menus.h"
#include "base/base.h"

View File

@ -26,8 +26,6 @@
#include "dialogs/dialogs-types.h"
#include "dialogs/dialogs.h"
#include "widgets/gimpdialogfactory.h"
#include "widgets/gimpsessioninfo.h"

View File

@ -25,8 +25,6 @@
#include "dialogs/dialogs-types.h"
#include "dialogs/dialogs.h"
#include "display/gimpdisplay.h"
#include "display/gimpdisplayshell.h"
#include "display/gimpdisplayshell-transform.h"
@ -181,7 +179,7 @@ gimp_ui_tool_options_editor_updates (GimpTestFixture *fixture,
GtkWidget *toplevel = gtk_widget_get_toplevel (GTK_WIDGET (shell));
GimpImageWindow *image_window = GIMP_IMAGE_WINDOW (toplevel);
GimpUIManager *ui_manager = gimp_image_window_get_ui_manager (image_window);
GtkWidget *dockable = gimp_dialog_factory_dialog_new (global_dialog_factory,
GtkWidget *dockable = gimp_dialog_factory_dialog_new (gimp_dialog_factory_get_singleton (),
gtk_widget_get_screen (toplevel),
"gimp-tool-options",
-1 /*view_size*/,
@ -234,7 +232,7 @@ gimp_ui_create_new_image_via_dialog (GimpTestFixture *fixture,
/* Get the GtkWindow of the dialog */
new_image_dialog =
gimp_dialog_factory_dialog_raise (global_dialog_factory,
gimp_dialog_factory_dialog_raise (gimp_dialog_factory_get_singleton (),
gtk_widget_get_screen (GTK_WIDGET (shell)),
"gimp-image-new-dialog",
-1 /*view_size*/);
@ -270,11 +268,11 @@ gimp_ui_restore_recently_closed_dock (GimpTestFixture *fixture,
GList *session_infos = NULL;
/* Find a non-toolbox dock window */
dock_window = gimp_ui_find_non_toolbox_dock_window (global_dialog_factory);
dock_window = gimp_ui_find_non_toolbox_dock_window (gimp_dialog_factory_get_singleton ());
g_assert (dock_window != NULL);
/* Count number of docks */
session_infos = gimp_dialog_factory_get_session_infos (global_dialog_factory);
session_infos = gimp_dialog_factory_get_session_infos (gimp_dialog_factory_get_singleton ());
n_session_infos_before_close = g_list_length (session_infos);
/* Close one of the dock windows */
@ -282,7 +280,7 @@ gimp_ui_restore_recently_closed_dock (GimpTestFixture *fixture,
gimp_test_run_mainloop_until_idle ();
/* Make sure the number of session infos went down */
session_infos = gimp_dialog_factory_get_session_infos (global_dialog_factory);
session_infos = gimp_dialog_factory_get_session_infos (gimp_dialog_factory_get_singleton ());
n_session_infos_after_close = g_list_length (session_infos);
g_assert_cmpint (n_session_infos_before_close,
>,
@ -296,7 +294,7 @@ gimp_ui_restore_recently_closed_dock (GimpTestFixture *fixture,
/* FIXME: This is severly hardcoded */
"windows-recent-0003");
gimp_test_run_mainloop_until_idle ();
session_infos = gimp_dialog_factory_get_session_infos (global_dialog_factory);
session_infos = gimp_dialog_factory_get_session_infos (gimp_dialog_factory_get_singleton ());
n_session_infos_after_restore = g_list_length (session_infos);
g_assert_cmpint (n_session_infos_after_close,
<,
@ -328,7 +326,7 @@ gimp_ui_tab_toggle_dont_change_position (GimpTestFixture *fixture,
gint h_after_show = -1;
/* Find a non-toolbox dock window */
dock_window = gimp_ui_find_non_toolbox_dock_window (global_dialog_factory);
dock_window = gimp_ui_find_non_toolbox_dock_window (gimp_dialog_factory_get_singleton ());
g_assert (dock_window != NULL);
g_assert (gtk_widget_get_visible (dock_window));

View File

@ -20,8 +20,6 @@
#include "dialogs/dialogs-types.h"
#include "dialogs/dialogs.h"
#include "widgets/gimpdialogfactory.h"
#include "widgets/gimpdock.h"
#include "widgets/gimpdockwindow.h"
@ -99,10 +97,10 @@ gimp_test_window_roles (GimpTestFixture *fixture,
GimpDockWindow *dock_window = NULL;
GimpDockWindow *toolbox_window = NULL;
dock = gimp_dock_with_window_new (global_dialog_factory,
dock = gimp_dock_with_window_new (gimp_dialog_factory_get_singleton (),
gdk_screen_get_default (),
FALSE /*toolbox*/);
toolbox = gimp_dock_with_window_new (global_dialog_factory,
toolbox = gimp_dock_with_window_new (gimp_dialog_factory_get_singleton (),
gdk_screen_get_default (),
TRUE /*toolbox*/);
dock_window = gimp_dock_window_from_dock (GIMP_DOCK (dock));

View File

@ -50,8 +50,6 @@
#include "display/gimpdisplayshell-selection.h"
#include "display/gimpdisplayshell-transform.h"
#include "dialogs/dialogs.h"
#include "gimpcoloroptions.h"
#include "gimpcolortool.h"
#include "gimptoolcontrol.h"
@ -646,7 +644,7 @@ gimp_color_tool_real_picked (GimpColorTool *color_tool,
if (GIMP_IMAGE_TYPE_IS_INDEXED (sample_type))
{
info = gimp_dialog_factory_find_session_info (global_dialog_factory,
info = gimp_dialog_factory_find_session_info (gimp_dialog_factory_get_singleton (),
"gimp-indexed-palette");
if (info && gimp_session_info_get_widget (info))
{
@ -660,7 +658,7 @@ gimp_color_tool_real_picked (GimpColorTool *color_tool,
if (TRUE)
{
info = gimp_dialog_factory_find_session_info (global_dialog_factory,
info = gimp_dialog_factory_find_session_info (gimp_dialog_factory_get_singleton (),
"gimp-palette-editor");
if (info && gimp_session_info_get_widget (info))
{
@ -696,7 +694,7 @@ gimp_color_tool_real_picked (GimpColorTool *color_tool,
GtkWidget *dockable;
screen = gtk_widget_get_screen (GTK_WIDGET (shell));
dockable = gimp_dialog_factory_dialog_raise (global_dialog_factory,
dockable = gimp_dialog_factory_dialog_raise (gimp_dialog_factory_get_singleton (),
screen,
"gimp-palette-editor",
-1);

View File

@ -45,8 +45,6 @@
#include "display/gimpdisplay.h"
#include "display/gimpdisplayshell.h"
#include "dialogs/dialogs.h"
#include "gimprectangletool.h"
#include "gimptextoptions.h"
#include "gimptexttool.h"
@ -1139,7 +1137,7 @@ gimp_text_tool_editor_dialog (GimpTextTool *text_tool)
return;
}
dialog_factory = global_dialog_factory;
dialog_factory = gimp_dialog_factory_get_singleton ();
if (tool->display)
{

View File

@ -58,8 +58,6 @@
#include "display/gimpdisplay.h"
#include "display/gimpdisplayshell.h"
#include "dialogs/dialogs.h"
#include "gimprectangletool.h"
#include "gimptextoptions.h"
#include "gimptexttool.h"
@ -662,7 +660,7 @@ gimp_text_tool_get_popup (GimpTool *tool,
GtkWidget *im_menu;
GList *children;
dialog_factory = global_dialog_factory;
dialog_factory = gimp_dialog_factory_get_singleton ();
text_tool->ui_manager =
gimp_menu_factory_manager_new (gimp_dialog_factory_get_menu_factory (dialog_factory),

View File

@ -33,8 +33,6 @@
#include "core/gimpcontext.h"
#include "dialogs/dialogs.h"
#include "gimpactioneditor.h"
#include "gimpactionview.h"
#include "gimpcontrollereditor.h"
@ -683,7 +681,7 @@ gimp_controller_editor_edit_clicked (GtkWidget *button,
g_object_add_weak_pointer (G_OBJECT (editor->edit_dialog),
(gpointer) &editor->edit_dialog);
gimp_dialog_factory_add_foreign (global_dialog_factory,
gimp_dialog_factory_add_foreign (gimp_dialog_factory_get_singleton (),
"gimp-controller-action-dialog",
editor->edit_dialog);

View File

@ -34,8 +34,6 @@
#include "core/gimp.h"
#include "core/gimpcontainer.h"
#include "dialogs/dialogs.h"
#include "gimpcontainertreeview.h"
#include "gimpcontainerview.h"
#include "gimpcontrollereditor.h"
@ -636,7 +634,7 @@ gimp_controller_list_edit_clicked (GtkWidget *button,
NULL);
gimp_dialog_factory_add_foreign (global_dialog_factory,
gimp_dialog_factory_add_foreign (gimp_dialog_factory_get_singleton (),
"gimp-controller-editor-dialog",
dialog);

View File

@ -35,8 +35,6 @@
#include "core/gimppattern.h"
#include "core/gimptoolinfo.h"
#include "dialogs/dialogs.h"
#include "gimpdnd.h"
#include "gimpdeviceinfo.h"
#include "gimpdevices.h"
@ -471,7 +469,7 @@ gimp_device_status_view_clicked (GtkWidget *widget,
{
GimpDialogFactory *dialog_factory;
dialog_factory = global_dialog_factory;
dialog_factory = gimp_dialog_factory_get_singleton ();
gimp_dialog_factory_dialog_raise (dialog_factory,
gtk_widget_get_screen (widget),

View File

@ -96,6 +96,14 @@ G_DEFINE_TYPE (GimpDialogFactory, gimp_dialog_factory, GIMP_TYPE_OBJECT)
static guint factory_signals[LAST_SIGNAL] = { 0 };
/* Is set by dialogs.c to a dialog factory initialized there.
*
* FIXME: The layer above should not do this kind of initialization of
* layers below.
*/
static GimpDialogFactory *gimp_toplevel_factory = NULL;
static void
gimp_dialog_factory_class_init (GimpDialogFactoryClass *klass)
{
@ -1429,3 +1437,32 @@ gimp_dialog_factory_unset_busy (GimpDialogFactory *factory)
}
}
}
/**
* gimp_dialog_factory_get_singleton:
*
* Returns: The toplevel GimpDialogFactory instance.
**/
GimpDialogFactory *
gimp_dialog_factory_get_singleton (void)
{
g_return_val_if_fail (gimp_toplevel_factory != NULL, NULL);
return gimp_toplevel_factory;
}
/**
* gimp_dialog_factory_set_singleton:
* @:
*
* Set the toplevel GimpDialogFactory instance. Must only be called by
* dialogs_init()!.
**/
void
gimp_dialog_factory_set_singleton (GimpDialogFactory *factory)
{
g_return_if_fail (gimp_toplevel_factory == NULL ||
factory == NULL);
gimp_toplevel_factory = factory;
}

View File

@ -171,5 +171,8 @@ void gimp_dialog_factory_set_has_min_size (GtkWindow
gboolean has_min_size);
gboolean gimp_dialog_factory_get_has_min_size (GtkWindow *window);
GimpDialogFactory * gimp_dialog_factory_get_singleton (void);
void gimp_dialog_factory_set_singleton (GimpDialogFactory *factory);
#endif /* __GIMP_DIALOG_FACTORY_H__ */

View File

@ -32,8 +32,6 @@
#include "menus/menus.h"
#include "dialogs/dialogs.h"
#include "core/gimpcontext.h"
#include "gimpdialogfactory.h"
@ -1205,7 +1203,7 @@ gimp_dockable_detach (GimpDockable *dockable)
src_dock = gimp_dockbook_get_dock (dockable->p->dockbook);
src_dock_window = gimp_dock_window_from_dock (src_dock);
dock = gimp_dock_with_window_new (global_dialog_factory,
dock = gimp_dock_with_window_new (gimp_dialog_factory_get_singleton (),
gtk_widget_get_screen (GTK_WIDGET (dockable)),
FALSE /*toolbox*/);
dock_window = gimp_dock_window_from_dock (GIMP_DOCK (dock));

View File

@ -30,8 +30,6 @@
#include "core/gimpcontext.h"
#include "core/gimpmarshal.h"
#include "dialogs/dialogs.h"
#include "gimpdialogfactory.h"
#include "gimpdock.h"
#include "gimpdockable.h"

View File

@ -637,7 +637,7 @@ gimp_dock_window_delete_event (GtkWidget *widget,
entry_name = (gimp_dock_window_has_toolbox (dock_window) ?
"gimp-toolbox-window" :
"gimp-dock-window");
entry = gimp_dialog_factory_find_entry (global_dialog_factory, entry_name);
entry = gimp_dialog_factory_find_entry (gimp_dialog_factory_get_singleton (), entry_name);
gimp_session_info_set_factory_entry (info, entry);
gimp_container_add (global_recent_docks, GIMP_OBJECT (info));

View File

@ -29,8 +29,6 @@
#include "core/gimpcontext.h"
#include "core/gimpmarshal.h"
#include "dialogs/dialogs.h"
#include "gimpdialogfactory.h"
#include "gimpdnd.h"
#include "gimpdockable.h"

View File

@ -28,8 +28,6 @@
#include "widgets-types.h"
#include "dialogs/dialogs.h"
#include "gimpdialogfactory.h"
#include "gimpdock.h"
#include "gimpdockwindow.h"
@ -264,7 +262,7 @@ gimp_session_info_deserialize (GimpConfig *config,
if (! gimp_scanner_parse_string (scanner, &identifier))
goto error;
entry = gimp_dialog_factory_find_entry (global_dialog_factory,
entry = gimp_dialog_factory_find_entry (gimp_dialog_factory_get_singleton (),
identifier);
if (! entry)
goto error;

View File

@ -26,8 +26,6 @@
#include "core/gimp.h"
#include "core/gimpcontext.h"
#include "dialogs/dialogs.h"
#include "gimpcolordialog.h"
#include "gimpdialogfactory.h"
#include "gimpfgbgeditor.h"
@ -154,7 +152,7 @@ color_area_color_clicked (GimpFgBgEditor *editor,
color_dialog = gimp_color_dialog_new (NULL, context,
NULL, NULL, NULL,
GTK_WIDGET (editor),
global_dialog_factory,
gimp_dialog_factory_get_singleton (),
"gimp-toolbox-color-dialog",
&color,
TRUE, FALSE);

View File

@ -29,8 +29,6 @@
#include "core/gimpobject.h"
#include "core/gimptoolinfo.h"
#include "dialogs/dialogs.h"
#include "gimpdialogfactory.h"
#include "gimptooldialog.h"
@ -96,7 +94,7 @@ gimp_tool_dialog_new (GimpToolInfo *tool_info,
identifier = g_strconcat (gimp_object_get_name (tool_info), "-dialog", NULL);
gimp_dialog_factory_add_foreign (global_dialog_factory,
gimp_dialog_factory_add_foreign (gimp_dialog_factory_get_singleton (),
identifier,
dialog);

View File

@ -30,8 +30,6 @@
#include "core/gimpcontext.h"
#include "core/gimpdatafactory.h"
#include "dialogs/dialogs.h"
#include "gimpcontainerentry.h"
#include "gimpdialogfactory.h"
#include "gimppropwidgets.h"
@ -199,7 +197,7 @@ gradient_box_new (GimpContainer *container,
button = gimp_viewable_button_new (container, context,
view_type,
GIMP_VIEW_SIZE_LARGE, view_size, 1,
global_dialog_factory,
gimp_dialog_factory_get_singleton (),
"gimp-gradient-list|gimp-gradient-grid",
GIMP_STOCK_GRADIENT,
_("Open the gradient selection dialog"));
@ -425,7 +423,7 @@ gimp_viewable_box_new (GimpContainer *container,
button = gimp_viewable_button_new (container, context,
view_type, button_view_size, view_size, 1,
global_dialog_factory,
gimp_dialog_factory_get_singleton (),
dialog_identifier,
dialog_stock_id,
dialog_tooltip);