changeset 14939:d5e618321973 draft

(svn r19542) -Feature: Add buttons to enable / disable all cargos at the cargo payment rates graph.
author terkhen <terkhen@openttd.org>
date Fri, 02 Apr 2010 14:11:10 +0000
parents 80b5c3338f03
children f042e7eb7d0e
files src/graph_gui.cpp src/lang/english.txt
diffstat 2 files changed, 49 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/graph_gui.cpp
+++ b/src/graph_gui.cpp
@@ -806,6 +806,8 @@
 	CPW_HEADER,
 	CPW_GRAPH,
 	CPW_FOOTER,
+	CPW_ENABLE_CARGOS,
+	CPW_DISABLE_CARGOS,
 	CPW_CARGO_FIRST,
 };
 
@@ -904,12 +906,46 @@
 
 	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 @@
 				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(),
--- a/src/lang/english.txt
+++ b/src/lang/english.txt
@@ -522,6 +522,10 @@
 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}