diff --git a/src/group_gui.cpp b/src/group_gui.cpp index 9c119dcd69..f7c6d45646 100644 --- a/src/group_gui.cpp +++ b/src/group_gui.cpp @@ -31,6 +31,7 @@ #include "table/sprites.h" #include "safeguards.h" +#include static const int LEVEL_WIDTH = 10; ///< Indenting width of a sub-group in pixels @@ -65,6 +66,10 @@ static const NWidgetPart _nested_group_widgets[] = { NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_GL_RENAME_GROUP), SetFill(0, 1), SetDataTip(SPR_GROUP_RENAME_TRAIN, STR_GROUP_RENAME_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_GL_COLLAPSE_EXPAND_GROUP), SetFill(0, 1), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_GL_COLLAPSE_ALL_GROUPS), SetFill(0, 1), + SetDataTip(STR_GROUP_COLLAPSE_ALL, STR_GROUP_COLLAPSE_ALL), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_GL_EXPAND_ALL_GROUPS), SetFill(0, 1), + SetDataTip(STR_GROUP_EXPAND_ALL, STR_GROUP_EXPAND_ALL), NWidget(WWT_PANEL, COLOUR_GREY), SetFill(1, 1), EndContainer(), NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_GL_REPLACE_PROTECTION), SetFill(0, 1), SetDataTip(SPR_GROUP_REPLACE_OFF_TRAIN, STR_GROUP_REPLACE_PROTECTION_TOOLTIP), @@ -699,6 +704,28 @@ public: this->SetDirty(); break; + case WID_GL_COLLAPSE_ALL_GROUPS: { + std::for_each(_collapsed_groups.begin(), _collapsed_groups.end(), [](std::pair &key_value_pair) { + if (key_value_pair.first != ALL_GROUP && key_value_pair.first != DEFAULT_GROUP && key_value_pair.first != INVALID_GROUP) { + key_value_pair.second = true; + } + }); + OnInvalidateData(); + this->SetDirty(); + break; + } + + case WID_GL_EXPAND_ALL_GROUPS: { + std::for_each(_collapsed_groups.begin(), _collapsed_groups.end(), [](std::pair &key_value_pair) { + if (key_value_pair.first != ALL_GROUP && key_value_pair.first != DEFAULT_GROUP && key_value_pair.first != INVALID_GROUP) { + key_value_pair.second = false; + } + }); + OnInvalidateData(); + this->SetDirty(); + break; + } + case WID_GL_AVAILABLE_VEHICLES: ShowBuildVehicleWindow(INVALID_TILE, this->vli.vtype); break; diff --git a/src/lang/english.txt b/src/lang/english.txt index 887223210e..fb054ce465 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -3355,6 +3355,8 @@ STR_GROUP_DELETE_TOOLTIP :{BLACK}Delete t STR_GROUP_RENAME_TOOLTIP :{BLACK}Rename the selected group STR_GROUP_COLLAPSE :{BLACK}Collapse STR_GROUP_EXPAND :{BLACK}Expand +STR_GROUP_EXPAND_ALL :{BLACK}Expand all +STR_GROUP_COLLAPSE_ALL :{BLACK}Collapse all STR_GROUP_COLLAPSE_TOOLTIP :{BLACK}Click to collapse the selected group STR_GROUP_EXPAND_TOOLTIP :{BLACK}Click to expand the selected group STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Click to protect this group from global autoreplace diff --git a/src/widgets/group_widget.h b/src/widgets/group_widget.h index 15f477e2d5..8fa1f8ea29 100644 --- a/src/widgets/group_widget.h +++ b/src/widgets/group_widget.h @@ -32,6 +32,8 @@ enum GroupListWidgets { WID_GL_DELETE_GROUP, ///< Delete group button. WID_GL_RENAME_GROUP, ///< Rename group button. WID_GL_COLLAPSE_EXPAND_GROUP, ///< Collapse/expand group button. + WID_GL_COLLAPSE_ALL_GROUPS, ///< Collapse all groups button. + WID_GL_EXPAND_ALL_GROUPS, ///< Expand all groups button. WID_GL_REPLACE_PROTECTION, ///< Replace protection button. };