|
@@ -167,13 +167,13 @@ struct TimetableWindow : Window {
|
|
|
Window(),
|
|
|
sel_index(-1),
|
|
|
vehicle(Vehicle::Get(window_number)),
|
|
|
show_expected(true)
|
|
|
{
|
|
|
this->CreateNestedTree(desc);
|
|
|
this->vscroll = this->GetScrollbar(WID_TV_SCROLLBAR);
|
|
|
this->vscroll = this->GetScrollbar(WID_VT_SCROLLBAR);
|
|
|
this->UpdateSelectionStates();
|
|
|
this->FinishInitNested(desc, window_number);
|
|
|
|
|
|
this->owner = this->vehicle->owner;
|
|
|
}
|
|
|
|
|
@@ -195,33 +195,33 @@ struct TimetableWindow : Window {
|
|
|
return (travelling && v->lateness_counter < 0);
|
|
|
}
|
|
|
|
|
|
virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
|
|
|
{
|
|
|
switch (widget) {
|
|
|
case WID_TV_ARRIVAL_DEPARTURE_PANEL:
|
|
|
case WID_VT_ARRIVAL_DEPARTURE_PANEL:
|
|
|
SetDParam(0, MAX_YEAR * DAYS_IN_YEAR);
|
|
|
this->deparr_time_width = GetStringBoundingBox(STR_JUST_DATE_TINY).width;
|
|
|
this->deparr_abbr_width = max(GetStringBoundingBox(STR_TIMETABLE_ARRIVAL_ABBREVIATION).width, GetStringBoundingBox(STR_TIMETABLE_DEPARTURE_ABBREVIATION).width);
|
|
|
size->width = WD_FRAMERECT_LEFT + this->deparr_abbr_width + 10 + this->deparr_time_width + WD_FRAMERECT_RIGHT;
|
|
|
/* FALL THROUGH */
|
|
|
case WID_TV_ARRIVAL_DEPARTURE_SELECTION:
|
|
|
case WID_TV_TIMETABLE_PANEL:
|
|
|
case WID_VT_ARRIVAL_DEPARTURE_SELECTION:
|
|
|
case WID_VT_TIMETABLE_PANEL:
|
|
|
resize->height = FONT_HEIGHT_NORMAL;
|
|
|
size->height = WD_FRAMERECT_TOP + 8 * resize->height + WD_FRAMERECT_BOTTOM;
|
|
|
break;
|
|
|
|
|
|
case WID_TV_SUMMARY_PANEL:
|
|
|
case WID_VT_SUMMARY_PANEL:
|
|
|
size->height = WD_FRAMERECT_TOP + 2 * FONT_HEIGHT_NORMAL + WD_FRAMERECT_BOTTOM;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
int GetOrderFromTimetableWndPt(int y, const Vehicle *v)
|
|
|
{
|
|
|
int sel = (y - this->GetWidget<NWidgetBase>(WID_TV_TIMETABLE_PANEL)->pos_y - WD_FRAMERECT_TOP) / FONT_HEIGHT_NORMAL;
|
|
|
int sel = (y - this->GetWidget<NWidgetBase>(WID_VT_TIMETABLE_PANEL)->pos_y - WD_FRAMERECT_TOP) / FONT_HEIGHT_NORMAL;
|
|
|
|
|
|
if ((uint)sel >= this->vscroll->GetCapacity()) return INVALID_ORDER;
|
|
|
|
|
|
sel += this->vscroll->GetPosition();
|
|
|
|
|
|
return (sel < v->GetNumOrders() * 2 && sel >= 0) ? sel : INVALID_ORDER;
|
|
@@ -317,48 +317,48 @@ struct TimetableWindow : Window {
|
|
|
disable = order != NULL && (order->IsType(OT_CONDITIONAL) || order->IsType(OT_IMPLICIT));
|
|
|
} else {
|
|
|
disable = order == NULL || ((!order->IsType(OT_GOTO_STATION) || (order->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION)) && !order->IsType(OT_CONDITIONAL));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
this->SetWidgetDisabledState(WID_TV_CHANGE_TIME, disable);
|
|
|
this->SetWidgetDisabledState(WID_TV_CLEAR_TIME, disable);
|
|
|
this->SetWidgetDisabledState(WID_TV_SHARED_ORDER_LIST, !v->IsOrderListShared());
|
|
|
this->SetWidgetDisabledState(WID_VT_CHANGE_TIME, disable);
|
|
|
this->SetWidgetDisabledState(WID_VT_CLEAR_TIME, disable);
|
|
|
this->SetWidgetDisabledState(WID_VT_SHARED_ORDER_LIST, !v->IsOrderListShared());
|
|
|
|
|
|
this->EnableWidget(WID_TV_START_DATE);
|
|
|
this->EnableWidget(WID_TV_RESET_LATENESS);
|
|
|
this->EnableWidget(WID_TV_AUTOFILL);
|
|
|
this->EnableWidget(WID_VT_START_DATE);
|
|
|
this->EnableWidget(WID_VT_RESET_LATENESS);
|
|
|
this->EnableWidget(WID_VT_AUTOFILL);
|
|
|
} else {
|
|
|
this->DisableWidget(WID_TV_START_DATE);
|
|
|
this->DisableWidget(WID_TV_CHANGE_TIME);
|
|
|
this->DisableWidget(WID_TV_CLEAR_TIME);
|
|
|
this->DisableWidget(WID_TV_RESET_LATENESS);
|
|
|
this->DisableWidget(WID_TV_AUTOFILL);
|
|
|
this->DisableWidget(WID_TV_SHARED_ORDER_LIST);
|
|
|
this->DisableWidget(WID_VT_START_DATE);
|
|
|
this->DisableWidget(WID_VT_CHANGE_TIME);
|
|
|
this->DisableWidget(WID_VT_CLEAR_TIME);
|
|
|
this->DisableWidget(WID_VT_RESET_LATENESS);
|
|
|
this->DisableWidget(WID_VT_AUTOFILL);
|
|
|
this->DisableWidget(WID_VT_SHARED_ORDER_LIST);
|
|
|
}
|
|
|
|
|
|
this->SetWidgetLoweredState(WID_TV_AUTOFILL, HasBit(v->vehicle_flags, VF_AUTOFILL_TIMETABLE));
|
|
|
this->SetWidgetLoweredState(WID_VT_AUTOFILL, HasBit(v->vehicle_flags, VF_AUTOFILL_TIMETABLE));
|
|
|
|
|
|
this->DrawWidgets();
|
|
|
}
|
|
|
|
|
|
virtual void SetStringParameters(int widget) const
|
|
|
{
|
|
|
switch (widget) {
|
|
|
case WID_TV_CAPTION: SetDParam(0, this->vehicle->index); break;
|
|
|
case WID_TV_EXPECTED: SetDParam(0, this->show_expected ? STR_TIMETABLE_EXPECTED : STR_TIMETABLE_SCHEDULED); break;
|
|
|
case WID_VT_CAPTION: SetDParam(0, this->vehicle->index); break;
|
|
|
case WID_VT_EXPECTED: SetDParam(0, this->show_expected ? STR_TIMETABLE_EXPECTED : STR_TIMETABLE_SCHEDULED); break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
virtual void DrawWidget(const Rect &r, int widget) const
|
|
|
{
|
|
|
const Vehicle *v = this->vehicle;
|
|
|
int selected = this->sel_index;
|
|
|
|
|
|
switch (widget) {
|
|
|
case WID_TV_TIMETABLE_PANEL: {
|
|
|
case WID_VT_TIMETABLE_PANEL: {
|
|
|
int y = r.top + WD_FRAMERECT_TOP;
|
|
|
int i = this->vscroll->GetPosition();
|
|
|
VehicleOrderID order_id = (i + 1) / 2;
|
|
|
bool final_order = false;
|
|
|
|
|
|
bool rtl = _current_text_dir == TD_RTL;
|
|
@@ -405,13 +405,13 @@ struct TimetableWindow : Window {
|
|
|
i++;
|
|
|
y += FONT_HEIGHT_NORMAL;
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
case WID_TV_ARRIVAL_DEPARTURE_PANEL: {
|
|
|
case WID_VT_ARRIVAL_DEPARTURE_PANEL: {
|
|
|
/* Arrival and departure times are handled in an all-or-nothing approach,
|
|
|
* i.e. are only shown if we can calculate all times.
|
|
|
* Excluding order lists with only one order makes some things easier.
|
|
|
*/
|
|
|
Ticks total_time = v->orders.list != NULL ? v->orders.list->GetTimetableDurationIncomplete() : 0;
|
|
|
if (total_time <= 0 || v->GetNumOrders() <= 1 || !HasBit(v->vehicle_flags, VF_TIMETABLE_STARTED)) break;
|
|
@@ -456,13 +456,13 @@ struct TimetableWindow : Window {
|
|
|
}
|
|
|
y += FONT_HEIGHT_NORMAL;
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
case WID_TV_SUMMARY_PANEL: {
|
|
|
case WID_VT_SUMMARY_PANEL: {
|
|
|
int y = r.top + WD_FRAMERECT_TOP;
|
|
|
|
|
|
Ticks total_time = v->orders.list != NULL ? v->orders.list->GetTimetableDurationIncomplete() : 0;
|
|
|
if (total_time != 0) {
|
|
|
SetTimetableParams(0, 1, total_time);
|
|
|
DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, v->orders.list->IsCompleteTimetable() ? STR_TIMETABLE_TOTAL_TIME : STR_TIMETABLE_TOTAL_TIME_INCOMPLETE);
|
|
@@ -502,29 +502,29 @@ struct TimetableWindow : Window {
|
|
|
|
|
|
virtual void OnClick(Point pt, int widget, int click_count)
|
|
|
{
|
|
|
const Vehicle *v = this->vehicle;
|
|
|
|
|
|
switch (widget) {
|
|
|
case WID_TV_ORDER_VIEW: // Order view button
|
|
|
case WID_VT_ORDER_VIEW: // Order view button
|
|
|
ShowOrdersWindow(v);
|
|
|
break;
|
|
|
|
|
|
case WID_TV_TIMETABLE_PANEL: { // Main panel.
|
|
|
case WID_VT_TIMETABLE_PANEL: { // Main panel.
|
|
|
int selected = GetOrderFromTimetableWndPt(pt.y, v);
|
|
|
|
|
|
this->DeleteChildWindows();
|
|
|
this->sel_index = (selected == INVALID_ORDER || selected == this->sel_index) ? -1 : selected;
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
case WID_TV_START_DATE: // Change the date that the timetable starts.
|
|
|
case WID_VT_START_DATE: // Change the date that the timetable starts.
|
|
|
ShowSetDateWindow(this, v->index, _date, _cur_year, _cur_year + 15, ChangeTimetableStartCallback);
|
|
|
break;
|
|
|
|
|
|
case WID_TV_CHANGE_TIME: { // "Wait For" button.
|
|
|
case WID_VT_CHANGE_TIME: { // "Wait For" button.
|
|
|
int selected = this->sel_index;
|
|
|
VehicleOrderID real = (selected + 1) / 2;
|
|
|
|
|
|
if (real >= v->GetNumOrders()) real = 0;
|
|
|
|
|
|
const Order *order = v->GetOrder(real);
|
|
@@ -541,35 +541,35 @@ struct TimetableWindow : Window {
|
|
|
}
|
|
|
|
|
|
ShowQueryString(current, STR_TIMETABLE_CHANGE_TIME, 31, this, CS_NUMERAL, QSF_NONE);
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
case WID_TV_CLEAR_TIME: { // Clear waiting time button.
|
|
|
case WID_VT_CLEAR_TIME: { // Clear waiting time button.
|
|
|
uint32 p1 = PackTimetableArgs(v, this->sel_index);
|
|
|
DoCommandP(0, p1, 0, CMD_CHANGE_TIMETABLE | CMD_MSG(STR_ERROR_CAN_T_TIMETABLE_VEHICLE));
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
case WID_TV_RESET_LATENESS: // Reset the vehicle's late counter.
|
|
|
case WID_VT_RESET_LATENESS: // Reset the vehicle's late counter.
|
|
|
DoCommandP(0, v->index, 0, CMD_SET_VEHICLE_ON_TIME | CMD_MSG(STR_ERROR_CAN_T_TIMETABLE_VEHICLE));
|
|
|
break;
|
|
|
|
|
|
case WID_TV_AUTOFILL: { // Autofill the timetable.
|
|
|
case WID_VT_AUTOFILL: { // Autofill the timetable.
|
|
|
uint32 p2 = 0;
|
|
|
if (!HasBit(v->vehicle_flags, VF_AUTOFILL_TIMETABLE)) SetBit(p2, 0);
|
|
|
if (_ctrl_pressed) SetBit(p2, 1);
|
|
|
DoCommandP(0, v->index, p2, CMD_AUTOFILL_TIMETABLE | CMD_MSG(STR_ERROR_CAN_T_TIMETABLE_VEHICLE));
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
case WID_TV_EXPECTED:
|
|
|
case WID_VT_EXPECTED:
|
|
|
this->show_expected = !this->show_expected;
|
|
|
break;
|
|
|
|
|
|
case WID_TV_SHARED_ORDER_LIST:
|
|
|
case WID_VT_SHARED_ORDER_LIST:
|
|
|
ShowVehicleListWindow(v);
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
this->SetDirty();
|
|
|
}
|
|
@@ -590,61 +590,61 @@ struct TimetableWindow : Window {
|
|
|
DoCommandP(0, p1, p2, CMD_CHANGE_TIMETABLE | CMD_MSG(STR_ERROR_CAN_T_TIMETABLE_VEHICLE));
|
|
|
}
|
|
|
|
|
|
virtual void OnResize()
|
|
|
{
|
|
|
/* Update the scroll bar */
|
|
|
this->vscroll->SetCapacityFromWidget(this, WID_TV_TIMETABLE_PANEL, WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM);
|
|
|
this->vscroll->SetCapacityFromWidget(this, WID_VT_TIMETABLE_PANEL, WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* Update the selection state of the arrival/departure data
|
|
|
*/
|
|
|
void UpdateSelectionStates()
|
|
|
{
|
|
|
this->GetWidget<NWidgetStacked>(WID_TV_ARRIVAL_DEPARTURE_SELECTION)->SetDisplayedPlane(_settings_client.gui.timetable_arrival_departure ? 0 : SZSP_NONE);
|
|
|
this->GetWidget<NWidgetStacked>(WID_TV_EXPECTED_SELECTION)->SetDisplayedPlane(_settings_client.gui.timetable_arrival_departure ? 0 : 1);
|
|
|
this->GetWidget<NWidgetStacked>(WID_VT_ARRIVAL_DEPARTURE_SELECTION)->SetDisplayedPlane(_settings_client.gui.timetable_arrival_departure ? 0 : SZSP_NONE);
|
|
|
this->GetWidget<NWidgetStacked>(WID_VT_EXPECTED_SELECTION)->SetDisplayedPlane(_settings_client.gui.timetable_arrival_departure ? 0 : 1);
|
|
|
}
|
|
|
};
|
|
|
|
|
|
static const NWidgetPart _nested_timetable_widgets[] = {
|
|
|
NWidget(NWID_HORIZONTAL),
|
|
|
NWidget(WWT_CLOSEBOX, COLOUR_GREY),
|
|
|
NWidget(WWT_CAPTION, COLOUR_GREY, WID_TV_CAPTION), SetDataTip(STR_TIMETABLE_TITLE, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
|
|
|
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_TV_ORDER_VIEW), SetMinimalSize(61, 14), SetDataTip( STR_TIMETABLE_ORDER_VIEW, STR_TIMETABLE_ORDER_VIEW_TOOLTIP),
|
|
|
NWidget(WWT_CAPTION, COLOUR_GREY, WID_VT_CAPTION), SetDataTip(STR_TIMETABLE_TITLE, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
|
|
|
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_VT_ORDER_VIEW), SetMinimalSize(61, 14), SetDataTip( STR_TIMETABLE_ORDER_VIEW, STR_TIMETABLE_ORDER_VIEW_TOOLTIP),
|
|
|
NWidget(WWT_SHADEBOX, COLOUR_GREY),
|
|
|
NWidget(WWT_STICKYBOX, COLOUR_GREY),
|
|
|
EndContainer(),
|
|
|
NWidget(NWID_HORIZONTAL),
|
|
|
NWidget(WWT_PANEL, COLOUR_GREY, WID_TV_TIMETABLE_PANEL), SetMinimalSize(388, 82), SetResize(1, 10), SetDataTip(STR_NULL, STR_TIMETABLE_TOOLTIP), SetScrollbar(WID_TV_SCROLLBAR), EndContainer(),
|
|
|
NWidget(NWID_SELECTION, INVALID_COLOUR, WID_TV_ARRIVAL_DEPARTURE_SELECTION),
|
|
|
NWidget(WWT_PANEL, COLOUR_GREY, WID_TV_ARRIVAL_DEPARTURE_PANEL), SetMinimalSize(110, 0), SetFill(0, 1), SetDataTip(STR_NULL, STR_TIMETABLE_TOOLTIP), SetScrollbar(WID_TV_SCROLLBAR), EndContainer(),
|
|
|
NWidget(WWT_PANEL, COLOUR_GREY, WID_VT_TIMETABLE_PANEL), SetMinimalSize(388, 82), SetResize(1, 10), SetDataTip(STR_NULL, STR_TIMETABLE_TOOLTIP), SetScrollbar(WID_VT_SCROLLBAR), EndContainer(),
|
|
|
NWidget(NWID_SELECTION, INVALID_COLOUR, WID_VT_ARRIVAL_DEPARTURE_SELECTION),
|
|
|
NWidget(WWT_PANEL, COLOUR_GREY, WID_VT_ARRIVAL_DEPARTURE_PANEL), SetMinimalSize(110, 0), SetFill(0, 1), SetDataTip(STR_NULL, STR_TIMETABLE_TOOLTIP), SetScrollbar(WID_VT_SCROLLBAR), EndContainer(),
|
|
|
EndContainer(),
|
|
|
NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_TV_SCROLLBAR),
|
|
|
NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_VT_SCROLLBAR),
|
|
|
EndContainer(),
|
|
|
NWidget(WWT_PANEL, COLOUR_GREY, WID_TV_SUMMARY_PANEL), SetMinimalSize(400, 22), SetResize(1, 0), EndContainer(),
|
|
|
NWidget(WWT_PANEL, COLOUR_GREY, WID_VT_SUMMARY_PANEL), SetMinimalSize(400, 22), SetResize(1, 0), EndContainer(),
|
|
|
NWidget(NWID_HORIZONTAL),
|
|
|
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
|
|
|
NWidget(NWID_VERTICAL, NC_EQUALSIZE),
|
|
|
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_TV_CHANGE_TIME), SetResize(1, 0), SetFill(1, 1), SetDataTip(STR_TIMETABLE_CHANGE_TIME, STR_TIMETABLE_WAIT_TIME_TOOLTIP),
|
|
|
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_TV_CLEAR_TIME), SetResize(1, 0), SetFill(1, 1), SetDataTip(STR_TIMETABLE_CLEAR_TIME, STR_TIMETABLE_CLEAR_TIME_TOOLTIP),
|
|
|
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_VT_CHANGE_TIME), SetResize(1, 0), SetFill(1, 1), SetDataTip(STR_TIMETABLE_CHANGE_TIME, STR_TIMETABLE_WAIT_TIME_TOOLTIP),
|
|
|
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_VT_CLEAR_TIME), SetResize(1, 0), SetFill(1, 1), SetDataTip(STR_TIMETABLE_CLEAR_TIME, STR_TIMETABLE_CLEAR_TIME_TOOLTIP),
|
|
|
EndContainer(),
|
|
|
NWidget(NWID_VERTICAL, NC_EQUALSIZE),
|
|
|
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_TV_START_DATE), SetResize(1, 0), SetFill(1, 1), SetDataTip(STR_TIMETABLE_STARTING_DATE, STR_TIMETABLE_STARTING_DATE_TOOLTIP),
|
|
|
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_TV_RESET_LATENESS), SetResize(1, 0), SetFill(1, 1), SetDataTip(STR_TIMETABLE_RESET_LATENESS, STR_TIMETABLE_RESET_LATENESS_TOOLTIP),
|
|
|
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_VT_START_DATE), SetResize(1, 0), SetFill(1, 1), SetDataTip(STR_TIMETABLE_STARTING_DATE, STR_TIMETABLE_STARTING_DATE_TOOLTIP),
|
|
|
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_VT_RESET_LATENESS), SetResize(1, 0), SetFill(1, 1), SetDataTip(STR_TIMETABLE_RESET_LATENESS, STR_TIMETABLE_RESET_LATENESS_TOOLTIP),
|
|
|
EndContainer(),
|
|
|
NWidget(NWID_VERTICAL, NC_EQUALSIZE),
|
|
|
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_TV_AUTOFILL), SetResize(1, 0), SetFill(1, 1), SetDataTip(STR_TIMETABLE_AUTOFILL, STR_TIMETABLE_AUTOFILL_TOOLTIP),
|
|
|
NWidget(NWID_SELECTION, INVALID_COLOUR, WID_TV_EXPECTED_SELECTION),
|
|
|
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_TV_EXPECTED), SetResize(1, 0), SetFill(1, 1), SetDataTip(STR_BLACK_STRING, STR_TIMETABLE_EXPECTED_TOOLTIP),
|
|
|
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_VT_AUTOFILL), SetResize(1, 0), SetFill(1, 1), SetDataTip(STR_TIMETABLE_AUTOFILL, STR_TIMETABLE_AUTOFILL_TOOLTIP),
|
|
|
NWidget(NWID_SELECTION, INVALID_COLOUR, WID_VT_EXPECTED_SELECTION),
|
|
|
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_VT_EXPECTED), SetResize(1, 0), SetFill(1, 1), SetDataTip(STR_BLACK_STRING, STR_TIMETABLE_EXPECTED_TOOLTIP),
|
|
|
NWidget(WWT_PANEL, COLOUR_GREY), SetResize(1, 0), SetFill(1, 1), EndContainer(),
|
|
|
EndContainer(),
|
|
|
EndContainer(),
|
|
|
EndContainer(),
|
|
|
NWidget(NWID_VERTICAL, NC_EQUALSIZE),
|
|
|
NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_TV_SHARED_ORDER_LIST), SetFill(0, 1), SetDataTip(SPR_SHARED_ORDERS_ICON, STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP),
|
|
|
NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_VT_SHARED_ORDER_LIST), SetFill(0, 1), SetDataTip(SPR_SHARED_ORDERS_ICON, STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP),
|
|
|
NWidget(WWT_RESIZEBOX, COLOUR_GREY), SetFill(0, 1),
|
|
|
EndContainer(),
|
|
|
EndContainer(),
|
|
|
};
|
|
|
|
|
|
static const WindowDesc _timetable_desc(
|