static void gimp_display_shell_padding_notify_handler (GObject *config, GParamSpec *param_spec, GimpDisplayShell *shell) { GimpDisplayConfig *display_config; GimpImageWindow *window; gboolean fullscreen; GimpCanvasPaddingMode padding_mode; GimpRGB padding_color; display_config = shell->display->config; window = gimp_display_shell_get_window (shell); if (window) fullscreen = gimp_image_window_get_fullscreen (window); else fullscreen = FALSE; /* if the user did not set the padding mode for this display explicitly */ if (! shell->fullscreen_options->padding_mode_set) { padding_mode = display_config->default_fullscreen_view->padding_mode; padding_color = display_config->default_fullscreen_view->padding_color; if (fullscreen) { gimp_display_shell_set_padding (shell, padding_mode, &padding_color); } else { shell->fullscreen_options->padding_mode = padding_mode; shell->fullscreen_options->padding_color = padding_color; } } /* if the user did not set the padding mode for this display explicitly */ if (! shell->options->padding_mode_set) { padding_mode = display_config->default_view->padding_mode; padding_color = display_config->default_view->padding_color; if (fullscreen) { shell->options->padding_mode = padding_mode; shell->options->padding_color = padding_color; } else { gimp_display_shell_set_padding (shell, padding_mode, &padding_color); } } }
static void gimp_display_shell_padding_notify_handler (GObject *config, GParamSpec *param_spec, GimpDisplayShell *shell) { GimpDisplayConfig *display_config; gboolean fullscreen; GimpCanvasPaddingMode padding_mode; GimpRGB padding_color; display_config = GIMP_DISPLAY_CONFIG (shell->display->image->gimp->config); fullscreen = gimp_display_shell_get_fullscreen (shell); /* if the user did not set the padding mode for this display explicitely */ if (! shell->fullscreen_options->padding_mode_set) { padding_mode = display_config->default_fullscreen_view->padding_mode; padding_color = display_config->default_fullscreen_view->padding_color; if (fullscreen) { gimp_display_shell_set_padding (shell, padding_mode, &padding_color); } else { shell->fullscreen_options->padding_mode = padding_mode; shell->fullscreen_options->padding_color = padding_color; } } /* if the user did not set the padding mode for this display explicitely */ if (! shell->options->padding_mode_set) { padding_mode = display_config->default_view->padding_mode; padding_color = display_config->default_view->padding_color; if (fullscreen) { shell->options->padding_mode = padding_mode; shell->options->padding_color = padding_color; } else { gimp_display_shell_set_padding (shell, padding_mode, &padding_color); } } }
static void gimp_display_shell_check_notify_handler (GObject *config, GParamSpec *param_spec, GimpDisplayShell *shell) { GimpCanvasPaddingMode padding_mode; GimpRGB padding_color; if (shell->checkerboard) { cairo_pattern_destroy (shell->checkerboard); shell->checkerboard = NULL; } gimp_display_shell_get_padding (shell, &padding_mode, &padding_color); switch (padding_mode) { case GIMP_CANVAS_PADDING_MODE_LIGHT_CHECK: case GIMP_CANVAS_PADDING_MODE_DARK_CHECK: gimp_display_shell_set_padding (shell, padding_mode, &padding_color); break; default: break; } gimp_display_shell_expose_full (shell); }
void gimp_display_shell_canvas_realize (GtkWidget *canvas, GimpDisplayShell *shell) { GimpCanvasPaddingMode padding_mode; GimpRGB padding_color; GtkAllocation allocation; gtk_widget_grab_focus (canvas); gimp_display_shell_get_padding (shell, &padding_mode, &padding_color); gimp_display_shell_set_padding (shell, padding_mode, &padding_color); gtk_widget_get_allocation (canvas, &allocation); gimp_display_shell_title_update (shell); shell->disp_width = allocation.width; shell->disp_height = allocation.height; /* set up the scrollbar observers */ g_signal_connect (shell->hsbdata, "value-changed", G_CALLBACK (gimp_display_shell_hadjustment_changed), shell); g_signal_connect (shell->vsbdata, "value-changed", G_CALLBACK (gimp_display_shell_vadjustment_changed), shell); g_signal_connect (shell->hsb, "change-value", G_CALLBACK (gimp_display_shell_hscrollbar_change_value), shell); g_signal_connect (shell->vsb, "change-value", G_CALLBACK (gimp_display_shell_vscrollbar_change_value), shell); /* allow shrinking */ gtk_widget_set_size_request (GTK_WIDGET (shell), 0, 0); shell->xfer = gimp_display_xfer_realize (GTK_WIDGET(shell)); }
static void view_padding_color_dialog_update (GimpColorDialog *dialog, const GimpRGB *color, GimpColorDialogState state, GimpDisplayShell *shell) { GimpImageWindow *window; GimpDisplayOptions *options; gboolean fullscreen; window = gimp_display_shell_get_window (shell); if (window) fullscreen = gimp_image_window_get_fullscreen (window); else fullscreen = FALSE; if (fullscreen) options = shell->fullscreen_options; else options = shell->options; switch (state) { case GIMP_COLOR_DIALOG_OK: options->padding_mode_set = TRUE; gimp_display_shell_set_padding (shell, GIMP_CANVAS_PADDING_MODE_CUSTOM, color); /* fallthru */ case GIMP_COLOR_DIALOG_CANCEL: g_object_set_data (G_OBJECT (shell), "padding-color-dialog", NULL); break; default: break; } }
void view_padding_color_cmd_callback (GtkAction *action, gint value, gpointer data) { GimpDisplay *display; GimpImageWindow *window; GimpDisplayShell *shell; GimpDisplayOptions *options; gboolean fullscreen; return_if_no_display (display, data); shell = gimp_display_get_shell (display); window = gimp_display_shell_get_window (shell); if (window) fullscreen = gimp_image_window_get_fullscreen (window); else fullscreen = FALSE; if (fullscreen) options = shell->fullscreen_options; else options = shell->options; switch ((GimpCanvasPaddingMode) value) { case GIMP_CANVAS_PADDING_MODE_DEFAULT: case GIMP_CANVAS_PADDING_MODE_LIGHT_CHECK: case GIMP_CANVAS_PADDING_MODE_DARK_CHECK: g_object_set_data (G_OBJECT (shell), "padding-color-dialog", NULL); options->padding_mode_set = TRUE; gimp_display_shell_set_padding (shell, (GimpCanvasPaddingMode) value, &options->padding_color); break; case GIMP_CANVAS_PADDING_MODE_CUSTOM: { GtkWidget *color_dialog; color_dialog = g_object_get_data (G_OBJECT (shell), "padding-color-dialog"); if (! color_dialog) { GimpImage *image = gimp_display_get_image (display); GimpDisplayShell *shell = gimp_display_get_shell (display); color_dialog = gimp_color_dialog_new (GIMP_VIEWABLE (image), action_data_get_context (data), _("Set Canvas Padding Color"), GTK_STOCK_SELECT_COLOR, _("Set Custom Canvas Padding Color"), GTK_WIDGET (shell), NULL, NULL, &options->padding_color, FALSE, FALSE); g_signal_connect (color_dialog, "update", G_CALLBACK (view_padding_color_dialog_update), shell); g_object_set_data_full (G_OBJECT (shell), "padding-color-dialog", color_dialog, (GDestroyNotify) gtk_widget_destroy); } gtk_window_present (GTK_WINDOW (color_dialog)); } break; case GIMP_CANVAS_PADDING_MODE_RESET: g_object_set_data (G_OBJECT (shell), "padding-color-dialog", NULL); { GimpDisplayOptions *default_options; options->padding_mode_set = FALSE; if (fullscreen) default_options = display->config->default_fullscreen_view; else default_options = display->config->default_view; gimp_display_shell_set_padding (shell, default_options->padding_mode, &default_options->padding_color); } break; } }