OpenTTD Source: src/misc_gui.cpp File Reference

OpenTTD Source 14.0-beta1

Data Structures | Macros | Enumerations | Functions | Variables
misc_gui.cpp File Reference
`#include "stdafx.h"`
`#include "debug.h"`
`#include "landscape.h"`
`#include "error.h"`
`#include "gui.h"`
`#include "command_func.h"`
`#include "company_func.h"`
`#include "town.h"`
`#include "string_func.h"`
`#include "company_base.h"`
`#include "texteff.hpp"`
`#include "strings_func.h"`
`#include "window_func.h"`
`#include "querystring_gui.h"`
`#include "core/geometry_func.hpp"`
`#include "newgrf_debug.h"`
`#include "zoom_func.h"`
`#include "viewport_func.h"`
`#include "landscape_cmd.h"`
`#include "rev.h"`
`#include "timer/timer.h"`
`#include "timer/timer_window.h"`
`#include "widgets/misc_widget.h"`
`#include "table/strings.h"`
`#include <sstream>`
`#include <iomanip>`
`#include "safeguards.h"`

Go to the source code of this file.

## Data Structures
class | LandInfoWindow
struct | AboutWindow
struct | TooltipsWindow
| Window for displaying a tooltip. More...
struct | QueryStringWindow
| Class for the string query window. More...
struct | QueryWindow
| Window used for asking the user a YES/NO question. More...

## Macros
#define | LANDINFOD_LEVEL 1

## Enumerations
enum | OskActivation { OSKA_DISABLED, OSKA_DOUBLE_CLICK, OSKA_SINGLE_CLICK, OSKA_IMMEDIATELY }
| Method to open the OSK. More...

## Functions
void | ShowLandInfo (TileIndex tile)
| Show land information window. More...
void | ShowAboutWindow ()
void | ShowEstimatedCostOrIncome (Money cost, int x, int y)
| Display estimated costs. More...
void | ShowCostOrIncomeAnimation (int x, int y, int z, Money cost)
| Display animated income or costs on the map. More...
void | ShowFeederIncomeAnimation (int x, int y, int z, Money transfer, Money income)
| Display animated feeder income. More...
TextEffectID | ShowFillingPercent (int x, int y, int z, uint8_t percent, StringID string)
| Display vehicle loading indicators. More...
void | UpdateFillingPercent (TextEffectID te_id, uint8_t percent, StringID string)
| Update vehicle loading indicators. More...
void | HideFillingPercent (TextEffectID *te_id)
| Hide vehicle loading indicators. More...
void | GuiShowTooltips (Window *parent, StringID str, TooltipCloseCondition close_tooltip, uint paramcount)
| Shows a tooltip. More...
static int | GetCaretWidth ()
void | ShowQueryString (StringID str, StringID caption, uint maxsize, Window *parent, CharSetFilter afilter, QueryStringFlags flags)
| Show a query popup window with a textbox in it. More...
void | ShowQuery (StringID caption, StringID message, Window *parent, QueryCallbackProc *callback, bool focus)
| Show a confirmation window with standard 'yes' and 'no' buttons The window is aligned to the centre of its parent. More...

## Variables
static constexpr NWidgetPart | _nested_land_info_widgets []
static WindowDesc | _land_info_desc (__FILE__, __LINE__, WDP_AUTO, nullptr, 0, 0, WC_LAND_INFO, WC_NONE, 0, std::begin(_nested_land_info_widgets), std::end(_nested_land_info_widgets))
static constexpr NWidgetPart | _nested_about_widgets []
static WindowDesc | _about_desc (__FILE__, __LINE__, WDP_CENTER, nullptr, 0, 0, WC_GAME_OPTIONS, WC_NONE, 0, std::begin(_nested_about_widgets), std::end(_nested_about_widgets))
static const char *const | _credits []
static constexpr NWidgetPart | _nested_tooltips_widgets []
static WindowDesc | _tool_tips_desc (__FILE__, __LINE__, WDP_MANUAL, nullptr, 0, 0, WC_TOOLTIPS, WC_NONE, WDF_NO_FOCUS|WDF_NO_CLOSE, std::begin(_nested_tooltips_widgets), std::end(_nested_tooltips_widgets))
static constexpr NWidgetPart | _nested_query_string_widgets []
static WindowDesc | _query_string_desc (__FILE__, __LINE__, WDP_CENTER, nullptr, 0, 0, WC_QUERY_STRING, WC_NONE, 0, std::begin(_nested_query_string_widgets), std::end(_nested_query_string_widgets))
static constexpr NWidgetPart | _nested_query_widgets []
static WindowDesc | _query_desc (__FILE__, __LINE__, WDP_CENTER, nullptr, 0, 0, WC_CONFIRM_POPUP_QUERY, WC_NONE, WDF_MODAL, std::begin(_nested_query_widgets), std::end(_nested_query_widgets))

## Detailed Description

GUIs for a number of misc windows.

Definition in file misc_gui.cpp.

## Enumeration Type Documentation

## ◆ OskActivation

enum OskActivation

Method to open the OSK.

Enumerator
OSKA_DISABLED | The OSK shall not be activated at all.
OSKA_DOUBLE_CLICK | Double click on the edit box opens OSK.
OSKA_SINGLE_CLICK | Single click after focus click opens OSK.
OSKA_IMMEDIATELY | Focusing click already opens OSK.

Definition at line 43 of file misc_gui.cpp.

## Function Documentation

## ◆ GuiShowTooltips()

void GuiShowTooltips | ( | Window * | parent,
|  | StringID | str,
|  | TooltipCloseCondition | close_tooltip,
|  | uint | paramcount
| ) |  |

Shows a tooltip.

Parameters

  parent | The window this tooltip is related to.
  str | String to be displayed
  close_tooltip | the condition under which the tooltip closes
  paramcount | number of params to deal with

Definition at line 754 of file misc_gui.cpp.

References CloseWindowById(), and WC_TOOLTIPS.

Referenced by ShowMeasurementTooltips().

## ◆ HideFillingPercent()

void HideFillingPercent | ( | TextEffectID * | te_id | ) |

Hide vehicle loading indicators.

Parameters

  *te_id | TextEffectID which is supposed to be hidden.

Definition at line 642 of file misc_gui.cpp.

Referenced by Train::Crash(), and Vehicle::PreDestructor().

## ◆ ShowCostOrIncomeAnimation()

void ShowCostOrIncomeAnimation | ( | int | x,
|  | int | y,
|  | int | z,
|  | Money | cost
| ) |  |

Display animated income or costs on the map.

Does nothing if cost is zero.

Parameters

  x | World X position of the animation location.
  y | World Y position of the animation location.
  z | World Z position of the animation location.
  cost | Estimated cost (or income if negative).

Definition at line 564 of file misc_gui.cpp.

## ◆ ShowEstimatedCostOrIncome()

void ShowEstimatedCostOrIncome | ( | Money | cost,
|  | int | x,
|  | int | y
| ) |  |

Display estimated costs.

Parameters

  cost | Estimated cost (or income if negative).
  x | X position of the notification window.
  y | Y position of the notification window.

Definition at line 545 of file misc_gui.cpp.

## ◆ ShowFeederIncomeAnimation()

void ShowFeederIncomeAnimation | ( | int | x,
|  | int | y,
|  | int | z,
|  | Money | transfer,
|  | Money | income
| ) |  |

Display animated feeder income.

Parameters

  x | World X position of the animation location.
  y | World Y position of the animation location.
  z | World Z position of the animation location.
  transfer | Estimated feeder income.
  income | Real income from goods being delivered to their final destination.

Definition at line 588 of file misc_gui.cpp.

## ◆ ShowFillingPercent()

TextEffectID ShowFillingPercent | ( | int | x,
|  | int | y,
|  | int | z,
|  | uint8_t | percent,
|  | StringID | string
| ) |  |

Display vehicle loading indicators.

Parameters

  x | World X position of the animation location.
  y | World Y position of the animation location.
  z | World Z position of the animation location.
  percent | Estimated feeder income.
  string | String which is drawn on the map.

Returns
  TextEffectID to be used for future updates of the loading indicators.

Definition at line 615 of file misc_gui.cpp.

## ◆ ShowLandInfo()

void ShowLandInfo | ( | TileIndex | tile | ) |

Show land information window.

Parameters

  tile | The tile to show information about.

Definition at line 374 of file misc_gui.cpp.

References CloseWindowById(), and WC_LAND_INFO.

## ◆ ShowQuery()

void ShowQuery | ( | StringID | caption,
|  | StringID | message,
|  | Window * | parent,
|  | QueryCallbackProc * | callback,
|  | bool | focus
| ) |  |

Show a confirmation window with standard 'yes' and 'no' buttons The window is aligned to the centre of its parent.

Parameters

  caption | string shown as window caption
  message | string that will be shown for the window
  parent | pointer to parent window, if this pointer is nullptr the parent becomes the main window WC_MAIN_WINDOW
  callback | callback function pointer to set in the window descriptor
  focus | whether the window should be focussed (by default false)

Definition at line 1227 of file misc_gui.cpp.

References GetMainWindow(), Window::parent, QueryWindow::proc, WC_CONFIRM_POPUP_QUERY, and Window::window_class.

Referenced by CmdPause(), MakeScreenshotWithConfirm(), and SaveLoadWindow::OnTimeout().

## ◆ ShowQueryString()

void ShowQueryString | ( | StringID | str,
|  | StringID | caption,
|  | uint | maxsize,
|  | Window * | parent,
|  | CharSetFilter | afilter,
|  | QueryStringFlags | flags
| ) |  |

Show a query popup window with a textbox in it.

Parameters

  str | StringID for the text shown in the textbox
  caption | StringID of text shown in caption of querywindow
  maxsize | maximum size in bytes or characters (including terminating '\0') depending on flags
  parent | pointer to a Window that will handle the events (ok/cancel) of this window.
  afilter | filters out unwanted character input
  flags | various flags,

See also
  QueryStringFlags

Definition at line 1083 of file misc_gui.cpp.

References CloseWindowByClass(), MAX_CHAR_LENGTH, QSF_LEN_IN_CHARS, and WC_QUERY_STRING.

Referenced by NetworkClientListWindow::OnClickCompanyJoin(), and ToolbarScenDatePanel().

## ◆ UpdateFillingPercent()

void UpdateFillingPercent | ( | TextEffectID | te_id,
|  | uint8_t | percent,
|  | StringID | string
| ) |  |

Update vehicle loading indicators.

Parameters

  te_id | TextEffectID to be updated.
  string | String which is printed.

Definition at line 630 of file misc_gui.cpp.

References SetDParam().

## Variable Documentation

## ◆ _nested_about_widgets

constexpr NWidgetPart _nested_about_widgets[]
| staticconstexpr

Initial value:
= {
NWidget(NWID_HORIZONTAL),
NWidget(WWT_CLOSEBOX, COLOUR_GREY),
NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(STR_ABOUT_OPENTTD, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
EndContainer(),
NWidget(WWT_PANEL, COLOUR_GREY), SetPIP(4, 2, 4),
NWidget(WWT_LABEL, COLOUR_GREY), SetDataTip(STR_ABOUT_ORIGINAL_COPYRIGHT, STR_NULL),
NWidget(WWT_LABEL, COLOUR_GREY), SetDataTip(STR_ABOUT_VERSION, STR_NULL),
NWidget(WWT_FRAME, COLOUR_GREY), SetPadding(0, 5, 1, 5),
NWidget(WWT_EMPTY, INVALID_COLOUR, WID_A_SCROLLING_TEXT),
EndContainer(),
NWidget(WWT_LABEL, COLOUR_GREY, WID_A_WEBSITE), SetDataTip(STR_JUST_RAW_STRING, STR_NULL),
NWidget(WWT_LABEL, COLOUR_GREY, WID_A_COPYRIGHT), SetDataTip(STR_ABOUT_COPYRIGHT_OPENTTD, STR_NULL),
EndContainer(),
}

Definition at line 380 of file misc_gui.cpp.

## ◆ _nested_land_info_widgets

constexpr NWidgetPart _nested_land_info_widgets[]
| staticconstexpr

Initial value:
= {
NWidget(NWID_HORIZONTAL),
NWidget(WWT_CLOSEBOX, COLOUR_GREY),
NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(STR_LAND_AREA_INFORMATION_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_LI_LOCATION), SetMinimalSize(12, 14), SetDataTip(SPR_GOTO_LOCATION, STR_LAND_AREA_INFORMATION_LOCATION_TOOLTIP),
NWidget(WWT_DEBUGBOX, COLOUR_GREY),
EndContainer(),
NWidget(WWT_PANEL, COLOUR_GREY, WID_LI_BACKGROUND), EndContainer(),
}

Definition at line 51 of file misc_gui.cpp.

## ◆ _nested_query_string_widgets

constexpr NWidgetPart _nested_query_string_widgets[]
| staticconstexpr

Initial value:
= {
NWidget(NWID_HORIZONTAL),
NWidget(WWT_CLOSEBOX, COLOUR_GREY),
NWidget(WWT_CAPTION, COLOUR_GREY, WID_QS_CAPTION), SetDataTip(STR_JUST_STRING, STR_NULL), SetTextStyle(TC_WHITE),
EndContainer(),
NWidget(WWT_PANEL, COLOUR_GREY),
NWidget(WWT_EDITBOX, COLOUR_GREY, WID_QS_TEXT), SetMinimalSize(256, 12), SetFill(1, 1), SetPadding(2, 2, 2, 2),
EndContainer(),
NWidget(WWT_PANEL, COLOUR_GREY, WID_QS_WARNING), EndContainer(),
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_QS_DEFAULT), SetMinimalSize(87, 12), SetFill(1, 1), SetDataTip(STR_BUTTON_DEFAULT, STR_NULL),
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_QS_CANCEL), SetMinimalSize(86, 12), SetFill(1, 1), SetDataTip(STR_BUTTON_CANCEL, STR_NULL),
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_QS_OK), SetMinimalSize(87, 12), SetFill(1, 1), SetDataTip(STR_BUTTON_OK, STR_NULL),
EndContainer(),
}

Definition at line 1051 of file misc_gui.cpp.

## ◆ _nested_query_widgets

constexpr NWidgetPart _nested_query_widgets[]
| staticconstexpr

Initial value:
= {
NWidget(NWID_HORIZONTAL),
NWidget(WWT_CLOSEBOX, COLOUR_RED),
NWidget(WWT_CAPTION, COLOUR_RED, WID_Q_CAPTION),
EndContainer(),
NWidget(WWT_PANEL, COLOUR_RED),
NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_wide, 0), SetPadding(WidgetDimensions::unscaled.modalpopup),
NWidget(WWT_TEXT, COLOUR_RED, WID_Q_TEXT), SetMinimalSize(200, 12),
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(WidgetDimensions::unscaled.hsep_indent, WidgetDimensions::unscaled.hsep_indent, WidgetDimensions::unscaled.hsep_indent),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_Q_NO), SetMinimalSize(71, 12), SetFill(1, 1), SetDataTip(STR_QUIT_NO, STR_NULL),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_Q_YES), SetMinimalSize(71, 12), SetFill(1, 1), SetDataTip(STR_QUIT_YES, STR_NULL),
EndContainer(),
EndContainer(),
EndContainer(),
}

Definition at line 1194 of file misc_gui.cpp.

## ◆ _nested_tooltips_widgets

constexpr NWidgetPart _nested_tooltips_widgets[]
| staticconstexpr

Initial value:
= {
NWidget(WWT_EMPTY, INVALID_COLOUR, WID_TT_BACKGROUND),
}

Definition at line 650 of file misc_gui.cpp.

SetFill
constexpr NWidgetPart SetFill(uint16_t fill_x, uint16_t fill_y)
Widget part function for setting filling.
Definition: widget_type.h:1141
WID_A_WEBSITE
@ WID_A_WEBSITE
URL of OpenTTD website.
Definition: misc_widget.h:27
WWT_CAPTION
@ WWT_CAPTION
Window caption (window title between closebox and stickybox)
Definition: widget_type.h:63
WID_Q_NO
@ WID_Q_NO
Yes button.
Definition: misc_widget.h:45
WWT_LABEL
@ WWT_LABEL
Centered label.
Definition: widget_type.h:59
NWID_HORIZONTAL
@ NWID_HORIZONTAL
Horizontal container.
Definition: widget_type.h:77
WID_Q_TEXT
@ WID_Q_TEXT
Text of the query.
Definition: misc_widget.h:44
EndContainer
constexpr NWidgetPart EndContainer()
Widget part function for denoting the end of a container (horizontal, vertical, WWT_FRAME,...
Definition: widget_type.h:1151
WWT_EMPTY
@ WWT_EMPTY
Empty widget, place holder to reserve space in widget tree.
Definition: widget_type.h:50
WID_QS_CAPTION
@ WID_QS_CAPTION
Caption of the window.
Definition: misc_widget.h:33
NC_EQUALSIZE
@ NC_EQUALSIZE
Value of the NCB_EQUALSIZE flag.
Definition: widget_type.h:508
SetPadding
constexpr NWidgetPart SetPadding(uint8_t top, uint8_t right, uint8_t bottom, uint8_t left)
Widget part function for setting additional space around a widget.
Definition: widget_type.h:1188
WWT_EDITBOX
@ WWT_EDITBOX
a textbox for typing
Definition: widget_type.h:73
WID_QS_WARNING
@ WID_QS_WARNING
Warning label about password security.
Definition: misc_widget.h:35
WID_QS_TEXT
@ WID_QS_TEXT
Text of the query.
Definition: misc_widget.h:34
WWT_PUSHTXTBTN
@ WWT_PUSHTXTBTN
Normal push-button (no toggle button) with text caption.
Definition: widget_type.h:110
WID_LI_BACKGROUND
@ WID_LI_BACKGROUND
Background of the window.
Definition: misc_widget.h:16
NWidget
constexpr NWidgetPart NWidget(WidgetType tp, Colours col, WidgetID idx=-1)
Widget part function for starting a new 'real' widget.
Definition: widget_type.h:1258
WWT_FRAME
@ WWT_FRAME
Frame.
Definition: widget_type.h:62
WID_LI_LOCATION
@ WID_LI_LOCATION
Scroll to location.
Definition: misc_widget.h:15
NWID_VERTICAL
@ NWID_VERTICAL
Vertical container.
Definition: widget_type.h:79
WidgetDimensions::unscaled
static const WidgetDimensions unscaled
Unscaled widget dimensions.
Definition: window_gui.h:67
WWT_CLOSEBOX
@ WWT_CLOSEBOX
Close box (at top-left of a window)
Definition: widget_type.h:71
WID_Q_YES
@ WID_Q_YES
No button.
Definition: misc_widget.h:46
WWT_PUSHIMGBTN
@ WWT_PUSHIMGBTN
Normal push-button (no toggle button) with image caption.
Definition: widget_type.h:111
WWT_TEXT
@ WWT_TEXT
Pure simple text.
Definition: widget_type.h:60
SetPIP
constexpr NWidgetPart SetPIP(uint8_t pre, uint8_t inter, uint8_t post)
Widget part function for setting a pre/inter/post spaces.
Definition: widget_type.h:1220
WID_QS_OK
@ WID_QS_OK
OK button.
Definition: misc_widget.h:38
WWT_PANEL
@ WWT_PANEL
Simple depressed panel.
Definition: widget_type.h:52
WID_TT_BACKGROUND
@ WID_TT_BACKGROUND
Background of the window.
Definition: misc_widget.h:21
WID_QS_CANCEL
@ WID_QS_CANCEL
Cancel button.
Definition: misc_widget.h:37
WID_QS_DEFAULT
@ WID_QS_DEFAULT
Default button.
Definition: misc_widget.h:36
SetMinimalSize
constexpr NWidgetPart SetMinimalSize(int16_t x, int16_t y)
Widget part function for setting the minimal size.
Definition: widget_type.h:1097
WID_A_SCROLLING_TEXT
@ WID_A_SCROLLING_TEXT
The actually scrolling text.
Definition: misc_widget.h:26
SetDataTip
constexpr NWidgetPart SetDataTip(uint32_t data, StringID tip)
Widget part function for setting the data and tooltip.
Definition: widget_type.h:1162
WWT_DEBUGBOX
@ WWT_DEBUGBOX
NewGRF debug box (at top-right of a window, between WWT_CAPTION and WWT_SHADEBOX)
Definition: widget_type.h:65
WID_A_COPYRIGHT
@ WID_A_COPYRIGHT
Copyright string.
Definition: misc_widget.h:28
SetTextStyle
constexpr NWidgetPart SetTextStyle(TextColour colour, FontSize size=FS_NORMAL)
Widget part function for setting the text style.
Definition: widget_type.h:1120
WWT_TEXTBTN
@ WWT_TEXTBTN
(Toggle) Button with text
Definition: widget_type.h:57
WID_Q_CAPTION
@ WID_Q_CAPTION
Caption of the window.
Definition: misc_widget.h:43