OpenTTD Source: src/group_gui.cpp File Reference

OpenTTD Source 15.0-beta1

Data Structures | Functions | Variables
group_gui.cpp File Reference

GUI for the group window. More...

`#include "stdafx.h"`
`#include "textbuf_gui.h"`
`#include "command_func.h"`
`#include "vehicle_gui.h"`
`#include "vehicle_base.h"`
`#include "string_func.h"`
`#include "strings_func.h"`
`#include "window_func.h"`
`#include "vehicle_func.h"`
`#include "autoreplace_gui.h"`
`#include "company_func.h"`
`#include "dropdown_func.h"`
`#include "tilehighlight_func.h"`
`#include "vehicle_gui_base.h"`
`#include "core/geometry_func.hpp"`
`#include "core/container_func.hpp"`
`#include "company_base.h"`
`#include "company_gui.h"`
`#include "gui.h"`
`#include "group_cmd.h"`
`#include "group_gui.h"`
`#include "vehicle_cmd.h"`
`#include "gfx_func.h"`
`#include "widgets/group_widget.h"`
`#include "table/sprites.h"`
`#include "safeguards.h"`

Go to the source code of this file.

## Data Structures
class | VehicleGroupWindow

## Functions
static void | GuiGroupListAddChildren (GUIGroupList &dst, const GUIGroupList &src, bool fold, GroupID parent=INVALID_GROUP, uint8_t indent=0)
| Add children to GUI group list to build a hierarchical tree.
void | BuildGuiGroupList (GUIGroupList &dst, bool fold, Owner owner, VehicleType veh_type)
| Build GUI group list, a sorted hierarchical list of groups for owner and vehicle type.
void | ShowCompanyGroup (CompanyID company, VehicleType vehicle_type, GroupID group, bool need_existing_window)
| Show the group window for the given company and vehicle type.
void | ShowCompanyGroupForVehicle (const Vehicle *v)
| Show the group window for the given vehicle.
static VehicleGroupWindow * | FindVehicleGroupWindow (VehicleType vt, Owner owner)
| Finds a group list window determined by vehicle type and owner.
static void | CcCreateGroup (GroupID gid, VehicleType veh_type)
| Opens a 'Rename group' window for newly created group.
void | CcCreateGroup (Commands, const CommandCost &result, GroupID new_group, VehicleType vt, GroupID)
| Opens a 'Rename group' window for newly created group.
void | CcAddVehicleNewGroup (Commands, const CommandCost &result, GroupID new_group, GroupID, VehicleID, bool, const VehicleListIdentifier &)
| Open rename window after adding a vehicle to a new group via drag and drop.
void | DeleteGroupHighlightOfVehicle (const Vehicle *v)
| Removes the highlight of a vehicle in a group window.

## Variables
static constexpr NWidgetPart | _nested_group_widgets []
static WindowDesc | _other_group_desc (WDP_AUTO, "list_groups", 460, 246, WC_INVALID, WC_NONE, 0, _nested_group_widgets)
static WindowDesc | _train_group_desc (WDP_AUTO, "list_groups_train", 525, 246, WC_TRAINS_LIST, WC_NONE, 0, _nested_group_widgets)

## Detailed Description

GUI for the group window.

Definition in file group_gui.cpp.

## Function Documentation

## ◆ BuildGuiGroupList()

void BuildGuiGroupList | ( | GUIGroupList & | dst,
|  | bool | fold,
|  | Owner | owner,
|  | VehicleType | veh_type
| ) |  |

Build GUI group list, a sorted hierarchical list of groups for owner and vehicle type.

Parameters

  dst | Destination list, owned by the caller.
  fold | Whether to handle group folding/hiding.
  owner | Owner of groups.
  veh_type | Vehicle type of groups.

Definition at line 156 of file group_gui.cpp.

References GUIList< T, P, F >::ForceResort(), GetString(), GuiGroupListAddChildren(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, INVALID_GROUP, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_group_pool >::Iterate(), Group::number, SetDParam(), GUIList< T, P, F >::Sort(), and StrNaturalCompare().

Referenced by VehicleGroupWindow::BuildGroupList().

## ◆ CcAddVehicleNewGroup()

void CcAddVehicleNewGroup | ( | Commands | cmd,
|  | const CommandCost & | result,
|  | GroupID | new_group,
|  | GroupID | ,
|  | VehicleID | veh_id,
|  | bool | ,
|  | const VehicleListIdentifier & |
| ) |  |

Open rename window after adding a vehicle to a new group via drag and drop.

Parameters

  result | Did command succeed?
  new_group | ID of the created group.

Definition at line 1240 of file group_gui.cpp.

References CcCreateGroup(), CommandCost::Failed(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_group_pool >::Get(), and Group::vehicle_type.

Referenced by VehicleGroupWindow::OnDropdownSelect(), and VehicleListWindow::OnDropdownSelect().

## ◆ CcCreateGroup() [1/2]

void CcCreateGroup | ( | Commands | cmd,
|  | const CommandCost & | result,
|  | GroupID | new_group,
|  | VehicleType | vt,
|  | GroupID | parent_group
| ) |  |

Opens a 'Rename group' window for newly created group.

Parameters

  result | Did command succeed?
  new_group | ID of the created group.
  vt | Vehicle type.

See also
  CmdCreateGroup

Definition at line 1227 of file group_gui.cpp.

References CcCreateGroup(), CommandCost::Failed(), and VEH_AIRCRAFT.

## ◆ CcCreateGroup() [2/2]

static void CcCreateGroup | ( | GroupID | gid,
|  | VehicleType | veh_type
| ) |  |
| static

Opens a 'Rename group' window for newly created group.

Parameters

  veh_type | Vehicle type.

Definition at line 1214 of file group_gui.cpp.

References _current_company, and FindVehicleGroupWindow().

Referenced by CcAddVehicleNewGroup(), CcCreateGroup(), and VehicleGroupWindow::OnClick().

## ◆ DeleteGroupHighlightOfVehicle()

void DeleteGroupHighlightOfVehicle | ( | const Vehicle * | v | ) |

Removes the highlight of a vehicle in a group window.

Parameters

  *v | Vehicle to remove all highlights from

Definition at line 1252 of file group_gui.cpp.

References _special_mouse_mode, FindVehicleGroupWindow(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Vehicle::owner, BaseVehicle::type, VehicleGroupWindow::UnselectVehicle(), and WSM_DRAGDROP.

Referenced by Vehicle::PreDestructor().

## ◆ FindVehicleGroupWindow()

static VehicleGroupWindow * FindVehicleGroupWindow | ( | VehicleType | vt,
|  | Owner | owner
| ) |  |
| inlinestatic

Finds a group list window determined by vehicle type and owner.

Parameters

  vt | vehicle type
  owner | owner of groups

Returns
  pointer to VehicleGroupWindow, nullptr if not found

Definition at line 1205 of file group_gui.cpp.

References FindWindowById(), and GetWindowClassForVehicleType().

Referenced by CcCreateGroup(), and DeleteGroupHighlightOfVehicle().

## ◆ GuiGroupListAddChildren()

static void GuiGroupListAddChildren | ( | GUIGroupList & | dst,
|  | const GUIGroupList & | src,
|  | bool | fold,
|  | GroupID | parent = `INVALID_GROUP`,
|  | uint8_t | indent = `0`
| ) |  |
| static

Add children to GUI group list to build a hierarchical tree.

Parameters

  dst | Destination list.
  src | Source list.
  fold | Whether to handle group folding/hiding.
  parent | Current tree parent (set by self with recursion).
  indent | Current tree indentation level (set by self with recursion).

Definition at line 121 of file group_gui.cpp.

References AssignBit(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_group_pool >::Get(), and GuiGroupListAddChildren().

Referenced by BuildGuiGroupList(), and GuiGroupListAddChildren().

## ◆ ShowCompanyGroup()

void ShowCompanyGroup | ( | CompanyID | company,
|  | VehicleType | vehicle_type,
|  | GroupID | group,
|  | bool | need_existing_window
| ) |  |

Show the group window for the given company and vehicle type.

Parameters

  company | The company to show the window for.
  vehicle_type | The type of vehicle to show it for.
  group | The group to be selected. Defaults to INVALID_GROUP.
  need_existing_window | Whether the existing window is needed. Defaults to false.

Definition at line 1175 of file group_gui.cpp.

References WindowDesc::cls, GetWindowClassForVehicleType(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), VehicleListIdentifier::Pack(), VehicleGroupWindow::SelectGroup(), and VEH_TRAIN.

Referenced by ShowCompanyGroupForVehicle().

## ◆ ShowCompanyGroupForVehicle()

void ShowCompanyGroupForVehicle | ( | const Vehicle * | v | ) |

Show the group window for the given vehicle.

Parameters

  v | The vehicle to show the window for.

Definition at line 1194 of file group_gui.cpp.

References Vehicle::group_id, Vehicle::owner, ShowCompanyGroup(), and BaseVehicle::type.

Referenced by NewsWindow::OnClick(), VehicleListWindow::OnClick(), and VehicleViewWindow::OnClick().

## Variable Documentation

## ◆ _nested_group_widgets

constexpr NWidgetPart _nested_group_widgets[]
| staticconstexpr

Definition at line 40 of file group_gui.cpp.