mirror of https://github.com/OpenTTD/OpenTTD
Add: Button to configure badges in build picker window.
parent
f28dc3cca4
commit
948ceb3b17
|
@ -14,6 +14,7 @@
|
||||||
#include "hotkeys.h"
|
#include "hotkeys.h"
|
||||||
#include "ini_type.h"
|
#include "ini_type.h"
|
||||||
#include "newgrf_badge.h"
|
#include "newgrf_badge.h"
|
||||||
|
#include "newgrf_badge_config.h"
|
||||||
#include "newgrf_badge_gui.h"
|
#include "newgrf_badge_gui.h"
|
||||||
#include "picker_gui.h"
|
#include "picker_gui.h"
|
||||||
#include "querystring_gui.h"
|
#include "querystring_gui.h"
|
||||||
|
@ -279,6 +280,11 @@ void PickerWindow::UpdateWidgetSize(WidgetID widget, Dimension &size, const Dime
|
||||||
size.width = ScaleGUITrad(PREVIEW_WIDTH) + WidgetDimensions::scaled.fullbevel.Horizontal();
|
size.width = ScaleGUITrad(PREVIEW_WIDTH) + WidgetDimensions::scaled.fullbevel.Horizontal();
|
||||||
size.height = ScaleGUITrad(PREVIEW_HEIGHT) + WidgetDimensions::scaled.fullbevel.Vertical();
|
size.height = ScaleGUITrad(PREVIEW_HEIGHT) + WidgetDimensions::scaled.fullbevel.Vertical();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case WID_PW_CONFIGURE_BADGES:
|
||||||
|
/* Hide the configuration button if no configurable badges are present. */
|
||||||
|
if (this->badge_classes.GetClasses().empty()) size = {0, 0};
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -401,6 +407,35 @@ void PickerWindow::OnClick(Point pt, WidgetID widget, int)
|
||||||
CloseWindowById(WC_SELECT_STATION, 0);
|
CloseWindowById(WC_SELECT_STATION, 0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case WID_PW_CONFIGURE_BADGES:
|
||||||
|
if (this->badge_classes.GetClasses().empty()) break;
|
||||||
|
ShowDropDownList(this, BuildBadgeClassConfigurationList(this->badge_classes, 1, {}), -1, widget, 0, false, true);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void PickerWindow::OnDropdownSelect(WidgetID widget, int index, int click_result)
|
||||||
|
{
|
||||||
|
switch (widget) {
|
||||||
|
case WID_PW_CONFIGURE_BADGES: {
|
||||||
|
bool reopen = HandleBadgeConfigurationDropDownClick(this->callbacks.GetFeature(), 1, index, click_result);
|
||||||
|
|
||||||
|
this->ReInit();
|
||||||
|
|
||||||
|
if (reopen) {
|
||||||
|
ReplaceDropDownList(this, BuildBadgeClassConfigurationList(this->badge_classes, 1, {}), -1);
|
||||||
|
} else {
|
||||||
|
this->CloseChildWindows(WC_DROPDOWN_MENU);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -671,8 +706,11 @@ std::unique_ptr<NWidgetBase> MakePickerTypeWidgets()
|
||||||
static constexpr NWidgetPart picker_type_widgets[] = {
|
static constexpr NWidgetPart picker_type_widgets[] = {
|
||||||
NWidget(NWID_SELECTION, INVALID_COLOUR, WID_PW_TYPE_SEL),
|
NWidget(NWID_SELECTION, INVALID_COLOUR, WID_PW_TYPE_SEL),
|
||||||
NWidget(NWID_VERTICAL),
|
NWidget(NWID_VERTICAL),
|
||||||
NWidget(WWT_PANEL, COLOUR_DARK_GREEN),
|
NWidget(NWID_HORIZONTAL),
|
||||||
NWidget(WWT_EDITBOX, COLOUR_DARK_GREEN, WID_PW_TYPE_FILTER), SetPadding(2), SetResize(1, 0), SetFill(1, 0), SetStringTip(STR_LIST_FILTER_OSKTITLE, STR_LIST_FILTER_TOOLTIP),
|
NWidget(WWT_PANEL, COLOUR_DARK_GREEN),
|
||||||
|
NWidget(WWT_EDITBOX, COLOUR_DARK_GREEN, WID_PW_TYPE_FILTER), SetPadding(2), SetResize(1, 0), SetFill(1, 0), SetStringTip(STR_LIST_FILTER_OSKTITLE, STR_LIST_FILTER_TOOLTIP),
|
||||||
|
EndContainer(),
|
||||||
|
NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_PW_CONFIGURE_BADGES), SetAspect(WidgetDimensions::ASPECT_UP_DOWN_BUTTON), SetResize(0, 0), SetFill(0, 1), SetSpriteTip(SPR_EXTRA_MENU, STR_BADGE_CONFIG_MENU_TOOLTIP),
|
||||||
EndContainer(),
|
EndContainer(),
|
||||||
NWidget(NWID_HORIZONTAL, NWidContainerFlag::EqualSize),
|
NWidget(NWID_HORIZONTAL, NWidContainerFlag::EqualSize),
|
||||||
NWidget(WWT_TEXTBTN, COLOUR_DARK_GREEN, WID_PW_MODE_ALL), SetFill(1, 0), SetResize(1, 0), SetStringTip(STR_PICKER_MODE_ALL, STR_PICKER_MODE_ALL_TOOLTIP),
|
NWidget(WWT_TEXTBTN, COLOUR_DARK_GREEN, WID_PW_MODE_ALL), SetFill(1, 0), SetResize(1, 0), SetStringTip(STR_PICKER_MODE_ALL, STR_PICKER_MODE_ALL_TOOLTIP),
|
||||||
|
|
|
@ -184,6 +184,7 @@ public:
|
||||||
void Close(int data = 0) override;
|
void Close(int data = 0) override;
|
||||||
void UpdateWidgetSize(WidgetID widget, Dimension &size, const Dimension &padding, Dimension &fill, Dimension &resize) override;
|
void UpdateWidgetSize(WidgetID widget, Dimension &size, const Dimension &padding, Dimension &fill, Dimension &resize) override;
|
||||||
void DrawWidget(const Rect &r, WidgetID widget) const override;
|
void DrawWidget(const Rect &r, WidgetID widget) const override;
|
||||||
|
void OnDropdownSelect(WidgetID widget, int index, int click_result) override;
|
||||||
void OnResize() override;
|
void OnResize() override;
|
||||||
void OnClick(Point pt, WidgetID widget, int click_count) override;
|
void OnClick(Point pt, WidgetID widget, int click_count) override;
|
||||||
void OnInvalidateData(int data = 0, bool gui_scope = true) override;
|
void OnInvalidateData(int data = 0, bool gui_scope = true) override;
|
||||||
|
|
|
@ -29,6 +29,8 @@ enum PickerClassWindowWidgets : WidgetID {
|
||||||
WID_PW_TYPE_SCROLL, ///< Scrollbar for the matrix.
|
WID_PW_TYPE_SCROLL, ///< Scrollbar for the matrix.
|
||||||
WID_PW_TYPE_NAME, ///< Name of selected item.
|
WID_PW_TYPE_NAME, ///< Name of selected item.
|
||||||
WID_PW_TYPE_RESIZE, ///< Type resize handle.
|
WID_PW_TYPE_RESIZE, ///< Type resize handle.
|
||||||
|
|
||||||
|
WID_PW_CONFIGURE_BADGES, ///< Button to configure badges.
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* WIDGETS_PICKER_WIDGET_H */
|
#endif /* WIDGETS_PICKER_WIDGET_H */
|
||||||
|
|
Loading…
Reference in New Issue