annotate src/misc_gui.cpp @ 14450:94d7ee68af4e draft

(svn r19007) -Prepare: 1.0.0-beta4
author rubidium <rubidium@openttd.org>
date Thu, 04 Feb 2010 17:11:46 +0000 (2010-02-04)
parents ccb369c0139e
children 572fca58be2d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1 /* $Id$ */
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
2
12778
bc7926153e19 (svn r17248) -Fix: add GPL license notice where appropriate
rubidium <rubidium@openttd.org>
parents: 12777
diff changeset
3 /*
bc7926153e19 (svn r17248) -Fix: add GPL license notice where appropriate
rubidium <rubidium@openttd.org>
parents: 12777
diff changeset
4 * This file is part of OpenTTD.
bc7926153e19 (svn r17248) -Fix: add GPL license notice where appropriate
rubidium <rubidium@openttd.org>
parents: 12777
diff changeset
5 * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
bc7926153e19 (svn r17248) -Fix: add GPL license notice where appropriate
rubidium <rubidium@openttd.org>
parents: 12777
diff changeset
6 * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
bc7926153e19 (svn r17248) -Fix: add GPL license notice where appropriate
rubidium <rubidium@openttd.org>
parents: 12777
diff changeset
7 * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
bc7926153e19 (svn r17248) -Fix: add GPL license notice where appropriate
rubidium <rubidium@openttd.org>
parents: 12777
diff changeset
8 */
bc7926153e19 (svn r17248) -Fix: add GPL license notice where appropriate
rubidium <rubidium@openttd.org>
parents: 12777
diff changeset
9
9111
d48433370037 (svn r12971) -Documentation: add @file in files that missed them and add something more than whitespace as description of files that don't have a description.
rubidium <rubidium@openttd.org>
parents: 9082
diff changeset
10 /** @file misc_gui.cpp GUIs for a number of misc windows. */
6201
3b141366478a (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas <belugas@openttd.org>
parents: 6197
diff changeset
11
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
12 #include "stdafx.h"
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
13 #include "openttd.h"
6453
666fc3ef3174 (svn r9609) -Codechange: Move some function prototypes out of functions.h and into landscape.h, and add a few where they didn't exist.
maedhros <maedhros@openttd.org>
parents: 6350
diff changeset
14 #include "landscape.h"
7750
2df30880f88b (svn r11287) -Codechange: add support for pushing paramaters into NewIndustries' error messages. Patch by Csaboka.
rubidium <rubidium@openttd.org>
parents: 7521
diff changeset
15 #include "newgrf_text.h"
10571
b6779abf2e96 (svn r14828) -Codechange: move most of save/load-specific code to separate files
smatz <smatz@openttd.org>
parents: 10563
diff changeset
16 #include "saveload/saveload.h"
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
17 #include "gui.h"
8224
c45446125bf0 (svn r11787) -Codechange: more header rewrites. This time related to viewport.h.
rubidium <rubidium@openttd.org>
parents: 8214
diff changeset
18 #include "viewport_func.h"
c45446125bf0 (svn r11787) -Codechange: more header rewrites. This time related to viewport.h.
rubidium <rubidium@openttd.org>
parents: 8214
diff changeset
19 #include "gfx_func.h"
8116
9cc845deddfe (svn r11677) -Codechange: move price and command related types/functions to their respective places.
rubidium <rubidium@openttd.org>
parents: 8114
diff changeset
20 #include "command_func.h"
10208
39cf8eebfda5 (svn r14422) -Codechange: also reflect the changes of r14421 in the filenames.
rubidium <rubidium@openttd.org>
parents: 10207
diff changeset
21 #include "company_func.h"
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
22 #include "town.h"
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
23 #include "network/network.h"
11352
62978bce3c1c (svn r15702) -Feature(tte): direct content download 'links' in the play scenario/heightmap windows.
rubidium <rubidium@openttd.org>
parents: 11319
diff changeset
24 #include "network/network_content.h"
10960
a4e5b5d2837c (svn r15299) -Cleanup: remove many redundant includes
smatz <smatz@openttd.org>
parents: 10944
diff changeset
25 #include "company_base.h"
a4e5b5d2837c (svn r15299) -Cleanup: remove many redundant includes
smatz <smatz@openttd.org>
parents: 10944
diff changeset
26 #include "texteff.hpp"
6091
17ebeb5a2c37 (svn r8826) -Codechange: Replace _cargoc's separate arrays with a regular struct array (with accessor) and implement new initialization method using cargo labels.
peter1138 <peter1138@openttd.org>
parents: 5893
diff changeset
27 #include "cargotype.h"
10208
39cf8eebfda5 (svn r14422) -Codechange: also reflect the changes of r14421 in the filenames.
rubidium <rubidium@openttd.org>
parents: 10207
diff changeset
28 #include "company_manager_face.h"
8114
2d6af5d7a142 (svn r11675) -Codechange: split the string types from the string functions.
rubidium <rubidium@openttd.org>
parents: 8108
diff changeset
29 #include "strings_func.h"
10039
6301378f3e0f (svn r14199) -Codechange: split fileio.h into fileio_type.h and fileio_func.h so not everything that includes saveload.h needs to include everything else too.
rubidium <rubidium@openttd.org>
parents: 9944
diff changeset
30 #include "fileio_func.h"
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
31 #include "fios.h"
8123
c26c28875749 (svn r11684) -Codechange: split gfx.h in a type and functional header.
rubidium <rubidium@openttd.org>
parents: 8121
diff changeset
32 #include "zoom_func.h"
8131
e300ac8001ae (svn r11692) -Codechange: move some functions from 'functions.h' to a more logical place and remove about 50% of the includes of 'functions.h'
rubidium <rubidium@openttd.org>
parents: 8123
diff changeset
33 #include "window_func.h"
9127
428852b86d4d (svn r12987) -Codechange: split viewport and tile selection.
rubidium <rubidium@openttd.org>
parents: 9116
diff changeset
34 #include "tilehighlight_func.h"
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
35 #include "querystring_gui.h"
14258
a899d4e5ee1a (svn r18809) -Codechange/Cleanup: remove unneeded headers from some files, if a header require a header make it include that header
rubidium <rubidium@openttd.org>
parents: 14218
diff changeset
36 #include "core/geometry_func.hpp"
8119
b6ec923e9fa8 (svn r11680) -Codechange: refactor more out of openttd.h and functions.h.
rubidium <rubidium@openttd.org>
parents: 8116
diff changeset
37
8264
2495310e220f (svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium <rubidium@openttd.org>
parents: 8254
diff changeset
38 #include "table/strings.h"
2495310e220f (svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium <rubidium@openttd.org>
parents: 8254
diff changeset
39
13201
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
40
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
41 /**
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
42 * Try to retrive the current clipboard contents.
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
43 *
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
44 * @note OS-specific funtion.
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
45 * @return True if some text could be retrived.
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
46 */
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
47 bool GetClipboardContents(char *buffer, size_t buff_len);
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
48
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
49
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
50 /* Variables to display file lists */
8149
ad7ddb6150dc (svn r11711) -Codechange: Name the Save Load Dialog Mode enum
belugas <belugas@openttd.org>
parents: 8144
diff changeset
51 SaveLoadDialogMode _saveload_mode;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
52
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
53
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
54 static bool _fios_path_changed;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
55 static bool _savegame_sort_dirty;
11230
4864c1e8957a (svn r15584) -Codechange: Move several variables from variables.h to more appropriate headers.
yexo <yexo@openttd.org>
parents: 11225
diff changeset
56 int _caret_timer;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
57
11429
8a62e44e06a1 (svn r15787) -Codechange: enumify the land info and about window widgets and use them.
rubidium <rubidium@openttd.org>
parents: 11427
diff changeset
58 /** Widgets for the land info window. */
8a62e44e06a1 (svn r15787) -Codechange: enumify the land info and about window widgets and use them.
rubidium <rubidium@openttd.org>
parents: 11427
diff changeset
59 enum LandInfoWidgets {
8a62e44e06a1 (svn r15787) -Codechange: enumify the land info and about window widgets and use them.
rubidium <rubidium@openttd.org>
parents: 11427
diff changeset
60 LIW_BACKGROUND, ///< Background to draw on
8a62e44e06a1 (svn r15787) -Codechange: enumify the land info and about window widgets and use them.
rubidium <rubidium@openttd.org>
parents: 11427
diff changeset
61 };
8a62e44e06a1 (svn r15787) -Codechange: enumify the land info and about window widgets and use them.
rubidium <rubidium@openttd.org>
parents: 11427
diff changeset
62
11653
50cfe1ce7e28 (svn r16033) -Codechange: Added nested widgets to about window, land-info window, and both query windows.
alberth <alberth@openttd.org>
parents: 11652
diff changeset
63 static const NWidgetPart _nested_land_info_widgets[] = {
50cfe1ce7e28 (svn r16033) -Codechange: Added nested widgets to about window, land-info window, and both query windows.
alberth <alberth@openttd.org>
parents: 11652
diff changeset
64 NWidget(NWID_HORIZONTAL),
13752
517d77f53919 (svn r18277) -Codechange: remove unneeded widget indices for close, resize and sticky boxes and for window captions
rubidium <rubidium@openttd.org>
parents: 13749
diff changeset
65 NWidget(WWT_CLOSEBOX, COLOUR_GREY),
517d77f53919 (svn r18277) -Codechange: remove unneeded widget indices for close, resize and sticky boxes and for window captions
rubidium <rubidium@openttd.org>
parents: 13749
diff changeset
66 NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(STR_LAND_AREA_INFORMATION_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
11653
50cfe1ce7e28 (svn r16033) -Codechange: Added nested widgets to about window, land-info window, and both query windows.
alberth <alberth@openttd.org>
parents: 11652
diff changeset
67 EndContainer(),
12834
f828651d0be0 (svn r17324) -Codechange: Land info window uses nested widget tree
Yexo <Yexo@openttd.org>
parents: 12821
diff changeset
68 NWidget(WWT_PANEL, COLOUR_GREY, LIW_BACKGROUND), EndContainer(),
11653
50cfe1ce7e28 (svn r16033) -Codechange: Added nested widgets to about window, land-info window, and both query windows.
alberth <alberth@openttd.org>
parents: 11652
diff changeset
69 };
50cfe1ce7e28 (svn r16033) -Codechange: Added nested widgets to about window, land-info window, and both query windows.
alberth <alberth@openttd.org>
parents: 11652
diff changeset
70
11373
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11369
diff changeset
71 static const WindowDesc _land_info_desc(
13796
3e68f07eb821 (svn r18322) -Codechange: remove the WDP duplication; no need to tell the same twice.
rubidium <rubidium@openttd.org>
parents: 13792
diff changeset
72 WDP_AUTO, 0, 0,
5893
8547517ef719 (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium <rubidium@openttd.org>
parents: 5750
diff changeset
73 WC_LAND_INFO, WC_NONE,
13749
fc3ab8256c95 (svn r18274) -Codechange: remove the unused WDF flags
rubidium <rubidium@openttd.org>
parents: 13705
diff changeset
74 0,
13564
bae287664b02 (svn r18086) -Codechange: remove 'widget' from WindowDesc
rubidium <rubidium@openttd.org>
parents: 13478
diff changeset
75 _nested_land_info_widgets, lengthof(_nested_land_info_widgets)
11373
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11369
diff changeset
76 );
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
77
9155
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
78 class LandInfoWindow : public Window {
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
79 enum {
9714
cb9766ae1255 (svn r13830) -Feature: show additional NewGRF info in the Tile Info window for stations, houses and industries
smatz <smatz@openttd.org>
parents: 9713
diff changeset
80 LAND_INFO_CENTERED_LINES = 12, ///< Up to 12 centered lines
9322
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
81 LAND_INFO_MULTICENTER_LINE = LAND_INFO_CENTERED_LINES, ///< One multicenter line
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
82 LAND_INFO_LINE_END,
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
83
9155
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
84 LAND_INFO_LINE_BUFF_SIZE = 512,
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
85 };
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
86
9155
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
87 public:
9322
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
88 char landinfo_data[LAND_INFO_LINE_END][LAND_INFO_LINE_BUFF_SIZE];
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
89
9170
8c020e980b8c (svn r13033) -Fix [FS#2003](r13029): land info tool wasn't working
smatz <smatz@openttd.org>
parents: 9166
diff changeset
90 virtual void OnPaint()
9155
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
91 {
9273
72a6d2e60834 (svn r13139) -Codechange: move DrawWindowWidgets and DrawWindowViewport to the Window class and remove Window from their naming.
rubidium <rubidium@openttd.org>
parents: 9272
diff changeset
92 this->DrawWidgets();
12834
f828651d0be0 (svn r17324) -Codechange: Land info window uses nested widget tree
Yexo <Yexo@openttd.org>
parents: 12821
diff changeset
93 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
94
12834
f828651d0be0 (svn r17324) -Codechange: Land info window uses nested widget tree
Yexo <Yexo@openttd.org>
parents: 12821
diff changeset
95 virtual void DrawWidget(const Rect &r, int widget) const
f828651d0be0 (svn r17324) -Codechange: Land info window uses nested widget tree
Yexo <Yexo@openttd.org>
parents: 12821
diff changeset
96 {
f828651d0be0 (svn r17324) -Codechange: Land info window uses nested widget tree
Yexo <Yexo@openttd.org>
parents: 12821
diff changeset
97 if (widget != LIW_BACKGROUND) return;
f828651d0be0 (svn r17324) -Codechange: Land info window uses nested widget tree
Yexo <Yexo@openttd.org>
parents: 12821
diff changeset
98
f828651d0be0 (svn r17324) -Codechange: Land info window uses nested widget tree
Yexo <Yexo@openttd.org>
parents: 12821
diff changeset
99 uint y = r.top + WD_TEXTPANEL_TOP;
9322
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
100 for (uint i = 0; i < LAND_INFO_CENTERED_LINES; i++) {
9572
7c23a341f695 (svn r13601) -Codechange: resize the Tile Info window when it is needed, make it better readable
smatz <smatz@openttd.org>
parents: 9441
diff changeset
101 if (StrEmpty(this->landinfo_data[i])) break;
9322
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
102
12834
f828651d0be0 (svn r17324) -Codechange: Land info window uses nested widget tree
Yexo <Yexo@openttd.org>
parents: 12821
diff changeset
103 DrawString(r.left + WD_FRAMETEXT_LEFT, r.right - WD_FRAMETEXT_RIGHT, y, this->landinfo_data[i], i == 0 ? TC_LIGHT_BLUE : TC_FROMSTRING, SA_CENTER);
f828651d0be0 (svn r17324) -Codechange: Land info window uses nested widget tree
Yexo <Yexo@openttd.org>
parents: 12821
diff changeset
104 y += FONT_HEIGHT_NORMAL + WD_PAR_VSEP_NORMAL;
f828651d0be0 (svn r17324) -Codechange: Land info window uses nested widget tree
Yexo <Yexo@openttd.org>
parents: 12821
diff changeset
105 if (i == 0) y += 4;
9322
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
106 }
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
107
9648
b53049484e44 (svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.
rubidium <rubidium@openttd.org>
parents: 9572
diff changeset
108 if (!StrEmpty(this->landinfo_data[LAND_INFO_MULTICENTER_LINE])) {
b53049484e44 (svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.
rubidium <rubidium@openttd.org>
parents: 9572
diff changeset
109 SetDParamStr(0, this->landinfo_data[LAND_INFO_MULTICENTER_LINE]);
12834
f828651d0be0 (svn r17324) -Codechange: Land info window uses nested widget tree
Yexo <Yexo@openttd.org>
parents: 12821
diff changeset
110 DrawStringMultiLine(r.left + WD_FRAMETEXT_LEFT, r.right - WD_FRAMETEXT_RIGHT, y, r.bottom - WD_TEXTPANEL_BOTTOM, STR_JUST_RAW_STRING, TC_FROMSTRING, SA_CENTER);
9648
b53049484e44 (svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.
rubidium <rubidium@openttd.org>
parents: 9572
diff changeset
111 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
112 }
9155
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
113
13705
8dee47e001b2 (svn r18230) -Codechange: Allow fill stepsize to be set from Window::UpdateWidgetSize().
alberth <alberth@openttd.org>
parents: 13704
diff changeset
114 virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
12834
f828651d0be0 (svn r17324) -Codechange: Land info window uses nested widget tree
Yexo <Yexo@openttd.org>
parents: 12821
diff changeset
115 {
f828651d0be0 (svn r17324) -Codechange: Land info window uses nested widget tree
Yexo <Yexo@openttd.org>
parents: 12821
diff changeset
116 if (widget != LIW_BACKGROUND) return;
f828651d0be0 (svn r17324) -Codechange: Land info window uses nested widget tree
Yexo <Yexo@openttd.org>
parents: 12821
diff changeset
117
f828651d0be0 (svn r17324) -Codechange: Land info window uses nested widget tree
Yexo <Yexo@openttd.org>
parents: 12821
diff changeset
118 size->height = WD_TEXTPANEL_TOP + WD_TEXTPANEL_BOTTOM;
f828651d0be0 (svn r17324) -Codechange: Land info window uses nested widget tree
Yexo <Yexo@openttd.org>
parents: 12821
diff changeset
119 for (uint i = 0; i < LAND_INFO_CENTERED_LINES; i++) {
f828651d0be0 (svn r17324) -Codechange: Land info window uses nested widget tree
Yexo <Yexo@openttd.org>
parents: 12821
diff changeset
120 if (StrEmpty(this->landinfo_data[i])) break;
f828651d0be0 (svn r17324) -Codechange: Land info window uses nested widget tree
Yexo <Yexo@openttd.org>
parents: 12821
diff changeset
121
f828651d0be0 (svn r17324) -Codechange: Land info window uses nested widget tree
Yexo <Yexo@openttd.org>
parents: 12821
diff changeset
122 uint width = GetStringBoundingBox(this->landinfo_data[i]).width + WD_FRAMETEXT_LEFT + WD_FRAMETEXT_RIGHT;
f828651d0be0 (svn r17324) -Codechange: Land info window uses nested widget tree
Yexo <Yexo@openttd.org>
parents: 12821
diff changeset
123 size->width = max(size->width, width);
f828651d0be0 (svn r17324) -Codechange: Land info window uses nested widget tree
Yexo <Yexo@openttd.org>
parents: 12821
diff changeset
124
f828651d0be0 (svn r17324) -Codechange: Land info window uses nested widget tree
Yexo <Yexo@openttd.org>
parents: 12821
diff changeset
125 size->height += FONT_HEIGHT_NORMAL + WD_PAR_VSEP_NORMAL;
f828651d0be0 (svn r17324) -Codechange: Land info window uses nested widget tree
Yexo <Yexo@openttd.org>
parents: 12821
diff changeset
126 if (i == 0) size->height += 4;
f828651d0be0 (svn r17324) -Codechange: Land info window uses nested widget tree
Yexo <Yexo@openttd.org>
parents: 12821
diff changeset
127 }
f828651d0be0 (svn r17324) -Codechange: Land info window uses nested widget tree
Yexo <Yexo@openttd.org>
parents: 12821
diff changeset
128
f828651d0be0 (svn r17324) -Codechange: Land info window uses nested widget tree
Yexo <Yexo@openttd.org>
parents: 12821
diff changeset
129 if (!StrEmpty(this->landinfo_data[LAND_INFO_MULTICENTER_LINE])) {
f828651d0be0 (svn r17324) -Codechange: Land info window uses nested widget tree
Yexo <Yexo@openttd.org>
parents: 12821
diff changeset
130 uint width = GetStringBoundingBox(this->landinfo_data[LAND_INFO_MULTICENTER_LINE]).width + WD_FRAMETEXT_LEFT + WD_FRAMETEXT_RIGHT;
f828651d0be0 (svn r17324) -Codechange: Land info window uses nested widget tree
Yexo <Yexo@openttd.org>
parents: 12821
diff changeset
131 size->width = max(size->width, min(300u, width));
f828651d0be0 (svn r17324) -Codechange: Land info window uses nested widget tree
Yexo <Yexo@openttd.org>
parents: 12821
diff changeset
132 SetDParamStr(0, this->landinfo_data[LAND_INFO_MULTICENTER_LINE]);
13683
42f82bcae40e (svn r18208) -Fix [FS#3321]: in some cases the size of the land information window wasn't properly calculated
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
133 size->height += GetStringHeight(STR_JUST_RAW_STRING, size->width - WD_FRAMETEXT_LEFT - WD_FRAMETEXT_RIGHT);
12834
f828651d0be0 (svn r17324) -Codechange: Land info window uses nested widget tree
Yexo <Yexo@openttd.org>
parents: 12821
diff changeset
134 }
f828651d0be0 (svn r17324) -Codechange: Land info window uses nested widget tree
Yexo <Yexo@openttd.org>
parents: 12821
diff changeset
135 }
f828651d0be0 (svn r17324) -Codechange: Land info window uses nested widget tree
Yexo <Yexo@openttd.org>
parents: 12821
diff changeset
136
f828651d0be0 (svn r17324) -Codechange: Land info window uses nested widget tree
Yexo <Yexo@openttd.org>
parents: 12821
diff changeset
137 LandInfoWindow(TileIndex tile) : Window() {
9413
512ea64da840 (svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium <rubidium@openttd.org>
parents: 9407
diff changeset
138 Town *t = ClosestTownFromTile(tile, _settings_game.economy.dist_local_authority);
9155
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
139
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
140 /* Because build_date is not set yet in every TileDesc, we make sure it is empty */
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
141 TileDesc td;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
142
9713
c94f47f48e76 (svn r13826) -Codechange: use 'INVALID_DATE' instead of '0' as placeholder in tile description
smatz <smatz@openttd.org>
parents: 9693
diff changeset
143 td.build_date = INVALID_DATE;
9322
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
144
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
145 /* Most tiles have only one owner, but
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
146 * - drivethrough roadstops can be build on town owned roads (up to 2 owners) and
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
147 * - roads can have up to four owners (railroad, road, tram, 3rd-roadtype "highway").
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
148 */
11730
a39da1e4c1f5 (svn r16118) -Change/cleanup: remove the hexadecimal 'in TTD the string had this ID' from 'some' strings and replace the string name with something more sensible.
rubidium <rubidium@openttd.org>
parents: 11702
diff changeset
149 td.owner_type[0] = STR_LAND_AREA_INFORMATION_OWNER; // At least one owner is displayed, though it might be "N/A".
9322
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
150 td.owner_type[1] = STR_NULL; // STR_NULL results in skipping the owner
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
151 td.owner_type[2] = STR_NULL;
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
152 td.owner_type[3] = STR_NULL;
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
153 td.owner[0] = OWNER_NONE;
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
154 td.owner[1] = OWNER_NONE;
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
155 td.owner[2] = OWNER_NONE;
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
156 td.owner[3] = OWNER_NONE;
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
157
9714
cb9766ae1255 (svn r13830) -Feature: show additional NewGRF info in the Tile Info window for stations, houses and industries
smatz <smatz@openttd.org>
parents: 9713
diff changeset
158 td.station_class = STR_NULL;
cb9766ae1255 (svn r13830) -Feature: show additional NewGRF info in the Tile Info window for stations, houses and industries
smatz <smatz@openttd.org>
parents: 9713
diff changeset
159 td.station_name = STR_NULL;
cb9766ae1255 (svn r13830) -Feature: show additional NewGRF info in the Tile Info window for stations, houses and industries
smatz <smatz@openttd.org>
parents: 9713
diff changeset
160
cb9766ae1255 (svn r13830) -Feature: show additional NewGRF info in the Tile Info window for stations, houses and industries
smatz <smatz@openttd.org>
parents: 9713
diff changeset
161 td.grf = NULL;
cb9766ae1255 (svn r13830) -Feature: show additional NewGRF info in the Tile Info window for stations, houses and industries
smatz <smatz@openttd.org>
parents: 9713
diff changeset
162
12261
c42d8d239142 (svn r16676) -Codechange: Rename AcceptedCargo to CargoArray and its instances to more meaningful names.
frosch <frosch@openttd.org>
parents: 12244
diff changeset
163 CargoArray acceptance;
12946
560c26f15688 (svn r17439) -Fix (r17436): you weren't paid for cargo delivered to houses and headquarters anymore
smatz <smatz@openttd.org>
parents: 12927
diff changeset
164 AddAcceptedCargo(tile, acceptance, NULL);
9155
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
165 GetTileDesc(tile, &td);
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
166
9322
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
167 uint line_nr = 0;
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
168
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
169 /* Tiletype */
9155
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
170 SetDParam(0, td.dparam[0]);
9322
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
171 GetString(this->landinfo_data[line_nr], td.str, lastof(this->landinfo_data[line_nr]));
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
172 line_nr++;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
173
9322
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
174 /* Up to four owners */
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
175 for (uint i = 0; i < 4; i++) {
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
176 if (td.owner_type[i] == STR_NULL) continue;
9155
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
177
11730
a39da1e4c1f5 (svn r16118) -Change/cleanup: remove the hexadecimal 'in TTD the string had this ID' from 'some' strings and replace the string name with something more sensible.
rubidium <rubidium@openttd.org>
parents: 11702
diff changeset
178 SetDParam(0, STR_LAND_AREA_INFORMATION_OWNER_N_A);
9322
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
179 if (td.owner[i] != OWNER_NONE && td.owner[i] != OWNER_WATER) GetNameOfOwner(td.owner[i], tile);
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
180 GetString(this->landinfo_data[line_nr], td.owner_type[i], lastof(this->landinfo_data[line_nr]));
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
181 line_nr++;
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
182 }
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
183
10497
b15aa92d60c9 (svn r14752) -Fix [FS#2438]: revenue when clearing land would show up in red in the land info window as negative cost.
rubidium <rubidium@openttd.org>
parents: 10426
diff changeset
184 /* Cost to clear/revenue when cleared */
11730
a39da1e4c1f5 (svn r16118) -Change/cleanup: remove the hexadecimal 'in TTD the string had this ID' from 'some' strings and replace the string name with something more sensible.
rubidium <rubidium@openttd.org>
parents: 11702
diff changeset
185 StringID str = STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A;
11955
734fb1a3d241 (svn r16359) -Codechange: don't abuse company 0 when determining 'cost to clear land' in the LandInfoWindow
smatz <smatz@openttd.org>
parents: 11924
diff changeset
186 Company *c = Company::GetIfValid(_local_company);
734fb1a3d241 (svn r16359) -Codechange: don't abuse company 0 when determining 'cost to clear land' in the LandInfoWindow
smatz <smatz@openttd.org>
parents: 11924
diff changeset
187 if (c != NULL) {
734fb1a3d241 (svn r16359) -Codechange: don't abuse company 0 when determining 'cost to clear land' in the LandInfoWindow
smatz <smatz@openttd.org>
parents: 11924
diff changeset
188 Money old_money = c->money;
734fb1a3d241 (svn r16359) -Codechange: don't abuse company 0 when determining 'cost to clear land' in the LandInfoWindow
smatz <smatz@openttd.org>
parents: 11924
diff changeset
189 c->money = INT64_MAX;
734fb1a3d241 (svn r16359) -Codechange: don't abuse company 0 when determining 'cost to clear land' in the LandInfoWindow
smatz <smatz@openttd.org>
parents: 11924
diff changeset
190 CommandCost costclear = DoCommand(tile, 0, 0, DC_NONE, CMD_LANDSCAPE_CLEAR);
734fb1a3d241 (svn r16359) -Codechange: don't abuse company 0 when determining 'cost to clear land' in the LandInfoWindow
smatz <smatz@openttd.org>
parents: 11924
diff changeset
191 c->money = old_money;
14314
60d313b887b8 (svn r18866) -Codechange: remove the CmdFailed(ret)/CmdSucceeded(ret) wrapper functions
rubidium <rubidium@openttd.org>
parents: 14258
diff changeset
192 if (costclear.Succeeded()) {
11955
734fb1a3d241 (svn r16359) -Codechange: don't abuse company 0 when determining 'cost to clear land' in the LandInfoWindow
smatz <smatz@openttd.org>
parents: 11924
diff changeset
193 Money cost = costclear.GetCost();
734fb1a3d241 (svn r16359) -Codechange: don't abuse company 0 when determining 'cost to clear land' in the LandInfoWindow
smatz <smatz@openttd.org>
parents: 11924
diff changeset
194 if (cost < 0) {
734fb1a3d241 (svn r16359) -Codechange: don't abuse company 0 when determining 'cost to clear land' in the LandInfoWindow
smatz <smatz@openttd.org>
parents: 11924
diff changeset
195 cost = -cost; // Negate negative cost to a positive revenue
12632
e41943276802 (svn r17075) -Codechange: rename ~750 strings to be more uniform with their relatives
rubidium <rubidium@openttd.org>
parents: 12619
diff changeset
196 str = STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED;
11955
734fb1a3d241 (svn r16359) -Codechange: don't abuse company 0 when determining 'cost to clear land' in the LandInfoWindow
smatz <smatz@openttd.org>
parents: 11924
diff changeset
197 } else {
734fb1a3d241 (svn r16359) -Codechange: don't abuse company 0 when determining 'cost to clear land' in the LandInfoWindow
smatz <smatz@openttd.org>
parents: 11924
diff changeset
198 str = STR_LAND_AREA_INFORMATION_COST_TO_CLEAR;
734fb1a3d241 (svn r16359) -Codechange: don't abuse company 0 when determining 'cost to clear land' in the LandInfoWindow
smatz <smatz@openttd.org>
parents: 11924
diff changeset
199 }
734fb1a3d241 (svn r16359) -Codechange: don't abuse company 0 when determining 'cost to clear land' in the LandInfoWindow
smatz <smatz@openttd.org>
parents: 11924
diff changeset
200 SetDParam(0, cost);
10497
b15aa92d60c9 (svn r14752) -Fix [FS#2438]: revenue when clearing land would show up in red in the land info window as negative cost.
rubidium <rubidium@openttd.org>
parents: 10426
diff changeset
201 }
9155
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
202 }
9322
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
203 GetString(this->landinfo_data[line_nr], str, lastof(this->landinfo_data[line_nr]));
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
204 line_nr++;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
205
9322
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
206 /* Location */
9648
b53049484e44 (svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.
rubidium <rubidium@openttd.org>
parents: 9572
diff changeset
207 char tmp[16];
b53049484e44 (svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.
rubidium <rubidium@openttd.org>
parents: 9572
diff changeset
208 snprintf(tmp, lengthof(tmp), "0x%.4X", tile);
9155
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
209 SetDParam(0, TileX(tile));
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
210 SetDParam(1, TileY(tile));
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
211 SetDParam(2, TileHeight(tile));
9648
b53049484e44 (svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.
rubidium <rubidium@openttd.org>
parents: 9572
diff changeset
212 SetDParamStr(3, tmp);
12632
e41943276802 (svn r17075) -Codechange: rename ~750 strings to be more uniform with their relatives
rubidium <rubidium@openttd.org>
parents: 12619
diff changeset
213 GetString(this->landinfo_data[line_nr], STR_LAND_AREA_INFORMATION_LANDINFO_COORDS, lastof(this->landinfo_data[line_nr]));
9322
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
214 line_nr++;
9155
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
215
9322
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
216 /* Local authority */
11730
a39da1e4c1f5 (svn r16118) -Change/cleanup: remove the hexadecimal 'in TTD the string had this ID' from 'some' strings and replace the string name with something more sensible.
rubidium <rubidium@openttd.org>
parents: 11702
diff changeset
217 SetDParam(0, STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE);
11972
fd10870d74d4 (svn r16378) -Codechange: replace OldPool with simpler Pool. Compilation time, binary size and run time (with asserts disabled) should be improved
smatz <smatz@openttd.org>
parents: 11955
diff changeset
218 if (t != NULL) {
12452
499dee1c27b6 (svn r16886) -Codechange: unify naming of some string IDs related to string codes and group them logically
rubidium <rubidium@openttd.org>
parents: 12415
diff changeset
219 SetDParam(0, STR_TOWN_NAME);
9155
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
220 SetDParam(1, t->index);
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
221 }
11730
a39da1e4c1f5 (svn r16118) -Change/cleanup: remove the hexadecimal 'in TTD the string had this ID' from 'some' strings and replace the string name with something more sensible.
rubidium <rubidium@openttd.org>
parents: 11702
diff changeset
222 GetString(this->landinfo_data[line_nr], STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY, lastof(this->landinfo_data[line_nr]));
9322
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
223 line_nr++;
9155
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
224
9322
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
225 /* Build date */
9713
c94f47f48e76 (svn r13826) -Codechange: use 'INVALID_DATE' instead of '0' as placeholder in tile description
smatz <smatz@openttd.org>
parents: 9693
diff changeset
226 if (td.build_date != INVALID_DATE) {
9322
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
227 SetDParam(0, td.build_date);
12632
e41943276802 (svn r17075) -Codechange: rename ~750 strings to be more uniform with their relatives
rubidium <rubidium@openttd.org>
parents: 12619
diff changeset
228 GetString(this->landinfo_data[line_nr], STR_LAND_AREA_INFORMATION_BUILD_DATE, lastof(this->landinfo_data[line_nr]));
9322
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
229 line_nr++;
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
230 }
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
231
9714
cb9766ae1255 (svn r13830) -Feature: show additional NewGRF info in the Tile Info window for stations, houses and industries
smatz <smatz@openttd.org>
parents: 9713
diff changeset
232 /* Station class */
cb9766ae1255 (svn r13830) -Feature: show additional NewGRF info in the Tile Info window for stations, houses and industries
smatz <smatz@openttd.org>
parents: 9713
diff changeset
233 if (td.station_class != STR_NULL) {
cb9766ae1255 (svn r13830) -Feature: show additional NewGRF info in the Tile Info window for stations, houses and industries
smatz <smatz@openttd.org>
parents: 9713
diff changeset
234 SetDParam(0, td.station_class);
12632
e41943276802 (svn r17075) -Codechange: rename ~750 strings to be more uniform with their relatives
rubidium <rubidium@openttd.org>
parents: 12619
diff changeset
235 GetString(this->landinfo_data[line_nr], STR_LAND_AREA_INFORMATION_STATION_CLASS, lastof(this->landinfo_data[line_nr]));
9714
cb9766ae1255 (svn r13830) -Feature: show additional NewGRF info in the Tile Info window for stations, houses and industries
smatz <smatz@openttd.org>
parents: 9713
diff changeset
236 line_nr++;
cb9766ae1255 (svn r13830) -Feature: show additional NewGRF info in the Tile Info window for stations, houses and industries
smatz <smatz@openttd.org>
parents: 9713
diff changeset
237 }
cb9766ae1255 (svn r13830) -Feature: show additional NewGRF info in the Tile Info window for stations, houses and industries
smatz <smatz@openttd.org>
parents: 9713
diff changeset
238
cb9766ae1255 (svn r13830) -Feature: show additional NewGRF info in the Tile Info window for stations, houses and industries
smatz <smatz@openttd.org>
parents: 9713
diff changeset
239 /* Station type name */
cb9766ae1255 (svn r13830) -Feature: show additional NewGRF info in the Tile Info window for stations, houses and industries
smatz <smatz@openttd.org>
parents: 9713
diff changeset
240 if (td.station_name != STR_NULL) {
cb9766ae1255 (svn r13830) -Feature: show additional NewGRF info in the Tile Info window for stations, houses and industries
smatz <smatz@openttd.org>
parents: 9713
diff changeset
241 SetDParam(0, td.station_name);
12632
e41943276802 (svn r17075) -Codechange: rename ~750 strings to be more uniform with their relatives
rubidium <rubidium@openttd.org>
parents: 12619
diff changeset
242 GetString(this->landinfo_data[line_nr], STR_LAND_AREA_INFORMATION_STATION_TYPE, lastof(this->landinfo_data[line_nr]));
9714
cb9766ae1255 (svn r13830) -Feature: show additional NewGRF info in the Tile Info window for stations, houses and industries
smatz <smatz@openttd.org>
parents: 9713
diff changeset
243 line_nr++;
cb9766ae1255 (svn r13830) -Feature: show additional NewGRF info in the Tile Info window for stations, houses and industries
smatz <smatz@openttd.org>
parents: 9713
diff changeset
244 }
cb9766ae1255 (svn r13830) -Feature: show additional NewGRF info in the Tile Info window for stations, houses and industries
smatz <smatz@openttd.org>
parents: 9713
diff changeset
245
cb9766ae1255 (svn r13830) -Feature: show additional NewGRF info in the Tile Info window for stations, houses and industries
smatz <smatz@openttd.org>
parents: 9713
diff changeset
246 /* NewGRF name */
cb9766ae1255 (svn r13830) -Feature: show additional NewGRF info in the Tile Info window for stations, houses and industries
smatz <smatz@openttd.org>
parents: 9713
diff changeset
247 if (td.grf != NULL) {
cb9766ae1255 (svn r13830) -Feature: show additional NewGRF info in the Tile Info window for stations, houses and industries
smatz <smatz@openttd.org>
parents: 9713
diff changeset
248 SetDParamStr(0, td.grf);
12632
e41943276802 (svn r17075) -Codechange: rename ~750 strings to be more uniform with their relatives
rubidium <rubidium@openttd.org>
parents: 12619
diff changeset
249 GetString(this->landinfo_data[line_nr], STR_LAND_AREA_INFORMATION_NEWGRF_NAME, lastof(this->landinfo_data[line_nr]));
9714
cb9766ae1255 (svn r13830) -Feature: show additional NewGRF info in the Tile Info window for stations, houses and industries
smatz <smatz@openttd.org>
parents: 9713
diff changeset
250 line_nr++;
cb9766ae1255 (svn r13830) -Feature: show additional NewGRF info in the Tile Info window for stations, houses and industries
smatz <smatz@openttd.org>
parents: 9713
diff changeset
251 }
cb9766ae1255 (svn r13830) -Feature: show additional NewGRF info in the Tile Info window for stations, houses and industries
smatz <smatz@openttd.org>
parents: 9713
diff changeset
252
cb9766ae1255 (svn r13830) -Feature: show additional NewGRF info in the Tile Info window for stations, houses and industries
smatz <smatz@openttd.org>
parents: 9713
diff changeset
253 assert(line_nr < LAND_INFO_CENTERED_LINES);
cb9766ae1255 (svn r13830) -Feature: show additional NewGRF info in the Tile Info window for stations, houses and industries
smatz <smatz@openttd.org>
parents: 9713
diff changeset
254
9572
7c23a341f695 (svn r13601) -Codechange: resize the Tile Info window when it is needed, make it better readable
smatz <smatz@openttd.org>
parents: 9441
diff changeset
255 /* Mark last line empty */
7c23a341f695 (svn r13601) -Codechange: resize the Tile Info window when it is needed, make it better readable
smatz <smatz@openttd.org>
parents: 9441
diff changeset
256 this->landinfo_data[line_nr][0] = '\0';
9322
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
257
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
258 /* Cargo acceptance is displayed in a extra multiline */
11730
a39da1e4c1f5 (svn r16118) -Change/cleanup: remove the hexadecimal 'in TTD the string had this ID' from 'some' strings and replace the string name with something more sensible.
rubidium <rubidium@openttd.org>
parents: 11702
diff changeset
259 char *strp = GetString(this->landinfo_data[LAND_INFO_MULTICENTER_LINE], STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED, lastof(this->landinfo_data[LAND_INFO_MULTICENTER_LINE]));
9155
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
260 bool found = false;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
261
9155
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
262 for (CargoID i = 0; i < NUM_CARGO; ++i) {
12261
c42d8d239142 (svn r16676) -Codechange: Rename AcceptedCargo to CargoArray and its instances to more meaningful names.
frosch <frosch@openttd.org>
parents: 12244
diff changeset
263 if (acceptance[i] > 0) {
9155
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
264 /* Add a comma between each item. */
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
265 if (found) {
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
266 *strp++ = ',';
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
267 *strp++ = ' ';
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
268 }
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
269 found = true;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
270
9155
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
271 /* If the accepted value is less than 8, show it in 1/8:ths */
12261
c42d8d239142 (svn r16676) -Codechange: Rename AcceptedCargo to CargoArray and its instances to more meaningful names.
frosch <frosch@openttd.org>
parents: 12244
diff changeset
272 if (acceptance[i] < 8) {
c42d8d239142 (svn r16676) -Codechange: Rename AcceptedCargo to CargoArray and its instances to more meaningful names.
frosch <frosch@openttd.org>
parents: 12244
diff changeset
273 SetDParam(0, acceptance[i]);
12415
6a77d1df56e2 (svn r16849) -Codechange: replace GetCargo() by CargoSpec::Get()
smatz <smatz@openttd.org>
parents: 12365
diff changeset
274 SetDParam(1, CargoSpec::Get(i)->name);
11730
a39da1e4c1f5 (svn r16118) -Change/cleanup: remove the hexadecimal 'in TTD the string had this ID' from 'some' strings and replace the string name with something more sensible.
rubidium <rubidium@openttd.org>
parents: 11702
diff changeset
275 strp = GetString(strp, STR_LAND_AREA_INFORMATION_CARGO_EIGHTS, lastof(this->landinfo_data[LAND_INFO_MULTICENTER_LINE]));
9155
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
276 } else {
12415
6a77d1df56e2 (svn r16849) -Codechange: replace GetCargo() by CargoSpec::Get()
smatz <smatz@openttd.org>
parents: 12365
diff changeset
277 strp = GetString(strp, CargoSpec::Get(i)->name, lastof(this->landinfo_data[LAND_INFO_MULTICENTER_LINE]));
9155
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
278 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
279 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
280 }
9322
258ab31489e0 (svn r13206) -Feature(ette): Display all owners of a tile in the tile-info-window.
frosch <frosch@openttd.org>
parents: 9319
diff changeset
281 if (!found) this->landinfo_data[LAND_INFO_MULTICENTER_LINE][0] = '\0';
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
282
12834
f828651d0be0 (svn r17324) -Codechange: Land info window uses nested widget tree
Yexo <Yexo@openttd.org>
parents: 12821
diff changeset
283 this->InitNested(&_land_info_desc);
9572
7c23a341f695 (svn r13601) -Codechange: resize the Tile Info window when it is needed, make it better readable
smatz <smatz@openttd.org>
parents: 9441
diff changeset
284
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
285 #if defined(_DEBUG)
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
286 # define LANDINFOD_LEVEL 0
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
287 #else
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
288 # define LANDINFOD_LEVEL 1
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
289 #endif
9155
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
290 DEBUG(misc, LANDINFOD_LEVEL, "TILE: %#x (%i,%i)", tile, TileX(tile), TileY(tile));
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
291 DEBUG(misc, LANDINFOD_LEVEL, "type_height = %#x", _m[tile].type_height);
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
292 DEBUG(misc, LANDINFOD_LEVEL, "m1 = %#x", _m[tile].m1);
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
293 DEBUG(misc, LANDINFOD_LEVEL, "m2 = %#x", _m[tile].m2);
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
294 DEBUG(misc, LANDINFOD_LEVEL, "m3 = %#x", _m[tile].m3);
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
295 DEBUG(misc, LANDINFOD_LEVEL, "m4 = %#x", _m[tile].m4);
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
296 DEBUG(misc, LANDINFOD_LEVEL, "m5 = %#x", _m[tile].m5);
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
297 DEBUG(misc, LANDINFOD_LEVEL, "m6 = %#x", _m[tile].m6);
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
298 DEBUG(misc, LANDINFOD_LEVEL, "m7 = %#x", _me[tile].m7);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
299 #undef LANDINFOD_LEVEL
9155
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
300 }
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
301 };
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
302
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
303 static void Place_LandInfo(TileIndex tile)
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
304 {
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
305 DeleteWindowById(WC_LAND_INFO, 0);
bb7dd4c8ed68 (svn r13018) -Codechange: make a class of the LandInfo Window.
rubidium <rubidium@openttd.org>
parents: 9153
diff changeset
306 new LandInfoWindow(tile);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
307 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
308
6247
57363e064324 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium <rubidium@openttd.org>
parents: 6239
diff changeset
309 void PlaceLandBlockInfo()
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
310 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
311 if (_cursor.sprite == SPR_CURSOR_QUERY) {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
312 ResetObjectToPlace();
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
313 } else {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
314 _place_proc = Place_LandInfo;
11702
cdaad565efe5 (svn r16088) -Codechange: merge HighLightStyle and ViewportHighlightMode as they are basically the same thing
rubidium <rubidium@openttd.org>
parents: 11653
diff changeset
315 SetObjectToPlace(SPR_CURSOR_QUERY, PAL_NONE, HT_RECT, WC_MAIN_TOOLBAR, 0);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
316 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
317 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
318
11429
8a62e44e06a1 (svn r15787) -Codechange: enumify the land info and about window widgets and use them.
rubidium <rubidium@openttd.org>
parents: 11427
diff changeset
319 /** Widgets for the land info window. */
8a62e44e06a1 (svn r15787) -Codechange: enumify the land info and about window widgets and use them.
rubidium <rubidium@openttd.org>
parents: 11427
diff changeset
320 enum AboutWidgets {
13670
2e7ff39e2ec6 (svn r18195) -Codechange: move the child padding calculation/handling to WWT_FRAME
rubidium <rubidium@openttd.org>
parents: 13647
diff changeset
321 AW_SCROLLING_TEXT, ///< The actually scrolling text
12820
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
322 AW_WEBSITE, ///< URL of OpenTTD website
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
323 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
324
11653
50cfe1ce7e28 (svn r16033) -Codechange: Added nested widgets to about window, land-info window, and both query windows.
alberth <alberth@openttd.org>
parents: 11652
diff changeset
325 static const NWidgetPart _nested_about_widgets[] = {
50cfe1ce7e28 (svn r16033) -Codechange: Added nested widgets to about window, land-info window, and both query windows.
alberth <alberth@openttd.org>
parents: 11652
diff changeset
326 NWidget(NWID_HORIZONTAL),
13752
517d77f53919 (svn r18277) -Codechange: remove unneeded widget indices for close, resize and sticky boxes and for window captions
rubidium <rubidium@openttd.org>
parents: 13749
diff changeset
327 NWidget(WWT_CLOSEBOX, COLOUR_GREY),
517d77f53919 (svn r18277) -Codechange: remove unneeded widget indices for close, resize and sticky boxes and for window captions
rubidium <rubidium@openttd.org>
parents: 13749
diff changeset
328 NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(STR_ABOUT_OPENTTD, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
11653
50cfe1ce7e28 (svn r16033) -Codechange: Added nested widgets to about window, land-info window, and both query windows.
alberth <alberth@openttd.org>
parents: 11652
diff changeset
329 EndContainer(),
13755
bf8a4ced15fe (svn r18280) -Codechange: remove widget indices that are not needed for custom drawing/handling input
rubidium <rubidium@openttd.org>
parents: 13752
diff changeset
330 NWidget(WWT_PANEL, COLOUR_GREY), SetPIP(4, 2, 4),
13797
5a6ed547542b (svn r18323) -Fix [FS#3330]: credits were drawn on the border of the window
rubidium <rubidium@openttd.org>
parents: 13796
diff changeset
331 NWidget(WWT_LABEL, COLOUR_GREY), SetDataTip(STR_ABOUT_ORIGINAL_COPYRIGHT, STR_NULL),
5a6ed547542b (svn r18323) -Fix [FS#3330]: credits were drawn on the border of the window
rubidium <rubidium@openttd.org>
parents: 13796
diff changeset
332 NWidget(WWT_LABEL, COLOUR_GREY), SetDataTip(STR_ABOUT_VERSION, STR_NULL),
13755
bf8a4ced15fe (svn r18280) -Codechange: remove widget indices that are not needed for custom drawing/handling input
rubidium <rubidium@openttd.org>
parents: 13752
diff changeset
333 NWidget(WWT_FRAME, COLOUR_GREY), SetPadding(0, 5, 1, 5),
13670
2e7ff39e2ec6 (svn r18195) -Codechange: move the child padding calculation/handling to WWT_FRAME
rubidium <rubidium@openttd.org>
parents: 13647
diff changeset
334 NWidget(WWT_EMPTY, INVALID_COLOUR, AW_SCROLLING_TEXT),
2e7ff39e2ec6 (svn r18195) -Codechange: move the child padding calculation/handling to WWT_FRAME
rubidium <rubidium@openttd.org>
parents: 13647
diff changeset
335 EndContainer(),
13797
5a6ed547542b (svn r18323) -Fix [FS#3330]: credits were drawn on the border of the window
rubidium <rubidium@openttd.org>
parents: 13796
diff changeset
336 NWidget(WWT_LABEL, COLOUR_GREY, AW_WEBSITE), SetDataTip(STR_BLACK_RAW_STRING, STR_NULL),
5a6ed547542b (svn r18323) -Fix [FS#3330]: credits were drawn on the border of the window
rubidium <rubidium@openttd.org>
parents: 13796
diff changeset
337 NWidget(WWT_LABEL, COLOUR_GREY), SetDataTip(STR_ABOUT_COPYRIGHT_OPENTTD, STR_NULL),
11653
50cfe1ce7e28 (svn r16033) -Codechange: Added nested widgets to about window, land-info window, and both query windows.
alberth <alberth@openttd.org>
parents: 11652
diff changeset
338 EndContainer(),
50cfe1ce7e28 (svn r16033) -Codechange: Added nested widgets to about window, land-info window, and both query windows.
alberth <alberth@openttd.org>
parents: 11652
diff changeset
339 };
50cfe1ce7e28 (svn r16033) -Codechange: Added nested widgets to about window, land-info window, and both query windows.
alberth <alberth@openttd.org>
parents: 11652
diff changeset
340
11373
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11369
diff changeset
341 static const WindowDesc _about_desc(
13796
3e68f07eb821 (svn r18322) -Codechange: remove the WDP duplication; no need to tell the same twice.
rubidium <rubidium@openttd.org>
parents: 13792
diff changeset
342 WDP_CENTER, 0, 0,
5893
8547517ef719 (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium <rubidium@openttd.org>
parents: 5750
diff changeset
343 WC_GAME_OPTIONS, WC_NONE,
13749
fc3ab8256c95 (svn r18274) -Codechange: remove the unused WDF flags
rubidium <rubidium@openttd.org>
parents: 13705
diff changeset
344 0,
13564
bae287664b02 (svn r18086) -Codechange: remove 'widget' from WindowDesc
rubidium <rubidium@openttd.org>
parents: 13478
diff changeset
345 _nested_about_widgets, lengthof(_nested_about_widgets)
11373
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11369
diff changeset
346 );
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
347
13096
e3e4c1648e0c (svn r17596) -Codechange: constify some tables
smatz <smatz@openttd.org>
parents: 13072
diff changeset
348 static const char * const _credits[] = {
12820
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
349 "Original design by Chris Sawyer",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
350 "Original graphics by Simon Foster",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
351 "",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
352 "The OpenTTD team (in alphabetical order):",
13587
f5704f568df1 (svn r18111) -Change: One more developer added to the history of OpenTTD.
alberth <alberth@openttd.org>
parents: 13580
diff changeset
353 " Albert Hofkamp (Alberth) - GUI expert",
14450
94d7ee68af4e (svn r19007) -Prepare: 1.0.0-beta4
rubidium <rubidium@openttd.org>
parents: 14441
diff changeset
354 " Jean-Fran\xC3\xA7ois Claeys (Belugas) - GUI, newindustries and more",
12820
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
355 " Matthijs Kooijman (blathijs) - Pathfinder-guru, pool rework",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
356 " Christoph Elsenhans (frosch) - General coding",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
357 " Lo\xC3\xAF""c Guilloux (glx) - Windows Expert",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
358 " Michael Lutz (michi_cc) - Path based signals",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
359 " Owen Rudge (orudge) - Forum host, OS/2 port",
14441
ccb369c0139e (svn r18998) -Update: the credits
rubidium <rubidium@openttd.org>
parents: 14409
diff changeset
360 " Peter Nelson (peter1138) - Spiritual descendant from NewGRF gods",
12820
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
361 " Remko Bijker (Rubidium) - Lead coder and way more",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
362 " Zden\xC4\x9Bk Sojka (SmatZ) - Bug finder and fixer",
14441
ccb369c0139e (svn r18998) -Update: the credits
rubidium <rubidium@openttd.org>
parents: 14409
diff changeset
363 " Jos\xC3\xA9 Soler (Terkhen) - General coding",
12820
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
364 " Thijs Marinussen (Yexo) - AI Framework",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
365 "",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
366 "Inactive Developers:",
14441
ccb369c0139e (svn r18998) -Update: the credits
rubidium <rubidium@openttd.org>
parents: 14409
diff changeset
367 " Bjarni Corfitzen (Bjarni) - MacOSX port, coder and vehicles",
ccb369c0139e (svn r18998) -Update: the credits
rubidium <rubidium@openttd.org>
parents: 14409
diff changeset
368 " Victor Fischer (Celestar) - Programming everywhere you need him to",
12820
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
369 " Tam\xC3\xA1s Farag\xC3\xB3 (Darkvater) - Ex-Lead coder",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
370 " Jaroslav Mazanec (KUDr) - YAPG (Yet Another Pathfinder God) ;)",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
371 " Jonathan Coome (Maedhros) - High priest of the NewGRF Temple",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
372 " Attila B\xC3\xA1n (MiHaMiX) - Developer WebTranslator 1 and 2",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
373 " Christoph Mallon (Tron) - Programmer, code correctness police",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
374 "",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
375 "Retired Developers:",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
376 " Ludvig Strigeus (ludde) - OpenTTD author, main coder (0.1 - 0.3.3)",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
377 " Serge Paquet (vurlix) - Assistant project manager, coder (0.1 - 0.3.3)",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
378 " Dominik Scherer (dominik81) - Lead programmer, GUI expert (0.3.0 - 0.3.6)",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
379 " Benedikt Br\xC3\xBCggemeier (skidd13) - Bug fixer and code reworker",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
380 " Patric Stout (TrueLight) - Programmer (0.3 - pre0.7), sys op (active)",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
381 "",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
382 "Special thanks go out to:",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
383 " Josef Drexler - For his great work on TTDPatch",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
384 " Marcin Grzegorczyk - For his documentation of TTD internals",
13063
d6196415e66a (svn r17561) -Fix: diacritics was missing at few places
smatz <smatz@openttd.org>
parents: 13034
diff changeset
385 " Petr Baudi\xC5\xA1 (pasky) - Many patches, newGRF support",
12820
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
386 " Stefan Mei\xC3\x9Fner (sign_de) - For his work on the console",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
387 " Simon Sasburg (HackyKid) - Many bugfixes he has blessed us with",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
388 " Cian Duffy (MYOB) - BeOS port / manual writing",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
389 " Christian Rosentreter (tokai) - MorphOS / AmigaOS port",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
390 " Richard Kempton (richK) - additional airports, initial TGP implementation",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
391 "",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
392 " Alberto Demichelis - Squirrel scripting language \xC2\xA9 2003-2008",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
393 " L. Peter Deutsch - MD5 implementation \xC2\xA9 1999, 2000, 2002",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
394 " Michael Blunck - Pre-Signals and Semaphores \xC2\xA9 2003",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
395 " George - Canal/Lock graphics \xC2\xA9 2003-2004",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
396 " David Dallaston - Tram tracks",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
397 " Marcin Grzegorczyk - Foundations for Tracks on Slopes",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
398 " All Translators - Who made OpenTTD a truly international game",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
399 " Bug Reporters - Without whom OpenTTD would still be full of bugs!",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
400 "",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
401 "",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
402 "And last but not least:",
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
403 " Chris Sawyer - For an amazing game!"
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
404 };
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
405
9227
35dbb597e9fd (svn r13093) -Codechange: make a class of AboutWindow.
glx <glx@openttd.org>
parents: 9226
diff changeset
406 struct AboutWindow : public Window {
12820
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
407 int text_position; ///< The top of the scrolling text
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
408 byte counter; ///< Used to scroll the text every 5 ticks
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
409 int line_height; ///< The height of a single line
12867
00a4b1fd0faf (svn r17359) -Fix: put static before cv qualifier, some compilers complain about that
smatz <smatz@openttd.org>
parents: 12856
diff changeset
410 static const int num_visible_lines = 19; ///< The number of lines visible simultaneously
12820
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
411
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
412 AboutWindow() : Window()
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
413 {
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
414 this->InitNested(&_about_desc);
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
415
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
416 this->counter = 5;
13670
2e7ff39e2ec6 (svn r18195) -Codechange: move the child padding calculation/handling to WWT_FRAME
rubidium <rubidium@openttd.org>
parents: 13647
diff changeset
417 this->text_position = this->GetWidget<NWidgetBase>(AW_SCROLLING_TEXT)->pos_y + this->GetWidget<NWidgetBase>(AW_SCROLLING_TEXT)->current_y;
12820
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
418 }
9227
35dbb597e9fd (svn r13093) -Codechange: make a class of AboutWindow.
glx <glx@openttd.org>
parents: 9226
diff changeset
419
12820
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
420 virtual void SetStringParameters(int widget) const
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
421 {
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
422 if (widget == AW_WEBSITE) SetDParamStr(0, "Website: http://www.openttd.org");
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
423 }
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
424
13705
8dee47e001b2 (svn r18230) -Codechange: Allow fill stepsize to be set from Window::UpdateWidgetSize().
alberth <alberth@openttd.org>
parents: 13704
diff changeset
425 virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
9227
35dbb597e9fd (svn r13093) -Codechange: make a class of AboutWindow.
glx <glx@openttd.org>
parents: 9226
diff changeset
426 {
13670
2e7ff39e2ec6 (svn r18195) -Codechange: move the child padding calculation/handling to WWT_FRAME
rubidium <rubidium@openttd.org>
parents: 13647
diff changeset
427 if (widget != AW_SCROLLING_TEXT) return;
12820
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
428
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
429 this->line_height = FONT_HEIGHT_NORMAL;
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
430
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
431 Dimension d;
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
432 d.height = this->line_height * num_visible_lines;
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
433
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
434 d.width = 0;
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
435 for (uint i = 0; i < lengthof(_credits); i++) {
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
436 d.width = max(d.width, GetStringBoundingBox(_credits[i]).width);
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
437 }
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
438 *size = maxdim(*size, d);
9227
35dbb597e9fd (svn r13093) -Codechange: make a class of AboutWindow.
glx <glx@openttd.org>
parents: 9226
diff changeset
439 }
35dbb597e9fd (svn r13093) -Codechange: make a class of AboutWindow.
glx <glx@openttd.org>
parents: 9226
diff changeset
440
35dbb597e9fd (svn r13093) -Codechange: make a class of AboutWindow.
glx <glx@openttd.org>
parents: 9226
diff changeset
441 virtual void OnPaint()
35dbb597e9fd (svn r13093) -Codechange: make a class of AboutWindow.
glx <glx@openttd.org>
parents: 9226
diff changeset
442 {
12820
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
443 this->DrawWidgets();
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
444 }
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
445
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
446 virtual void DrawWidget(const Rect &r, int widget) const
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
447 {
13670
2e7ff39e2ec6 (svn r18195) -Codechange: move the child padding calculation/handling to WWT_FRAME
rubidium <rubidium@openttd.org>
parents: 13647
diff changeset
448 if (widget != AW_SCROLLING_TEXT) return;
9227
35dbb597e9fd (svn r13093) -Codechange: make a class of AboutWindow.
glx <glx@openttd.org>
parents: 9226
diff changeset
449
12820
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
450 int y = this->text_position;
9227
35dbb597e9fd (svn r13093) -Codechange: make a class of AboutWindow.
glx <glx@openttd.org>
parents: 9226
diff changeset
451
12820
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
452 /* Show all scrolling _credits */
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
453 for (uint i = 0; i < lengthof(_credits); i++) {
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
454 if (y >= r.top + 7 && y < r.bottom - this->line_height) {
13670
2e7ff39e2ec6 (svn r18195) -Codechange: move the child padding calculation/handling to WWT_FRAME
rubidium <rubidium@openttd.org>
parents: 13647
diff changeset
455 DrawString(r.left, r.right, y, _credits[i], TC_BLACK, SA_LEFT | SA_FORCE);
9227
35dbb597e9fd (svn r13093) -Codechange: make a class of AboutWindow.
glx <glx@openttd.org>
parents: 9226
diff changeset
456 }
12820
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
457 y += this->line_height;
9227
35dbb597e9fd (svn r13093) -Codechange: make a class of AboutWindow.
glx <glx@openttd.org>
parents: 9226
diff changeset
458 }
35dbb597e9fd (svn r13093) -Codechange: make a class of AboutWindow.
glx <glx@openttd.org>
parents: 9226
diff changeset
459 }
35dbb597e9fd (svn r13093) -Codechange: make a class of AboutWindow.
glx <glx@openttd.org>
parents: 9226
diff changeset
460
35dbb597e9fd (svn r13093) -Codechange: make a class of AboutWindow.
glx <glx@openttd.org>
parents: 9226
diff changeset
461 virtual void OnTick()
35dbb597e9fd (svn r13093) -Codechange: make a class of AboutWindow.
glx <glx@openttd.org>
parents: 9226
diff changeset
462 {
35dbb597e9fd (svn r13093) -Codechange: make a class of AboutWindow.
glx <glx@openttd.org>
parents: 9226
diff changeset
463 if (--this->counter == 0) {
35dbb597e9fd (svn r13093) -Codechange: make a class of AboutWindow.
glx <glx@openttd.org>
parents: 9226
diff changeset
464 this->counter = 5;
12820
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
465 this->text_position--;
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
466 /* If the last text has scrolled start a new from the start */
13670
2e7ff39e2ec6 (svn r18195) -Codechange: move the child padding calculation/handling to WWT_FRAME
rubidium <rubidium@openttd.org>
parents: 13647
diff changeset
467 if (this->text_position < (int)(this->GetWidget<NWidgetBase>(AW_SCROLLING_TEXT)->pos_y - lengthof(_credits) * this->line_height)) {
2e7ff39e2ec6 (svn r18195) -Codechange: move the child padding calculation/handling to WWT_FRAME
rubidium <rubidium@openttd.org>
parents: 13647
diff changeset
468 this->text_position = this->GetWidget<NWidgetBase>(AW_SCROLLING_TEXT)->pos_y + this->GetWidget<NWidgetBase>(AW_SCROLLING_TEXT)->current_y;
12820
a8612d0074e8 (svn r17310) -Codechange: about window uses nested widget tree
yexo <yexo@openttd.org>
parents: 12819
diff changeset
469 }
9227
35dbb597e9fd (svn r13093) -Codechange: make a class of AboutWindow.
glx <glx@openttd.org>
parents: 9226
diff changeset
470 this->SetDirty();
35dbb597e9fd (svn r13093) -Codechange: make a class of AboutWindow.
glx <glx@openttd.org>
parents: 9226
diff changeset
471 }
35dbb597e9fd (svn r13093) -Codechange: make a class of AboutWindow.
glx <glx@openttd.org>
parents: 9226
diff changeset
472 }
35dbb597e9fd (svn r13093) -Codechange: make a class of AboutWindow.
glx <glx@openttd.org>
parents: 9226
diff changeset
473 };
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
474
6247
57363e064324 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium <rubidium@openttd.org>
parents: 6239
diff changeset
475 void ShowAboutWindow()
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
476 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
477 DeleteWindowById(WC_GAME_OPTIONS, 0);
9227
35dbb597e9fd (svn r13093) -Codechange: make a class of AboutWindow.
glx <glx@openttd.org>
parents: 9226
diff changeset
478 new AboutWindow();
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
479 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
480
11793
e11bc207c6e2 (svn r16183) -Fix [FS#2872]: wrong string alignment for error messages with face
rubidium <rubidium@openttd.org>
parents: 11792
diff changeset
481 /** Widgets of the error message windows */
e11bc207c6e2 (svn r16183) -Fix [FS#2872]: wrong string alignment for error messages with face
rubidium <rubidium@openttd.org>
parents: 11792
diff changeset
482 enum ErrorMessageWidgets {
e11bc207c6e2 (svn r16183) -Fix [FS#2872]: wrong string alignment for error messages with face
rubidium <rubidium@openttd.org>
parents: 11792
diff changeset
483 EMW_CAPTION,
e11bc207c6e2 (svn r16183) -Fix [FS#2872]: wrong string alignment for error messages with face
rubidium <rubidium@openttd.org>
parents: 11792
diff changeset
484 EMW_FACE,
e11bc207c6e2 (svn r16183) -Fix [FS#2872]: wrong string alignment for error messages with face
rubidium <rubidium@openttd.org>
parents: 11792
diff changeset
485 EMW_MESSAGE,
e11bc207c6e2 (svn r16183) -Fix [FS#2872]: wrong string alignment for error messages with face
rubidium <rubidium@openttd.org>
parents: 11792
diff changeset
486 };
e11bc207c6e2 (svn r16183) -Fix [FS#2872]: wrong string alignment for error messages with face
rubidium <rubidium@openttd.org>
parents: 11792
diff changeset
487
13422
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
488 static const NWidgetPart _nested_errmsg_widgets[] = {
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
489 NWidget(NWID_HORIZONTAL),
13752
517d77f53919 (svn r18277) -Codechange: remove unneeded widget indices for close, resize and sticky boxes and for window captions
rubidium <rubidium@openttd.org>
parents: 13749
diff changeset
490 NWidget(WWT_CLOSEBOX, COLOUR_RED),
13422
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
491 NWidget(WWT_CAPTION, COLOUR_RED, EMW_CAPTION), SetDataTip(STR_ERROR_MESSAGE_CAPTION, STR_NULL),
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
492 EndContainer(),
13755
bf8a4ced15fe (svn r18280) -Codechange: remove widget indices that are not needed for custom drawing/handling input
rubidium <rubidium@openttd.org>
parents: 13752
diff changeset
493 NWidget(WWT_PANEL, COLOUR_RED),
13422
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
494 NWidget(WWT_EMPTY, COLOUR_RED, EMW_MESSAGE), SetPadding(0, 2, 0, 2), SetMinimalSize(236, 32),
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
495 EndContainer(),
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
496 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
497
13422
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
498 static const WindowDesc _errmsg_desc(
13798
6f820ae12bb3 (svn r18324) -Codechange: there's no need for a default size when the window isn't resizable
rubidium <rubidium@openttd.org>
parents: 13797
diff changeset
499 WDP_MANUAL, 0, 0,
13422
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
500 WC_ERRMSG, WC_NONE,
13749
fc3ab8256c95 (svn r18274) -Codechange: remove the unused WDF flags
rubidium <rubidium@openttd.org>
parents: 13705
diff changeset
501 0,
13564
bae287664b02 (svn r18086) -Codechange: remove 'widget' from WindowDesc
rubidium <rubidium@openttd.org>
parents: 13478
diff changeset
502 _nested_errmsg_widgets, lengthof(_nested_errmsg_widgets)
13422
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
503 );
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
504
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
505 static const NWidgetPart _nested_errmsg_face_widgets[] = {
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
506 NWidget(NWID_HORIZONTAL),
13752
517d77f53919 (svn r18277) -Codechange: remove unneeded widget indices for close, resize and sticky boxes and for window captions
rubidium <rubidium@openttd.org>
parents: 13749
diff changeset
507 NWidget(WWT_CLOSEBOX, COLOUR_RED),
13422
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
508 NWidget(WWT_CAPTION, COLOUR_RED, EMW_CAPTION), SetDataTip(STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY, STR_NULL),
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
509 EndContainer(),
13755
bf8a4ced15fe (svn r18280) -Codechange: remove widget indices that are not needed for custom drawing/handling input
rubidium <rubidium@openttd.org>
parents: 13752
diff changeset
510 NWidget(WWT_PANEL, COLOUR_RED),
13422
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
511 NWidget(NWID_HORIZONTAL), SetPIP(2, 1, 2),
14105
14b88fb5751d (svn r18652) -Fix: glitches due to having the wrong bounding boxes for the face widgets
rubidium <rubidium@openttd.org>
parents: 14089
diff changeset
512 NWidget(WWT_EMPTY, COLOUR_RED, EMW_FACE), SetMinimalSize(92, 119), SetFill(0, 1), SetPadding(2, 0, 1, 0),
13704
af90d4bf0785 (svn r18229) -Codechange: Make fill_x, fill_y a number instead of a bool.
alberth <alberth@openttd.org>
parents: 13683
diff changeset
513 NWidget(WWT_EMPTY, COLOUR_RED, EMW_MESSAGE), SetFill(0, 1), SetMinimalSize(238, 123),
11837
f32d9dd80187 (svn r16227) -Codechange: Added nested widgets for error windows, tooltip window, and dropdown window.
alberth <alberth@openttd.org>
parents: 11793
diff changeset
514 EndContainer(),
f32d9dd80187 (svn r16227) -Codechange: Added nested widgets for error windows, tooltip window, and dropdown window.
alberth <alberth@openttd.org>
parents: 11793
diff changeset
515 EndContainer(),
f32d9dd80187 (svn r16227) -Codechange: Added nested widgets for error windows, tooltip window, and dropdown window.
alberth <alberth@openttd.org>
parents: 11793
diff changeset
516 };
f32d9dd80187 (svn r16227) -Codechange: Added nested widgets for error windows, tooltip window, and dropdown window.
alberth <alberth@openttd.org>
parents: 11793
diff changeset
517
13422
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
518 static const WindowDesc _errmsg_face_desc(
13798
6f820ae12bb3 (svn r18324) -Codechange: there's no need for a default size when the window isn't resizable
rubidium <rubidium@openttd.org>
parents: 13797
diff changeset
519 WDP_MANUAL, 0, 0,
13422
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
520 WC_ERRMSG, WC_NONE,
13749
fc3ab8256c95 (svn r18274) -Codechange: remove the unused WDF flags
rubidium <rubidium@openttd.org>
parents: 13705
diff changeset
521 0,
13564
bae287664b02 (svn r18086) -Codechange: remove 'widget' from WindowDesc
rubidium <rubidium@openttd.org>
parents: 13478
diff changeset
522 _nested_errmsg_face_widgets, lengthof(_nested_errmsg_face_widgets)
13422
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
523 );
11837
f32d9dd80187 (svn r16227) -Codechange: Added nested widgets for error windows, tooltip window, and dropdown window.
alberth <alberth@openttd.org>
parents: 11793
diff changeset
524
13412
c4c8d177431a (svn r17921) -Documentation: Add doxygen comments in the ErrmsgWindow struct.
alberth <alberth@openttd.org>
parents: 13410
diff changeset
525 /** Window class for displaying an error message window. */
9265
746b863fafe6 (svn r13131) -Codechange: make a class of the ErrmsgWindow.
glx <glx@openttd.org>
parents: 9228
diff changeset
526 struct ErrmsgWindow : public Window {
746b863fafe6 (svn r13131) -Codechange: make a class of the ErrmsgWindow.
glx <glx@openttd.org>
parents: 9228
diff changeset
527 private:
13412
c4c8d177431a (svn r17921) -Documentation: Add doxygen comments in the ErrmsgWindow struct.
alberth <alberth@openttd.org>
parents: 13410
diff changeset
528 uint duration; ///< Length of display of the message. 0 means forever,
c4c8d177431a (svn r17921) -Documentation: Add doxygen comments in the ErrmsgWindow struct.
alberth <alberth@openttd.org>
parents: 13410
diff changeset
529 uint64 decode_params[20]; ///< Parameters of the message strings.
13419
ddfb6a69b9c3 (svn r17928) -Codechange: ShowErrorMessage() now takes the summary string before the details string.
alberth <alberth@openttd.org>
parents: 13418
diff changeset
530 StringID summary_msg; ///< General error message showed in first line. Must be valid.
13418
a05425167e89 (svn r17927) -Codechange: Rename error message string variables.
alberth <alberth@openttd.org>
parents: 13415
diff changeset
531 StringID detailed_msg; ///< Detailed error message showed in second line. Can be #INVALID_STRING_ID.
13422
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
532 uint height_summary; ///< Height of the #summary_msg string in pixels in the #EMW_MESSAGE widget.
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
533 uint height_detailed; ///< Height of the #detailed_msg string in pixels in the #EMW_MESSAGE widget.
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
534 Point position; ///< Position of the error message window.
9682
ed50c006a790 (svn r13787) -Codechange: resize the red error message box if needed
smatz <smatz@openttd.org>
parents: 9659
diff changeset
535
9265
746b863fafe6 (svn r13131) -Codechange: make a class of the ErrmsgWindow.
glx <glx@openttd.org>
parents: 9228
diff changeset
536 public:
13422
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
537 ErrmsgWindow(Point pt, const WindowDesc *desc, StringID summary_msg, StringID detailed_msg, bool no_timeout) : Window()
9265
746b863fafe6 (svn r13131) -Codechange: make a class of the ErrmsgWindow.
glx <glx@openttd.org>
parents: 9228
diff changeset
538 {
13422
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
539 this->position = pt;
12008
066420f32d18 (svn r16414) -Change: Make it harder to ignore/close important error messages. Esp. do not close them automatically after some time.
frosch <frosch@openttd.org>
parents: 11972
diff changeset
540 this->duration = no_timeout ? 0 : _settings_client.gui.errmsg_duration;
9265
746b863fafe6 (svn r13131) -Codechange: make a class of the ErrmsgWindow.
glx <glx@openttd.org>
parents: 9228
diff changeset
541 CopyOutDParam(this->decode_params, 0, lengthof(this->decode_params));
13419
ddfb6a69b9c3 (svn r17928) -Codechange: ShowErrorMessage() now takes the summary string before the details string.
alberth <alberth@openttd.org>
parents: 13418
diff changeset
542 this->summary_msg = summary_msg;
13418
a05425167e89 (svn r17927) -Codechange: Rename error message string variables.
alberth <alberth@openttd.org>
parents: 13415
diff changeset
543 this->detailed_msg = detailed_msg;
9682
ed50c006a790 (svn r13787) -Codechange: resize the red error message box if needed
smatz <smatz@openttd.org>
parents: 9659
diff changeset
544
13418
a05425167e89 (svn r17927) -Codechange: Rename error message string variables.
alberth <alberth@openttd.org>
parents: 13415
diff changeset
545 assert(summary_msg != INVALID_STRING_ID);
9682
ed50c006a790 (svn r13787) -Codechange: resize the red error message box if needed
smatz <smatz@openttd.org>
parents: 9659
diff changeset
546
13422
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
547 this->InitNested(desc);
9265
746b863fafe6 (svn r13131) -Codechange: make a class of the ErrmsgWindow.
glx <glx@openttd.org>
parents: 9228
diff changeset
548 }
746b863fafe6 (svn r13131) -Codechange: make a class of the ErrmsgWindow.
glx <glx@openttd.org>
parents: 9228
diff changeset
549
13705
8dee47e001b2 (svn r18230) -Codechange: Allow fill stepsize to be set from Window::UpdateWidgetSize().
alberth <alberth@openttd.org>
parents: 13704
diff changeset
550 virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
9265
746b863fafe6 (svn r13131) -Codechange: make a class of the ErrmsgWindow.
glx <glx@openttd.org>
parents: 9228
diff changeset
551 {
13422
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
552 if (widget != EMW_MESSAGE) return;
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
553
9265
746b863fafe6 (svn r13131) -Codechange: make a class of the ErrmsgWindow.
glx <glx@openttd.org>
parents: 9228
diff changeset
554 CopyInDParam(0, this->decode_params, lengthof(this->decode_params));
746b863fafe6 (svn r13131) -Codechange: make a class of the ErrmsgWindow.
glx <glx@openttd.org>
parents: 9228
diff changeset
555 /* If the error message comes from a NewGRF, we must use the text ref. stack reserved for error messages.
9272
22954a91c5aa (svn r13138) -Codechange: remove the need for IsWindowOfPrototype.
rubidium <rubidium@openttd.org>
parents: 9265
diff changeset
556 * If the message doesn't come from a NewGRF, it won't use the TTDP-style text ref. stack, so we won't hurt anything
22954a91c5aa (svn r13138) -Codechange: remove the need for IsWindowOfPrototype.
rubidium <rubidium@openttd.org>
parents: 9265
diff changeset
557 */
9265
746b863fafe6 (svn r13131) -Codechange: make a class of the ErrmsgWindow.
glx <glx@openttd.org>
parents: 9228
diff changeset
558 SwitchToErrorRefStack();
746b863fafe6 (svn r13131) -Codechange: make a class of the ErrmsgWindow.
glx <glx@openttd.org>
parents: 9228
diff changeset
559 RewindTextRefStack();
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
560
13422
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
561 int text_width = max(0, (int)size->width - WD_FRAMETEXT_LEFT - WD_FRAMETEXT_RIGHT);
13426
52ba7aa7628d (svn r17935) -Fix (r17933): Compensate for being inside a class.
alberth <alberth@openttd.org>
parents: 13424
diff changeset
562 this->height_summary = GetStringHeight(this->summary_msg, text_width);
52ba7aa7628d (svn r17935) -Fix (r17933): Compensate for being inside a class.
alberth <alberth@openttd.org>
parents: 13424
diff changeset
563 this->height_detailed = (this->detailed_msg == INVALID_STRING_ID) ? 0 : GetStringHeight(this->detailed_msg, text_width);
13422
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
564
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
565 SwitchToNormalRefStack(); // Switch back to the normal text ref. stack for NewGRF texts.
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
566
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
567 uint panel_height = WD_FRAMERECT_TOP + this->height_summary + WD_FRAMERECT_BOTTOM;
13426
52ba7aa7628d (svn r17935) -Fix (r17933): Compensate for being inside a class.
alberth <alberth@openttd.org>
parents: 13424
diff changeset
568 if (this->detailed_msg != INVALID_STRING_ID) panel_height += this->height_detailed + WD_PAR_VSEP_WIDE;
13422
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
569
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
570 size->height = max(size->height, panel_height);
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
571 }
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
572
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
573 virtual Point OnInitialPosition(const WindowDesc *desc, int16 sm_width, int16 sm_height, int window_number)
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
574 {
13424
3dd4ac4f5364 (svn r17933) -Codechange: Move position calculation of error message window into the class.
alberth <alberth@openttd.org>
parents: 13423
diff changeset
575 /* Position (0, 0) given, center the window. */
3dd4ac4f5364 (svn r17933) -Codechange: Move position calculation of error message window into the class.
alberth <alberth@openttd.org>
parents: 13423
diff changeset
576 if (this->position.x == 0 && this->position.y == 0) {
3dd4ac4f5364 (svn r17933) -Codechange: Move position calculation of error message window into the class.
alberth <alberth@openttd.org>
parents: 13423
diff changeset
577 Point pt = {(_screen.width - sm_width) >> 1, (_screen.height - sm_height) >> 1};
3dd4ac4f5364 (svn r17933) -Codechange: Move position calculation of error message window into the class.
alberth <alberth@openttd.org>
parents: 13423
diff changeset
578 return pt;
3dd4ac4f5364 (svn r17933) -Codechange: Move position calculation of error message window into the class.
alberth <alberth@openttd.org>
parents: 13423
diff changeset
579 }
3dd4ac4f5364 (svn r17933) -Codechange: Move position calculation of error message window into the class.
alberth <alberth@openttd.org>
parents: 13423
diff changeset
580
13478
d0e25c1f205e (svn r17997) -Codechange: Introduce functions for querying top and bottom of the main view.
alberth <alberth@openttd.org>
parents: 13466
diff changeset
581 /* Find the free screen space between the main toolbar at the top, and the statusbar at the bottom.
13431
80d05eb53cfa (svn r17940) -Codechange: Use real y position of the main toolbar and status bar instead of hardcoded sizes for tooltip and for error message windows.
alberth <alberth@openttd.org>
parents: 13426
diff changeset
582 * Add a fixed distance 20 to make it less cluttered.
80d05eb53cfa (svn r17940) -Codechange: Use real y position of the main toolbar and status bar instead of hardcoded sizes for tooltip and for error message windows.
alberth <alberth@openttd.org>
parents: 13426
diff changeset
583 */
13478
d0e25c1f205e (svn r17997) -Codechange: Introduce functions for querying top and bottom of the main view.
alberth <alberth@openttd.org>
parents: 13466
diff changeset
584 int scr_top = GetMainViewTop() + 20;
d0e25c1f205e (svn r17997) -Codechange: Introduce functions for querying top and bottom of the main view.
alberth <alberth@openttd.org>
parents: 13466
diff changeset
585 int scr_bot = GetMainViewBottom() - 20;
13431
80d05eb53cfa (svn r17940) -Codechange: Use real y position of the main toolbar and status bar instead of hardcoded sizes for tooltip and for error message windows.
alberth <alberth@openttd.org>
parents: 13426
diff changeset
586
13424
3dd4ac4f5364 (svn r17933) -Codechange: Move position calculation of error message window into the class.
alberth <alberth@openttd.org>
parents: 13423
diff changeset
587 Point pt = RemapCoords2(this->position.x, this->position.y);
3dd4ac4f5364 (svn r17933) -Codechange: Move position calculation of error message window into the class.
alberth <alberth@openttd.org>
parents: 13423
diff changeset
588 const ViewPort *vp = FindWindowById(WC_MAIN_WINDOW, 0)->viewport;
13426
52ba7aa7628d (svn r17935) -Fix (r17933): Compensate for being inside a class.
alberth <alberth@openttd.org>
parents: 13424
diff changeset
589 if (this->detailed_msg != STR_ERROR_OWNED_BY || GetDParamX(this->decode_params, 2) >= MAX_COMPANIES) {
13424
3dd4ac4f5364 (svn r17933) -Codechange: Move position calculation of error message window into the class.
alberth <alberth@openttd.org>
parents: 13423
diff changeset
590 /* move x pos to opposite corner */
3dd4ac4f5364 (svn r17933) -Codechange: Move position calculation of error message window into the class.
alberth <alberth@openttd.org>
parents: 13423
diff changeset
591 pt.x = UnScaleByZoom(pt.x - vp->virtual_left, vp->zoom) + vp->left;
13431
80d05eb53cfa (svn r17940) -Codechange: Use real y position of the main toolbar and status bar instead of hardcoded sizes for tooltip and for error message windows.
alberth <alberth@openttd.org>
parents: 13426
diff changeset
592 pt.x = (pt.x < (_screen.width >> 1)) ? _screen.width - sm_width - 20 : 20; // Stay 20 pixels away from the edge of the screen.
13424
3dd4ac4f5364 (svn r17933) -Codechange: Move position calculation of error message window into the class.
alberth <alberth@openttd.org>
parents: 13423
diff changeset
593
3dd4ac4f5364 (svn r17933) -Codechange: Move position calculation of error message window into the class.
alberth <alberth@openttd.org>
parents: 13423
diff changeset
594 /* move y pos to opposite corner */
3dd4ac4f5364 (svn r17933) -Codechange: Move position calculation of error message window into the class.
alberth <alberth@openttd.org>
parents: 13423
diff changeset
595 pt.y = UnScaleByZoom(pt.y - vp->virtual_top, vp->zoom) + vp->top;
13431
80d05eb53cfa (svn r17940) -Codechange: Use real y position of the main toolbar and status bar instead of hardcoded sizes for tooltip and for error message windows.
alberth <alberth@openttd.org>
parents: 13426
diff changeset
596 pt.y = (pt.y < (_screen.height >> 1)) ? scr_bot - sm_height : scr_top;
13424
3dd4ac4f5364 (svn r17933) -Codechange: Move position calculation of error message window into the class.
alberth <alberth@openttd.org>
parents: 13423
diff changeset
597 } else {
13426
52ba7aa7628d (svn r17935) -Fix (r17933): Compensate for being inside a class.
alberth <alberth@openttd.org>
parents: 13424
diff changeset
598 pt.x = Clamp(UnScaleByZoom(pt.x - vp->virtual_left, vp->zoom) + vp->left - (sm_width / 2), 0, _screen.width - sm_width);
13431
80d05eb53cfa (svn r17940) -Codechange: Use real y position of the main toolbar and status bar instead of hardcoded sizes for tooltip and for error message windows.
alberth <alberth@openttd.org>
parents: 13426
diff changeset
599 pt.y = Clamp(UnScaleByZoom(pt.y - vp->virtual_top, vp->zoom) + vp->top - (sm_height / 2), scr_top, scr_bot - sm_height);
13424
3dd4ac4f5364 (svn r17933) -Codechange: Move position calculation of error message window into the class.
alberth <alberth@openttd.org>
parents: 13423
diff changeset
600 }
3dd4ac4f5364 (svn r17933) -Codechange: Move position calculation of error message window into the class.
alberth <alberth@openttd.org>
parents: 13423
diff changeset
601 return pt;
13422
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
602 }
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
603
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
604 virtual void OnPaint()
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
605 {
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
606 this->DrawWidgets();
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
607 }
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
608
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
609 virtual void SetStringParameters(int widget) const
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
610 {
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
611 if (widget == EMW_CAPTION) CopyInDParam(0, this->decode_params, lengthof(this->decode_params));
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
612 }
7750
2df30880f88b (svn r11287) -Codechange: add support for pushing paramaters into NewIndustries' error messages. Patch by Csaboka.
rubidium <rubidium@openttd.org>
parents: 7521
diff changeset
613
13422
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
614 virtual void DrawWidget(const Rect &r, int widget) const
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
615 {
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
616 switch (widget) {
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
617 case EMW_FACE: {
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
618 const Company *c = Company::Get((CompanyID)GetDParamX(this->decode_params, 2));
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
619 DrawCompanyManagerFace(c->face, c->colour, r.left, r.top);
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
620 break;
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
621 }
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
622
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
623 case EMW_MESSAGE:
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
624 CopyInDParam(0, this->decode_params, lengthof(this->decode_params));
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
625 SwitchToErrorRefStack();
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
626 RewindTextRefStack();
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
627
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
628 if (this->detailed_msg == INVALID_STRING_ID) {
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
629 DrawStringMultiLine(r.left + WD_FRAMETEXT_LEFT, r.right - WD_FRAMETEXT_RIGHT, r.top + WD_FRAMERECT_TOP, r.bottom - WD_FRAMERECT_BOTTOM,
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
630 this->summary_msg, TC_FROMSTRING, SA_CENTER);
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
631 } else {
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
632 int extra = (r.bottom - r.top + 1 - this->height_summary - this->height_detailed - WD_PAR_VSEP_WIDE) / 2;
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
633
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
634 int top = r.top + WD_FRAMERECT_TOP;
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
635 int bottom = top + this->height_summary + extra;
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
636 DrawStringMultiLine(r.left + WD_FRAMETEXT_LEFT, r.right - WD_FRAMETEXT_RIGHT, top, bottom, this->summary_msg, TC_FROMSTRING, SA_CENTER);
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
637
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
638 bottom = r.bottom - WD_FRAMERECT_BOTTOM;
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
639 top = bottom - this->height_detailed - extra;
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
640 DrawStringMultiLine(r.left + WD_FRAMETEXT_LEFT, r.right - WD_FRAMETEXT_RIGHT, top, bottom, this->detailed_msg, TC_FROMSTRING, SA_CENTER);
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
641 }
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
642
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
643 SwitchToNormalRefStack(); // Switch back to the normal text ref. stack for NewGRF texts.
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
644 break;
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
645
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
646 default:
88d840d0eeb9 (svn r17931) -Codechange: Error message window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13419
diff changeset
647 break;
13415
65f20d71b375 (svn r17924) -Codechange: Replace y array with two area rectangles in the error message window.
alberth <alberth@openttd.org>
parents: 13412
diff changeset
648 }
9265
746b863fafe6 (svn r13131) -Codechange: make a class of the ErrmsgWindow.
glx <glx@openttd.org>
parents: 9228
diff changeset
649 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
650
9265
746b863fafe6 (svn r13131) -Codechange: make a class of the ErrmsgWindow.
glx <glx@openttd.org>
parents: 9228
diff changeset
651 virtual void OnMouseLoop()
746b863fafe6 (svn r13131) -Codechange: make a class of the ErrmsgWindow.
glx <glx@openttd.org>
parents: 9228
diff changeset
652 {
12008
066420f32d18 (svn r16414) -Change: Make it harder to ignore/close important error messages. Esp. do not close them automatically after some time.
frosch <frosch@openttd.org>
parents: 11972
diff changeset
653 /* Disallow closing the window too easily, if timeout is disabled */
066420f32d18 (svn r16414) -Change: Make it harder to ignore/close important error messages. Esp. do not close them automatically after some time.
frosch <frosch@openttd.org>
parents: 11972
diff changeset
654 if (_right_button_down && this->duration != 0) delete this;
9265
746b863fafe6 (svn r13131) -Codechange: make a class of the ErrmsgWindow.
glx <glx@openttd.org>
parents: 9228
diff changeset
655 }
8738
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
656
9265
746b863fafe6 (svn r13131) -Codechange: make a class of the ErrmsgWindow.
glx <glx@openttd.org>
parents: 9228
diff changeset
657 virtual void OnHundredthTick()
746b863fafe6 (svn r13131) -Codechange: make a class of the ErrmsgWindow.
glx <glx@openttd.org>
parents: 9228
diff changeset
658 {
12008
066420f32d18 (svn r16414) -Change: Make it harder to ignore/close important error messages. Esp. do not close them automatically after some time.
frosch <frosch@openttd.org>
parents: 11972
diff changeset
659 /* Timeout enabled? */
066420f32d18 (svn r16414) -Change: Make it harder to ignore/close important error messages. Esp. do not close them automatically after some time.
frosch <frosch@openttd.org>
parents: 11972
diff changeset
660 if (this->duration != 0) {
066420f32d18 (svn r16414) -Change: Make it harder to ignore/close important error messages. Esp. do not close them automatically after some time.
frosch <frosch@openttd.org>
parents: 11972
diff changeset
661 this->duration--;
066420f32d18 (svn r16414) -Change: Make it harder to ignore/close important error messages. Esp. do not close them automatically after some time.
frosch <frosch@openttd.org>
parents: 11972
diff changeset
662 if (this->duration == 0) delete this;
066420f32d18 (svn r16414) -Change: Make it harder to ignore/close important error messages. Esp. do not close them automatically after some time.
frosch <frosch@openttd.org>
parents: 11972
diff changeset
663 }
9265
746b863fafe6 (svn r13131) -Codechange: make a class of the ErrmsgWindow.
glx <glx@openttd.org>
parents: 9228
diff changeset
664 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
665
9265
746b863fafe6 (svn r13131) -Codechange: make a class of the ErrmsgWindow.
glx <glx@openttd.org>
parents: 9228
diff changeset
666 ~ErrmsgWindow()
746b863fafe6 (svn r13131) -Codechange: make a class of the ErrmsgWindow.
glx <glx@openttd.org>
parents: 9228
diff changeset
667 {
10816
35b3e8e25590 (svn r15151) -Fix: tile 0 can now be highlighted as error tile
Yexo <Yexo@openttd.org>
parents: 10771
diff changeset
668 SetRedErrorSquare(INVALID_TILE);
9265
746b863fafe6 (svn r13131) -Codechange: make a class of the ErrmsgWindow.
glx <glx@openttd.org>
parents: 9228
diff changeset
669 extern StringID _switch_mode_errorstr;
746b863fafe6 (svn r13131) -Codechange: make a class of the ErrmsgWindow.
glx <glx@openttd.org>
parents: 9228
diff changeset
670 _switch_mode_errorstr = INVALID_STRING_ID;
746b863fafe6 (svn r13131) -Codechange: make a class of the ErrmsgWindow.
glx <glx@openttd.org>
parents: 9228
diff changeset
671 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
672
9285
3b3f13cb6db6 (svn r13151) -Codechange: use an enum instead of bool as return type of OnKeyPress/OnCTRLStateChange to make it obvious what the return values mean.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
673 virtual EventState OnKeyPress(uint16 key, uint16 keycode)
9265
746b863fafe6 (svn r13131) -Codechange: make a class of the ErrmsgWindow.
glx <glx@openttd.org>
parents: 9228
diff changeset
674 {
9285
3b3f13cb6db6 (svn r13151) -Codechange: use an enum instead of bool as return type of OnKeyPress/OnCTRLStateChange to make it obvious what the return values mean.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
675 if (keycode != WKC_SPACE) return ES_NOT_HANDLED;
9265
746b863fafe6 (svn r13131) -Codechange: make a class of the ErrmsgWindow.
glx <glx@openttd.org>
parents: 9228
diff changeset
676 delete this;
9285
3b3f13cb6db6 (svn r13151) -Codechange: use an enum instead of bool as return type of OnKeyPress/OnCTRLStateChange to make it obvious what the return values mean.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
677 return ES_HANDLED;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
678 }
9265
746b863fafe6 (svn r13131) -Codechange: make a class of the ErrmsgWindow.
glx <glx@openttd.org>
parents: 9228
diff changeset
679 };
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
680
12008
066420f32d18 (svn r16414) -Change: Make it harder to ignore/close important error messages. Esp. do not close them automatically after some time.
frosch <frosch@openttd.org>
parents: 11972
diff changeset
681 /**
066420f32d18 (svn r16414) -Change: Make it harder to ignore/close important error messages. Esp. do not close them automatically after some time.
frosch <frosch@openttd.org>
parents: 11972
diff changeset
682 * Display an error message in a window.
13419
ddfb6a69b9c3 (svn r17928) -Codechange: ShowErrorMessage() now takes the summary string before the details string.
alberth <alberth@openttd.org>
parents: 13418
diff changeset
683 * @param summary_msg General error message showed in first line. Must be valid.
13418
a05425167e89 (svn r17927) -Codechange: Rename error message string variables.
alberth <alberth@openttd.org>
parents: 13415
diff changeset
684 * @param detailed_msg Detailed error message showed in second line. Can be INVALID_STRING_ID.
a05425167e89 (svn r17927) -Codechange: Rename error message string variables.
alberth <alberth@openttd.org>
parents: 13415
diff changeset
685 * @param x World X position (TileVirtX) of the error location. Set both x and y to 0 to just center the message when there is no related error tile.
a05425167e89 (svn r17927) -Codechange: Rename error message string variables.
alberth <alberth@openttd.org>
parents: 13415
diff changeset
686 * @param y World Y position (TileVirtY) of the error location. Set both x and y to 0 to just center the message when there is no related error tile.
a05425167e89 (svn r17927) -Codechange: Rename error message string variables.
alberth <alberth@openttd.org>
parents: 13415
diff changeset
687 * @param no_timeout Set to true, if the message is that important that it should not close automatically after some time.
12008
066420f32d18 (svn r16414) -Change: Make it harder to ignore/close important error messages. Esp. do not close them automatically after some time.
frosch <frosch@openttd.org>
parents: 11972
diff changeset
688 */
13419
ddfb6a69b9c3 (svn r17928) -Codechange: ShowErrorMessage() now takes the summary string before the details string.
alberth <alberth@openttd.org>
parents: 13418
diff changeset
689 void ShowErrorMessage(StringID summary_msg, StringID detailed_msg, int x, int y, bool no_timeout)
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
690 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
691 DeleteWindowById(WC_ERRMSG, 0);
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
692
12008
066420f32d18 (svn r16414) -Change: Make it harder to ignore/close important error messages. Esp. do not close them automatically after some time.
frosch <frosch@openttd.org>
parents: 11972
diff changeset
693 if (_settings_client.gui.errmsg_duration == 0 && !no_timeout) return;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
694
13418
a05425167e89 (svn r17927) -Codechange: Rename error message string variables.
alberth <alberth@openttd.org>
parents: 13415
diff changeset
695 if (summary_msg == STR_NULL) summary_msg = STR_EMPTY;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
696
13424
3dd4ac4f5364 (svn r17933) -Codechange: Move position calculation of error message window into the class.
alberth <alberth@openttd.org>
parents: 13423
diff changeset
697 Point pt = {x, y};
3dd4ac4f5364 (svn r17933) -Codechange: Move position calculation of error message window into the class.
alberth <alberth@openttd.org>
parents: 13423
diff changeset
698 const WindowDesc *desc = (detailed_msg != STR_ERROR_OWNED_BY || GetDParam(2) >= MAX_COMPANIES) ? &_errmsg_desc : &_errmsg_face_desc;
3dd4ac4f5364 (svn r17933) -Codechange: Move position calculation of error message window into the class.
alberth <alberth@openttd.org>
parents: 13423
diff changeset
699 new ErrmsgWindow(pt, desc, summary_msg, detailed_msg, no_timeout);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
700 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
701
6990
a19700261804 (svn r10246) -Fix (r10297): some forgotten money conversions and truncation issues. Thanks to benc for providing the patch.
rubidium <rubidium@openttd.org>
parents: 6953
diff changeset
702 void ShowEstimatedCostOrIncome(Money cost, int x, int y)
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
703 {
11730
a39da1e4c1f5 (svn r16118) -Change/cleanup: remove the hexadecimal 'in TTD the string had this ID' from 'some' strings and replace the string name with something more sensible.
rubidium <rubidium@openttd.org>
parents: 11702
diff changeset
704 StringID msg = STR_MESSAGE_ESTIMATED_COST;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
705
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
706 if (cost < 0) {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
707 cost = -cost;
11730
a39da1e4c1f5 (svn r16118) -Change/cleanup: remove the hexadecimal 'in TTD the string had this ID' from 'some' strings and replace the string name with something more sensible.
rubidium <rubidium@openttd.org>
parents: 11702
diff changeset
708 msg = STR_MESSAGE_ESTIMATED_INCOME;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
709 }
7002
fa75522e0249 (svn r10258) -Codechange: as we are now using int64 all over the place, it's better to use int64 variables in the string generating too instead of packing them into two int32s.
rubidium <rubidium@openttd.org>
parents: 6998
diff changeset
710 SetDParam(0, cost);
13419
ddfb6a69b9c3 (svn r17928) -Codechange: ShowErrorMessage() now takes the summary string before the details string.
alberth <alberth@openttd.org>
parents: 13418
diff changeset
711 ShowErrorMessage(msg, INVALID_STRING_ID, x, y);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
712 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
713
6990
a19700261804 (svn r10246) -Fix (r10297): some forgotten money conversions and truncation issues. Thanks to benc for providing the patch.
rubidium <rubidium@openttd.org>
parents: 6953
diff changeset
714 void ShowCostOrIncomeAnimation(int x, int y, int z, Money cost)
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
715 {
10642
29bc871ff8d1 (svn r14944) -Cleanup: add spaces around some operators
rubidium <rubidium@openttd.org>
parents: 10582
diff changeset
716 Point pt = RemapCoords(x, y, z);
11730
a39da1e4c1f5 (svn r16118) -Change/cleanup: remove the hexadecimal 'in TTD the string had this ID' from 'some' strings and replace the string name with something more sensible.
rubidium <rubidium@openttd.org>
parents: 11702
diff changeset
717 StringID msg = STR_INCOME_FLOAT_COST;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
718
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
719 if (cost < 0) {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
720 cost = -cost;
11730
a39da1e4c1f5 (svn r16118) -Change/cleanup: remove the hexadecimal 'in TTD the string had this ID' from 'some' strings and replace the string name with something more sensible.
rubidium <rubidium@openttd.org>
parents: 11702
diff changeset
721 msg = STR_INCOME_FLOAT_INCOME;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
722 }
7002
fa75522e0249 (svn r10258) -Codechange: as we are now using int64 all over the place, it's better to use int64 variables in the string generating too instead of packing them into two int32s.
rubidium <rubidium@openttd.org>
parents: 6998
diff changeset
723 SetDParam(0, cost);
14089
511acd6d8554 (svn r18636) -Codechange: make TextEffect::duration a value in ticks instead of ticks * 8
smatz <smatz@openttd.org>
parents: 14063
diff changeset
724 AddTextEffect(msg, pt.x, pt.y, DAY_TICKS, TE_RISING);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
725 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
726
6990
a19700261804 (svn r10246) -Fix (r10297): some forgotten money conversions and truncation issues. Thanks to benc for providing the patch.
rubidium <rubidium@openttd.org>
parents: 6953
diff changeset
727 void ShowFeederIncomeAnimation(int x, int y, int z, Money cost)
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
728 {
10642
29bc871ff8d1 (svn r14944) -Cleanup: add spaces around some operators
rubidium <rubidium@openttd.org>
parents: 10582
diff changeset
729 Point pt = RemapCoords(x, y, z);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
730
7002
fa75522e0249 (svn r10258) -Codechange: as we are now using int64 all over the place, it's better to use int64 variables in the string generating too instead of packing them into two int32s.
rubidium <rubidium@openttd.org>
parents: 6998
diff changeset
731 SetDParam(0, cost);
14089
511acd6d8554 (svn r18636) -Codechange: make TextEffect::duration a value in ticks instead of ticks * 8
smatz <smatz@openttd.org>
parents: 14063
diff changeset
732 AddTextEffect(STR_FEEDER, pt.x, pt.y, DAY_TICKS, TE_RISING);
6998
13ea0d5f8acf (svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight <truelight@openttd.org>
parents: 6991
diff changeset
733 }
13ea0d5f8acf (svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight <truelight@openttd.org>
parents: 6991
diff changeset
734
7014
d03670858cef (svn r10270) -Add: prefixed the loading indicator with an arrow, up meaning vehicle is loading, down meaning vehicle is unloading
truelight <truelight@openttd.org>
parents: 7007
diff changeset
735 TextEffectID ShowFillingPercent(int x, int y, int z, uint8 percent, StringID string)
6998
13ea0d5f8acf (svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight <truelight@openttd.org>
parents: 6991
diff changeset
736 {
13ea0d5f8acf (svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight <truelight@openttd.org>
parents: 6991
diff changeset
737 Point pt = RemapCoords(x, y, z);
13ea0d5f8acf (svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight <truelight@openttd.org>
parents: 6991
diff changeset
738
7014
d03670858cef (svn r10270) -Add: prefixed the loading indicator with an arrow, up meaning vehicle is loading, down meaning vehicle is unloading
truelight <truelight@openttd.org>
parents: 7007
diff changeset
739 assert(string != STR_NULL);
d03670858cef (svn r10270) -Add: prefixed the loading indicator with an arrow, up meaning vehicle is loading, down meaning vehicle is unloading
truelight <truelight@openttd.org>
parents: 7007
diff changeset
740
6998
13ea0d5f8acf (svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight <truelight@openttd.org>
parents: 6991
diff changeset
741 SetDParam(0, percent);
14089
511acd6d8554 (svn r18636) -Codechange: make TextEffect::duration a value in ticks instead of ticks * 8
smatz <smatz@openttd.org>
parents: 14063
diff changeset
742 return AddTextEffect(string, pt.x, pt.y, 0, TE_STATIC);
6998
13ea0d5f8acf (svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight <truelight@openttd.org>
parents: 6991
diff changeset
743 }
13ea0d5f8acf (svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight <truelight@openttd.org>
parents: 6991
diff changeset
744
7014
d03670858cef (svn r10270) -Add: prefixed the loading indicator with an arrow, up meaning vehicle is loading, down meaning vehicle is unloading
truelight <truelight@openttd.org>
parents: 7007
diff changeset
745 void UpdateFillingPercent(TextEffectID te_id, uint8 percent, StringID string)
6998
13ea0d5f8acf (svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight <truelight@openttd.org>
parents: 6991
diff changeset
746 {
7014
d03670858cef (svn r10270) -Add: prefixed the loading indicator with an arrow, up meaning vehicle is loading, down meaning vehicle is unloading
truelight <truelight@openttd.org>
parents: 7007
diff changeset
747 assert(string != STR_NULL);
d03670858cef (svn r10270) -Add: prefixed the loading indicator with an arrow, up meaning vehicle is loading, down meaning vehicle is unloading
truelight <truelight@openttd.org>
parents: 7007
diff changeset
748
6998
13ea0d5f8acf (svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight <truelight@openttd.org>
parents: 6991
diff changeset
749 SetDParam(0, percent);
7014
d03670858cef (svn r10270) -Add: prefixed the loading indicator with an arrow, up meaning vehicle is loading, down meaning vehicle is unloading
truelight <truelight@openttd.org>
parents: 7007
diff changeset
750 UpdateTextEffect(te_id, string);
6998
13ea0d5f8acf (svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight <truelight@openttd.org>
parents: 6991
diff changeset
751 }
13ea0d5f8acf (svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight <truelight@openttd.org>
parents: 6991
diff changeset
752
10176
71daf486081d (svn r14371) -Fix [FS#2313]: loading indicator didn't stay with the front engine when turning a train in a station.
rubidium <rubidium@openttd.org>
parents: 10148
diff changeset
753 void HideFillingPercent(TextEffectID *te_id)
6998
13ea0d5f8acf (svn r10254) -Feature: loading indicator, which shows in % how full a vehicle is while loading/unloading (TheJosh)
truelight <truelight@openttd.org>
parents: 6991
diff changeset
754 {
10176
71daf486081d (svn r14371) -Fix [FS#2313]: loading indicator didn't stay with the front engine when turning a train in a station.
rubidium <rubidium@openttd.org>
parents: 10148
diff changeset
755 if (*te_id == INVALID_TE_ID) return;
71daf486081d (svn r14371) -Fix [FS#2313]: loading indicator didn't stay with the front engine when turning a train in a station.
rubidium <rubidium@openttd.org>
parents: 10148
diff changeset
756
71daf486081d (svn r14371) -Fix [FS#2313]: loading indicator didn't stay with the front engine when turning a train in a station.
rubidium <rubidium@openttd.org>
parents: 10148
diff changeset
757 RemoveTextEffect(*te_id);
71daf486081d (svn r14371) -Fix [FS#2313]: loading indicator didn't stay with the front engine when turning a train in a station.
rubidium <rubidium@openttd.org>
parents: 10148
diff changeset
758 *te_id = INVALID_TE_ID;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
759 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
760
11837
f32d9dd80187 (svn r16227) -Codechange: Added nested widgets for error windows, tooltip window, and dropdown window.
alberth <alberth@openttd.org>
parents: 11793
diff changeset
761 static const NWidgetPart _nested_tooltips_widgets[] = {
f32d9dd80187 (svn r16227) -Codechange: Added nested widgets for error windows, tooltip window, and dropdown window.
alberth <alberth@openttd.org>
parents: 11793
diff changeset
762 NWidget(WWT_PANEL, COLOUR_GREY, 0), SetMinimalSize(200, 32), EndContainer(),
f32d9dd80187 (svn r16227) -Codechange: Added nested widgets for error windows, tooltip window, and dropdown window.
alberth <alberth@openttd.org>
parents: 11793
diff changeset
763 };
f32d9dd80187 (svn r16227) -Codechange: Added nested widgets for error windows, tooltip window, and dropdown window.
alberth <alberth@openttd.org>
parents: 11793
diff changeset
764
13407
dab0b75044af (svn r17916) -Codechange: Make tooltips window use pure nested widgets.
alberth <alberth@openttd.org>
parents: 13405
diff changeset
765 static const WindowDesc _tool_tips_desc(
13796
3e68f07eb821 (svn r18322) -Codechange: remove the WDP duplication; no need to tell the same twice.
rubidium <rubidium@openttd.org>
parents: 13792
diff changeset
766 WDP_MANUAL, 0, 0, // Coordinates and sizes are not used,
13407
dab0b75044af (svn r17916) -Codechange: Make tooltips window use pure nested widgets.
alberth <alberth@openttd.org>
parents: 13405
diff changeset
767 WC_TOOLTIPS, WC_NONE,
dab0b75044af (svn r17916) -Codechange: Make tooltips window use pure nested widgets.
alberth <alberth@openttd.org>
parents: 13405
diff changeset
768 0,
13564
bae287664b02 (svn r18086) -Codechange: remove 'widget' from WindowDesc
rubidium <rubidium@openttd.org>
parents: 13478
diff changeset
769 _nested_tooltips_widgets, lengthof(_nested_tooltips_widgets)
13407
dab0b75044af (svn r17916) -Codechange: Make tooltips window use pure nested widgets.
alberth <alberth@openttd.org>
parents: 13405
diff changeset
770 );
dab0b75044af (svn r17916) -Codechange: Make tooltips window use pure nested widgets.
alberth <alberth@openttd.org>
parents: 13405
diff changeset
771
dab0b75044af (svn r17916) -Codechange: Make tooltips window use pure nested widgets.
alberth <alberth@openttd.org>
parents: 13405
diff changeset
772 /** Window for displaying a tooltip. */
9186
c5c545191a71 (svn r13049) -Codechange: make a class of the TooltipsWindow.
rubidium <rubidium@openttd.org>
parents: 9179
diff changeset
773 struct TooltipsWindow : public Window
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
774 {
13404
4f5e54adb480 (svn r17913) -Documentation: Add doxygen comments to the tooltip window class.
alberth <alberth@openttd.org>
parents: 13344
diff changeset
775 StringID string_id; ///< String to display as tooltip.
4f5e54adb480 (svn r17913) -Documentation: Add doxygen comments to the tooltip window class.
alberth <alberth@openttd.org>
parents: 13344
diff changeset
776 byte paramcount; ///< Number of string parameters in #string_id.
4f5e54adb480 (svn r17913) -Documentation: Add doxygen comments to the tooltip window class.
alberth <alberth@openttd.org>
parents: 13344
diff changeset
777 uint64 params[5]; ///< The string parameters.
4f5e54adb480 (svn r17913) -Documentation: Add doxygen comments to the tooltip window class.
alberth <alberth@openttd.org>
parents: 13344
diff changeset
778 bool use_left_mouse_button; ///< Wait for left mouse button to close window (else, wait for right button).
9186
c5c545191a71 (svn r13049) -Codechange: make a class of the TooltipsWindow.
rubidium <rubidium@openttd.org>
parents: 9179
diff changeset
779
13409
955895a91fe4 (svn r17918) -Codechange: Move tooltip size calculation into the tooltip window class.
alberth <alberth@openttd.org>
parents: 13408
diff changeset
780 TooltipsWindow(StringID str, uint paramcount, const uint64 params[], bool use_left_mouse_button) : Window()
9186
c5c545191a71 (svn r13049) -Codechange: make a class of the TooltipsWindow.
rubidium <rubidium@openttd.org>
parents: 9179
diff changeset
781 {
c5c545191a71 (svn r13049) -Codechange: make a class of the TooltipsWindow.
rubidium <rubidium@openttd.org>
parents: 9179
diff changeset
782 this->string_id = str;
12927
950767ea4ee5 (svn r17420) -Codechange: replace assert() by assert_compile() where possible
smatz <smatz@openttd.org>
parents: 12878
diff changeset
783 assert_compile(sizeof(this->params[0]) == sizeof(params[0]));
10201
6b20fe326959 (svn r14414) -Fix: replace instances of strncpy with strecpy as strncpy doesn't guarantee the resulting string is '\0'-terminated.
rubidium <rubidium@openttd.org>
parents: 10176
diff changeset
784 assert(paramcount <= lengthof(this->params));
9186
c5c545191a71 (svn r13049) -Codechange: make a class of the TooltipsWindow.
rubidium <rubidium@openttd.org>
parents: 9179
diff changeset
785 memcpy(this->params, params, sizeof(this->params[0]) * paramcount);
c5c545191a71 (svn r13049) -Codechange: make a class of the TooltipsWindow.
rubidium <rubidium@openttd.org>
parents: 9179
diff changeset
786 this->paramcount = paramcount;
9781
5ab8b1b156bb (svn r13922) -Codechange: Move measurement-tooltip related stuff out of the general tooltip window.
frosch <frosch@openttd.org>
parents: 9752
diff changeset
787 this->use_left_mouse_button = use_left_mouse_button;
9186
c5c545191a71 (svn r13049) -Codechange: make a class of the TooltipsWindow.
rubidium <rubidium@openttd.org>
parents: 9179
diff changeset
788
13407
dab0b75044af (svn r17916) -Codechange: Make tooltips window use pure nested widgets.
alberth <alberth@openttd.org>
parents: 13405
diff changeset
789 this->InitNested(&_tool_tips_desc);
dab0b75044af (svn r17916) -Codechange: Make tooltips window use pure nested widgets.
alberth <alberth@openttd.org>
parents: 13405
diff changeset
790
9186
c5c545191a71 (svn r13049) -Codechange: make a class of the TooltipsWindow.
rubidium <rubidium@openttd.org>
parents: 9179
diff changeset
791 this->flags4 &= ~WF_WHITE_BORDER_MASK; // remove white-border from tooltip
c5c545191a71 (svn r13049) -Codechange: make a class of the TooltipsWindow.
rubidium <rubidium@openttd.org>
parents: 9179
diff changeset
792 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
793
13407
dab0b75044af (svn r17916) -Codechange: Make tooltips window use pure nested widgets.
alberth <alberth@openttd.org>
parents: 13405
diff changeset
794 virtual Point OnInitialPosition(const WindowDesc *desc, int16 sm_width, int16 sm_height, int window_number)
dab0b75044af (svn r17916) -Codechange: Make tooltips window use pure nested widgets.
alberth <alberth@openttd.org>
parents: 13405
diff changeset
795 {
13478
d0e25c1f205e (svn r17997) -Codechange: Introduce functions for querying top and bottom of the main view.
alberth <alberth@openttd.org>
parents: 13466
diff changeset
796 /* Find the free screen space between the main toolbar at the top, and the statusbar at the bottom.
13431
80d05eb53cfa (svn r17940) -Codechange: Use real y position of the main toolbar and status bar instead of hardcoded sizes for tooltip and for error message windows.
alberth <alberth@openttd.org>
parents: 13426
diff changeset
797 * Add a fixed distance 2 so the tooltip floats free from both bars.
80d05eb53cfa (svn r17940) -Codechange: Use real y position of the main toolbar and status bar instead of hardcoded sizes for tooltip and for error message windows.
alberth <alberth@openttd.org>
parents: 13426
diff changeset
798 */
13478
d0e25c1f205e (svn r17997) -Codechange: Introduce functions for querying top and bottom of the main view.
alberth <alberth@openttd.org>
parents: 13466
diff changeset
799 int scr_top = GetMainViewTop() + 2;
d0e25c1f205e (svn r17997) -Codechange: Introduce functions for querying top and bottom of the main view.
alberth <alberth@openttd.org>
parents: 13466
diff changeset
800 int scr_bot = GetMainViewBottom() - 2;
13431
80d05eb53cfa (svn r17940) -Codechange: Use real y position of the main toolbar and status bar instead of hardcoded sizes for tooltip and for error message windows.
alberth <alberth@openttd.org>
parents: 13426
diff changeset
801
13408
763cbbda43f0 (svn r17917) -Codechange: Move tooltip initial position calculation into the tooltip window class.
alberth <alberth@openttd.org>
parents: 13407
diff changeset
802 Point pt;
763cbbda43f0 (svn r17917) -Codechange: Move tooltip initial position calculation into the tooltip window class.
alberth <alberth@openttd.org>
parents: 13407
diff changeset
803
763cbbda43f0 (svn r17917) -Codechange: Move tooltip initial position calculation into the tooltip window class.
alberth <alberth@openttd.org>
parents: 13407
diff changeset
804 /* Correctly position the tooltip position, watch out for window and cursor size
763cbbda43f0 (svn r17917) -Codechange: Move tooltip initial position calculation into the tooltip window class.
alberth <alberth@openttd.org>
parents: 13407
diff changeset
805 * Clamp value to below main toolbar and above statusbar. If tooltip would
763cbbda43f0 (svn r17917) -Codechange: Move tooltip initial position calculation into the tooltip window class.
alberth <alberth@openttd.org>
parents: 13407
diff changeset
806 * go below window, flip it so it is shown above the cursor */
13431
80d05eb53cfa (svn r17940) -Codechange: Use real y position of the main toolbar and status bar instead of hardcoded sizes for tooltip and for error message windows.
alberth <alberth@openttd.org>
parents: 13426
diff changeset
807 pt.y = Clamp(_cursor.pos.y + _cursor.size.y + _cursor.offs.y + 5, scr_top, scr_bot);
80d05eb53cfa (svn r17940) -Codechange: Use real y position of the main toolbar and status bar instead of hardcoded sizes for tooltip and for error message windows.
alberth <alberth@openttd.org>
parents: 13426
diff changeset
808 if (pt.y + sm_height > scr_bot) pt.y = min(_cursor.pos.y + _cursor.offs.y - 5, scr_bot) - sm_height;
13408
763cbbda43f0 (svn r17917) -Codechange: Move tooltip initial position calculation into the tooltip window class.
alberth <alberth@openttd.org>
parents: 13407
diff changeset
809 pt.x = Clamp(_cursor.pos.x - (sm_width >> 1), 0, _screen.width - sm_width);
763cbbda43f0 (svn r17917) -Codechange: Move tooltip initial position calculation into the tooltip window class.
alberth <alberth@openttd.org>
parents: 13407
diff changeset
810
763cbbda43f0 (svn r17917) -Codechange: Move tooltip initial position calculation into the tooltip window class.
alberth <alberth@openttd.org>
parents: 13407
diff changeset
811 return pt;
13407
dab0b75044af (svn r17916) -Codechange: Make tooltips window use pure nested widgets.
alberth <alberth@openttd.org>
parents: 13405
diff changeset
812 }
dab0b75044af (svn r17916) -Codechange: Make tooltips window use pure nested widgets.
alberth <alberth@openttd.org>
parents: 13405
diff changeset
813
13705
8dee47e001b2 (svn r18230) -Codechange: Allow fill stepsize to be set from Window::UpdateWidgetSize().
alberth <alberth@openttd.org>
parents: 13704
diff changeset
814 virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
9186
c5c545191a71 (svn r13049) -Codechange: make a class of the TooltipsWindow.
rubidium <rubidium@openttd.org>
parents: 9179
diff changeset
815 {
13407
dab0b75044af (svn r17916) -Codechange: Make tooltips window use pure nested widgets.
alberth <alberth@openttd.org>
parents: 13405
diff changeset
816 /* There is only one widget. */
13409
955895a91fe4 (svn r17918) -Codechange: Move tooltip size calculation into the tooltip window class.
alberth <alberth@openttd.org>
parents: 13408
diff changeset
817 for (uint i = 0; i != this->paramcount; i++) SetDParam(i, this->params[i]);
955895a91fe4 (svn r17918) -Codechange: Move tooltip size calculation into the tooltip window class.
alberth <alberth@openttd.org>
parents: 13408
diff changeset
818
955895a91fe4 (svn r17918) -Codechange: Move tooltip size calculation into the tooltip window class.
alberth <alberth@openttd.org>
parents: 13408
diff changeset
819 size->width = min(GetStringBoundingBox(this->string_id).width, 194);
955895a91fe4 (svn r17918) -Codechange: Move tooltip size calculation into the tooltip window class.
alberth <alberth@openttd.org>
parents: 13408
diff changeset
820 size->height = GetStringHeight(this->string_id, size->width);
955895a91fe4 (svn r17918) -Codechange: Move tooltip size calculation into the tooltip window class.
alberth <alberth@openttd.org>
parents: 13408
diff changeset
821
955895a91fe4 (svn r17918) -Codechange: Move tooltip size calculation into the tooltip window class.
alberth <alberth@openttd.org>
parents: 13408
diff changeset
822 /* Increase slightly to have some space around the box. */
955895a91fe4 (svn r17918) -Codechange: Move tooltip size calculation into the tooltip window class.
alberth <alberth@openttd.org>
parents: 13408
diff changeset
823 size->width += 2 + WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT;
955895a91fe4 (svn r17918) -Codechange: Move tooltip size calculation into the tooltip window class.
alberth <alberth@openttd.org>
parents: 13408
diff changeset
824 size->height += 2 + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM;
13407
dab0b75044af (svn r17916) -Codechange: Make tooltips window use pure nested widgets.
alberth <alberth@openttd.org>
parents: 13405
diff changeset
825 }
dab0b75044af (svn r17916) -Codechange: Make tooltips window use pure nested widgets.
alberth <alberth@openttd.org>
parents: 13405
diff changeset
826
dab0b75044af (svn r17916) -Codechange: Make tooltips window use pure nested widgets.
alberth <alberth@openttd.org>
parents: 13405
diff changeset
827 virtual void DrawWidget(const Rect &r, int widget) const
dab0b75044af (svn r17916) -Codechange: Make tooltips window use pure nested widgets.
alberth <alberth@openttd.org>
parents: 13405
diff changeset
828 {
dab0b75044af (svn r17916) -Codechange: Make tooltips window use pure nested widgets.
alberth <alberth@openttd.org>
parents: 13405
diff changeset
829 /* There is only one widget. */
dab0b75044af (svn r17916) -Codechange: Make tooltips window use pure nested widgets.
alberth <alberth@openttd.org>
parents: 13405
diff changeset
830 GfxFillRect(r.left, r.top, r.right, r.bottom, 0);
dab0b75044af (svn r17916) -Codechange: Make tooltips window use pure nested widgets.
alberth <alberth@openttd.org>
parents: 13405
diff changeset
831 GfxFillRect(r.left + 1, r.top + 1, r.right - 1, r.bottom - 1, 0x44);
9186
c5c545191a71 (svn r13049) -Codechange: make a class of the TooltipsWindow.
rubidium <rubidium@openttd.org>
parents: 9179
diff changeset
832
c5c545191a71 (svn r13049) -Codechange: make a class of the TooltipsWindow.
rubidium <rubidium@openttd.org>
parents: 9179
diff changeset
833 for (uint arg = 0; arg < this->paramcount; arg++) {
c5c545191a71 (svn r13049) -Codechange: make a class of the TooltipsWindow.
rubidium <rubidium@openttd.org>
parents: 9179
diff changeset
834 SetDParam(arg, this->params[arg]);
c5c545191a71 (svn r13049) -Codechange: make a class of the TooltipsWindow.
rubidium <rubidium@openttd.org>
parents: 9179
diff changeset
835 }
13407
dab0b75044af (svn r17916) -Codechange: Make tooltips window use pure nested widgets.
alberth <alberth@openttd.org>
parents: 13405
diff changeset
836 DrawStringMultiLine(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, r.top + WD_FRAMERECT_TOP, r.bottom - WD_FRAMERECT_BOTTOM, this->string_id, TC_FROMSTRING, SA_CENTER);
dab0b75044af (svn r17916) -Codechange: Make tooltips window use pure nested widgets.
alberth <alberth@openttd.org>
parents: 13405
diff changeset
837 }
dab0b75044af (svn r17916) -Codechange: Make tooltips window use pure nested widgets.
alberth <alberth@openttd.org>
parents: 13405
diff changeset
838
dab0b75044af (svn r17916) -Codechange: Make tooltips window use pure nested widgets.
alberth <alberth@openttd.org>
parents: 13405
diff changeset
839
dab0b75044af (svn r17916) -Codechange: Make tooltips window use pure nested widgets.
alberth <alberth@openttd.org>
parents: 13405
diff changeset
840 virtual void OnPaint()
dab0b75044af (svn r17916) -Codechange: Make tooltips window use pure nested widgets.
alberth <alberth@openttd.org>
parents: 13405
diff changeset
841 {
dab0b75044af (svn r17916) -Codechange: Make tooltips window use pure nested widgets.
alberth <alberth@openttd.org>
parents: 13405
diff changeset
842 this->DrawWidgets();
9186
c5c545191a71 (svn r13049) -Codechange: make a class of the TooltipsWindow.
rubidium <rubidium@openttd.org>
parents: 9179
diff changeset
843 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
844
9186
c5c545191a71 (svn r13049) -Codechange: make a class of the TooltipsWindow.
rubidium <rubidium@openttd.org>
parents: 9179
diff changeset
845 virtual void OnMouseLoop()
c5c545191a71 (svn r13049) -Codechange: make a class of the TooltipsWindow.
rubidium <rubidium@openttd.org>
parents: 9179
diff changeset
846 {
c5c545191a71 (svn r13049) -Codechange: make a class of the TooltipsWindow.
rubidium <rubidium@openttd.org>
parents: 9179
diff changeset
847 /* We can show tooltips while dragging tools. These are shown as long as
c5c545191a71 (svn r13049) -Codechange: make a class of the TooltipsWindow.
rubidium <rubidium@openttd.org>
parents: 9179
diff changeset
848 * we are dragging the tool. Normal tooltips work with rmb */
9781
5ab8b1b156bb (svn r13922) -Codechange: Move measurement-tooltip related stuff out of the general tooltip window.
frosch <frosch@openttd.org>
parents: 9752
diff changeset
849 if (this->use_left_mouse_button ? !_left_button_down : !_right_button_down) delete this;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
850 }
9186
c5c545191a71 (svn r13049) -Codechange: make a class of the TooltipsWindow.
rubidium <rubidium@openttd.org>
parents: 9179
diff changeset
851 };
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
852
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
853 /** Shows a tooltip
6481
85a1a79387a2 (svn r9662) -Documentation: Doxygen corrections and @file omissions
belugas <belugas@openttd.org>
parents: 6453
diff changeset
854 * @param str String to be displayed
85a1a79387a2 (svn r9662) -Documentation: Doxygen corrections and @file omissions
belugas <belugas@openttd.org>
parents: 6453
diff changeset
855 * @param paramcount number of params to deal with
9781
5ab8b1b156bb (svn r13922) -Codechange: Move measurement-tooltip related stuff out of the general tooltip window.
frosch <frosch@openttd.org>
parents: 9752
diff changeset
856 * @param params (optional) up to 5 pieces of additional information that may be added to a tooltip
5ab8b1b156bb (svn r13922) -Codechange: Move measurement-tooltip related stuff out of the general tooltip window.
frosch <frosch@openttd.org>
parents: 9752
diff changeset
857 * @param use_left_mouse_button close the tooltip when the left (true) or right (false) mousebutton is released
5ab8b1b156bb (svn r13922) -Codechange: Move measurement-tooltip related stuff out of the general tooltip window.
frosch <frosch@openttd.org>
parents: 9752
diff changeset
858 */
5ab8b1b156bb (svn r13922) -Codechange: Move measurement-tooltip related stuff out of the general tooltip window.
frosch <frosch@openttd.org>
parents: 9752
diff changeset
859 void GuiShowTooltips(StringID str, uint paramcount, const uint64 params[], bool use_left_mouse_button)
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
860 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
861 DeleteWindowById(WC_TOOLTIPS, 0);
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
862
9781
5ab8b1b156bb (svn r13922) -Codechange: Move measurement-tooltip related stuff out of the general tooltip window.
frosch <frosch@openttd.org>
parents: 9752
diff changeset
863 if (str == STR_NULL) return;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
864
13409
955895a91fe4 (svn r17918) -Codechange: Move tooltip size calculation into the tooltip window class.
alberth <alberth@openttd.org>
parents: 13408
diff changeset
865 new TooltipsWindow(str, paramcount, params, use_left_mouse_button);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
866 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
867
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
868 /* Delete a character at the caret position in a text buf.
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
869 * If backspace is set, delete the character before the caret,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
870 * else delete the character after it. */
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
871 static void DelChar(Textbuf *tb, bool backspace)
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
872 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
873 WChar c;
6214
0716cb7258dd (svn r9011) -Codechange (r9003): Rework Utf8PrevChar so that it returns a pointer to the previous UTF8 character's first byte instead of a byte-length offset
Darkvater <Darkvater@openttd.org>
parents: 6211
diff changeset
874 char *s = tb->buf + tb->caretpos;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
875
6214
0716cb7258dd (svn r9011) -Codechange (r9003): Rework Utf8PrevChar so that it returns a pointer to the previous UTF8 character's first byte instead of a byte-length offset
Darkvater <Darkvater@openttd.org>
parents: 6211
diff changeset
876 if (backspace) s = Utf8PrevChar(s);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
877
9390
45c874394355 (svn r13301) -Fix [FS#1997]: resolve more MSVC 9 x64 warnings.
rubidium <rubidium@openttd.org>
parents: 9354
diff changeset
878 uint16 len = (uint16)Utf8Decode(&c, s);
8738
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
879 uint width = GetCharacterWidth(FS_NORMAL, c);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
880
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
881 tb->width -= width;
6214
0716cb7258dd (svn r9011) -Codechange (r9003): Rework Utf8PrevChar so that it returns a pointer to the previous UTF8 character's first byte instead of a byte-length offset
Darkvater <Darkvater@openttd.org>
parents: 6211
diff changeset
882 if (backspace) {
0716cb7258dd (svn r9011) -Codechange (r9003): Rework Utf8PrevChar so that it returns a pointer to the previous UTF8 character's first byte instead of a byte-length offset
Darkvater <Darkvater@openttd.org>
parents: 6211
diff changeset
883 tb->caretpos -= len;
0716cb7258dd (svn r9011) -Codechange (r9003): Rework Utf8PrevChar so that it returns a pointer to the previous UTF8 character's first byte instead of a byte-length offset
Darkvater <Darkvater@openttd.org>
parents: 6211
diff changeset
884 tb->caretxoffs -= width;
0716cb7258dd (svn r9011) -Codechange (r9003): Rework Utf8PrevChar so that it returns a pointer to the previous UTF8 character's first byte instead of a byte-length offset
Darkvater <Darkvater@openttd.org>
parents: 6211
diff changeset
885 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
886
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
887 /* Move the remaining characters over the marker */
10276
a5286e772120 (svn r14514) -Codechange: use 'size' instead of 'length' for querystring and textbuf, explicitly say it includes the terminating zero
smatz <smatz@openttd.org>
parents: 10208
diff changeset
888 memmove(s, s + len, tb->size - (s - tb->buf) - len);
a5286e772120 (svn r14514) -Codechange: use 'size' instead of 'length' for querystring and textbuf, explicitly say it includes the terminating zero
smatz <smatz@openttd.org>
parents: 10208
diff changeset
889 tb->size -= len;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
890 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
891
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
892 /**
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
893 * Delete a character from a textbuffer, either with 'Delete' or 'Backspace'
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
894 * The character is delete from the position the caret is at
6481
85a1a79387a2 (svn r9662) -Documentation: Doxygen corrections and @file omissions
belugas <belugas@openttd.org>
parents: 6453
diff changeset
895 * @param tb Textbuf type to be changed
85a1a79387a2 (svn r9662) -Documentation: Doxygen corrections and @file omissions
belugas <belugas@openttd.org>
parents: 6453
diff changeset
896 * @param delmode Type of deletion, either WKC_BACKSPACE or WKC_DELETE
7372
694c7b595661 (svn r10736) -Fix: Correct all mispellings of 'successful'.
peter1138 <peter1138@openttd.org>
parents: 7346
diff changeset
897 * @return Return true on successful change of Textbuf, or false otherwise
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
898 */
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
899 bool DeleteTextBufferChar(Textbuf *tb, int delmode)
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
900 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
901 if (delmode == WKC_BACKSPACE && tb->caretpos != 0) {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
902 DelChar(tb, true);
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
903 return true;
10276
a5286e772120 (svn r14514) -Codechange: use 'size' instead of 'length' for querystring and textbuf, explicitly say it includes the terminating zero
smatz <smatz@openttd.org>
parents: 10208
diff changeset
904 } else if (delmode == WKC_DELETE && tb->caretpos < tb->size - 1) {
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
905 DelChar(tb, false);
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
906 return true;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
907 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
908
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
909 return false;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
910 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
911
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
912 /**
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
913 * Delete every character in the textbuffer
6481
85a1a79387a2 (svn r9662) -Documentation: Doxygen corrections and @file omissions
belugas <belugas@openttd.org>
parents: 6453
diff changeset
914 * @param tb Textbuf buffer to be emptied
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
915 */
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
916 void DeleteTextBufferAll(Textbuf *tb)
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
917 {
10276
a5286e772120 (svn r14514) -Codechange: use 'size' instead of 'length' for querystring and textbuf, explicitly say it includes the terminating zero
smatz <smatz@openttd.org>
parents: 10208
diff changeset
918 memset(tb->buf, 0, tb->maxsize);
a5286e772120 (svn r14514) -Codechange: use 'size' instead of 'length' for querystring and textbuf, explicitly say it includes the terminating zero
smatz <smatz@openttd.org>
parents: 10208
diff changeset
919 tb->size = 1;
a5286e772120 (svn r14514) -Codechange: use 'size' instead of 'length' for querystring and textbuf, explicitly say it includes the terminating zero
smatz <smatz@openttd.org>
parents: 10208
diff changeset
920 tb->width = tb->caretpos = tb->caretxoffs = 0;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
921 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
922
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
923 /**
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
924 * Insert a character to a textbuffer. If maxwidth of the Textbuf is zero,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
925 * we don't care about the visual-length but only about the physical
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
926 * length of the string
6481
85a1a79387a2 (svn r9662) -Documentation: Doxygen corrections and @file omissions
belugas <belugas@openttd.org>
parents: 6453
diff changeset
927 * @param tb Textbuf type to be changed
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
928 * @param key Character to be inserted
7372
694c7b595661 (svn r10736) -Fix: Correct all mispellings of 'successful'.
peter1138 <peter1138@openttd.org>
parents: 7346
diff changeset
929 * @return Return true on successful change of Textbuf, or false otherwise
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
930 */
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
931 bool InsertTextBufferChar(Textbuf *tb, WChar key)
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
932 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
933 const byte charwidth = GetCharacterWidth(FS_NORMAL, key);
9390
45c874394355 (svn r13301) -Fix [FS#1997]: resolve more MSVC 9 x64 warnings.
rubidium <rubidium@openttd.org>
parents: 9354
diff changeset
934 uint16 len = (uint16)Utf8CharLen(key);
10276
a5286e772120 (svn r14514) -Codechange: use 'size' instead of 'length' for querystring and textbuf, explicitly say it includes the terminating zero
smatz <smatz@openttd.org>
parents: 10208
diff changeset
935 if (tb->size + len <= tb->maxsize && (tb->maxwidth == 0 || tb->width + charwidth <= tb->maxwidth)) {
a5286e772120 (svn r14514) -Codechange: use 'size' instead of 'length' for querystring and textbuf, explicitly say it includes the terminating zero
smatz <smatz@openttd.org>
parents: 10208
diff changeset
936 memmove(tb->buf + tb->caretpos + len, tb->buf + tb->caretpos, tb->size - tb->caretpos);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
937 Utf8Encode(tb->buf + tb->caretpos, key);
10276
a5286e772120 (svn r14514) -Codechange: use 'size' instead of 'length' for querystring and textbuf, explicitly say it includes the terminating zero
smatz <smatz@openttd.org>
parents: 10208
diff changeset
938 tb->size += len;
a5286e772120 (svn r14514) -Codechange: use 'size' instead of 'length' for querystring and textbuf, explicitly say it includes the terminating zero
smatz <smatz@openttd.org>
parents: 10208
diff changeset
939 tb->width += charwidth;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
940
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
941 tb->caretpos += len;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
942 tb->caretxoffs += charwidth;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
943 return true;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
944 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
945 return false;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
946 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
947
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
948 /**
13201
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
949 * Insert a chunk of text from the clipboard onto the textbuffer. Get TEXT clipboard
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
950 * and append this up to the maximum length (either absolute or screenlength). If maxlength
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
951 * is zero, we don't care about the screenlength but only about the physical length of the string
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
952 * @param tb Textbuf type to be changed
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
953 * @return true on successful change of Textbuf, or false otherwise
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
954 */
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
955 bool InsertTextBufferClipboard(Textbuf *tb)
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
956 {
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
957 char utf8_buf[512];
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
958
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
959 if (!GetClipboardContents(utf8_buf, lengthof(utf8_buf))) return false;
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
960
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
961 uint16 width = 0, length = 0;
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
962 WChar c;
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
963 for (const char *ptr = utf8_buf; (c = Utf8Consume(&ptr)) != '\0';) {
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
964 if (!IsPrintable(c)) break;
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
965
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
966 byte len = Utf8CharLen(c);
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
967 if (tb->size + length + len > tb->maxsize) break;
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
968
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
969 byte charwidth = GetCharacterWidth(FS_NORMAL, c);
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
970 if (tb->maxwidth != 0 && width + tb->width + charwidth > tb->maxwidth) break;
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
971
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
972 width += charwidth;
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
973 length += len;
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
974 }
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
975
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
976 if (length == 0) return false;
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
977
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
978 memmove(tb->buf + tb->caretpos + length, tb->buf + tb->caretpos, tb->size - tb->caretpos);
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
979 memcpy(tb->buf + tb->caretpos, utf8_buf, length);
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
980 tb->width += width;
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
981 tb->caretxoffs += width;
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
982
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
983 tb->size += length;
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
984 tb->caretpos += length;
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
985 assert(tb->size <= tb->maxsize);
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
986 tb->buf[tb->size - 1] = '\0'; // terminating zero
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
987
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
988 return true;
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
989 }
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
990
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
991 /**
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
992 * Handle text navigation with arrow keys left/right.
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
993 * This defines where the caret will blink and the next characer interaction will occur
6481
85a1a79387a2 (svn r9662) -Documentation: Doxygen corrections and @file omissions
belugas <belugas@openttd.org>
parents: 6453
diff changeset
994 * @param tb Textbuf type where navigation occurs
85a1a79387a2 (svn r9662) -Documentation: Doxygen corrections and @file omissions
belugas <belugas@openttd.org>
parents: 6453
diff changeset
995 * @param navmode Direction in which navigation occurs WKC_LEFT, WKC_RIGHT, WKC_END, WKC_HOME
7372
694c7b595661 (svn r10736) -Fix: Correct all mispellings of 'successful'.
peter1138 <peter1138@openttd.org>
parents: 7346
diff changeset
996 * @return Return true on successful change of Textbuf, or false otherwise
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
997 */
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
998 bool MoveTextBufferPos(Textbuf *tb, int navmode)
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
999 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1000 switch (navmode) {
8738
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
1001 case WKC_LEFT:
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
1002 if (tb->caretpos != 0) {
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
1003 WChar c;
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
1004 const char *s = Utf8PrevChar(tb->buf + tb->caretpos);
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
1005 Utf8Decode(&c, s);
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
1006 tb->caretpos = s - tb->buf; // -= (tb->buf + tb->caretpos - s)
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
1007 tb->caretxoffs -= GetCharacterWidth(FS_NORMAL, c);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1008
8738
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
1009 return true;
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
1010 }
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
1011 break;
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
1012
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
1013 case WKC_RIGHT:
10276
a5286e772120 (svn r14514) -Codechange: use 'size' instead of 'length' for querystring and textbuf, explicitly say it includes the terminating zero
smatz <smatz@openttd.org>
parents: 10208
diff changeset
1014 if (tb->caretpos < tb->size - 1) {
8738
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
1015 WChar c;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1016
9390
45c874394355 (svn r13301) -Fix [FS#1997]: resolve more MSVC 9 x64 warnings.
rubidium <rubidium@openttd.org>
parents: 9354
diff changeset
1017 tb->caretpos += (uint16)Utf8Decode(&c, tb->buf + tb->caretpos);
8738
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
1018 tb->caretxoffs += GetCharacterWidth(FS_NORMAL, c);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1019
8738
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
1020 return true;
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
1021 }
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
1022 break;
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
1023
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
1024 case WKC_HOME:
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
1025 tb->caretpos = 0;
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
1026 tb->caretxoffs = 0;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1027 return true;
8738
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
1028
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
1029 case WKC_END:
10276
a5286e772120 (svn r14514) -Codechange: use 'size' instead of 'length' for querystring and textbuf, explicitly say it includes the terminating zero
smatz <smatz@openttd.org>
parents: 10208
diff changeset
1030 tb->caretpos = tb->size - 1;
8738
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
1031 tb->caretxoffs = tb->width;
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
1032 return true;
8819
98ec34b70edd (svn r12565) -Cleanup: variable scope in misc\*.cpp
smatz <smatz@openttd.org>
parents: 8809
diff changeset
1033
98ec34b70edd (svn r12565) -Cleanup: variable scope in misc\*.cpp
smatz <smatz@openttd.org>
parents: 8809
diff changeset
1034 default:
98ec34b70edd (svn r12565) -Cleanup: variable scope in misc\*.cpp
smatz <smatz@openttd.org>
parents: 8809
diff changeset
1035 break;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1036 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1037
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1038 return false;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1039 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1040
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1041 /**
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1042 * Initialize the textbuffer by supplying it the buffer to write into
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1043 * and the maximum length of this buffer
6481
85a1a79387a2 (svn r9662) -Documentation: Doxygen corrections and @file omissions
belugas <belugas@openttd.org>
parents: 6453
diff changeset
1044 * @param tb Textbuf type which is getting initialized
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1045 * @param buf the buffer that will be holding the data for input
10276
a5286e772120 (svn r14514) -Codechange: use 'size' instead of 'length' for querystring and textbuf, explicitly say it includes the terminating zero
smatz <smatz@openttd.org>
parents: 10208
diff changeset
1046 * @param maxsize maximum size in bytes, including terminating '\0'
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1047 * @param maxwidth maximum length in pixels of this buffer. If reached, buffer
10276
a5286e772120 (svn r14514) -Codechange: use 'size' instead of 'length' for querystring and textbuf, explicitly say it includes the terminating zero
smatz <smatz@openttd.org>
parents: 10208
diff changeset
1048 * cannot grow, even if maxsize would allow because there is space. Width
a5286e772120 (svn r14514) -Codechange: use 'size' instead of 'length' for querystring and textbuf, explicitly say it includes the terminating zero
smatz <smatz@openttd.org>
parents: 10208
diff changeset
1049 * of zero '0' means the buffer is only restricted by maxsize */
a5286e772120 (svn r14514) -Codechange: use 'size' instead of 'length' for querystring and textbuf, explicitly say it includes the terminating zero
smatz <smatz@openttd.org>
parents: 10208
diff changeset
1050 void InitializeTextBuffer(Textbuf *tb, char *buf, uint16 maxsize, uint16 maxwidth)
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1051 {
10276
a5286e772120 (svn r14514) -Codechange: use 'size' instead of 'length' for querystring and textbuf, explicitly say it includes the terminating zero
smatz <smatz@openttd.org>
parents: 10208
diff changeset
1052 assert(maxsize != 0);
a5286e772120 (svn r14514) -Codechange: use 'size' instead of 'length' for querystring and textbuf, explicitly say it includes the terminating zero
smatz <smatz@openttd.org>
parents: 10208
diff changeset
1053
a5286e772120 (svn r14514) -Codechange: use 'size' instead of 'length' for querystring and textbuf, explicitly say it includes the terminating zero
smatz <smatz@openttd.org>
parents: 10208
diff changeset
1054 tb->buf = buf;
a5286e772120 (svn r14514) -Codechange: use 'size' instead of 'length' for querystring and textbuf, explicitly say it includes the terminating zero
smatz <smatz@openttd.org>
parents: 10208
diff changeset
1055 tb->maxsize = maxsize;
a5286e772120 (svn r14514) -Codechange: use 'size' instead of 'length' for querystring and textbuf, explicitly say it includes the terminating zero
smatz <smatz@openttd.org>
parents: 10208
diff changeset
1056 tb->maxwidth = maxwidth;
a5286e772120 (svn r14514) -Codechange: use 'size' instead of 'length' for querystring and textbuf, explicitly say it includes the terminating zero
smatz <smatz@openttd.org>
parents: 10208
diff changeset
1057 tb->caret = true;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1058 UpdateTextBufferSize(tb);
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1059 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1060
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1061 /**
6481
85a1a79387a2 (svn r9662) -Documentation: Doxygen corrections and @file omissions
belugas <belugas@openttd.org>
parents: 6453
diff changeset
1062 * Update Textbuf type with its actual physical character and screenlength
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1063 * Get the count of characters in the string as well as the width in pixels.
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1064 * Useful when copying in a larger amount of text at once
6481
85a1a79387a2 (svn r9662) -Documentation: Doxygen corrections and @file omissions
belugas <belugas@openttd.org>
parents: 6453
diff changeset
1065 * @param tb Textbuf type which length is calculated
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1066 */
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1067 void UpdateTextBufferSize(Textbuf *tb)
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1068 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1069 const char *buf = tb->buf;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1070
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1071 tb->width = 0;
10276
a5286e772120 (svn r14514) -Codechange: use 'size' instead of 'length' for querystring and textbuf, explicitly say it includes the terminating zero
smatz <smatz@openttd.org>
parents: 10208
diff changeset
1072 tb->size = 1; // terminating zero
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1073
10276
a5286e772120 (svn r14514) -Codechange: use 'size' instead of 'length' for querystring and textbuf, explicitly say it includes the terminating zero
smatz <smatz@openttd.org>
parents: 10208
diff changeset
1074 WChar c;
a5286e772120 (svn r14514) -Codechange: use 'size' instead of 'length' for querystring and textbuf, explicitly say it includes the terminating zero
smatz <smatz@openttd.org>
parents: 10208
diff changeset
1075 while ((c = Utf8Consume(&buf)) != '\0') {
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1076 tb->width += GetCharacterWidth(FS_NORMAL, c);
10276
a5286e772120 (svn r14514) -Codechange: use 'size' instead of 'length' for querystring and textbuf, explicitly say it includes the terminating zero
smatz <smatz@openttd.org>
parents: 10208
diff changeset
1077 tb->size += Utf8CharLen(c);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1078 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1079
10276
a5286e772120 (svn r14514) -Codechange: use 'size' instead of 'length' for querystring and textbuf, explicitly say it includes the terminating zero
smatz <smatz@openttd.org>
parents: 10208
diff changeset
1080 assert(tb->size <= tb->maxsize);
a5286e772120 (svn r14514) -Codechange: use 'size' instead of 'length' for querystring and textbuf, explicitly say it includes the terminating zero
smatz <smatz@openttd.org>
parents: 10208
diff changeset
1081
a5286e772120 (svn r14514) -Codechange: use 'size' instead of 'length' for querystring and textbuf, explicitly say it includes the terminating zero
smatz <smatz@openttd.org>
parents: 10208
diff changeset
1082 tb->caretpos = tb->size - 1;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1083 tb->caretxoffs = tb->width;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1084 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1085
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1086 bool HandleCaret(Textbuf *tb)
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1087 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1088 /* caret changed? */
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1089 bool b = !!(_caret_timer & 0x20);
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1090
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1091 if (b != tb->caret) {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1092 tb->caret = b;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1093 return true;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1094 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1095 return false;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1096 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1097
11081
0a26df8849a2 (svn r15424) -Codechange: make it possible to have multiple windows with edit box open simultaniously (Zuu).
rubidium <rubidium@openttd.org>
parents: 10960
diff changeset
1098 bool QueryString::HasEditBoxFocus(const Window *w, int wid) const
0a26df8849a2 (svn r15424) -Codechange: make it possible to have multiple windows with edit box open simultaniously (Zuu).
rubidium <rubidium@openttd.org>
parents: 10960
diff changeset
1099 {
12103
eecff8281292 (svn r16516) -Codechange: Added click and drag handling for nested widgets.
alberth <alberth@openttd.org>
parents: 12080
diff changeset
1100 if (w->IsWidgetGloballyFocused(wid)) return true;
eecff8281292 (svn r16516) -Codechange: Added click and drag handling for nested widgets.
alberth <alberth@openttd.org>
parents: 12080
diff changeset
1101 if (w->window_class != WC_OSK || _focused_window != w->parent) return false;
13570
4a7574282ac8 (svn r18092) -Codechange: remove support for the unnested widgets
rubidium <rubidium@openttd.org>
parents: 13564
diff changeset
1102 return w->parent->nested_focus != NULL && w->parent->nested_focus->type == WWT_EDITBOX;
11081
0a26df8849a2 (svn r15424) -Codechange: make it possible to have multiple windows with edit box open simultaniously (Zuu).
rubidium <rubidium@openttd.org>
parents: 10960
diff changeset
1103 }
0a26df8849a2 (svn r15424) -Codechange: make it possible to have multiple windows with edit box open simultaniously (Zuu).
rubidium <rubidium@openttd.org>
parents: 10960
diff changeset
1104
10295
7ebf43f7c36b (svn r14534) -Codechange [FS#2382]: Enumify magic return values of HandleEditBox function (Zuu)
glx <glx@openttd.org>
parents: 10276
diff changeset
1105 HandleEditBoxResult QueryString::HandleEditBoxKey(Window *w, int wid, uint16 key, uint16 keycode, Window::EventState &state)
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1106 {
11081
0a26df8849a2 (svn r15424) -Codechange: make it possible to have multiple windows with edit box open simultaniously (Zuu).
rubidium <rubidium@openttd.org>
parents: 10960
diff changeset
1107 if (!QueryString::HasEditBoxFocus(w, wid)) return HEBR_NOT_FOCUSED;
0a26df8849a2 (svn r15424) -Codechange: make it possible to have multiple windows with edit box open simultaniously (Zuu).
rubidium <rubidium@openttd.org>
parents: 10960
diff changeset
1108
9285
3b3f13cb6db6 (svn r13151) -Codechange: use an enum instead of bool as return type of OnKeyPress/OnCTRLStateChange to make it obvious what the return values mean.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
1109 state = Window::ES_HANDLED;
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1110
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1111 switch (keycode) {
10295
7ebf43f7c36b (svn r14534) -Codechange [FS#2382]: Enumify magic return values of HandleEditBox function (Zuu)
glx <glx@openttd.org>
parents: 10276
diff changeset
1112 case WKC_ESC: return HEBR_CANCEL;
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1113
10295
7ebf43f7c36b (svn r14534) -Codechange [FS#2382]: Enumify magic return values of HandleEditBox function (Zuu)
glx <glx@openttd.org>
parents: 10276
diff changeset
1114 case WKC_RETURN: case WKC_NUM_ENTER: return HEBR_CONFIRM;
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1115
13201
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
1116 #ifdef WITH_COCOA
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
1117 case (WKC_META | 'V'):
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
1118 #endif
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1119 case (WKC_CTRL | 'V'):
13034
6eb3f749890a (svn r17532) -Codechange: Rename several Invalidate functions to SetDirty for more consistency and distinguishability.
frosch <frosch@openttd.org>
parents: 13030
diff changeset
1120 if (InsertTextBufferClipboard(&this->text)) w->SetWidgetDirty(wid);
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1121 break;
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1122
13201
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
1123 #ifdef WITH_COCOA
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
1124 case (WKC_META | 'U'):
4ebcd304709f (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X.
michi_cc <michi_cc@openttd.org>
parents: 13186
diff changeset
1125 #endif
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1126 case (WKC_CTRL | 'U'):
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1127 DeleteTextBufferAll(&this->text);
13034
6eb3f749890a (svn r17532) -Codechange: Rename several Invalidate functions to SetDirty for more consistency and distinguishability.
frosch <frosch@openttd.org>
parents: 13030
diff changeset
1128 w->SetWidgetDirty(wid);
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1129 break;
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1130
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1131 case WKC_BACKSPACE: case WKC_DELETE:
13034
6eb3f749890a (svn r17532) -Codechange: Rename several Invalidate functions to SetDirty for more consistency and distinguishability.
frosch <frosch@openttd.org>
parents: 13030
diff changeset
1132 if (DeleteTextBufferChar(&this->text, keycode)) w->SetWidgetDirty(wid);
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1133 break;
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1134
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1135 case WKC_LEFT: case WKC_RIGHT: case WKC_END: case WKC_HOME:
13034
6eb3f749890a (svn r17532) -Codechange: Rename several Invalidate functions to SetDirty for more consistency and distinguishability.
frosch <frosch@openttd.org>
parents: 13030
diff changeset
1136 if (MoveTextBufferPos(&this->text, keycode)) w->SetWidgetDirty(wid);
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1137 break;
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1138
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1139 default:
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1140 if (IsValidChar(key, this->afilter)) {
13034
6eb3f749890a (svn r17532) -Codechange: Rename several Invalidate functions to SetDirty for more consistency and distinguishability.
frosch <frosch@openttd.org>
parents: 13030
diff changeset
1141 if (InsertTextBufferChar(&this->text, key)) w->SetWidgetDirty(wid);
11319
340c5c4473f7 (svn r15669) -Change: Key presses that are not handles by an input box are no longer marked as handled but given to other OnKeyPress handlers. This makes the global shortcuts like F1 work again when an input box is open.
yexo <yexo@openttd.org>
parents: 11256
diff changeset
1142 } else {
340c5c4473f7 (svn r15669) -Change: Key presses that are not handles by an input box are no longer marked as handled but given to other OnKeyPress handlers. This makes the global shortcuts like F1 work again when an input box is open.
yexo <yexo@openttd.org>
parents: 11256
diff changeset
1143 state = Window::ES_NOT_HANDLED;
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1144 }
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1145 }
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1146
10295
7ebf43f7c36b (svn r14534) -Codechange [FS#2382]: Enumify magic return values of HandleEditBox function (Zuu)
glx <glx@openttd.org>
parents: 10276
diff changeset
1147 return HEBR_EDITING;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1148 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1149
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1150 void QueryString::HandleEditBox(Window *w, int wid)
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1151 {
11081
0a26df8849a2 (svn r15424) -Codechange: make it possible to have multiple windows with edit box open simultaniously (Zuu).
rubidium <rubidium@openttd.org>
parents: 10960
diff changeset
1152 if (HasEditBoxFocus(w, wid) && HandleCaret(&this->text)) {
13034
6eb3f749890a (svn r17532) -Codechange: Rename several Invalidate functions to SetDirty for more consistency and distinguishability.
frosch <frosch@openttd.org>
parents: 13030
diff changeset
1153 w->SetWidgetDirty(wid);
10934
76f750feb4fc (svn r15273) -Fix: OSK of the chat did not update the caret graphics
rubidium <rubidium@openttd.org>
parents: 10816
diff changeset
1154 /* When we're not the OSK, notify 'our' OSK to redraw the widget,
76f750feb4fc (svn r15273) -Fix: OSK of the chat did not update the caret graphics
rubidium <rubidium@openttd.org>
parents: 10816
diff changeset
1155 * so the caret changes appropriately. */
76f750feb4fc (svn r15273) -Fix: OSK of the chat did not update the caret graphics
rubidium <rubidium@openttd.org>
parents: 10816
diff changeset
1156 if (w->window_class != WC_OSK) {
76f750feb4fc (svn r15273) -Fix: OSK of the chat did not update the caret graphics
rubidium <rubidium@openttd.org>
parents: 10816
diff changeset
1157 Window *w_osk = FindWindowById(WC_OSK, 0);
13169
1f44cefc7825 (svn r17674) -Codechange: replace SetDirty + OnInvalidateData with InvalidateData (which does the same). Also call InvalidateData in a few cases where that was actually meant.
rubidium <rubidium@openttd.org>
parents: 13163
diff changeset
1158 if (w_osk != NULL && w_osk->parent == w) w_osk->InvalidateData();
10934
76f750feb4fc (svn r15273) -Fix: OSK of the chat did not update the caret graphics
rubidium <rubidium@openttd.org>
parents: 10816
diff changeset
1159 }
76f750feb4fc (svn r15273) -Fix: OSK of the chat did not update the caret graphics
rubidium <rubidium@openttd.org>
parents: 10816
diff changeset
1160 }
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1161 }
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1162
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1163 void QueryString::DrawEditBox(Window *w, int wid)
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1164 {
13570
4a7574282ac8 (svn r18092) -Codechange: remove support for the unnested widgets
rubidium <rubidium@openttd.org>
parents: 13564
diff changeset
1165 const NWidgetBase *wi = w->GetWidget<NWidgetBase>(wid);
8737
b62e473a9029 (svn r12425) -Feature [FS#1846]: On Screen Keyboard for input fields so someone without a keyboard can enter text too. Patch by Dominik.
rubidium <rubidium@openttd.org>
parents: 8715
diff changeset
1166
13570
4a7574282ac8 (svn r18092) -Codechange: remove support for the unnested widgets
rubidium <rubidium@openttd.org>
parents: 13564
diff changeset
1167 assert((wi->type & WWT_MASK) == WWT_EDITBOX);
4a7574282ac8 (svn r18092) -Codechange: remove support for the unnested widgets
rubidium <rubidium@openttd.org>
parents: 13564
diff changeset
1168 int left = wi->pos_x;
4a7574282ac8 (svn r18092) -Codechange: remove support for the unnested widgets
rubidium <rubidium@openttd.org>
parents: 13564
diff changeset
1169 int right = wi->pos_x + wi->current_x - 1;
4a7574282ac8 (svn r18092) -Codechange: remove support for the unnested widgets
rubidium <rubidium@openttd.org>
parents: 13564
diff changeset
1170 int top = wi->pos_y;
4a7574282ac8 (svn r18092) -Codechange: remove support for the unnested widgets
rubidium <rubidium@openttd.org>
parents: 13564
diff changeset
1171 int bottom = wi->pos_y + wi->current_y - 1;
13008
3abc6651764b (svn r17502) -Codechange [FS#3184]: Extend QueryStringBaseWindow to support windows with nested widgets (by Terkhen with a few tweaks).
alberth <alberth@openttd.org>
parents: 12946
diff changeset
1172
3abc6651764b (svn r17502) -Codechange [FS#3184]: Extend QueryStringBaseWindow to support windows with nested widgets (by Terkhen with a few tweaks).
alberth <alberth@openttd.org>
parents: 12946
diff changeset
1173 GfxFillRect(left + 1, top + 1, right - 1, bottom - 1, 215);
8819
98ec34b70edd (svn r12565) -Cleanup: variable scope in misc\*.cpp
smatz <smatz@openttd.org>
parents: 8809
diff changeset
1174
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1175 /* Limit the drawing of the string inside the widget boundaries */
13008
3abc6651764b (svn r17502) -Codechange [FS#3184]: Extend QueryStringBaseWindow to support windows with nested widgets (by Terkhen with a few tweaks).
alberth <alberth@openttd.org>
parents: 12946
diff changeset
1176 DrawPixelInfo dpi;
13118
cf2b48d0ea33 (svn r17620) -Fix (r17502): edit box offsets were off. Now they're still off, but look (in my opinion) even better than before
rubidium <rubidium@openttd.org>
parents: 13096
diff changeset
1177 if (!FillDrawPixelInfo(&dpi, left + WD_FRAMERECT_LEFT, top + WD_FRAMERECT_TOP, right - left - WD_FRAMERECT_RIGHT, bottom - top - WD_FRAMERECT_BOTTOM)) return;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1178
8819
98ec34b70edd (svn r12565) -Cleanup: variable scope in misc\*.cpp
smatz <smatz@openttd.org>
parents: 8809
diff changeset
1179 DrawPixelInfo *old_dpi = _cur_dpi;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1180 _cur_dpi = &dpi;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1181
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1182 /* We will take the current widget length as maximum width, with a small
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1183 * space reserved at the end for the caret to show */
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1184 const Textbuf *tb = &this->text;
13008
3abc6651764b (svn r17502) -Codechange [FS#3184]: Extend QueryStringBaseWindow to support windows with nested widgets (by Terkhen with a few tweaks).
alberth <alberth@openttd.org>
parents: 12946
diff changeset
1185 int delta = min(0, (right - left) - tb->width - 10);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1186
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1187 if (tb->caretxoffs + delta < 0) delta = -tb->caretxoffs;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1188
11436
caf4456fbbf3 (svn r15794) -Codechange: remove the DoDrawString part of the old text drawing API
rubidium <rubidium@openttd.org>
parents: 11429
diff changeset
1189 DrawString(delta, tb->width, 0, tb->buf, TC_YELLOW);
11482
684bb10eddfc (svn r15843) -Codechange: with RTL the caret would always be drawn at the end of the textbox.
rubidium <rubidium@openttd.org>
parents: 11480
diff changeset
1190 if (HasEditBoxFocus(w, wid) && tb->caret) {
684bb10eddfc (svn r15843) -Codechange: with RTL the caret would always be drawn at the end of the textbox.
rubidium <rubidium@openttd.org>
parents: 11480
diff changeset
1191 int caret_width = GetStringBoundingBox("_").width;
684bb10eddfc (svn r15843) -Codechange: with RTL the caret would always be drawn at the end of the textbox.
rubidium <rubidium@openttd.org>
parents: 11480
diff changeset
1192 DrawString(tb->caretxoffs + delta, tb->caretxoffs + delta + caret_width, 0, "_", TC_WHITE);
684bb10eddfc (svn r15843) -Codechange: with RTL the caret would always be drawn at the end of the textbox.
rubidium <rubidium@openttd.org>
parents: 11480
diff changeset
1193 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1194
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1195 _cur_dpi = old_dpi;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1196 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1197
10563
2271e0ee2758 (svn r14820) -Codechange: use (the correct) enum-type instead of just int (Zuu)
rubidium <rubidium@openttd.org>
parents: 10547
diff changeset
1198 HandleEditBoxResult QueryStringBaseWindow::HandleEditBoxKey(int wid, uint16 key, uint16 keycode, EventState &state)
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1199 {
9285
3b3f13cb6db6 (svn r13151) -Codechange: use an enum instead of bool as return type of OnKeyPress/OnCTRLStateChange to make it obvious what the return values mean.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
1200 return this->QueryString::HandleEditBoxKey(this, wid, key, keycode, state);
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1201 }
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1202
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1203 void QueryStringBaseWindow::HandleEditBox(int wid)
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1204 {
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1205 this->QueryString::HandleEditBox(this, wid);
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1206 }
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1207
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1208 void QueryStringBaseWindow::DrawEditBox(int wid)
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1209 {
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1210 this->QueryString::DrawEditBox(this, wid);
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1211 }
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1212
10547
0b7be1ee92c5 (svn r14804) -Codechange: unify opening the OSK (Zuu)
rubidium <rubidium@openttd.org>
parents: 10533
diff changeset
1213 void QueryStringBaseWindow::OnOpenOSKWindow(int wid)
0b7be1ee92c5 (svn r14804) -Codechange: unify opening the OSK (Zuu)
rubidium <rubidium@openttd.org>
parents: 10533
diff changeset
1214 {
0b7be1ee92c5 (svn r14804) -Codechange: unify opening the OSK (Zuu)
rubidium <rubidium@openttd.org>
parents: 10533
diff changeset
1215 ShowOnScreenKeyboard(this, wid, 0, 0);
0b7be1ee92c5 (svn r14804) -Codechange: unify opening the OSK (Zuu)
rubidium <rubidium@openttd.org>
parents: 10533
diff changeset
1216 }
0b7be1ee92c5 (svn r14804) -Codechange: unify opening the OSK (Zuu)
rubidium <rubidium@openttd.org>
parents: 10533
diff changeset
1217
13456
93cf77b7a1ba (svn r17965) -Codechange: query string window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13436
diff changeset
1218 /** Widget of the string query window. */
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1219 enum QueryStringWidgets {
11652
f175ab1cccea (svn r16032) -Codechange: Completing widget numbers of query windows.
alberth <alberth@openttd.org>
parents: 11644
diff changeset
1220 QUERY_STR_WIDGET_CAPTION,
f175ab1cccea (svn r16032) -Codechange: Completing widget numbers of query windows.
alberth <alberth@openttd.org>
parents: 11644
diff changeset
1221 QUERY_STR_WIDGET_TEXT,
10148
81642658c8be (svn r14334) -Feature: ability to reset name to default/automatic value (for vehicles, engines, towns, groups, stations, waypoints, managers and companies)
smatz <smatz@openttd.org>
parents: 10145
diff changeset
1222 QUERY_STR_WIDGET_DEFAULT,
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1223 QUERY_STR_WIDGET_CANCEL,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1224 QUERY_STR_WIDGET_OK
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1225 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1226
13456
93cf77b7a1ba (svn r17965) -Codechange: query string window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13436
diff changeset
1227 /** Class for the string query window. */
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1228 struct QueryStringWindow : public QueryStringBaseWindow
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1229 {
13456
93cf77b7a1ba (svn r17965) -Codechange: query string window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13436
diff changeset
1230 QueryStringFlags flags; ///< Flags controlling behaviour of the window.
93cf77b7a1ba (svn r17965) -Codechange: query string window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13436
diff changeset
1231
93cf77b7a1ba (svn r17965) -Codechange: query string window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13436
diff changeset
1232 QueryStringWindow(StringID str, StringID caption, uint maxsize, uint maxwidth, const WindowDesc *desc, Window *parent, CharSetFilter afilter, QueryStringFlags flags) :
93cf77b7a1ba (svn r17965) -Codechange: query string window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13436
diff changeset
1233 QueryStringBaseWindow(maxsize)
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1234 {
13456
93cf77b7a1ba (svn r17965) -Codechange: query string window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13436
diff changeset
1235 GetString(this->edit_str_buf, str, &this->edit_str_buf[maxsize - 1]);
93cf77b7a1ba (svn r17965) -Codechange: query string window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13436
diff changeset
1236 this->edit_str_buf[maxsize - 1] = '\0';
93cf77b7a1ba (svn r17965) -Codechange: query string window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13436
diff changeset
1237
93cf77b7a1ba (svn r17965) -Codechange: query string window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13436
diff changeset
1238 if ((flags & QSF_ACCEPT_UNCHANGED) == 0) this->orig = strdup(this->edit_str_buf);
93cf77b7a1ba (svn r17965) -Codechange: query string window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13436
diff changeset
1239
93cf77b7a1ba (svn r17965) -Codechange: query string window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13436
diff changeset
1240 this->caption = caption;
93cf77b7a1ba (svn r17965) -Codechange: query string window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13436
diff changeset
1241 this->afilter = afilter;
93cf77b7a1ba (svn r17965) -Codechange: query string window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13436
diff changeset
1242 this->flags = flags;
93cf77b7a1ba (svn r17965) -Codechange: query string window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13436
diff changeset
1243 InitializeTextBuffer(&this->text, this->edit_str_buf, maxsize, maxwidth);
93cf77b7a1ba (svn r17965) -Codechange: query string window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13436
diff changeset
1244
93cf77b7a1ba (svn r17965) -Codechange: query string window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13436
diff changeset
1245 this->InitNested(desc);
93cf77b7a1ba (svn r17965) -Codechange: query string window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13436
diff changeset
1246
9226
843042b3278b (svn r13092) -Fix (r13042): don't add a variable in a subclass when the parent class already have it
glx <glx@openttd.org>
parents: 9186
diff changeset
1247 this->parent = parent;
13456
93cf77b7a1ba (svn r17965) -Codechange: query string window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13436
diff changeset
1248
11081
0a26df8849a2 (svn r15424) -Codechange: make it possible to have multiple windows with edit box open simultaniously (Zuu).
rubidium <rubidium@openttd.org>
parents: 10960
diff changeset
1249 this->SetFocusedWidget(QUERY_STR_WIDGET_TEXT);
13456
93cf77b7a1ba (svn r17965) -Codechange: query string window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13436
diff changeset
1250 this->LowerWidget(QUERY_STR_WIDGET_TEXT);
93cf77b7a1ba (svn r17965) -Codechange: query string window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13436
diff changeset
1251 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1252
13705
8dee47e001b2 (svn r18230) -Codechange: Allow fill stepsize to be set from Window::UpdateWidgetSize().
alberth <alberth@openttd.org>
parents: 13704
diff changeset
1253 virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
13456
93cf77b7a1ba (svn r17965) -Codechange: query string window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13436
diff changeset
1254 {
13457
91c47c384c4f (svn r17966) -Fix (r17965): The Default button should be disabled in some cases rather than the Ok button.
alberth <alberth@openttd.org>
parents: 13456
diff changeset
1255 if (widget == QUERY_STR_WIDGET_DEFAULT && (this->flags & QSF_ENABLE_DEFAULT) == 0) {
14344
eeee36b97cc5 (svn r18899) -Fix: the default button was enabled even when the ENABLE_DEFAULT flag wasn't set
rubidium <rubidium@openttd.org>
parents: 14314
diff changeset
1256 /* We don't want this widget to show! */
eeee36b97cc5 (svn r18899) -Fix: the default button was enabled even when the ENABLE_DEFAULT flag wasn't set
rubidium <rubidium@openttd.org>
parents: 14314
diff changeset
1257 fill->width = 0;
eeee36b97cc5 (svn r18899) -Fix: the default button was enabled even when the ENABLE_DEFAULT flag wasn't set
rubidium <rubidium@openttd.org>
parents: 14314
diff changeset
1258 resize->width = 0;
13456
93cf77b7a1ba (svn r17965) -Codechange: query string window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13436
diff changeset
1259 size->width = 0;
93cf77b7a1ba (svn r17965) -Codechange: query string window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13436
diff changeset
1260 }
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1261 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1262
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1263 virtual void OnPaint()
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1264 {
9273
72a6d2e60834 (svn r13139) -Codechange: move DrawWindowWidgets and DrawWindowViewport to the Window class and remove Window from their naming.
rubidium <rubidium@openttd.org>
parents: 9272
diff changeset
1265 this->DrawWidgets();
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1266
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1267 this->DrawEditBox(QUERY_STR_WIDGET_TEXT);
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1268 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1269
13456
93cf77b7a1ba (svn r17965) -Codechange: query string window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13436
diff changeset
1270 virtual void SetStringParameters(int widget) const
93cf77b7a1ba (svn r17965) -Codechange: query string window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13436
diff changeset
1271 {
93cf77b7a1ba (svn r17965) -Codechange: query string window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13436
diff changeset
1272 if (widget == QUERY_STR_WIDGET_CAPTION) SetDParam(0, this->caption);
93cf77b7a1ba (svn r17965) -Codechange: query string window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13436
diff changeset
1273 }
93cf77b7a1ba (svn r17965) -Codechange: query string window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13436
diff changeset
1274
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1275 void OnOk()
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1276 {
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1277 if (this->orig == NULL || strcmp(this->text.buf, this->orig) != 0) {
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1278 /* If the parent is NULL, the editbox is handled by general function
9693
cf5a441f1069 (svn r13800) -Codechange: minor comment style fixes in misc_gui.cpp
smatz <smatz@openttd.org>
parents: 9682
diff changeset
1279 * HandleOnEditText */
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1280 if (this->parent != NULL) {
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1281 this->parent->OnQueryTextFinished(this->text.buf);
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1282 } else {
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1283 HandleOnEditText(this->text.buf);
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1284 }
9228
68f81f013069 (svn r13094) -Fix: closing the QueryWindow would always send a 'query has been cancelled message' even when it was not cancelled causing joining passworded servers/companies to fail.
rubidium <rubidium@openttd.org>
parents: 9227
diff changeset
1285 this->handled = true;
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1286 }
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1287 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1288
14409
1eaefde497fd (svn r18966) -Codechange: Remove Window::OnDoubleClick() in favour of a parameter for OnClick().
frosch <frosch@openttd.org>
parents: 14344
diff changeset
1289 virtual void OnClick(Point pt, int widget, int click_count)
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1290 {
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1291 switch (widget) {
10148
81642658c8be (svn r14334) -Feature: ability to reset name to default/automatic value (for vehicles, engines, towns, groups, stations, waypoints, managers and companies)
smatz <smatz@openttd.org>
parents: 10145
diff changeset
1292 case QUERY_STR_WIDGET_DEFAULT:
81642658c8be (svn r14334) -Feature: ability to reset name to default/automatic value (for vehicles, engines, towns, groups, stations, waypoints, managers and companies)
smatz <smatz@openttd.org>
parents: 10145
diff changeset
1293 this->text.buf[0] = '\0';
81642658c8be (svn r14334) -Feature: ability to reset name to default/automatic value (for vehicles, engines, towns, groups, stations, waypoints, managers and companies)
smatz <smatz@openttd.org>
parents: 10145
diff changeset
1294 /* Fallthrough */
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1295 case QUERY_STR_WIDGET_OK:
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1296 this->OnOk();
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1297 /* Fallthrough */
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1298 case QUERY_STR_WIDGET_CANCEL:
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1299 delete this;
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1300 break;
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1301 }
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1302 }
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1303
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1304 virtual void OnMouseLoop()
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1305 {
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1306 this->HandleEditBox(QUERY_STR_WIDGET_TEXT);
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1307 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1308
9285
3b3f13cb6db6 (svn r13151) -Codechange: use an enum instead of bool as return type of OnKeyPress/OnCTRLStateChange to make it obvious what the return values mean.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
1309 virtual EventState OnKeyPress(uint16 key, uint16 keycode)
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1310 {
11319
340c5c4473f7 (svn r15669) -Change: Key presses that are not handles by an input box are no longer marked as handled but given to other OnKeyPress handlers. This makes the global shortcuts like F1 work again when an input box is open.
yexo <yexo@openttd.org>
parents: 11256
diff changeset
1311 EventState state = ES_NOT_HANDLED;
9285
3b3f13cb6db6 (svn r13151) -Codechange: use an enum instead of bool as return type of OnKeyPress/OnCTRLStateChange to make it obvious what the return values mean.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
1312 switch (this->HandleEditBoxKey(QUERY_STR_WIDGET_TEXT, key, keycode, state)) {
9399
617011acf06f (svn r13310) -Fix: invalidate OSK when parent editbox changes (from keyboard)
smatz <smatz@openttd.org>
parents: 9394
diff changeset
1313 default: NOT_REACHED();
10295
7ebf43f7c36b (svn r14534) -Codechange [FS#2382]: Enumify magic return values of HandleEditBox function (Zuu)
glx <glx@openttd.org>
parents: 10276
diff changeset
1314 case HEBR_EDITING: {
9399
617011acf06f (svn r13310) -Fix: invalidate OSK when parent editbox changes (from keyboard)
smatz <smatz@openttd.org>
parents: 9394
diff changeset
1315 Window *osk = FindWindowById(WC_OSK, 0);
13169
1f44cefc7825 (svn r17674) -Codechange: replace SetDirty + OnInvalidateData with InvalidateData (which does the same). Also call InvalidateData in a few cases where that was actually meant.
rubidium <rubidium@openttd.org>
parents: 13163
diff changeset
1316 if (osk != NULL && osk->parent == this) osk->InvalidateData();
9399
617011acf06f (svn r13310) -Fix: invalidate OSK when parent editbox changes (from keyboard)
smatz <smatz@openttd.org>
parents: 9394
diff changeset
1317 } break;
10295
7ebf43f7c36b (svn r14534) -Codechange [FS#2382]: Enumify magic return values of HandleEditBox function (Zuu)
glx <glx@openttd.org>
parents: 10276
diff changeset
1318 case HEBR_CONFIRM: this->OnOk();
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1319 /* FALL THROUGH */
10295
7ebf43f7c36b (svn r14534) -Codechange [FS#2382]: Enumify magic return values of HandleEditBox function (Zuu)
glx <glx@openttd.org>
parents: 10276
diff changeset
1320 case HEBR_CANCEL: delete this; break; // close window, abandon changes
11081
0a26df8849a2 (svn r15424) -Codechange: make it possible to have multiple windows with edit box open simultaniously (Zuu).
rubidium <rubidium@openttd.org>
parents: 10960
diff changeset
1321 case HEBR_NOT_FOCUSED: break;
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1322 }
9285
3b3f13cb6db6 (svn r13151) -Codechange: use an enum instead of bool as return type of OnKeyPress/OnCTRLStateChange to make it obvious what the return values mean.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
1323 return state;
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1324 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1325
10547
0b7be1ee92c5 (svn r14804) -Codechange: unify opening the OSK (Zuu)
rubidium <rubidium@openttd.org>
parents: 10533
diff changeset
1326 virtual void OnOpenOSKWindow(int wid)
0b7be1ee92c5 (svn r14804) -Codechange: unify opening the OSK (Zuu)
rubidium <rubidium@openttd.org>
parents: 10533
diff changeset
1327 {
0b7be1ee92c5 (svn r14804) -Codechange: unify opening the OSK (Zuu)
rubidium <rubidium@openttd.org>
parents: 10533
diff changeset
1328 ShowOnScreenKeyboard(this, wid, QUERY_STR_WIDGET_CANCEL, QUERY_STR_WIDGET_OK);
0b7be1ee92c5 (svn r14804) -Codechange: unify opening the OSK (Zuu)
rubidium <rubidium@openttd.org>
parents: 10533
diff changeset
1329 }
0b7be1ee92c5 (svn r14804) -Codechange: unify opening the OSK (Zuu)
rubidium <rubidium@openttd.org>
parents: 10533
diff changeset
1330
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1331 ~QueryStringWindow()
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1332 {
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1333 if (!this->handled && this->parent != NULL) {
9393
aeff7240b474 (svn r13304) -Fix (r13042): possible double free (showed up in r13092)
smatz <smatz@openttd.org>
parents: 9390
diff changeset
1334 Window *parent = this->parent;
aeff7240b474 (svn r13304) -Fix (r13042): possible double free (showed up in r13092)
smatz <smatz@openttd.org>
parents: 9390
diff changeset
1335 this->parent = NULL; // so parent doesn't try to delete us again
aeff7240b474 (svn r13304) -Fix (r13042): possible double free (showed up in r13092)
smatz <smatz@openttd.org>
parents: 9390
diff changeset
1336 parent->OnQueryTextFinished(NULL);
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1337 }
9166
45b1388fe9ba (svn r13029) -Codechange: more work in the road to getting the WP macros and byte[WINDOW_CUSTOM_SIZE] removed. This step changes the event handling to work directly on the Window class instead of via a function pointer and big switches while keeping backward compatability while we're rewriting the Windows to the new scheme.
rubidium <rubidium@openttd.org>
parents: 9164
diff changeset
1338 }
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1339 };
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1340
11653
50cfe1ce7e28 (svn r16033) -Codechange: Added nested widgets to about window, land-info window, and both query windows.
alberth <alberth@openttd.org>
parents: 11652
diff changeset
1341 static const NWidgetPart _nested_query_string_widgets[] = {
50cfe1ce7e28 (svn r16033) -Codechange: Added nested widgets to about window, land-info window, and both query windows.
alberth <alberth@openttd.org>
parents: 11652
diff changeset
1342 NWidget(NWID_HORIZONTAL),
13752
517d77f53919 (svn r18277) -Codechange: remove unneeded widget indices for close, resize and sticky boxes and for window captions
rubidium <rubidium@openttd.org>
parents: 13749
diff changeset
1343 NWidget(WWT_CLOSEBOX, COLOUR_GREY),
12821
9c5779a4ca5d (svn r17311) -Change: rename STR_WHITE_STRINGN to STR_WHITE_STRING
yexo <yexo@openttd.org>
parents: 12820
diff changeset
1344 NWidget(WWT_CAPTION, COLOUR_GREY, QUERY_STR_WIDGET_CAPTION), SetDataTip(STR_WHITE_STRING, STR_NULL),
11653
50cfe1ce7e28 (svn r16033) -Codechange: Added nested widgets to about window, land-info window, and both query windows.
alberth <alberth@openttd.org>
parents: 11652
diff changeset
1345 EndContainer(),
13755
bf8a4ced15fe (svn r18280) -Codechange: remove widget indices that are not needed for custom drawing/handling input
rubidium <rubidium@openttd.org>
parents: 13752
diff changeset
1346 NWidget(WWT_PANEL, COLOUR_GREY),
13704
af90d4bf0785 (svn r18229) -Codechange: Make fill_x, fill_y a number instead of a bool.
alberth <alberth@openttd.org>
parents: 13683
diff changeset
1347 NWidget(WWT_EDITBOX, COLOUR_GREY, QUERY_STR_WIDGET_TEXT), SetMinimalSize(256, 12), SetFill(1, 1), SetPadding(2, 2, 2, 2),
11653
50cfe1ce7e28 (svn r16033) -Codechange: Added nested widgets to about window, land-info window, and both query windows.
alberth <alberth@openttd.org>
parents: 11652
diff changeset
1348 EndContainer(),
13458
c5fe26cd3457 (svn r17967) -Codechange: Specify that the buttons of the query string window should be equal in size.
alberth <alberth@openttd.org>
parents: 13457
diff changeset
1349 NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
13704
af90d4bf0785 (svn r18229) -Codechange: Make fill_x, fill_y a number instead of a bool.
alberth <alberth@openttd.org>
parents: 13683
diff changeset
1350 NWidget(WWT_TEXTBTN, COLOUR_GREY, QUERY_STR_WIDGET_DEFAULT), SetMinimalSize(87, 12), SetFill(1, 1), SetDataTip(STR_BUTTON_DEFAULT, STR_NULL),
af90d4bf0785 (svn r18229) -Codechange: Make fill_x, fill_y a number instead of a bool.
alberth <alberth@openttd.org>
parents: 13683
diff changeset
1351 NWidget(WWT_TEXTBTN, COLOUR_GREY, QUERY_STR_WIDGET_CANCEL), SetMinimalSize(86, 12), SetFill(1, 1), SetDataTip(STR_BUTTON_CANCEL, STR_NULL),
af90d4bf0785 (svn r18229) -Codechange: Make fill_x, fill_y a number instead of a bool.
alberth <alberth@openttd.org>
parents: 13683
diff changeset
1352 NWidget(WWT_TEXTBTN, COLOUR_GREY, QUERY_STR_WIDGET_OK), SetMinimalSize(87, 12), SetFill(1, 1), SetDataTip(STR_BUTTON_OK, STR_NULL),
11653
50cfe1ce7e28 (svn r16033) -Codechange: Added nested widgets to about window, land-info window, and both query windows.
alberth <alberth@openttd.org>
parents: 11652
diff changeset
1353 EndContainer(),
50cfe1ce7e28 (svn r16033) -Codechange: Added nested widgets to about window, land-info window, and both query windows.
alberth <alberth@openttd.org>
parents: 11652
diff changeset
1354 };
50cfe1ce7e28 (svn r16033) -Codechange: Added nested widgets to about window, land-info window, and both query windows.
alberth <alberth@openttd.org>
parents: 11652
diff changeset
1355
11373
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11369
diff changeset
1356 static const WindowDesc _query_string_desc(
13798
6f820ae12bb3 (svn r18324) -Codechange: there's no need for a default size when the window isn't resizable
rubidium <rubidium@openttd.org>
parents: 13797
diff changeset
1357 WDP_AUTO, 0, 0,
5893
8547517ef719 (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium <rubidium@openttd.org>
parents: 5750
diff changeset
1358 WC_QUERY_STRING, WC_NONE,
13749
fc3ab8256c95 (svn r18274) -Codechange: remove the unused WDF flags
rubidium <rubidium@openttd.org>
parents: 13705
diff changeset
1359 0,
13564
bae287664b02 (svn r18086) -Codechange: remove 'widget' from WindowDesc
rubidium <rubidium@openttd.org>
parents: 13478
diff changeset
1360 _nested_query_string_widgets, lengthof(_nested_query_string_widgets)
11373
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11369
diff changeset
1361 );
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1362
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1363 /** Show a query popup window with a textbox in it.
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1364 * @param str StringID for the text shown in the textbox
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1365 * @param caption StringID of text shown in caption of querywindow
10276
a5286e772120 (svn r14514) -Codechange: use 'size' instead of 'length' for querystring and textbuf, explicitly say it includes the terminating zero
smatz <smatz@openttd.org>
parents: 10208
diff changeset
1366 * @param maxsize maximum size in bytes (including terminating '\0')
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1367 * @param maxwidth maximum width in pixels allowed
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1368 * @param parent pointer to a Window that will handle the events (ok/cancel) of this
9314
93a764ca7ec7 (svn r13182) -Doc: add documentation to mostly rail_gui related functions. Patch by Alberth.
rubidium <rubidium@openttd.org>
parents: 9301
diff changeset
1369 * window. If NULL, results are handled by global function HandleOnEditText
10145
dbe302da93a8 (svn r14331) -Codechange: use an enum as additional parameter for ShowQueryString()
smatz <smatz@openttd.org>
parents: 10039
diff changeset
1370 * @param afilter filters out unwanted character input
dbe302da93a8 (svn r14331) -Codechange: use an enum as additional parameter for ShowQueryString()
smatz <smatz@openttd.org>
parents: 10039
diff changeset
1371 * @param flags various flags, @see QueryStringFlags
dbe302da93a8 (svn r14331) -Codechange: use an enum as additional parameter for ShowQueryString()
smatz <smatz@openttd.org>
parents: 10039
diff changeset
1372 */
10276
a5286e772120 (svn r14514) -Codechange: use 'size' instead of 'length' for querystring and textbuf, explicitly say it includes the terminating zero
smatz <smatz@openttd.org>
parents: 10208
diff changeset
1373 void ShowQueryString(StringID str, StringID caption, uint maxsize, uint maxwidth, Window *parent, CharSetFilter afilter, QueryStringFlags flags)
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1374 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1375 DeleteWindowById(WC_QUERY_STRING, 0);
13456
93cf77b7a1ba (svn r17965) -Codechange: query string window uses pure nested widgets.
alberth <alberth@openttd.org>
parents: 13436
diff changeset
1376 new QueryStringWindow(str, caption, maxsize, maxwidth, &_query_string_desc, parent, afilter, flags);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1377 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1378
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1379
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1380 enum QueryWidgets {
11652
f175ab1cccea (svn r16032) -Codechange: Completing widget numbers of query windows.
alberth <alberth@openttd.org>
parents: 11644
diff changeset
1381 QUERY_WIDGET_CAPTION,
13163
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1382 QUERY_WIDGET_TEXT,
11652
f175ab1cccea (svn r16032) -Codechange: Completing widget numbers of query windows.
alberth <alberth@openttd.org>
parents: 11644
diff changeset
1383 QUERY_WIDGET_NO,
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1384 QUERY_WIDGET_YES
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1385 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1386
9176
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1387 /**
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1388 * Window used for asking the user a YES/NO question.
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1389 */
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1390 struct QueryWindow : public Window {
9319
7c3d6f855380 (svn r13191) -Fix: segfault after confirming query subwindow in the Generate New World window
smatz <smatz@openttd.org>
parents: 9317
diff changeset
1391 QueryCallbackProc *proc; ///< callback function executed on closing of popup. Window* points to parent, bool is true if 'yes' clicked, false otherwise
7c3d6f855380 (svn r13191) -Fix: segfault after confirming query subwindow in the Generate New World window
smatz <smatz@openttd.org>
parents: 9317
diff changeset
1392 uint64 params[10]; ///< local copy of _decode_parameters
7c3d6f855380 (svn r13191) -Fix: segfault after confirming query subwindow in the Generate New World window
smatz <smatz@openttd.org>
parents: 9317
diff changeset
1393 StringID message; ///< message shown for query window
13163
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1394 StringID caption; ///< title of window
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1395
13163
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1396 QueryWindow(const WindowDesc *desc, StringID caption, StringID message, Window *parent, QueryCallbackProc *callback) : Window()
9176
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1397 {
13163
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1398 /* Create a backup of the variadic arguments to strings because it will be
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1399 * overridden pretty often. We will copy these back for drawing */
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1400 CopyOutDParam(this->params, 0, lengthof(this->params));
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1401 this->caption = caption;
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1402 this->message = message;
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1403 this->proc = callback;
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1404
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1405 this->InitNested(desc);
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1406
9176
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1407 if (parent == NULL) parent = FindWindowById(WC_MAIN_WINDOW, 0);
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1408 this->parent = parent;
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1409 this->left = parent->left + (parent->width / 2) - (this->width / 2);
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1410 this->top = parent->top + (parent->height / 2) - (this->height / 2);
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1411 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1412
9176
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1413 ~QueryWindow()
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1414 {
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1415 if (this->proc != NULL) this->proc(this->parent, false);
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1416 }
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1417
13163
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1418 virtual void SetStringParameters(int widget) const
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1419 {
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1420 switch (widget) {
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1421 case QUERY_WIDGET_CAPTION:
13174
cd71f89cd87f (svn r17681) -Fix [FS#3248] (r17668): crash when the caption of the query window used parameters
rubidium <rubidium@openttd.org>
parents: 13169
diff changeset
1422 CopyInDParam(1, this->params, lengthof(this->params));
13163
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1423 SetDParam(0, this->caption);
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1424 break;
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1425
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1426 case QUERY_WIDGET_TEXT:
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1427 CopyInDParam(0, this->params, lengthof(this->params));
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1428 break;
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1429 }
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1430 }
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1431
13705
8dee47e001b2 (svn r18230) -Codechange: Allow fill stepsize to be set from Window::UpdateWidgetSize().
alberth <alberth@openttd.org>
parents: 13704
diff changeset
1432 virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
13163
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1433 {
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1434 if (widget != QUERY_WIDGET_TEXT) return;
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1435
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1436 Dimension d = GetStringMultiLineBoundingBox(this->message, *size);
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1437 d.width += padding.width;
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1438 d.height += padding.height;
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1439 *size = d;
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1440 }
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1441
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1442 virtual void DrawWidget(const Rect &r, int widget) const
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1443 {
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1444 if (widget != QUERY_WIDGET_TEXT) return;
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1445
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1446 DrawStringMultiLine(r.left, r.right, r.top, r.bottom, this->message, TC_FROMSTRING, SA_CENTER);
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1447 }
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1448
9176
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1449 virtual void OnPaint()
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1450 {
9273
72a6d2e60834 (svn r13139) -Codechange: move DrawWindowWidgets and DrawWindowViewport to the Window class and remove Window from their naming.
rubidium <rubidium@openttd.org>
parents: 9272
diff changeset
1451 this->DrawWidgets();
9176
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1452 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1453
14409
1eaefde497fd (svn r18966) -Codechange: Remove Window::OnDoubleClick() in favour of a parameter for OnClick().
frosch <frosch@openttd.org>
parents: 14344
diff changeset
1454 virtual void OnClick(Point pt, int widget, int click_count)
9176
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1455 {
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1456 switch (widget) {
9319
7c3d6f855380 (svn r13191) -Fix: segfault after confirming query subwindow in the Generate New World window
smatz <smatz@openttd.org>
parents: 9317
diff changeset
1457 case QUERY_WIDGET_YES: {
7c3d6f855380 (svn r13191) -Fix: segfault after confirming query subwindow in the Generate New World window
smatz <smatz@openttd.org>
parents: 9317
diff changeset
1458 /* in the Generate New World window, clicking 'Yes' causes
7c3d6f855380 (svn r13191) -Fix: segfault after confirming query subwindow in the Generate New World window
smatz <smatz@openttd.org>
parents: 9317
diff changeset
1459 * DeleteNonVitalWindows() to be called - we shouldn't be in a window then */
7c3d6f855380 (svn r13191) -Fix: segfault after confirming query subwindow in the Generate New World window
smatz <smatz@openttd.org>
parents: 9317
diff changeset
1460 QueryCallbackProc *proc = this->proc;
7c3d6f855380 (svn r13191) -Fix: segfault after confirming query subwindow in the Generate New World window
smatz <smatz@openttd.org>
parents: 9317
diff changeset
1461 Window *parent = this->parent;
9394
f62de1e2ea9a (svn r13305) -Fix (r13039): Confirmation window sent both yes and no answers instead of just yes.
peter1138 <peter1138@openttd.org>
parents: 9393
diff changeset
1462 /* Prevent the destructor calling the callback function */
f62de1e2ea9a (svn r13305) -Fix (r13039): Confirmation window sent both yes and no answers instead of just yes.
peter1138 <peter1138@openttd.org>
parents: 9393
diff changeset
1463 this->proc = NULL;
9319
7c3d6f855380 (svn r13191) -Fix: segfault after confirming query subwindow in the Generate New World window
smatz <smatz@openttd.org>
parents: 9317
diff changeset
1464 delete this;
7c3d6f855380 (svn r13191) -Fix: segfault after confirming query subwindow in the Generate New World window
smatz <smatz@openttd.org>
parents: 9317
diff changeset
1465 if (proc != NULL) {
7c3d6f855380 (svn r13191) -Fix: segfault after confirming query subwindow in the Generate New World window
smatz <smatz@openttd.org>
parents: 9317
diff changeset
1466 proc(parent, true);
7c3d6f855380 (svn r13191) -Fix: segfault after confirming query subwindow in the Generate New World window
smatz <smatz@openttd.org>
parents: 9317
diff changeset
1467 proc = NULL;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1468 }
9319
7c3d6f855380 (svn r13191) -Fix: segfault after confirming query subwindow in the Generate New World window
smatz <smatz@openttd.org>
parents: 9317
diff changeset
1469 } break;
9176
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1470 case QUERY_WIDGET_NO:
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1471 delete this;
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1472 break;
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1473 }
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1474 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1475
9285
3b3f13cb6db6 (svn r13151) -Codechange: use an enum instead of bool as return type of OnKeyPress/OnCTRLStateChange to make it obvious what the return values mean.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
1476 virtual EventState OnKeyPress(uint16 key, uint16 keycode)
9176
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1477 {
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1478 /* ESC closes the window, Enter confirms the action */
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1479 switch (keycode) {
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1480 case WKC_RETURN:
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1481 case WKC_NUM_ENTER:
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1482 if (this->proc != NULL) {
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1483 this->proc(this->parent, true);
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1484 this->proc = NULL;
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1485 }
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1486 /* Fallthrough */
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1487 case WKC_ESC:
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1488 delete this;
9285
3b3f13cb6db6 (svn r13151) -Codechange: use an enum instead of bool as return type of OnKeyPress/OnCTRLStateChange to make it obvious what the return values mean.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
1489 return ES_HANDLED;
9176
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1490 }
9285
3b3f13cb6db6 (svn r13151) -Codechange: use an enum instead of bool as return type of OnKeyPress/OnCTRLStateChange to make it obvious what the return values mean.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
1491 return ES_NOT_HANDLED;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1492 }
9176
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1493 };
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1494
11653
50cfe1ce7e28 (svn r16033) -Codechange: Added nested widgets to about window, land-info window, and both query windows.
alberth <alberth@openttd.org>
parents: 11652
diff changeset
1495 static const NWidgetPart _nested_query_widgets[] = {
50cfe1ce7e28 (svn r16033) -Codechange: Added nested widgets to about window, land-info window, and both query windows.
alberth <alberth@openttd.org>
parents: 11652
diff changeset
1496 NWidget(NWID_HORIZONTAL),
13752
517d77f53919 (svn r18277) -Codechange: remove unneeded widget indices for close, resize and sticky boxes and for window captions
rubidium <rubidium@openttd.org>
parents: 13749
diff changeset
1497 NWidget(WWT_CLOSEBOX, COLOUR_RED),
13163
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1498 NWidget(WWT_CAPTION, COLOUR_RED, QUERY_WIDGET_CAPTION), SetDataTip(STR_JUST_STRING, STR_NULL),
11653
50cfe1ce7e28 (svn r16033) -Codechange: Added nested widgets to about window, land-info window, and both query windows.
alberth <alberth@openttd.org>
parents: 11652
diff changeset
1499 EndContainer(),
13755
bf8a4ced15fe (svn r18280) -Codechange: remove widget indices that are not needed for custom drawing/handling input
rubidium <rubidium@openttd.org>
parents: 13752
diff changeset
1500 NWidget(WWT_PANEL, COLOUR_RED), SetPIP(8, 15, 8),
13163
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1501 NWidget(WWT_TEXT, COLOUR_RED, QUERY_WIDGET_TEXT), SetMinimalSize(200, 12),
3f7aeb884dcf (svn r17668) -Codechange: Query window uses nested widgets
yexo <yexo@openttd.org>
parents: 13118
diff changeset
1502 NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(20, 29, 20),
12632
e41943276802 (svn r17075) -Codechange: rename ~750 strings to be more uniform with their relatives
rubidium <rubidium@openttd.org>
parents: 12619
diff changeset
1503 NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, QUERY_WIDGET_NO), SetMinimalSize(71, 12), SetDataTip(STR_QUIT_NO, STR_NULL),
e41943276802 (svn r17075) -Codechange: rename ~750 strings to be more uniform with their relatives
rubidium <rubidium@openttd.org>
parents: 12619
diff changeset
1504 NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, QUERY_WIDGET_YES), SetMinimalSize(71, 12), SetDataTip(STR_QUIT_YES, STR_NULL),
11653
50cfe1ce7e28 (svn r16033) -Codechange: Added nested widgets to about window, land-info window, and both query windows.
alberth <alberth@openttd.org>
parents: 11652
diff changeset
1505 EndContainer(),
50cfe1ce7e28 (svn r16033) -Codechange: Added nested widgets to about window, land-info window, and both query windows.
alberth <alberth@openttd.org>
parents: 11652
diff changeset
1506 EndContainer(),
50cfe1ce7e28 (svn r16033) -Codechange: Added nested widgets to about window, land-info window, and both query windows.
alberth <alberth@openttd.org>
parents: 11652
diff changeset
1507 };
50cfe1ce7e28 (svn r16033) -Codechange: Added nested widgets to about window, land-info window, and both query windows.
alberth <alberth@openttd.org>
parents: 11652
diff changeset
1508
11373
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11369
diff changeset
1509 static const WindowDesc _query_desc(
13798
6f820ae12bb3 (svn r18324) -Codechange: there's no need for a default size when the window isn't resizable
rubidium <rubidium@openttd.org>
parents: 13797
diff changeset
1510 WDP_CENTER, 0, 0,
5893
8547517ef719 (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium <rubidium@openttd.org>
parents: 5750
diff changeset
1511 WC_CONFIRM_POPUP_QUERY, WC_NONE,
13749
fc3ab8256c95 (svn r18274) -Codechange: remove the unused WDF flags
rubidium <rubidium@openttd.org>
parents: 13705
diff changeset
1512 WDF_UNCLICK_BUTTONS | WDF_MODAL,
13564
bae287664b02 (svn r18086) -Codechange: remove 'widget' from WindowDesc
rubidium <rubidium@openttd.org>
parents: 13478
diff changeset
1513 _nested_query_widgets, lengthof(_nested_query_widgets)
11373
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11369
diff changeset
1514 );
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1515
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1516 /** Show a modal confirmation window with standard 'yes' and 'no' buttons
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1517 * The window is aligned to the centre of its parent.
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1518 * @param caption string shown as window caption
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1519 * @param message string that will be shown for the window
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1520 * @param parent pointer to parent window, if this pointer is NULL the parent becomes
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1521 * the main window WC_MAIN_WINDOW
9693
cf5a441f1069 (svn r13800) -Codechange: minor comment style fixes in misc_gui.cpp
smatz <smatz@openttd.org>
parents: 9682
diff changeset
1522 * @param callback callback function pointer to set in the window descriptor
cf5a441f1069 (svn r13800) -Codechange: minor comment style fixes in misc_gui.cpp
smatz <smatz@openttd.org>
parents: 9682
diff changeset
1523 */
9319
7c3d6f855380 (svn r13191) -Fix: segfault after confirming query subwindow in the Generate New World window
smatz <smatz@openttd.org>
parents: 9317
diff changeset
1524 void ShowQuery(StringID caption, StringID message, Window *parent, QueryCallbackProc *callback)
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1525 {
9176
0f495f0a0c53 (svn r13039) -Codechange: make a class of the Query window.
rubidium <rubidium@openttd.org>
parents: 9170
diff changeset
1526 new QueryWindow(&_query_desc, caption, message, parent, callback);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1527 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1528
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1529
11862
6e085df38529 (svn r16256) -Codechange: Moved load/save dialogue widget numbers outside the window struct.
alberth <alberth@openttd.org>
parents: 11852
diff changeset
1530 enum SaveLoadWindowWidgets {
6e085df38529 (svn r16256) -Codechange: Moved load/save dialogue widget numbers outside the window struct.
alberth <alberth@openttd.org>
parents: 11852
diff changeset
1531 SLWW_WINDOWTITLE,
6e085df38529 (svn r16256) -Codechange: Moved load/save dialogue widget numbers outside the window struct.
alberth <alberth@openttd.org>
parents: 11852
diff changeset
1532 SLWW_SORT_BYNAME,
6e085df38529 (svn r16256) -Codechange: Moved load/save dialogue widget numbers outside the window struct.
alberth <alberth@openttd.org>
parents: 11852
diff changeset
1533 SLWW_SORT_BYDATE,
6e085df38529 (svn r16256) -Codechange: Moved load/save dialogue widget numbers outside the window struct.
alberth <alberth@openttd.org>
parents: 11852
diff changeset
1534 SLWW_BACKGROUND,
6e085df38529 (svn r16256) -Codechange: Moved load/save dialogue widget numbers outside the window struct.
alberth <alberth@openttd.org>
parents: 11852
diff changeset
1535 SLWW_FILE_BACKGROUND,
6e085df38529 (svn r16256) -Codechange: Moved load/save dialogue widget numbers outside the window struct.
alberth <alberth@openttd.org>
parents: 11852
diff changeset
1536 SLWW_HOME_BUTTON,
6e085df38529 (svn r16256) -Codechange: Moved load/save dialogue widget numbers outside the window struct.
alberth <alberth@openttd.org>
parents: 11852
diff changeset
1537 SLWW_DRIVES_DIRECTORIES_LIST,
6e085df38529 (svn r16256) -Codechange: Moved load/save dialogue widget numbers outside the window struct.
alberth <alberth@openttd.org>
parents: 11852
diff changeset
1538 SLWW_SCROLLBAR,
6e085df38529 (svn r16256) -Codechange: Moved load/save dialogue widget numbers outside the window struct.
alberth <alberth@openttd.org>
parents: 11852
diff changeset
1539 SLWW_CONTENT_DOWNLOAD, ///< only available for play scenario/heightmap (content download)
6e085df38529 (svn r16256) -Codechange: Moved load/save dialogue widget numbers outside the window struct.
alberth <alberth@openttd.org>
parents: 11852
diff changeset
1540 SLWW_SAVE_OSK_TITLE, ///< only available for save operations
6e085df38529 (svn r16256) -Codechange: Moved load/save dialogue widget numbers outside the window struct.
alberth <alberth@openttd.org>
parents: 11852
diff changeset
1541 SLWW_DELETE_SELECTION, ///< same in here
6e085df38529 (svn r16256) -Codechange: Moved load/save dialogue widget numbers outside the window struct.
alberth <alberth@openttd.org>
parents: 11852
diff changeset
1542 SLWW_SAVE_GAME, ///< not to mention in here too
13340
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1543 SLWW_CONTENT_DOWNLOAD_SEL, ///< Selection 'stack' to 'hide' the content download
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1544 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1545
11865
a8d788b2bbd2 (svn r16259) -Codechange: Added nested widgets to the load and save dialogue windows.
alberth <alberth@openttd.org>
parents: 11864
diff changeset
1546 static const NWidgetPart _nested_load_dialog_widgets[] = {
13410
3fb5398475cc (svn r17919) -Codechange (r17849): Remove the outermost NWID_LAYERED and NWID_VERTICAL containers from the load and save nested widget parts, since they do nothing.
alberth <alberth@openttd.org>
parents: 13409
diff changeset
1547 NWidget(NWID_HORIZONTAL),
13752
517d77f53919 (svn r18277) -Codechange: remove unneeded widget indices for close, resize and sticky boxes and for window captions
rubidium <rubidium@openttd.org>
parents: 13749
diff changeset
1548 NWidget(WWT_CLOSEBOX, COLOUR_GREY),
13410
3fb5398475cc (svn r17919) -Codechange (r17849): Remove the outermost NWID_LAYERED and NWID_VERTICAL containers from the load and save nested widget parts, since they do nothing.
alberth <alberth@openttd.org>
parents: 13409
diff changeset
1549 NWidget(WWT_CAPTION, COLOUR_GREY, SLWW_WINDOWTITLE),
3fb5398475cc (svn r17919) -Codechange (r17849): Remove the outermost NWID_LAYERED and NWID_VERTICAL containers from the load and save nested widget parts, since they do nothing.
alberth <alberth@openttd.org>
parents: 13409
diff changeset
1550 EndContainer(),
3fb5398475cc (svn r17919) -Codechange (r17849): Remove the outermost NWID_LAYERED and NWID_VERTICAL containers from the load and save nested widget parts, since they do nothing.
alberth <alberth@openttd.org>
parents: 13409
diff changeset
1551 NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
13704
af90d4bf0785 (svn r18229) -Codechange: Make fill_x, fill_y a number instead of a bool.
alberth <alberth@openttd.org>
parents: 13683
diff changeset
1552 NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, SLWW_SORT_BYNAME), SetDataTip(STR_SORT_BY_CAPTION_NAME, STR_TOOLTIP_SORT_ORDER), SetFill(1, 0), SetResize(1, 0),
af90d4bf0785 (svn r18229) -Codechange: Make fill_x, fill_y a number instead of a bool.
alberth <alberth@openttd.org>
parents: 13683
diff changeset
1553 NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, SLWW_SORT_BYDATE), SetDataTip(STR_SORT_BY_CAPTION_DATE, STR_TOOLTIP_SORT_ORDER), SetFill(1, 0), SetResize(1, 0),
13410
3fb5398475cc (svn r17919) -Codechange (r17849): Remove the outermost NWID_LAYERED and NWID_VERTICAL containers from the load and save nested widget parts, since they do nothing.
alberth <alberth@openttd.org>
parents: 13409
diff changeset
1554 EndContainer(),
13704
af90d4bf0785 (svn r18229) -Codechange: Make fill_x, fill_y a number instead of a bool.
alberth <alberth@openttd.org>
parents: 13683
diff changeset
1555 NWidget(WWT_PANEL, COLOUR_GREY, SLWW_BACKGROUND), SetFill(1, 0), SetResize(1, 0), EndContainer(),
13410
3fb5398475cc (svn r17919) -Codechange (r17849): Remove the outermost NWID_LAYERED and NWID_VERTICAL containers from the load and save nested widget parts, since they do nothing.
alberth <alberth@openttd.org>
parents: 13409
diff changeset
1556 NWidget(WWT_PANEL, COLOUR_GREY, SLWW_FILE_BACKGROUND),
3fb5398475cc (svn r17919) -Codechange (r17849): Remove the outermost NWID_LAYERED and NWID_VERTICAL containers from the load and save nested widget parts, since they do nothing.
alberth <alberth@openttd.org>
parents: 13409
diff changeset
1557 NWidget(NWID_HORIZONTAL),
3fb5398475cc (svn r17919) -Codechange (r17849): Remove the outermost NWID_LAYERED and NWID_VERTICAL containers from the load and save nested widget parts, since they do nothing.
alberth <alberth@openttd.org>
parents: 13409
diff changeset
1558 NWidget(NWID_VERTICAL),
13704
af90d4bf0785 (svn r18229) -Codechange: Make fill_x, fill_y a number instead of a bool.
alberth <alberth@openttd.org>
parents: 13683
diff changeset
1559 NWidget(WWT_INSET, COLOUR_GREY, SLWW_DRIVES_DIRECTORIES_LIST), SetFill(1, 1), SetPadding(2, 1, 2, 2),
13410
3fb5398475cc (svn r17919) -Codechange (r17849): Remove the outermost NWID_LAYERED and NWID_VERTICAL containers from the load and save nested widget parts, since they do nothing.
alberth <alberth@openttd.org>
parents: 13409
diff changeset
1560 SetDataTip(0x0, STR_SAVELOAD_LIST_TOOLTIP), SetResize(1, 10), EndContainer(),
3fb5398475cc (svn r17919) -Codechange (r17849): Remove the outermost NWID_LAYERED and NWID_VERTICAL containers from the load and save nested widget parts, since they do nothing.
alberth <alberth@openttd.org>
parents: 13409
diff changeset
1561 NWidget(NWID_SELECTION, INVALID_COLOUR, SLWW_CONTENT_DOWNLOAD_SEL),
3fb5398475cc (svn r17919) -Codechange (r17849): Remove the outermost NWID_LAYERED and NWID_VERTICAL containers from the load and save nested widget parts, since they do nothing.
alberth <alberth@openttd.org>
parents: 13409
diff changeset
1562 NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, SLWW_CONTENT_DOWNLOAD), SetResize(1, 0),
3fb5398475cc (svn r17919) -Codechange (r17849): Remove the outermost NWID_LAYERED and NWID_VERTICAL containers from the load and save nested widget parts, since they do nothing.
alberth <alberth@openttd.org>
parents: 13409
diff changeset
1563 SetDataTip(STR_INTRO_ONLINE_CONTENT, STR_INTRO_TOOLTIP_ONLINE_CONTENT),
3fb5398475cc (svn r17919) -Codechange (r17849): Remove the outermost NWID_LAYERED and NWID_VERTICAL containers from the load and save nested widget parts, since they do nothing.
alberth <alberth@openttd.org>
parents: 13409
diff changeset
1564 EndContainer(),
11865
a8d788b2bbd2 (svn r16259) -Codechange: Added nested widgets to the load and save dialogue windows.
alberth <alberth@openttd.org>
parents: 11864
diff changeset
1565 EndContainer(),
13410
3fb5398475cc (svn r17919) -Codechange (r17849): Remove the outermost NWID_LAYERED and NWID_VERTICAL containers from the load and save nested widget parts, since they do nothing.
alberth <alberth@openttd.org>
parents: 13409
diff changeset
1566 NWidget(NWID_VERTICAL),
3fb5398475cc (svn r17919) -Codechange (r17849): Remove the outermost NWID_LAYERED and NWID_VERTICAL containers from the load and save nested widget parts, since they do nothing.
alberth <alberth@openttd.org>
parents: 13409
diff changeset
1567 NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, SLWW_HOME_BUTTON), SetMinimalSize(12, 12), SetDataTip(SPR_HOUSE_ICON, STR_SAVELOAD_HOME_BUTTON),
3fb5398475cc (svn r17919) -Codechange (r17849): Remove the outermost NWID_LAYERED and NWID_VERTICAL containers from the load and save nested widget parts, since they do nothing.
alberth <alberth@openttd.org>
parents: 13409
diff changeset
1568 NWidget(WWT_SCROLLBAR, COLOUR_GREY, SLWW_SCROLLBAR),
13752
517d77f53919 (svn r18277) -Codechange: remove unneeded widget indices for close, resize and sticky boxes and for window captions
rubidium <rubidium@openttd.org>
parents: 13749
diff changeset
1569 NWidget(WWT_RESIZEBOX, COLOUR_GREY),
11865
a8d788b2bbd2 (svn r16259) -Codechange: Added nested widgets to the load and save dialogue windows.
alberth <alberth@openttd.org>
parents: 11864
diff changeset
1570 EndContainer(),
a8d788b2bbd2 (svn r16259) -Codechange: Added nested widgets to the load and save dialogue windows.
alberth <alberth@openttd.org>
parents: 11864
diff changeset
1571 EndContainer(),
a8d788b2bbd2 (svn r16259) -Codechange: Added nested widgets to the load and save dialogue windows.
alberth <alberth@openttd.org>
parents: 11864
diff changeset
1572 EndContainer(),
a8d788b2bbd2 (svn r16259) -Codechange: Added nested widgets to the load and save dialogue windows.
alberth <alberth@openttd.org>
parents: 11864
diff changeset
1573 };
a8d788b2bbd2 (svn r16259) -Codechange: Added nested widgets to the load and save dialogue windows.
alberth <alberth@openttd.org>
parents: 11864
diff changeset
1574
a8d788b2bbd2 (svn r16259) -Codechange: Added nested widgets to the load and save dialogue windows.
alberth <alberth@openttd.org>
parents: 11864
diff changeset
1575 static const NWidgetPart _nested_save_dialog_widgets[] = {
13410
3fb5398475cc (svn r17919) -Codechange (r17849): Remove the outermost NWID_LAYERED and NWID_VERTICAL containers from the load and save nested widget parts, since they do nothing.
alberth <alberth@openttd.org>
parents: 13409
diff changeset
1576 NWidget(NWID_HORIZONTAL),
13752
517d77f53919 (svn r18277) -Codechange: remove unneeded widget indices for close, resize and sticky boxes and for window captions
rubidium <rubidium@openttd.org>
parents: 13749
diff changeset
1577 NWidget(WWT_CLOSEBOX, COLOUR_GREY),
13410
3fb5398475cc (svn r17919) -Codechange (r17849): Remove the outermost NWID_LAYERED and NWID_VERTICAL containers from the load and save nested widget parts, since they do nothing.
alberth <alberth@openttd.org>
parents: 13409
diff changeset
1578 NWidget(WWT_CAPTION, COLOUR_GREY, SLWW_WINDOWTITLE),
3fb5398475cc (svn r17919) -Codechange (r17849): Remove the outermost NWID_LAYERED and NWID_VERTICAL containers from the load and save nested widget parts, since they do nothing.
alberth <alberth@openttd.org>
parents: 13409
diff changeset
1579 EndContainer(),
3fb5398475cc (svn r17919) -Codechange (r17849): Remove the outermost NWID_LAYERED and NWID_VERTICAL containers from the load and save nested widget parts, since they do nothing.
alberth <alberth@openttd.org>
parents: 13409
diff changeset
1580 NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
13704
af90d4bf0785 (svn r18229) -Codechange: Make fill_x, fill_y a number instead of a bool.
alberth <alberth@openttd.org>
parents: 13683
diff changeset
1581 NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, SLWW_SORT_BYNAME), SetDataTip(STR_SORT_BY_CAPTION_NAME, STR_TOOLTIP_SORT_ORDER), SetFill(1, 0), SetResize(1, 0),
af90d4bf0785 (svn r18229) -Codechange: Make fill_x, fill_y a number instead of a bool.
alberth <alberth@openttd.org>
parents: 13683
diff changeset
1582 NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, SLWW_SORT_BYDATE), SetDataTip(STR_SORT_BY_CAPTION_DATE, STR_TOOLTIP_SORT_ORDER), SetFill(1, 0), SetResize(1, 0),
13410
3fb5398475cc (svn r17919) -Codechange (r17849): Remove the outermost NWID_LAYERED and NWID_VERTICAL containers from the load and save nested widget parts, since they do nothing.
alberth <alberth@openttd.org>
parents: 13409
diff changeset
1583 EndContainer(),
13704
af90d4bf0785 (svn r18229) -Codechange: Make fill_x, fill_y a number instead of a bool.
alberth <alberth@openttd.org>
parents: 13683
diff changeset
1584 NWidget(WWT_PANEL, COLOUR_GREY, SLWW_BACKGROUND), SetFill(1, 0), SetResize(1, 0), EndContainer(),
13410
3fb5398475cc (svn r17919) -Codechange (r17849): Remove the outermost NWID_LAYERED and NWID_VERTICAL containers from the load and save nested widget parts, since they do nothing.
alberth <alberth@openttd.org>
parents: 13409
diff changeset
1585 NWidget(WWT_PANEL, COLOUR_GREY, SLWW_FILE_BACKGROUND),
3fb5398475cc (svn r17919) -Codechange (r17849): Remove the outermost NWID_LAYERED and NWID_VERTICAL containers from the load and save nested widget parts, since they do nothing.
alberth <alberth@openttd.org>
parents: 13409
diff changeset
1586 NWidget(NWID_HORIZONTAL),
3fb5398475cc (svn r17919) -Codechange (r17849): Remove the outermost NWID_LAYERED and NWID_VERTICAL containers from the load and save nested widget parts, since they do nothing.
alberth <alberth@openttd.org>
parents: 13409
diff changeset
1587 NWidget(WWT_INSET, COLOUR_GREY, SLWW_DRIVES_DIRECTORIES_LIST), SetPadding(2, 1, 0, 2),
3fb5398475cc (svn r17919) -Codechange (r17849): Remove the outermost NWID_LAYERED and NWID_VERTICAL containers from the load and save nested widget parts, since they do nothing.
alberth <alberth@openttd.org>
parents: 13409
diff changeset
1588 SetDataTip(0x0, STR_SAVELOAD_LIST_TOOLTIP), SetResize(1, 10), EndContainer(),
3fb5398475cc (svn r17919) -Codechange (r17849): Remove the outermost NWID_LAYERED and NWID_VERTICAL containers from the load and save nested widget parts, since they do nothing.
alberth <alberth@openttd.org>
parents: 13409
diff changeset
1589 NWidget(NWID_VERTICAL),
3fb5398475cc (svn r17919) -Codechange (r17849): Remove the outermost NWID_LAYERED and NWID_VERTICAL containers from the load and save nested widget parts, since they do nothing.
alberth <alberth@openttd.org>
parents: 13409
diff changeset
1590 NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, SLWW_HOME_BUTTON), SetMinimalSize(12, 12), SetDataTip(SPR_HOUSE_ICON, STR_SAVELOAD_HOME_BUTTON),
3fb5398475cc (svn r17919) -Codechange (r17849): Remove the outermost NWID_LAYERED and NWID_VERTICAL containers from the load and save nested widget parts, since they do nothing.
alberth <alberth@openttd.org>
parents: 13409
diff changeset
1591 NWidget(WWT_SCROLLBAR, COLOUR_GREY, SLWW_SCROLLBAR),
11865
a8d788b2bbd2 (svn r16259) -Codechange: Added nested widgets to the load and save dialogue windows.
alberth <alberth@openttd.org>
parents: 11864
diff changeset
1592 EndContainer(),
a8d788b2bbd2 (svn r16259) -Codechange: Added nested widgets to the load and save dialogue windows.
alberth <alberth@openttd.org>
parents: 11864
diff changeset
1593 EndContainer(),
13704
af90d4bf0785 (svn r18229) -Codechange: Make fill_x, fill_y a number instead of a bool.
alberth <alberth@openttd.org>
parents: 13683
diff changeset
1594 NWidget(WWT_EDITBOX, COLOUR_GREY, SLWW_SAVE_OSK_TITLE), SetPadding(3, 2, 2, 2), SetFill(1, 0), SetResize(1, 0),
13410
3fb5398475cc (svn r17919) -Codechange (r17849): Remove the outermost NWID_LAYERED and NWID_VERTICAL containers from the load and save nested widget parts, since they do nothing.
alberth <alberth@openttd.org>
parents: 13409
diff changeset
1595 SetDataTip(STR_SAVELOAD_OSKTITLE, STR_SAVELOAD_EDITBOX_TOOLTIP),
3fb5398475cc (svn r17919) -Codechange (r17849): Remove the outermost NWID_LAYERED and NWID_VERTICAL containers from the load and save nested widget parts, since they do nothing.
alberth <alberth@openttd.org>
parents: 13409
diff changeset
1596 EndContainer(),
3fb5398475cc (svn r17919) -Codechange (r17849): Remove the outermost NWID_LAYERED and NWID_VERTICAL containers from the load and save nested widget parts, since they do nothing.
alberth <alberth@openttd.org>
parents: 13409
diff changeset
1597 NWidget(NWID_HORIZONTAL),
13704
af90d4bf0785 (svn r18229) -Codechange: Make fill_x, fill_y a number instead of a bool.
alberth <alberth@openttd.org>
parents: 13683
diff changeset
1598 NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, SLWW_DELETE_SELECTION), SetDataTip(STR_SAVELOAD_DELETE_BUTTON, STR_SAVELOAD_DELETE_TOOLTIP), SetFill(1, 0), SetResize(1, 0),
af90d4bf0785 (svn r18229) -Codechange: Make fill_x, fill_y a number instead of a bool.
alberth <alberth@openttd.org>
parents: 13683
diff changeset
1599 NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, SLWW_SAVE_GAME), SetDataTip(STR_SAVELOAD_SAVE_BUTTON, STR_SAVELOAD_SAVE_TOOLTIP), SetFill(1, 0), SetResize(1, 0),
13752
517d77f53919 (svn r18277) -Codechange: remove unneeded widget indices for close, resize and sticky boxes and for window captions
rubidium <rubidium@openttd.org>
parents: 13749
diff changeset
1600 NWidget(WWT_RESIZEBOX, COLOUR_GREY),
11865
a8d788b2bbd2 (svn r16259) -Codechange: Added nested widgets to the load and save dialogue windows.
alberth <alberth@openttd.org>
parents: 11864
diff changeset
1601 EndContainer(),
a8d788b2bbd2 (svn r16259) -Codechange: Added nested widgets to the load and save dialogue windows.
alberth <alberth@openttd.org>
parents: 11864
diff changeset
1602 };
a8d788b2bbd2 (svn r16259) -Codechange: Added nested widgets to the load and save dialogue windows.
alberth <alberth@openttd.org>
parents: 11864
diff changeset
1603
11085
8da1855e9f14 (svn r15428) -Codechange: consistently use colour instead of having both color and colour.
rubidium <rubidium@openttd.org>
parents: 11081
diff changeset
1604 /* Colours for fios types */
8da1855e9f14 (svn r15428) -Codechange: consistently use colour instead of having both color and colour.
rubidium <rubidium@openttd.org>
parents: 11081
diff changeset
1605 const TextColour _fios_colours[] = {
7824
7ae5bda4e8dd (svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas <belugas@openttd.org>
parents: 7750
diff changeset
1606 TC_LIGHT_BLUE, TC_DARK_GREEN, TC_DARK_GREEN, TC_ORANGE, TC_LIGHT_BROWN,
7ae5bda4e8dd (svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas <belugas@openttd.org>
parents: 7750
diff changeset
1607 TC_ORANGE, TC_LIGHT_BROWN, TC_ORANGE, TC_ORANGE, TC_YELLOW
7ae5bda4e8dd (svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas <belugas@openttd.org>
parents: 7750
diff changeset
1608 };
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1609
6247
57363e064324 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium <rubidium@openttd.org>
parents: 6239
diff changeset
1610 void BuildFileList()
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1611 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1612 _fios_path_changed = true;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1613 FiosFreeSavegameList();
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1614
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1615 switch (_saveload_mode) {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1616 case SLD_NEW_GAME:
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1617 case SLD_LOAD_SCENARIO:
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1618 case SLD_SAVE_SCENARIO:
9441
e899ed594e7c (svn r13359) -Codechange: convert _fios_items to a SmallVector
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
1619 FiosGetScenarioList(_saveload_mode); break;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1620 case SLD_LOAD_HEIGHTMAP:
9441
e899ed594e7c (svn r13359) -Codechange: convert _fios_items to a SmallVector
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
1621 FiosGetHeightmapList(_saveload_mode); break;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1622
9441
e899ed594e7c (svn r13359) -Codechange: convert _fios_items to a SmallVector
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
1623 default: FiosGetSavegameList(_saveload_mode); break;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1624 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1625 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1626
6247
57363e064324 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium <rubidium@openttd.org>
parents: 6239
diff changeset
1627 static void MakeSortedSaveGameList()
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1628 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1629 uint sort_start = 0;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1630 uint sort_end = 0;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1631
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1632 /* Directories are always above the files (FIOS_TYPE_DIR)
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1633 * Drives (A:\ (windows only) are always under the files (FIOS_TYPE_DRIVE)
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1634 * Only sort savegames/scenarios, not directories
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1635 */
9441
e899ed594e7c (svn r13359) -Codechange: convert _fios_items to a SmallVector
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
1636 for (const FiosItem *item = _fios_items.Begin(); item != _fios_items.End(); item++) {
e899ed594e7c (svn r13359) -Codechange: convert _fios_items to a SmallVector
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
1637 switch (item->type) {
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1638 case FIOS_TYPE_DIR: sort_start++; break;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1639 case FIOS_TYPE_PARENT: sort_start++; break;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1640 case FIOS_TYPE_DRIVE: sort_end++; break;
9031
9c6b04429f26 (svn r12848) -Cleanup/Codechange: Use correct variable types, don't prefix with _ for non-globals, and use implicit enum numbering.
peter1138 <peter1138@openttd.org>
parents: 8973
diff changeset
1641 default: break;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1642 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1643 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1644
9441
e899ed594e7c (svn r13359) -Codechange: convert _fios_items to a SmallVector
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
1645 uint s_amount = _fios_items.Length() - sort_start - sort_end;
13030
12fa346326b0 (svn r17528) -Codechange: use QSortT instead of qsort for sorting FiosItems
rubidium <rubidium@openttd.org>
parents: 13027
diff changeset
1646 QSortT(_fios_items.Get(sort_start), s_amount, CompareFiosItems);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1647 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1648
6247
57363e064324 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium <rubidium@openttd.org>
parents: 6239
diff changeset
1649 extern void StartupEngines();
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1650
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1651 struct SaveLoadWindow : public QueryStringBaseWindow {
10944
0f460411415a (svn r15283) -Documentation: Apply some widget naming to the widget arrays.
belugas <belugas@openttd.org>
parents: 10934
diff changeset
1652 private:
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1653 FiosItem o_dir;
10944
0f460411415a (svn r15283) -Documentation: Apply some widget naming to the widget arrays.
belugas <belugas@openttd.org>
parents: 10934
diff changeset
1654 public:
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1655
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1656 void GenerateFileName()
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1657 {
10533
53a8506c2079 (svn r14790) -Codechange: unify generation of default savegame/screenshot names (PhilSophus)
rubidium <rubidium@openttd.org>
parents: 10499
diff changeset
1658 GenerateDefaultSaveName(this->edit_str_buf, &this->edit_str_buf[this->edit_str_size - 1]);
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1659 }
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1660
13340
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1661 SaveLoadWindow(const WindowDesc *desc, SaveLoadDialogMode mode) : QueryStringBaseWindow(64)
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1662 {
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1663 static const StringID saveload_captions[] = {
11730
a39da1e4c1f5 (svn r16118) -Change/cleanup: remove the hexadecimal 'in TTD the string had this ID' from 'some' strings and replace the string name with something more sensible.
rubidium <rubidium@openttd.org>
parents: 11702
diff changeset
1664 STR_SAVELOAD_LOAD_CAPTION,
a39da1e4c1f5 (svn r16118) -Change/cleanup: remove the hexadecimal 'in TTD the string had this ID' from 'some' strings and replace the string name with something more sensible.
rubidium <rubidium@openttd.org>
parents: 11702
diff changeset
1665 STR_SAVELOAD_LOAD_SCENARIO,
a39da1e4c1f5 (svn r16118) -Change/cleanup: remove the hexadecimal 'in TTD the string had this ID' from 'some' strings and replace the string name with something more sensible.
rubidium <rubidium@openttd.org>
parents: 11702
diff changeset
1666 STR_SAVELOAD_SAVE_CAPTION,
a39da1e4c1f5 (svn r16118) -Change/cleanup: remove the hexadecimal 'in TTD the string had this ID' from 'some' strings and replace the string name with something more sensible.
rubidium <rubidium@openttd.org>
parents: 11702
diff changeset
1667 STR_SAVELOAD_SAVE_SCENARIO,
12632
e41943276802 (svn r17075) -Codechange: rename ~750 strings to be more uniform with their relatives
rubidium <rubidium@openttd.org>
parents: 12619
diff changeset
1668 STR_SAVELOAD_LOAD_HEIGHTMAP,
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1669 };
13340
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1670 assert((uint)mode < lengthof(saveload_captions));
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1671
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1672 /* Use an array to define what will be the current file type being handled
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1673 * by current file mode */
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1674 switch (mode) {
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1675 case SLD_SAVE_GAME: this->GenerateFileName(); break;
11644
7980a47b17cb (svn r16024) -Codechange: harden string copying on places where it's possible
rubidium <rubidium@openttd.org>
parents: 11544
diff changeset
1676 case SLD_SAVE_SCENARIO: strecpy(this->edit_str_buf, "UNNAMED", &this->edit_str_buf[edit_str_size - 1]); break;
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1677 default: break;
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1678 }
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1679
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1680 this->afilter = CS_ALPHANUMERAL;
9897
5b558ce6cb0e (svn r14046) -Codechange: make the size of querystring "widgets" more configurable.
rubidium <rubidium@openttd.org>
parents: 9790
diff changeset
1681 InitializeTextBuffer(&this->text, this->edit_str_buf, this->edit_str_size, 240);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1682
13340
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1683 this->CreateNestedTree(desc);
14063
4eb2be463cc4 (svn r18606) -Codechange: Introduce several forms of zero-size stacked display planes.
alberth <alberth@openttd.org>
parents: 14037
diff changeset
1684 if (mode == SLD_LOAD_GAME) this->GetWidget<NWidgetStacked>(SLWW_CONTENT_DOWNLOAD_SEL)->SetDisplayedPlane(SZSP_HORIZONTAL);
13340
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1685 this->GetWidget<NWidgetCore>(SLWW_WINDOWTITLE)->widget_data = saveload_captions[mode];
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1686
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1687 this->FinishInitNested(desc, 0);
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1688
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1689 this->LowerWidget(SLWW_DRIVES_DIRECTORIES_LIST);
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1690
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1691 /* pause is only used in single-player, non-editor mode, non-menu mode. It
9693
cf5a441f1069 (svn r13800) -Codechange: minor comment style fixes in misc_gui.cpp
smatz <smatz@openttd.org>
parents: 9682
diff changeset
1692 * will be unpaused in the WE_DESTROY event handler. */
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1693 if (_game_mode != GM_MENU && !_networking && _game_mode != GM_EDITOR) {
11852
862dd1024fe7 (svn r16242) -Codechange: rework pausing
rubidium <rubidium@openttd.org>
parents: 11837
diff changeset
1694 DoCommandP(0, PM_PAUSED_SAVELOAD, 1, CMD_PAUSE);
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1695 }
13340
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1696 SetObjectToPlace(SPR_CURSOR_ZZZ, PAL_NONE, HT_NONE, WC_MAIN_WINDOW, 0);
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1697
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1698 BuildFileList();
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1699
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1700 ResetObjectToPlace();
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1701
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1702 o_dir.type = FIOS_TYPE_DIRECT;
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1703 switch (_saveload_mode) {
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1704 case SLD_SAVE_GAME:
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1705 case SLD_LOAD_GAME:
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1706 FioGetDirectory(o_dir.name, lengthof(o_dir.name), SAVE_DIR);
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1707 break;
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1708
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1709 case SLD_SAVE_SCENARIO:
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1710 case SLD_LOAD_SCENARIO:
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1711 FioGetDirectory(o_dir.name, lengthof(o_dir.name), SCENARIO_DIR);
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1712 break;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1713
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1714 case SLD_LOAD_HEIGHTMAP:
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1715 FioGetDirectory(o_dir.name, lengthof(o_dir.name), HEIGHTMAP_DIR);
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1716 break;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1717
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1718 default:
10310
5cefbb1c3fd7 (svn r14555) -Codechange: replace ttd_strlcat and ttd_strlcpy with strecat and strecpy where direct conversion is possible
skidd13 <skidd13@openttd.org>
parents: 10295
diff changeset
1719 strecpy(o_dir.name, _personal_dir, lastof(o_dir.name));
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1720 }
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1721
11081
0a26df8849a2 (svn r15424) -Codechange: make it possible to have multiple windows with edit box open simultaniously (Zuu).
rubidium <rubidium@openttd.org>
parents: 10960
diff changeset
1722 /* Focus the edit box by default in the save windows */
0a26df8849a2 (svn r15424) -Codechange: make it possible to have multiple windows with edit box open simultaniously (Zuu).
rubidium <rubidium@openttd.org>
parents: 10960
diff changeset
1723 if (_saveload_mode == SLD_SAVE_GAME || _saveload_mode == SLD_SAVE_SCENARIO) {
0a26df8849a2 (svn r15424) -Codechange: make it possible to have multiple windows with edit box open simultaniously (Zuu).
rubidium <rubidium@openttd.org>
parents: 10960
diff changeset
1724 this->SetFocusedWidget(SLWW_SAVE_OSK_TITLE);
0a26df8849a2 (svn r15424) -Codechange: make it possible to have multiple windows with edit box open simultaniously (Zuu).
rubidium <rubidium@openttd.org>
parents: 10960
diff changeset
1725 }
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1726 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1727
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1728 virtual ~SaveLoadWindow()
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1729 {
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1730 /* pause is only used in single-player, non-editor mode, non menu mode */
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1731 if (!_networking && _game_mode != GM_EDITOR && _game_mode != GM_MENU) {
11852
862dd1024fe7 (svn r16242) -Codechange: rework pausing
rubidium <rubidium@openttd.org>
parents: 11837
diff changeset
1732 DoCommandP(0, PM_PAUSED_SAVELOAD, 0, CMD_PAUSE);
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1733 }
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1734 FiosFreeSavegameList();
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1735 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1736
13340
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1737 virtual void DrawWidget(const Rect &r, int widget) const
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1738 {
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1739 switch (widget) {
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1740 case SLWW_SORT_BYNAME:
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1741 case SLWW_SORT_BYDATE:
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1742 if (((_savegame_sort_order & SORT_BY_NAME) != 0) == (widget == SLWW_SORT_BYNAME)) {
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1743 this->DrawSortButtonState(widget, _savegame_sort_order & SORT_DESCENDING ? SBS_DOWN : SBS_UP);
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1744 }
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1745 break;
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1746
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1747 case SLWW_BACKGROUND: {
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1748 static const char *path = NULL;
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1749 static StringID str = STR_ERROR_UNABLE_TO_READ_DRIVE;
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1750 static uint64 tot = 0;
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1751
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1752 if (_fios_path_changed) {
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1753 str = FiosGetDescText(&path, &tot);
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1754 _fios_path_changed = false;
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1755 }
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1756
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1757 if (str != STR_ERROR_UNABLE_TO_READ_DRIVE) SetDParam(0, tot);
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1758 DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, r.top + FONT_HEIGHT_NORMAL + WD_FRAMERECT_TOP, str);
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1759 DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, r.top + WD_FRAMERECT_TOP, path, TC_BLACK);
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1760 } break;
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1761
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1762 case SLWW_DRIVES_DIRECTORIES_LIST: {
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1763 GfxFillRect(r.left + 1, r.top + 1, r.right, r.bottom, 0xD7);
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1764
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1765 uint y = r.top + WD_FRAMERECT_TOP;
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1766 for (uint pos = this->vscroll.GetPosition(); pos < _fios_items.Length(); pos++) {
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1767 const FiosItem *item = _fios_items.Get(pos);
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1768
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1769 DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, item->title, _fios_colours[item->type]);
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1770 y += this->resize.step_height;
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1771 if (y >= this->vscroll.GetCapacity() * this->resize.step_height + r.top + WD_FRAMERECT_TOP) break;
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1772 }
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1773 } break;
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1774 }
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1775 }
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1776
13705
8dee47e001b2 (svn r18230) -Codechange: Allow fill stepsize to be set from Window::UpdateWidgetSize().
alberth <alberth@openttd.org>
parents: 13704
diff changeset
1777 virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
13340
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1778 {
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1779 switch (widget) {
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1780 case SLWW_BACKGROUND:
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1781 size->height = 2 * FONT_HEIGHT_NORMAL + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM;
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1782 break;
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1783
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1784 case SLWW_DRIVES_DIRECTORIES_LIST:
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1785 resize->height = FONT_HEIGHT_NORMAL;
13611
1e76fef2e9e2 (svn r18135) -Codechange: File list text overflowed its container.
peter1138 <peter1138@openttd.org>
parents: 13602
diff changeset
1786 size->height = resize->height * 10 + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM;
13340
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1787 break;
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1788 }
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1789 }
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1790
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1791 virtual void OnPaint()
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1792 {
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1793 if (_savegame_sort_dirty) {
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1794 _savegame_sort_dirty = false;
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1795 MakeSortedSaveGameList();
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1796 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1797
13340
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1798 this->vscroll.SetCount(_fios_items.Length());
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1799 this->DrawWidgets();
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1800
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1801 if (_saveload_mode == SLD_SAVE_GAME || _saveload_mode == SLD_SAVE_SCENARIO) {
10944
0f460411415a (svn r15283) -Documentation: Apply some widget naming to the widget arrays.
belugas <belugas@openttd.org>
parents: 10934
diff changeset
1802 this->DrawEditBox(SLWW_SAVE_OSK_TITLE);
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1803 }
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1804 }
8738
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
1805
14409
1eaefde497fd (svn r18966) -Codechange: Remove Window::OnDoubleClick() in favour of a parameter for OnClick().
frosch <frosch@openttd.org>
parents: 14344
diff changeset
1806 virtual void OnClick(Point pt, int widget, int click_count)
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1807 {
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1808 switch (widget) {
10944
0f460411415a (svn r15283) -Documentation: Apply some widget naming to the widget arrays.
belugas <belugas@openttd.org>
parents: 10934
diff changeset
1809 case SLWW_SORT_BYNAME: // Sort save names by name
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1810 _savegame_sort_order = (_savegame_sort_order == SORT_BY_NAME) ?
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1811 SORT_BY_NAME | SORT_DESCENDING : SORT_BY_NAME;
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1812 _savegame_sort_dirty = true;
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1813 this->SetDirty();
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1814 break;
8738
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
1815
10944
0f460411415a (svn r15283) -Documentation: Apply some widget naming to the widget arrays.
belugas <belugas@openttd.org>
parents: 10934
diff changeset
1816 case SLWW_SORT_BYDATE: // Sort save names by date
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1817 _savegame_sort_order = (_savegame_sort_order == SORT_BY_DATE) ?
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1818 SORT_BY_DATE | SORT_DESCENDING : SORT_BY_DATE;
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1819 _savegame_sort_dirty = true;
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1820 this->SetDirty();
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1821 break;
8738
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
1822
10944
0f460411415a (svn r15283) -Documentation: Apply some widget naming to the widget arrays.
belugas <belugas@openttd.org>
parents: 10934
diff changeset
1823 case SLWW_HOME_BUTTON: // OpenTTD 'button', jumps to OpenTTD directory
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1824 FiosBrowseTo(&o_dir);
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1825 this->SetDirty();
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1826 BuildFileList();
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1827 break;
8738
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
1828
10944
0f460411415a (svn r15283) -Documentation: Apply some widget naming to the widget arrays.
belugas <belugas@openttd.org>
parents: 10934
diff changeset
1829 case SLWW_DRIVES_DIRECTORIES_LIST: { // Click the listbox
13340
d482f09e16bd (svn r17849) -Codechange: make the saveload windows nested
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
1830 int y = (pt.y - this->GetWidget<NWidgetBase>(SLWW_DRIVES_DIRECTORIES_LIST)->pos_y - WD_FRAMERECT_TOP) / this->resize.step_height;
8738
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
1831
12878
8ad447b80c42 (svn r17370) -Codechange: make the saveload and network GUIs use the scrollbar wrappers
rubidium <rubidium@openttd.org>
parents: 12867
diff changeset
1832 if (y < 0 || (y += this->vscroll.GetPosition()) >= this->vscroll.GetCount()) return;
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1833
9441
e899ed594e7c (svn r13359) -Codechange: convert _fios_items to a SmallVector
skidd13 <skidd13@openttd.org>
parents: 9413
diff changeset
1834 const FiosItem *file = _fios_items.Get(y);
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1835
11256
f63c1d69ed92 (svn r15605) -Codechange: constify a function
rubidium <rubidium@openttd.org>
parents: 11230
diff changeset
1836 const char *name = FiosBrowseTo(file);
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1837 if (name != NULL) {
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1838 if (_saveload_mode == SLD_LOAD_GAME || _saveload_mode == SLD_LOAD_SCENARIO) {
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1839 _switch_mode = (_game_mode == GM_EDITOR) ? SM_LOAD_SCENARIO : SM_LOAD;
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1840
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1841 SetFiosType(file->type);
10310
5cefbb1c3fd7 (svn r14555) -Codechange: replace ttd_strlcat and ttd_strlcpy with strecat and strecpy where direct conversion is possible
skidd13 <skidd13@openttd.org>
parents: 10295
diff changeset
1842 strecpy(_file_to_saveload.name, name, lastof(_file_to_saveload.name));
5cefbb1c3fd7 (svn r14555) -Codechange: replace ttd_strlcat and ttd_strlcpy with strecat and strecpy where direct conversion is possible
skidd13 <skidd13@openttd.org>
parents: 10295
diff changeset
1843 strecpy(_file_to_saveload.title, file->title, lastof(_file_to_saveload.title));
8738
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
1844
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1845 delete this;
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1846 } else if (_saveload_mode == SLD_LOAD_HEIGHTMAP) {
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1847 SetFiosType(file->type);
10310
5cefbb1c3fd7 (svn r14555) -Codechange: replace ttd_strlcat and ttd_strlcpy with strecat and strecpy where direct conversion is possible
skidd13 <skidd13@openttd.org>
parents: 10295
diff changeset
1848 strecpy(_file_to_saveload.name, name, lastof(_file_to_saveload.name));
5cefbb1c3fd7 (svn r14555) -Codechange: replace ttd_strlcat and ttd_strlcpy with strecat and strecpy where direct conversion is possible
skidd13 <skidd13@openttd.org>
parents: 10295
diff changeset
1849 strecpy(_file_to_saveload.title, file->title, lastof(_file_to_saveload.title));
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1850
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1851 delete this;
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1852 ShowHeightmapLoad();
8738
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
1853 } else {
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1854 /* SLD_SAVE_GAME, SLD_SAVE_SCENARIO copy clicked name to editbox */
10276
a5286e772120 (svn r14514) -Codechange: use 'size' instead of 'length' for querystring and textbuf, explicitly say it includes the terminating zero
smatz <smatz@openttd.org>
parents: 10208
diff changeset
1855 ttd_strlcpy(this->text.buf, file->title, this->text.maxsize);
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1856 UpdateTextBufferSize(&this->text);
13034
6eb3f749890a (svn r17532) -Codechange: Rename several Invalidate functions to SetDirty for more consistency and distinguishability.
frosch <frosch@openttd.org>
parents: 13030
diff changeset
1857 this->SetWidgetDirty(SLWW_SAVE_OSK_TITLE);
8738
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
1858 }
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1859 } else {
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1860 /* Changed directory, need repaint. */
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1861 this->SetDirty();
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1862 BuildFileList();
8738
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
1863 }
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1864 break;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1865 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1866
11352
62978bce3c1c (svn r15702) -Feature(tte): direct content download 'links' in the play scenario/heightmap windows.
rubidium <rubidium@openttd.org>
parents: 11319
diff changeset
1867 case SLWW_CONTENT_DOWNLOAD:
62978bce3c1c (svn r15702) -Feature(tte): direct content download 'links' in the play scenario/heightmap windows.
rubidium <rubidium@openttd.org>
parents: 11319
diff changeset
1868 if (!_network_available) {
13419
ddfb6a69b9c3 (svn r17928) -Codechange: ShowErrorMessage() now takes the summary string before the details string.
alberth <alberth@openttd.org>
parents: 13418
diff changeset
1869 ShowErrorMessage(STR_NETWORK_ERROR_NOTAVAILABLE, INVALID_STRING_ID, 0, 0);
11352
62978bce3c1c (svn r15702) -Feature(tte): direct content download 'links' in the play scenario/heightmap windows.
rubidium <rubidium@openttd.org>
parents: 11319
diff changeset
1870 } else {
62978bce3c1c (svn r15702) -Feature(tte): direct content download 'links' in the play scenario/heightmap windows.
rubidium <rubidium@openttd.org>
parents: 11319
diff changeset
1871 #if defined(ENABLE_NETWORK)
62978bce3c1c (svn r15702) -Feature(tte): direct content download 'links' in the play scenario/heightmap windows.
rubidium <rubidium@openttd.org>
parents: 11319
diff changeset
1872 switch (_saveload_mode) {
62978bce3c1c (svn r15702) -Feature(tte): direct content download 'links' in the play scenario/heightmap windows.
rubidium <rubidium@openttd.org>
parents: 11319
diff changeset
1873 default: NOT_REACHED();
62978bce3c1c (svn r15702) -Feature(tte): direct content download 'links' in the play scenario/heightmap windows.
rubidium <rubidium@openttd.org>
parents: 11319
diff changeset
1874 case SLD_LOAD_SCENARIO: ShowNetworkContentListWindow(NULL, CONTENT_TYPE_SCENARIO); break;
62978bce3c1c (svn r15702) -Feature(tte): direct content download 'links' in the play scenario/heightmap windows.
rubidium <rubidium@openttd.org>
parents: 11319
diff changeset
1875 case SLD_LOAD_HEIGHTMAP: ShowNetworkContentListWindow(NULL, CONTENT_TYPE_HEIGHTMAP); break;
62978bce3c1c (svn r15702) -Feature(tte): direct content download 'links' in the play scenario/heightmap windows.
rubidium <rubidium@openttd.org>
parents: 11319
diff changeset
1876 }
62978bce3c1c (svn r15702) -Feature(tte): direct content download 'links' in the play scenario/heightmap windows.
rubidium <rubidium@openttd.org>
parents: 11319
diff changeset
1877 #endif
62978bce3c1c (svn r15702) -Feature(tte): direct content download 'links' in the play scenario/heightmap windows.
rubidium <rubidium@openttd.org>
parents: 11319
diff changeset
1878 }
62978bce3c1c (svn r15702) -Feature(tte): direct content download 'links' in the play scenario/heightmap windows.
rubidium <rubidium@openttd.org>
parents: 11319
diff changeset
1879 break;
62978bce3c1c (svn r15702) -Feature(tte): direct content download 'links' in the play scenario/heightmap windows.
rubidium <rubidium@openttd.org>
parents: 11319
diff changeset
1880
10944
0f460411415a (svn r15283) -Documentation: Apply some widget naming to the widget arrays.
belugas <belugas@openttd.org>
parents: 10934
diff changeset
1881 case SLWW_DELETE_SELECTION: case SLWW_SAVE_GAME: // Delete, Save game
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1882 break;
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1883 }
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1884 }
8738
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
1885
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1886 virtual void OnMouseLoop()
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1887 {
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1888 if (_saveload_mode == SLD_SAVE_GAME || _saveload_mode == SLD_SAVE_SCENARIO) {
10944
0f460411415a (svn r15283) -Documentation: Apply some widget naming to the widget arrays.
belugas <belugas@openttd.org>
parents: 10934
diff changeset
1889 this->HandleEditBox(SLWW_SAVE_OSK_TITLE);
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1890 }
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1891 }
8738
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
1892
9285
3b3f13cb6db6 (svn r13151) -Codechange: use an enum instead of bool as return type of OnKeyPress/OnCTRLStateChange to make it obvious what the return values mean.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
1893 virtual EventState OnKeyPress(uint16 key, uint16 keycode)
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1894 {
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1895 if (keycode == WKC_ESC) {
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1896 delete this;
9285
3b3f13cb6db6 (svn r13151) -Codechange: use an enum instead of bool as return type of OnKeyPress/OnCTRLStateChange to make it obvious what the return values mean.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
1897 return ES_HANDLED;
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1898 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1899
9285
3b3f13cb6db6 (svn r13151) -Codechange: use an enum instead of bool as return type of OnKeyPress/OnCTRLStateChange to make it obvious what the return values mean.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
1900 EventState state = ES_NOT_HANDLED;
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1901 if ((_saveload_mode == SLD_SAVE_GAME || _saveload_mode == SLD_SAVE_SCENARIO) &&
10944
0f460411415a (svn r15283) -Documentation: Apply some widget naming to the widget arrays.
belugas <belugas@openttd.org>
parents: 10934
diff changeset
1902 this->HandleEditBoxKey(SLWW_SAVE_OSK_TITLE, key, keycode, state) == HEBR_CONFIRM) {
0f460411415a (svn r15283) -Documentation: Apply some widget naming to the widget arrays.
belugas <belugas@openttd.org>
parents: 10934
diff changeset
1903 this->HandleButtonClick(SLWW_SAVE_GAME);
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1904 }
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1905
9285
3b3f13cb6db6 (svn r13151) -Codechange: use an enum instead of bool as return type of OnKeyPress/OnCTRLStateChange to make it obvious what the return values mean.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
1906 return state;
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1907 }
8738
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
1908
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1909 virtual void OnTimeout()
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1910 {
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1911 /* This test protects against using widgets 11 and 12 which are only available
9693
cf5a441f1069 (svn r13800) -Codechange: minor comment style fixes in misc_gui.cpp
smatz <smatz@openttd.org>
parents: 9682
diff changeset
1912 * in those two saveload mode */
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1913 if (!(_saveload_mode == SLD_SAVE_GAME || _saveload_mode == SLD_SAVE_SCENARIO)) return;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1914
10944
0f460411415a (svn r15283) -Documentation: Apply some widget naming to the widget arrays.
belugas <belugas@openttd.org>
parents: 10934
diff changeset
1915 if (this->IsWidgetLowered(SLWW_DELETE_SELECTION)) { // Delete button clicked
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1916 if (!FiosDelete(this->text.buf)) {
13419
ddfb6a69b9c3 (svn r17928) -Codechange: ShowErrorMessage() now takes the summary string before the details string.
alberth <alberth@openttd.org>
parents: 13418
diff changeset
1917 ShowErrorMessage(STR_ERROR_UNABLE_TO_DELETE_FILE, INVALID_STRING_ID, 0, 0);
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1918 } else {
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1919 BuildFileList();
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1920 /* Reset file name to current date on successful delete */
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1921 if (_saveload_mode == SLD_SAVE_GAME) GenerateFileName();
8738
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
1922 }
723631ab4868 (svn r12426) -Cleanup: sprinkle some coding style over a few files.
rubidium <rubidium@openttd.org>
parents: 8737
diff changeset
1923
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1924 UpdateTextBufferSize(&this->text);
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1925 this->SetDirty();
10944
0f460411415a (svn r15283) -Documentation: Apply some widget naming to the widget arrays.
belugas <belugas@openttd.org>
parents: 10934
diff changeset
1926 } else if (this->IsWidgetLowered(SLWW_SAVE_GAME)) { // Save button clicked
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1927 _switch_mode = SM_SAVE;
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1928 FiosMakeSavegameName(_file_to_saveload.name, this->text.buf, sizeof(_file_to_saveload.name));
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1929
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1930 /* In the editor set up the vehicle engines correctly (date might have changed) */
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1931 if (_game_mode == GM_EDITOR) StartupEngines();
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1932 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1933 }
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1934
13344
04b02b2cfa2b (svn r17853) -Codechange: remove the 'delta' parameter from OnResize; it was used in ways that aren't always wanted, causing bugs and the like. Also with nested widgets most reasons for handling OnResize have gone.
rubidium <rubidium@openttd.org>
parents: 13340
diff changeset
1935 virtual void OnResize()
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1936 {
14037
ca29deba0f1a (svn r18580) -Codechange: Use widget information only for setting scrollbar capacity.
alberth <alberth@openttd.org>
parents: 13996
diff changeset
1937 this->vscroll.SetCapacityFromWidget(this, SLWW_DRIVES_DIRECTORIES_LIST);
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1938 }
11352
62978bce3c1c (svn r15702) -Feature(tte): direct content download 'links' in the play scenario/heightmap windows.
rubidium <rubidium@openttd.org>
parents: 11319
diff changeset
1939
62978bce3c1c (svn r15702) -Feature(tte): direct content download 'links' in the play scenario/heightmap windows.
rubidium <rubidium@openttd.org>
parents: 11319
diff changeset
1940 virtual void OnInvalidateData(int data)
62978bce3c1c (svn r15702) -Feature(tte): direct content download 'links' in the play scenario/heightmap windows.
rubidium <rubidium@openttd.org>
parents: 11319
diff changeset
1941 {
62978bce3c1c (svn r15702) -Feature(tte): direct content download 'links' in the play scenario/heightmap windows.
rubidium <rubidium@openttd.org>
parents: 11319
diff changeset
1942 BuildFileList();
62978bce3c1c (svn r15702) -Feature(tte): direct content download 'links' in the play scenario/heightmap windows.
rubidium <rubidium@openttd.org>
parents: 11319
diff changeset
1943 }
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1944 };
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1945
11373
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11369
diff changeset
1946 static const WindowDesc _load_dialog_desc(
13796
3e68f07eb821 (svn r18322) -Codechange: remove the WDP duplication; no need to tell the same twice.
rubidium <rubidium@openttd.org>
parents: 13792
diff changeset
1947 WDP_CENTER, 257, 294,
5893
8547517ef719 (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium <rubidium@openttd.org>
parents: 5750
diff changeset
1948 WC_SAVELOAD, WC_NONE,
13749
fc3ab8256c95 (svn r18274) -Codechange: remove the unused WDF flags
rubidium <rubidium@openttd.org>
parents: 13705
diff changeset
1949 WDF_UNCLICK_BUTTONS,
13564
bae287664b02 (svn r18086) -Codechange: remove 'widget' from WindowDesc
rubidium <rubidium@openttd.org>
parents: 13478
diff changeset
1950 _nested_load_dialog_widgets, lengthof(_nested_load_dialog_widgets)
11373
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11369
diff changeset
1951 );
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1952
11373
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11369
diff changeset
1953 static const WindowDesc _save_dialog_desc(
13796
3e68f07eb821 (svn r18322) -Codechange: remove the WDP duplication; no need to tell the same twice.
rubidium <rubidium@openttd.org>
parents: 13792
diff changeset
1954 WDP_CENTER, 257, 320,
5893
8547517ef719 (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium <rubidium@openttd.org>
parents: 5750
diff changeset
1955 WC_SAVELOAD, WC_NONE,
13749
fc3ab8256c95 (svn r18274) -Codechange: remove the unused WDF flags
rubidium <rubidium@openttd.org>
parents: 13705
diff changeset
1956 WDF_UNCLICK_BUTTONS,
13564
bae287664b02 (svn r18086) -Codechange: remove 'widget' from WindowDesc
rubidium <rubidium@openttd.org>
parents: 13478
diff changeset
1957 _nested_save_dialog_widgets, lengthof(_nested_save_dialog_widgets)
11373
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11369
diff changeset
1958 );
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1959
8152
32bfb56e7e0e (svn r11714) -Fix[FS#1569]: Do not allow player inauguration date on scenarios to be bigger than current year.
belugas <belugas@openttd.org>
parents: 8149
diff changeset
1960 /** These values are used to convert the file/operations mode into a corresponding file type.
32bfb56e7e0e (svn r11714) -Fix[FS#1569]: Do not allow player inauguration date on scenarios to be bigger than current year.
belugas <belugas@openttd.org>
parents: 8149
diff changeset
1961 * So each entry, as expressed by the related comment, is based on the enum */
32bfb56e7e0e (svn r11714) -Fix[FS#1569]: Do not allow player inauguration date on scenarios to be bigger than current year.
belugas <belugas@openttd.org>
parents: 8149
diff changeset
1962 static const FileType _file_modetotype[] = {
32bfb56e7e0e (svn r11714) -Fix[FS#1569]: Do not allow player inauguration date on scenarios to be bigger than current year.
belugas <belugas@openttd.org>
parents: 8149
diff changeset
1963 FT_SAVEGAME, ///< used for SLD_LOAD_GAME
32bfb56e7e0e (svn r11714) -Fix[FS#1569]: Do not allow player inauguration date on scenarios to be bigger than current year.
belugas <belugas@openttd.org>
parents: 8149
diff changeset
1964 FT_SCENARIO, ///< used for SLD_LOAD_SCENARIO
32bfb56e7e0e (svn r11714) -Fix[FS#1569]: Do not allow player inauguration date on scenarios to be bigger than current year.
belugas <belugas@openttd.org>
parents: 8149
diff changeset
1965 FT_SAVEGAME, ///< used for SLD_SAVE_GAME
32bfb56e7e0e (svn r11714) -Fix[FS#1569]: Do not allow player inauguration date on scenarios to be bigger than current year.
belugas <belugas@openttd.org>
parents: 8149
diff changeset
1966 FT_SCENARIO, ///< used for SLD_SAVE_SCENARIO
32bfb56e7e0e (svn r11714) -Fix[FS#1569]: Do not allow player inauguration date on scenarios to be bigger than current year.
belugas <belugas@openttd.org>
parents: 8149
diff changeset
1967 FT_HEIGHTMAP, ///< used for SLD_LOAD_HEIGHTMAP
32bfb56e7e0e (svn r11714) -Fix[FS#1569]: Do not allow player inauguration date on scenarios to be bigger than current year.
belugas <belugas@openttd.org>
parents: 8149
diff changeset
1968 FT_SAVEGAME, ///< SLD_NEW_GAME
32bfb56e7e0e (svn r11714) -Fix[FS#1569]: Do not allow player inauguration date on scenarios to be bigger than current year.
belugas <belugas@openttd.org>
parents: 8149
diff changeset
1969 };
32bfb56e7e0e (svn r11714) -Fix[FS#1569]: Do not allow player inauguration date on scenarios to be bigger than current year.
belugas <belugas@openttd.org>
parents: 8149
diff changeset
1970
8149
ad7ddb6150dc (svn r11711) -Codechange: Name the Save Load Dialog Mode enum
belugas <belugas@openttd.org>
parents: 8144
diff changeset
1971 void ShowSaveLoadDialog(SaveLoadDialogMode mode)
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1972 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1973 DeleteWindowById(WC_SAVELOAD, 0);
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1974
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1975 const WindowDesc *sld;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1976 switch (mode) {
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1977 case SLD_SAVE_GAME:
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1978 case SLD_SAVE_SCENARIO:
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1979 sld = &_save_dialog_desc; break;
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1980 default:
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1981 sld = &_load_dialog_desc; break;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1982 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1983
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1984 _saveload_mode = mode;
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1985 _file_to_saveload.filetype = _file_modetotype[mode];
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1986
9179
3b7b689031d6 (svn r13042) -Codechange: make a class of CreateScenarioWindow, GenerateLandscapeWindow, NetworkChatWindow, NetworkCompanyPasswordWindow, NetworkGameWindow, NetworkStartServerWindow, QueryStringWindow, SaveLoadWindow. All these classes depended on the 'querystr_d' object which is now put into QueryStringBaseWindow. As a side effect this removes quite a lot of WP macro usages and a few global variables.
rubidium <rubidium@openttd.org>
parents: 9178
diff changeset
1987 new SaveLoadWindow(sld, mode);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1988 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1989
6247
57363e064324 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium <rubidium@openttd.org>
parents: 6239
diff changeset
1990 void RedrawAutosave()
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1991 {
13034
6eb3f749890a (svn r17532) -Codechange: Rename several Invalidate functions to SetDirty for more consistency and distinguishability.
frosch <frosch@openttd.org>
parents: 13030
diff changeset
1992 SetWindowDirty(WC_STATUS_BAR, 0);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1993 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1994
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1995 void SetFiosType(const byte fiostype)
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1996 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1997 switch (fiostype) {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1998 case FIOS_TYPE_FILE:
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1999 case FIOS_TYPE_SCENARIO:
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
2000 _file_to_saveload.mode = SL_LOAD;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
2001 break;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
2002
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
2003 case FIOS_TYPE_OLDFILE:
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
2004 case FIOS_TYPE_OLD_SCENARIO:
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
2005 _file_to_saveload.mode = SL_OLD_LOAD;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
2006 break;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
2007
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
2008 #ifdef WITH_PNG
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
2009 case FIOS_TYPE_PNG:
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
2010 _file_to_saveload.mode = SL_PNG;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
2011 break;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
2012 #endif /* WITH_PNG */
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
2013
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
2014 case FIOS_TYPE_BMP:
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
2015 _file_to_saveload.mode = SL_BMP;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
2016 break;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
2017
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
2018 default:
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
2019 _file_to_saveload.mode = SL_INVALID;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
2020 break;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
2021 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
2022 }