Merge branch 'master' into jgrpp
# Conflicts: # .github/workflows/release.yml # bin/CMakeLists.txt # src/dock_gui.cpp # src/lang/brazilian_portuguese.txt # src/lang/catalan.txt # src/lang/czech.txt # src/lang/dutch.txt # src/lang/english.txt # src/lang/english_US.txt # src/lang/estonian.txt # src/lang/finnish.txt # src/lang/french.txt # src/lang/german.txt # src/lang/hungarian.txt # src/lang/indonesian.txt # src/lang/italian.txt # src/lang/japanese.txt # src/lang/korean.txt # src/lang/lithuanian.txt # src/lang/luxembourgish.txt # src/lang/norwegian_bokmal.txt # src/lang/polish.txt # src/lang/portuguese.txt # src/lang/romanian.txt # src/lang/russian.txt # src/lang/serbian.txt # src/lang/simplified_chinese.txt # src/lang/slovak.txt # src/lang/spanish.txt # src/lang/spanish_MX.txt # src/lang/swedish.txt # src/lang/tamil.txt # src/lang/ukrainian.txt # src/lang/vietnamese.txt # src/newgrf.cpp # src/newgrf_gui.cpp # src/object_gui.cpp # src/pathfinder/yapf/yapf_costrail.hpp # src/pathfinder/yapf/yapf_node_rail.hpp # src/rail_cmd.cpp # src/roadveh_cmd.cpp # src/town_cmd.cpp # src/vehicle.cpp # src/water_cmd.cpp
This commit is contained in:
@@ -739,6 +739,7 @@ struct BaseSettingEntry {
|
||||
virtual void Init(byte level = 0);
|
||||
virtual void FoldAll() {}
|
||||
virtual void UnFoldAll() {}
|
||||
virtual void ResetAll() = 0;
|
||||
|
||||
/**
|
||||
* Set whether this is the last visible entry of the parent node.
|
||||
@@ -775,6 +776,7 @@ struct SettingEntry : BaseSettingEntry {
|
||||
SettingEntry(const char *name);
|
||||
|
||||
virtual void Init(byte level = 0);
|
||||
virtual void ResetAll();
|
||||
virtual uint Length() const;
|
||||
virtual uint GetMaxHelpHeight(int maxw);
|
||||
virtual bool UpdateFilterState(SettingFilter &filter, bool force_visible);
|
||||
@@ -836,6 +838,7 @@ struct SettingsContainer {
|
||||
}
|
||||
|
||||
void Init(byte level = 0);
|
||||
void ResetAll();
|
||||
void FoldAll();
|
||||
void UnFoldAll();
|
||||
|
||||
@@ -859,6 +862,7 @@ struct SettingsPage : BaseSettingEntry, SettingsContainer {
|
||||
SettingsPage(StringID title);
|
||||
|
||||
virtual void Init(byte level = 0);
|
||||
virtual void ResetAll();
|
||||
virtual void FoldAll();
|
||||
virtual void UnFoldAll();
|
||||
|
||||
@@ -1008,6 +1012,13 @@ void SettingEntry::Init(byte level)
|
||||
assert_msg(this->setting != nullptr, "name: %s", this->name);
|
||||
}
|
||||
|
||||
/* Sets the given setting entry to its default value */
|
||||
void SettingEntry::ResetAll()
|
||||
{
|
||||
int32 default_value = ReadValue(&this->setting->desc.def, this->setting->save.conv);
|
||||
SetSettingValue(this->index, default_value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the button-depressed flags (#SEF_LEFT_DEPRESSED and #SEF_RIGHT_DEPRESSED) to a specified value
|
||||
* @param new_val New value for the button flags
|
||||
@@ -1123,7 +1134,6 @@ bool SettingEntry::UpdateFilterState(SettingFilter &filter, bool force_visible)
|
||||
return visible;
|
||||
}
|
||||
|
||||
|
||||
static const void *ResolveVariableAddress(const GameSettings *settings_ptr, const SettingDesc *sd)
|
||||
{
|
||||
if ((sd->desc.flags & SGF_PER_COMPANY) != 0) {
|
||||
@@ -1271,6 +1281,14 @@ void SettingsContainer::Init(byte level)
|
||||
}
|
||||
}
|
||||
|
||||
/** Resets all settings to their default values */
|
||||
void SettingsContainer::ResetAll()
|
||||
{
|
||||
for (auto settings_entry : this->entries) {
|
||||
settings_entry->ResetAll();
|
||||
}
|
||||
}
|
||||
|
||||
/** Recursively close all folds of sub-pages */
|
||||
void SettingsContainer::FoldAll()
|
||||
{
|
||||
@@ -1421,6 +1439,14 @@ void SettingsPage::Init(byte level)
|
||||
SettingsContainer::Init(level + 1);
|
||||
}
|
||||
|
||||
/** Resets all settings to their default values */
|
||||
void SettingsPage::ResetAll()
|
||||
{
|
||||
for (auto settings_entry : this->entries) {
|
||||
settings_entry->ResetAll();
|
||||
}
|
||||
}
|
||||
|
||||
/** Recursively close all (filtered) folds of sub-pages */
|
||||
void SettingsPage::FoldAll()
|
||||
{
|
||||
@@ -2104,6 +2130,20 @@ enum WarnHiddenResult {
|
||||
WHR_CATEGORY_TYPE, ///< Both category and type settings filtered matches away.
|
||||
};
|
||||
|
||||
/**
|
||||
* Callback function for the reset all settings button
|
||||
* @param w Window which is calling this callback
|
||||
* @param confirmed boolean value, true when yes was clicked, false otherwise
|
||||
*/
|
||||
static void ResetAllSettingsConfirmationCallback(Window *w, bool confirmed)
|
||||
{
|
||||
if (confirmed) {
|
||||
GetSettingsTree().ResetAll();
|
||||
GetSettingsTree().FoldAll();
|
||||
w->InvalidateData();
|
||||
}
|
||||
}
|
||||
|
||||
/** Window to edit settings of the game. */
|
||||
struct GameSettingsWindow : Window {
|
||||
static const int SETTINGTREE_LEFT_OFFSET = 5; ///< Position of left edge of setting values
|
||||
@@ -2341,6 +2381,15 @@ struct GameSettingsWindow : Window {
|
||||
this->InvalidateData();
|
||||
break;
|
||||
|
||||
case WID_GS_RESET_ALL:
|
||||
ShowQuery(
|
||||
STR_CONFIG_SETTING_RESET_ALL_CONFIRMATION_DIALOG_CAPTION,
|
||||
STR_CONFIG_SETTING_RESET_ALL_CONFIRMATION_DIALOG_TEXT,
|
||||
this,
|
||||
ResetAllSettingsConfirmationCallback
|
||||
);
|
||||
break;
|
||||
|
||||
case WID_GS_RESTRICT_DROPDOWN: {
|
||||
DropDownList list = this->BuildDropDownList(widget);
|
||||
if (!list.empty()) {
|
||||
@@ -2715,6 +2764,7 @@ static const NWidgetPart _nested_settings_selection_widgets[] = {
|
||||
NWidget(NWID_HORIZONTAL),
|
||||
NWidget(WWT_PUSHTXTBTN, COLOUR_MAUVE, WID_GS_EXPAND_ALL), SetDataTip(STR_CONFIG_SETTING_EXPAND_ALL, STR_NULL),
|
||||
NWidget(WWT_PUSHTXTBTN, COLOUR_MAUVE, WID_GS_COLLAPSE_ALL), SetDataTip(STR_CONFIG_SETTING_COLLAPSE_ALL, STR_NULL),
|
||||
NWidget(WWT_PUSHTXTBTN, COLOUR_MAUVE, WID_GS_RESET_ALL), SetDataTip(STR_CONFIG_SETTING_RESET_ALL, STR_NULL),
|
||||
NWidget(WWT_PANEL, COLOUR_MAUVE), SetFill(1, 0), SetResize(1, 0),
|
||||
EndContainer(),
|
||||
NWidget(WWT_RESIZEBOX, COLOUR_MAUVE),
|
||||
|
Reference in New Issue
Block a user