[gimp] app: add a View -> Rotate menu
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: add a View -> Rotate menu
- Date: Sat, 20 Apr 2013 20:18:27 +0000 (UTC)
commit 1a755b2dbe41a39d99e91ef5abc234d86c0d57c3
Author: Michael Natterer <mitch gimp org>
Date: Sat Apr 20 22:16:50 2013 +0200
app: add a View -> Rotate menu
Which so far has "Reset", "90°", "-90°" and "180°" entries.
app/actions/view-actions.c | 56 ++++++++++++++++++++++++++++++++++++++++++++-
app/actions/view-commands.c | 36 +++++++++++++++++++++++++++++
app/actions/view-commands.h | 6 +++++
app/widgets/gimphelp-ids.h | 4 ++++
menus/image-menu.xml.in | 7 ++++++
5 files changed, 108 insertions(+), 1 deletion(-)
---
diff --git a/app/actions/view-actions.c b/app/actions/view-actions.c
index 58d8ea8..8cb951b 100644
--- a/app/actions/view-actions.c
+++ b/app/actions/view-actions.c
@@ -57,6 +57,8 @@
static void view_actions_set_zoom (GimpActionGroup *group,
GimpDisplayShell *shell);
+static void view_actions_set_rotate (GimpActionGroup *group,
+ GimpDisplayShell *shell);
static void view_actions_check_type_notify (GimpDisplayConfig *config,
GParamSpec *pspec,
GimpActionGroup *group);
@@ -66,6 +68,7 @@ static const GimpActionEntry view_actions[] =
{
{ "view-menu", NULL, NC_("view-action", "_View") },
{ "view-zoom-menu", NULL, NC_("view-action", "_Zoom") },
+ { "view-rotate-menu", NULL, NC_("view-action", "_Rotate") },
{ "view-padding-color-menu", NULL, NC_("view-action", "_Padding Color") },
{ "view-move-to-screen-menu", GIMP_STOCK_MOVE_TO_SCREEN,
NC_("view-action", "Move to Screen"), NULL, NULL, NULL,
@@ -101,6 +104,12 @@ static const GimpActionEntry view_actions[] =
G_CALLBACK (view_zoom_revert_cmd_callback),
GIMP_HELP_VIEW_ZOOM_REVERT },
+ { "view-rotate-reset", NULL,
+ NC_("view-action", "_Reset to 0°"), NULL,
+ NC_("view-action", "Reset the angle of rotation to 0°"),
+ G_CALLBACK (view_rotate_reset_cmd_callback),
+ GIMP_HELP_VIEW_ROTATE_RESET },
+
{ "view-navigation-window", GIMP_STOCK_NAVIGATION,
NC_("view-action", "Na_vigation Window"), NULL,
NC_("view-action", "Show an overview window for this image"),
@@ -379,6 +388,27 @@ static const GimpRadioActionEntry view_zoom_explicit_actions[] =
GIMP_HELP_VIEW_ZOOM_OTHER }
};
+static const GimpEnumActionEntry view_rotate_actions[] =
+{
+ { "view-rotate-90", GIMP_STOCK_ROTATE_90,
+ NC_("view-action", "Rotate 90° _clockwise"), NULL,
+ NC_("view-action", "Rotate 90 degrees to the right"),
+ GIMP_ROTATE_90, FALSE,
+ GIMP_HELP_VIEW_ROTATE_90 },
+
+ { "view-rotate-180", GIMP_STOCK_ROTATE_180,
+ NC_("view-action", "Rotate _180°"), NULL,
+ NC_("view-action", "Turn upside-down"),
+ GIMP_ROTATE_180, FALSE,
+ GIMP_HELP_VIEW_ROTATE_180 },
+
+ { "view-rotate-270", GIMP_STOCK_ROTATE_270,
+ NC_("view-action", "Rotate 90° counter-clock_wise"), NULL,
+ NC_("view-action", "Rotate 90 degrees to the left"),
+ GIMP_ROTATE_270, FALSE,
+ GIMP_HELP_VIEW_ROTATE_270 }
+};
+
static const GimpEnumActionEntry view_padding_color_actions[] =
{
{ "view-padding-color-theme", NULL,
@@ -515,6 +545,11 @@ view_actions_setup (GimpActionGroup *group)
10000,
G_CALLBACK (view_zoom_explicit_cmd_callback));
+ gimp_action_group_add_enum_actions (group, "view-rotate-action",
+ view_rotate_actions,
+ G_N_ELEMENTS (view_rotate_actions),
+ G_CALLBACK (view_rotate_cmd_callback));
+
gimp_action_group_add_enum_actions (group, "view-padding-color",
view_padding_color_actions,
G_N_ELEMENTS (view_padding_color_actions),
@@ -630,8 +665,16 @@ view_actions_update (GimpActionGroup *group,
SET_SENSITIVE ("view-zoom-1-16", image);
SET_SENSITIVE ("view-zoom-other", image);
+ SET_SENSITIVE ("view-rotate-reset", image);
+ SET_SENSITIVE ("view-rotate-90", image);
+ SET_SENSITIVE ("view-rotate-180", image);
+ SET_SENSITIVE ("view-rotate-270", image);
+
if (image)
- view_actions_set_zoom (group, shell);
+ {
+ view_actions_set_zoom (group, shell);
+ view_actions_set_rotate (group, shell);
+ }
SET_SENSITIVE ("view-navigation-window", image);
SET_SENSITIVE ("view-display-filters", image);
@@ -765,6 +808,17 @@ view_actions_set_zoom (GimpActionGroup *group,
}
static void
+view_actions_set_rotate (GimpActionGroup *group,
+ GimpDisplayShell *shell)
+{
+ gchar *label;
+
+ label = g_strdup_printf (_("_Rotate (%d°)"), (gint) shell->rotate_angle);
+ gimp_action_group_set_action_label (group, "view-rotate-menu", label);
+ g_free (label);
+}
+
+static void
view_actions_check_type_notify (GimpDisplayConfig *config,
GParamSpec *pspec,
GimpActionGroup *group)
diff --git a/app/actions/view-commands.c b/app/actions/view-commands.c
index 9918b03..cc2889c 100644
--- a/app/actions/view-commands.c
+++ b/app/actions/view-commands.c
@@ -45,6 +45,7 @@
#include "display/gimpdisplayshell.h"
#include "display/gimpdisplayshell-appearance.h"
#include "display/gimpdisplayshell-filter-dialog.h"
+#include "display/gimpdisplayshell-rotate.h"
#include "display/gimpdisplayshell-scale.h"
#include "display/gimpdisplayshell-scale-dialog.h"
#include "display/gimpdisplayshell-scroll.h"
@@ -282,6 +283,41 @@ view_dot_for_dot_cmd_callback (GtkAction *action,
}
void
+view_rotate_reset_cmd_callback (GtkAction *action,
+ gpointer data)
+{
+ GimpDisplay *display;
+ GimpDisplayShell *shell;
+ return_if_no_display (display, data);
+
+ shell = gimp_display_get_shell (display);
+
+ gimp_display_shell_rotate_to (shell, 0.0);
+}
+
+void
+view_rotate_cmd_callback (GtkAction *action,
+ gint value,
+ gpointer data)
+{
+ GimpDisplay *display;
+ GimpDisplayShell *shell;
+ gdouble delta = 0.0;
+ return_if_no_display (display, data);
+
+ shell = gimp_display_get_shell (display);
+
+ switch ((GimpRotationType) value)
+ {
+ case GIMP_ROTATE_90: delta = 90; break;
+ case GIMP_ROTATE_180: delta = 180; break;
+ case GIMP_ROTATE_270: delta = -90; break;
+ }
+
+ gimp_display_shell_rotate (shell, delta);
+}
+
+void
view_scroll_horizontal_cmd_callback (GtkAction *action,
gint value,
gpointer data)
diff --git a/app/actions/view-commands.h b/app/actions/view-commands.h
index 4312c1c..810c335 100644
--- a/app/actions/view-commands.h
+++ b/app/actions/view-commands.h
@@ -48,6 +48,12 @@ void view_scroll_vertical_cmd_callback (GtkAction *action,
gint value,
gpointer data);
+void view_rotate_reset_cmd_callback (GtkAction *action,
+ gpointer data);
+void view_rotate_cmd_callback (GtkAction *action,
+ gint value,
+ gpointer data);
+
void view_navigation_window_cmd_callback (GtkAction *action,
gpointer data);
void view_display_filters_cmd_callback (GtkAction *action,
diff --git a/app/widgets/gimphelp-ids.h b/app/widgets/gimphelp-ids.h
index 981226a..00e98e5 100644
--- a/app/widgets/gimphelp-ids.h
+++ b/app/widgets/gimphelp-ids.h
@@ -85,6 +85,10 @@
#define GIMP_HELP_VIEW_ZOOM_FIT_IN "gimp-view-zoom-fit-in"
#define GIMP_HELP_VIEW_ZOOM_FILL "gimp-view-zoom-fill"
#define GIMP_HELP_VIEW_ZOOM_OTHER "gimp-view-zoom-other"
+#define GIMP_HELP_VIEW_ROTATE_RESET "gimp-view-rotate-reset"
+#define GIMP_HELP_VIEW_ROTATE_90 "gimp-view-rotate-90"
+#define GIMP_HELP_VIEW_ROTATE_180 "gimp-view-rotate-180"
+#define GIMP_HELP_VIEW_ROTATE_270 "gimp-view-rotate-270"
#define GIMP_HELP_VIEW_SHOW_SELECTION "gimp-view-show-selection"
#define GIMP_HELP_VIEW_SHOW_LAYER_BOUNDARY "gimp-view-show-layer-boundary"
#define GIMP_HELP_VIEW_SHOW_GUIDES "gimp-view-show-guides"
diff --git a/menus/image-menu.xml.in b/menus/image-menu.xml.in
index d58d3fb..551e765 100644
--- a/menus/image-menu.xml.in
+++ b/menus/image-menu.xml.in
@@ -269,6 +269,13 @@
<separator />
<menuitem action="view-zoom-other" />
</menu>
+ <menu action="view-rotate-menu" name="Rotate">
+ <menuitem action="view-rotate-reset" />
+ <separator />
+ <menuitem action="view-rotate-90" />
+ <menuitem action="view-rotate-270" />
+ <menuitem action="view-rotate-180" />
+ </menu>
<separator />
<menuitem action="view-shrink-wrap" />
<menuitem action="view-fullscreen" />
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]