changeset 18252:3d13872c47b7 draft

(svn r23088) -Change: Extend the train order GUI with space for a forth button.
author michi_cc <michi_cc@openttd.org>
date Fri, 04 Nov 2011 00:38:56 +0000
parents 137b272acca5
children 0a32df94b00f
files src/order_gui.cpp
diffstat 1 files changed, 75 insertions(+), 61 deletions(-) [+]
line wrap: on
line diff
--- a/src/order_gui.cpp
+++ b/src/order_gui.cpp
@@ -47,14 +47,16 @@
 	ORDER_WIDGET_UNLOAD,
 	ORDER_WIDGET_REFIT,
 	ORDER_WIDGET_SERVICE,
+	ORDER_WIDGET_EMPTY,
 	ORDER_WIDGET_COND_VARIABLE,
 	ORDER_WIDGET_COND_COMPARATOR,
 	ORDER_WIDGET_COND_VALUE,
-	ORDER_WIDGET_SEL_TOP_LEFT,   ///< #NWID_SELECTION widget for left part of the top row of the 'your train' order window.
-	ORDER_WIDGET_SEL_TOP_MIDDLE, ///< #NWID_SELECTION widget for middle part of the top row of the 'your train' order window.
-	ORDER_WIDGET_SEL_TOP_RIGHT,  ///< #NWID_SELECTION widget for right part of the top row of the 'your train' order window.
-	ORDER_WIDGET_SEL_TOP_ROW,    ///< #NWID_SELECTION widget for the top row of the 'your non-trains' order window.
-	ORDER_WIDGET_SEL_BOTTOM_MIDDLE, ///< #NWID_SELECTION widget for the middle part of the bottom row of the 'your train' order window.
+	ORDER_WIDGET_SEL_TOP_LEFT,              ///< #NWID_SELECTION widget for left part of the top row of the 'your train' order window.
+	ORDER_WIDGET_SEL_TOP_MIDDLE,            ///< #NWID_SELECTION widget for middle part of the top row of the 'your train' order window.
+	ORDER_WIDGET_SEL_TOP_RIGHT,             ///< #NWID_SELECTION widget for right part of the top row of the 'your train' order window.
+	ORDER_WIDGET_SEL_TOP_ROW_GROUNDVEHICLE, ///< #NWID_SELECTION widget for the top row of the 'your train' order window.
+	ORDER_WIDGET_SEL_TOP_ROW,               ///< #NWID_SELECTION widget for the top row of the 'your non-trains' order window.
+	ORDER_WIDGET_SEL_BOTTOM_MIDDLE,         ///< #NWID_SELECTION widget for the middle part of the bottom row of the 'your train' order window.
 	ORDER_WIDGET_SHARED_ORDER_LIST,
 };
 
@@ -420,13 +422,13 @@
  *
  * The top-row buttons of one of your trains or road vehicles is one of the following three cases:
  * \verbatim
- * +-----------------+-----------------+-----------------+
- * |    NON-STOP     |    FULL_LOAD    |     UNLOAD      | (normal)
- * +-----------------+-----------------+-----------------+
- * |    COND_VAR     | COND_COMPARATOR |   COND_VALUE    | (for conditional orders)
- * +-----------------+-----------------+-----------------+
- * |    NON-STOP     |      REFIT      |     SERVICE     | (for depot orders)
- * +-----------------+-----------------+-----------------+
+ * +-----------------+-----------------+-----------------+-----------------+
+ * |    NON-STOP     |    FULL_LOAD    |     UNLOAD      |     (empty)     | (normal)
+ * +-----------------+-----+-----------+-----------+-----+-----------------+
+ * |       COND_VAR        |    COND_COMPARATOR    |      COND_VALUE       | (for conditional orders)
+ * +-----------------+-----+-----------+-----------+-----+-----------------+
+ * |    NON-STOP     |      REFIT      |     SERVICE     |     (empty)     | (for depot orders)
+ * +-----------------+-----------------+-----------------+-----------------+
  * \endverbatim
  *
  * Airplanes and ships have one of the following three top-row button rows:
@@ -461,19 +463,20 @@
 
 	/** Displayed planes of the #NWID_SELECTION widgets. */
 	enum DisplayPane {
+		/* ORDER_WIDGET_SEL_TOP_ROW_GROUNDVEHICLE */
+		DP_GROUNDVEHICLE_ROW_NORMAL      = 0, ///< Display the row for normal/depot orders in the top row of the train/rv order window.
+		DP_GROUNDVEHICLE_ROW_CONDITIONAL = 1, ///< Display the row for conditional orders in the top row of the train/rv order window.
+
 		/* ORDER_WIDGET_SEL_TOP_LEFT */
-		DP_LEFT_NONSTOP    = 0, ///< Display 'non stop' in the left button of the top row of the train/rv order window.
-		DP_LEFT_CONDVAR    = 1, ///< Display condition variable in the left button of the top row of the train/rv order window.
+		DP_LEFT_LOAD       = 0, ///< Display 'load' in the left button of the top row of the train/rv order window.
+		DP_LEFT_REFIT      = 1, ///< Display 'refit' in the left button of the top row of the train/rv order window.
 
 		/* ORDER_WIDGET_SEL_TOP_MIDDLE */
-		DP_MIDDLE_LOAD     = 0, ///< Display 'load' in the middle button of the top row of the train/rv order window.
-		DP_MIDDLE_REFIT    = 1, ///< Display 'refit' in the middle button of the top row of the train/rv order window.
-		DP_MIDDLE_COMPARE  = 2, ///< Display compare operator in the middle button of the top row of the train/rv order window.
+		DP_MIDDLE_UNLOAD   = 0, ///< Display 'unload' in the middle button of the top row of the train/rv order window.
+		DP_MIDDLE_SERVICE  = 1, ///< Display 'service' in the middle button of the top row of the train/rv order window.
 
 		/* ORDER_WIDGET_SEL_TOP_RIGHT */
-		DP_RIGHT_UNLOAD    = 0, ///< Display 'unload' in the right button of the top row of the train/rv order window.
-		DP_RIGHT_SERVICE   = 1, ///< Display 'service' in the right button of the top row of the train/rv order window.
-		DP_RIGHT_CONDVAL   = 2, ///< Display condition value in the right button of the top row of the train/rv order window.
+		DP_RIGHT_EMPTY     = 0, ///< Display an empty panel in the right button of the top row of the train/rv order window.
 
 		/* ORDER_WIDGET_SEL_TOP_ROW */
 		DP_ROW_LOAD        = 0, ///< Display 'load' / 'unload' buttons in the top row of the ship/airplane order window.
@@ -757,6 +760,7 @@
 		this->CreateNestedTree(desc);
 		this->vscroll = this->GetScrollbar(ORDER_WIDGET_SCROLLBAR);
 		this->FinishInitNested(desc, v->index);
+		this->DisableWidget(ORDER_WIDGET_EMPTY);
 
 		this->selected_order = -1;
 		this->order_over = INVALID_VEH_ORDER_ID;
@@ -919,21 +923,23 @@
 
 		/* Selection widgets. */
 		/* Train or road vehicle. */
-		NWidgetStacked *left_sel   = this->GetWidget<NWidgetStacked>(ORDER_WIDGET_SEL_TOP_LEFT);
-		NWidgetStacked *middle_sel = this->GetWidget<NWidgetStacked>(ORDER_WIDGET_SEL_TOP_MIDDLE);
-		NWidgetStacked *right_sel  = this->GetWidget<NWidgetStacked>(ORDER_WIDGET_SEL_TOP_RIGHT);
+		NWidgetStacked *train_row_sel = this->GetWidget<NWidgetStacked>(ORDER_WIDGET_SEL_TOP_ROW_GROUNDVEHICLE);
+		NWidgetStacked *left_sel      = this->GetWidget<NWidgetStacked>(ORDER_WIDGET_SEL_TOP_LEFT);
+		NWidgetStacked *middle_sel    = this->GetWidget<NWidgetStacked>(ORDER_WIDGET_SEL_TOP_MIDDLE);
+		NWidgetStacked *right_sel     = this->GetWidget<NWidgetStacked>(ORDER_WIDGET_SEL_TOP_RIGHT);
 		/* Ship or airplane. */
 		NWidgetStacked *row_sel = this->GetWidget<NWidgetStacked>(ORDER_WIDGET_SEL_TOP_ROW);
-		assert(row_sel != NULL || (left_sel != NULL && middle_sel != NULL && right_sel != NULL));
+		assert(row_sel != NULL || (train_row_sel != NULL && left_sel != NULL && middle_sel != NULL && right_sel != NULL));
 
 
 		if (order == NULL) {
 			if (row_sel != NULL) {
 				row_sel->SetDisplayedPlane(DP_ROW_LOAD);
 			} else {
-				left_sel->SetDisplayedPlane(DP_LEFT_NONSTOP);
-				middle_sel->SetDisplayedPlane(DP_MIDDLE_LOAD);
-				right_sel->SetDisplayedPlane(DP_RIGHT_UNLOAD);
+				train_row_sel->SetDisplayedPlane(DP_GROUNDVEHICLE_ROW_NORMAL);
+				left_sel->SetDisplayedPlane(DP_LEFT_LOAD);
+				middle_sel->SetDisplayedPlane(DP_MIDDLE_UNLOAD);
+				right_sel->SetDisplayedPlane(DP_RIGHT_EMPTY);
 				this->DisableWidget(ORDER_WIDGET_NON_STOP);
 				this->RaiseWidget(ORDER_WIDGET_NON_STOP);
 			}
@@ -948,9 +954,10 @@
 					if (row_sel != NULL) {
 						row_sel->SetDisplayedPlane(DP_ROW_LOAD);
 					} else {
-						left_sel->SetDisplayedPlane(DP_LEFT_NONSTOP);
-						middle_sel->SetDisplayedPlane(DP_MIDDLE_LOAD);
-						right_sel->SetDisplayedPlane(DP_RIGHT_UNLOAD);
+						train_row_sel->SetDisplayedPlane(DP_GROUNDVEHICLE_ROW_NORMAL);
+						left_sel->SetDisplayedPlane(DP_LEFT_LOAD);
+						middle_sel->SetDisplayedPlane(DP_MIDDLE_UNLOAD);
+						right_sel->SetDisplayedPlane(DP_RIGHT_EMPTY);
 						this->EnableWidget(ORDER_WIDGET_NON_STOP);
 						this->SetWidgetLoweredState(ORDER_WIDGET_NON_STOP, order->GetNonStopType() & ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS);
 					}
@@ -962,9 +969,10 @@
 					if (row_sel != NULL) {
 						row_sel->SetDisplayedPlane(DP_ROW_LOAD);
 					} else {
-						left_sel->SetDisplayedPlane(DP_LEFT_NONSTOP);
-						middle_sel->SetDisplayedPlane(DP_MIDDLE_LOAD);
-						right_sel->SetDisplayedPlane(DP_RIGHT_UNLOAD);
+						train_row_sel->SetDisplayedPlane(DP_GROUNDVEHICLE_ROW_NORMAL);
+						left_sel->SetDisplayedPlane(DP_LEFT_LOAD);
+						middle_sel->SetDisplayedPlane(DP_MIDDLE_UNLOAD);
+						right_sel->SetDisplayedPlane(DP_RIGHT_EMPTY);
 						this->EnableWidget(ORDER_WIDGET_NON_STOP);
 						this->SetWidgetLoweredState(ORDER_WIDGET_NON_STOP, order->GetNonStopType() & ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS);
 					}
@@ -976,9 +984,10 @@
 					if (row_sel != NULL) {
 						row_sel->SetDisplayedPlane(DP_ROW_DEPOT);
 					} else {
-						left_sel->SetDisplayedPlane(DP_LEFT_NONSTOP);
-						middle_sel->SetDisplayedPlane(DP_MIDDLE_REFIT);
-						right_sel->SetDisplayedPlane(DP_RIGHT_SERVICE);
+						train_row_sel->SetDisplayedPlane(DP_GROUNDVEHICLE_ROW_NORMAL);
+						left_sel->SetDisplayedPlane(DP_LEFT_REFIT);
+						middle_sel->SetDisplayedPlane(DP_MIDDLE_SERVICE);
+						right_sel->SetDisplayedPlane(DP_RIGHT_EMPTY);
 						this->EnableWidget(ORDER_WIDGET_NON_STOP);
 						this->SetWidgetLoweredState(ORDER_WIDGET_NON_STOP, order->GetNonStopType() & ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS);
 					}
@@ -992,9 +1001,7 @@
 					if (row_sel != NULL) {
 						row_sel->SetDisplayedPlane(DP_ROW_CONDITIONAL);
 					} else {
-						left_sel->SetDisplayedPlane(DP_LEFT_CONDVAR);
-						middle_sel->SetDisplayedPlane(DP_MIDDLE_COMPARE);
-						right_sel->SetDisplayedPlane(DP_RIGHT_CONDVAL);
+						train_row_sel->SetDisplayedPlane(DP_GROUNDVEHICLE_ROW_CONDITIONAL);
 					}
 					OrderConditionVariable ocv = order->GetConditionVariable();
 					/* Set the strings for the dropdown boxes. */
@@ -1009,9 +1016,10 @@
 					if (row_sel != NULL) {
 						row_sel->SetDisplayedPlane(DP_ROW_LOAD);
 					} else {
-						left_sel->SetDisplayedPlane(DP_LEFT_NONSTOP);
-						middle_sel->SetDisplayedPlane(DP_MIDDLE_LOAD);
-						right_sel->SetDisplayedPlane(DP_RIGHT_UNLOAD);
+						train_row_sel->SetDisplayedPlane(DP_GROUNDVEHICLE_ROW_NORMAL);
+						left_sel->SetDisplayedPlane(DP_LEFT_LOAD);
+						middle_sel->SetDisplayedPlane(DP_MIDDLE_UNLOAD);
+						right_sel->SetDisplayedPlane(DP_RIGHT_EMPTY);
 						this->DisableWidget(ORDER_WIDGET_NON_STOP);
 					}
 					this->DisableWidget(ORDER_WIDGET_FULL_LOAD);
@@ -1478,28 +1486,34 @@
 
 	/* First button row. */
 	NWidget(NWID_HORIZONTAL),
-		NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
-			NWidget(NWID_SELECTION, INVALID_COLOUR, ORDER_WIDGET_SEL_TOP_LEFT),
-				NWidget(NWID_BUTTON_DROPDOWN, COLOUR_GREY, ORDER_WIDGET_NON_STOP), SetMinimalSize(124, 12), SetFill(1, 0),
-														SetDataTip(STR_ORDER_NON_STOP, STR_ORDER_TOOLTIP_NON_STOP), SetResize(1, 0),
-				NWidget(WWT_DROPDOWN, COLOUR_GREY, ORDER_WIDGET_COND_VARIABLE), SetMinimalSize(124, 12), SetFill(1, 0),
-														SetDataTip(STR_NULL, STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP), SetResize(1, 0),
+		NWidget(NWID_SELECTION, INVALID_COLOUR, ORDER_WIDGET_SEL_TOP_ROW_GROUNDVEHICLE),
+			NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
+				NWidget(NWID_BUTTON_DROPDOWN, COLOUR_GREY, ORDER_WIDGET_NON_STOP), SetMinimalSize(93, 12), SetFill(1, 0),
+															SetDataTip(STR_ORDER_NON_STOP, STR_ORDER_TOOLTIP_NON_STOP), SetResize(1, 0),
+				NWidget(NWID_SELECTION, INVALID_COLOUR, ORDER_WIDGET_SEL_TOP_LEFT),
+					NWidget(NWID_BUTTON_DROPDOWN, COLOUR_GREY, ORDER_WIDGET_FULL_LOAD), SetMinimalSize(93, 12), SetFill(1, 0),
+															SetDataTip(STR_ORDER_TOGGLE_FULL_LOAD, STR_ORDER_TOOLTIP_FULL_LOAD), SetResize(1, 0),
+					NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, ORDER_WIDGET_REFIT), SetMinimalSize(93, 12), SetFill(1, 0),
+															SetDataTip(STR_ORDER_REFIT, STR_ORDER_REFIT_TOOLTIP), SetResize(1, 0),
+				EndContainer(),
+				NWidget(NWID_SELECTION, INVALID_COLOUR, ORDER_WIDGET_SEL_TOP_MIDDLE),
+					NWidget(NWID_BUTTON_DROPDOWN, COLOUR_GREY, ORDER_WIDGET_UNLOAD), SetMinimalSize(93, 12), SetFill(1, 0),
+															SetDataTip(STR_ORDER_TOGGLE_UNLOAD, STR_ORDER_TOOLTIP_UNLOAD), SetResize(1, 0),
+					NWidget(NWID_BUTTON_DROPDOWN, COLOUR_GREY, ORDER_WIDGET_SERVICE), SetMinimalSize(93, 12), SetFill(1, 0),
+															SetDataTip(STR_ORDER_SERVICE, STR_ORDER_SERVICE_TOOLTIP), SetResize(1, 0),
+				EndContainer(),
+				NWidget(NWID_SELECTION, INVALID_COLOUR, ORDER_WIDGET_SEL_TOP_RIGHT),
+					NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, ORDER_WIDGET_EMPTY), SetMinimalSize(93, 12), SetFill(1, 0),
+															SetDataTip(STR_ORDER_REFIT, STR_ORDER_REFIT_TOOLTIP), SetResize(1, 0),
+				EndContainer(),
 			EndContainer(),
-			NWidget(NWID_SELECTION, INVALID_COLOUR, ORDER_WIDGET_SEL_TOP_MIDDLE),
-				NWidget(NWID_BUTTON_DROPDOWN, COLOUR_GREY, ORDER_WIDGET_FULL_LOAD), SetMinimalSize(124, 12), SetFill(1, 0),
-														SetDataTip(STR_ORDER_TOGGLE_FULL_LOAD, STR_ORDER_TOOLTIP_FULL_LOAD), SetResize(1, 0),
-				NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, ORDER_WIDGET_REFIT), SetMinimalSize(124, 12), SetFill(1, 0),
-														SetDataTip(STR_ORDER_REFIT, STR_ORDER_REFIT_TOOLTIP), SetResize(1, 0),
+			NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
+				NWidget(WWT_DROPDOWN, COLOUR_GREY, ORDER_WIDGET_COND_VARIABLE), SetMinimalSize(124, 12), SetFill(1, 0),
+															SetDataTip(STR_NULL, STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP), SetResize(1, 0),
 				NWidget(WWT_DROPDOWN, COLOUR_GREY, ORDER_WIDGET_COND_COMPARATOR), SetMinimalSize(124, 12), SetFill(1, 0),
-														SetDataTip(STR_NULL, STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP), SetResize(1, 0),
-			EndContainer(),
-			NWidget(NWID_SELECTION, INVALID_COLOUR, ORDER_WIDGET_SEL_TOP_RIGHT),
-				NWidget(NWID_BUTTON_DROPDOWN, COLOUR_GREY, ORDER_WIDGET_UNLOAD), SetMinimalSize(124, 12), SetFill(1, 0),
-														SetDataTip(STR_ORDER_TOGGLE_UNLOAD, STR_ORDER_TOOLTIP_UNLOAD), SetResize(1, 0),
-				NWidget(NWID_BUTTON_DROPDOWN, COLOUR_GREY, ORDER_WIDGET_SERVICE), SetMinimalSize(124, 12), SetFill(1, 0),
-														SetDataTip(STR_ORDER_SERVICE, STR_ORDER_SERVICE_TOOLTIP), SetResize(1, 0),
+															SetDataTip(STR_NULL, STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP), SetResize(1, 0),
 				NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, ORDER_WIDGET_COND_VALUE), SetMinimalSize(124, 12), SetFill(1, 0),
-														SetDataTip(STR_BLACK_COMMA, STR_ORDER_CONDITIONAL_VALUE_TOOLTIP), SetResize(1, 0),
+															SetDataTip(STR_BLACK_COMMA, STR_ORDER_CONDITIONAL_VALUE_TOOLTIP), SetResize(1, 0),
 			EndContainer(),
 		EndContainer(),
 		NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, ORDER_WIDGET_SHARED_ORDER_LIST), SetMinimalSize(12, 12), SetDataTip(SPR_SHARED_ORDERS_ICON, STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP),