OpenTTD Source 20250312-master-gcdcc6b491d
|
Public Member Functions | |
BuildHouseWindow (WindowDesc &desc, Window *parent) | |
void | UpdateSelectSize (const HouseSpec *spec) |
void | OnInit () override |
Notification that the nested widget tree gets initialized. | |
void | DrawWidget (const Rect &r, WidgetID widget) const override |
Draw the contents of a nested widget. | |
void | OnClick (Point pt, WidgetID widget, int click_count) override |
A click with the left mouse button has been made on the window. | |
void | OnInvalidateData (int data=0, bool gui_scope=true) override |
Some data on this window has become invalid. | |
void | OnPlaceObject (Point pt, TileIndex tile) override |
The user clicked some place on the map when a tile highlight mode has been set. | |
![]() | |
PickerWindow (WindowDesc &desc, Window *parent, int window_number, PickerCallbacks &callbacks) | |
void | OnInit () override |
Notification that the nested widget tree gets initialized. | |
void | Close (int data=0) override |
Hide the window and all its child windows, and mark them for a later deletion. | |
void | UpdateWidgetSize (WidgetID widget, Dimension &size, const Dimension &padding, Dimension &fill, Dimension &resize) override |
Update size and resize step of a widget in the window. | |
void | DrawWidget (const Rect &r, WidgetID widget) const override |
Draw the contents of a nested widget. | |
void | OnResize () override |
Called after the window got resized. | |
void | OnClick (Point pt, WidgetID widget, int click_count) override |
A click with the left mouse button has been made on the window. | |
void | OnInvalidateData (int data=0, bool gui_scope=true) override |
Some data on this window has become invalid. | |
EventState | OnHotkey (int hotkey) override |
A hotkey has been pressed. | |
void | OnEditboxChanged (WidgetID wid) override |
The text in an editbox has been edited. | |
void | InvalidateData (PickerInvalidations data) |
![]() | |
PickerWindowBase (WindowDesc &desc, Window *parent) | |
void | Close (int data=0) override |
Hide the window and all its child windows, and mark them for a later deletion. | |
![]() | |
Window (WindowDesc &desc) | |
Empty constructor, initialization has been moved to InitNested() called from the constructor of the derived class. | |
void * | operator new[] (size_t size)=delete |
Helper allocation function to disallow something. | |
template<class NWID > | |
const NWID * | GetWidget (WidgetID widnum) const |
Get the nested widget with number widnum from the nested widget tree. | |
template<class NWID > | |
NWID * | GetWidget (WidgetID widnum) |
Get the nested widget with number widnum from the nested widget tree. | |
const Scrollbar * | GetScrollbar (WidgetID widnum) const |
Return the Scrollbar to a widget index. | |
Scrollbar * | GetScrollbar (WidgetID widnum) |
Return the Scrollbar to a widget index. | |
const QueryString * | GetQueryString (WidgetID widnum) const |
Return the querystring associated to a editbox. | |
QueryString * | GetQueryString (WidgetID widnum) |
Return the querystring associated to a editbox. | |
void | UpdateQueryStringSize () |
Update size of all QueryStrings of this window. | |
virtual const struct Textbuf * | GetFocusedTextbuf () const |
Get the current input text buffer. | |
virtual Point | GetCaretPosition () const |
Get the current caret position if an edit box has the focus. | |
virtual Rect | GetTextBoundingRect (const char *from, const char *to) const |
Get the bounding rectangle for a text range if an edit box has the focus. | |
virtual ptrdiff_t | GetTextCharacterAtPosition (const Point &pt) const |
Get the character that is rendered at a position by the focused edit box. | |
void | InitNested (WindowNumber number=0) |
Perform complete initialization of the Window with nested widgets, to allow use. | |
void | CreateNestedTree () |
Perform the first part of the initialization of a nested widget tree. | |
void | FinishInitNested (WindowNumber window_number=0) |
Perform the second part of the initialization of a nested widget tree. | |
void | SetTimeout () |
Set the timeout flag of the window and initiate the timer. | |
void | SetWhiteBorder () |
Set the timeout flag of the window and initiate the timer. | |
void | DisableAllWidgetHighlight () |
Disable the highlighted status of all widgets. | |
void | SetWidgetHighlight (WidgetID widget_index, TextColour highlighted_colour) |
Sets the highlighted status of a widget. | |
bool | IsWidgetHighlighted (WidgetID widget_index) const |
Gets the highlighted status of a widget. | |
void | SetWidgetDisabledState (WidgetID widget_index, bool disab_stat) |
Sets the enabled/disabled status of a widget. | |
void | DisableWidget (WidgetID widget_index) |
Sets a widget to disabled. | |
void | EnableWidget (WidgetID widget_index) |
Sets a widget to Enabled. | |
bool | IsWidgetDisabled (WidgetID widget_index) const |
Gets the enabled/disabled status of a widget. | |
bool | IsWidgetFocused (WidgetID widget_index) const |
Check if given widget is focused within this window. | |
bool | IsWidgetGloballyFocused (WidgetID widget_index) const |
Check if given widget has user input focus. | |
void | SetWidgetLoweredState (WidgetID widget_index, bool lowered_stat) |
Sets the lowered/raised status of a widget. | |
void | ToggleWidgetLoweredState (WidgetID widget_index) |
Invert the lowered/raised status of a widget. | |
void | LowerWidget (WidgetID widget_index) |
Marks a widget as lowered. | |
void | RaiseWidget (WidgetID widget_index) |
Marks a widget as raised. | |
void | RaiseWidgetWhenLowered (WidgetID widget_index) |
Marks a widget as raised and dirty (redraw), when it is marked as lowered. | |
bool | IsWidgetLowered (WidgetID widget_index) const |
Gets the lowered state of a widget. | |
void | UnfocusFocusedWidget () |
Makes no widget on this window have focus. | |
bool | SetFocusedWidget (WidgetID widget_index) |
Set focus within this window to the given widget. | |
EventState | HandleEditBoxKey (WidgetID wid, char32_t key, uint16_t keycode) |
Process keypress for editbox widget. | |
virtual void | InsertTextString (WidgetID wid, const char *str, bool marked, const char *caret, const char *insert_location, const char *replacement_end) |
Insert a text string at the cursor position into the edit box widget. | |
void | HandleButtonClick (WidgetID widget) |
Do all things to make a button look clicked and mark it to be unclicked in a few ticks. | |
int | GetRowFromWidget (int clickpos, WidgetID widget, int padding, int line_height=-1) const |
Compute the row of a widget that a user clicked in. | |
void | RaiseButtons (bool autoraise=false) |
Raise the buttons of the window. | |
template<typename... Args> | |
void | SetWidgetsDisabledState (bool disab_stat, Args... widgets) |
Sets the enabled/disabled status of a list of widgets. | |
template<typename... Args> | |
void | SetWidgetsLoweredState (bool lowered_stat, Args... widgets) |
Sets the lowered/raised status of a list of widgets. | |
template<typename... Args> | |
void | RaiseWidgetsWhenLowered (Args... widgets) |
Raises the widgets and sets widgets dirty that are lowered. | |
void | SetWidgetDirty (WidgetID widget_index) const |
Invalidate a widget, i.e. | |
void | DrawWidgets () const |
Paint all widgets of a window. | |
void | DrawViewport () const |
Draw the viewport of this window. | |
void | DrawSortButtonState (WidgetID widget, SortButtonState state) const |
Draw a sort button's up or down arrow symbol. | |
Window * | FindChildWindow (WindowClass wc=WC_INVALID) const |
Find the Window whose parent pointer points to this window. | |
void | CloseChildWindows (WindowClass wc=WC_INVALID) const |
Close all children a window might have in a head-recursive manner. | |
void | SetDirty () const |
Mark entire window as dirty (in need of re-paint) | |
void | ReInit (int rx=0, int ry=0, bool reposition=false) |
Re-initialize a window, and optionally change its size. | |
bool | IsShaded () const |
Is window shaded currently? | |
void | SetShaded (bool make_shaded) |
Set the shaded state of the window to make_shaded. | |
void | ScheduleResize () |
Mark this window as resized and in need of OnResize() event. | |
void | ProcessScheduledResize () |
Process scheduled OnResize() event. | |
void | InvalidateData (int data=0, bool gui_scope=true) |
Mark this window's data as invalid (in need of re-computing) | |
void | ProcessScheduledInvalidations () |
Process all scheduled invalidations. | |
void | ProcessHighlightedInvalidations () |
Process all invalidation of highlighted widgets. | |
virtual void | ApplyDefaults () |
Read default values from WindowDesc configuration an apply them to the window. | |
virtual Point | OnInitialPosition (int16_t sm_width, int16_t sm_height, int window_number) |
Compute the initial position of the window. | |
virtual void | OnPaint () |
The window must be repainted. | |
virtual std::string | GetWidgetString (WidgetID widget, StringID stringid) const |
Get the raw string for a widget. | |
virtual void | OnFocus () |
The window has gained focus. | |
virtual void | OnFocusLost (bool closing) |
The window has lost focus. | |
virtual EventState | OnKeyPress (char32_t key, uint16_t keycode) |
A key has been pressed. | |
virtual EventState | OnCTRLStateChange () |
The state of the control key has changed. | |
virtual bool | OnRightClick (Point pt, WidgetID widget) |
A click with the right mouse button has been made on the window. | |
virtual void | OnHover (Point pt, WidgetID widget) |
The mouse is hovering over a widget in the window, perform an action for it. | |
virtual bool | OnTooltip (Point pt, WidgetID widget, TooltipCloseCondition close_cond) |
Event to display a custom tooltip. | |
virtual void | OnMouseDrag (Point pt, WidgetID widget) |
An 'object' is being dragged at the provided position, highlight the target if possible. | |
virtual void | OnDragDrop (Point pt, WidgetID widget) |
A dragged 'object' has been released. | |
virtual void | OnScroll (Point delta) |
Handle the request for (viewport) scrolling. | |
virtual void | OnMouseOver (Point pt, WidgetID widget) |
The mouse is currently moving over the window or has just moved outside of the window. | |
virtual void | OnMouseWheel (int wheel) |
The mouse wheel has been turned. | |
virtual void | OnMouseLoop () |
Called for every mouse loop run, which is at least once per (game) tick. | |
virtual void | OnGameTick () |
Called once per (game) tick. | |
virtual void | OnRealtimeTick (uint delta_ms) |
Called periodically. | |
virtual void | OnTimeout () |
Called when this window's timeout has been reached. | |
virtual void | OnDropdownSelect (WidgetID widget, int index) |
A dropdown option associated to this window has been selected. | |
virtual void | OnDropdownClose (Point pt, WidgetID widget, int index, bool instant_close) |
A dropdown window associated to this window has been closed. | |
virtual void | OnQueryTextFinished (std::optional< std::string > str) |
The query window opened from this window has closed. | |
virtual bool | OnVehicleSelect (const struct Vehicle *v) |
The user clicked on a vehicle while HT_VEHICLE has been set. | |
virtual bool | OnVehicleSelect (VehicleList::const_iterator begin, VehicleList::const_iterator end) |
The user clicked on a vehicle while HT_VEHICLE has been set. | |
virtual void | OnPlaceObjectAbort () |
The user cancelled a tile highlight mode that has been set. | |
virtual void | OnPlaceDrag (ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, Point pt) |
The user is dragging over the map when the tile highlight mode has been set. | |
virtual void | OnPlaceMouseUp (ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, Point pt, TileIndex start_tile, TileIndex end_tile) |
The user has dragged over the map when the tile highlight mode has been set. | |
virtual void | OnPlacePresize (Point pt, TileIndex tile) |
The user moves over the map when a tile highlight mode has been set when the special mouse mode has been set to 'PRESIZE' mode. | |
virtual bool | IsNewGRFInspectable () const |
Is the data related to this window NewGRF inspectable? | |
virtual void | ShowNewGRFInspectWindow () const |
Show the NewGRF inspection window. | |
template<> | |
const NWidgetBase * | GetWidget (WidgetID widnum) const |
Specialized case of Window::GetWidget for the nested widget base class. | |
Static Public Member Functions | |
static std::string | GetHouseYear (TimerGameCalendar::Year min_year, TimerGameCalendar::Year max_year) |
Get a date range string for house availability year. | |
static std::string | GetHouseInformation (const HouseSpec *hs) |
Get information string for a house. | |
![]() | |
static int | SortButtonWidth () |
Get width of up/down arrow of sort button state. | |
static void | DeleteClosedWindows () |
Delete all closed windows. | |
Data Fields | |
std::string | house_info {} |
bool | house_protected = false |
IntervalTimer< TimerWindow > | view_refresh_interval |
![]() | |
bool | has_class_picker = false |
Set if this window has a class picker 'component'. | |
bool | has_type_picker = false |
Set if this window has a type picker 'component'. | |
![]() | |
WindowDesc & | window_desc |
Window description. | |
WindowFlags | flags {} |
Window flags. | |
WindowClass | window_class {} |
Window class. | |
WindowNumber | window_number = 0 |
Window number within the window class. | |
int | scale = 0 |
Scale of this window – used to determine how to resize. | |
uint8_t | timeout_timer = 0 |
Timer value of the WindowFlag::Timeout for flags. | |
uint8_t | white_border_timer = 0 |
Timer value of the WindowFlag::WhiteBorder for flags. | |
int | left = 0 |
x position of left edge of the window | |
int | top = 0 |
y position of top edge of the window | |
int | width = 0 |
width of the window (number of pixels to the right in x direction) | |
int | height = 0 |
Height of the window (number of pixels down in y direction) | |
ResizeInfo | resize {} |
Resize information. | |
Owner | owner = INVALID_OWNER |
The owner of the content shown in this window. Company colour is acquired from this variable. | |
ViewportData * | viewport = nullptr |
Pointer to viewport data, if present. | |
const NWidgetCore * | nested_focus = nullptr |
Currently focused nested widget, or nullptr if no nested widget has focus. | |
std::map< WidgetID, QueryString * > | querystrings {} |
QueryString associated to WWT_EDITBOX widgets. | |
std::unique_ptr< NWidgetBase > | nested_root {} |
Root of the nested tree. | |
WidgetLookup | widget_lookup {} |
Indexed access to the nested widget tree. Do not access directly, use Window::GetWidget() instead. | |
NWidgetStacked * | shade_select = nullptr |
Selection widget (NWID_SELECTION) to use for shading the window. If nullptr , window cannot shade. | |
Dimension | unshaded_size {} |
Last known unshaded size (only valid while shaded). | |
WidgetID | mouse_capture_widget = -1 |
ID of current mouse capture widget (e.g. dragged scrollbar). -1 if no widget has mouse capture. | |
Window * | parent = nullptr |
Parent window. | |
WindowList::iterator | z_position {} |
Static Public Attributes | |
static HotkeyList | hotkeys |
![]() | |
static constexpr PickerInvalidations | PICKER_INVALIDATION_ALL {PickerInvalidation::Class, PickerInvalidation::Type, PickerInvalidation::Position, PickerInvalidation::Validate} |
static const int | PREVIEW_WIDTH = 64 |
Width of each preview button. | |
static const int | PREVIEW_HEIGHT = 48 |
Height of each preview button. | |
static const int | PREVIEW_LEFT = 31 |
Offset from left edge to draw preview. | |
static const int | PREVIEW_BOTTOM = 31 |
Offset from bottom edge to draw preview. | |
static const uint | EDITBOX_MAX_SIZE = 16 |
The maximum number of characters for the filter edit box. | |
Additional Inherited Members | |
![]() | |
enum | PickerFilterModes : uint8_t { PFM_ALL = 0 , PFM_USED = 1 , PFM_SAVED = 2 } |
enum class | PickerInvalidation : uint8_t { Class , Type , Position , Validate } |
enum | PickerClassWindowHotkeys : int32_t { PCWHK_FOCUS_FILTER_BOX } |
Enum referring to the Hotkeys in the picker window. More... | |
using | PickerInvalidations = EnumBitSet< PickerInvalidation, uint8_t > |
![]() | |
using | IteratorToFront = WindowIterator< false > |
Iterate in Z order towards front. | |
using | IteratorToBack = WindowIterator< true > |
Iterate in Z order towards back. | |
using | Iterate = AllWindows< false > |
Iterate all windows in whatever order is easiest. | |
using | IterateFromBack = AllWindows< false > |
Iterate all windows in Z order from back to front. | |
using | IterateFromFront = AllWindows< true > |
Iterate all windows in Z order from front to back. | |
![]() | |
void | ConstructWindow () |
![]() | |
void | InitializeData (WindowNumber window_number) |
Initializes the data (except the position and initial size) of a new Window. | |
void | InitializePositionSize (int x, int y, int min_width, int min_height) |
Set the position and smallest size of the window. | |
virtual void | FindWindowPlacementAndResize (int def_width, int def_height) |
Resize window towards the default size. | |
virtual | ~Window () |
Remove window and all its child windows from the window stack. | |
![]() | |
PickerCallbacks & | callbacks |
![]() | |
std::vector< int > | scheduled_invalidation_data {} |
Data of scheduled OnInvalidateData() calls. | |
bool | scheduled_resize = false |
Set if window has been resized. | |
Definition at line 1657 of file town_gui.cpp.
|
inline |
Definition at line 1661 of file town_gui.cpp.
Draw the contents of a nested widget.
r | Rectangle occupied by the widget. |
widget | Number of the widget to draw. |
Reimplemented from Window.
Definition at line 1754 of file town_gui.cpp.
References DrawStringMultiLine(), PickerWindow::DrawWidget(), and WID_BH_INFO.
Get information string for a house.
hs | HouseSpec to get information string for. |
Definition at line 1711 of file town_gui.cpp.
References BuildCargoAcceptanceString(), HouseSpec::building_flags, GB(), GetAcceptedCargoOfHouse(), GetHouseName(), GetHouseYear(), GetProducedCargoOfHouse(), GetString(), Window::GetWidget(), HouseSpec::max_year, HouseSpec::min_year, HouseSpec::population, and BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test().
Referenced by OnInvalidateData().
|
inlinestatic |
Get a date range string for house availability year.
min_year | Earliest year house can be built. |
max_year | Latest year house can be built. |
Definition at line 1692 of file town_gui.cpp.
References GetString(), Window::GetWidget(), TimerGameConst< struct Calendar >::MAX_YEAR, and TimerGameConst< struct Calendar >::MIN_YEAR.
Referenced by GetHouseInformation().
A click with the left mouse button has been made on the window.
pt | the point inside the window that has been clicked. |
widget | the clicked widget. |
click_count | Number of fast consecutive clicks at same position |
Reimplemented from Window.
Definition at line 1763 of file town_gui.cpp.
References _settings_client, SoundSettings::click_beep, Window::GetWidget(), PickerWindow::OnClick(), Window::SetDirty(), Window::SetWidgetLoweredState(), SND_15_BEEP, ClientSettings::sound, WID_BH_PROTECT_OFF, and WID_BH_PROTECT_ON.
|
inlineoverridevirtual |
Notification that the nested widget tree gets initialized.
The event can be used to perform general computations.
Reimplemented from Window.
Definition at line 1746 of file town_gui.cpp.
References PickerWindow::OnInit(), Window::SetWidgetLoweredState(), WID_BH_PROTECT_OFF, and WID_BH_PROTECT_ON.
|
inlineoverridevirtual |
Some data on this window has become invalid.
data | information about the changed data. |
gui_scope | Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See InvalidateWindowData() for details. |
Reimplemented from Window.
Definition at line 1782 of file town_gui.cpp.
References BuildingIsProtected, HouseSpec::extra_flags, HouseSpec::Get(), GetHouseInformation(), Window::GetWidget(), PickerWindow::OnInvalidateData(), PickerWindow::Position, HousePickerCallbacks::sel_type, Window::SetWidgetDisabledState(), Window::SetWidgetLoweredState(), BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Test(), WID_BH_PROTECT_OFF, and WID_BH_PROTECT_ON.
The user clicked some place on the map when a tile highlight mode has been set.
pt | the exact point on the map that has been clicked. |
tile | the tile on the map that has been clicked. |
Reimplemented from Window.
Definition at line 1806 of file town_gui.cpp.
References HouseSpec::Get(), Window::GetWidget(), HouseSpec::Index(), and HousePickerCallbacks::sel_type.
Definition at line 1667 of file town_gui.cpp.
|
inlinestatic |
Definition at line 1819 of file town_gui.cpp.
std::string BuildHouseWindow::house_info {} |
Definition at line 1658 of file town_gui.cpp.
Definition at line 1659 of file town_gui.cpp.
IntervalTimer<TimerWindow> BuildHouseWindow::view_refresh_interval |
Definition at line 1812 of file town_gui.cpp.