From cacc04d4a265a1a900f32289213ed7e4211cd914 Mon Sep 17 00:00:00 2001 From: Christophe CURIS Date: Sun, 28 Apr 2013 15:37:53 +0200 Subject: [PATCH] Move the list of keyboard shortcut texts into the array of their config keyword The config-file-keyword was defined in an array, but the user displayed string was defined at another place, thus requiring special care when modifying the list, to keep the same number of entries, in the same order, ... This was an open call for subtle bugs, so the keyword and user string are now at a single place, making updates on the list easier and the GUI generation code smaller. --- WPrefs.app/KeyboardShortcuts.c | 244 ++++++++++++++++------------------------- 1 file changed, 94 insertions(+), 150 deletions(-) diff --git a/WPrefs.app/KeyboardShortcuts.c b/WPrefs.app/KeyboardShortcuts.c index 61a49a1a..d5b2ce18 100644 --- a/WPrefs.app/KeyboardShortcuts.c +++ b/WPrefs.app/KeyboardShortcuts.c @@ -61,82 +61,94 @@ typedef struct _Panel { #define ICON_FILE "keyshortcuts" /* - * Must be in the same order as the corresponding items in - * "actions list" in createPanel() + * List of user definable shortcut keys + * First parameter is the internal keyword known by WMaker + * Second is the text displayed to the user */ -static char *keyOptions[] = { - "RootMenuKey", - "WindowListKey", - "WindowMenuKey", - "HideKey", - "HideOthersKey", - "MiniaturizeKey", - "MinimizeAllKey", - "CloseKey", - "MaximizeKey", - "VMaximizeKey", - "HMaximizeKey", - "LHMaximizeKey", - "RHMaximizeKey", - "MaximusKey", - "RaiseKey", - "LowerKey", - "RaiseLowerKey", - "ShadeKey", - "MoveResizeKey", - "SelectKey", - "FocusNextKey", - "FocusPrevKey", - "GroupNextKey", - "GroupPrevKey", - "NextWorkspaceKey", - "PrevWorkspaceKey", - "LastWorkspaceKey", - "NextWorkspaceLayerKey", - "PrevWorkspaceLayerKey", - "Workspace1Key", - "Workspace2Key", - "Workspace3Key", - "Workspace4Key", - "Workspace5Key", - "Workspace6Key", - "Workspace7Key", - "Workspace8Key", - "Workspace9Key", - "Workspace10Key", - "MoveToNextWorkspaceKey", - "MoveToPrevWorkspaceKey", - "MoveToLastWorkspaceKey", - "MoveToNextWorkspaceLayerKey", - "MoveToPrevWorkspaceLayerKey", - "MoveToWorkspace1Key", - "MoveToWorkspace2Key", - "MoveToWorkspace3Key", - "MoveToWorkspace4Key", - "MoveToWorkspace5Key", - "MoveToWorkspace6Key", - "MoveToWorkspace7Key", - "MoveToWorkspace8Key", - "MoveToWorkspace9Key", - "MoveToWorkspace10Key", - "WindowShortcut1Key", - "WindowShortcut2Key", - "WindowShortcut3Key", - "WindowShortcut4Key", - "WindowShortcut5Key", - "WindowShortcut6Key", - "WindowShortcut7Key", - "WindowShortcut8Key", - "WindowShortcut9Key", - "WindowShortcut10Key", - "WindowRelaunchKey", - "ScreenSwitchKey", - "DockRaiseLowerKey", -#ifndef XKB_MODELOCK - "ClipRaiseLowerKey" -#else - "ClipRaiseLowerKey", - "ToggleKbdModeKey" +static const struct { + /* + * Fixme: these strings should be 'const', but 'GetStringForKey' + * and 'WMAddListItem' do not allow us to do so + */ + char *key; + char *title; +} keyOptions[] = { + { "RootMenuKey", N_("Open applications menu") }, + { "WindowListKey", N_("Open window list menu") }, + { "WindowMenuKey", N_("Open window commands menu") }, + { "HideKey", N_("Hide active application") }, + { "HideOthersKey", N_("Hide other applications") }, + { "MiniaturizeKey", N_("Miniaturize active window") }, + { "MinimizeAllKey", N_("Miniaturize all windows") }, + { "CloseKey", N_("Close active window") }, + { "MaximizeKey", N_("Maximize active window") }, + { "VMaximizeKey", N_("Maximize active window vertically") }, + { "HMaximizeKey", N_("Maximize active window horizontally") }, + { "LHMaximizeKey", N_("Maximize active window left half") }, + { "RHMaximizeKey", N_("Maximize active window right half") }, + { "MaximusKey", N_("Maximus: Tiled maximization ") }, + { "RaiseKey", N_("Raise active window") }, + { "LowerKey", N_("Lower active window") }, + { "RaiseLowerKey", N_("Raise/Lower window under mouse pointer") }, + { "ShadeKey", N_("Shade active window") }, + { "MoveResizeKey", N_("Move/Resize active window") }, + { "SelectKey", N_("Select active window") }, + { "FocusNextKey", N_("Focus next window") }, + { "FocusPrevKey", N_("Focus previous window") }, + { "GroupNextKey", N_("Focus next group window") }, + { "GroupPrevKey", N_("Focus previous group window") }, + + /* Workspace Related */ + { "NextWorkspaceKey", N_("Switch to next workspace") }, + { "PrevWorkspaceKey", N_("Switch to previous workspace") }, + { "LastWorkspaceKey", N_("Switch to last used workspace") }, + { "NextWorkspaceLayerKey", N_("Switch to next ten workspaces") }, + { "PrevWorkspaceLayerKey", N_("Switch to previous ten workspaces") }, + { "Workspace1Key", N_("Switch to workspace 1") }, + { "Workspace2Key", N_("Switch to workspace 2") }, + { "Workspace3Key", N_("Switch to workspace 3") }, + { "Workspace4Key", N_("Switch to workspace 4") }, + { "Workspace5Key", N_("Switch to workspace 5") }, + { "Workspace6Key", N_("Switch to workspace 6") }, + { "Workspace7Key", N_("Switch to workspace 7") }, + { "Workspace8Key", N_("Switch to workspace 8") }, + { "Workspace9Key", N_("Switch to workspace 9") }, + { "Workspace10Key", N_("Switch to workspace 10") }, + { "MoveToNextWorkspaceKey", N_("Move window to next workspace") }, + { "MoveToPrevWorkspaceKey", N_("Move window to previous workspace") }, + { "MoveToLastWorkspaceKey", N_("Move window to last used workspace") }, + { "MoveToNextWorkspaceLayerKey", N_("Move window to next ten workspaces") }, + { "MoveToPrevWorkspaceLayerKey", N_("Move window to previous ten workspaces") }, + { "MoveToWorkspace1Key", N_("Move window to workspace 1") }, + { "MoveToWorkspace2Key", N_("Move window to workspace 2") }, + { "MoveToWorkspace3Key", N_("Move window to workspace 3") }, + { "MoveToWorkspace4Key", N_("Move window to workspace 4") }, + { "MoveToWorkspace5Key", N_("Move window to workspace 5") }, + { "MoveToWorkspace6Key", N_("Move window to workspace 6") }, + { "MoveToWorkspace7Key", N_("Move window to workspace 7") }, + { "MoveToWorkspace8Key", N_("Move window to workspace 8") }, + { "MoveToWorkspace9Key", N_("Move window to workspace 9") }, + { "MoveToWorkspace10Key", N_("Move window to workspace 10") }, + + /* Window Selection */ + { "WindowShortcut1Key", N_("Shortcut for window 1") }, + { "WindowShortcut2Key", N_("Shortcut for window 2") }, + { "WindowShortcut3Key", N_("Shortcut for window 3") }, + { "WindowShortcut4Key", N_("Shortcut for window 4") }, + { "WindowShortcut5Key", N_("Shortcut for window 5") }, + { "WindowShortcut6Key", N_("Shortcut for window 6") }, + { "WindowShortcut7Key", N_("Shortcut for window 7") }, + { "WindowShortcut8Key", N_("Shortcut for window 8") }, + { "WindowShortcut9Key", N_("Shortcut for window 9") }, + { "WindowShortcut10Key", N_("Shortcut for window 10") }, + + /* Misc. */ + { "WindowRelaunchKey", N_("Launch new instance of application") }, + { "ScreenSwitchKey", N_("Switch to Next Screen/Monitor") }, + { "DockRaiseLowerKey", N_("Raise/Lower Dock") }, + { "ClipRaiseLowerKey", N_("Raise/Lower Clip") } +#ifdef XKB_MODELOCK + ,{ "ToggleKbdModeKey", N_("Toggle keyboard language") } #endif /* XKB_MODELOCK */ }; @@ -388,7 +400,7 @@ static void showData(_Panel * panel) for (i = 0; i < panel->actionCount; i++) { - str = GetStringForKey(keyOptions[i]); + str = GetStringForKey(keyOptions[i].key); if (panel->shortcuts[i]) wfree(panel->shortcuts[i]); if (str) @@ -437,6 +449,7 @@ static void createPanel(Panel * p) WMScreen *scr = WMWidgetScreen(panel->parent); WMColor *color; WMFont *boldFont; + int i; panel->capturing = 0; @@ -469,78 +482,9 @@ static void createPanel(Panel * p) WMSetListUserDrawProc(panel->actLs, paintItem); WMHangData(panel->actLs, panel); - WMAddListItem(panel->actLs, _("Open applications menu")); - WMAddListItem(panel->actLs, _("Open window list menu")); - WMAddListItem(panel->actLs, _("Open window commands menu")); - WMAddListItem(panel->actLs, _("Hide active application")); - WMAddListItem(panel->actLs, _("Hide other applications")); - WMAddListItem(panel->actLs, _("Miniaturize active window")); - WMAddListItem(panel->actLs, _("Miniaturize all windows")); - WMAddListItem(panel->actLs, _("Close active window")); - WMAddListItem(panel->actLs, _("Maximize active window")); - WMAddListItem(panel->actLs, _("Maximize active window vertically")); - WMAddListItem(panel->actLs, _("Maximize active window horizontally")); - WMAddListItem(panel->actLs, _("Maximize active window left half")); - WMAddListItem(panel->actLs, _("Maximize active window right half")); - WMAddListItem(panel->actLs, _("Maximus: Tiled maximization ")); - WMAddListItem(panel->actLs, _("Raise active window")); - WMAddListItem(panel->actLs, _("Lower active window")); - WMAddListItem(panel->actLs, _("Raise/Lower window under mouse pointer")); - WMAddListItem(panel->actLs, _("Shade active window")); - WMAddListItem(panel->actLs, _("Move/Resize active window")); - WMAddListItem(panel->actLs, _("Select active window")); - WMAddListItem(panel->actLs, _("Focus next window")); - WMAddListItem(panel->actLs, _("Focus previous window")); - WMAddListItem(panel->actLs, _("Focus next group window")); - WMAddListItem(panel->actLs, _("Focus previous group window")); - WMAddListItem(panel->actLs, _("Switch to next workspace")); - WMAddListItem(panel->actLs, _("Switch to previous workspace")); - WMAddListItem(panel->actLs, _("Switch to last used workspace")); - WMAddListItem(panel->actLs, _("Switch to next ten workspaces")); - WMAddListItem(panel->actLs, _("Switch to previous ten workspaces")); - WMAddListItem(panel->actLs, _("Switch to workspace 1")); - WMAddListItem(panel->actLs, _("Switch to workspace 2")); - WMAddListItem(panel->actLs, _("Switch to workspace 3")); - WMAddListItem(panel->actLs, _("Switch to workspace 4")); - WMAddListItem(panel->actLs, _("Switch to workspace 5")); - WMAddListItem(panel->actLs, _("Switch to workspace 6")); - WMAddListItem(panel->actLs, _("Switch to workspace 7")); - WMAddListItem(panel->actLs, _("Switch to workspace 8")); - WMAddListItem(panel->actLs, _("Switch to workspace 9")); - WMAddListItem(panel->actLs, _("Switch to workspace 10")); - WMAddListItem(panel->actLs, _("Move window to next workspace")); - WMAddListItem(panel->actLs, _("Move window to previous workspace")); - WMAddListItem(panel->actLs, _("Move window to last used workspace")); - WMAddListItem(panel->actLs, _("Move window to next ten workspaces")); - WMAddListItem(panel->actLs, _("Move window to previous ten workspaces")); - WMAddListItem(panel->actLs, _("Move window to workspace 1")); - WMAddListItem(panel->actLs, _("Move window to workspace 2")); - WMAddListItem(panel->actLs, _("Move window to workspace 3")); - WMAddListItem(panel->actLs, _("Move window to workspace 4")); - WMAddListItem(panel->actLs, _("Move window to workspace 5")); - WMAddListItem(panel->actLs, _("Move window to workspace 6")); - WMAddListItem(panel->actLs, _("Move window to workspace 7")); - WMAddListItem(panel->actLs, _("Move window to workspace 8")); - WMAddListItem(panel->actLs, _("Move window to workspace 9")); - WMAddListItem(panel->actLs, _("Move window to workspace 10")); - WMAddListItem(panel->actLs, _("Shortcut for window 1")); - WMAddListItem(panel->actLs, _("Shortcut for window 2")); - WMAddListItem(panel->actLs, _("Shortcut for window 3")); - WMAddListItem(panel->actLs, _("Shortcut for window 4")); - WMAddListItem(panel->actLs, _("Shortcut for window 5")); - WMAddListItem(panel->actLs, _("Shortcut for window 6")); - WMAddListItem(panel->actLs, _("Shortcut for window 7")); - WMAddListItem(panel->actLs, _("Shortcut for window 8")); - WMAddListItem(panel->actLs, _("Shortcut for window 9")); - WMAddListItem(panel->actLs, _("Shortcut for window 10")); - WMAddListItem(panel->actLs, _("Launch new instance of application")); - WMAddListItem(panel->actLs, _("Switch to Next Screen/Monitor")); - WMAddListItem(panel->actLs, _("Raise/Lower Dock")); - WMAddListItem(panel->actLs, _("Raise/Lower Clip")); -#ifdef XKB_MODELOCK - WMAddListItem(panel->actLs, _("Toggle keyboard language")); -#endif /* XKB_MODELOCK */ - + for (i = 0; i < sizeof(keyOptions)/sizeof(keyOptions[0]); i++) { + WMAddListItem(panel->actLs, _(keyOptions[i].title)); + } WMSetListAction(panel->actLs, listClick, panel); panel->actionCount = WMGetListNumberOfRows(panel->actLs); @@ -602,10 +546,10 @@ static void storeData(_Panel * panel) } } if (str) { - SetStringForKey(str, keyOptions[i]); + SetStringForKey(str, keyOptions[i].key); wfree(str); } else { - SetStringForKey("None", keyOptions[i]); + SetStringForKey("None", keyOptions[i].key); } } } -- 2.11.4.GIT