src/group_gui.cpp
branchnoai
changeset 9686 d3c195c226f9
parent 9631 8a2d1c2ceb88
child 9694 e72987579514
equal deleted inserted replaced
9685:d988aad9fc52 9686:d3c195c226f9
   110 	GRP_WIDGET_CLOSEBOX = 0,
   110 	GRP_WIDGET_CLOSEBOX = 0,
   111 	GRP_WIDGET_CAPTION,
   111 	GRP_WIDGET_CAPTION,
   112 	GRP_WIDGET_STICKY,
   112 	GRP_WIDGET_STICKY,
   113 	GRP_WIDGET_EMPTY_TOP_LEFT,
   113 	GRP_WIDGET_EMPTY_TOP_LEFT,
   114 	GRP_WIDGET_ALL_VEHICLES,
   114 	GRP_WIDGET_ALL_VEHICLES,
       
   115 	GRP_WIDGET_DEFAULT_VEHICLES,
   115 	GRP_WIDGET_LIST_GROUP,
   116 	GRP_WIDGET_LIST_GROUP,
   116 	GRP_WIDGET_LIST_GROUP_SCROLLBAR,
   117 	GRP_WIDGET_LIST_GROUP_SCROLLBAR,
   117 	GRP_WIDGET_SORT_BY_ORDER,
   118 	GRP_WIDGET_SORT_BY_ORDER,
   118 	GRP_WIDGET_SORT_BY_TEXT,
   119 	GRP_WIDGET_SORT_BY_TEXT,
   119 	GRP_WIDGET_SORT_BY_DROPDOWN,
   120 	GRP_WIDGET_SORT_BY_DROPDOWN,
   139 static const Widget _group_widgets[] = {
   140 static const Widget _group_widgets[] = {
   140 {   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,             STR_018B_CLOSE_WINDOW},
   141 {   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,             STR_018B_CLOSE_WINDOW},
   141 {    WWT_CAPTION,  RESIZE_RIGHT,    14,    11,   513,     0,    13, 0x0,                  STR_018C_WINDOW_TITLE_DRAG_THIS},
   142 {    WWT_CAPTION,  RESIZE_RIGHT,    14,    11,   513,     0,    13, 0x0,                  STR_018C_WINDOW_TITLE_DRAG_THIS},
   142 {  WWT_STICKYBOX,     RESIZE_LR,    14,   514,   525,     0,    13, 0x0,                  STR_STICKY_BUTTON},
   143 {  WWT_STICKYBOX,     RESIZE_LR,    14,   514,   525,     0,    13, 0x0,                  STR_STICKY_BUTTON},
   143 {      WWT_PANEL,   RESIZE_NONE,    14,     0,   200,    14,    25, 0x0,                  STR_NULL},
   144 {      WWT_PANEL,   RESIZE_NONE,    14,     0,   200,    14,    25, 0x0,                  STR_NULL},
   144 {      WWT_PANEL,   RESIZE_NONE,    14,     0,   200,    26,    39, 0x0,                  STR_NULL},
   145 {      WWT_PANEL,   RESIZE_NONE,    14,     0,   200,    26,    38, 0x0,                  STR_NULL},
   145 {     WWT_MATRIX, RESIZE_BOTTOM,    14,     0,   188,    39,   220, 0x701,                STR_GROUPS_CLICK_ON_GROUP_FOR_TIP},
   146 {      WWT_PANEL,   RESIZE_NONE,    14,     0,   200,    39,    52, 0x0,                  STR_NULL},
       
   147 {     WWT_MATRIX, RESIZE_BOTTOM,    14,     0,   188,    52,   220, 0x701,                STR_GROUPS_CLICK_ON_GROUP_FOR_TIP},
   146 {  WWT_SCROLLBAR, RESIZE_BOTTOM,    14,   189,   200,    26,   220, 0x0,                  STR_0190_SCROLL_BAR_SCROLLS_LIST},
   148 {  WWT_SCROLLBAR, RESIZE_BOTTOM,    14,   189,   200,    26,   220, 0x0,                  STR_0190_SCROLL_BAR_SCROLLS_LIST},
   147 { WWT_PUSHTXTBTN,   RESIZE_NONE,    14,   201,   281,    14,    25, STR_SORT_BY,          STR_SORT_ORDER_TIP},
   149 { WWT_PUSHTXTBTN,   RESIZE_NONE,    14,   201,   281,    14,    25, STR_SORT_BY,          STR_SORT_ORDER_TIP},
   148 {      WWT_PANEL,   RESIZE_NONE,    14,   282,   435,    14,    25, 0x0,                  STR_SORT_CRITERIA_TIP},
   150 {      WWT_PANEL,   RESIZE_NONE,    14,   282,   435,    14,    25, 0x0,                  STR_SORT_CRITERIA_TIP},
   149 {    WWT_TEXTBTN,   RESIZE_NONE,    14,   436,   447,    14,    25, STR_0225,             STR_SORT_CRITERIA_TIP},
   151 {    WWT_TEXTBTN,   RESIZE_NONE,    14,   436,   447,    14,    25, STR_0225,             STR_SORT_CRITERIA_TIP},
   150 {      WWT_PANEL,  RESIZE_RIGHT,    14,   448,   525,    14,    25, 0x0,                  STR_NULL},
   152 {      WWT_PANEL,  RESIZE_RIGHT,    14,   448,   525,    14,    25, 0x0,                  STR_NULL},
   179 
   181 
   180 	switch (gv->vehicle_type) {
   182 	switch (gv->vehicle_type) {
   181 		default: NOT_REACHED();
   183 		default: NOT_REACHED();
   182 		case VEH_TRAIN:
   184 		case VEH_TRAIN:
   183 		case VEH_ROAD:
   185 		case VEH_ROAD:
   184 			w->vscroll.cap = 14;
   186 			w->vscroll.cap = 13;
   185 			w->vscroll2.cap = 8;
   187 			w->vscroll2.cap = 8;
   186 			w->resize.step_height = PLY_WND_PRC__SIZE_OF_ROW_SMALL;
   188 			w->resize.step_height = PLY_WND_PRC__SIZE_OF_ROW_SMALL;
   187 			break;
   189 			break;
   188 		case VEH_SHIP:
   190 		case VEH_SHIP:
   189 		case VEH_AIRCRAFT:
   191 		case VEH_AIRCRAFT:
   190 			w->vscroll.cap = 10;
   192 			w->vscroll.cap = 9;
   191 			w->vscroll2.cap = 4;
   193 			w->vscroll2.cap = 4;
   192 			w->resize.step_height = PLY_WND_PRC__SIZE_OF_ROW_BIG2;
   194 			w->resize.step_height = PLY_WND_PRC__SIZE_OF_ROW_BIG2;
   193 			break;
   195 			break;
   194 	}
   196 	}
   195 
   197 
   212 
   214 
   213 	gl->sort_list = NULL;
   215 	gl->sort_list = NULL;
   214 	gl->l.flags = VL_REBUILD | VL_NONE;
   216 	gl->l.flags = VL_REBUILD | VL_NONE;
   215 	gl->l.resort_timer = DAY_TICKS * PERIODIC_RESORT_DAYS;	// Set up resort timer
   217 	gl->l.resort_timer = DAY_TICKS * PERIODIC_RESORT_DAYS;	// Set up resort timer
   216 
   218 
   217 	gv->group_sel = DEFAULT_GROUP;
   219 	gv->group_sel = ALL_GROUP;
   218 
   220 
   219 	switch (gv->vehicle_type) {
   221 	switch (gv->vehicle_type) {
   220 		case VEH_TRAIN:
   222 		case VEH_TRAIN:
   221 			w->widget[GRP_WIDGET_LIST_VEHICLE].tooltips = STR_883D_TRAINS_CLICK_ON_TRAIN_FOR;
   223 			w->widget[GRP_WIDGET_LIST_VEHICLE].tooltips = STR_883D_TRAINS_CLICK_ON_TRAIN_FOR;
   222 			w->widget[GRP_WIDGET_AVAILABLE_VEHICLES].data = STR_AVAILABLE_TRAINS;
   224 			w->widget[GRP_WIDGET_AVAILABLE_VEHICLES].data = STR_AVAILABLE_TRAINS;
   273 		STR_NULL,
   275 		STR_NULL,
   274 		STR_NULL,
   276 		STR_NULL,
   275 		INVALID_STRING_ID
   277 		INVALID_STRING_ID
   276 	};
   278 	};
   277 
   279 
   278 	action_str[3] = IsDefaultGroupID(gid) ? INVALID_STRING_ID : STR_GROUP_ADD_SHARED_VEHICLE;
   280 	action_str[3] = IsValidGroupID(gid) ? STR_GROUP_ADD_SHARED_VEHICLE : INVALID_STRING_ID;
   279 	action_str[4] = IsDefaultGroupID(gid) ? INVALID_STRING_ID : STR_GROUP_REMOVE_ALL_VEHICLES;
   281 	action_str[4] = IsValidGroupID(gid) ? STR_GROUP_REMOVE_ALL_VEHICLES : INVALID_STRING_ID;
   280 
   282 
   281 	ShowDropDownMenu(w, action_str, 0, GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN, 0, 0);
   283 	ShowDropDownMenu(w, action_str, 0, GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN, 0, 0);
   282 }
   284 }
   283 
   285 
   284 /**
   286 /**
   312 			int y2 = PLY_WND_PRC__OFFSET_TOP_WIDGET;
   314 			int y2 = PLY_WND_PRC__OFFSET_TOP_WIDGET;
   313 			int y1 = PLY_WND_PRC__OFFSET_TOP_WIDGET + 2;
   315 			int y1 = PLY_WND_PRC__OFFSET_TOP_WIDGET + 2;
   314 			int max;
   316 			int max;
   315 			int i;
   317 			int i;
   316 
   318 
   317 			/* If we select the default group, gv->list will contain all vehicles of the player
   319 			/* If we select the all vehicles, gv->list will contain all vehicles of the player
   318 			 * else gv->list will contain all vehicles which belong to the selected group */
   320 			 * else gv->list will contain all vehicles which belong to the selected group */
   319 			BuildVehicleList(gv, owner, gv->group_sel, IsDefaultGroupID(gv->group_sel) ? VLW_STANDARD : VLW_GROUP_LIST);
   321 			BuildVehicleList(gv, owner, gv->group_sel, IsAllGroupID(gv->group_sel) ? VLW_STANDARD : VLW_GROUP_LIST);
   320 			SortVehicleList(gv);
   322 			SortVehicleList(gv);
   321 
   323 
   322 
   324 
   323 			BuildGroupList(gl, owner, gv->vehicle_type);
   325 			BuildGroupList(gl, owner, gv->vehicle_type);
   324 			SortGroupList(gl);
   326 			SortGroupList(gl);
   332 					GRP_WIDGET_START_ALL,
   334 					GRP_WIDGET_START_ALL,
   333 					GRP_WIDGET_MANAGE_VEHICLES,
   335 					GRP_WIDGET_MANAGE_VEHICLES,
   334 					GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN,
   336 					GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN,
   335 					WIDGET_LIST_END);
   337 					WIDGET_LIST_END);
   336 
   338 
   337 			/* Disable the group specific function when we select the default group */
   339 			/* Disable the group specific function when we select the default group or all vehicles */
   338 			SetWindowWidgetsDisabledState(w, IsDefaultGroupID(gv->group_sel),
   340 			SetWindowWidgetsDisabledState(w, IsDefaultGroupID(gv->group_sel) || IsAllGroupID(gv->group_sel),
   339 					GRP_WIDGET_DELETE_GROUP,
   341 					GRP_WIDGET_DELETE_GROUP,
   340 					GRP_WIDGET_RENAME_GROUP,
   342 					GRP_WIDGET_RENAME_GROUP,
   341 					GRP_WIDGET_REPLACE_PROTECTION,
   343 					GRP_WIDGET_REPLACE_PROTECTION,
   342 					WIDGET_LIST_END);
   344 					WIDGET_LIST_END);
   343 
   345 
   344 			/* If selected_group == DEFAULT_GROUP, draw the standard caption
   346 			/* If selected_group == DEFAULT_GROUP || ALL_GROUP, draw the standard caption
   345 			   We list all vehicles */
   347 			   We list all vehicles or ungrouped vehicles */
   346 			if (IsDefaultGroupID(gv->group_sel)) {
   348 			if (IsDefaultGroupID(gv->group_sel) || IsAllGroupID(gv->group_sel)) {
   347 				SetDParam(0, p->index);
   349 				SetDParam(0, p->index);
   348 				SetDParam(1, gv->l.list_length);
   350 				SetDParam(1, gv->l.list_length);
   349 
   351 
   350 				switch (gv->vehicle_type) {
   352 				switch (gv->vehicle_type) {
   351 					case VEH_TRAIN:
   353 					case VEH_TRAIN:
   396 
   398 
   397 			DrawWindowWidgets(w);
   399 			DrawWindowWidgets(w);
   398 
   400 
   399 			/* Draw Matrix Group
   401 			/* Draw Matrix Group
   400 			 * The selected group is drawn in white */
   402 			 * The selected group is drawn in white */
   401 			StringID str;
   403 			StringID str_all_veh, str_no_group_veh;
   402 
   404 
   403 			switch (gv->vehicle_type) {
   405 			switch (gv->vehicle_type) {
   404 				case VEH_TRAIN:    str = STR_GROUP_ALL_TRAINS;    break;
   406 				case VEH_TRAIN:
   405 				case VEH_ROAD:     str = STR_GROUP_ALL_ROADS;     break;
   407 					str_all_veh = STR_GROUP_ALL_TRAINS;
   406 				case VEH_SHIP:     str = STR_GROUP_ALL_SHIPS;     break;
   408 					str_no_group_veh = STR_GROUP_DEFAULT_TRAINS;
   407 				case VEH_AIRCRAFT: str = STR_GROUP_ALL_AIRCRAFTS; break;
   409 					break;
       
   410 				case VEH_ROAD:
       
   411 					str_all_veh = STR_GROUP_ALL_ROADS;
       
   412 					str_no_group_veh = STR_GROUP_DEFAULT_ROADS;
       
   413 					break;
       
   414 				case VEH_SHIP:
       
   415 					str_all_veh = STR_GROUP_ALL_SHIPS;
       
   416 					str_no_group_veh = STR_GROUP_DEFAULT_SHIPS;
       
   417 					break;
       
   418 				case VEH_AIRCRAFT:
       
   419 					str_all_veh = STR_GROUP_ALL_AIRCRAFTS;
       
   420 					str_no_group_veh = STR_GROUP_DEFAULT_AIRCRAFTS;
       
   421 					break;
   408 				default: NOT_REACHED(); break;
   422 				default: NOT_REACHED(); break;
   409 			}
   423 			}
   410 			DrawString(10, y1, str, IsDefaultGroupID(gv->group_sel) ? 12 : 16);
   424 			DrawString(10, y1, str_all_veh, IsAllGroupID(gv->group_sel) ? 12 : 16);
       
   425 
       
   426 			y1 += 13;
       
   427 
       
   428 			DrawString(10, y1, str_no_group_veh, IsDefaultGroupID(gv->group_sel) ? 12 : 16);
   411 
   429 
   412 			max = min(w->vscroll.pos + w->vscroll.cap, gl->l.list_length);
   430 			max = min(w->vscroll.pos + w->vscroll.cap, gl->l.list_length);
   413 			for (i = w->vscroll.pos ; i < max ; ++i) {
   431 			for (i = w->vscroll.pos ; i < max ; ++i) {
   414 				const Group *g = gl->sort_list[i];
   432 				const Group *g = gl->sort_list[i];
   415 
   433 
   489 				case GRP_WIDGET_SORT_BY_DROPDOWN: // Select sorting criteria dropdown menu
   507 				case GRP_WIDGET_SORT_BY_DROPDOWN: // Select sorting criteria dropdown menu
   490 					ShowDropDownMenu(w, _vehicle_sort_listing, gv->l.sort_type,  GRP_WIDGET_SORT_BY_DROPDOWN, 0, 0);
   508 					ShowDropDownMenu(w, _vehicle_sort_listing, gv->l.sort_type,  GRP_WIDGET_SORT_BY_DROPDOWN, 0, 0);
   491 					return;
   509 					return;
   492 
   510 
   493 				case GRP_WIDGET_ALL_VEHICLES: // All vehicles button
   511 				case GRP_WIDGET_ALL_VEHICLES: // All vehicles button
       
   512 					if (!IsAllGroupID(gv->group_sel)) {
       
   513 						gv->group_sel = ALL_GROUP;
       
   514 						gv->l.flags |= VL_REBUILD;
       
   515 						UpdateGroupActionDropdown(w, gv->group_sel);
       
   516 						SetWindowDirty(w);
       
   517 					}
       
   518 					break;
       
   519 
       
   520 				case GRP_WIDGET_DEFAULT_VEHICLES: // Ungrouped vehicles button
   494 					if (!IsDefaultGroupID(gv->group_sel)) {
   521 					if (!IsDefaultGroupID(gv->group_sel)) {
   495 						gv->group_sel = DEFAULT_GROUP;
   522 						gv->group_sel = DEFAULT_GROUP;
   496 						gv->l.flags |= VL_REBUILD;
   523 						gv->l.flags |= VL_REBUILD;
   497 						UpdateGroupActionDropdown(w, gv->group_sel);
   524 						UpdateGroupActionDropdown(w, gv->group_sel);
   498 						SetWindowDirty(w);
   525 						SetWindowDirty(w);
   499 					}
   526 					}
   500 					break;
   527 					break;
   501 
   528 
   502 				case GRP_WIDGET_LIST_GROUP: { // Matrix Group
   529 				case GRP_WIDGET_LIST_GROUP: { // Matrix Group
   503 					uint16 id_g = (e->we.click.pt.y - PLY_WND_PRC__OFFSET_TOP_WIDGET - 13) / PLY_WND_PRC__SIZE_OF_ROW_TINY;
   530 					uint16 id_g = (e->we.click.pt.y - PLY_WND_PRC__OFFSET_TOP_WIDGET - 26) / PLY_WND_PRC__SIZE_OF_ROW_TINY;
   504 
   531 
   505 					if (id_g >= w->vscroll.cap) return;
   532 					if (id_g >= w->vscroll.cap) return;
   506 
   533 
   507 					id_g += w->vscroll.pos;
   534 					id_g += w->vscroll.pos;
   508 
   535 
   542 					DoCommandP(0, gv->vehicle_type, 0, NULL, CMD_CREATE_GROUP | CMD_MSG(STR_GROUP_CAN_T_CREATE));
   569 					DoCommandP(0, gv->vehicle_type, 0, NULL, CMD_CREATE_GROUP | CMD_MSG(STR_GROUP_CAN_T_CREATE));
   543 					break;
   570 					break;
   544 
   571 
   545 				case GRP_WIDGET_DELETE_GROUP: { // Delete the selected group
   572 				case GRP_WIDGET_DELETE_GROUP: { // Delete the selected group
   546 					GroupID group = gv->group_sel;
   573 					GroupID group = gv->group_sel;
   547 					gv->group_sel = DEFAULT_GROUP;
   574 					gv->group_sel = ALL_GROUP;
   548 
   575 
   549 					DoCommandP(0, group, 0, NULL, CMD_DELETE_GROUP | CMD_MSG(STR_GROUP_CAN_T_DELETE));
   576 					DoCommandP(0, group, 0, NULL, CMD_DELETE_GROUP | CMD_MSG(STR_GROUP_CAN_T_DELETE));
   550 					break;
   577 					break;
   551 				}
   578 				}
   552 
   579 
   553 				case GRP_WIDGET_RENAME_GROUP: { // Rename the selected roup
   580 				case GRP_WIDGET_RENAME_GROUP: { // Rename the selected roup
   554 					assert(!IsDefaultGroupID(gv->group_sel));
   581 					assert(IsValidGroupID(gv->group_sel));
   555 
   582 
   556 					const Group *g = GetGroup(gv->group_sel);
   583 					const Group *g = GetGroup(gv->group_sel);
   557 
   584 
   558 					SetDParam(0, g->index);
   585 					SetDParam(0, g->index);
   559 					ShowQueryString(STR_GROUP_NAME, STR_GROUP_RENAME_CAPTION, 31, 150, w, CS_ALPHANUMERAL);
   586 					ShowQueryString(STR_GROUP_NAME, STR_GROUP_RENAME_CAPTION, 31, 150, w, CS_ALPHANUMERAL);
   571 				}
   598 				}
   572 
   599 
   573 
   600 
   574 				case GRP_WIDGET_START_ALL:
   601 				case GRP_WIDGET_START_ALL:
   575 				case GRP_WIDGET_STOP_ALL: { // Start/stop all vehicles of the list
   602 				case GRP_WIDGET_STOP_ALL: { // Start/stop all vehicles of the list
   576 					DoCommandP(0, gv->group_sel, ((IsDefaultGroupID(gv->group_sel) ? VLW_STANDARD : VLW_GROUP_LIST) & VLW_MASK)
   603 					DoCommandP(0, gv->group_sel, ((IsAllGroupID(gv->group_sel) ? VLW_STANDARD : VLW_GROUP_LIST) & VLW_MASK)
   577 														| (1 << 6)
   604 														| (1 << 6)
   578 														| (e->we.click.widget == GRP_WIDGET_START_ALL ? (1 << 5) : 0)
   605 														| (e->we.click.widget == GRP_WIDGET_START_ALL ? (1 << 5) : 0)
   579 														| gv->vehicle_type, NULL, CMD_MASS_START_STOP);
   606 														| gv->vehicle_type, NULL, CMD_MASS_START_STOP);
   580 
   607 
   581 					break;
   608 					break;
   582 				}
   609 				}
   583 
   610 
   584 				case GRP_WIDGET_REPLACE_PROTECTION:
   611 				case GRP_WIDGET_REPLACE_PROTECTION:
   585 					if (!IsDefaultGroupID(gv->group_sel)) {
   612 					if (IsValidGroupID(gv->group_sel)) {
   586 						const Group *g = GetGroup(gv->group_sel);
   613 						const Group *g = GetGroup(gv->group_sel);
   587 
   614 
   588 						DoCommandP(0, gv->group_sel, !g->replace_protection, NULL, CMD_SET_GROUP_REPLACE_PROTECTION);
   615 						DoCommandP(0, gv->group_sel, !g->replace_protection, NULL, CMD_SET_GROUP_REPLACE_PROTECTION);
   589 					}
   616 					}
   590 					break;
   617 					break;
   592 
   619 
   593 			break;
   620 			break;
   594 
   621 
   595 		case WE_DRAGDROP: {
   622 		case WE_DRAGDROP: {
   596 			switch (e->we.click.widget) {
   623 			switch (e->we.click.widget) {
   597 				case GRP_WIDGET_ALL_VEHICLES: // All trains
   624 				case GRP_WIDGET_ALL_VEHICLES: // All vehicles
       
   625 				case GRP_WIDGET_DEFAULT_VEHICLES: // Ungrouped vehicles
   598 					DoCommandP(0, DEFAULT_GROUP, gv->vehicle_sel, NULL, CMD_ADD_VEHICLE_GROUP | CMD_MSG(STR_GROUP_CAN_T_ADD_VEHICLE));
   626 					DoCommandP(0, DEFAULT_GROUP, gv->vehicle_sel, NULL, CMD_ADD_VEHICLE_GROUP | CMD_MSG(STR_GROUP_CAN_T_ADD_VEHICLE));
   599 
   627 
   600 					gv->vehicle_sel = INVALID_VEHICLE;
   628 					gv->vehicle_sel = INVALID_VEHICLE;
   601 
   629 
   602 					SetWindowDirty(w);
   630 					SetWindowDirty(w);
   603 
   631 
   604 					break;
   632 					break;
   605 
   633 
   606 				case GRP_WIDGET_LIST_GROUP: { // Maxtrix group
   634 				case GRP_WIDGET_LIST_GROUP: { // Maxtrix group
   607 					uint16 id_g = (e->we.click.pt.y - PLY_WND_PRC__OFFSET_TOP_WIDGET - 13) / PLY_WND_PRC__SIZE_OF_ROW_TINY;
   635 					uint16 id_g = (e->we.click.pt.y - PLY_WND_PRC__OFFSET_TOP_WIDGET - 26) / PLY_WND_PRC__SIZE_OF_ROW_TINY;
   608 					const VehicleID vindex = gv->vehicle_sel;
   636 					const VehicleID vindex = gv->vehicle_sel;
   609 
   637 
   610 					gv->vehicle_sel = INVALID_VEHICLE;
   638 					gv->vehicle_sel = INVALID_VEHICLE;
   611 
   639 
   612 					SetWindowDirty(w);
   640 					SetWindowDirty(w);
   689 					switch (e->we.dropdown.index) {
   717 					switch (e->we.dropdown.index) {
   690 						case 0: // Replace window
   718 						case 0: // Replace window
   691 							ShowReplaceGroupVehicleWindow(gv->group_sel, gv->vehicle_type);
   719 							ShowReplaceGroupVehicleWindow(gv->group_sel, gv->vehicle_type);
   692 							break;
   720 							break;
   693 						case 1: // Send for servicing
   721 						case 1: // Send for servicing
   694 							DoCommandP(0, gv->group_sel, ((IsDefaultGroupID(gv->group_sel) ? VLW_STANDARD : VLW_GROUP_LIST) & VLW_MASK)
   722 							DoCommandP(0, gv->group_sel, ((IsAllGroupID(gv->group_sel) ? VLW_STANDARD : VLW_GROUP_LIST) & VLW_MASK)
   695 										| DEPOT_MASS_SEND
   723 										| DEPOT_MASS_SEND
   696 										| DEPOT_SERVICE, NULL, GetCmdSendToDepot(gv->vehicle_type));
   724 										| DEPOT_SERVICE, NULL, GetCmdSendToDepot(gv->vehicle_type));
   697 							break;
   725 							break;
   698 						case 2: // Send to Depots
   726 						case 2: // Send to Depots
   699 							DoCommandP(0, gv->group_sel, ((IsDefaultGroupID(gv->group_sel) ? VLW_STANDARD : VLW_GROUP_LIST) & VLW_MASK)
   727 							DoCommandP(0, gv->group_sel, ((IsAllGroupID(gv->group_sel) ? VLW_STANDARD : VLW_GROUP_LIST) & VLW_MASK)
   700 										| DEPOT_MASS_SEND, NULL, GetCmdSendToDepot(gv->vehicle_type));
   728 										| DEPOT_MASS_SEND, NULL, GetCmdSendToDepot(gv->vehicle_type));
   701 							break;
   729 							break;
   702 						case 3: // Add shared Vehicles
   730 						case 3: // Add shared Vehicles
   703 							assert(!IsDefaultGroupID(gv->group_sel));
   731 							assert(IsValidGroupID(gv->group_sel));
   704 
   732 
   705 							DoCommandP(0, gv->group_sel, gv->vehicle_type, NULL, CMD_ADD_SHARED_VEHICLE_GROUP | CMD_MSG(STR_GROUP_CAN_T_ADD_SHARED_VEHICLE));
   733 							DoCommandP(0, gv->group_sel, gv->vehicle_type, NULL, CMD_ADD_SHARED_VEHICLE_GROUP | CMD_MSG(STR_GROUP_CAN_T_ADD_SHARED_VEHICLE));
   706 							break;
   734 							break;
   707 						case 4: // Remove all Vehicles from the selected group
   735 						case 4: // Remove all Vehicles from the selected group
   708 							assert(!IsDefaultGroupID(gv->group_sel));
   736 							assert(IsValidGroupID(gv->group_sel));
   709 
   737 
   710 							DoCommandP(0, gv->group_sel, gv->vehicle_type, NULL, CMD_REMOVE_ALL_VEHICLES_GROUP | CMD_MSG(STR_GROUP_CAN_T_REMOVE_ALL_VEHICLES));
   738 							DoCommandP(0, gv->group_sel, gv->vehicle_type, NULL, CMD_REMOVE_ALL_VEHICLES_GROUP | CMD_MSG(STR_GROUP_CAN_T_REMOVE_ALL_VEHICLES));
   711 							break;
   739 							break;
   712 						default: NOT_REACHED();
   740 						default: NOT_REACHED();
   713 					}
   741 					}