* * * * * * * * * * * * diff -r a03e4a299583 src/build_vehicle_gui.cpp --- a/src/build_vehicle_gui.cpp Sun Nov 16 00:12:31 2008 +0100 +++ b/src/build_vehicle_gui.cpp Sun Nov 16 00:13:55 2008 +0100 @@ -43,6 +43,7 @@ BUILD_VEHICLE_WIDGET_LIST, BUILD_VEHICLE_WIDGET_SCROLLBAR, BUILD_VEHICLE_WIDGET_PANEL, + BUILD_VEHICLE_WIDGET_BUILD_AND_REFIT, BUILD_VEHICLE_WIDGET_BUILD, BUILD_VEHICLE_WIDGET_RENAME, BUILD_VEHICLE_WIDGET_RESIZE, @@ -59,9 +60,10 @@ { WWT_SCROLLBAR, RESIZE_LRB, COLOUR_GREY, 282, 293, 26, 39, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST }, { WWT_PANEL, RESIZE_RTB, COLOUR_GREY, 0, 293, 40, 161, 0x0, STR_NULL }, - { WWT_PUSHTXTBTN, RESIZE_TB, COLOUR_GREY, 0, 114, 162, 173, 0x0, STR_NULL }, - { WWT_PUSHTXTBTN, RESIZE_RTB, COLOUR_GREY, 115, 281, 162, 173, 0x0, STR_NULL }, - { WWT_RESIZEBOX, RESIZE_LRTB, COLOUR_GREY, 282, 293, 162, 173, 0x0, STR_RESIZE_BUTTON }, + { WWT_PUSHTXTBTN, RESIZE_RTB, 14, 0, 293, 162, 173, STR_BUILD_VEHICLE_AND_REFIT, STR_NULL }, + { WWT_PUSHTXTBTN, RESIZE_TB, 14, 0, 114, 174, 185, 0x0, STR_NULL }, + { WWT_PUSHTXTBTN, RESIZE_RTB, 14, 115, 281, 174, 185, 0x0, STR_NULL }, + { WWT_RESIZEBOX, RESIZE_LRTB, 14, 282, 293, 174, 185, 0x0, STR_RESIZE_BUTTON }, { WIDGETS_END}, }; @@ -886,6 +888,9 @@ if (this->listview_mode) { this->HideWidget(BUILD_VEHICLE_WIDGET_BUILD); this->widget[BUILD_VEHICLE_WIDGET_RENAME].left = this->widget[BUILD_VEHICLE_WIDGET_BUILD].left; + /* Also hide the 'build and refit' button. */ + this->HideWidget(BUILD_VEHICLE_WIDGET_BUILD_AND_REFIT); + this->widget[BUILD_VEHICLE_WIDGET_PANEL].bottom = this->widget[BUILD_VEHICLE_WIDGET_BUILD_AND_REFIT].bottom; } else { /* Both are visible, adjust the size of each */ ResizeButtons(this, BUILD_VEHICLE_WIDGET_BUILD, BUILD_VEHICLE_WIDGET_RENAME); @@ -1148,6 +1153,32 @@ break; } + case BUILD_VEHICLE_WIDGET_BUILD_AND_REFIT: { + EngineID sel_eng = this->sel_engine; + if (sel_eng != INVALID_ENGINE) { + switch (this->vehicle_type) { + default: NOT_REACHED(); + case VEH_TRAIN: + if (DoCommandP(this->window_number, sel_eng, 0, (RailVehInfo(sel_eng)->railveh_type == RAILVEH_WAGON) ? CcBuildWagon : CcBuildLoco, CMD_BUILD_RAIL_VEHICLE | CMD_MSG(STR_882B_CAN_T_BUILD_RAILROAD_VEHICLE))) + DoCommandP(this->window_number, _new_vehicle_id, this->cargo_filter_train, NULL, CMD_REFIT_RAIL_VEHICLE | CMD_MSG(STR_RAIL_CAN_T_REFIT_VEHICLE)); + break; + case VEH_ROAD: + if (DoCommandP(this->window_number, sel_eng, 0, CcBuildRoadVeh, CMD_BUILD_ROAD_VEH | CMD_MSG(STR_9009_CAN_T_BUILD_ROAD_VEHICLE))) + DoCommandP(this->window_number, _new_vehicle_id, this->cargo_filter_road, NULL, CMD_REFIT_ROAD_VEH | CMD_MSG(STR_REFIT_ROAD_VEHICLE_CAN_T)); + break; + case VEH_SHIP: + if (DoCommandP(this->window_number, sel_eng, 0, CcBuildShip, CMD_BUILD_SHIP | CMD_MSG(STR_980D_CAN_T_BUILD_SHIP))) + DoCommandP(this->window_number, _new_vehicle_id, this->cargo_filter_ship, NULL, CMD_REFIT_SHIP | CMD_MSG(STR_9841_CAN_T_REFIT_SHIP)); + break; + case VEH_AIRCRAFT: + if (DoCommandP(this->window_number, sel_eng, 0, CcBuildAircraft, CMD_BUILD_AIRCRAFT | CMD_MSG(STR_A008_CAN_T_BUILD_AIRCRAFT))) + DoCommandP(this->window_number, _new_vehicle_id, this->cargo_filter_aircraft, NULL, CMD_REFIT_AIRCRAFT | CMD_MSG(STR_A042_CAN_T_REFIT_AIRCRAFT)); + break; + } + } + break; + } + case BUILD_VEHICLE_WIDGET_RENAME: { EngineID sel_eng = this->sel_engine; if (sel_eng != INVALID_ENGINE) { @@ -1207,7 +1238,13 @@ } /* Set text of cargo filter dropdown */ this->widget[BUILD_VEHICLE_WIDGET_CARGO_DROPDOWN].data = this->cargos_name_list[this->cargos_dropdown_pos[cargo_filter]]; - + + /* Hide the 'build and refit' button when filtering by 'all' or 'none' cargo */ + if (cargo_filter == CF_SHOW_ALL || cargo_filter == CF_SHOW_NONE) { + this->HideWidget(BUILD_VEHICLE_WIDGET_BUILD_AND_REFIT); + this->widget[BUILD_VEHICLE_WIDGET_PANEL].bottom = this->widget[BUILD_VEHICLE_WIDGET_BUILD_AND_REFIT].bottom; + } + this->DrawWidgets(); DrawEngineList(this->vehicle_type, this->widget[BUILD_VEHICLE_WIDGET_LIST].left + 2, this->widget[BUILD_VEHICLE_WIDGET_LIST].right, this->widget[BUILD_VEHICLE_WIDGET_LIST].top + 1, &this->eng_list, this->vscroll.pos, max, this->sel_engine, 0, DEFAULT_GROUP); @@ -1287,6 +1324,14 @@ case VEH_SHIP: this->cargo_filter_ship = cargo_filter; break; case VEH_AIRCRAFT: this->cargo_filter_aircraft = cargo_filter; break; } + /* Hide the 'build and refit' button when filtering by 'all' or 'none' cargo */ + if (cargo_filter == CF_SHOW_ALL || cargo_filter == CF_SHOW_NONE) { + this->HideWidget(BUILD_VEHICLE_WIDGET_BUILD_AND_REFIT); + this->widget[BUILD_VEHICLE_WIDGET_PANEL].bottom = this->widget[BUILD_VEHICLE_WIDGET_BUILD_AND_REFIT].bottom; + } else { + this->ShowWidget(BUILD_VEHICLE_WIDGET_BUILD_AND_REFIT); + this->widget[BUILD_VEHICLE_WIDGET_PANEL].bottom = this->widget[BUILD_VEHICLE_WIDGET_BUILD_AND_REFIT].top; + } break; } this->regenerate_list = true; @@ -1306,7 +1351,7 @@ }; static const WindowDesc _build_vehicle_desc = { - WDP_AUTO, WDP_AUTO, 294, 174, 294, 256, + WDP_AUTO, WDP_AUTO, 294, 186, 294, 256, WC_BUILD_VEHICLE, WC_NONE, WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE, _build_vehicle_widgets, diff -r a03e4a299583 src/lang/english.txt --- a/src/lang/english.txt Sun Nov 16 00:12:31 2008 +0100 +++ b/src/lang/english.txt Sun Nov 16 00:13:55 2008 +0100 @@ -2815,6 +2815,7 @@ STR_ALL_AVAIL_RAIL_VEHICLES :{WHITE}Rail Vehicles STR_881F_BUILD_VEHICLE :{BLACK}Build Vehicle +STR_BUILD_VEHICLE_AND_REFIT :{BLACK}Build and Refit STR_CLONE_ROAD_VEHICLE :{BLACK}Clone Vehicle STR_CLONE_ROAD_VEHICLE_INFO :{BLACK}This will build a copy of the road vehicle. Control-click will share the orders STR_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}This will build a copy of a road vehicle. Click this button and then on a road vehicle inside or outside the depot. Control-click will share the orders diff -r a03e4a299583 src/lang/french.txt --- a/src/lang/french.txt Sun Nov 16 00:12:31 2008 +0100 +++ b/src/lang/french.txt Sun Nov 16 00:13:55 2008 +0100 @@ -2816,6 +2816,7 @@ STR_ALL_AVAIL_RAIL_VEHICLES :{WHITE}Véhicules sur rail STR_881F_BUILD_VEHICLE :{BLACK}Construire +STR_BUILD_VEHICLE_AND_REFIT :{BLACK}Construire et Réaménager STR_CLONE_ROAD_VEHICLE :{BLACK}Copier Véhicule STR_CLONE_ROAD_VEHICLE_INFO :{BLACK}Effectuer la copie d'un véhicule routier. Ctrl-clic pour partager les ordres STR_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Effectuer la copie d'un véhicule routier. Cliquer ici puis sur un véhicule routier dans ou hors d'un dépôt. Ctrl-clic pour partager les ordres