# HG changeset patch # User sbr # Date 1375042885 -7200 # Sun Jul 28 22:21:25 2013 +0200 # Node ID 5bd2929788796a4f9874dcb74eb65d56200fd5dd # Parent 3b2f9d049236864727b8449d227ecc936e2cb4de -Codechange: Build the Help toolbar with DropdownListStringItem instead of relying to a range of strings. Discoupling the dropdown strings from the range order allow more flexibility to customize the dropdown content. diff --git a/src/toolbar_gui.cpp b/src/toolbar_gui.cpp --- a/src/toolbar_gui.cpp +++ b/src/toolbar_gui.cpp @@ -1019,9 +1019,39 @@ static CallBackFunction PlaceLandBlockIn } } +enum HelpMenuEntries { + HME_LAND_BLOCK_INFO, + HME_TOGGLE_CONSOLE, + HME_AI_DEBUG, + HME_SCREENSHOT, + HME_ZOOMIN_SCREENSHOT, + HME_DEFAULT_ZOOM_SCREENSHOT, + HME_GIANT_SCREENSHOT, + HME_ABOUT_OPENTTD, + HME_SPRITE_ALIGNER, + HME_TOGGLE_BOUNDING_BOXES, + HME_TOGGLE_DIRTY_BLOCKS, +}; + static CallBackFunction ToolbarHelpClick(Window *w) { - PopupMainToolbMenu(w, WID_TN_HELP, STR_ABOUT_MENU_LAND_BLOCK_INFO, _settings_client.gui.newgrf_developer_tools ? 12 : 9); + DropDownList *list = new DropDownList(); + list->push_back(new DropDownListStringItem(STR_ABOUT_MENU_LAND_BLOCK_INFO, HME_LAND_BLOCK_INFO, false)); + list->push_back(new DropDownListStringItem(STR_ABOUT_MENU_SEPARATOR, -1, false)); + list->push_back(new DropDownListStringItem(STR_ABOUT_MENU_TOGGLE_CONSOLE, HME_TOGGLE_CONSOLE, false)); + list->push_back(new DropDownListStringItem(STR_ABOUT_MENU_AI_DEBUG, HME_AI_DEBUG, false)); + list->push_back(new DropDownListStringItem(STR_ABOUT_MENU_SCREENSHOT, HME_SCREENSHOT, false)); + list->push_back(new DropDownListStringItem(STR_ABOUT_MENU_ZOOMIN_SCREENSHOT, HME_ZOOMIN_SCREENSHOT, false)); + list->push_back(new DropDownListStringItem(STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT, HME_DEFAULT_ZOOM_SCREENSHOT, false)); + list->push_back(new DropDownListStringItem(STR_ABOUT_MENU_GIANT_SCREENSHOT, HME_GIANT_SCREENSHOT, false)); + list->push_back(new DropDownListStringItem(STR_ABOUT_MENU_ABOUT_OPENTTD, HME_ABOUT_OPENTTD, false)); + if (_settings_client.gui.newgrf_developer_tools) { + list->push_back(new DropDownListStringItem(STR_ABOUT_MENU_SPRITE_ALIGNER, HME_SPRITE_ALIGNER, false)); + list->push_back(new DropDownListStringItem(STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES, HME_TOGGLE_BOUNDING_BOXES, false)); + list->push_back(new DropDownListStringItem(STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS, HME_TOGGLE_DIRTY_BLOCKS, false)); + } + + ShowDropDownList(w, list, 0, WID_TN_HELP, 140, true, true); return CBF_NONE; } @@ -1103,17 +1133,17 @@ void ToggleDirtyBlocks() static CallBackFunction MenuClickHelp(int index) { switch (index) { - case 0: return PlaceLandBlockInfo(); - case 2: IConsoleSwitch(); break; - case 3: ShowAIDebugWindow(); break; - case 4: MenuClickSmallScreenshot(); break; - case 5: MenuClickLargeWorldScreenshot(SC_ZOOMEDIN); break; - case 6: MenuClickLargeWorldScreenshot(SC_DEFAULTZOOM); break; - case 7: MenuClickLargeWorldScreenshot(SC_WORLD); break; - case 8: ShowAboutWindow(); break; - case 9: ShowSpriteAlignerWindow(); break; - case 10: ToggleBoundingBoxes(); break; - case 11: ToggleDirtyBlocks(); break; + case HME_LAND_BLOCK_INFO: return PlaceLandBlockInfo(); + case HME_TOGGLE_CONSOLE: IConsoleSwitch(); break; + case HME_AI_DEBUG: ShowAIDebugWindow(); break; + case HME_SCREENSHOT: MenuClickSmallScreenshot(); break; + case HME_ZOOMIN_SCREENSHOT: MenuClickLargeWorldScreenshot(SC_ZOOMEDIN); break; + case HME_DEFAULT_ZOOM_SCREENSHOT: MenuClickLargeWorldScreenshot(SC_DEFAULTZOOM); break; + case HME_GIANT_SCREENSHOT: MenuClickLargeWorldScreenshot(SC_WORLD); break; + case HME_ABOUT_OPENTTD: ShowAboutWindow(); break; + case HME_SPRITE_ALIGNER: ShowSpriteAlignerWindow(); break; + case HME_TOGGLE_BOUNDING_BOXES: ToggleBoundingBoxes(); break; + case HME_TOGGLE_DIRTY_BLOCKS: ToggleDirtyBlocks(); break; } return CBF_NONE; }