summaryrefslogtreecommitdiff
path: root/src/order_gui.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/order_gui.cpp')
-rw-r--r--src/order_gui.cpp136
1 files changed, 75 insertions, 61 deletions
diff --git a/src/order_gui.cpp b/src/order_gui.cpp
index b62c440e3..1f7e3cd1d 100644
--- a/src/order_gui.cpp
+++ b/src/order_gui.cpp
@@ -47,14 +47,16 @@ enum OrderWindowWidgets {
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 @@ static Order GetOrderCmdFromTile(const Vehicle *v, TileIndex tile)
*
* 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 @@ private:
/** 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 @@ public:
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 @@ public:
/* 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 @@ public:
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 @@ public:
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 @@ public:
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 @@ public:
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 @@ public:
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 @@ static const NWidgetPart _nested_orders_train_widgets[] = {
/* 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),