src/order_gui.cpp
branchNewGRF_ports
changeset 10994 cd9968b6f96b
parent 10991 d8811e327d12
equal deleted inserted replaced
10991:d8811e327d12 10994:cd9968b6f96b
    41 	ORDER_WIDGET_TIMETABLE_VIEW,
    41 	ORDER_WIDGET_TIMETABLE_VIEW,
    42 	ORDER_WIDGET_ORDER_LIST,
    42 	ORDER_WIDGET_ORDER_LIST,
    43 	ORDER_WIDGET_SCROLLBAR,
    43 	ORDER_WIDGET_SCROLLBAR,
    44 	ORDER_WIDGET_SKIP,
    44 	ORDER_WIDGET_SKIP,
    45 	ORDER_WIDGET_DELETE,
    45 	ORDER_WIDGET_DELETE,
       
    46 	ORDER_WIDGET_NON_STOP_DROPDOWN,
    46 	ORDER_WIDGET_NON_STOP,
    47 	ORDER_WIDGET_NON_STOP,
       
    48 	ORDER_WIDGET_GOTO_DROPDOWN,
    47 	ORDER_WIDGET_GOTO,
    49 	ORDER_WIDGET_GOTO,
    48 	ORDER_WIDGET_GOTO_DROPDOWN,
    50 	ORDER_WIDGET_FULL_LOAD_DROPDOWN,
    49 	ORDER_WIDGET_FULL_LOAD,
    51 	ORDER_WIDGET_FULL_LOAD,
       
    52 	ORDER_WIDGET_UNLOAD_DROPDOWN,
    50 	ORDER_WIDGET_UNLOAD,
    53 	ORDER_WIDGET_UNLOAD,
    51 	ORDER_WIDGET_REFIT,
    54 	ORDER_WIDGET_REFIT,
    52 	ORDER_WIDGET_SERVICE,
    55 	ORDER_WIDGET_SERVICE,
    53 	ORDER_WIDGET_COND_VARIABLE,
    56 	ORDER_WIDGET_COND_VARIABLE,
    54 	ORDER_WIDGET_COND_COMPARATOR,
    57 	ORDER_WIDGET_COND_COMPARATOR,
   442 		const Order *order = GetVehicleOrder(w->vehicle, sel_ord);
   445 		const Order *order = GetVehicleOrder(w->vehicle, sel_ord);
   443 
   446 
   444 		if (order == NULL || order->GetLoadType() == load_type) return;
   447 		if (order == NULL || order->GetLoadType() == load_type) return;
   445 
   448 
   446 		if (load_type < 0) {
   449 		if (load_type < 0) {
   447 			switch (order->GetLoadType()) {
   450 			load_type = order->GetLoadType() == OLF_LOAD_IF_POSSIBLE ? OLF_FULL_LOAD_ANY : OLF_LOAD_IF_POSSIBLE;
   448 				case OLF_LOAD_IF_POSSIBLE: load_type = OLFB_FULL_LOAD;       break;
       
   449 				case OLFB_FULL_LOAD:       load_type = OLF_FULL_LOAD_ANY;    break;
       
   450 				case OLF_FULL_LOAD_ANY:    load_type = OLFB_NO_LOAD;         break;
       
   451 				case OLFB_NO_LOAD:         load_type = OLF_LOAD_IF_POSSIBLE; break;
       
   452 				default: NOT_REACHED();
       
   453 			}
       
   454 		}
   451 		}
   455 		DoCommandP(w->vehicle->tile, w->vehicle->index + (sel_ord << 16), MOF_LOAD | (load_type << 4), NULL, CMD_MODIFY_ORDER | CMD_MSG(STR_8835_CAN_T_MODIFY_THIS_ORDER));
   452 		DoCommandP(w->vehicle->tile, w->vehicle->index + (sel_ord << 16), MOF_LOAD | (load_type << 4), NULL, CMD_MODIFY_ORDER | CMD_MSG(STR_8835_CAN_T_MODIFY_THIS_ORDER));
   456 	}
   453 	}
   457 
   454 
   458 	/**
   455 	/**
   505 		const Order *order = GetVehicleOrder(w->vehicle, sel_ord);
   502 		const Order *order = GetVehicleOrder(w->vehicle, sel_ord);
   506 
   503 
   507 		if (order == NULL || order->GetUnloadType() == unload_type) return;
   504 		if (order == NULL || order->GetUnloadType() == unload_type) return;
   508 
   505 
   509 		if (unload_type < 0) {
   506 		if (unload_type < 0) {
   510 			switch (order->GetUnloadType()) {
   507 			unload_type = order->GetUnloadType() == OUF_UNLOAD_IF_POSSIBLE ? OUFB_UNLOAD : OUF_UNLOAD_IF_POSSIBLE;
   511 				case OUF_UNLOAD_IF_POSSIBLE: unload_type = OUFB_UNLOAD;            break;
       
   512 				case OUFB_UNLOAD:            unload_type = OUFB_TRANSFER;          break;
       
   513 				case OUFB_TRANSFER:          unload_type = OUFB_NO_UNLOAD;         break;
       
   514 				case OUFB_NO_UNLOAD:         unload_type = OUF_UNLOAD_IF_POSSIBLE; break;
       
   515 				default: NOT_REACHED();
       
   516 			}
       
   517 		}
   508 		}
   518 
   509 
   519 		DoCommandP(w->vehicle->tile, w->vehicle->index + (sel_ord << 16), MOF_UNLOAD | (unload_type << 4), NULL, CMD_MODIFY_ORDER | CMD_MSG(STR_8835_CAN_T_MODIFY_THIS_ORDER));
   510 		DoCommandP(w->vehicle->tile, w->vehicle->index + (sel_ord << 16), MOF_UNLOAD | (unload_type << 4), NULL, CMD_MODIFY_ORDER | CMD_MSG(STR_8835_CAN_T_MODIFY_THIS_ORDER));
   520 	}
   511 	}
   521 
   512 
   532 
   523 
   533 		if (order == NULL || order->GetNonStopType() == non_stop) return;
   524 		if (order == NULL || order->GetNonStopType() == non_stop) return;
   534 
   525 
   535 		/* Keypress if negative, so 'toggle' to the next */
   526 		/* Keypress if negative, so 'toggle' to the next */
   536 		if (non_stop < 0) {
   527 		if (non_stop < 0) {
   537 			non_stop = (order->GetNonStopType() + 1) % ONSF_END;
   528 			non_stop = order->GetNonStopType() ^ ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS;
   538 		}
   529 		}
   539 
   530 
       
   531 		w->InvalidateWidget(ORDER_WIDGET_NON_STOP);
   540 		DoCommandP(w->vehicle->tile, w->vehicle->index + (sel_ord << 16), MOF_NON_STOP | non_stop << 4,  NULL, CMD_MODIFY_ORDER | CMD_MSG(STR_8835_CAN_T_MODIFY_THIS_ORDER));
   532 		DoCommandP(w->vehicle->tile, w->vehicle->index + (sel_ord << 16), MOF_NON_STOP | non_stop << 4,  NULL, CMD_MODIFY_ORDER | CMD_MSG(STR_8835_CAN_T_MODIFY_THIS_ORDER));
   541 	}
   533 	}
   542 
   534 
   543 	/**
   535 	/**
   544 	 * Handle the click on the transfer button.
   536 	 * Handle the click on the transfer button.
   629 		int sel = OrderGetSel();
   621 		int sel = OrderGetSel();
   630 		const Order *order = GetVehicleOrder(this->vehicle, sel);
   622 		const Order *order = GetVehicleOrder(this->vehicle, sel);
   631 
   623 
   632 		if (this->vehicle->owner == _local_player) {
   624 		if (this->vehicle->owner == _local_player) {
   633 			/* Set the strings for the dropdown boxes. */
   625 			/* Set the strings for the dropdown boxes. */
   634 			this->widget[ORDER_WIDGET_NON_STOP].data        = _order_non_stop_drowdown[order == NULL ? 0 : order->GetNonStopType()];
       
   635 			this->widget[ORDER_WIDGET_FULL_LOAD].data       = _order_full_load_drowdown[order == NULL ? 0 : order->GetLoadType()];
       
   636 			this->widget[ORDER_WIDGET_UNLOAD].data          = _order_unload_drowdown[order == NULL ? 0 : order->GetUnloadType()];
       
   637 			this->widget[ORDER_WIDGET_COND_VARIABLE].data   = _order_conditional_variable[order == NULL ? 0 : order->GetConditionVariable()];
   626 			this->widget[ORDER_WIDGET_COND_VARIABLE].data   = _order_conditional_variable[order == NULL ? 0 : order->GetConditionVariable()];
   638 			this->widget[ORDER_WIDGET_COND_COMPARATOR].data = _order_conditional_condition[order == NULL ? 0 : order->GetConditionComparator()];
   627 			this->widget[ORDER_WIDGET_COND_COMPARATOR].data = _order_conditional_condition[order == NULL ? 0 : order->GetConditionComparator()];
   639 
   628 
   640 			/* skip */
   629 			/* skip */
   641 			this->SetWidgetDisabledState(ORDER_WIDGET_SKIP, this->vehicle->num_orders <= 1);
   630 			this->SetWidgetDisabledState(ORDER_WIDGET_SKIP, this->vehicle->num_orders <= 1);
   644 			this->SetWidgetDisabledState(ORDER_WIDGET_DELETE,
   633 			this->SetWidgetDisabledState(ORDER_WIDGET_DELETE,
   645 					(uint)this->vehicle->num_orders + ((shared_orders || this->vehicle->num_orders != 0) ? 1 : 0) <= (uint)this->selected_order);
   634 					(uint)this->vehicle->num_orders + ((shared_orders || this->vehicle->num_orders != 0) ? 1 : 0) <= (uint)this->selected_order);
   646 
   635 
   647 			/* non-stop only for trains */
   636 			/* non-stop only for trains */
   648 			this->SetWidgetDisabledState(ORDER_WIDGET_NON_STOP,  (this->vehicle->type != VEH_TRAIN && this->vehicle->type != VEH_ROAD) || order == NULL);
   637 			this->SetWidgetDisabledState(ORDER_WIDGET_NON_STOP,  (this->vehicle->type != VEH_TRAIN && this->vehicle->type != VEH_ROAD) || order == NULL);
       
   638 			this->SetWidgetDisabledState(ORDER_WIDGET_NON_STOP_DROPDOWN, this->IsWidgetDisabled(ORDER_WIDGET_NON_STOP));
   649 			this->SetWidgetDisabledState(ORDER_WIDGET_FULL_LOAD, order == NULL || (order->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION) != 0); // full load
   639 			this->SetWidgetDisabledState(ORDER_WIDGET_FULL_LOAD, order == NULL || (order->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION) != 0); // full load
       
   640 			this->SetWidgetDisabledState(ORDER_WIDGET_FULL_LOAD_DROPDOWN, this->IsWidgetDisabled(ORDER_WIDGET_FULL_LOAD));
   650 			this->SetWidgetDisabledState(ORDER_WIDGET_UNLOAD,    order == NULL || (order->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION) != 0); // unload
   641 			this->SetWidgetDisabledState(ORDER_WIDGET_UNLOAD,    order == NULL || (order->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION) != 0); // unload
       
   642 			this->SetWidgetDisabledState(ORDER_WIDGET_UNLOAD_DROPDOWN, this->IsWidgetDisabled(ORDER_WIDGET_UNLOAD));
   651 			/* Disable list of vehicles with the same shared orders if there is no list */
   643 			/* Disable list of vehicles with the same shared orders if there is no list */
   652 			this->SetWidgetDisabledState(ORDER_WIDGET_SHARED_ORDER_LIST, !shared_orders || this->vehicle->orders == NULL);
   644 			this->SetWidgetDisabledState(ORDER_WIDGET_SHARED_ORDER_LIST, !shared_orders || this->vehicle->orders == NULL);
   653 			this->SetWidgetDisabledState(ORDER_WIDGET_REFIT,     order == NULL); // Refit
   645 			this->SetWidgetDisabledState(ORDER_WIDGET_REFIT,     order == NULL); // Refit
   654 			this->SetWidgetDisabledState(ORDER_WIDGET_SERVICE,   order == NULL); // Refit
   646 			this->SetWidgetDisabledState(ORDER_WIDGET_SERVICE,   order == NULL); // Refit
   655 			this->HideWidget(ORDER_WIDGET_REFIT); // Refit
   647 			this->HideWidget(ORDER_WIDGET_REFIT); // Refit
   658 			this->HideWidget(ORDER_WIDGET_COND_VARIABLE);
   650 			this->HideWidget(ORDER_WIDGET_COND_VARIABLE);
   659 			this->HideWidget(ORDER_WIDGET_COND_COMPARATOR);
   651 			this->HideWidget(ORDER_WIDGET_COND_COMPARATOR);
   660 			this->HideWidget(ORDER_WIDGET_COND_VALUE);
   652 			this->HideWidget(ORDER_WIDGET_COND_VALUE);
   661 		}
   653 		}
   662 
   654 
       
   655 		this->ShowWidget(ORDER_WIDGET_NON_STOP_DROPDOWN);
   663 		this->ShowWidget(ORDER_WIDGET_NON_STOP);
   656 		this->ShowWidget(ORDER_WIDGET_NON_STOP);
       
   657 		this->ShowWidget(ORDER_WIDGET_UNLOAD_DROPDOWN);
   664 		this->ShowWidget(ORDER_WIDGET_UNLOAD);
   658 		this->ShowWidget(ORDER_WIDGET_UNLOAD);
       
   659 		this->ShowWidget(ORDER_WIDGET_FULL_LOAD_DROPDOWN);
   665 		this->ShowWidget(ORDER_WIDGET_FULL_LOAD);
   660 		this->ShowWidget(ORDER_WIDGET_FULL_LOAD);
   666 
   661 
       
   662 		this->RaiseWidget(ORDER_WIDGET_NON_STOP);
       
   663 		this->RaiseWidget(ORDER_WIDGET_FULL_LOAD);
       
   664 		this->RaiseWidget(ORDER_WIDGET_UNLOAD);
       
   665 
   667 		if (order != NULL) {
   666 		if (order != NULL) {
       
   667 			this->SetWidgetLoweredState(ORDER_WIDGET_NON_STOP, order->GetNonStopType() & ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS);
   668 			switch (order->GetType()) {
   668 			switch (order->GetType()) {
   669 				case OT_GOTO_STATION:
   669 				case OT_GOTO_STATION:
   670 					if (!GetStation(order->GetDestination())->IsBuoy()) break;
   670 					if (!GetStation(order->GetDestination())->IsBuoy()) {
       
   671 						this->SetWidgetLoweredState(ORDER_WIDGET_FULL_LOAD, order->GetLoadType() == OLF_FULL_LOAD_ANY);
       
   672 						this->SetWidgetLoweredState(ORDER_WIDGET_UNLOAD, order->GetUnloadType() == OUFB_UNLOAD);
       
   673 						break;
       
   674 					}
   671 					/* Fall-through */
   675 					/* Fall-through */
   672 
   676 
   673 				case OT_GOTO_WAYPOINT:
   677 				case OT_GOTO_WAYPOINT:
       
   678 					this->DisableWidget(ORDER_WIDGET_FULL_LOAD_DROPDOWN);
   674 					this->DisableWidget(ORDER_WIDGET_FULL_LOAD);
   679 					this->DisableWidget(ORDER_WIDGET_FULL_LOAD);
       
   680 					this->DisableWidget(ORDER_WIDGET_UNLOAD_DROPDOWN);
   675 					this->DisableWidget(ORDER_WIDGET_UNLOAD);
   681 					this->DisableWidget(ORDER_WIDGET_UNLOAD);
   676 					break;
   682 					break;
   677 
   683 
   678 				case OT_GOTO_DEPOT:
   684 				case OT_GOTO_DEPOT:
   679 					this->DisableWidget(ORDER_WIDGET_FULL_LOAD);
       
   680 
       
   681 					/* Remove unload and replace it with refit */
   685 					/* Remove unload and replace it with refit */
       
   686 					this->HideWidget(ORDER_WIDGET_UNLOAD_DROPDOWN);
   682 					this->HideWidget(ORDER_WIDGET_UNLOAD);
   687 					this->HideWidget(ORDER_WIDGET_UNLOAD);
       
   688 					this->HideWidget(ORDER_WIDGET_FULL_LOAD_DROPDOWN);
       
   689 					this->HideWidget(ORDER_WIDGET_FULL_LOAD);
   683 					this->ShowWidget(ORDER_WIDGET_REFIT);
   690 					this->ShowWidget(ORDER_WIDGET_REFIT);
   684 					this->HideWidget(ORDER_WIDGET_FULL_LOAD);
       
   685 					this->ShowWidget(ORDER_WIDGET_SERVICE);
   691 					this->ShowWidget(ORDER_WIDGET_SERVICE);
       
   692 					this->SetWidgetLoweredState(ORDER_WIDGET_SERVICE, order->GetDepotOrderType() & ODTFB_SERVICE);
   686 					break;
   693 					break;
   687 
   694 
   688 				case OT_CONDITIONAL: {
   695 				case OT_CONDITIONAL: {
       
   696 					this->HideWidget(ORDER_WIDGET_NON_STOP_DROPDOWN);
   689 					this->HideWidget(ORDER_WIDGET_NON_STOP);
   697 					this->HideWidget(ORDER_WIDGET_NON_STOP);
   690 					this->HideWidget(ORDER_WIDGET_UNLOAD);
   698 					this->HideWidget(ORDER_WIDGET_UNLOAD);
       
   699 					this->HideWidget(ORDER_WIDGET_UNLOAD_DROPDOWN);
   691 					this->HideWidget(ORDER_WIDGET_FULL_LOAD);
   700 					this->HideWidget(ORDER_WIDGET_FULL_LOAD);
       
   701 					this->HideWidget(ORDER_WIDGET_FULL_LOAD_DROPDOWN);
   692 					this->ShowWidget(ORDER_WIDGET_COND_VARIABLE);
   702 					this->ShowWidget(ORDER_WIDGET_COND_VARIABLE);
   693 					this->ShowWidget(ORDER_WIDGET_COND_COMPARATOR);
   703 					this->ShowWidget(ORDER_WIDGET_COND_COMPARATOR);
   694 					this->ShowWidget(ORDER_WIDGET_COND_VALUE);
   704 					this->ShowWidget(ORDER_WIDGET_COND_VALUE);
   695 
   705 
   696 					OrderConditionVariable ocv = order->GetConditionVariable();
   706 					OrderConditionVariable ocv = order->GetConditionVariable();
   701 					if (order->GetConditionVariable() == OCV_MAX_SPEED) value = ConvertSpeedToDisplaySpeed(value);
   711 					if (order->GetConditionVariable() == OCV_MAX_SPEED) value = ConvertSpeedToDisplaySpeed(value);
   702 					SetDParam(1, value);
   712 					SetDParam(1, value);
   703 				} break;
   713 				} break;
   704 
   714 
   705 				default: // every other orders
   715 				default: // every other orders
       
   716 					this->DisableWidget(ORDER_WIDGET_NON_STOP_DROPDOWN);
   706 					this->DisableWidget(ORDER_WIDGET_NON_STOP);
   717 					this->DisableWidget(ORDER_WIDGET_NON_STOP);
       
   718 					this->DisableWidget(ORDER_WIDGET_FULL_LOAD_DROPDOWN);
   707 					this->DisableWidget(ORDER_WIDGET_FULL_LOAD);
   719 					this->DisableWidget(ORDER_WIDGET_FULL_LOAD);
       
   720 					this->DisableWidget(ORDER_WIDGET_UNLOAD_DROPDOWN);
   708 					this->DisableWidget(ORDER_WIDGET_UNLOAD);
   721 					this->DisableWidget(ORDER_WIDGET_UNLOAD);
   709 			}
   722 			}
   710 		}
   723 		}
   711 
   724 
   712 		SetDParam(0, this->vehicle->index);
   725 		SetDParam(0, this->vehicle->index);
   788 
   801 
   789 			case ORDER_WIDGET_DELETE:
   802 			case ORDER_WIDGET_DELETE:
   790 				OrderClick_Delete(this, 0);
   803 				OrderClick_Delete(this, 0);
   791 				break;
   804 				break;
   792 
   805 
   793 			case ORDER_WIDGET_NON_STOP: {
   806 			case ORDER_WIDGET_NON_STOP:
       
   807 				OrderClick_Nonstop(this, -1);
       
   808 				break;
       
   809 
       
   810 			case ORDER_WIDGET_NON_STOP_DROPDOWN: {
   794 				const Order *o = GetVehicleOrder(this->vehicle, this->OrderGetSel());
   811 				const Order *o = GetVehicleOrder(this->vehicle, this->OrderGetSel());
   795 				ShowDropDownMenu(this, _order_non_stop_drowdown, o->GetNonStopType(), ORDER_WIDGET_NON_STOP, 0, o->IsType(OT_GOTO_STATION) ? 0 : (o->IsType(OT_GOTO_WAYPOINT) ? 3 : 12));
   812 				ShowDropDownMenu(this, _order_non_stop_drowdown, o->GetNonStopType(), ORDER_WIDGET_NON_STOP_DROPDOWN, 0, o->IsType(OT_GOTO_STATION) ? 0 : (o->IsType(OT_GOTO_WAYPOINT) ? 3 : 12));
   796 			} break;
   813 			} break;
   797 
   814 
   798 			case ORDER_WIDGET_GOTO:
   815 			case ORDER_WIDGET_GOTO:
   799 				OrderClick_Goto(this, 0);
   816 				OrderClick_Goto(this, 0);
   800 				break;
   817 				break;
   801 
   818 
   802 			case ORDER_WIDGET_GOTO_DROPDOWN:
   819 			case ORDER_WIDGET_GOTO_DROPDOWN:
   803 				ShowDropDownMenu(this, this->vehicle->type == VEH_AIRCRAFT ? _order_goto_dropdown_aircraft : _order_goto_dropdown, 0, ORDER_WIDGET_GOTO, 0, 0, this->widget[ORDER_WIDGET_GOTO_DROPDOWN].right - this->widget[ORDER_WIDGET_GOTO].left);
   820 				ShowDropDownMenu(this, this->vehicle->type == VEH_AIRCRAFT ? _order_goto_dropdown_aircraft : _order_goto_dropdown, 0, ORDER_WIDGET_GOTO_DROPDOWN, 0, 0);
   804 				break;
   821 				break;
   805 
   822 
   806 			case ORDER_WIDGET_FULL_LOAD:
   823 			case ORDER_WIDGET_FULL_LOAD:
   807 				ShowDropDownMenu(this, _order_full_load_drowdown, GetVehicleOrder(this->vehicle, this->OrderGetSel())->GetLoadType(), ORDER_WIDGET_FULL_LOAD, 0, 2);
   824 				OrderClick_FullLoad(this, -1);
       
   825 				break;
       
   826 
       
   827 			case ORDER_WIDGET_FULL_LOAD_DROPDOWN:
       
   828 				ShowDropDownMenu(this, _order_full_load_drowdown, GetVehicleOrder(this->vehicle, this->OrderGetSel())->GetLoadType(), ORDER_WIDGET_FULL_LOAD_DROPDOWN, 0, 2);
   808 				break;
   829 				break;
   809 
   830 
   810 			case ORDER_WIDGET_UNLOAD:
   831 			case ORDER_WIDGET_UNLOAD:
   811 				ShowDropDownMenu(this, _order_unload_drowdown, GetVehicleOrder(this->vehicle, this->OrderGetSel())->GetUnloadType(), ORDER_WIDGET_UNLOAD, 0, 8);
   832 				OrderClick_Unload(this, -1);
       
   833 				break;
       
   834 
       
   835 			case ORDER_WIDGET_UNLOAD_DROPDOWN:
       
   836 				ShowDropDownMenu(this, _order_unload_drowdown, GetVehicleOrder(this->vehicle, this->OrderGetSel())->GetUnloadType(), ORDER_WIDGET_UNLOAD_DROPDOWN, 0, 8);
   812 				break;
   837 				break;
   813 
   838 
   814 			case ORDER_WIDGET_REFIT:
   839 			case ORDER_WIDGET_REFIT:
   815 				OrderClick_Refit(this, 0);
   840 				OrderClick_Refit(this, 0);
   816 				break;
   841 				break;
   869 	}
   894 	}
   870 
   895 
   871 	virtual void OnDropdownSelect(int widget, int index)
   896 	virtual void OnDropdownSelect(int widget, int index)
   872 	{
   897 	{
   873 		switch (widget) {
   898 		switch (widget) {
   874 			case ORDER_WIDGET_NON_STOP:
   899 			case ORDER_WIDGET_NON_STOP_DROPDOWN:
   875 				OrderClick_Nonstop(this, index);
   900 				OrderClick_Nonstop(this, index);
   876 				break;
   901 				break;
   877 
   902 
   878 			case ORDER_WIDGET_FULL_LOAD:
   903 			case ORDER_WIDGET_FULL_LOAD_DROPDOWN:
   879 				OrderClick_FullLoad(this, index);
   904 				OrderClick_FullLoad(this, index);
   880 				break;
   905 				break;
   881 
   906 
   882 			case ORDER_WIDGET_UNLOAD:
   907 			case ORDER_WIDGET_UNLOAD_DROPDOWN:
   883 				OrderClick_Unload(this, index);
   908 				OrderClick_Unload(this, index);
   884 				break;
   909 				break;
   885 
   910 
   886 			case ORDER_WIDGET_GOTO:
   911 			case ORDER_WIDGET_GOTO_DROPDOWN:
   887 				switch (index) {
   912 				switch (index) {
   888 					case 0:
   913 					case 0: OrderClick_Goto(this, 0); break;
   889 						this->ToggleWidgetLoweredState(ORDER_WIDGET_GOTO);
       
   890 						OrderClick_Goto(this, 0);
       
   891 						break;
       
   892 
       
   893 					case 1: OrderClick_NearestDepot(this, 0); break;
   914 					case 1: OrderClick_NearestDepot(this, 0); break;
   894 					case 2: OrderClick_Conditional(this, 0); break;
   915 					case 2: OrderClick_Conditional(this, 0); break;
   895 					default: NOT_REACHED();
   916 					default: NOT_REACHED();
   896 				}
   917 				}
   897 				break;
   918 				break;
  1038 
  1059 
  1039 	{  WWT_SCROLLBAR,   RESIZE_LRB,     14,   374,   385,    14,    75, 0x0,                     STR_0190_SCROLL_BAR_SCROLLS_LIST},    // ORDER_WIDGET_SCROLLBAR
  1060 	{  WWT_SCROLLBAR,   RESIZE_LRB,     14,   374,   385,    14,    75, 0x0,                     STR_0190_SCROLL_BAR_SCROLLS_LIST},    // ORDER_WIDGET_SCROLLBAR
  1040 
  1061 
  1041 	{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,     0,   123,    88,    99, STR_8823_SKIP,           STR_8853_SKIP_THE_CURRENT_ORDER},     // ORDER_WIDGET_SKIP
  1062 	{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,     0,   123,    88,    99, STR_8823_SKIP,           STR_8853_SKIP_THE_CURRENT_ORDER},     // ORDER_WIDGET_SKIP
  1042 	{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,   124,   247,    88,    99, STR_8824_DELETE,         STR_8854_DELETE_THE_HIGHLIGHTED},     // ORDER_WIDGET_DELETE
  1063 	{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,   124,   247,    88,    99, STR_8824_DELETE,         STR_8854_DELETE_THE_HIGHLIGHTED},     // ORDER_WIDGET_DELETE
  1043 	{   WWT_DROPDOWN,   RESIZE_TB,      14,     0,   123,    76,    87, STR_NULL,                STR_ORDER_TOOLTIP_NON_STOP},          // ORDER_WIDGET_NON_STOP
  1064 	{   WWT_DROPDOWN,   RESIZE_TB,      14,     0,   123,    76,    87, STR_NULL,                STR_ORDER_TOOLTIP_NON_STOP},          // ORDER_WIDGET_NON_STOP_DROPDOWN
       
  1065 	{    WWT_TEXTBTN,   RESIZE_TB,      14,     0,   111,    76,    87, STR_ORDER_NON_STOP,      STR_ORDER_TOOLTIP_NON_STOP},          // ORDER_WIDGET_NON_STOP
       
  1066 	{   WWT_DROPDOWN,   RESIZE_TB,      14,   248,   371,    88,    99, STR_EMPTY,               STR_ORDER_GO_TO_DROPDOWN_TOOLTIP},    // ORDER_WIDGET_GOTO_DROPDOWN
  1044 	{    WWT_TEXTBTN,   RESIZE_TB,      14,   248,   359,    88,    99, STR_8826_GO_TO,          STR_8856_INSERT_A_NEW_ORDER_BEFORE},  // ORDER_WIDGET_GOTO
  1067 	{    WWT_TEXTBTN,   RESIZE_TB,      14,   248,   359,    88,    99, STR_8826_GO_TO,          STR_8856_INSERT_A_NEW_ORDER_BEFORE},  // ORDER_WIDGET_GOTO
  1045 	{   WWT_DROPDOWN,   RESIZE_TB,      14,   360,   371,    88,    99, STR_EMPTY,               STR_ORDER_GO_TO_DROPDOWN_TOOLTIP},    // ORDER_WIDGET_GOTO_DROPDOWN
  1068 	{   WWT_DROPDOWN,   RESIZE_TB,      14,   124,   247,    76,    87, STR_NULL,                STR_ORDER_TOOLTIP_FULL_LOAD},         // ORDER_WIDGET_FULL_LOAD_DROPDOWN
  1046 	{   WWT_DROPDOWN,   RESIZE_TB,      14,   124,   247,    76,    87, STR_NULL,                STR_ORDER_TOOLTIP_FULL_LOAD},         // ORDER_WIDGET_FULL_LOAD
  1069 	{    WWT_TEXTBTN,   RESIZE_TB,      14,   124,   235,    76,    87, STR_ORDER_TOGGLE_FULL_LOAD, STR_ORDER_TOOLTIP_FULL_LOAD},      // ORDER_WIDGET_FULL_LOAD
  1047 	{   WWT_DROPDOWN,   RESIZE_TB,      14,   248,   371,    76,    87, STR_NULL,                STR_ORDER_TOOLTIP_UNLOAD},            // ORDER_WIDGET_UNLOAD
  1070 	{   WWT_DROPDOWN,   RESIZE_TB,      14,   248,   371,    76,    87, STR_NULL,                STR_ORDER_TOOLTIP_UNLOAD},            // ORDER_WIDGET_UNLOAD_DROPDOWN
       
  1071 	{    WWT_TEXTBTN,   RESIZE_TB,      14,   248,   359,    76,    87, STR_ORDER_TOGGLE_UNLOAD, STR_ORDER_TOOLTIP_UNLOAD},            // ORDER_WIDGET_UNLOAD
  1048 	{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,   124,   247,    76,    87, STR_REFIT,               STR_REFIT_TIP},                       // ORDER_WIDGET_REFIT
  1072 	{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,   124,   247,    76,    87, STR_REFIT,               STR_REFIT_TIP},                       // ORDER_WIDGET_REFIT
  1049 	{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,   248,   371,    76,    87, STR_SERVICE,             STR_SERVICE_HINT},                    // ORDER_WIDGET_SERVICE
  1073 	{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,   248,   371,    76,    87, STR_SERVICE,             STR_SERVICE_HINT},                    // ORDER_WIDGET_SERVICE
  1050 
  1074 
  1051 	{   WWT_DROPDOWN,   RESIZE_TB,      14,     0,   123,    76,    87, STR_NULL,                STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP},   // ORDER_WIDGET_COND_VARIABLE
  1075 	{   WWT_DROPDOWN,   RESIZE_TB,      14,     0,   123,    76,    87, STR_NULL,                STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP},   // ORDER_WIDGET_COND_VARIABLE
  1052 	{   WWT_DROPDOWN,   RESIZE_TB,      14,   124,   247,    76,    87, STR_NULL,                STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP}, // ORDER_WIDGET_COND_COMPARATOR
  1076 	{   WWT_DROPDOWN,   RESIZE_TB,      14,   124,   247,    76,    87, STR_NULL,                STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP}, // ORDER_WIDGET_COND_COMPARATOR
  1078 
  1102 
  1079 	{  WWT_SCROLLBAR,   RESIZE_LRB,     14,   374,   385,    14,    75, 0x0,                     STR_0190_SCROLL_BAR_SCROLLS_LIST},    // ORDER_WIDGET_SCROLLBAR
  1103 	{  WWT_SCROLLBAR,   RESIZE_LRB,     14,   374,   385,    14,    75, 0x0,                     STR_0190_SCROLL_BAR_SCROLLS_LIST},    // ORDER_WIDGET_SCROLLBAR
  1080 
  1104 
  1081 	{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,     0,   123,    88,    99, STR_8823_SKIP,           STR_8853_SKIP_THE_CURRENT_ORDER},     // ORDER_WIDGET_SKIP
  1105 	{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,     0,   123,    88,    99, STR_8823_SKIP,           STR_8853_SKIP_THE_CURRENT_ORDER},     // ORDER_WIDGET_SKIP
  1082 	{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,   124,   247,    88,    99, STR_8824_DELETE,         STR_8854_DELETE_THE_HIGHLIGHTED},     // ORDER_WIDGET_DELETE
  1106 	{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,   124,   247,    88,    99, STR_8824_DELETE,         STR_8854_DELETE_THE_HIGHLIGHTED},     // ORDER_WIDGET_DELETE
       
  1107 	{      WWT_EMPTY,   RESIZE_TB,      14,     0,     0,    76,    87, 0x0,                     0x0},                                 // ORDER_WIDGET_NON_STOP_DROPDOWN
  1083 	{      WWT_EMPTY,   RESIZE_TB,      14,     0,     0,    76,    87, 0x0,                     0x0},                                 // ORDER_WIDGET_NON_STOP
  1108 	{      WWT_EMPTY,   RESIZE_TB,      14,     0,     0,    76,    87, 0x0,                     0x0},                                 // ORDER_WIDGET_NON_STOP
       
  1109 	{   WWT_DROPDOWN,   RESIZE_TB,      14,   248,   371,    88,    99, STR_EMPTY,               STR_ORDER_GO_TO_DROPDOWN_TOOLTIP},    // ORDER_WIDGET_GOTO_DROPDOWN
  1084 	{    WWT_TEXTBTN,   RESIZE_TB,      14,   248,   359,    88,    99, STR_8826_GO_TO,          STR_8856_INSERT_A_NEW_ORDER_BEFORE},  // ORDER_WIDGET_GOTO
  1110 	{    WWT_TEXTBTN,   RESIZE_TB,      14,   248,   359,    88,    99, STR_8826_GO_TO,          STR_8856_INSERT_A_NEW_ORDER_BEFORE},  // ORDER_WIDGET_GOTO
  1085 	{   WWT_DROPDOWN,   RESIZE_TB,      14,   360,   371,    88,    99, STR_EMPTY,               STR_ORDER_GO_TO_DROPDOWN_TOOLTIP},    // ORDER_WIDGET_GOTO_DROPDOWN
  1111 	{   WWT_DROPDOWN,   RESIZE_TB,      14,     0,   185,    76,    87, STR_NULL,                STR_ORDER_TOOLTIP_FULL_LOAD},         // ORDER_WIDGET_FULL_LOAD_DROPDOWN
  1086 	{   WWT_DROPDOWN,   RESIZE_TB,      14,     0,   185,    76,    87, STR_NULL,                STR_ORDER_TOOLTIP_FULL_LOAD},         // ORDER_WIDGET_FULL_LOAD
  1112 	{    WWT_TEXTBTN,   RESIZE_TB,      14,     0,   173,    76,    87, STR_ORDER_TOGGLE_FULL_LOAD, STR_ORDER_TOOLTIP_FULL_LOAD},      // ORDER_WIDGET_FULL_LOAD
  1087 	{   WWT_DROPDOWN,   RESIZE_TB,      14,   186,   371,    76,    87, STR_NULL,                STR_ORDER_TOOLTIP_UNLOAD},            // ORDER_WIDGET_UNLOAD
  1113 	{   WWT_DROPDOWN,   RESIZE_TB,      14,   186,   371,    76,    87, STR_NULL,                STR_ORDER_TOOLTIP_UNLOAD},            // ORDER_WIDGET_UNLOAD_DROPDOWN
       
  1114 	{    WWT_TEXTBTN,   RESIZE_TB,      14,   186,   359,    76,    87, STR_ORDER_TOGGLE_UNLOAD, STR_ORDER_TOOLTIP_UNLOAD},            // ORDER_WIDGET_UNLOAD
  1088 	{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,     0,   185,    76,    87, STR_REFIT,               STR_REFIT_TIP},                       // ORDER_WIDGET_REFIT
  1115 	{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,     0,   185,    76,    87, STR_REFIT,               STR_REFIT_TIP},                       // ORDER_WIDGET_REFIT
  1089 	{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,   186,   371,    76,    87, STR_SERVICE,             STR_SERVICE_HINT},                    // ORDER_WIDGET_SERVICE
  1116 	{ WWT_PUSHTXTBTN,   RESIZE_TB,      14,   186,   371,    76,    87, STR_SERVICE,             STR_SERVICE_HINT},                    // ORDER_WIDGET_SERVICE
  1090 
  1117 
  1091 	{   WWT_DROPDOWN,   RESIZE_TB,      14,     0,   123,    76,    87, STR_NULL,                STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP},   // ORDER_WIDGET_COND_VARIABLE
  1118 	{   WWT_DROPDOWN,   RESIZE_TB,      14,     0,   123,    76,    87, STR_NULL,                STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP},   // ORDER_WIDGET_COND_VARIABLE
  1092 	{   WWT_DROPDOWN,   RESIZE_TB,      14,   124,   247,    76,    87, STR_NULL,                STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP}, // ORDER_WIDGET_COND_COMPARATOR
  1119 	{   WWT_DROPDOWN,   RESIZE_TB,      14,   124,   247,    76,    87, STR_NULL,                STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP}, // ORDER_WIDGET_COND_COMPARATOR
  1118 
  1145 
  1119 	{  WWT_SCROLLBAR,   RESIZE_LRB,     14,   374,   385,    14,    75, 0x0,                STR_0190_SCROLL_BAR_SCROLLS_LIST},    // ORDER_WIDGET_SCROLLBAR
  1146 	{  WWT_SCROLLBAR,   RESIZE_LRB,     14,   374,   385,    14,    75, 0x0,                STR_0190_SCROLL_BAR_SCROLLS_LIST},    // ORDER_WIDGET_SCROLLBAR
  1120 
  1147 
  1121 	{      WWT_EMPTY,   RESIZE_NONE,    14,     0,     0,    76,    87, 0x0,                STR_NULL},                            // ORDER_WIDGET_SKIP
  1148 	{      WWT_EMPTY,   RESIZE_NONE,    14,     0,     0,    76,    87, 0x0,                STR_NULL},                            // ORDER_WIDGET_SKIP
  1122 	{      WWT_EMPTY,   RESIZE_NONE,    14,     0,     0,    76,    87, 0x0,                STR_NULL},                            // ORDER_WIDGET_DELETE
  1149 	{      WWT_EMPTY,   RESIZE_NONE,    14,     0,     0,    76,    87, 0x0,                STR_NULL},                            // ORDER_WIDGET_DELETE
       
  1150 	{      WWT_EMPTY,   RESIZE_NONE,    14,     0,     0,    76,    87, 0x0,                STR_NULL},                            // ORDER_WIDGET_NON_STOP_DROPDOWN
  1123 	{      WWT_EMPTY,   RESIZE_NONE,    14,     0,     0,    76,    87, 0x0,                STR_NULL},                            // ORDER_WIDGET_NON_STOP
  1151 	{      WWT_EMPTY,   RESIZE_NONE,    14,     0,     0,    76,    87, 0x0,                STR_NULL},                            // ORDER_WIDGET_NON_STOP
       
  1152 	{      WWT_EMPTY,   RESIZE_NONE,    14,     0,     0,    76,    87, 0x0,                STR_NULL},                            // ORDER_WIDGET_GOTO_DROPDOWN
  1124 	{      WWT_EMPTY,   RESIZE_NONE,    14,     0,     0,    76,    87, 0x0,                STR_NULL},                            // ORDER_WIDGET_GOTO
  1153 	{      WWT_EMPTY,   RESIZE_NONE,    14,     0,     0,    76,    87, 0x0,                STR_NULL},                            // ORDER_WIDGET_GOTO
  1125 	{      WWT_EMPTY,   RESIZE_NONE,    14,     0,     0,    76,    87, 0x0,                STR_NULL},                            // ORDER_WIDGET_GOTO_DROPDOWN
  1154 	{      WWT_EMPTY,   RESIZE_NONE,    14,     0,     0,    76,    87, 0x0,                STR_NULL},                            // ORDER_WIDGET_FULL_LOAD_DROPDOWN
  1126 	{      WWT_EMPTY,   RESIZE_NONE,    14,     0,     0,    76,    87, 0x0,                STR_NULL},                            // ORDER_WIDGET_FULL_LOAD
  1155 	{      WWT_EMPTY,   RESIZE_NONE,    14,     0,     0,    76,    87, 0x0,                STR_NULL},                            // ORDER_WIDGET_FULL_LOAD
       
  1156 	{      WWT_EMPTY,   RESIZE_NONE,    14,     0,     0,    76,    87, 0x0,                STR_NULL},                            // ORDER_WIDGET_UNLOAD_DROPDOWN
  1127 	{      WWT_EMPTY,   RESIZE_NONE,    14,     0,     0,    76,    87, 0x0,                STR_NULL},                            // ORDER_WIDGET_UNLOAD
  1157 	{      WWT_EMPTY,   RESIZE_NONE,    14,     0,     0,    76,    87, 0x0,                STR_NULL},                            // ORDER_WIDGET_UNLOAD
  1128 	{      WWT_EMPTY,   RESIZE_NONE,    14,     0,     0,    76,    87, 0x0,                STR_NULL},                            // ORDER_WIDGET_REFIT
  1158 	{      WWT_EMPTY,   RESIZE_NONE,    14,     0,     0,    76,    87, 0x0,                STR_NULL},                            // ORDER_WIDGET_REFIT
  1129 	{      WWT_EMPTY,   RESIZE_NONE,    14,     0,     0,    76,    87, 0x0,                STR_NULL},                            // ORDER_WIDGET_SERVICE
  1159 	{      WWT_EMPTY,   RESIZE_NONE,    14,     0,     0,    76,    87, 0x0,                STR_NULL},                            // ORDER_WIDGET_SERVICE
  1130 
  1160 
  1131 	{      WWT_EMPTY,   RESIZE_NONE,    14,     0,     0,    76,    87, 0x0,                STR_NULL},                            // ORDER_WIDGET_COND_VARIABLE
  1161 	{      WWT_EMPTY,   RESIZE_NONE,    14,     0,     0,    76,    87, 0x0,                STR_NULL},                            // ORDER_WIDGET_COND_VARIABLE