[gimp] Get rid of all image window FIXMEs
- From: Michael Natterer <mitch src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gimp] Get rid of all image window FIXMEs
- Date: Tue, 29 Sep 2009 18:37:44 +0000 (UTC)
commit 5804e80ad0a0b8a9c6505af5c4ecf55f0655e5ca
Author: Michael Natterer <mitch gimp org>
Date: Fri Sep 25 01:12:55 2009 +0200
Get rid of all image window FIXMEs
Replace duplicated ugly macro constructs by proper utility functions
that do the right thing wrt GimpImageWindow being the new toplevel.
app/display/gimpdisplayshell-appearance.c | 267 ++++++++++++++++-------------
1 files changed, 150 insertions(+), 117 deletions(-)
---
diff --git a/app/display/gimpdisplayshell-appearance.c b/app/display/gimpdisplayshell-appearance.c
index 9bcdab9..3356e5c 100644
--- a/app/display/gimpdisplayshell-appearance.c
+++ b/app/display/gimpdisplayshell-appearance.c
@@ -47,27 +47,19 @@
#include "gimpstatusbar.h"
-#define GET_OPTIONS(shell) \
- (shell->display->image ? \
- (gimp_image_window_get_fullscreen (GIMP_IMAGE_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (shell)))) ? \
- shell->fullscreen_options : shell->options) : \
- shell->no_image_options)
+/* local function prototypes */
-#define SET_ACTIVE(manager,action_name,active) \
- { GimpActionGroup *group = \
- gimp_ui_manager_get_action_group (manager, "view"); \
- gimp_action_group_set_action_active (group, action_name, active); }
+static GimpDisplayOptions *
+ appearance_get_options (const GimpDisplayShell *shell);
+static void appearance_set_action_active (GimpDisplayShell *shell,
+ const gchar *action,
+ gboolean active);
+static void appearance_set_action_color (GimpDisplayShell *shell,
+ const gchar *action,
+ const GimpRGB *color);
-#define SET_COLOR(manager,action_name,color) \
- { GimpActionGroup *group = \
- gimp_ui_manager_get_action_group (manager, "view"); \
- gimp_action_group_set_action_color (group, action_name, color, FALSE); }
-
-#define IS_ACTIVE_DISPLAY(shell) \
- ((shell)->display == \
- gimp_context_get_display (gimp_get_user_context \
- ((shell)->display->gimp)))
+/* public functions */
void
gimp_display_shell_appearance_update (GimpDisplayShell *shell)
@@ -76,7 +68,7 @@ gimp_display_shell_appearance_update (GimpDisplayShell *shell)
g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
- options = GET_OPTIONS (shell);
+ options = appearance_get_options (shell);
gimp_display_shell_set_show_menubar (shell,
options->show_menubar);
@@ -106,27 +98,27 @@ gimp_display_shell_set_show_menubar (GimpDisplayShell *shell,
gboolean show)
{
GimpDisplayOptions *options;
+ GtkWidget *toplevel;
+ GimpImageWindow *window;
g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
- options = GET_OPTIONS (shell);
+ options = appearance_get_options (shell);
+ toplevel = gtk_widget_get_toplevel (GTK_WIDGET (shell));
+ window = GIMP_IMAGE_WINDOW (toplevel);
g_object_set (options, "show-menubar", show, NULL);
- /* FIXME image window */
- if (GIMP_IMAGE_WINDOW (shell)->menubar)
+ if (gimp_image_window_get_active_display (window) == shell->display &&
+ window->menubar)
{
if (show)
- gtk_widget_show (GIMP_IMAGE_WINDOW (shell)->menubar);
+ gtk_widget_show (window->menubar);
else
- gtk_widget_hide (GIMP_IMAGE_WINDOW (shell)->menubar);
+ gtk_widget_hide (window->menubar);
}
- /* FIXME image window */
- SET_ACTIVE (GIMP_IMAGE_WINDOW (shell)->menubar_manager, "view-show-menubar", show);
-
- if (IS_ACTIVE_DISPLAY (shell))
- SET_ACTIVE (shell->popup_manager, "view-show-menubar", show);
+ appearance_set_action_active (shell, "view-show-menubar", show);
}
gboolean
@@ -134,7 +126,7 @@ gimp_display_shell_get_show_menubar (const GimpDisplayShell *shell)
{
g_return_val_if_fail (GIMP_IS_DISPLAY_SHELL (shell), FALSE);
- return GET_OPTIONS (shell)->show_menubar;
+ return appearance_get_options (shell)->show_menubar;
}
void
@@ -146,7 +138,7 @@ gimp_display_shell_set_show_rulers (GimpDisplayShell *shell,
g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
- options = GET_OPTIONS (shell);
+ options = appearance_get_options (shell);
g_object_set (options, "show-rulers", show, NULL);
@@ -171,11 +163,7 @@ gimp_display_shell_set_show_rulers (GimpDisplayShell *shell,
gtk_table_set_row_spacing (table, 0, 0);
}
- /* FIXME image window */
- SET_ACTIVE (GIMP_IMAGE_WINDOW (shell)->menubar_manager, "view-show-rulers", show);
-
- if (IS_ACTIVE_DISPLAY (shell))
- SET_ACTIVE (shell->popup_manager, "view-show-rulers", show);
+ appearance_set_action_active (shell, "view-show-rulers", show);
}
gboolean
@@ -183,7 +171,7 @@ gimp_display_shell_get_show_rulers (const GimpDisplayShell *shell)
{
g_return_val_if_fail (GIMP_IS_DISPLAY_SHELL (shell), FALSE);
- return GET_OPTIONS (shell)->show_rulers;
+ return appearance_get_options (shell)->show_rulers;
}
void
@@ -197,7 +185,7 @@ gimp_display_shell_set_show_scrollbars (GimpDisplayShell *shell,
g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
- options = GET_OPTIONS (shell);
+ options = appearance_get_options (shell);
g_object_set (options, "show-scrollbars", show, NULL);
@@ -230,11 +218,7 @@ gimp_display_shell_set_show_scrollbars (GimpDisplayShell *shell,
gtk_box_set_spacing (vbox, 0);
}
- /* FIXME image window */
- SET_ACTIVE (GIMP_IMAGE_WINDOW (shell)->menubar_manager, "view-show-scrollbars", show);
-
- if (IS_ACTIVE_DISPLAY (shell))
- SET_ACTIVE (shell->popup_manager, "view-show-scrollbars", show);
+ appearance_set_action_active (shell, "view-show-scrollbars", show);
}
gboolean
@@ -242,7 +226,7 @@ gimp_display_shell_get_show_scrollbars (const GimpDisplayShell *shell)
{
g_return_val_if_fail (GIMP_IS_DISPLAY_SHELL (shell), FALSE);
- return GET_OPTIONS (shell)->show_scrollbars;
+ return appearance_get_options (shell)->show_scrollbars;
}
void
@@ -250,21 +234,23 @@ gimp_display_shell_set_show_statusbar (GimpDisplayShell *shell,
gboolean show)
{
GimpDisplayOptions *options;
+ GtkWidget *toplevel;
+ GimpImageWindow *window;
g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
- options = GET_OPTIONS (shell);
+ options = appearance_get_options (shell);
+ toplevel = gtk_widget_get_toplevel (GTK_WIDGET (shell));
+ window = GIMP_IMAGE_WINDOW (toplevel);
g_object_set (options, "show-statusbar", show, NULL);
- /* FIXME image window */
- gimp_statusbar_set_visible (GIMP_STATUSBAR (GIMP_IMAGE_WINDOW (shell)->statusbar), show);
-
- /* FIXME image window */
- SET_ACTIVE (GIMP_IMAGE_WINDOW (shell)->menubar_manager, "view-show-statusbar", show);
+ if (gimp_image_window_get_active_display (window) == shell->display)
+ {
+ gimp_statusbar_set_visible (GIMP_STATUSBAR (window->statusbar), show);
+ }
- if (IS_ACTIVE_DISPLAY (shell))
- SET_ACTIVE (shell->popup_manager, "view-show-statusbar", show);
+ appearance_set_action_active (shell, "view-show-statusbar", show);
}
gboolean
@@ -272,7 +258,7 @@ gimp_display_shell_get_show_statusbar (const GimpDisplayShell *shell)
{
g_return_val_if_fail (GIMP_IS_DISPLAY_SHELL (shell), FALSE);
- return GET_OPTIONS (shell)->show_statusbar;
+ return appearance_get_options (shell)->show_statusbar;
}
void
@@ -283,17 +269,13 @@ gimp_display_shell_set_show_selection (GimpDisplayShell *shell,
g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
- options = GET_OPTIONS (shell);
+ options = appearance_get_options (shell);
g_object_set (options, "show-selection", show, NULL);
gimp_display_shell_selection_set_hidden (shell, ! show);
- /* FIXME image window */
- SET_ACTIVE (GIMP_IMAGE_WINDOW (shell)->menubar_manager, "view-show-selection", show);
-
- if (IS_ACTIVE_DISPLAY (shell))
- SET_ACTIVE (shell->popup_manager, "view-show-selection", show);
+ appearance_set_action_active (shell, "view-show-selection", show);
}
gboolean
@@ -301,7 +283,7 @@ gimp_display_shell_get_show_selection (const GimpDisplayShell *shell)
{
g_return_val_if_fail (GIMP_IS_DISPLAY_SHELL (shell), FALSE);
- return GET_OPTIONS (shell)->show_selection;
+ return appearance_get_options (shell)->show_selection;
}
void
@@ -312,17 +294,13 @@ gimp_display_shell_set_show_layer (GimpDisplayShell *shell,
g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
- options = GET_OPTIONS (shell);
+ options = appearance_get_options (shell);
g_object_set (options, "show-layer-boundary", show, NULL);
gimp_display_shell_selection_layer_set_hidden (shell, ! show);
- /* FIXME image window */
- SET_ACTIVE (GIMP_IMAGE_WINDOW (shell)->menubar_manager, "view-show-layer-boundary", show);
-
- if (IS_ACTIVE_DISPLAY (shell))
- SET_ACTIVE (shell->popup_manager, "view-show-layer-boundary", show);
+ appearance_set_action_active (shell, "view-show-layer-boundary", show);
}
gboolean
@@ -330,7 +308,7 @@ gimp_display_shell_get_show_layer (const GimpDisplayShell *shell)
{
g_return_val_if_fail (GIMP_IS_DISPLAY_SHELL (shell), FALSE);
- return GET_OPTIONS (shell)->show_layer_boundary;
+ return appearance_get_options (shell)->show_layer_boundary;
}
void
@@ -358,7 +336,7 @@ gimp_display_shell_set_show_guides (GimpDisplayShell *shell,
g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
- options = GET_OPTIONS (shell);
+ options = appearance_get_options (shell);
g_object_set (options, "show-guides", show, NULL);
@@ -368,11 +346,7 @@ gimp_display_shell_set_show_guides (GimpDisplayShell *shell,
gimp_display_shell_expose_full (shell);
}
- /* FIXME image window */
- SET_ACTIVE (GIMP_IMAGE_WINDOW (shell)->menubar_manager, "view-show-guides", show);
-
- if (IS_ACTIVE_DISPLAY (shell))
- SET_ACTIVE (shell->popup_manager, "view-show-guides", show);
+ appearance_set_action_active (shell, "view-show-guides", show);
}
gboolean
@@ -380,7 +354,7 @@ gimp_display_shell_get_show_guides (const GimpDisplayShell *shell)
{
g_return_val_if_fail (GIMP_IS_DISPLAY_SHELL (shell), FALSE);
- return GET_OPTIONS (shell)->show_guides;
+ return appearance_get_options (shell)->show_guides;
}
void
@@ -391,7 +365,7 @@ gimp_display_shell_set_show_grid (GimpDisplayShell *shell,
g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
- options = GET_OPTIONS (shell);
+ options = appearance_get_options (shell);
g_object_set (options, "show-grid", show, NULL);
@@ -401,11 +375,7 @@ gimp_display_shell_set_show_grid (GimpDisplayShell *shell,
gimp_display_shell_expose_full (shell);
}
- /* FIXME image window */
- SET_ACTIVE (GIMP_IMAGE_WINDOW (shell)->menubar_manager, "view-show-grid", show);
-
- if (IS_ACTIVE_DISPLAY (shell))
- SET_ACTIVE (shell->popup_manager, "view-show-grid", show);
+ appearance_set_action_active (shell, "view-show-grid", show);
}
gboolean
@@ -413,7 +383,7 @@ gimp_display_shell_get_show_grid (const GimpDisplayShell *shell)
{
g_return_val_if_fail (GIMP_IS_DISPLAY_SHELL (shell), FALSE);
- return GET_OPTIONS (shell)->show_grid;
+ return appearance_get_options (shell)->show_grid;
}
void
@@ -424,7 +394,7 @@ gimp_display_shell_set_show_sample_points (GimpDisplayShell *shell,
g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
- options = GET_OPTIONS (shell);
+ options = appearance_get_options (shell);
g_object_set (options, "show-sample-points", show, NULL);
@@ -434,11 +404,7 @@ gimp_display_shell_set_show_sample_points (GimpDisplayShell *shell,
gimp_display_shell_expose_full (shell);
}
- /* FIXME image window */
- SET_ACTIVE (GIMP_IMAGE_WINDOW (shell)->menubar_manager, "view-show-sample-points", show);
-
- if (IS_ACTIVE_DISPLAY (shell))
- SET_ACTIVE (shell->popup_manager, "view-show-sample-points", show);
+ appearance_set_action_active (shell, "view-show-sample-points", show);
}
gboolean
@@ -446,7 +412,7 @@ gimp_display_shell_get_show_sample_points (const GimpDisplayShell *shell)
{
g_return_val_if_fail (GIMP_IS_DISPLAY_SHELL (shell), FALSE);
- return GET_OPTIONS (shell)->show_sample_points;
+ return appearance_get_options (shell)->show_sample_points;
}
void
@@ -459,11 +425,7 @@ gimp_display_shell_set_snap_to_grid (GimpDisplayShell *shell,
{
shell->snap_to_grid = snap ? TRUE : FALSE;
- /* FIXME image window */
- SET_ACTIVE (GIMP_IMAGE_WINDOW (shell)->menubar_manager, "view-snap-to-grid", snap);
-
- if (IS_ACTIVE_DISPLAY (shell))
- SET_ACTIVE (shell->popup_manager, "view-snap-to-grid", snap);
+ appearance_set_action_active (shell, "view-snap-to-grid", snap);
}
}
@@ -485,11 +447,7 @@ gimp_display_shell_set_snap_to_guides (GimpDisplayShell *shell,
{
shell->snap_to_guides = snap ? TRUE : FALSE;
- /* FIXME image window */
- SET_ACTIVE (GIMP_IMAGE_WINDOW (shell)->menubar_manager, "view-snap-to-guides", snap);
-
- if (IS_ACTIVE_DISPLAY (shell))
- SET_ACTIVE (shell->popup_manager, "view-snap-to-guides", snap);
+ appearance_set_action_active (shell, "view-snap-to-guides", snap);
}
}
@@ -511,11 +469,7 @@ gimp_display_shell_set_snap_to_canvas (GimpDisplayShell *shell,
{
shell->snap_to_canvas = snap ? TRUE : FALSE;
- /* FIXME image window */
- SET_ACTIVE (GIMP_IMAGE_WINDOW (shell)->menubar_manager, "view-snap-to-canvas", snap);
-
- if (IS_ACTIVE_DISPLAY (shell))
- SET_ACTIVE (shell->popup_manager, "view-snap-to-canvas", snap);
+ appearance_set_action_active (shell, "view-snap-to-canvas", snap);
}
}
@@ -537,11 +491,7 @@ gimp_display_shell_set_snap_to_vectors (GimpDisplayShell *shell,
{
shell->snap_to_vectors = snap ? TRUE : FALSE;
- /* FIXME image window */
- SET_ACTIVE (GIMP_IMAGE_WINDOW (shell)->menubar_manager, "view-snap-to-vectors", snap);
-
- if (IS_ACTIVE_DISPLAY (shell))
- SET_ACTIVE (shell->popup_manager, "view-snap-to-vectors", snap);
+ appearance_set_action_active (shell, "view-snap-to-vectors", snap);
}
}
@@ -564,7 +514,7 @@ gimp_display_shell_set_padding (GimpDisplayShell *shell,
g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
g_return_if_fail (padding_color != NULL);
- options = GET_OPTIONS (shell);
+ options = appearance_get_options (shell);
color = *padding_color;
switch (padding_mode)
@@ -602,13 +552,8 @@ gimp_display_shell_set_padding (GimpDisplayShell *shell,
gimp_canvas_set_bg_color (GIMP_CANVAS (shell->canvas), &color);
- /* FIXME image window */
- SET_COLOR (GIMP_IMAGE_WINDOW (shell)->menubar_manager, "view-padding-color-menu",
- &options->padding_color);
-
- if (IS_ACTIVE_DISPLAY (shell))
- SET_COLOR (shell->popup_manager, "view-padding-color-menu",
- &options->padding_color);
+ appearance_set_action_color (shell, "view-padding-color-menu",
+ &options->padding_color);
gimp_display_shell_expose_full (shell);
}
@@ -622,7 +567,7 @@ gimp_display_shell_get_padding (const GimpDisplayShell *shell,
g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
- options = GET_OPTIONS (shell);
+ options = appearance_get_options (shell);
if (padding_mode)
*padding_mode = options->padding_mode;
@@ -630,3 +575,91 @@ gimp_display_shell_get_padding (const GimpDisplayShell *shell,
if (padding_color)
*padding_color = options->padding_color;
}
+
+
+/* private functions */
+
+static GimpDisplayOptions *
+appearance_get_options (const GimpDisplayShell *shell)
+{
+ if (shell->display->image)
+ {
+ GtkWidget *toplevel = gtk_widget_get_toplevel (GTK_WIDGET (shell));
+ GimpImageWindow *window = GIMP_IMAGE_WINDOW (toplevel);
+
+ if (gimp_image_window_get_fullscreen (window))
+ return shell->fullscreen_options;
+ else
+ return shell->options;
+ }
+
+ return shell->no_image_options;
+}
+
+static void
+appearance_set_action_active (GimpDisplayShell *shell,
+ const gchar *action,
+ gboolean active)
+{
+ GtkWidget *toplevel = gtk_widget_get_toplevel (GTK_WIDGET (shell));
+ GimpImageWindow *window = GIMP_IMAGE_WINDOW (toplevel);
+ GimpContext *context;
+
+ if (gimp_image_window_get_active_display (window) == shell->display)
+ {
+ GimpActionGroup *action_group;
+
+ action_group = gimp_ui_manager_get_action_group (window->menubar_manager,
+ "view");
+
+ if (action_group)
+ gimp_action_group_set_action_active (action_group, action, active);
+ }
+
+ context = gimp_get_user_context (shell->display->gimp);
+
+ if (shell->display == gimp_context_get_display (context))
+ {
+ GimpActionGroup *action_group;
+
+ action_group = gimp_ui_manager_get_action_group (shell->popup_manager,
+ "view");
+
+ if (action_group)
+ gimp_action_group_set_action_active (action_group, action, active);
+ }
+}
+
+static void
+appearance_set_action_color (GimpDisplayShell *shell,
+ const gchar *action,
+ const GimpRGB *color)
+{
+ GtkWidget *toplevel = gtk_widget_get_toplevel (GTK_WIDGET (shell));
+ GimpImageWindow *window = GIMP_IMAGE_WINDOW (toplevel);
+ GimpContext *context;
+
+ if (gimp_image_window_get_active_display (window) == shell->display)
+ {
+ GimpActionGroup *action_group;
+
+ action_group = gimp_ui_manager_get_action_group (window->menubar_manager,
+ "view");
+
+ if (action_group)
+ gimp_action_group_set_action_color (action_group, action, color, FALSE);
+ }
+
+ context = gimp_get_user_context (shell->display->gimp);
+
+ if (shell->display == gimp_context_get_display (context))
+ {
+ GimpActionGroup *action_group;
+
+ action_group = gimp_ui_manager_get_action_group (shell->popup_manager,
+ "view");
+
+ if (action_group)
+ gimp_action_group_set_action_color (action_group, action, color, FALSE);
+ }
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]