> Date: Sun, 26 Dec 2010 18:38:19 +0100
> Subject: Re: [Viking-devel] [PATCH] Improve menu keybinding of toggle showing 
> of copyright.
> From: guilhem.bonnefi...@gmail.com
> To: rw_nor...@hotmail.com
> CC: viking-de...@lists.sf.net
> 
> 2010/12/24 Rob Norris <rw_nor...@hotmail.com>:
> > Now 'r' so it doesn't conflict with existing keybinding.
> 
> Sorry for the conflict.
> I'm currently working on a new feature (logo display) needing new
> "Show" entry menu. I realized that I'm not sure such feature need
> shortcuts. Is it really usefull to show/hide crosshair, copyrights
> with a single press? I imagine it is better to not add shortcut for
> the "Show" entries in order to keep the letters for other features.

I think it's best to try to have keyboard shortcuts for every menu entry, where 
possible.
I expect it would be in the Gnome Human Interface Guide.
 
> What's your opinion?

The other alternative would be to create a new 'Show' submenu entry (like the 
Zoom & Pan entries).
[Example fix attached]

Thus this would:
1. Make the overall View Menu shorter
2. Since in a new menu level, it's a new menu keyboard shortcut list - thus 
freeing shortcuts / giving more options.

The minor downside is it's maybe less obvious to see what the function shortcut 
keys do (F5 etc...)

The final point is maybe for copyright / logo display - is that user should not 
have the ability to turn it off.

> -- 
> Guilhem BONNEFILLE
> -=- JID: gu...@im.apinc.org MSN: guilhem_bonnefi...@hotmail.com
> -=- mailto:guilhem.bonnefi...@gmail.com
> -=- http://nathguil.free.fr/
                                          
diff --git a/src/menu.xml.h b/src/menu.xml.h
index cc60365..3177ffa 100644
--- a/src/menu.xml.h
+++ b/src/menu.xml.h
@@ -53,15 +53,17 @@ static const char *menu_xml =
 	"      <menuitem action='GotoLL'/>"
 	"      <menuitem action='GotoUTM'/>"
 	"      <separator/>"
-	"      <menuitem action='ShowScale'/>"
-	"      <menuitem action='ShowCopyright'/>"
-	"      <menuitem action='ShowCenterMark'/>"
 	"      <menuitem action='SetBGColor'/>"
 	"      <menuitem action='FullScreen'/>"
-	"      <menuitem action='ViewSidePanel'/>"
-	"      <menuitem action='ViewStatusBar'/>"
-	"      <menuitem action='ViewToolbar'/>"
-	"      <menuitem action='ViewMainMenu'/>"
+	"      <menu action='SetShow'>"
+	"          <menuitem action='ShowScale'/>"
+	"          <menuitem action='ShowCopyright'/>"
+	"          <menuitem action='ShowCenterMark'/>"
+	"          <menuitem action='ViewSidePanel'/>"
+	"          <menuitem action='ViewStatusBar'/>"
+	"          <menuitem action='ViewToolbar'/>"
+	"          <menuitem action='ViewMainMenu'/>"
+	"      </menu>"
 	"      <separator/>"
 	"      <menuitem action='ZoomIn'/>"
 	"      <menuitem action='ZoomOut'/>"
diff --git a/src/vikwindow.c b/src/vikwindow.c
index 6b1b935..a90534c 100644
--- a/src/vikwindow.c
+++ b/src/vikwindow.c
@@ -354,7 +354,7 @@ static gboolean key_press_event( VikWindow *vw, GdkEventKey *event, gpointer dat
   /* Restore Main Menu via Escape key if the user has hidden it */
   /* This key is more likely to be used as they may not remember the function key */
   if ( event->keyval == GDK_Escape ) {
-    GtkWidget *check_box = gtk_ui_manager_get_widget ( vw->uim, "/ui/MainMenu/View/ViewMainMenu" );
+    GtkWidget *check_box = gtk_ui_manager_get_widget ( vw->uim, "/ui/MainMenu/View/SetShow/ViewMainMenu" );
     if ( check_box ) {
       gboolean state = gtk_check_menu_item_get_active ( GTK_CHECK_MENU_ITEM(check_box) );
       if ( !state ) {
@@ -1225,7 +1225,7 @@ static void menu_delete_layer_cb ( GtkAction *a, VikWindow *vw )
 
 static void view_side_panel_cb ( GtkAction *a, VikWindow *vw )
 {
-  GtkWidget *check_box = gtk_ui_manager_get_widget ( vw->uim, "/ui/MainMenu/View/ViewSidePanel" );
+  GtkWidget *check_box = gtk_ui_manager_get_widget ( vw->uim, "/ui/MainMenu/View/SetShow/ViewSidePanel" );
   g_assert(check_box);
   gboolean state = gtk_check_menu_item_get_active ( GTK_CHECK_MENU_ITEM(check_box));
   if ( state )
@@ -1236,7 +1236,7 @@ static void view_side_panel_cb ( GtkAction *a, VikWindow *vw )
 
 static void view_statusbar_cb ( GtkAction *a, VikWindow *vw )
 {
-  GtkWidget *check_box = gtk_ui_manager_get_widget ( vw->uim, "/ui/MainMenu/View/ViewStatusBar" );
+  GtkWidget *check_box = gtk_ui_manager_get_widget ( vw->uim, "/ui/MainMenu/View/SetShow/ViewStatusBar" );
   if ( !check_box )
     return;
   gboolean state = gtk_check_menu_item_get_active ( GTK_CHECK_MENU_ITEM(check_box) );
@@ -1248,7 +1248,7 @@ static void view_statusbar_cb ( GtkAction *a, VikWindow *vw )
 
 static void view_toolbar_cb ( GtkAction *a, VikWindow *vw )
 {
-  GtkWidget *check_box = gtk_ui_manager_get_widget ( vw->uim, "/ui/MainMenu/View/ViewToolbar" );
+  GtkWidget *check_box = gtk_ui_manager_get_widget ( vw->uim, "/ui/MainMenu/View/SetShow/ViewToolbar" );
   if ( !check_box )
     return;
   gboolean state = gtk_check_menu_item_get_active ( GTK_CHECK_MENU_ITEM(check_box) );
@@ -1260,7 +1260,7 @@ static void view_toolbar_cb ( GtkAction *a, VikWindow *vw )
 
 static void view_main_menu_cb ( GtkAction *a, VikWindow *vw )
 {
-  GtkWidget *check_box = gtk_ui_manager_get_widget ( vw->uim, "/ui/MainMenu/View/ViewMainMenu" );
+  GtkWidget *check_box = gtk_ui_manager_get_widget ( vw->uim, "/ui/MainMenu/View/SetShow/ViewMainMenu" );
   if ( !check_box )
     return;
   gboolean state = gtk_check_menu_item_get_active ( GTK_CHECK_MENU_ITEM(check_box) );
@@ -1583,15 +1583,15 @@ void vik_window_open_file ( VikWindow *vw, const gchar *filename, gboolean chang
 
       vik_layers_panel_change_coord_mode ( vw->viking_vlp, vik_viewport_get_coord_mode ( vw->viking_vvp ) );
 
-      mode_button = gtk_ui_manager_get_widget ( vw->uim, "/ui/MainMenu/View/ShowScale" );
+      mode_button = gtk_ui_manager_get_widget ( vw->uim, "/ui/MainMenu/View/SetShow/ShowScale" );
       g_assert ( mode_button );
       gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM(mode_button),vik_viewport_get_draw_scale(vw->viking_vvp) );
 
-      mode_button = gtk_ui_manager_get_widget ( vw->uim, "/ui/MainMenu/View/ShowCopyright" );
+      mode_button = gtk_ui_manager_get_widget ( vw->uim, "/ui/MainMenu/View/SetShow/ShowCopyright" );
       g_assert ( mode_button );
       gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM(mode_button),vik_viewport_get_draw_copyright(vw->viking_vvp) );
 
-      mode_button = gtk_ui_manager_get_widget ( vw->uim, "/ui/MainMenu/View/ShowCenterMark" );
+      mode_button = gtk_ui_manager_get_widget ( vw->uim, "/ui/MainMenu/View/SetShow/ShowCenterMark" );
       g_assert ( mode_button );
       gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM(mode_button),vik_viewport_get_draw_centermark(vw->viking_vvp) );
     }
@@ -2206,7 +2206,7 @@ static void window_change_coord_mode_cb ( GtkAction *old_a, GtkAction *a, VikWin
 
 static void set_draw_scale ( GtkAction *a, VikWindow *vw )
 {
-  GtkWidget *check_box = gtk_ui_manager_get_widget ( vw->uim, "/ui/MainMenu/View/ShowScale" );
+  GtkWidget *check_box = gtk_ui_manager_get_widget ( vw->uim, "/ui/MainMenu/View/SetShow/ShowScale" );
   g_assert(check_box);
   gboolean state = gtk_check_menu_item_get_active ( GTK_CHECK_MENU_ITEM(check_box));
   vik_viewport_set_draw_scale ( vw->viking_vvp, state );
@@ -2215,7 +2215,7 @@ static void set_draw_scale ( GtkAction *a, VikWindow *vw )
 
 static void set_draw_copyright ( GtkAction *a, VikWindow *vw )
 {
-  GtkWidget *check_box = gtk_ui_manager_get_widget ( vw->uim, "/ui/MainMenu/View/ShowCopyright" );
+  GtkWidget *check_box = gtk_ui_manager_get_widget ( vw->uim, "/ui/MainMenu/View/SetShow/ShowCopyright" );
   g_assert(check_box);
   gboolean state = gtk_check_menu_item_get_active ( GTK_CHECK_MENU_ITEM(check_box));
   vik_viewport_set_draw_copyright ( vw->viking_vvp, state );
@@ -2224,7 +2224,7 @@ static void set_draw_copyright ( GtkAction *a, VikWindow *vw )
 
 static void set_draw_centermark ( GtkAction *a, VikWindow *vw )
 {
-  GtkWidget *check_box = gtk_ui_manager_get_widget ( vw->uim, "/ui/MainMenu/View/ShowCenterMark" );
+  GtkWidget *check_box = gtk_ui_manager_get_widget ( vw->uim, "/ui/MainMenu/View/SetShow/ShowCenterMark" );
   g_assert(check_box);
   gboolean state = gtk_check_menu_item_get_active ( GTK_CHECK_MENU_ITEM(check_box));
   vik_viewport_set_draw_centermark ( vw->viking_vvp, state );
@@ -2257,6 +2257,7 @@ static GtkActionEntry entries[] = {
   { "File", NULL, N_("_File"), 0, 0, 0 },
   { "Edit", NULL, N_("_Edit"), 0, 0, 0 },
   { "View", NULL, N_("_View"), 0, 0, 0 },
+  { "SetShow", NULL, N_("_Show"), 0, 0, 0 },
   { "SetZoom", NULL, N_("_Zoom"), 0, 0, 0 },
   { "SetPan", NULL, N_("_Pan"), 0, 0, 0 },
   { "Layers", NULL, N_("_Layers"), 0, 0, 0 },
@@ -2348,14 +2349,14 @@ static GtkRadioActionEntry tool_entries[] = {
 };
 
 static GtkToggleActionEntry toggle_entries[] = {
-  { "ShowScale",      NULL,                 N_("_Show Scale"),               "F5",         N_("Show Scale"),                              (GCallback)set_draw_scale, TRUE },
-  { "ShowCopyright",  NULL,                 N_("_Show Copyright"),           "F7",         N_("Show Copyright notice(s)"),                (GCallback)set_draw_copyright, TRUE },
+  { "ShowScale",      NULL,                 N_("Show _Scale"),               "F5",         N_("Show Scale"),                              (GCallback)set_draw_scale, TRUE },
+  { "ShowCopyright",  NULL,                 N_("Show Copy_right"),           "F7",         N_("Show Copyright notice(s)"),                (GCallback)set_draw_copyright, TRUE },
   { "ShowCenterMark", NULL,                 N_("Show _Center Mark"),         "F6",         N_("Show Center Mark"),                        (GCallback)set_draw_centermark, TRUE },
   { "FullScreen",     GTK_STOCK_FULLSCREEN, N_("_Full Screen"),              "F11",        N_("Activate full screen mode"),               (GCallback)full_screen_cb, FALSE },
-  { "ViewSidePanel",  GTK_STOCK_INDEX,      N_("Show Side Pa_nel"),          "F9",         N_("Show Side Panel"),                         (GCallback)view_side_panel_cb, TRUE },
+  { "ViewSidePanel",  GTK_STOCK_INDEX,      N_("Show Side _Panel"),          "F9",         N_("Show Side Panel"),                         (GCallback)view_side_panel_cb, TRUE },
   { "ViewStatusBar",  NULL,                 N_("Show Status_bar"),           "F12",        N_("Show Statusbar"),                          (GCallback)view_statusbar_cb, TRUE },
-  { "ViewToolbar",    NULL,                 N_("Show Toolb_ar"),             "F3",         N_("Show Toolbar"),                            (GCallback)view_toolbar_cb, TRUE },
-  { "ViewMainMenu",   NULL,                 N_("Sho_w Menu"),                "F4",         N_("Show Menu"),                               (GCallback)view_main_menu_cb, TRUE },
+  { "ViewToolbar",    NULL,                 N_("Show _Toolbar"),             "F3",         N_("Show Toolbar"),                            (GCallback)view_toolbar_cb, TRUE },
+  { "ViewMainMenu",   NULL,                 N_("Show _Menu"),                "F4",         N_("Show Menu"),                               (GCallback)view_main_menu_cb, TRUE },
 };
 
 #include "menu.xml.h"
------------------------------------------------------------------------------
Learn how Oracle Real Application Clusters (RAC) One Node allows customers
to consolidate database storage, standardize their database environment, and, 
should the need arise, upgrade to a full multi-node Oracle RAC database 
without downtime or disruption
http://p.sf.net/sfu/oracle-sfdevnl
_______________________________________________
Viking-devel mailing list
Viking-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/viking-devel
Viking home page: http://viking.sf.net/

Reply via email to