From c19d61bdac3b91585e4ae0f4e84d5556dac6b274 Mon Sep 17 00:00:00 2001 From: dP Date: Sun, 28 Sep 2025 15:20:19 +0500 Subject: [PATCH] Add a button to show/hide advanced(block) signal types --- src/lang/english.txt | 2 ++ src/rail_gui.cpp | 17 +++++++++++++++++ src/widgets/rail_widget.h | 3 +++ 3 files changed, 22 insertions(+) diff --git a/src/lang/english.txt b/src/lang/english.txt index 63f21bd099..6181e3820f 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -6431,3 +6431,5 @@ CM_STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}Show CM_STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Show hidden ({NUM}) CM_STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Show hidden ({NUM}) +CM_STR_SHOW_BLOCK_SIGNAL_TOOLTIP :Show advanced signal types +CM_STR_HIDE_BLOCK_SIGNAL_TOOLTIP :Hide advanced signal types diff --git a/src/rail_gui.cpp b/src/rail_gui.cpp index 0b9c68a760..1fcd72cf37 100644 --- a/src/rail_gui.cpp +++ b/src/rail_gui.cpp @@ -1688,6 +1688,7 @@ private: this->GetWidget(WID_BS_BLOCK_SEL)->SetDisplayedPlane(show_non_path_signals ? 0 : SZSP_NONE); this->GetWidget(WID_BS_BLOCK_SPACER_SEL)->SetDisplayedPlane(show_non_path_signals ? 0 : SZSP_NONE); + this->GetWidget(CM_WID_BS_BLOCK_BUTTON_SEL)->SetDisplayedPlane(show_non_path_signals ? 0 : 1); } public: @@ -1810,6 +1811,18 @@ public: } break; + case CM_WID_BS_HIDE_BLOCK: + _settings_client.gui.signal_gui_mode = SIGNAL_GUI_PATH; + this->SetSignalUIMode(); + this->ReInit(); + break; + + case CM_WID_BS_SHOW_BLOCK: + _settings_client.gui.signal_gui_mode = SIGNAL_GUI_ALL; + this->SetSignalUIMode(); + this->ReInit(); + break; + default: break; } @@ -1843,6 +1856,10 @@ static constexpr NWidgetPart _nested_signal_builder_widgets[] = { /* Container for both signal groups, spacers, and convert/autofill buttons. */ NWidget(NWID_HORIZONTAL), + NWidget(NWID_SELECTION, INVALID_COLOUR, CM_WID_BS_BLOCK_BUTTON_SEL), + NWidget(WWT_PUSHARROWBTN, COLOUR_DARK_GREEN, CM_WID_BS_HIDE_BLOCK), SetMinimalSize(9, 12), SetArrowWidgetTypeTip(AWV_DECREASE, CM_STR_HIDE_BLOCK_SIGNAL_TOOLTIP), SetFill(0, 1), + NWidget(WWT_PUSHARROWBTN, COLOUR_DARK_GREEN, CM_WID_BS_SHOW_BLOCK), SetMinimalSize(9, 12), SetArrowWidgetTypeTip(AWV_INCREASE, CM_STR_SHOW_BLOCK_SIGNAL_TOOLTIP), SetFill(0, 1), + EndContainer(), /* Block signals (can be hidden). */ NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BS_BLOCK_SEL), NWidget(NWID_VERTICAL, NWidContainerFlag::EqualSize), diff --git a/src/widgets/rail_widget.h b/src/widgets/rail_widget.h index 9d749433ba..21de8eec15 100644 --- a/src/widgets/rail_widget.h +++ b/src/widgets/rail_widget.h @@ -88,6 +88,9 @@ enum BuildSignalWidgets : WidgetID { WID_BS_DRAG_SIGNALS_DENSITY_INCREASE, ///< Increase the signal density. WID_BS_BLOCK_SEL, ///< Container for the block signal group, which can be hidden. WID_BS_BLOCK_SPACER_SEL, ///< Container for the spacer between block and path signal groups, which can be hidden. + CM_WID_BS_BLOCK_BUTTON_SEL, ///< Container for show/hide block signal group buttons. + CM_WID_BS_SHOW_BLOCK, ///< Button for showing block signal group. + CM_WID_BS_HIDE_BLOCK, ///< Button for hiding block signal group. }; /** Widgets of the #BuildRailDepotWindow class. */