summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/graph_gui.cpp51
-rw-r--r--src/lang/english.txt4
2 files changed, 49 insertions, 6 deletions
diff --git a/src/graph_gui.cpp b/src/graph_gui.cpp
index 7fbc53e7d..278e337df 100644
--- a/src/graph_gui.cpp
+++ b/src/graph_gui.cpp
@@ -806,6 +806,8 @@ enum CargoPaymentRatesWidgets {
CPW_HEADER,
CPW_GRAPH,
CPW_FOOTER,
+ CPW_ENABLE_CARGOS,
+ CPW_DISABLE_CARGOS,
CPW_CARGO_FIRST,
};
@@ -904,12 +906,46 @@ struct PaymentRatesGraphWindow : BaseGraphWindow {
virtual void OnClick(Point pt, int widget, int click_count)
{
- if (widget >= CPW_CARGO_FIRST) {
- int i = widget - CPW_CARGO_FIRST;
- ToggleBit(_legend_excluded_cargo, _sorted_cargo_specs[i]->Index());
- this->ToggleWidgetLoweredState(widget);
- this->UpdateExcludedData();
- this->SetDirty();
+ switch (widget) {
+ case CPW_ENABLE_CARGOS:
+ /* Remove all cargos from the excluded lists. */
+ _legend_excluded_cargo = 0;
+ this->excluded_data = 0;
+ this->UpdateLoweredWidgets();
+ /* Toggle appeareance indicating the choice. */
+ this->LowerWidget(CPW_ENABLE_CARGOS);
+ this->RaiseWidget(CPW_DISABLE_CARGOS);
+ this->SetDirty();
+ break;
+
+ case CPW_DISABLE_CARGOS: {
+ /* Add all cargos to the excluded lists. */
+ int i = 0;
+ const CargoSpec *cs;
+ FOR_ALL_SORTED_CARGOSPECS(cs) {
+ SetBit(_legend_excluded_cargo, cs->Index());
+ SetBit(this->excluded_data, i);
+ i++;
+ }
+ this->UpdateLoweredWidgets();
+ /* Toggle appeareance indicating the choice. */
+ this->LowerWidget(CPW_DISABLE_CARGOS);
+ this->RaiseWidget(CPW_ENABLE_CARGOS);
+ this->SetDirty();
+ } break;
+
+ default:
+ if (widget >= CPW_CARGO_FIRST) {
+ int i = widget - CPW_CARGO_FIRST;
+ ToggleBit(_legend_excluded_cargo, _sorted_cargo_specs[i]->Index());
+ this->ToggleWidgetLoweredState(widget);
+ this->UpdateExcludedData();
+ /* Raise the two "all" buttons, as we have done a specific choice. */
+ this->RaiseWidget(CPW_ENABLE_CARGOS);
+ this->RaiseWidget(CPW_DISABLE_CARGOS);
+ this->SetDirty();
+ }
+ break;
}
}
@@ -970,6 +1006,9 @@ static const NWidgetPart _nested_cargo_payment_rates_widgets[] = {
NWidget(WWT_EMPTY, COLOUR_GREY, CPW_GRAPH), SetMinimalSize(495, 0), SetFill(1, 1),
NWidget(NWID_VERTICAL),
NWidget(NWID_SPACER), SetMinimalSize(0, 24), SetFill(0, 0),
+ NWidget(WWT_TEXTBTN, COLOUR_ORANGE, CPW_ENABLE_CARGOS), SetDataTip(STR_GRAPH_CARGO_ENABLE_ALL, STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL),SetFill(1, 0),
+ NWidget(WWT_TEXTBTN, COLOUR_ORANGE, CPW_DISABLE_CARGOS), SetDataTip(STR_GRAPH_CARGO_DISABLE_ALL, STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL),SetFill(1, 0),
+ NWidget(NWID_SPACER), SetMinimalSize(0, 4), SetFill(0, 0),
NWidgetFunction(MakeCargoButtons),
NWidget(NWID_SPACER), SetMinimalSize(0, 24), SetFill(0, 1),
EndContainer(),
diff --git a/src/lang/english.txt b/src/lang/english.txt
index 86f0fe16d..6e0eb5862 100644
--- a/src/lang/english.txt
+++ b/src/lang/english.txt
@@ -522,6 +522,10 @@ STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Company
STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Cargo Payment Rates
STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINYFONT}{BLACK}Days in transit
STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINYFONT}{BLACK}Payment for delivering 10 units (or 10,000 litres) of cargo a distance of 20 squares
+STR_GRAPH_CARGO_ENABLE_ALL :{TINYFONT}{BLACK}Enable all
+STR_GRAPH_CARGO_DISABLE_ALL :{TINYFONT}{BLACK}Disable all
+STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Display all cargos on the cargo payment rates graph
+STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Display no cargos on the cargo payment rates graph
STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Toggle graph for cargo type on/off
STR_GRAPH_CARGO_PAYMENT_CARGO :{TINYFONT}{BLACK}{STRING}