From 699763720814dc73d08d64d838f0d37ea2ff01ba Mon Sep 17 00:00:00 2001 From: yexo Date: Sun, 4 Jul 2010 11:48:04 +0000 Subject: (svn r20075) -Feature: customizable hotkeys for the main toolbar in the scenario editor --- src/hotkeys.cpp | 2 ++ src/toolbar_gui.cpp | 102 ++++++++++++++++++++++++++++++++++++---------------- 2 files changed, 73 insertions(+), 31 deletions(-) (limited to 'src') diff --git a/src/hotkeys.cpp b/src/hotkeys.cpp index 47b88361a..df89fdb62 100644 --- a/src/hotkeys.cpp +++ b/src/hotkeys.cpp @@ -244,6 +244,7 @@ struct OrdersWindow; struct BuildAirToolbarWindow; struct BuildDocksToolbarWindow; struct MainToolbarWindow; +struct ScenarioEditorToolbarWindow; struct BuildRailToolbarWindow; static void SaveLoadHotkeys(bool save) @@ -266,6 +267,7 @@ static void SaveLoadHotkeys(bool save) SL_HOTKEYS(dockstoolbar, BuildDocksToolbarWindow); SL_HOTKEYS(maintoolbar, MainToolbarWindow); SL_HOTKEYS(railtoolbar, BuildRailToolbarWindow); + SL_HOTKEYS(scenedit_maintoolbar, ScenarioEditorToolbarWindow); #undef SL_HOTKEYS diff --git a/src/toolbar_gui.cpp b/src/toolbar_gui.cpp index 2cf124b7a..c13c1ca22 100644 --- a/src/toolbar_gui.cpp +++ b/src/toolbar_gui.cpp @@ -1502,6 +1502,29 @@ static ToolbarButtonProc * const _scen_toolbar_button_procs[] = { ToolbarSwitchClick, }; +enum MainToolbarEditorHotkeys { + MTEHK_PAUSE, + MTEHK_FASTFORWARD, + MTEHK_SETTINGS, + MTEHK_SAVEGAME, + MTEHK_GENLAND, + MTEHK_GENTOWN, + MTEHK_GENINDUSTRY, + MTEHK_BUILD_ROAD, + MTEHK_BUILD_DOCKS, + MTEHK_BUILD_TREES, + MTEHK_SIGN, + MTEHK_MUSIC, + MTEHK_LANDINFO, + MTEHK_SMALL_SCREENSHOT, + MTEHK_GIANT_SCREENSHOT, + MTEHK_ZOOM_IN, + MTEHK_ZOOM_OUT, + MTEHK_TERRAFORM, + MTEHK_SMALLMAP, + MTEHK_EXTRA_VIEWPORT, +}; + struct ScenarioEditorToolbarWindow : Window { public: ScenarioEditorToolbarWindow(const WindowDesc *desc) : Window() @@ -1573,37 +1596,27 @@ public: virtual EventState OnKeyPress(uint16 key, uint16 keycode) { - switch (keycode) { - case WKC_F1: case WKC_PAUSE: ToolbarPauseClick(this); break; - case WKC_F2: ShowGameOptions(); break; - case WKC_F3: MenuClickSaveLoad(); break; - case WKC_F4: ToolbarScenGenLand(this); break; - case WKC_F5: ToolbarScenGenTown(this); break; - case WKC_F6: ToolbarScenGenIndustry(this); break; - case WKC_F7: ToolbarScenBuildRoad(this); break; - case WKC_F8: ToolbarScenBuildDocks(this); break; - case WKC_F9: ToolbarScenPlantTrees(this); break; - case WKC_F10: ToolbarScenPlaceSign(this); break; - case WKC_F11: ShowMusicWindow(); break; - case WKC_F12: PlaceLandBlockInfo(); break; - case WKC_CTRL | 'S': MenuClickSmallScreenshot(); break; - case WKC_CTRL | 'G': MenuClickWorldScreenshot(); break; - - /* those following are all fall through */ - case WKC_NUM_PLUS: - case WKC_EQUALS: - case WKC_SHIFT | WKC_EQUALS: - case WKC_SHIFT | WKC_F5: ToolbarZoomInClick(this); break; - - /* those following are all fall through */ - case WKC_NUM_MINUS: - case WKC_MINUS: - case WKC_SHIFT | WKC_MINUS: - case WKC_SHIFT | WKC_F6: ToolbarZoomOutClick(this); break; - - case 'L': ShowEditorTerraformToolbar(); break; - case 'M': ShowSmallMap(); break; - case 'V': ShowExtraViewPortWindow(); break; + switch (CheckHotkeyMatch(scenedit_maintoolbar_hotkeys, keycode, this)) { + case MTEHK_PAUSE: ToolbarPauseClick(this); break; + case MTEHK_FASTFORWARD: ToolbarFastForwardClick(this); break; + case MTEHK_SETTINGS: ShowGameOptions(); break; + case MTEHK_SAVEGAME: MenuClickSaveLoad(); break; + case MTEHK_GENLAND: ToolbarScenGenLand(this); break; + case MTEHK_GENTOWN: ToolbarScenGenTown(this); break; + case MTEHK_GENINDUSTRY: ToolbarScenGenIndustry(this); break; + case MTEHK_BUILD_ROAD: ToolbarScenBuildRoad(this); break; + case MTEHK_BUILD_DOCKS: ToolbarScenBuildDocks(this); break; + case MTEHK_BUILD_TREES: ToolbarScenPlantTrees(this); break; + case MTEHK_SIGN: ToolbarScenPlaceSign(this); break; + case MTEHK_MUSIC: ShowMusicWindow(); break; + case MTEHK_LANDINFO: PlaceLandBlockInfo(); break; + case MTEHK_SMALL_SCREENSHOT: MenuClickSmallScreenshot(); break; + case MTEHK_GIANT_SCREENSHOT: MenuClickWorldScreenshot(); break; + case MTEHK_ZOOM_IN: ToolbarZoomInClick(this); break; + case MTEHK_ZOOM_OUT: ToolbarZoomOutClick(this); break; + case MTHK_TERRAFORM: ShowEditorTerraformToolbar(); break; + case MTEHK_SMALLMAP: ShowSmallMap(); break; + case MTHK_EXTRA_VIEWPORT: ShowExtraViewPortWindow(); break; default: return ES_NOT_HANDLED; } return ES_HANDLED; @@ -1655,7 +1668,34 @@ public: this->SetDirty(); } + + static Hotkey scenedit_maintoolbar_hotkeys[]; +}; + +Hotkey ScenarioEditorToolbarWindow::scenedit_maintoolbar_hotkeys[] = { + Hotkey(_maintoolbar_pause_keys, "pause", MTEHK_PAUSE), + Hotkey((uint16)0, "fastforward", MTEHK_FASTFORWARD), + Hotkey(WKC_F2, "settings", MTEHK_SETTINGS), + Hotkey(WKC_F3, "saveload", MTEHK_SAVEGAME), + Hotkey(WKC_F4, "town_list", MTEHK_GENLAND), + Hotkey(WKC_F5, "subsidies", MTEHK_GENTOWN), + Hotkey(WKC_F6, "station_list", MTEHK_GENINDUSTRY), + Hotkey(WKC_F7, "finances", MTEHK_BUILD_ROAD), + Hotkey(WKC_F8, "companies", MTEHK_BUILD_DOCKS), + Hotkey(WKC_F9, "graphs", MTEHK_BUILD_TREES), + Hotkey(WKC_F10, "league", MTEHK_SIGN), + Hotkey(WKC_F11, "industry_list", MTEHK_MUSIC), + Hotkey(WKC_F12, "train_list", MTEHK_LANDINFO), + Hotkey(WKC_CTRL | 'S', "small_screenshot", MTEHK_SMALL_SCREENSHOT), + Hotkey(WKC_CTRL | 'G', "giant_screenshot", MTEHK_GIANT_SCREENSHOT), + Hotkey(_maintoolbar_zoomin_keys, "zoomin", MTEHK_ZOOM_IN), + Hotkey(_maintoolbar_zoomout_keys, "zoomout", MTEHK_ZOOM_OUT), + Hotkey('L', "terraform", MTEHK_TERRAFORM), + Hotkey('M', "smallmap", MTEHK_SMALLMAP), + Hotkey('V', "extra_viewport", MTEHK_EXTRA_VIEWPORT), + HOTKEY_LIST_END(ScenarioEditorToolbarWindow) }; +Hotkey *_scenedit_maintoolbar_hotkeys = ScenarioEditorToolbarWindow::scenedit_maintoolbar_hotkeys; static const NWidgetPart _nested_toolb_scen_inner_widgets[] = { NWidget(WWT_IMGBTN, COLOUR_GREY, TBSE_PAUSE), SetDataTip(SPR_IMG_PAUSE, STR_TOOLBAR_TOOLTIP_PAUSE_GAME), -- cgit v1.2.3-54-g00ecf