reordered the View menu, moved all Zoom-related entries into a submenu.

2003-03-12  Sven Neumann  <sven@gimp.org>

	* app/gui/image-menu.c: reordered the View menu, moved all
	Zoom-related entries into a submenu. Use radio items for the zoom
	ratio as suggested in bug #74385.

	* app/gui/view-commands.c (view_zoom_cmd_callback): only call
	gimp_display_shell_scale() if the item is active and the current
	scale is different from the requested one.

	* app/display/gimpdisplayshell.c (gimp_display_shell_real_scaled):
	update the image menu so that the zoom ratio is displayed correctly.

	* app/display/gimpdisplayshell-callbacks.c
	(gimp_display_shell_canvas_realize): don't call
	gimp_display_shell_scale_setup(), since it is done in the configure
	event handler already.
This commit is contained in:
Sven Neumann 2003-03-12 17:18:25 +00:00 committed by Sven Neumann
parent f2ca257438
commit c3a4ddc616
8 changed files with 298 additions and 125 deletions

View File

@ -1,3 +1,21 @@
2003-03-12 Sven Neumann <sven@gimp.org>
* app/gui/image-menu.c: reordered the View menu, moved all
Zoom-related entries into a submenu. Use radio items for the zoom
ratio as suggested in bug #74385.
* app/gui/view-commands.c (view_zoom_cmd_callback): only call
gimp_display_shell_scale() if the item is active and the current
scale is different from the requested one.
* app/display/gimpdisplayshell.c (gimp_display_shell_real_scaled):
update the image menu so that the zoom ratio is displayed correctly.
* app/display/gimpdisplayshell-callbacks.c
(gimp_display_shell_canvas_realize): don't call
gimp_display_shell_scale_setup(), since it is done in the configure
event handler already.
2003-03-12 Michael Natterer <mitch@gimp.org>
* app/core/core-enums.[ch]: added descriptions to the

View File

@ -92,10 +92,22 @@ view_zoom_cmd_callback (GtkWidget *widget,
gpointer data,
guint action)
{
GimpDisplay *gdisp;
GimpDisplay *gdisp;
GimpDisplayShell *shell;
guchar scalesrc;
guchar scaledest;
return_if_no_display (gdisp, data);
gimp_display_shell_scale (GIMP_DISPLAY_SHELL (gdisp->shell), action);
if (! GTK_CHECK_MENU_ITEM (widget)->active)
return;
shell = GIMP_DISPLAY_SHELL (gdisp->shell);
scalesrc = CLAMP (action % 100, 1, 0xFF);
scaledest = CLAMP (action / 100, 1, 0xFF);
if (scalesrc != SCALESRC (shell) || scaledest != SCALEDEST (shell))
gimp_display_shell_scale (shell, action);
}
void

View File

@ -282,9 +282,6 @@ gimp_display_shell_canvas_realize (GtkWidget *canvas,
G_CALLBACK (gimp_display_shell_vscrollbar_update),
shell);
/* setup scale properly */
gimp_display_shell_scale_setup (shell);
/* set the initial cursor */
gimp_display_shell_set_cursor (shell,
GDK_TOP_LEFT_ARROW,

View File

@ -406,6 +406,10 @@ static void
gimp_display_shell_real_scaled (GimpDisplayShell *shell)
{
gimp_display_shell_update_title (shell);
/* update the <Image>/View/Zoom menu */
gimp_item_factory_update (shell->menubar_factory, shell);
gimp_item_factory_update (shell->popup_factory, shell);
}
GtkWidget *

View File

@ -406,6 +406,10 @@ static void
gimp_display_shell_real_scaled (GimpDisplayShell *shell)
{
gimp_display_shell_update_title (shell);
/* update the <Image>/View/Zoom menu */
gimp_item_factory_update (shell->menubar_factory, shell);
gimp_item_factory_update (shell->popup_factory, shell);
}
GtkWidget *

View File

@ -61,12 +61,14 @@
/* local function prototypes */
static void image_menu_foreground_changed (GimpContext *context,
const GimpRGB *color,
GimpItemFactory *item_factory);
static void image_menu_background_changed (GimpContext *context,
const GimpRGB *color,
GimpItemFactory *item_factory);
static void image_menu_foreground_changed (GimpContext *context,
const GimpRGB *color,
GimpItemFactory *item_factory);
static void image_menu_background_changed (GimpContext *context,
const GimpRGB *color,
GimpItemFactory *item_factory);
static void image_menu_set_zoom (GtkItemFactory *item_factory,
GimpDisplayShell *shell);
GimpItemFactoryEntry image_menu_entries[] =
@ -283,73 +285,73 @@ GimpItemFactoryEntry image_menu_entries[] =
MENU_BRANCH (N_("/_View")),
{ { N_("/View/Zoom In"), "equal",
{ { N_("/View/New View"), "",
view_new_view_cmd_callback, 0,
"<StockItem>", GTK_STOCK_NEW },
NULL,
"view/new_view.html", NULL },
/* <Image>/View/Zoom */
{ { N_("/View/Zoom/Zoom In"), "equal",
view_zoom_in_cmd_callback, 0,
"<StockItem>", GTK_STOCK_ZOOM_IN },
NULL,
"view/zoom.html", NULL },
{ { N_("/View/Zoom Out"), "minus",
{ { N_("/View/Zoom/Zoom Out"), "minus",
view_zoom_out_cmd_callback, 0,
"<StockItem>", GTK_STOCK_ZOOM_OUT },
NULL,
"view/zoom.html", NULL },
{ { N_("/View/Zoom to Fit Window"), "<control><shift>E",
{ { N_("/View/Zoom/Zoom to Fit Window"), "<control><shift>E",
view_zoom_fit_cmd_callback, 0,
"<StockItem>", GTK_STOCK_ZOOM_FIT },
NULL,
"view/zoom.html", NULL },
{ { N_("/View/Shrink Wrap"), "<control>E",
view_shrink_wrap_cmd_callback, 0 },
NULL,
"view/shrink_wrap.html", NULL },
/* <Image>/View/Zoom */
MENU_SEPARATOR ("/View/Zoom/---"),
{ { N_("/View/Zoom/16:1"), NULL,
view_zoom_cmd_callback, 1601,
"<StockItem>", GTK_STOCK_ZOOM_IN },
view_zoom_cmd_callback, 1601, "<RadioItem>" },
NULL,
"view/zoom.html", NULL },
{ { N_("/View/Zoom/8:1"), NULL,
view_zoom_cmd_callback, 801,
"<StockItem>", GTK_STOCK_ZOOM_IN },
view_zoom_cmd_callback, 801, "/View/Zoom/16:1" },
NULL,
"view/zoom.html", NULL },
{ { N_("/View/Zoom/4:1"), NULL,
view_zoom_cmd_callback, 401,
"<StockItem>", GTK_STOCK_ZOOM_IN },
view_zoom_cmd_callback, 401, "/View/Zoom/16:1" },
NULL,
"view/zoom.html", NULL },
{ { N_("/View/Zoom/2:1"), NULL,
view_zoom_cmd_callback, 201,
"<StockItem>", GTK_STOCK_ZOOM_IN },
view_zoom_cmd_callback, 201, "/View/Zoom/16:1" },
NULL,
"view/zoom.html", NULL },
{ { N_("/View/Zoom/1:1"), "1",
view_zoom_cmd_callback, 101,
"<StockItem>", GTK_STOCK_ZOOM_100 },
view_zoom_cmd_callback, 101, "/View/Zoom/16:1" },
NULL,
"view/zoom.html", NULL },
{ { N_("/View/Zoom/1:2"), NULL,
view_zoom_cmd_callback, 102,
"<StockItem>", GTK_STOCK_ZOOM_OUT },
view_zoom_cmd_callback, 102, "/View/Zoom/16:1" },
NULL,
"view/zoom.html", NULL },
{ { N_("/View/Zoom/1:4"), NULL,
view_zoom_cmd_callback, 104,
"<StockItem>", GTK_STOCK_ZOOM_OUT },
view_zoom_cmd_callback, 104, "/View/Zoom/16:1" },
NULL,
"view/zoom.html", NULL },
{ { N_("/View/Zoom/1:8"), NULL,
view_zoom_cmd_callback, 108,
"<StockItem>", GTK_STOCK_ZOOM_OUT },
view_zoom_cmd_callback, 108, "/View/Zoom/16:1" },
NULL,
"view/zoom.html", NULL },
{ { N_("/View/Zoom/1:16"), NULL,
view_zoom_cmd_callback, 116,
"<StockItem>", GTK_STOCK_ZOOM_OUT },
view_zoom_cmd_callback, 116, "/View/Zoom/16:1" },
NULL,
"view/zoom.html", NULL },
{ { "/View/Zoom/Other", NULL,
NULL, 0, "/View/Zoom/16:1" },
NULL,
"view/zoom.html", NULL },
{ { N_("/View/Dot for Dot"), NULL,
view_dot_for_dot_cmd_callback, 0, "<ToggleItem>" },
@ -411,19 +413,18 @@ GimpItemFactoryEntry image_menu_entries[] =
NULL,
"view/toggle_statusbar.html", NULL },
MENU_SEPARATOR ("/View/---"),
{ { N_("/View/Shrink Wrap"), "<control>E",
view_shrink_wrap_cmd_callback, 0 },
NULL,
"view/shrink_wrap.html", NULL },
{ { N_("/View/Fullscreen"), "F11",
view_fullscreen_cmd_callback, 0, "<ToggleItem>" },
NULL,
"view/fullscreen.html", NULL },
MENU_SEPARATOR ("/View/---"),
{ { N_("/View/New View"), "",
view_new_view_cmd_callback, 0,
"<StockItem>", GTK_STOCK_NEW },
NULL,
"view/new_view.html", NULL },
/* <Image>/Image */
MENU_BRANCH (N_("/_Image")),
@ -1257,19 +1258,25 @@ image_menu_update (GtkItemFactory *item_factory,
/* View */
SET_SENSITIVE ("/View/Zoom In", gdisp);
SET_SENSITIVE ("/View/Zoom Out", gdisp);
SET_SENSITIVE ("/View/Zoom to Fit Window", gdisp);
SET_SENSITIVE ("/View/New View", gdisp);
SET_SENSITIVE ("/View/Zoom/16:1", gdisp);
SET_SENSITIVE ("/View/Zoom/8:1", gdisp);
SET_SENSITIVE ("/View/Zoom/4:1", gdisp);
SET_SENSITIVE ("/View/Zoom/2:1", gdisp);
SET_SENSITIVE ("/View/Zoom/1:1", gdisp);
SET_SENSITIVE ("/View/Zoom/1:2", gdisp);
SET_SENSITIVE ("/View/Zoom/1:4", gdisp);
SET_SENSITIVE ("/View/Zoom/1:8", gdisp);
SET_SENSITIVE ("/View/Zoom/1:16", gdisp);
SET_SENSITIVE ("/View/Zoom/Zoom In", gdisp);
SET_SENSITIVE ("/View/Zoom/Zoom Out", gdisp);
SET_SENSITIVE ("/View/Zoom/Zoom to Fit Window", gdisp);
SET_SENSITIVE ("/View/Zoom/16:1", gdisp);
SET_SENSITIVE ("/View/Zoom/8:1", gdisp);
SET_SENSITIVE ("/View/Zoom/4:1", gdisp);
SET_SENSITIVE ("/View/Zoom/2:1", gdisp);
SET_SENSITIVE ("/View/Zoom/1:1", gdisp);
SET_SENSITIVE ("/View/Zoom/1:2", gdisp);
SET_SENSITIVE ("/View/Zoom/1:4", gdisp);
SET_SENSITIVE ("/View/Zoom/1:8", gdisp);
SET_SENSITIVE ("/View/Zoom/1:16", gdisp);
SET_SENSITIVE ("/View/Zoom/Other", gdisp);
if (gdisp)
image_menu_set_zoom (item_factory, shell);
SET_SENSITIVE ("/View/Dot for Dot", gdisp);
SET_ACTIVE ("/View/Dot for Dot", gdisp && shell->dot_for_dot);
@ -1279,12 +1286,14 @@ image_menu_update (GtkItemFactory *item_factory,
SET_SENSITIVE ("/View/Display Filters...", gdisp);
SET_SENSITIVE ("/View/Show Selection", gdisp);
SET_ACTIVE ("/View/Show Selection", gdisp && ! shell->select->hidden);
SET_ACTIVE ("/View/Show Selection", (gdisp && shell->select &&
! shell->select->hidden));
SET_SENSITIVE ("/View/Show Layer Boundary", gdisp);
SET_ACTIVE ("/View/Show Layer Boundary", gdisp && ! shell->select->layer_hidden);
SET_ACTIVE ("/View/Show Layer Boundary", (gdisp && shell->select &&
! shell->select->layer_hidden));
SET_SENSITIVE ("/View/Show Guides", gdisp);
SET_ACTIVE ("/View/Show Guides", gdisp && gdisp->draw_guides);
SET_SENSITIVE ("/View/Show Guides", gdisp);
SET_ACTIVE ("/View/Show Guides", gdisp && gdisp->draw_guides);
SET_SENSITIVE ("/View/Snap to Guides", gdisp);
SET_ACTIVE ("/View/Snap to Guides", gdisp && gdisp->snap_to_guides);
@ -1300,12 +1309,11 @@ image_menu_update (GtkItemFactory *item_factory,
SET_SENSITIVE ("/View/Show Statusbar", gdisp);
SET_ACTIVE ("/View/Show Statusbar", gdisp && visibility->statusbar);
SET_SENSITIVE ("/View/Shrink Wrap", gdisp);
SET_SENSITIVE ("/View/Fullscreen", gdisp);
SET_ACTIVE ("/View/Fullscreen", gdisp && fullscreen);
SET_SENSITIVE ("/View/New View", gdisp);
SET_SENSITIVE ("/View/Shrink Wrap", gdisp);
/* Image */
SET_SENSITIVE ("/Image/Mode/RGB", gdisp && ! is_rgb);
@ -1394,3 +1402,58 @@ image_menu_background_changed (GimpContext *context,
gimp_item_factory_set_color (GTK_ITEM_FACTORY (item_factory),
"/Edit/Fill with BG Color", color, FALSE);
}
static void
image_menu_set_zoom (GtkItemFactory *item_factory,
GimpDisplayShell *shell)
{
const gchar *menu = NULL;
guint scalesrc;
guint scaledest;
scalesrc = SCALESRC (shell);
scaledest = SCALEDEST (shell);
if (scaledest == 1)
{
switch (scalesrc)
{
case 1: menu = "/View/Zoom/1:1"; break;
case 2: menu = "/View/Zoom/1:2"; break;
case 4: menu = "/View/Zoom/1:4"; break;
case 8: menu = "/View/Zoom/1:8"; break;
case 16: menu = "/View/Zoom/1:16"; break;
}
}
else if (scalesrc == 1)
{
switch (scaledest)
{
case 2: menu = "/View/Zoom/2:1"; break;
case 4: menu = "/View/Zoom/4:1"; break;
case 8: menu = "/View/Zoom/8:1"; break;
case 16: menu = "/View/Zoom/16:1"; break;
}
}
if (menu)
{
gimp_item_factory_set_label (item_factory, "/View/Zoom/Other",_("Other"));
gimp_item_factory_set_sensitive (item_factory, "/View/Zoom/Other", FALSE);
}
else
{
gchar *label;
menu = "/View/Zoom/Other";
label = g_strdup_printf (_("Other (%d:%d)"), scaledest, scalesrc);
gimp_item_factory_set_label (item_factory, menu, label);
gimp_item_factory_set_sensitive (item_factory, menu, TRUE);
g_free (label);
}
gimp_item_factory_set_active (item_factory, menu, TRUE);
}

View File

@ -92,10 +92,22 @@ view_zoom_cmd_callback (GtkWidget *widget,
gpointer data,
guint action)
{
GimpDisplay *gdisp;
GimpDisplay *gdisp;
GimpDisplayShell *shell;
guchar scalesrc;
guchar scaledest;
return_if_no_display (gdisp, data);
gimp_display_shell_scale (GIMP_DISPLAY_SHELL (gdisp->shell), action);
if (! GTK_CHECK_MENU_ITEM (widget)->active)
return;
shell = GIMP_DISPLAY_SHELL (gdisp->shell);
scalesrc = CLAMP (action % 100, 1, 0xFF);
scaledest = CLAMP (action / 100, 1, 0xFF);
if (scalesrc != SCALESRC (shell) || scaledest != SCALEDEST (shell))
gimp_display_shell_scale (shell, action);
}
void

View File

@ -61,12 +61,14 @@
/* local function prototypes */
static void image_menu_foreground_changed (GimpContext *context,
const GimpRGB *color,
GimpItemFactory *item_factory);
static void image_menu_background_changed (GimpContext *context,
const GimpRGB *color,
GimpItemFactory *item_factory);
static void image_menu_foreground_changed (GimpContext *context,
const GimpRGB *color,
GimpItemFactory *item_factory);
static void image_menu_background_changed (GimpContext *context,
const GimpRGB *color,
GimpItemFactory *item_factory);
static void image_menu_set_zoom (GtkItemFactory *item_factory,
GimpDisplayShell *shell);
GimpItemFactoryEntry image_menu_entries[] =
@ -283,73 +285,73 @@ GimpItemFactoryEntry image_menu_entries[] =
MENU_BRANCH (N_("/_View")),
{ { N_("/View/Zoom In"), "equal",
{ { N_("/View/New View"), "",
view_new_view_cmd_callback, 0,
"<StockItem>", GTK_STOCK_NEW },
NULL,
"view/new_view.html", NULL },
/* <Image>/View/Zoom */
{ { N_("/View/Zoom/Zoom In"), "equal",
view_zoom_in_cmd_callback, 0,
"<StockItem>", GTK_STOCK_ZOOM_IN },
NULL,
"view/zoom.html", NULL },
{ { N_("/View/Zoom Out"), "minus",
{ { N_("/View/Zoom/Zoom Out"), "minus",
view_zoom_out_cmd_callback, 0,
"<StockItem>", GTK_STOCK_ZOOM_OUT },
NULL,
"view/zoom.html", NULL },
{ { N_("/View/Zoom to Fit Window"), "<control><shift>E",
{ { N_("/View/Zoom/Zoom to Fit Window"), "<control><shift>E",
view_zoom_fit_cmd_callback, 0,
"<StockItem>", GTK_STOCK_ZOOM_FIT },
NULL,
"view/zoom.html", NULL },
{ { N_("/View/Shrink Wrap"), "<control>E",
view_shrink_wrap_cmd_callback, 0 },
NULL,
"view/shrink_wrap.html", NULL },
/* <Image>/View/Zoom */
MENU_SEPARATOR ("/View/Zoom/---"),
{ { N_("/View/Zoom/16:1"), NULL,
view_zoom_cmd_callback, 1601,
"<StockItem>", GTK_STOCK_ZOOM_IN },
view_zoom_cmd_callback, 1601, "<RadioItem>" },
NULL,
"view/zoom.html", NULL },
{ { N_("/View/Zoom/8:1"), NULL,
view_zoom_cmd_callback, 801,
"<StockItem>", GTK_STOCK_ZOOM_IN },
view_zoom_cmd_callback, 801, "/View/Zoom/16:1" },
NULL,
"view/zoom.html", NULL },
{ { N_("/View/Zoom/4:1"), NULL,
view_zoom_cmd_callback, 401,
"<StockItem>", GTK_STOCK_ZOOM_IN },
view_zoom_cmd_callback, 401, "/View/Zoom/16:1" },
NULL,
"view/zoom.html", NULL },
{ { N_("/View/Zoom/2:1"), NULL,
view_zoom_cmd_callback, 201,
"<StockItem>", GTK_STOCK_ZOOM_IN },
view_zoom_cmd_callback, 201, "/View/Zoom/16:1" },
NULL,
"view/zoom.html", NULL },
{ { N_("/View/Zoom/1:1"), "1",
view_zoom_cmd_callback, 101,
"<StockItem>", GTK_STOCK_ZOOM_100 },
view_zoom_cmd_callback, 101, "/View/Zoom/16:1" },
NULL,
"view/zoom.html", NULL },
{ { N_("/View/Zoom/1:2"), NULL,
view_zoom_cmd_callback, 102,
"<StockItem>", GTK_STOCK_ZOOM_OUT },
view_zoom_cmd_callback, 102, "/View/Zoom/16:1" },
NULL,
"view/zoom.html", NULL },
{ { N_("/View/Zoom/1:4"), NULL,
view_zoom_cmd_callback, 104,
"<StockItem>", GTK_STOCK_ZOOM_OUT },
view_zoom_cmd_callback, 104, "/View/Zoom/16:1" },
NULL,
"view/zoom.html", NULL },
{ { N_("/View/Zoom/1:8"), NULL,
view_zoom_cmd_callback, 108,
"<StockItem>", GTK_STOCK_ZOOM_OUT },
view_zoom_cmd_callback, 108, "/View/Zoom/16:1" },
NULL,
"view/zoom.html", NULL },
{ { N_("/View/Zoom/1:16"), NULL,
view_zoom_cmd_callback, 116,
"<StockItem>", GTK_STOCK_ZOOM_OUT },
view_zoom_cmd_callback, 116, "/View/Zoom/16:1" },
NULL,
"view/zoom.html", NULL },
{ { "/View/Zoom/Other", NULL,
NULL, 0, "/View/Zoom/16:1" },
NULL,
"view/zoom.html", NULL },
{ { N_("/View/Dot for Dot"), NULL,
view_dot_for_dot_cmd_callback, 0, "<ToggleItem>" },
@ -411,19 +413,18 @@ GimpItemFactoryEntry image_menu_entries[] =
NULL,
"view/toggle_statusbar.html", NULL },
MENU_SEPARATOR ("/View/---"),
{ { N_("/View/Shrink Wrap"), "<control>E",
view_shrink_wrap_cmd_callback, 0 },
NULL,
"view/shrink_wrap.html", NULL },
{ { N_("/View/Fullscreen"), "F11",
view_fullscreen_cmd_callback, 0, "<ToggleItem>" },
NULL,
"view/fullscreen.html", NULL },
MENU_SEPARATOR ("/View/---"),
{ { N_("/View/New View"), "",
view_new_view_cmd_callback, 0,
"<StockItem>", GTK_STOCK_NEW },
NULL,
"view/new_view.html", NULL },
/* <Image>/Image */
MENU_BRANCH (N_("/_Image")),
@ -1257,19 +1258,25 @@ image_menu_update (GtkItemFactory *item_factory,
/* View */
SET_SENSITIVE ("/View/Zoom In", gdisp);
SET_SENSITIVE ("/View/Zoom Out", gdisp);
SET_SENSITIVE ("/View/Zoom to Fit Window", gdisp);
SET_SENSITIVE ("/View/New View", gdisp);
SET_SENSITIVE ("/View/Zoom/16:1", gdisp);
SET_SENSITIVE ("/View/Zoom/8:1", gdisp);
SET_SENSITIVE ("/View/Zoom/4:1", gdisp);
SET_SENSITIVE ("/View/Zoom/2:1", gdisp);
SET_SENSITIVE ("/View/Zoom/1:1", gdisp);
SET_SENSITIVE ("/View/Zoom/1:2", gdisp);
SET_SENSITIVE ("/View/Zoom/1:4", gdisp);
SET_SENSITIVE ("/View/Zoom/1:8", gdisp);
SET_SENSITIVE ("/View/Zoom/1:16", gdisp);
SET_SENSITIVE ("/View/Zoom/Zoom In", gdisp);
SET_SENSITIVE ("/View/Zoom/Zoom Out", gdisp);
SET_SENSITIVE ("/View/Zoom/Zoom to Fit Window", gdisp);
SET_SENSITIVE ("/View/Zoom/16:1", gdisp);
SET_SENSITIVE ("/View/Zoom/8:1", gdisp);
SET_SENSITIVE ("/View/Zoom/4:1", gdisp);
SET_SENSITIVE ("/View/Zoom/2:1", gdisp);
SET_SENSITIVE ("/View/Zoom/1:1", gdisp);
SET_SENSITIVE ("/View/Zoom/1:2", gdisp);
SET_SENSITIVE ("/View/Zoom/1:4", gdisp);
SET_SENSITIVE ("/View/Zoom/1:8", gdisp);
SET_SENSITIVE ("/View/Zoom/1:16", gdisp);
SET_SENSITIVE ("/View/Zoom/Other", gdisp);
if (gdisp)
image_menu_set_zoom (item_factory, shell);
SET_SENSITIVE ("/View/Dot for Dot", gdisp);
SET_ACTIVE ("/View/Dot for Dot", gdisp && shell->dot_for_dot);
@ -1279,12 +1286,14 @@ image_menu_update (GtkItemFactory *item_factory,
SET_SENSITIVE ("/View/Display Filters...", gdisp);
SET_SENSITIVE ("/View/Show Selection", gdisp);
SET_ACTIVE ("/View/Show Selection", gdisp && ! shell->select->hidden);
SET_ACTIVE ("/View/Show Selection", (gdisp && shell->select &&
! shell->select->hidden));
SET_SENSITIVE ("/View/Show Layer Boundary", gdisp);
SET_ACTIVE ("/View/Show Layer Boundary", gdisp && ! shell->select->layer_hidden);
SET_ACTIVE ("/View/Show Layer Boundary", (gdisp && shell->select &&
! shell->select->layer_hidden));
SET_SENSITIVE ("/View/Show Guides", gdisp);
SET_ACTIVE ("/View/Show Guides", gdisp && gdisp->draw_guides);
SET_SENSITIVE ("/View/Show Guides", gdisp);
SET_ACTIVE ("/View/Show Guides", gdisp && gdisp->draw_guides);
SET_SENSITIVE ("/View/Snap to Guides", gdisp);
SET_ACTIVE ("/View/Snap to Guides", gdisp && gdisp->snap_to_guides);
@ -1300,12 +1309,11 @@ image_menu_update (GtkItemFactory *item_factory,
SET_SENSITIVE ("/View/Show Statusbar", gdisp);
SET_ACTIVE ("/View/Show Statusbar", gdisp && visibility->statusbar);
SET_SENSITIVE ("/View/Shrink Wrap", gdisp);
SET_SENSITIVE ("/View/Fullscreen", gdisp);
SET_ACTIVE ("/View/Fullscreen", gdisp && fullscreen);
SET_SENSITIVE ("/View/New View", gdisp);
SET_SENSITIVE ("/View/Shrink Wrap", gdisp);
/* Image */
SET_SENSITIVE ("/Image/Mode/RGB", gdisp && ! is_rgb);
@ -1394,3 +1402,58 @@ image_menu_background_changed (GimpContext *context,
gimp_item_factory_set_color (GTK_ITEM_FACTORY (item_factory),
"/Edit/Fill with BG Color", color, FALSE);
}
static void
image_menu_set_zoom (GtkItemFactory *item_factory,
GimpDisplayShell *shell)
{
const gchar *menu = NULL;
guint scalesrc;
guint scaledest;
scalesrc = SCALESRC (shell);
scaledest = SCALEDEST (shell);
if (scaledest == 1)
{
switch (scalesrc)
{
case 1: menu = "/View/Zoom/1:1"; break;
case 2: menu = "/View/Zoom/1:2"; break;
case 4: menu = "/View/Zoom/1:4"; break;
case 8: menu = "/View/Zoom/1:8"; break;
case 16: menu = "/View/Zoom/1:16"; break;
}
}
else if (scalesrc == 1)
{
switch (scaledest)
{
case 2: menu = "/View/Zoom/2:1"; break;
case 4: menu = "/View/Zoom/4:1"; break;
case 8: menu = "/View/Zoom/8:1"; break;
case 16: menu = "/View/Zoom/16:1"; break;
}
}
if (menu)
{
gimp_item_factory_set_label (item_factory, "/View/Zoom/Other",_("Other"));
gimp_item_factory_set_sensitive (item_factory, "/View/Zoom/Other", FALSE);
}
else
{
gchar *label;
menu = "/View/Zoom/Other";
label = g_strdup_printf (_("Other (%d:%d)"), scaledest, scalesrc);
gimp_item_factory_set_label (item_factory, menu, label);
gimp_item_factory_set_sensitive (item_factory, menu, TRUE);
g_free (label);
}
gimp_item_factory_set_active (item_factory, menu, TRUE);
}