annotate src/newgrf_gui.cpp @ 20706:79930f9362c3 draft

-Change: [Win32] Position the IME composition window at the caret position.
author Michael Lutz <michi@icosahedron.de>
date Sun, 07 Apr 2013 17:10:38 +0200
parents 2b19f1e6c882
children
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: 12632
diff changeset
3 /*
bc7926153e19 (svn r17248) -Fix: add GPL license notice where appropriate
rubidium <rubidium@openttd.org>
parents: 12632
diff changeset
4 * This file is part of OpenTTD.
bc7926153e19 (svn r17248) -Fix: add GPL license notice where appropriate
rubidium <rubidium@openttd.org>
parents: 12632
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: 12632
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: 12632
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: 12632
diff changeset
8 */
bc7926153e19 (svn r17248) -Fix: add GPL license notice where appropriate
rubidium <rubidium@openttd.org>
parents: 12632
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: 8749
diff changeset
10 /** @file newgrf_gui.cpp GUI to change NewGRF settings. */
6348
bcf98ba27bbf (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas <belugas@openttd.org>
parents: 6248
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"
18627
1972f6346144 (svn r23474) -Codechange: move the declaration error related functions to error.h
rubidium <rubidium@openttd.org>
parents: 18618
diff changeset
13 #include "error.h"
19406
0731e1a0613a (svn r24309) -Codechange: Split some functions from gui.h to settings_gui.h
frosch <frosch@openttd.org>
parents: 19237
diff changeset
14 #include "settings_gui.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
15 #include "newgrf.h"
8114
2d6af5d7a142 (svn r11675) -Codechange: split the string types from the string functions.
rubidium <rubidium@openttd.org>
parents: 8107
diff changeset
16 #include "strings_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: 8130
diff changeset
17 #include "window_func.h"
9457
267a95510fdf (svn r13375) -Add: logging of actions that could possibly cause desyncs and crashes to simplify debugging. See readme.txt for details
smatz <smatz@openttd.org>
parents: 9317
diff changeset
18 #include "gamelog.h"
15599
146255899304 (svn r20259) -Add: allow NewGRFs to specify their version and use that to hide old NewGRFs / to choose the newest when loading compatible NewGRFs
rubidium <rubidium@openttd.org>
parents: 15598
diff changeset
19 #include "settings_type.h"
9677
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
20 #include "settings_func.h"
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
21 #include "widgets/dropdown_type.h"
19415
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
22 #include "widgets/dropdown_func.h"
10793
0744d383a56b (svn r15126) -Feature: downloading content from a central server (content.openttd.org) where authors can upload they NewGRFS/AI etc. This should make joining servers that use only NewGRFs that are distributed via this system easier as the players can download the NewGRFs from in the game. It should also make it easier to see whether there are updates for NewGRFs and make the necessary updates.
rubidium <rubidium@openttd.org>
parents: 10145
diff changeset
23 #include "network/network.h"
0744d383a56b (svn r15126) -Feature: downloading content from a central server (content.openttd.org) where authors can upload they NewGRFS/AI etc. This should make joining servers that use only NewGRFs that are distributed via this system easier as the players can download the NewGRFs from in the game. It should also make it easier to see whether there are updates for NewGRFs and make the necessary updates.
rubidium <rubidium@openttd.org>
parents: 10145
diff changeset
24 #include "network/network_content.h"
13043
8eef3a6e299f (svn r17541) -Feature: Filtering in Add-NewGRF dialog.
frosch <frosch@openttd.org>
parents: 13020
diff changeset
25 #include "sortlist_type.h"
19434
24df8a97401e (svn r24337) -Feature: Allow filtering for multiple words (separated by whitespace resp. quoted) in the sign list, content- and NewGRF-guis.
frosch <frosch@openttd.org>
parents: 19421
diff changeset
26 #include "stringfilter_type.h"
13043
8eef3a6e299f (svn r17541) -Feature: Filtering in Add-NewGRF dialog.
frosch <frosch@openttd.org>
parents: 13020
diff changeset
27 #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: 14149
diff changeset
28 #include "core/geometry_func.hpp"
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
29 #include "newgrf_text.h"
19078
8cb1275f2bb3 (svn r23932) -Codechange: split the NewGRF text window into its own source files
rubidium <rubidium@openttd.org>
parents: 18957
diff changeset
30 #include "textfile_gui.h"
19237
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
31 #include "tilehighlight_func.h"
20000
6c78ce03b517 (svn r24932) -Fix [FS#5158]: Prevent more NewGRFs being selected than is possible to load.
peter1138 <peter1138@openttd.org>
parents: 19968
diff changeset
32 #include "fios.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
33
18680
e87c7c30e606 (svn r23528) -Codechange: move widget enums to widgets/NNN_type.h
truebrain <truebrain@openttd.org>
parents: 18648
diff changeset
34 #include "widgets/newgrf_widget.h"
19078
8cb1275f2bb3 (svn r23932) -Codechange: split the NewGRF text window into its own source files
rubidium <rubidium@openttd.org>
parents: 18957
diff changeset
35 #include "widgets/misc_widget.h"
18680
e87c7c30e606 (svn r23528) -Codechange: move widget enums to widgets/NNN_type.h
truebrain <truebrain@openttd.org>
parents: 18648
diff changeset
36
8264
2495310e220f (svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium <rubidium@openttd.org>
parents: 8224
diff changeset
37 #include "table/sprites.h"
2495310e220f (svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium <rubidium@openttd.org>
parents: 8224
diff changeset
38
20000
6c78ce03b517 (svn r24932) -Fix [FS#5158]: Prevent more NewGRFs being selected than is possible to load.
peter1138 <peter1138@openttd.org>
parents: 19968
diff changeset
39 /* Maximum number of NewGRFs that may be loaded. Six reserved slots are:
6c78ce03b517 (svn r24932) -Fix [FS#5158]: Prevent more NewGRFs being selected than is possible to load.
peter1138 <peter1138@openttd.org>
parents: 19968
diff changeset
40 * 0 - config, 1 - sound, 2 - base, 3 - logos, 4 - climate, 5 - extra */
6c78ce03b517 (svn r24932) -Fix [FS#5158]: Prevent more NewGRFs being selected than is possible to load.
peter1138 <peter1138@openttd.org>
parents: 19968
diff changeset
41 static const int MAX_NEWGRFS = MAX_FILE_SLOTS - 6;
6c78ce03b517 (svn r24932) -Fix [FS#5158]: Prevent more NewGRFs being selected than is possible to load.
peter1138 <peter1138@openttd.org>
parents: 19968
diff changeset
42
13968
070572f1272d (svn r18506) -Fix [FS#3368]: no error message was created for the first fatal NewGRF error.
rubidium <rubidium@openttd.org>
parents: 13796
diff changeset
43 /**
070572f1272d (svn r18506) -Fix [FS#3368]: no error message was created for the first fatal NewGRF error.
rubidium <rubidium@openttd.org>
parents: 13796
diff changeset
44 * Show the first NewGRF error we can find.
070572f1272d (svn r18506) -Fix [FS#3368]: no error message was created for the first fatal NewGRF error.
rubidium <rubidium@openttd.org>
parents: 13796
diff changeset
45 */
070572f1272d (svn r18506) -Fix [FS#3368]: no error message was created for the first fatal NewGRF error.
rubidium <rubidium@openttd.org>
parents: 13796
diff changeset
46 void ShowNewGRFError()
070572f1272d (svn r18506) -Fix [FS#3368]: no error message was created for the first fatal NewGRF error.
rubidium <rubidium@openttd.org>
parents: 13796
diff changeset
47 {
17670
20f6e34b8ff6 (svn r22442) -Fix: Do not popup fatal NewGRF error messages in the intro screen. The GRFs are not going to be activated there anyway and the GRF settings GUI will not display the errors either.
frosch <frosch@openttd.org>
parents: 17657
diff changeset
48 /* Do not show errors when entering the main screen */
20f6e34b8ff6 (svn r22442) -Fix: Do not popup fatal NewGRF error messages in the intro screen. The GRFs are not going to be activated there anyway and the GRF settings GUI will not display the errors either.
frosch <frosch@openttd.org>
parents: 17657
diff changeset
49 if (_game_mode == GM_MENU) return;
20f6e34b8ff6 (svn r22442) -Fix: Do not popup fatal NewGRF error messages in the intro screen. The GRFs are not going to be activated there anyway and the GRF settings GUI will not display the errors either.
frosch <frosch@openttd.org>
parents: 17657
diff changeset
50
13968
070572f1272d (svn r18506) -Fix [FS#3368]: no error message was created for the first fatal NewGRF error.
rubidium <rubidium@openttd.org>
parents: 13796
diff changeset
51 for (const GRFConfig *c = _grfconfig; c != NULL; c = c->next) {
070572f1272d (svn r18506) -Fix [FS#3368]: no error message was created for the first fatal NewGRF error.
rubidium <rubidium@openttd.org>
parents: 13796
diff changeset
52 /* We only want to show fatal errors */
070572f1272d (svn r18506) -Fix [FS#3368]: no error message was created for the first fatal NewGRF error.
rubidium <rubidium@openttd.org>
parents: 13796
diff changeset
53 if (c->error == NULL || c->error->severity != STR_NEWGRF_ERROR_MSG_FATAL) continue;
070572f1272d (svn r18506) -Fix [FS#3368]: no error message was created for the first fatal NewGRF error.
rubidium <rubidium@openttd.org>
parents: 13796
diff changeset
54
070572f1272d (svn r18506) -Fix [FS#3368]: no error message was created for the first fatal NewGRF error.
rubidium <rubidium@openttd.org>
parents: 13796
diff changeset
55 SetDParam (0, c->error->custom_message == NULL ? c->error->message : STR_JUST_RAW_STRING);
070572f1272d (svn r18506) -Fix [FS#3368]: no error message was created for the first fatal NewGRF error.
rubidium <rubidium@openttd.org>
parents: 13796
diff changeset
56 SetDParamStr(1, c->error->custom_message);
18957
f7df1757f6d9 (svn r23812) -Fix [FS#4977] (r23804): custom ActionB messages were broken
yexo <yexo@openttd.org>
parents: 18953
diff changeset
57 SetDParamStr(2, c->filename);
f7df1757f6d9 (svn r23812) -Fix [FS#4977] (r23804): custom ActionB messages were broken
yexo <yexo@openttd.org>
parents: 18953
diff changeset
58 SetDParamStr(3, c->error->data);
18953
2f02d08b8db8 (svn r23807) -Codechange: GRFError::num_params is not needed, remove it.
frosch <frosch@openttd.org>
parents: 18943
diff changeset
59 for (uint i = 0; i < lengthof(c->error->param_value); i++) {
18957
f7df1757f6d9 (svn r23812) -Fix [FS#4977] (r23804): custom ActionB messages were broken
yexo <yexo@openttd.org>
parents: 18953
diff changeset
60 SetDParam(4 + i, c->error->param_value[i]);
13968
070572f1272d (svn r18506) -Fix [FS#3368]: no error message was created for the first fatal NewGRF error.
rubidium <rubidium@openttd.org>
parents: 13796
diff changeset
61 }
14645
b7a22979b84e (svn r19224) -Codechange: change parameters passed to ShowErrorMessage() a bit
smatz <smatz@openttd.org>
parents: 14561
diff changeset
62 ShowErrorMessage(STR_NEWGRF_ERROR_FATAL_POPUP, INVALID_STRING_ID, WL_CRITICAL);
13968
070572f1272d (svn r18506) -Fix [FS#3368]: no error message was created for the first fatal NewGRF error.
rubidium <rubidium@openttd.org>
parents: 13796
diff changeset
63 break;
070572f1272d (svn r18506) -Fix [FS#3368]: no error message was created for the first fatal NewGRF error.
rubidium <rubidium@openttd.org>
parents: 13796
diff changeset
64 }
070572f1272d (svn r18506) -Fix [FS#3368]: no error message was created for the first fatal NewGRF error.
rubidium <rubidium@openttd.org>
parents: 13796
diff changeset
65 }
070572f1272d (svn r18506) -Fix [FS#3368]: no error message was created for the first fatal NewGRF error.
rubidium <rubidium@openttd.org>
parents: 13796
diff changeset
66
13017
ab07d6d87608 (svn r17511) -Codechange: Simplify ShowNewGRFInfo() by passing 'right' instead of 'width'.
frosch <frosch@openttd.org>
parents: 12879
diff changeset
67 static void ShowNewGRFInfo(const GRFConfig *c, uint x, uint y, uint right, uint bottom, bool show_params)
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
68 {
6103
e3a3a903fa28 (svn r8838) -Feature: Show newgrf error messages loaded in Action B in the newgrf gui
maedhros <maedhros@openttd.org>
parents: 5893
diff changeset
69 if (c->error != NULL) {
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: 9457
diff changeset
70 char message[512];
9957
2416082e752c (svn r14112) -Fix (r13715)[FS#2232]: Action B custom messages with parameteers were broken.
frosch <frosch@openttd.org>
parents: 9864
diff changeset
71 SetDParamStr(0, c->error->custom_message); // is skipped by built-in messages
18957
f7df1757f6d9 (svn r23812) -Fix [FS#4977] (r23804): custom ActionB messages were broken
yexo <yexo@openttd.org>
parents: 18953
diff changeset
72 SetDParamStr(1, c->filename);
f7df1757f6d9 (svn r23812) -Fix [FS#4977] (r23804): custom ActionB messages were broken
yexo <yexo@openttd.org>
parents: 18953
diff changeset
73 SetDParamStr(2, c->error->data);
18953
2f02d08b8db8 (svn r23807) -Codechange: GRFError::num_params is not needed, remove it.
frosch <frosch@openttd.org>
parents: 18943
diff changeset
74 for (uint i = 0; i < lengthof(c->error->param_value); i++) {
18957
f7df1757f6d9 (svn r23812) -Fix [FS#4977] (r23804): custom ActionB messages were broken
yexo <yexo@openttd.org>
parents: 18953
diff changeset
75 SetDParam(3 + i, c->error->param_value[i]);
6139
3c76c0f47447 (svn r8881) -Feature: Allow built-in newgrf error messages to be translated, and load custom error messages properly.
maedhros <maedhros@openttd.org>
parents: 6103
diff changeset
76 }
9957
2416082e752c (svn r14112) -Fix (r13715)[FS#2232]: Action B custom messages with parameteers were broken.
frosch <frosch@openttd.org>
parents: 9864
diff changeset
77 GetString(message, c->error->custom_message == NULL ? c->error->message : STR_JUST_RAW_STRING, lastof(message));
6139
3c76c0f47447 (svn r8881) -Feature: Allow built-in newgrf error messages to be translated, and load custom error messages properly.
maedhros <maedhros@openttd.org>
parents: 6103
diff changeset
78
3c76c0f47447 (svn r8881) -Feature: Allow built-in newgrf error messages to be translated, and load custom error messages properly.
maedhros <maedhros@openttd.org>
parents: 6103
diff changeset
79 SetDParamStr(0, message);
13017
ab07d6d87608 (svn r17511) -Codechange: Simplify ShowNewGRFInfo() by passing 'right' instead of 'width'.
frosch <frosch@openttd.org>
parents: 12879
diff changeset
80 y = DrawStringMultiLine(x, right, y, bottom, c->error->severity);
6103
e3a3a903fa28 (svn r8838) -Feature: Show newgrf error messages loaded in Action B in the newgrf gui
maedhros <maedhros@openttd.org>
parents: 5893
diff changeset
81 }
e3a3a903fa28 (svn r8838) -Feature: Show newgrf error messages loaded in Action B in the newgrf gui
maedhros <maedhros@openttd.org>
parents: 5893
diff changeset
82
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
83 /* Draw filename or not if it is not known (GRF sent over internet) */
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
84 if (c->filename != NULL) {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
85 SetDParamStr(0, c->filename);
13017
ab07d6d87608 (svn r17511) -Codechange: Simplify ShowNewGRFInfo() by passing 'right' instead of 'width'.
frosch <frosch@openttd.org>
parents: 12879
diff changeset
86 y = DrawStringMultiLine(x, right, y, bottom, STR_NEWGRF_SETTINGS_FILENAME);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
87 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
88
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
89 /* Prepare and draw GRF ID */
15201
071e920abcfb (svn r19830) -Codechange: Move variable declarations to their first use.
alberth <alberth@openttd.org>
parents: 15200
diff changeset
90 char buff[256];
14676
353df593bee0 (svn r19255) -Codechange: encapsulate GRFIdentifier in GRFConfig instead of subclassing it
yexo <yexo@openttd.org>
parents: 14645
diff changeset
91 snprintf(buff, lengthof(buff), "%08X", BSWAP32(c->ident.grfid));
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
92 SetDParamStr(0, buff);
13017
ab07d6d87608 (svn r17511) -Codechange: Simplify ShowNewGRFInfo() by passing 'right' instead of 'width'.
frosch <frosch@openttd.org>
parents: 12879
diff changeset
93 y = DrawStringMultiLine(x, right, y, bottom, STR_NEWGRF_SETTINGS_GRF_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
94
16286
3210d6542c3f (svn r20992) -Fix (r20958): Show either version and minimum compatible version or neither
planetmaker <planetmaker@openttd.org>
parents: 16259
diff changeset
95 if ((_settings_client.gui.newgrf_developer_tools || _settings_client.gui.newgrf_show_old_versions) && c->version != 0) {
15599
146255899304 (svn r20259) -Add: allow NewGRFs to specify their version and use that to hide old NewGRFs / to choose the newest when loading compatible NewGRFs
rubidium <rubidium@openttd.org>
parents: 15598
diff changeset
96 SetDParam(0, c->version);
146255899304 (svn r20259) -Add: allow NewGRFs to specify their version and use that to hide old NewGRFs / to choose the newest when loading compatible NewGRFs
rubidium <rubidium@openttd.org>
parents: 15598
diff changeset
97 y = DrawStringMultiLine(x, right, y, bottom, STR_NEWGRF_SETTINGS_VERSION);
146255899304 (svn r20259) -Add: allow NewGRFs to specify their version and use that to hide old NewGRFs / to choose the newest when loading compatible NewGRFs
rubidium <rubidium@openttd.org>
parents: 15598
diff changeset
98 }
16286
3210d6542c3f (svn r20992) -Fix (r20958): Show either version and minimum compatible version or neither
planetmaker <planetmaker@openttd.org>
parents: 16259
diff changeset
99 if ((_settings_client.gui.newgrf_developer_tools || _settings_client.gui.newgrf_show_old_versions) && c->min_loadable_version != 0) {
16259
8a820ca2e1f7 (svn r20960) -Add: Allow setting 'minimal compatible version' via Action14. (planetmaker)
frosch <frosch@openttd.org>
parents: 16256
diff changeset
100 SetDParam(0, c->min_loadable_version);
8a820ca2e1f7 (svn r20960) -Add: Allow setting 'minimal compatible version' via Action14. (planetmaker)
frosch <frosch@openttd.org>
parents: 16256
diff changeset
101 y = DrawStringMultiLine(x, right, y, bottom, STR_NEWGRF_SETTINGS_MIN_VERSION);
8a820ca2e1f7 (svn r20960) -Add: Allow setting 'minimal compatible version' via Action14. (planetmaker)
frosch <frosch@openttd.org>
parents: 16256
diff changeset
102 }
15599
146255899304 (svn r20259) -Add: allow NewGRFs to specify their version and use that to hide old NewGRFs / to choose the newest when loading compatible NewGRFs
rubidium <rubidium@openttd.org>
parents: 15598
diff changeset
103
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
104 /* Prepare and draw MD5 sum */
14676
353df593bee0 (svn r19255) -Codechange: encapsulate GRFIdentifier in GRFConfig instead of subclassing it
yexo <yexo@openttd.org>
parents: 14645
diff changeset
105 md5sumToString(buff, lastof(buff), c->ident.md5sum);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
106 SetDParamStr(0, buff);
13017
ab07d6d87608 (svn r17511) -Codechange: Simplify ShowNewGRFInfo() by passing 'right' instead of 'width'.
frosch <frosch@openttd.org>
parents: 12879
diff changeset
107 y = DrawStringMultiLine(x, right, y, bottom, STR_NEWGRF_SETTINGS_MD5SUM);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
108
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
109 /* Show GRF parameter list */
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
110 if (show_params) {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
111 if (c->num_params > 0) {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
112 GRFBuildParamList(buff, c, lastof(buff));
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: 9457
diff changeset
113 SetDParam(0, STR_JUST_RAW_STRING);
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: 9457
diff changeset
114 SetDParamStr(1, buff);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
115 } else {
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: 11524
diff changeset
116 SetDParam(0, STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
117 }
13017
ab07d6d87608 (svn r17511) -Codechange: Simplify ShowNewGRFInfo() by passing 'right' instead of 'width'.
frosch <frosch@openttd.org>
parents: 12879
diff changeset
118 y = DrawStringMultiLine(x, right, y, bottom, STR_NEWGRF_SETTINGS_PARAMETER);
10126
c5ceca8952d5 (svn r14310) -Fix: don't show palette information in the newgrf lists of the network lobby.
rubidium <rubidium@openttd.org>
parents: 10115
diff changeset
119
c5ceca8952d5 (svn r14310) -Fix: don't show palette information in the newgrf lists of the network lobby.
rubidium <rubidium@openttd.org>
parents: 10115
diff changeset
120 /* Draw the palette of the NewGRF */
18173
4a83f4b2e636 (svn r23002) -Add: Extend palette information in the NewGRF GUI with the 32 bpp state.
michi_cc <michi_cc@openttd.org>
parents: 18011
diff changeset
121 if (c->palette & GRFP_BLT_32BPP) {
4a83f4b2e636 (svn r23002) -Add: Extend palette information in the NewGRF GUI with the 32 bpp state.
michi_cc <michi_cc@openttd.org>
parents: 18011
diff changeset
122 SetDParamStr(0, (c->palette & GRFP_USE_WINDOWS) ? "Windows / 32 bpp" : "DOS / 32 bpp");
4a83f4b2e636 (svn r23002) -Add: Extend palette information in the NewGRF GUI with the 32 bpp state.
michi_cc <michi_cc@openttd.org>
parents: 18011
diff changeset
123 } else {
4a83f4b2e636 (svn r23002) -Add: Extend palette information in the NewGRF GUI with the 32 bpp state.
michi_cc <michi_cc@openttd.org>
parents: 18011
diff changeset
124 SetDParamStr(0, (c->palette & GRFP_USE_WINDOWS) ? "Windows" : "DOS");
4a83f4b2e636 (svn r23002) -Add: Extend palette information in the NewGRF GUI with the 32 bpp state.
michi_cc <michi_cc@openttd.org>
parents: 18011
diff changeset
125 }
13017
ab07d6d87608 (svn r17511) -Codechange: Simplify ShowNewGRFInfo() by passing 'right' instead of 'width'.
frosch <frosch@openttd.org>
parents: 12879
diff changeset
126 y = DrawStringMultiLine(x, right, y, bottom, STR_NEWGRF_SETTINGS_PALETTE);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
127 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
128
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
129 /* Show flags */
13017
ab07d6d87608 (svn r17511) -Codechange: Simplify ShowNewGRFInfo() by passing 'right' instead of 'width'.
frosch <frosch@openttd.org>
parents: 12879
diff changeset
130 if (c->status == GCS_NOT_FOUND) y = DrawStringMultiLine(x, right, y, bottom, STR_NEWGRF_SETTINGS_NOT_FOUND);
ab07d6d87608 (svn r17511) -Codechange: Simplify ShowNewGRFInfo() by passing 'right' instead of 'width'.
frosch <frosch@openttd.org>
parents: 12879
diff changeset
131 if (c->status == GCS_DISABLED) y = DrawStringMultiLine(x, right, y, bottom, STR_NEWGRF_SETTINGS_DISABLED);
17077
5a60038ce980 (svn r21814) -Fix/Add: Check GRF version from action 8, and disallow usage of GRFs with versions above 7.
frosch <frosch@openttd.org>
parents: 16614
diff changeset
132 if (HasBit(c->flags, GCF_INVALID)) y = DrawStringMultiLine(x, right, y, bottom, STR_NEWGRF_SETTINGS_INCOMPATIBLE);
13017
ab07d6d87608 (svn r17511) -Codechange: Simplify ShowNewGRFInfo() by passing 'right' instead of 'width'.
frosch <frosch@openttd.org>
parents: 12879
diff changeset
133 if (HasBit(c->flags, GCF_COMPATIBLE)) y = DrawStringMultiLine(x, right, y, bottom, STR_NEWGRF_COMPATIBLE_LOADED);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
134
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
135 /* Draw GRF info if it exists */
14711
74b0a8a64ff5 (svn r19295) -Codechange: introduce wrapper functions for GRFConfig::name/info
yexo <yexo@openttd.org>
parents: 14676
diff changeset
136 if (!StrEmpty(c->GetDescription())) {
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: 9457
diff changeset
137 SetDParam(0, STR_JUST_RAW_STRING);
14711
74b0a8a64ff5 (svn r19295) -Codechange: introduce wrapper functions for GRFConfig::name/info
yexo <yexo@openttd.org>
parents: 14676
diff changeset
138 SetDParamStr(1, c->GetDescription());
13017
ab07d6d87608 (svn r17511) -Codechange: Simplify ShowNewGRFInfo() by passing 'right' instead of 'width'.
frosch <frosch@openttd.org>
parents: 12879
diff changeset
139 y = DrawStringMultiLine(x, right, y, bottom, STR_BLACK_STRING);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
140 } else {
13017
ab07d6d87608 (svn r17511) -Codechange: Simplify ShowNewGRFInfo() by passing 'right' instead of 'width'.
frosch <frosch@openttd.org>
parents: 12879
diff changeset
141 y = DrawStringMultiLine(x, right, y, bottom, STR_NEWGRF_SETTINGS_NO_INFO);
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 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
143 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
144
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
145 /**
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
146 * Window for setting the parameters of a NewGRF.
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
147 */
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
148 struct NewGRFParametersWindow : public Window {
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
149 static GRFParameterInfo dummy_parameter_info; ///< Dummy info in case a newgrf didn't provide info about some parameter.
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
150 GRFConfig *grf_config; ///< Set the parameters of this GRFConfig.
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
151 uint clicked_button; ///< The row in which a button was clicked or UINT_MAX.
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
152 bool clicked_increase; ///< True if the increase button was clicked, false for the decrease button.
19415
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
153 bool clicked_dropdown; ///< Whether the dropdown is open.
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
154 bool closing_dropdown; ///< True, if the dropdown list is currently closing.
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
155 int timeout; ///< How long before we unpress the last-pressed button?
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
156 uint clicked_row; ///< The selected parameter
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
157 int line_height; ///< Height of a row in the matrix widget.
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
158 Scrollbar *vscroll;
16086
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
159 bool action14present; ///< True if action14 information is present.
18911
e48659f8d5c4 (svn r23760) -Feature: Allow readonly display of NewGRF parameters, if GRF list may not be edited.
frosch <frosch@openttd.org>
parents: 18908
diff changeset
160 bool editable; ///< Allow editing parameters.
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
161
20335
cadf6aaa0573 (svn r25287) -Codechange: Keep a reference to the WindowDesc in the Window after construction.
frosch <frosch@openttd.org>
parents: 20050
diff changeset
162 NewGRFParametersWindow(WindowDesc *desc, GRFConfig *c, bool editable) : Window(desc),
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
163 grf_config(c),
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
164 clicked_button(UINT_MAX),
19415
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
165 clicked_dropdown(false),
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
166 closing_dropdown(false),
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
167 timeout(0),
18911
e48659f8d5c4 (svn r23760) -Feature: Allow readonly display of NewGRF parameters, if GRF list may not be edited.
frosch <frosch@openttd.org>
parents: 18908
diff changeset
168 clicked_row(UINT_MAX),
e48659f8d5c4 (svn r23760) -Feature: Allow readonly display of NewGRF parameters, if GRF list may not be edited.
frosch <frosch@openttd.org>
parents: 18908
diff changeset
169 editable(editable)
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
170 {
16086
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
171 this->action14present = (c->num_valid_params != lengthof(c->param) || c->param_info.Length() != 0);
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
172
20335
cadf6aaa0573 (svn r25287) -Codechange: Keep a reference to the WindowDesc in the Window after construction.
frosch <frosch@openttd.org>
parents: 20050
diff changeset
173 this->CreateNestedTree();
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
174 this->vscroll = this->GetScrollbar(WID_NP_SCROLLBAR);
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
175 this->GetWidget<NWidgetStacked>(WID_NP_SHOW_NUMPAR)->SetDisplayedPlane(this->action14present ? SZSP_HORIZONTAL : 0);
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
176 this->GetWidget<NWidgetStacked>(WID_NP_SHOW_DESCRIPTION)->SetDisplayedPlane(this->action14present ? 0 : SZSP_HORIZONTAL);
20335
cadf6aaa0573 (svn r25287) -Codechange: Keep a reference to the WindowDesc in the Window after construction.
frosch <frosch@openttd.org>
parents: 20050
diff changeset
177 this->FinishInitNested(); // Initializes 'this->line_height' as side effect.
16086
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
178
18911
e48659f8d5c4 (svn r23760) -Feature: Allow readonly display of NewGRF parameters, if GRF list may not be edited.
frosch <frosch@openttd.org>
parents: 18908
diff changeset
179 this->SetWidgetDisabledState(WID_NP_RESET, !this->editable);
e48659f8d5c4 (svn r23760) -Feature: Allow readonly display of NewGRF parameters, if GRF list may not be edited.
frosch <frosch@openttd.org>
parents: 18908
diff changeset
180
16086
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
181 this->InvalidateData();
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
182 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
183
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
184 /**
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
185 * Get a dummy parameter-info object with default information.
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
186 * @param nr The param number that should be changed.
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
187 * @return GRFParameterInfo with dummy information about the given parameter.
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
188 */
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
189 static GRFParameterInfo *GetDummyParameterInfo(uint nr)
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
190 {
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
191 dummy_parameter_info.param_nr = nr;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
192 return &dummy_parameter_info;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
193 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
194
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
195 virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
196 {
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
197 switch (widget) {
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
198 case WID_NP_NUMPAR_DEC:
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
199 case WID_NP_NUMPAR_INC: {
16086
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
200 size->width = size->height = FONT_HEIGHT_NORMAL;
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
201 break;
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
202 }
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
203
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
204 case WID_NP_NUMPAR: {
19868
9c28125866da (svn r24801) -Codechange: Add functions to set integral DParams to suitable values for size computations.
frosch <frosch@openttd.org>
parents: 19843
diff changeset
205 SetDParamMaxValue(0, lengthof(this->grf_config->param));
16086
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
206 Dimension d = GetStringBoundingBox(this->GetWidget<NWidgetCore>(widget)->widget_data);
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
207 d.width += padding.width;
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
208 d.height += padding.height;
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
209 *size = maxdim(*size, d);
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
210 break;
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
211 }
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
212
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
213 case WID_NP_BACKGROUND:
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
214 this->line_height = FONT_HEIGHT_NORMAL + WD_MATRIX_TOP + WD_MATRIX_BOTTOM;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
215
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
216 resize->width = 1;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
217 resize->height = this->line_height;
20588
f97d0e2b7784 (svn r25532) -Fix: Do not make the minimal size of matrix or panel widgets depend on their number of rows, since that changes when resizing the window.
frosch <frosch@openttd.org>
parents: 20587
diff changeset
218 size->height = 5 * this->line_height;
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
219 break;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
220
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
221 case WID_NP_DESCRIPTION:
18941
51721ad3085a (svn r23791) -Fix [FS#4960]: resize text panel for parameter description if it doesn't fit in 4 lines.
yexo <yexo@openttd.org>
parents: 18911
diff changeset
222 /* Minimum size of 4 lines. The 500 is the default size of the window. */
51721ad3085a (svn r23791) -Fix [FS#4960]: resize text panel for parameter description if it doesn't fit in 4 lines.
yexo <yexo@openttd.org>
parents: 18911
diff changeset
223 Dimension suggestion = {500 - WD_FRAMERECT_LEFT - WD_FRAMERECT_RIGHT, FONT_HEIGHT_NORMAL * 4 + WD_TEXTPANEL_TOP + WD_TEXTPANEL_BOTTOM};
51721ad3085a (svn r23791) -Fix [FS#4960]: resize text panel for parameter description if it doesn't fit in 4 lines.
yexo <yexo@openttd.org>
parents: 18911
diff changeset
224 for (uint i = 0; i < this->grf_config->param_info.Length(); i++) {
51721ad3085a (svn r23791) -Fix [FS#4960]: resize text panel for parameter description if it doesn't fit in 4 lines.
yexo <yexo@openttd.org>
parents: 18911
diff changeset
225 const GRFParameterInfo *par_info = this->grf_config->param_info[i];
51721ad3085a (svn r23791) -Fix [FS#4960]: resize text panel for parameter description if it doesn't fit in 4 lines.
yexo <yexo@openttd.org>
parents: 18911
diff changeset
226 if (par_info == NULL) continue;
51721ad3085a (svn r23791) -Fix [FS#4960]: resize text panel for parameter description if it doesn't fit in 4 lines.
yexo <yexo@openttd.org>
parents: 18911
diff changeset
227 const char *desc = GetGRFStringFromGRFText(par_info->desc);
51721ad3085a (svn r23791) -Fix [FS#4960]: resize text panel for parameter description if it doesn't fit in 4 lines.
yexo <yexo@openttd.org>
parents: 18911
diff changeset
228 if (desc == NULL) continue;
18943
b506035edee7 (svn r23793) -Fix (r23791): height computation was missing a few pixels so the last line was still missing
yexo <yexo@openttd.org>
parents: 18941
diff changeset
229 Dimension d = GetStringMultiLineBoundingBox(desc, suggestion);
b506035edee7 (svn r23793) -Fix (r23791): height computation was missing a few pixels so the last line was still missing
yexo <yexo@openttd.org>
parents: 18941
diff changeset
230 d.height += WD_TEXTPANEL_TOP + WD_TEXTPANEL_BOTTOM;
18941
51721ad3085a (svn r23791) -Fix [FS#4960]: resize text panel for parameter description if it doesn't fit in 4 lines.
yexo <yexo@openttd.org>
parents: 18911
diff changeset
231 suggestion = maxdim(d, suggestion);
51721ad3085a (svn r23791) -Fix [FS#4960]: resize text panel for parameter description if it doesn't fit in 4 lines.
yexo <yexo@openttd.org>
parents: 18911
diff changeset
232 }
51721ad3085a (svn r23791) -Fix [FS#4960]: resize text panel for parameter description if it doesn't fit in 4 lines.
yexo <yexo@openttd.org>
parents: 18911
diff changeset
233 size->height = suggestion.height;
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
234 break;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
235 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
236 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
237
16086
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
238 virtual void SetStringParameters(int widget) const
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
239 {
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
240 switch (widget) {
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
241 case WID_NP_NUMPAR:
16086
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
242 SetDParam(0, this->vscroll->GetCount());
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
243 break;
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
244 }
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
245 }
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
246
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
247 virtual void DrawWidget(const Rect &r, int widget) const
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
248 {
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
249 if (widget == WID_NP_DESCRIPTION) {
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
250 const GRFParameterInfo *par_info = (this->clicked_row < this->grf_config->param_info.Length()) ? this->grf_config->param_info[this->clicked_row] : NULL;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
251 if (par_info == NULL) return;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
252 const char *desc = GetGRFStringFromGRFText(par_info->desc);
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
253 if (desc == NULL) return;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
254 DrawStringMultiLine(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, r.top + WD_TEXTPANEL_TOP, r.bottom - WD_TEXTPANEL_BOTTOM, desc, TC_BLACK);
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
255 return;
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
256 } else if (widget != WID_NP_BACKGROUND) {
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
257 return;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
258 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
259
16441
86fd9bcc9d2f (svn r21157) -Codechange: remove information about the text direction out of the language "list"
rubidium <rubidium@openttd.org>
parents: 16395
diff changeset
260 bool rtl = _current_text_dir == TD_RTL;
19407
e4f32df0a2b7 (svn r24310) -Codechange: Add named constants for the dimensions of settings buttons, and generally make their usage more consistent.
frosch <frosch@openttd.org>
parents: 19406
diff changeset
261 uint buttons_left = rtl ? r.right - SETTING_BUTTON_WIDTH - 3 : r.left + 4;
e4f32df0a2b7 (svn r24310) -Codechange: Add named constants for the dimensions of settings buttons, and generally make their usage more consistent.
frosch <frosch@openttd.org>
parents: 19406
diff changeset
262 uint text_left = r.left + (rtl ? WD_FRAMERECT_LEFT : SETTING_BUTTON_WIDTH + 8);
e4f32df0a2b7 (svn r24310) -Codechange: Add named constants for the dimensions of settings buttons, and generally make their usage more consistent.
frosch <frosch@openttd.org>
parents: 19406
diff changeset
263 uint text_right = r.right - (rtl ? SETTING_BUTTON_WIDTH + 8 : WD_FRAMERECT_RIGHT);
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
264
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
265 int y = r.top;
19409
9e09a99aba22 (svn r24312) -Change: Center the settings buttons in the AI and NewGRF config windows.
frosch <frosch@openttd.org>
parents: 19407
diff changeset
266 int button_y_offset = (this->line_height - SETTING_BUTTON_HEIGHT) / 2;
16086
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
267 for (uint i = this->vscroll->GetPosition(); this->vscroll->IsVisible(i) && i < this->vscroll->GetCount(); i++) {
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
268 GRFParameterInfo *par_info = (i < this->grf_config->param_info.Length()) ? this->grf_config->param_info[i] : NULL;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
269 if (par_info == NULL) par_info = GetDummyParameterInfo(i);
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
270 uint32 current_value = par_info->GetValue(this->grf_config);
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
271 bool selected = (i == this->clicked_row);
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
272
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
273 if (par_info->type == PTYPE_BOOL) {
19409
9e09a99aba22 (svn r24312) -Change: Center the settings buttons in the AI and NewGRF config windows.
frosch <frosch@openttd.org>
parents: 19407
diff changeset
274 DrawBoolButton(buttons_left, y + button_y_offset, current_value != 0, this->editable);
15804
cefe74c2f556 (svn r20479) -Change: Use 'Buttons Name: Value' layout for AI and NewGRF parameter GUI.
frosch <frosch@openttd.org>
parents: 15787
diff changeset
275 SetDParam(2, par_info->GetValue(this->grf_config) == 0 ? STR_CONFIG_SETTING_OFF : STR_CONFIG_SETTING_ON);
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
276 } else if (par_info->type == PTYPE_UINT_ENUM) {
19415
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
277 if (par_info->complete_labels) {
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
278 DrawDropDownButton(buttons_left, y + button_y_offset, COLOUR_YELLOW, this->clicked_row == i && this->clicked_dropdown, this->editable);
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
279 } else {
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
280 DrawArrowButtons(buttons_left, y + button_y_offset, COLOUR_YELLOW, (this->clicked_button == i) ? 1 + (this->clicked_increase != rtl) : 0, this->editable && current_value > par_info->min_value, this->editable && current_value < par_info->max_value);
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
281 }
15804
cefe74c2f556 (svn r20479) -Change: Use 'Buttons Name: Value' layout for AI and NewGRF parameter GUI.
frosch <frosch@openttd.org>
parents: 15787
diff changeset
282 SetDParam(2, STR_JUST_INT);
cefe74c2f556 (svn r20479) -Change: Use 'Buttons Name: Value' layout for AI and NewGRF parameter GUI.
frosch <frosch@openttd.org>
parents: 15787
diff changeset
283 SetDParam(3, current_value);
16250
dd6d2c758c96 (svn r20951) -Codechange: Add SmallMap::Contains() and use it.
frosch <frosch@openttd.org>
parents: 16116
diff changeset
284 if (par_info->value_names.Contains(current_value)) {
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
285 const char *label = GetGRFStringFromGRFText(par_info->value_names.Find(current_value)->second);
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
286 if (label != NULL) {
15804
cefe74c2f556 (svn r20479) -Change: Use 'Buttons Name: Value' layout for AI and NewGRF parameter GUI.
frosch <frosch@openttd.org>
parents: 15787
diff changeset
287 SetDParam(2, STR_JUST_RAW_STRING);
cefe74c2f556 (svn r20479) -Change: Use 'Buttons Name: Value' layout for AI and NewGRF parameter GUI.
frosch <frosch@openttd.org>
parents: 15787
diff changeset
288 SetDParamStr(3, label);
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
289 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
290 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
291 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
292
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
293 const char *name = GetGRFStringFromGRFText(par_info->name);
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
294 if (name != NULL) {
15804
cefe74c2f556 (svn r20479) -Change: Use 'Buttons Name: Value' layout for AI and NewGRF parameter GUI.
frosch <frosch@openttd.org>
parents: 15787
diff changeset
295 SetDParam(0, STR_JUST_RAW_STRING);
cefe74c2f556 (svn r20479) -Change: Use 'Buttons Name: Value' layout for AI and NewGRF parameter GUI.
frosch <frosch@openttd.org>
parents: 15787
diff changeset
296 SetDParamStr(1, name);
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
297 } else {
15804
cefe74c2f556 (svn r20479) -Change: Use 'Buttons Name: Value' layout for AI and NewGRF parameter GUI.
frosch <frosch@openttd.org>
parents: 15787
diff changeset
298 SetDParam(0, STR_NEWGRF_PARAMETERS_DEFAULT_NAME);
cefe74c2f556 (svn r20479) -Change: Use 'Buttons Name: Value' layout for AI and NewGRF parameter GUI.
frosch <frosch@openttd.org>
parents: 15787
diff changeset
299 SetDParam(1, i + 1);
15605
391d97ec4083 (svn r20268) -Add: append 'On'/'Off' after the name for boolean NewGRF settings
yexo <yexo@openttd.org>
parents: 15603
diff changeset
300 }
15804
cefe74c2f556 (svn r20479) -Change: Use 'Buttons Name: Value' layout for AI and NewGRF parameter GUI.
frosch <frosch@openttd.org>
parents: 15787
diff changeset
301
cefe74c2f556 (svn r20479) -Change: Use 'Buttons Name: Value' layout for AI and NewGRF parameter GUI.
frosch <frosch@openttd.org>
parents: 15787
diff changeset
302 DrawString(text_left, text_right, y + WD_MATRIX_TOP, STR_NEWGRF_PARAMETERS_SETTING, selected ? TC_WHITE : TC_LIGHT_BLUE);
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
303 y += this->line_height;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
304 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
305 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
306
19415
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
307 virtual void OnPaint()
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
308 {
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
309 if (this->closing_dropdown) {
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
310 this->closing_dropdown = false;
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
311 this->clicked_dropdown = false;
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
312 }
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
313 this->DrawWidgets();
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
314 }
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
315
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
316 virtual void OnClick(Point pt, int widget, int click_count)
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
317 {
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
318 switch (widget) {
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
319 case WID_NP_NUMPAR_DEC:
18911
e48659f8d5c4 (svn r23760) -Feature: Allow readonly display of NewGRF parameters, if GRF list may not be edited.
frosch <frosch@openttd.org>
parents: 18908
diff changeset
320 if (this->editable && !this->action14present && this->grf_config->num_params > 0) {
16086
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
321 this->grf_config->num_params--;
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
322 this->InvalidateData();
18753
8d2cdabac894 (svn r23601) -Fix: fix the conflict in window number
truebrain <truebrain@openttd.org>
parents: 18742
diff changeset
323 SetWindowDirty(WC_GAME_OPTIONS, WN_GAME_OPTIONS_NEWGRF_STATE);
16086
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
324 }
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
325 break;
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
326
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
327 case WID_NP_NUMPAR_INC: {
16086
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
328 GRFConfig *c = this->grf_config;
18911
e48659f8d5c4 (svn r23760) -Feature: Allow readonly display of NewGRF parameters, if GRF list may not be edited.
frosch <frosch@openttd.org>
parents: 18908
diff changeset
329 if (this->editable && !this->action14present && c->num_params < c->num_valid_params) {
16086
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
330 c->param[c->num_params++] = 0;
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
331 this->InvalidateData();
18753
8d2cdabac894 (svn r23601) -Fix: fix the conflict in window number
truebrain <truebrain@openttd.org>
parents: 18742
diff changeset
332 SetWindowDirty(WC_GAME_OPTIONS, WN_GAME_OPTIONS_NEWGRF_STATE);
16086
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
333 }
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
334 break;
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
335 }
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
336
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
337 case WID_NP_BACKGROUND: {
18911
e48659f8d5c4 (svn r23760) -Feature: Allow readonly display of NewGRF parameters, if GRF list may not be edited.
frosch <frosch@openttd.org>
parents: 18908
diff changeset
338 if (!this->editable) break;
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
339 uint num = this->vscroll->GetScrolledRowFromWidget(pt.y, this, WID_NP_BACKGROUND);
16086
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
340 if (num >= this->vscroll->GetCount()) break;
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
341 if (this->clicked_row != num) {
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
342 DeleteChildWindows(WC_QUERY_STRING);
19415
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
343 HideDropDownMenu(this);
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
344 this->clicked_row = num;
19415
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
345 this->clicked_dropdown = false;
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
346 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
347
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
348 const NWidgetBase *wid = this->GetWidget<NWidgetBase>(WID_NP_BACKGROUND);
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
349 int x = pt.x - wid->pos_x;
19410
b326bdfc63d3 (svn r24313) -Fix: Some obiwans wrt. clicking on setting buttons.
frosch <frosch@openttd.org>
parents: 19409
diff changeset
350 if (_current_text_dir == TD_RTL) x = wid->current_x - 1 - x;
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
351 x -= 4;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
352
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
353 GRFParameterInfo *par_info = (num < this->grf_config->param_info.Length()) ? this->grf_config->param_info[num] : NULL;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
354 if (par_info == NULL) par_info = GetDummyParameterInfo(num);
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
355
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
356 /* One of the arrows is clicked */
19411
89148abbf734 (svn r24314) -Fix: Editing NewGRF parameters using the query window showed wrong values, if there was no direct relation between parameter index and parameter register.
frosch <frosch@openttd.org>
parents: 19410
diff changeset
357 uint32 old_val = par_info->GetValue(this->grf_config);
19415
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
358 if (par_info->type != PTYPE_BOOL && IsInsideMM(x, 0, SETTING_BUTTON_WIDTH) && par_info->complete_labels) {
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
359 if (this->clicked_dropdown) {
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
360 /* unclick the dropdown */
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
361 HideDropDownMenu(this);
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
362 this->clicked_dropdown = false;
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
363 this->closing_dropdown = false;
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
364 } else {
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
365 const NWidgetBase *wid = this->GetWidget<NWidgetBase>(WID_NP_BACKGROUND);
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
366 int rel_y = (pt.y - (int)wid->pos_y) % this->line_height;
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
367
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
368 Rect wi_rect;
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
369 wi_rect.left = pt.x - (_current_text_dir == TD_RTL ? SETTING_BUTTON_WIDTH - 1 - x : x);;
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
370 wi_rect.right = wi_rect.left + SETTING_BUTTON_WIDTH - 1;
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
371 wi_rect.top = pt.y - rel_y + (this->line_height - SETTING_BUTTON_HEIGHT) / 2;
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
372 wi_rect.bottom = wi_rect.top + SETTING_BUTTON_HEIGHT - 1;
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
373
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
374 /* For dropdowns we also have to check the y position thoroughly, the mouse may not above the just opening dropdown */
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
375 if (pt.y >= wi_rect.top && pt.y <= wi_rect.bottom) {
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
376 this->clicked_dropdown = true;
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
377 this->closing_dropdown = false;
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
378
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
379 DropDownList *list = new DropDownList();
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
380 for (uint32 i = par_info->min_value; i <= par_info->max_value; i++) {
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
381 list->push_back(new DropDownListCharStringItem(GetGRFStringFromGRFText(par_info->value_names.Find(i)->second), i, false));
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
382 }
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
383
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
384 ShowDropDownListAt(this, list, old_val, -1, wi_rect, COLOUR_ORANGE, true);
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
385 }
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
386 }
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
387 } else if (IsInsideMM(x, 0, SETTING_BUTTON_WIDTH)) {
19411
89148abbf734 (svn r24314) -Fix: Editing NewGRF parameters using the query window showed wrong values, if there was no direct relation between parameter index and parameter register.
frosch <frosch@openttd.org>
parents: 19410
diff changeset
388 uint32 val = old_val;
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
389 if (par_info->type == PTYPE_BOOL) {
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
390 val = !val;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
391 } else {
19407
e4f32df0a2b7 (svn r24310) -Codechange: Add named constants for the dimensions of settings buttons, and generally make their usage more consistent.
frosch <frosch@openttd.org>
parents: 19406
diff changeset
392 if (x >= SETTING_BUTTON_WIDTH / 2) {
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
393 /* Increase button clicked */
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
394 if (val < par_info->max_value) val++;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
395 this->clicked_increase = true;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
396 } else {
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
397 /* Decrease button clicked */
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
398 if (val > par_info->min_value) val--;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
399 this->clicked_increase = false;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
400 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
401 }
17719
8e82fec94067 (svn r22499) -Fix: don't lower the arrow buttons in the newgrf/AI parameter windows if they're clicked when disabled
yexo <yexo@openttd.org>
parents: 17670
diff changeset
402 if (val != old_val) {
8e82fec94067 (svn r22499) -Fix: don't lower the arrow buttons in the newgrf/AI parameter windows if they're clicked when disabled
yexo <yexo@openttd.org>
parents: 17670
diff changeset
403 par_info->SetValue(this->grf_config, val);
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
404
17719
8e82fec94067 (svn r22499) -Fix: don't lower the arrow buttons in the newgrf/AI parameter windows if they're clicked when disabled
yexo <yexo@openttd.org>
parents: 17670
diff changeset
405 this->clicked_button = num;
8e82fec94067 (svn r22499) -Fix: don't lower the arrow buttons in the newgrf/AI parameter windows if they're clicked when disabled
yexo <yexo@openttd.org>
parents: 17670
diff changeset
406 this->timeout = 5;
8e82fec94067 (svn r22499) -Fix: don't lower the arrow buttons in the newgrf/AI parameter windows if they're clicked when disabled
yexo <yexo@openttd.org>
parents: 17670
diff changeset
407 }
19415
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
408 } else if (par_info->type == PTYPE_UINT_ENUM && !par_info->complete_labels && click_count >= 2) {
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
409 /* Display a query box so users can enter a custom value. */
19411
89148abbf734 (svn r24314) -Fix: Editing NewGRF parameters using the query window showed wrong values, if there was no direct relation between parameter index and parameter register.
frosch <frosch@openttd.org>
parents: 19410
diff changeset
410 SetDParam(0, old_val);
17579
105b4e4eb168 (svn r22343) -Change: Remove pixel limiter for query strings.
terkhen <terkhen@openttd.org>
parents: 17486
diff changeset
411 ShowQueryString(STR_JUST_INT, STR_CONFIG_SETTING_QUERY_CAPTION, 10, this, CS_NUMERAL, QSF_NONE);
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
412 }
17769
fc23ab1c0733 (svn r22553) -Fix (r22499): NewGRF parameter window was not set dirty, when changing row selection.
frosch <frosch@openttd.org>
parents: 17719
diff changeset
413 this->SetDirty();
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
414 break;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
415 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
416
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
417 case WID_NP_RESET:
18911
e48659f8d5c4 (svn r23760) -Feature: Allow readonly display of NewGRF parameters, if GRF list may not be edited.
frosch <frosch@openttd.org>
parents: 18908
diff changeset
418 if (!this->editable) break;
15920
74e5e0907a80 (svn r20604) -Feature: add a reset button to the newgrf parameters window
yexo <yexo@openttd.org>
parents: 15917
diff changeset
419 this->grf_config->SetParameterDefaults();
16086
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
420 this->InvalidateData();
18753
8d2cdabac894 (svn r23601) -Fix: fix the conflict in window number
truebrain <truebrain@openttd.org>
parents: 18742
diff changeset
421 SetWindowDirty(WC_GAME_OPTIONS, WN_GAME_OPTIONS_NEWGRF_STATE);
15920
74e5e0907a80 (svn r20604) -Feature: add a reset button to the newgrf parameters window
yexo <yexo@openttd.org>
parents: 15917
diff changeset
422 break;
74e5e0907a80 (svn r20604) -Feature: add a reset button to the newgrf parameters window
yexo <yexo@openttd.org>
parents: 15917
diff changeset
423
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
424 case WID_NP_ACCEPT:
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
425 delete this;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
426 break;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
427 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
428 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
429
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
430 virtual void OnQueryTextFinished(char *str)
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
431 {
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
432 if (StrEmpty(str)) return;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
433 int32 value = atoi(str);
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
434 GRFParameterInfo *par_info = ((uint)this->clicked_row < this->grf_config->param_info.Length()) ? this->grf_config->param_info[this->clicked_row] : NULL;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
435 if (par_info == NULL) par_info = GetDummyParameterInfo(this->clicked_row);
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
436 uint32 val = Clamp<uint32>(value, par_info->min_value, par_info->max_value);
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
437 par_info->SetValue(this->grf_config, val);
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
438 this->SetDirty();
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
439 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
440
19415
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
441 virtual void OnDropdownSelect(int widget, int index)
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
442 {
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
443 assert(this->clicked_dropdown);
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
444 GRFParameterInfo *par_info = ((uint)this->clicked_row < this->grf_config->param_info.Length()) ? this->grf_config->param_info[this->clicked_row] : NULL;
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
445 if (par_info == NULL) par_info = GetDummyParameterInfo(this->clicked_row);
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
446 par_info->SetValue(this->grf_config, index);
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
447 this->SetDirty();
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
448 }
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
449
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
450 virtual void OnDropdownClose(Point pt, int widget, int index, bool instant_close)
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
451 {
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
452 /* We cannot raise the dropdown button just yet. OnClick needs some hint, whether
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
453 * the same dropdown button was clicked again, and then not open the dropdown again.
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
454 * So, we only remember that it was closed, and process it on the next OnPaint, which is
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
455 * after OnClick. */
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
456 assert(this->clicked_dropdown);
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
457 this->closing_dropdown = true;
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
458 this->SetDirty();
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
459 }
899f24660723 (svn r24318) -Feature: Add dropdowns to NewGRF configurations, if all values have labels.
frosch <frosch@openttd.org>
parents: 19411
diff changeset
460
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
461 virtual void OnResize()
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
462 {
20589
32521c1e0f03 (svn r25533) -Codechange: Use SetCapacityFromWidget more often.
frosch <frosch@openttd.org>
parents: 20588
diff changeset
463 this->vscroll->SetCapacityFromWidget(this, WID_NP_BACKGROUND);
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
464 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
465
17486
e7672bafbe1c (svn r22241) -Codechange: Add additional to-be-used parameter to OnInvalidateData().
frosch <frosch@openttd.org>
parents: 17077
diff changeset
466 /**
e7672bafbe1c (svn r22241) -Codechange: Add additional to-be-used parameter to OnInvalidateData().
frosch <frosch@openttd.org>
parents: 17077
diff changeset
467 * Some data on this window has become invalid.
e7672bafbe1c (svn r22241) -Codechange: Add additional to-be-used parameter to OnInvalidateData().
frosch <frosch@openttd.org>
parents: 17077
diff changeset
468 * @param data Information about the changed data.
e7672bafbe1c (svn r22241) -Codechange: Add additional to-be-used parameter to OnInvalidateData().
frosch <frosch@openttd.org>
parents: 17077
diff changeset
469 * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
e7672bafbe1c (svn r22241) -Codechange: Add additional to-be-used parameter to OnInvalidateData().
frosch <frosch@openttd.org>
parents: 17077
diff changeset
470 */
e7672bafbe1c (svn r22241) -Codechange: Add additional to-be-used parameter to OnInvalidateData().
frosch <frosch@openttd.org>
parents: 17077
diff changeset
471 virtual void OnInvalidateData(int data = 0, bool gui_scope = true)
16086
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
472 {
17486
e7672bafbe1c (svn r22241) -Codechange: Add additional to-be-used parameter to OnInvalidateData().
frosch <frosch@openttd.org>
parents: 17077
diff changeset
473 if (!gui_scope) return;
16086
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
474 if (!this->action14present) {
18911
e48659f8d5c4 (svn r23760) -Feature: Allow readonly display of NewGRF parameters, if GRF list may not be edited.
frosch <frosch@openttd.org>
parents: 18908
diff changeset
475 this->SetWidgetDisabledState(WID_NP_NUMPAR_DEC, !this->editable || this->grf_config->num_params == 0);
e48659f8d5c4 (svn r23760) -Feature: Allow readonly display of NewGRF parameters, if GRF list may not be edited.
frosch <frosch@openttd.org>
parents: 18908
diff changeset
476 this->SetWidgetDisabledState(WID_NP_NUMPAR_INC, !this->editable || this->grf_config->num_params >= this->grf_config->num_valid_params);
16086
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
477 }
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
478
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
479 this->vscroll->SetCount(this->action14present ? this->grf_config->num_valid_params : this->grf_config->num_params);
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
480 if (this->clicked_row != UINT_MAX && this->clicked_row >= this->vscroll->GetCount()) {
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
481 this->clicked_row = UINT_MAX;
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
482 DeleteChildWindows(WC_QUERY_STRING);
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
483 }
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
484 }
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
485
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
486 virtual void OnTick()
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
487 {
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
488 if (--this->timeout == 0) {
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
489 this->clicked_button = UINT_MAX;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
490 this->SetDirty();
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
491 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
492 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
493 };
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
494 GRFParameterInfo NewGRFParametersWindow::dummy_parameter_info(0);
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
495
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
496
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
497 static const NWidgetPart _nested_newgrf_parameter_widgets[] = {
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
498 NWidget(NWID_HORIZONTAL),
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
499 NWidget(WWT_CLOSEBOX, COLOUR_MAUVE),
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
500 NWidget(WWT_CAPTION, COLOUR_MAUVE), SetDataTip(STR_NEWGRF_PARAMETERS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
20342
63dba929ba42 (svn r25294) -Feature: Add another button to window title bars to resize the window to its default size.
frosch <frosch@openttd.org>
parents: 20338
diff changeset
501 NWidget(WWT_DEFSIZEBOX, COLOUR_MAUVE),
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
502 EndContainer(),
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
503 NWidget(NWID_SELECTION, INVALID_COLOUR, WID_NP_SHOW_NUMPAR),
16086
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
504 NWidget(WWT_PANEL, COLOUR_MAUVE), SetResize(1, 0), SetFill(1, 0), SetPIP(4, 0, 4),
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
505 NWidget(NWID_HORIZONTAL), SetPIP(4, 0, 4),
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
506 NWidget(WWT_PUSHARROWBTN, COLOUR_YELLOW, WID_NP_NUMPAR_DEC), SetMinimalSize(12, 12), SetDataTip(AWV_DECREASE, STR_NULL),
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
507 NWidget(WWT_PUSHARROWBTN, COLOUR_YELLOW, WID_NP_NUMPAR_INC), SetMinimalSize(12, 12), SetDataTip(AWV_INCREASE, STR_NULL),
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
508 NWidget(WWT_TEXT, COLOUR_MAUVE, WID_NP_NUMPAR), SetResize(1, 0), SetFill(1, 0), SetPadding(0, 0, 0, 4), SetDataTip(STR_NEWGRF_PARAMETERS_NUM_PARAM, STR_NULL),
16086
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
509 EndContainer(),
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
510 EndContainer(),
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
511 EndContainer(),
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
512 NWidget(NWID_HORIZONTAL),
20593
862c25eab589 (svn r25537) -Codechange: Optionally make WWT_MATRIX compute the number of rows and columns from the resize step size.
frosch <frosch@openttd.org>
parents: 20592
diff changeset
513 NWidget(WWT_MATRIX, COLOUR_MAUVE, WID_NP_BACKGROUND), SetMinimalSize(188, 182), SetResize(1, 1), SetFill(1, 0), SetMatrixDataTip(1, 0, STR_NULL), SetScrollbar(WID_NP_SCROLLBAR),
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
514 NWidget(NWID_VSCROLLBAR, COLOUR_MAUVE, WID_NP_SCROLLBAR),
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
515 EndContainer(),
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
516 NWidget(NWID_SELECTION, INVALID_COLOUR, WID_NP_SHOW_DESCRIPTION),
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
517 NWidget(WWT_PANEL, COLOUR_MAUVE, WID_NP_DESCRIPTION), SetResize(1, 0), SetFill(1, 0),
16086
8963162a35da (svn r20779) -Add [FS#4025]: If GRFs do not have action14 parameter information, allow to set the number of parameters in the GUI explicitly.
frosch <frosch@openttd.org>
parents: 16006
diff changeset
518 EndContainer(),
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
519 EndContainer(),
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
520 NWidget(NWID_HORIZONTAL),
15920
74e5e0907a80 (svn r20604) -Feature: add a reset button to the newgrf parameters window
yexo <yexo@openttd.org>
parents: 15917
diff changeset
521 NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
522 NWidget(WWT_PUSHTXTBTN, COLOUR_MAUVE, WID_NP_ACCEPT), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_NEWGRF_PARAMETERS_CLOSE, STR_NULL),
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
523 NWidget(WWT_PUSHTXTBTN, COLOUR_MAUVE, WID_NP_RESET), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_NEWGRF_PARAMETERS_RESET, STR_NEWGRF_PARAMETERS_RESET_TOOLTIP),
15920
74e5e0907a80 (svn r20604) -Feature: add a reset button to the newgrf parameters window
yexo <yexo@openttd.org>
parents: 15917
diff changeset
524 EndContainer(),
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
525 NWidget(WWT_RESIZEBOX, COLOUR_MAUVE),
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
526 EndContainer(),
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
527 };
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
528
18342
d52fe213742a (svn r23178) -Feature [FS#4780]: in-game readme.txt readmer (LordAro)
rubidium <rubidium@openttd.org>
parents: 18192
diff changeset
529 /** Window definition for the change grf parameters window */
20335
cadf6aaa0573 (svn r25287) -Codechange: Keep a reference to the WindowDesc in the Window after construction.
frosch <frosch@openttd.org>
parents: 20050
diff changeset
530 static WindowDesc _newgrf_parameters_desc(
20338
491ddf49f744 (svn r25290) -Add: Assign string names to notable windows.
frosch <frosch@openttd.org>
parents: 20335
diff changeset
531 WDP_CENTER, "settings_newgrf_config", 500, 208,
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
532 WC_GRF_PARAMETERS, WC_NONE,
19767
2a11204038e3 (svn r24700) -Cleanup: Remove WDF_UNCLICK_BUTTONS and make it the default.
frosch <frosch@openttd.org>
parents: 19560
diff changeset
533 0,
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
534 _nested_newgrf_parameter_widgets, lengthof(_nested_newgrf_parameter_widgets)
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
535 );
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
536
18911
e48659f8d5c4 (svn r23760) -Feature: Allow readonly display of NewGRF parameters, if GRF list may not be edited.
frosch <frosch@openttd.org>
parents: 18908
diff changeset
537 static void OpenGRFParameterWindow(GRFConfig *c, bool editable)
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
538 {
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
539 DeleteWindowByClass(WC_GRF_PARAMETERS);
18911
e48659f8d5c4 (svn r23760) -Feature: Allow readonly display of NewGRF parameters, if GRF list may not be edited.
frosch <frosch@openttd.org>
parents: 18908
diff changeset
540 new NewGRFParametersWindow(&_newgrf_parameters_desc, c, editable);
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
541 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
542
18412
ed6973313b87 (svn r23248) -Codechange: Rename everything related to the NewGRF 'readme' to 'textfile', so it is more generic.
frosch <frosch@openttd.org>
parents: 18386
diff changeset
543 /** Window for displaying the textfile of a NewGRF. */
19078
8cb1275f2bb3 (svn r23932) -Codechange: split the NewGRF text window into its own source files
rubidium <rubidium@openttd.org>
parents: 18957
diff changeset
544 struct NewGRFTextfileWindow : public TextfileWindow {
8cb1275f2bb3 (svn r23932) -Codechange: split the NewGRF text window into its own source files
rubidium <rubidium@openttd.org>
parents: 18957
diff changeset
545 const GRFConfig *grf_config; ///< View the textfile of this GRFConfig.
18342
d52fe213742a (svn r23178) -Feature [FS#4780]: in-game readme.txt readmer (LordAro)
rubidium <rubidium@openttd.org>
parents: 18192
diff changeset
546
19078
8cb1275f2bb3 (svn r23932) -Codechange: split the NewGRF text window into its own source files
rubidium <rubidium@openttd.org>
parents: 18957
diff changeset
547 NewGRFTextfileWindow(TextfileType file_type, const GRFConfig *c) : TextfileWindow(file_type), grf_config(c)
18342
d52fe213742a (svn r23178) -Feature [FS#4780]: in-game readme.txt readmer (LordAro)
rubidium <rubidium@openttd.org>
parents: 18192
diff changeset
548 {
19078
8cb1275f2bb3 (svn r23932) -Codechange: split the NewGRF text window into its own source files
rubidium <rubidium@openttd.org>
parents: 18957
diff changeset
549 const char *textfile = this->grf_config->GetTextfile(file_type);
8cb1275f2bb3 (svn r23932) -Codechange: split the NewGRF text window into its own source files
rubidium <rubidium@openttd.org>
parents: 18957
diff changeset
550 this->LoadTextfile(textfile, NEWGRF_DIR);
18342
d52fe213742a (svn r23178) -Feature [FS#4780]: in-game readme.txt readmer (LordAro)
rubidium <rubidium@openttd.org>
parents: 18192
diff changeset
551 }
d52fe213742a (svn r23178) -Feature [FS#4780]: in-game readme.txt readmer (LordAro)
rubidium <rubidium@openttd.org>
parents: 18192
diff changeset
552
19078
8cb1275f2bb3 (svn r23932) -Codechange: split the NewGRF text window into its own source files
rubidium <rubidium@openttd.org>
parents: 18957
diff changeset
553 /* virtual */ void SetStringParameters(int widget) const
18342
d52fe213742a (svn r23178) -Feature [FS#4780]: in-game readme.txt readmer (LordAro)
rubidium <rubidium@openttd.org>
parents: 18192
diff changeset
554 {
19079
0af594336a81 (svn r23933) -Codechange: make the text file window strings more generic (LordAro)
rubidium <rubidium@openttd.org>
parents: 19078
diff changeset
555 if (widget == WID_TF_CAPTION) {
0af594336a81 (svn r23933) -Codechange: make the text file window strings more generic (LordAro)
rubidium <rubidium@openttd.org>
parents: 19078
diff changeset
556 SetDParam(0, STR_CONTENT_TYPE_NEWGRF);
0af594336a81 (svn r23933) -Codechange: make the text file window strings more generic (LordAro)
rubidium <rubidium@openttd.org>
parents: 19078
diff changeset
557 SetDParamStr(1, this->grf_config->GetName());
0af594336a81 (svn r23933) -Codechange: make the text file window strings more generic (LordAro)
rubidium <rubidium@openttd.org>
parents: 19078
diff changeset
558 }
18342
d52fe213742a (svn r23178) -Feature [FS#4780]: in-game readme.txt readmer (LordAro)
rubidium <rubidium@openttd.org>
parents: 18192
diff changeset
559 }
d52fe213742a (svn r23178) -Feature [FS#4780]: in-game readme.txt readmer (LordAro)
rubidium <rubidium@openttd.org>
parents: 18192
diff changeset
560 };
d52fe213742a (svn r23178) -Feature [FS#4780]: in-game readme.txt readmer (LordAro)
rubidium <rubidium@openttd.org>
parents: 18192
diff changeset
561
19078
8cb1275f2bb3 (svn r23932) -Codechange: split the NewGRF text window into its own source files
rubidium <rubidium@openttd.org>
parents: 18957
diff changeset
562 void ShowNewGRFTextfileWindow(TextfileType file_type, const GRFConfig *c)
18342
d52fe213742a (svn r23178) -Feature [FS#4780]: in-game readme.txt readmer (LordAro)
rubidium <rubidium@openttd.org>
parents: 18192
diff changeset
563 {
19078
8cb1275f2bb3 (svn r23932) -Codechange: split the NewGRF text window into its own source files
rubidium <rubidium@openttd.org>
parents: 18957
diff changeset
564 DeleteWindowByClass(WC_TEXTFILE);
8cb1275f2bb3 (svn r23932) -Codechange: split the NewGRF text window into its own source files
rubidium <rubidium@openttd.org>
parents: 18957
diff changeset
565 new NewGRFTextfileWindow(file_type, c);
18342
d52fe213742a (svn r23178) -Feature [FS#4780]: in-game readme.txt readmer (LordAro)
rubidium <rubidium@openttd.org>
parents: 18192
diff changeset
566 }
d52fe213742a (svn r23178) -Feature [FS#4780]: in-game readme.txt readmer (LordAro)
rubidium <rubidium@openttd.org>
parents: 18192
diff changeset
567
9677
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
568 static GRFPresetList _grf_preset_list;
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
569
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
570 class DropDownListPresetItem : public DropDownListItem {
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
571 public:
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
572 DropDownListPresetItem(int result) : DropDownListItem(result, false) {}
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
573
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
574 virtual ~DropDownListPresetItem() {}
9864
199cb67d074d (svn r14009) -Cleanup (r14008): Bad whitespace...
peter1138 <peter1138@openttd.org>
parents: 9863
diff changeset
575
9863
3db7ce31355e (svn r14008) -Fix (r14004): NewGRF preset drop down list not working
peter1138 <peter1138@openttd.org>
parents: 9760
diff changeset
576 bool Selectable() const
9677
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
577 {
9863
3db7ce31355e (svn r14008) -Fix (r14004): NewGRF preset drop down list not working
peter1138 <peter1138@openttd.org>
parents: 9760
diff changeset
578 return true;
9677
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
579 }
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
580
11425
532a1c74074d (svn r15783) -Codechange: make the dropdown draw code pass around the left/right instead of the x and width to make drawing text at offsets easier.
rubidium <rubidium@openttd.org>
parents: 11373
diff changeset
581 void Draw(int left, int right, int top, int bottom, bool sel, int bg_colour) const
9677
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
582 {
11425
532a1c74074d (svn r15783) -Codechange: make the dropdown draw code pass around the left/right instead of the x and width to make drawing text at offsets easier.
rubidium <rubidium@openttd.org>
parents: 11373
diff changeset
583 DrawString(left + 2, right + 2, top, _grf_preset_list[this->result], sel ? TC_WHITE : TC_BLACK);
9677
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
584 }
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
585 };
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
586
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
587 static void NewGRFConfirmationCallback(Window *w, bool confirmed);
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
588
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
589 /**
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
590 * Window for showing NewGRF files
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
591 */
19809
4df2993a99a6 (svn r24742) -Codechange: Remove QueryStringBaseWindow and store QueryStrings per widget instead.
frosch <frosch@openttd.org>
parents: 19807
diff changeset
592 struct NewGRFWindow : public Window, NewGRFScanCallback {
19434
24df8a97401e (svn r24337) -Feature: Allow filtering for multiple words (separated by whitespace resp. quoted) in the sign list, content- and NewGRF-guis.
frosch <frosch@openttd.org>
parents: 19421
diff changeset
593 typedef GUIList<const GRFConfig *, StringFilter &> GUIGRFConfigList;
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
594
15209
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
595 static const uint EDITBOX_MAX_SIZE = 50;
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
596
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
597 static Listing last_sorting; ///< Default sorting of #GUIGRFConfigList.
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
598 static Filtering last_filtering; ///< Default filtering of #GUIGRFConfigList.
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
599 static GUIGRFConfigList::SortFunction * const sorter_funcs[]; ///< Sort functions of the #GUIGRFConfigList.
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
600 static GUIGRFConfigList::FilterFunction * const filter_funcs[]; ///< Filter functions of the #GUIGRFConfigList.
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
601
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
602 GUIGRFConfigList avails; ///< Available (non-active) grfs.
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
603 const GRFConfig *avail_sel; ///< Currently selected available grf. \c NULL is none is selected.
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
604 int avail_pos; ///< Index of #avail_sel if existing, else \c -1.
19434
24df8a97401e (svn r24337) -Feature: Allow filtering for multiple words (separated by whitespace resp. quoted) in the sign list, content- and NewGRF-guis.
frosch <frosch@openttd.org>
parents: 19421
diff changeset
605 StringFilter string_filter; ///< Filter for available grf.
19809
4df2993a99a6 (svn r24742) -Codechange: Remove QueryStringBaseWindow and store QueryStrings per widget instead.
frosch <frosch@openttd.org>
parents: 19807
diff changeset
606 QueryString filter_editbox; ///< Filter editbox;
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
607
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
608 GRFConfig *actives; ///< Temporary active grf list to which changes are made.
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
609 GRFConfig *active_sel; ///< Selected active grf item.
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
610
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
611 GRFConfig **orig_list; ///< List active grfs in the game. Used as initial value, may be updated by the window.
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
612 bool editable; ///< Is the window editable?
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
613 bool show_params; ///< Are the grf-parameters shown in the info-panel?
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
614 bool execute; ///< On pressing 'apply changes' are grf changes applied immediately, or only list is updated.
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
615 int preset; ///< Selected preset.
19237
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
616 int active_over; ///< Active GRF item over which another one is dragged, \c -1 if none.
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
617
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
618 Scrollbar *vscroll;
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
619 Scrollbar *vscroll2;
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
620
20335
cadf6aaa0573 (svn r25287) -Codechange: Keep a reference to the WindowDesc in the Window after construction.
frosch <frosch@openttd.org>
parents: 20050
diff changeset
621 NewGRFWindow(WindowDesc *desc, bool editable, bool show_params, bool execute, GRFConfig **orig_list) : Window(desc), filter_editbox(EDITBOX_MAX_SIZE)
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
622 {
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
623 this->avail_sel = NULL;
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
624 this->avail_pos = -1;
15203
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
625 this->active_sel = NULL;
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
626 this->actives = NULL;
15202
e9db5d2f634e (svn r19831) -Codechange: Rename formal parameters of the constructor to match data member variable names.
alberth <alberth@openttd.org>
parents: 15201
diff changeset
627 this->orig_list = orig_list;
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
628 this->editable = editable;
15202
e9db5d2f634e (svn r19831) -Codechange: Rename formal parameters of the constructor to match data member variable names.
alberth <alberth@openttd.org>
parents: 15201
diff changeset
629 this->execute = execute;
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
630 this->show_params = show_params;
9677
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
631 this->preset = -1;
19237
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
632 this->active_over = -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
633
15203
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
634 CopyGRFConfigList(&this->actives, *orig_list, false);
9677
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
635 GetGRFPresetList(&_grf_preset_list);
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
636
20335
cadf6aaa0573 (svn r25287) -Codechange: Keep a reference to the WindowDesc in the Window after construction.
frosch <frosch@openttd.org>
parents: 20050
diff changeset
637 this->CreateNestedTree();
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
638 this->vscroll = this->GetScrollbar(WID_NS_SCROLLBAR);
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
639 this->vscroll2 = this->GetScrollbar(WID_NS_SCROLL2BAR);
16394
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
640
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
641 this->GetWidget<NWidgetStacked>(WID_NS_SHOW_REMOVE)->SetDisplayedPlane(this->editable ? 0 : 1);
18911
e48659f8d5c4 (svn r23760) -Feature: Allow readonly display of NewGRF parameters, if GRF list may not be edited.
frosch <frosch@openttd.org>
parents: 18908
diff changeset
642 this->GetWidget<NWidgetStacked>(WID_NS_SHOW_APPLY)->SetDisplayedPlane(this->editable ? 0 : this->show_params ? 1 : SZSP_HORIZONTAL);
20335
cadf6aaa0573 (svn r25287) -Codechange: Keep a reference to the WindowDesc in the Window after construction.
frosch <frosch@openttd.org>
parents: 20050
diff changeset
643 this->FinishInitNested(WN_GAME_OPTIONS_NEWGRF_STATE);
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
644
19809
4df2993a99a6 (svn r24742) -Codechange: Remove QueryStringBaseWindow and store QueryStrings per widget instead.
frosch <frosch@openttd.org>
parents: 19807
diff changeset
645 this->querystrings[WID_NS_FILTER] = &this->filter_editbox;
19810
c6b37b66f220 (svn r24743) -Change: Unify the behaviour of ESC in filter editboxes.
frosch <frosch@openttd.org>
parents: 19809
diff changeset
646 this->filter_editbox.cancel_button = QueryString::ACTION_CLEAR;
20455
41b160e93ab2 (svn r25413) -Fix-ish: Suppress focussing editboxes which are not visible.
frosch <frosch@openttd.org>
parents: 20355
diff changeset
647 if (editable) {
41b160e93ab2 (svn r25413) -Fix-ish: Suppress focussing editboxes which are not visible.
frosch <frosch@openttd.org>
parents: 20355
diff changeset
648 this->SetFocusedWidget(WID_NS_FILTER);
41b160e93ab2 (svn r25413) -Fix-ish: Suppress focussing editboxes which are not visible.
frosch <frosch@openttd.org>
parents: 20355
diff changeset
649 } else {
41b160e93ab2 (svn r25413) -Fix-ish: Suppress focussing editboxes which are not visible.
frosch <frosch@openttd.org>
parents: 20355
diff changeset
650 this->DisableWidget(WID_NS_FILTER);
41b160e93ab2 (svn r25413) -Fix-ish: Suppress focussing editboxes which are not visible.
frosch <frosch@openttd.org>
parents: 20355
diff changeset
651 }
15209
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
652
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
653 this->avails.SetListing(this->last_sorting);
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
654 this->avails.SetFiltering(this->last_filtering);
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
655 this->avails.SetSortFuncs(this->sorter_funcs);
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
656 this->avails.SetFilterFuncs(this->filter_funcs);
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
657 this->avails.ForceRebuild();
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
658
17826
03d75c842b87 (svn r22617) -Codechange: Add GameOptionsInvalidationData enum for data values for Window::OnInvalidateData() of windows with class WC_GAME_OPTIONS.
frosch <frosch@openttd.org>
parents: 17809
diff changeset
659 this->OnInvalidateData(GOID_NEWGRF_LIST_EDITED);
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
660 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
661
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
662 ~NewGRFWindow()
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
663 {
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
664 DeleteWindowByClass(WC_GRF_PARAMETERS);
19078
8cb1275f2bb3 (svn r23932) -Codechange: split the NewGRF text window into its own source files
rubidium <rubidium@openttd.org>
parents: 18957
diff changeset
665 DeleteWindowByClass(WC_TEXTFILE);
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
666
10910
9276e5a96995 (svn r15245) -Fix: don't "save" the NewGRF settings on closing the NewGRF window when the content of the window isn't editable
rubidium <rubidium@openttd.org>
parents: 10890
diff changeset
667 if (this->editable && !this->execute) {
15203
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
668 CopyGRFConfigList(this->orig_list, this->actives, true);
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
669 ResetGRFConfig(false);
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
670 ReloadNewGRFData();
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
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
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
673 /* Remove the temporary copy of grf-list used in window */
15203
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
674 ClearGRFConfigList(&this->actives);
9677
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
675 _grf_preset_list.Clear();
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
676 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
677
13705
8dee47e001b2 (svn r18230) -Codechange: Allow fill stepsize to be set from Window::UpdateWidgetSize().
alberth <alberth@openttd.org>
parents: 13704
diff changeset
678 virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
13171
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
679 {
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
680 switch (widget) {
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
681 case WID_NS_FILE_LIST:
18192
a28c8d15ff75 (svn r23021) -Codechange: Support resized square and warning icons in NewGRF selection window.
peter1138 <peter1138@openttd.org>
parents: 18173
diff changeset
682 {
a28c8d15ff75 (svn r23021) -Codechange: Support resized square and warning icons in NewGRF selection window.
peter1138 <peter1138@openttd.org>
parents: 18173
diff changeset
683 Dimension d = maxdim(GetSpriteSize(SPR_SQUARE), GetSpriteSize(SPR_WARNING_SIGN));
a28c8d15ff75 (svn r23021) -Codechange: Support resized square and warning icons in NewGRF selection window.
peter1138 <peter1138@openttd.org>
parents: 18173
diff changeset
684 resize->height = max(d.height + 2U, FONT_HEIGHT_NORMAL + 2U);
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
685 size->height = max(size->height, WD_FRAMERECT_TOP + 6 * resize->height + WD_FRAMERECT_BOTTOM);
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
686 break;
18192
a28c8d15ff75 (svn r23021) -Codechange: Support resized square and warning icons in NewGRF selection window.
peter1138 <peter1138@openttd.org>
parents: 18173
diff changeset
687 }
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
688
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
689 case WID_NS_AVAIL_LIST:
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
690 resize->height = max(12, FONT_HEIGHT_NORMAL + 2);
15205
0dca88008a3a (svn r19834) -Change: Replace matrix list widget in NewGRF gui by a panel with black background.
alberth <alberth@openttd.org>
parents: 15204
diff changeset
691 size->height = max(size->height, WD_FRAMERECT_TOP + 8 * resize->height + WD_FRAMERECT_BOTTOM);
13171
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
692 break;
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
693
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
694 case WID_NS_NEWGRF_INFO_TITLE: {
15204
f29231ce72e1 (svn r19833) -Change: Modify NewGRF window towards having combined lists, add captions.
alberth <alberth@openttd.org>
parents: 15203
diff changeset
695 Dimension dim = GetStringBoundingBox(STR_NEWGRF_SETTINGS_INFO_TITLE);
f29231ce72e1 (svn r19833) -Change: Modify NewGRF window towards having combined lists, add captions.
alberth <alberth@openttd.org>
parents: 15203
diff changeset
696 size->height = max(size->height, dim.height + WD_FRAMETEXT_TOP + WD_FRAMETEXT_BOTTOM);
f29231ce72e1 (svn r19833) -Change: Modify NewGRF window towards having combined lists, add captions.
alberth <alberth@openttd.org>
parents: 15203
diff changeset
697 size->width = max(size->width, dim.width + WD_FRAMETEXT_LEFT + WD_FRAMETEXT_RIGHT);
f29231ce72e1 (svn r19833) -Change: Modify NewGRF window towards having combined lists, add captions.
alberth <alberth@openttd.org>
parents: 15203
diff changeset
698 break;
f29231ce72e1 (svn r19833) -Change: Modify NewGRF window towards having combined lists, add captions.
alberth <alberth@openttd.org>
parents: 15203
diff changeset
699 }
f29231ce72e1 (svn r19833) -Change: Modify NewGRF window towards having combined lists, add captions.
alberth <alberth@openttd.org>
parents: 15203
diff changeset
700
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
701 case WID_NS_NEWGRF_INFO:
13171
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
702 size->height = max(size->height, WD_FRAMERECT_TOP + 10 * FONT_HEIGHT_NORMAL + WD_FRAMERECT_BOTTOM + padding.height + 2);
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
703 break;
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
704
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
705 case WID_NS_PRESET_LIST: {
13171
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
706 Dimension d = GetStringBoundingBox(STR_NUM_CUSTOM);
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
707 for (uint i = 0; i < _grf_preset_list.Length(); i++) {
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
708 if (_grf_preset_list[i] != NULL) {
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
709 SetDParamStr(0, _grf_preset_list[i]);
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
710 d = maxdim(d, GetStringBoundingBox(STR_JUST_RAW_STRING));
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
711 }
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
712 }
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
713 d.width += padding.width;
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
714 *size = maxdim(d, *size);
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
715 break;
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
716 }
15194
2d9d9be17bbe (svn r19823) -Fix: Ensure that both texts of the newgrf gui download button fit.
alberth <alberth@openttd.org>
parents: 15185
diff changeset
717
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
718 case WID_NS_CONTENT_DOWNLOAD:
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
719 case WID_NS_CONTENT_DOWNLOAD2: {
15194
2d9d9be17bbe (svn r19823) -Fix: Ensure that both texts of the newgrf gui download button fit.
alberth <alberth@openttd.org>
parents: 15185
diff changeset
720 Dimension d = GetStringBoundingBox(STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON);
2d9d9be17bbe (svn r19823) -Fix: Ensure that both texts of the newgrf gui download button fit.
alberth <alberth@openttd.org>
parents: 15185
diff changeset
721 *size = maxdim(d, GetStringBoundingBox(STR_INTRO_ONLINE_CONTENT));
2d9d9be17bbe (svn r19823) -Fix: Ensure that both texts of the newgrf gui download button fit.
alberth <alberth@openttd.org>
parents: 15185
diff changeset
722 size->width += padding.width;
2d9d9be17bbe (svn r19823) -Fix: Ensure that both texts of the newgrf gui download button fit.
alberth <alberth@openttd.org>
parents: 15185
diff changeset
723 size->height += padding.height;
2d9d9be17bbe (svn r19823) -Fix: Ensure that both texts of the newgrf gui download button fit.
alberth <alberth@openttd.org>
parents: 15185
diff changeset
724 break;
2d9d9be17bbe (svn r19823) -Fix: Ensure that both texts of the newgrf gui download button fit.
alberth <alberth@openttd.org>
parents: 15185
diff changeset
725 }
13171
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
726 }
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
727 }
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
728
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: 13277
diff changeset
729 virtual void OnResize()
13171
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
730 {
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
731 this->vscroll->SetCapacityFromWidget(this, WID_NS_FILE_LIST);
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
732 this->vscroll2->SetCapacityFromWidget(this, WID_NS_AVAIL_LIST);
13171
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
733 }
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
734
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
735 virtual void SetStringParameters(int widget) const
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
736 {
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
737 switch (widget) {
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
738 case WID_NS_PRESET_LIST:
13171
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
739 if (this->preset == -1) {
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
740 SetDParam(0, STR_NUM_CUSTOM);
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
741 } else {
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
742 SetDParam(0, STR_JUST_RAW_STRING);
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
743 SetDParamStr(1, _grf_preset_list[this->preset]);
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
744 }
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
745 break;
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
746 }
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
747 }
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
748
15620
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
749 /**
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
750 * Pick the palette for the sprite of the grf to display.
15207
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
751 * @param c grf to display.
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
752 * @return Palette for the sprite.
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
753 */
18792
c99e695378ce (svn r23640) -Fix: stop using FORCEINLINE (1/3rd of the instances were, the others were still regular inline), but make sure inline is always a 'forced' inline (I am looking at you MSVC)
truebrain <truebrain@openttd.org>
parents: 18753
diff changeset
754 inline PaletteID GetPalette(const GRFConfig *c) const
15207
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
755 {
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
756 PaletteID pal;
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
757
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
758 /* Pick a colour */
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
759 switch (c->status) {
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
760 case GCS_NOT_FOUND:
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
761 case GCS_DISABLED:
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
762 pal = PALETTE_TO_RED;
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
763 break;
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
764 case GCS_ACTIVATED:
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
765 pal = PALETTE_TO_GREEN;
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
766 break;
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
767 default:
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
768 pal = PALETTE_TO_BLUE;
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
769 break;
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
770 }
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
771
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
772 /* Do not show a "not-failure" colour when it actually failed to load */
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
773 if (pal != PALETTE_TO_RED) {
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
774 if (HasBit(c->flags, GCF_STATIC)) {
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
775 pal = PALETTE_TO_GREY;
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
776 } else if (HasBit(c->flags, GCF_COMPATIBLE)) {
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
777 pal = PALETTE_TO_ORANGE;
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
778 }
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
779 }
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
780
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
781 return pal;
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
782 }
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
783
13171
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
784 virtual void DrawWidget(const Rect &r, int widget) const
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
785 {
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
786 switch (widget) {
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
787 case WID_NS_FILE_LIST: {
17657
c2a2cda37d1b (svn r22429) -Add: some constants for specific palette colours used in the GUI.
frosch <frosch@openttd.org>
parents: 17649
diff changeset
788 GfxFillRect(r.left + 1, r.top + 1, r.right - 1, r.bottom - 1, PC_BLACK);
15205
0dca88008a3a (svn r19834) -Change: Replace matrix list widget in NewGRF gui by a panel with black background.
alberth <alberth@openttd.org>
parents: 15204
diff changeset
789
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
790 uint step_height = this->GetWidget<NWidgetBase>(WID_NS_FILE_LIST)->resize_y;
15205
0dca88008a3a (svn r19834) -Change: Replace matrix list widget in NewGRF gui by a panel with black background.
alberth <alberth@openttd.org>
parents: 15204
diff changeset
791 uint y = r.top + WD_FRAMERECT_TOP;
18192
a28c8d15ff75 (svn r23021) -Codechange: Support resized square and warning icons in NewGRF selection window.
peter1138 <peter1138@openttd.org>
parents: 18173
diff changeset
792 Dimension square = GetSpriteSize(SPR_SQUARE);
a28c8d15ff75 (svn r23021) -Codechange: Support resized square and warning icons in NewGRF selection window.
peter1138 <peter1138@openttd.org>
parents: 18173
diff changeset
793 Dimension warning = GetSpriteSize(SPR_WARNING_SIGN);
a28c8d15ff75 (svn r23021) -Codechange: Support resized square and warning icons in NewGRF selection window.
peter1138 <peter1138@openttd.org>
parents: 18173
diff changeset
794 int square_offset_y = (step_height - square.height) / 2;
a28c8d15ff75 (svn r23021) -Codechange: Support resized square and warning icons in NewGRF selection window.
peter1138 <peter1138@openttd.org>
parents: 18173
diff changeset
795 int warning_offset_y = (step_height - warning.height) / 2;
15220
ef4601cbbb98 (svn r19849) -Fix: Center sprite and text seperately in the newgrf gui active list.
alberth <alberth@openttd.org>
parents: 15219
diff changeset
796 int offset_y = (step_height - FONT_HEIGHT_NORMAL) / 2;
13171
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
797
16441
86fd9bcc9d2f (svn r21157) -Codechange: remove information about the text direction out of the language "list"
rubidium <rubidium@openttd.org>
parents: 16395
diff changeset
798 bool rtl = _current_text_dir == TD_RTL;
18192
a28c8d15ff75 (svn r23021) -Codechange: Support resized square and warning icons in NewGRF selection window.
peter1138 <peter1138@openttd.org>
parents: 18173
diff changeset
799 uint text_left = rtl ? r.left + WD_FRAMERECT_LEFT : r.left + square.width + 15;
a28c8d15ff75 (svn r23021) -Codechange: Support resized square and warning icons in NewGRF selection window.
peter1138 <peter1138@openttd.org>
parents: 18173
diff changeset
800 uint text_right = rtl ? r.right - square.width - 15 : r.right - WD_FRAMERECT_RIGHT;
a28c8d15ff75 (svn r23021) -Codechange: Support resized square and warning icons in NewGRF selection window.
peter1138 <peter1138@openttd.org>
parents: 18173
diff changeset
801 uint square_left = rtl ? r.right - square.width - 5 : r.left + 5;
a28c8d15ff75 (svn r23021) -Codechange: Support resized square and warning icons in NewGRF selection window.
peter1138 <peter1138@openttd.org>
parents: 18173
diff changeset
802 uint warning_left = rtl ? r.right - square.width - warning.width - 10 : r.left + square.width + 10;
13659
2c473236b6fd (svn r18183) -Codechange: make the NewGRF window RTL aware
rubidium <rubidium@openttd.org>
parents: 13654
diff changeset
803
13171
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
804 int i = 0;
15203
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
805 for (const GRFConfig *c = this->actives; c != NULL; c = c->next, i++) {
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
806 if (this->vscroll->IsVisible(i)) {
14711
74b0a8a64ff5 (svn r19295) -Codechange: introduce wrapper functions for GRFConfig::name/info
yexo <yexo@openttd.org>
parents: 14676
diff changeset
807 const char *text = c->GetName();
15205
0dca88008a3a (svn r19834) -Change: Replace matrix list widget in NewGRF gui by a panel with black background.
alberth <alberth@openttd.org>
parents: 15204
diff changeset
808 bool h = (this->active_sel == c);
15207
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
809 PaletteID pal = this->GetPalette(c);
13171
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
810
19237
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
811 if (h) {
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
812 GfxFillRect(r.left + 1, y, r.right - 1, y + step_height - 1, PC_DARK_BLUE);
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
813 } else if (i == this->active_over) {
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
814 /* Get index of current selection. */
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
815 int active_sel_pos = 0;
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
816 for (GRFConfig *c = this->actives; c != NULL && c != this->active_sel; c = c->next, active_sel_pos++) {}
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
817 if (active_sel_pos != this->active_over) {
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
818 uint top = this->active_over < active_sel_pos ? y + 1 : y + step_height - 2;
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
819 GfxFillRect(r.left + WD_FRAMERECT_LEFT, top - 1, r.right - WD_FRAMERECT_RIGHT, top + 1, PC_GREY);
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
820 }
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
821 }
18192
a28c8d15ff75 (svn r23021) -Codechange: Support resized square and warning icons in NewGRF selection window.
peter1138 <peter1138@openttd.org>
parents: 18173
diff changeset
822 DrawSprite(SPR_SQUARE, pal, square_left, y + square_offset_y);
a28c8d15ff75 (svn r23021) -Codechange: Support resized square and warning icons in NewGRF selection window.
peter1138 <peter1138@openttd.org>
parents: 18173
diff changeset
823 if (c->error != NULL) DrawSprite(SPR_WARNING_SIGN, 0, warning_left, y + warning_offset_y);
a28c8d15ff75 (svn r23021) -Codechange: Support resized square and warning icons in NewGRF selection window.
peter1138 <peter1138@openttd.org>
parents: 18173
diff changeset
824 uint txtoffset = c->error == NULL ? 0 : warning.width;
15220
ef4601cbbb98 (svn r19849) -Fix: Center sprite and text seperately in the newgrf gui active list.
alberth <alberth@openttd.org>
parents: 15219
diff changeset
825 DrawString(text_left + (rtl ? 0 : txtoffset), text_right - (rtl ? txtoffset : 0), y + offset_y, text, h ? TC_WHITE : TC_ORANGE);
15205
0dca88008a3a (svn r19834) -Change: Replace matrix list widget in NewGRF gui by a panel with black background.
alberth <alberth@openttd.org>
parents: 15204
diff changeset
826 y += step_height;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
827 }
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
828 }
19237
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
829 if (i == this->active_over && this->vscroll->IsVisible(i)) { // Highlight is after the last GRF entry.
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
830 GfxFillRect(r.left + WD_FRAMERECT_LEFT, y, r.right - WD_FRAMERECT_RIGHT, y + 2, PC_GREY);
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
831 }
15618
e4640748f223 (svn r20281) -Codechange: unify case scope closure + break coding style
rubidium <rubidium@openttd.org>
parents: 15605
diff changeset
832 break;
e4640748f223 (svn r20281) -Codechange: unify case scope closure + break coding style
rubidium <rubidium@openttd.org>
parents: 15605
diff changeset
833 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
834
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
835 case WID_NS_AVAIL_LIST: {
19237
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
836 GfxFillRect(r.left + 1, r.top + 1, r.right - 1, r.bottom - 1, this->active_over == -2 ? PC_DARK_GREY : PC_BLACK);
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
837
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
838 uint step_height = this->GetWidget<NWidgetBase>(WID_NS_AVAIL_LIST)->resize_y;
15219
861c943801ad (svn r19848) -Fix (r19837): Center the texts of the inactive newgrfs.
alberth <alberth@openttd.org>
parents: 15216
diff changeset
839 int offset_y = (step_height - FONT_HEIGHT_NORMAL) / 2;
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
840 uint y = r.top + WD_FRAMERECT_TOP;
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
841 uint min_index = this->vscroll2->GetPosition();
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
842 uint max_index = min(min_index + this->vscroll2->GetCapacity(), this->avails.Length());
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
843
15599
146255899304 (svn r20259) -Add: allow NewGRFs to specify their version and use that to hide old NewGRFs / to choose the newest when loading compatible NewGRFs
rubidium <rubidium@openttd.org>
parents: 15598
diff changeset
844 for (uint i = min_index; i < max_index; i++) {
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
845 const GRFConfig *c = this->avails[i];
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
846 bool h = (c == this->avail_sel);
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
847 const char *text = c->GetName();
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
848
17657
c2a2cda37d1b (svn r22429) -Add: some constants for specific palette colours used in the GUI.
frosch <frosch@openttd.org>
parents: 17649
diff changeset
849 if (h) GfxFillRect(r.left + 1, y, r.right - 1, y + step_height - 1, PC_DARK_BLUE);
15219
861c943801ad (svn r19848) -Fix (r19837): Center the texts of the inactive newgrfs.
alberth <alberth@openttd.org>
parents: 15216
diff changeset
850 DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y + offset_y, text, h ? TC_WHITE : TC_SILVER);
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
851 y += step_height;
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
852 }
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
853 break;
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
854 }
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
855
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
856 case WID_NS_NEWGRF_INFO_TITLE:
15204
f29231ce72e1 (svn r19833) -Change: Modify NewGRF window towards having combined lists, add captions.
alberth <alberth@openttd.org>
parents: 15203
diff changeset
857 /* Create the nice grayish rectangle at the details top. */
17657
c2a2cda37d1b (svn r22429) -Add: some constants for specific palette colours used in the GUI.
frosch <frosch@openttd.org>
parents: 17649
diff changeset
858 GfxFillRect(r.left + 1, r.top + 1, r.right - 1, r.bottom - 1, PC_DARK_BLUE);
15400
821c26b30fd9 (svn r20043) -Codechange: Introduce vertical alignment for DrawStringMultiLine().
alberth <alberth@openttd.org>
parents: 15345
diff changeset
859 DrawString(r.left, r.right, (r.top + r.bottom - FONT_HEIGHT_NORMAL) / 2, STR_NEWGRF_SETTINGS_INFO_TITLE, TC_FROMSTRING, SA_HOR_CENTER);
15204
f29231ce72e1 (svn r19833) -Change: Modify NewGRF window towards having combined lists, add captions.
alberth <alberth@openttd.org>
parents: 15203
diff changeset
860 break;
f29231ce72e1 (svn r19833) -Change: Modify NewGRF window towards having combined lists, add captions.
alberth <alberth@openttd.org>
parents: 15203
diff changeset
861
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
862 case WID_NS_NEWGRF_INFO: {
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
863 const GRFConfig *selected = this->active_sel;
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
864 if (selected == NULL) selected = this->avail_sel;
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
865 if (selected != NULL) {
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
866 ShowNewGRFInfo(selected, r.left + WD_FRAMERECT_LEFT, r.top + WD_FRAMERECT_TOP, r.right - WD_FRAMERECT_RIGHT, r.bottom - WD_FRAMERECT_BOTTOM, this->show_params);
13171
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
867 }
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
868 break;
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
869 }
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
870 }
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
871 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
872
14409
1eaefde497fd (svn r18966) -Codechange: Remove Window::OnDoubleClick() in favour of a parameter for OnClick().
frosch <frosch@openttd.org>
parents: 14391
diff changeset
873 virtual void OnClick(Point pt, int widget, int click_count)
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
874 {
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
875 if (widget >= WID_NS_NEWGRF_TEXTFILE && widget < WID_NS_NEWGRF_TEXTFILE + TFT_END) {
18413
e5c315e27c0a (svn r23249) -Feature: Also allow viewing of the other two textfiles supplied by BaNaNaS tars, i.e. changelog and license.
frosch <frosch@openttd.org>
parents: 18412
diff changeset
876 if (this->active_sel == NULL && this->avail_sel == NULL) return;
e5c315e27c0a (svn r23249) -Feature: Also allow viewing of the other two textfiles supplied by BaNaNaS tars, i.e. changelog and license.
frosch <frosch@openttd.org>
parents: 18412
diff changeset
877
19078
8cb1275f2bb3 (svn r23932) -Codechange: split the NewGRF text window into its own source files
rubidium <rubidium@openttd.org>
parents: 18957
diff changeset
878 ShowNewGRFTextfileWindow((TextfileType)(widget - WID_NS_NEWGRF_TEXTFILE), this->active_sel != NULL ? this->active_sel : this->avail_sel);
18413
e5c315e27c0a (svn r23249) -Feature: Also allow viewing of the other two textfiles supplied by BaNaNaS tars, i.e. changelog and license.
frosch <frosch@openttd.org>
parents: 18412
diff changeset
879 return;
e5c315e27c0a (svn r23249) -Feature: Also allow viewing of the other two textfiles supplied by BaNaNaS tars, i.e. changelog and license.
frosch <frosch@openttd.org>
parents: 18412
diff changeset
880 }
e5c315e27c0a (svn r23249) -Feature: Also allow viewing of the other two textfiles supplied by BaNaNaS tars, i.e. changelog and license.
frosch <frosch@openttd.org>
parents: 18412
diff changeset
881
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
882 switch (widget) {
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
883 case WID_NS_PRESET_LIST: {
9677
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
884 DropDownList *list = new DropDownList();
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
885
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
886 /* Add 'None' option for clearing list */
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
887 list->push_back(new DropDownListStringItem(STR_NONE, -1, false));
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
888
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
889 for (uint i = 0; i < _grf_preset_list.Length(); i++) {
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
890 if (_grf_preset_list[i] != NULL) {
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
891 list->push_back(new DropDownListPresetItem(i));
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
892 }
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
893 }
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
894
15212
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
895 this->DeleteChildWindows(WC_QUERY_STRING); // Remove the parameter query window
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
896 ShowDropDownList(this, list, this->preset, WID_NS_PRESET_LIST);
9677
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
897 break;
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
898 }
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
899
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
900 case WID_NS_OPEN_URL: {
18648
f68b9653f952 (svn r23495) -Feature: button in NewGRF window to open URL from action14
yexo <yexo@openttd.org>
parents: 18627
diff changeset
901 const GRFConfig *c = (this->avail_sel == NULL) ? this->active_sel : this->avail_sel;
f68b9653f952 (svn r23495) -Feature: button in NewGRF window to open URL from action14
yexo <yexo@openttd.org>
parents: 18627
diff changeset
902
f68b9653f952 (svn r23495) -Feature: button in NewGRF window to open URL from action14
yexo <yexo@openttd.org>
parents: 18627
diff changeset
903 extern void OpenBrowser(const char *url);
f68b9653f952 (svn r23495) -Feature: button in NewGRF window to open URL from action14
yexo <yexo@openttd.org>
parents: 18627
diff changeset
904 OpenBrowser(c->GetURL());
f68b9653f952 (svn r23495) -Feature: button in NewGRF window to open URL from action14
yexo <yexo@openttd.org>
parents: 18627
diff changeset
905 break;
f68b9653f952 (svn r23495) -Feature: button in NewGRF window to open URL from action14
yexo <yexo@openttd.org>
parents: 18627
diff changeset
906 }
f68b9653f952 (svn r23495) -Feature: button in NewGRF window to open URL from action14
yexo <yexo@openttd.org>
parents: 18627
diff changeset
907
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
908 case WID_NS_PRESET_SAVE:
17579
105b4e4eb168 (svn r22343) -Change: Remove pixel limiter for query strings.
terkhen <terkhen@openttd.org>
parents: 17486
diff changeset
909 ShowQueryString(STR_EMPTY, STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY, 32, this, CS_ALPHANUMERAL, QSF_NONE);
9677
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
910 break;
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
911
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
912 case WID_NS_PRESET_DELETE:
9677
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
913 if (this->preset == -1) return;
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
914
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
915 DeleteGRFPresetFromConfig(_grf_preset_list[this->preset]);
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
916 GetGRFPresetList(&_grf_preset_list);
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
917 this->preset = -1;
13170
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
918 this->InvalidateData();
13413
a3d40c489804 (svn r17922) -Fix [FS#3291]: crash when closing NewGRF parameter window with no NewGRF selected
rubidium <rubidium@openttd.org>
parents: 13411
diff changeset
919 this->DeleteChildWindows(WC_QUERY_STRING); // Remove the parameter query window
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
920 break;
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
921
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
922 case WID_NS_MOVE_UP: { // Move GRF up
15345
52c9ee163c8f (svn r19986) -Fix (r19841): One could add and remove Grfs from the list via doubleclicking even if editing the list is not allowed.
frosch <frosch@openttd.org>
parents: 15331
diff changeset
923 if (this->active_sel == NULL || !this->editable) 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
924
14390
48685f9d7f68 (svn r18947) -Fix [FS#1510]: after clicking move up/move down in the newgrf/ai the selected item could be out of range
yexo <yexo@openttd.org>
parents: 14319
diff changeset
925 int pos = 0;
15203
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
926 for (GRFConfig **pc = &this->actives; *pc != NULL; pc = &(*pc)->next, pos++) {
15200
0865df725761 (svn r19829) -Codechange: Extract assignment from the condition-check in the for statement.
alberth <alberth@openttd.org>
parents: 15194
diff changeset
927 GRFConfig *c = *pc;
15203
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
928 if (c->next == this->active_sel) {
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
929 c->next = this->active_sel->next;
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
930 this->active_sel->next = c;
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
931 *pc = this->active_sel;
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
932 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
933 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
934 }
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
935 this->vscroll->ScrollTowards(pos);
9677
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
936 this->preset = -1;
13170
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
937 this->InvalidateData();
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
938 break;
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
939 }
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
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
941 case WID_NS_MOVE_DOWN: { // Move GRF down
15345
52c9ee163c8f (svn r19986) -Fix (r19841): One could add and remove Grfs from the list via doubleclicking even if editing the list is not allowed.
frosch <frosch@openttd.org>
parents: 15331
diff changeset
942 if (this->active_sel == NULL || !this->editable) 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
943
14390
48685f9d7f68 (svn r18947) -Fix [FS#1510]: after clicking move up/move down in the newgrf/ai the selected item could be out of range
yexo <yexo@openttd.org>
parents: 14319
diff changeset
944 int pos = 1; // Start at 1 as we swap the selected newgrf with the next one
15203
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
945 for (GRFConfig **pc = &this->actives; *pc != NULL; pc = &(*pc)->next, pos++) {
15200
0865df725761 (svn r19829) -Codechange: Extract assignment from the condition-check in the for statement.
alberth <alberth@openttd.org>
parents: 15194
diff changeset
946 GRFConfig *c = *pc;
15203
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
947 if (c == this->active_sel) {
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
948 *pc = c->next;
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
949 c->next = c->next->next;
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
950 (*pc)->next = c;
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
951 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
952 }
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
953 }
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
954 this->vscroll->ScrollTowards(pos);
9677
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
955 this->preset = -1;
13170
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
956 this->InvalidateData();
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
957 break;
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
958 }
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
959
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
960 case WID_NS_FILE_LIST: { // Select an active GRF.
19237
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
961 ResetObjectToPlace();
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
962
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
963 uint i = this->vscroll->GetScrolledRowFromWidget(pt.y, this, WID_NS_FILE_LIST);
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
964
15201
071e920abcfb (svn r19830) -Codechange: Move variable declarations to their first use.
alberth <alberth@openttd.org>
parents: 15200
diff changeset
965 GRFConfig *c;
15203
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
966 for (c = this->actives; c != NULL && i > 0; c = c->next, i--) {}
13413
a3d40c489804 (svn r17922) -Fix [FS#3291]: crash when closing NewGRF parameter window with no NewGRF selected
rubidium <rubidium@openttd.org>
parents: 13411
diff changeset
967
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
968 if (this->active_sel != c) DeleteWindowByClass(WC_GRF_PARAMETERS);
15203
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
969 this->active_sel = c;
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
970 this->avail_sel = NULL;
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
971 this->avail_pos = -1;
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
972
13170
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
973 this->InvalidateData();
19237
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
974 if (click_count == 1) {
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
975 if (this->editable && this->active_sel != NULL) SetObjectToPlaceWnd(SPR_CURSOR_MOUSE, PAL_NONE, HT_DRAG, this);
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
976 break;
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
977 }
15626
33d3500b2a62 (svn r20289) -Codechange: Unify fall through coding style.
terkhen <terkhen@openttd.org>
parents: 15623
diff changeset
978 /* FALL THROUGH, with double click. */
15212
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
979 }
15626
33d3500b2a62 (svn r20289) -Codechange: Unify fall through coding style.
terkhen <terkhen@openttd.org>
parents: 15623
diff changeset
980
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
981 case WID_NS_REMOVE: { // Remove GRF
15345
52c9ee163c8f (svn r19986) -Fix (r19841): One could add and remove Grfs from the list via doubleclicking even if editing the list is not allowed.
frosch <frosch@openttd.org>
parents: 15331
diff changeset
982 if (this->active_sel == NULL || !this->editable) break;
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
983 DeleteWindowByClass(WC_GRF_PARAMETERS);
15212
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
984
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
985 /* Choose the next GRF file to be the selected file. */
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
986 GRFConfig *newsel = this->active_sel->next;
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
987 for (GRFConfig **pc = &this->actives; *pc != NULL; pc = &(*pc)->next) {
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
988 GRFConfig *c = *pc;
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
989 /* If the new selection is empty (i.e. we're deleting the last item
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
990 * in the list, pick the file just before the selected file */
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
991 if (newsel == NULL && c->next == this->active_sel) newsel = c;
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
992
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
993 if (c == this->active_sel) {
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
994 *pc = c->next;
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
995 delete c;
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
996 break;
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
997 }
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
998 }
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
999
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
1000 this->active_sel = newsel;
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
1001 this->preset = -1;
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
1002 this->avail_pos = -1;
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
1003 this->avail_sel = NULL;
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
1004 this->avails.ForceRebuild();
17826
03d75c842b87 (svn r22617) -Codechange: Add GameOptionsInvalidationData enum for data values for Window::OnInvalidateData() of windows with class WC_GAME_OPTIONS.
frosch <frosch@openttd.org>
parents: 17809
diff changeset
1005 this->InvalidateData(GOID_NEWGRF_LIST_EDITED);
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1006 break;
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1007 }
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
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1009 case WID_NS_AVAIL_LIST: { // Select a non-active GRF.
19237
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1010 ResetObjectToPlace();
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1011
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1012 uint i = this->vscroll2->GetScrolledRowFromWidget(pt.y, this, WID_NS_AVAIL_LIST);
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1013 this->active_sel = NULL;
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
1014 DeleteWindowByClass(WC_GRF_PARAMETERS);
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1015 if (i < this->avails.Length()) {
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1016 this->avail_sel = this->avails[i];
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1017 this->avail_pos = i;
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1018 }
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1019 this->InvalidateData();
19237
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1020 if (click_count == 1) {
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1021 if (this->editable && this->avail_sel != NULL && !HasBit(this->avail_sel->flags, GCF_INVALID)) SetObjectToPlaceWnd(SPR_CURSOR_MOUSE, PAL_NONE, HT_DRAG, this);
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1022 break;
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1023 }
15626
33d3500b2a62 (svn r20289) -Codechange: Unify fall through coding style.
terkhen <terkhen@openttd.org>
parents: 15623
diff changeset
1024 /* FALL THROUGH, with double click. */
15212
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
1025 }
15626
33d3500b2a62 (svn r20289) -Codechange: Unify fall through coding style.
terkhen <terkhen@openttd.org>
parents: 15623
diff changeset
1026
19237
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1027 case WID_NS_ADD:
17077
5a60038ce980 (svn r21814) -Fix/Add: Check GRF version from action 8, and disallow usage of GRFs with versions above 7.
frosch <frosch@openttd.org>
parents: 16614
diff changeset
1028 if (this->avail_sel == NULL || !this->editable || HasBit(this->avail_sel->flags, GCF_INVALID)) break;
15212
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
1029
19237
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1030 this->AddGRFToActive();
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1031 break;
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1032
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1033 case WID_NS_APPLY_CHANGES: // Apply changes made to GRF list
15345
52c9ee163c8f (svn r19986) -Fix (r19841): One could add and remove Grfs from the list via doubleclicking even if editing the list is not allowed.
frosch <frosch@openttd.org>
parents: 15331
diff changeset
1034 if (!this->editable) break;
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1035 if (this->execute) {
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1036 ShowQuery(
12632
e41943276802 (svn r17075) -Codechange: rename ~750 strings to be more uniform with their relatives
rubidium <rubidium@openttd.org>
parents: 12619
diff changeset
1037 STR_NEWGRF_POPUP_CAUTION_CAPTION,
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1038 STR_NEWGRF_CONFIRMATION_TEXT,
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1039 this,
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1040 NewGRFConfirmationCallback
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1041 );
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1042 } else {
15203
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
1043 CopyGRFConfigList(this->orig_list, this->actives, true);
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1044 ResetGRFConfig(false);
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1045 ReloadNewGRFData();
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1046 }
15212
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
1047 this->DeleteChildWindows(WC_QUERY_STRING); // Remove the parameter query window
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1048 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
1049
18911
e48659f8d5c4 (svn r23760) -Feature: Allow readonly display of NewGRF parameters, if GRF list may not be edited.
frosch <frosch@openttd.org>
parents: 18908
diff changeset
1050 case WID_NS_VIEW_PARAMETERS:
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1051 case WID_NS_SET_PARAMETERS: { // Edit parameters
18911
e48659f8d5c4 (svn r23760) -Feature: Allow readonly display of NewGRF parameters, if GRF list may not be edited.
frosch <frosch@openttd.org>
parents: 18908
diff changeset
1052 if (this->active_sel == NULL || !this->show_params || this->active_sel->num_valid_params == 0) 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
1053
18911
e48659f8d5c4 (svn r23760) -Feature: Allow readonly display of NewGRF parameters, if GRF list may not be edited.
frosch <frosch@openttd.org>
parents: 18908
diff changeset
1054 OpenGRFParameterWindow(this->active_sel, this->editable);
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1055 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
1056 }
10066
42653fe231a2 (svn r14233) -Feature/Fix [FS#2172]: save the palette of the loaded NewGRFs in the savegame, so joining with a server using Windows palette will make a client with the DOS palette do palette conversion and (thus) not cause a desync due to the different palettes disabling different NewGRFs.
rubidium <rubidium@openttd.org>
parents: 9957
diff changeset
1057
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1058 case WID_NS_TOGGLE_PALETTE:
15345
52c9ee163c8f (svn r19986) -Fix (r19841): One could add and remove Grfs from the list via doubleclicking even if editing the list is not allowed.
frosch <frosch@openttd.org>
parents: 15331
diff changeset
1059 if (this->active_sel != NULL || !this->editable) {
15593
7d5548deab3f (svn r20253) -Codechange: change GRFConfig::windows_paletted into a bitmask/bitset
rubidium <rubidium@openttd.org>
parents: 15588
diff changeset
1060 this->active_sel->palette ^= GRFP_USE_MASK;
10066
42653fe231a2 (svn r14233) -Feature/Fix [FS#2172]: save the palette of the loaded NewGRFs in the savegame, so joining with a server using Windows palette will make a client with the DOS palette do palette conversion and (thus) not cause a desync due to the different palettes disabling different NewGRFs.
rubidium <rubidium@openttd.org>
parents: 9957
diff changeset
1061 this->SetDirty();
42653fe231a2 (svn r14233) -Feature/Fix [FS#2172]: save the palette of the loaded NewGRFs in the savegame, so joining with a server using Windows palette will make a client with the DOS palette do palette conversion and (thus) not cause a desync due to the different palettes disabling different NewGRFs.
rubidium <rubidium@openttd.org>
parents: 9957
diff changeset
1062 }
42653fe231a2 (svn r14233) -Feature/Fix [FS#2172]: save the palette of the loaded NewGRFs in the savegame, so joining with a server using Windows palette will make a client with the DOS palette do palette conversion and (thus) not cause a desync due to the different palettes disabling different NewGRFs.
rubidium <rubidium@openttd.org>
parents: 9957
diff changeset
1063 break;
10793
0744d383a56b (svn r15126) -Feature: downloading content from a central server (content.openttd.org) where authors can upload they NewGRFS/AI etc. This should make joining servers that use only NewGRFs that are distributed via this system easier as the players can download the NewGRFs from in the game. It should also make it easier to see whether there are updates for NewGRFs and make the necessary updates.
rubidium <rubidium@openttd.org>
parents: 10145
diff changeset
1064
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1065 case WID_NS_CONTENT_DOWNLOAD:
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1066 case WID_NS_CONTENT_DOWNLOAD2:
10793
0744d383a56b (svn r15126) -Feature: downloading content from a central server (content.openttd.org) where authors can upload they NewGRFS/AI etc. This should make joining servers that use only NewGRFs that are distributed via this system easier as the players can download the NewGRFs from in the game. It should also make it easier to see whether there are updates for NewGRFs and make the necessary updates.
rubidium <rubidium@openttd.org>
parents: 10145
diff changeset
1067 if (!_network_available) {
14645
b7a22979b84e (svn r19224) -Codechange: change parameters passed to ShowErrorMessage() a bit
smatz <smatz@openttd.org>
parents: 14561
diff changeset
1068 ShowErrorMessage(STR_NETWORK_ERROR_NOTAVAILABLE, INVALID_STRING_ID, WL_ERROR);
10793
0744d383a56b (svn r15126) -Feature: downloading content from a central server (content.openttd.org) where authors can upload they NewGRFS/AI etc. This should make joining servers that use only NewGRFs that are distributed via this system easier as the players can download the NewGRFs from in the game. It should also make it easier to see whether there are updates for NewGRFs and make the necessary updates.
rubidium <rubidium@openttd.org>
parents: 10145
diff changeset
1069 } else {
0744d383a56b (svn r15126) -Feature: downloading content from a central server (content.openttd.org) where authors can upload they NewGRFS/AI etc. This should make joining servers that use only NewGRFs that are distributed via this system easier as the players can download the NewGRFs from in the game. It should also make it easier to see whether there are updates for NewGRFs and make the necessary updates.
rubidium <rubidium@openttd.org>
parents: 10145
diff changeset
1070 #if defined(ENABLE_NETWORK)
15331
fcc18215652e (svn r19972) -Change: Use the md5sum from the previous save of the game for BaNaNaS instead of the initial (when the grf was added) md5sum from the gamelog. Neither method is 'better', but this way it is independent from the gamelog.
frosch <frosch@openttd.org>
parents: 15220
diff changeset
1071 this->DeleteChildWindows(WC_QUERY_STRING); // Remove the parameter query window
15212
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
1072
18618
690f883cee0e (svn r23465) -Feature [FS#4827]: add 'find missing content online' button to 'load savegame' and 'find network game' windows
yexo <yexo@openttd.org>
parents: 18444
diff changeset
1073 ShowMissingContentWindow(this->actives);
10793
0744d383a56b (svn r15126) -Feature: downloading content from a central server (content.openttd.org) where authors can upload they NewGRFS/AI etc. This should make joining servers that use only NewGRFs that are distributed via this system easier as the players can download the NewGRFs from in the game. It should also make it easier to see whether there are updates for NewGRFs and make the necessary updates.
rubidium <rubidium@openttd.org>
parents: 10145
diff changeset
1074 #endif
0744d383a56b (svn r15126) -Feature: downloading content from a central server (content.openttd.org) where authors can upload they NewGRFS/AI etc. This should make joining servers that use only NewGRFs that are distributed via this system easier as the players can download the NewGRFs from in the game. It should also make it easier to see whether there are updates for NewGRFs and make the necessary updates.
rubidium <rubidium@openttd.org>
parents: 10145
diff changeset
1075 }
0744d383a56b (svn r15126) -Feature: downloading content from a central server (content.openttd.org) where authors can upload they NewGRFS/AI etc. This should make joining servers that use only NewGRFs that are distributed via this system easier as the players can download the NewGRFs from in the game. It should also make it easier to see whether there are updates for NewGRFs and make the necessary updates.
rubidium <rubidium@openttd.org>
parents: 10145
diff changeset
1076 break;
15211
e28e566488a9 (svn r19840) -Add: Add 'rescan' functionality to the NewGRF window.
alberth <alberth@openttd.org>
parents: 15209
diff changeset
1077
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1078 case WID_NS_RESCAN_FILES:
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1079 case WID_NS_RESCAN_FILES2:
17982
ad0c8dce1699 (svn r22791) -Codechange: use callback for scanning from the NewGRF window
rubidium <rubidium@openttd.org>
parents: 17962
diff changeset
1080 ScanNewGRFFiles(this);
15211
e28e566488a9 (svn r19840) -Add: Add 'rescan' functionality to the NewGRF window.
alberth <alberth@openttd.org>
parents: 15209
diff changeset
1081 break;
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1082 }
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1083 }
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1084
17982
ad0c8dce1699 (svn r22791) -Codechange: use callback for scanning from the NewGRF window
rubidium <rubidium@openttd.org>
parents: 17962
diff changeset
1085 virtual void OnNewGRFsScanned()
ad0c8dce1699 (svn r22791) -Codechange: use callback for scanning from the NewGRF window
rubidium <rubidium@openttd.org>
parents: 17962
diff changeset
1086 {
ad0c8dce1699 (svn r22791) -Codechange: use callback for scanning from the NewGRF window
rubidium <rubidium@openttd.org>
parents: 17962
diff changeset
1087 this->avail_sel = NULL;
ad0c8dce1699 (svn r22791) -Codechange: use callback for scanning from the NewGRF window
rubidium <rubidium@openttd.org>
parents: 17962
diff changeset
1088 this->avail_pos = -1;
ad0c8dce1699 (svn r22791) -Codechange: use callback for scanning from the NewGRF window
rubidium <rubidium@openttd.org>
parents: 17962
diff changeset
1089 this->avails.ForceRebuild();
19078
8cb1275f2bb3 (svn r23932) -Codechange: split the NewGRF text window into its own source files
rubidium <rubidium@openttd.org>
parents: 18957
diff changeset
1090 this->DeleteChildWindows(WC_QUERY_STRING); // Remove the parameter query window
8cb1275f2bb3 (svn r23932) -Codechange: split the NewGRF text window into its own source files
rubidium <rubidium@openttd.org>
parents: 18957
diff changeset
1091 this->DeleteChildWindows(WC_TEXTFILE); // Remove the view textfile window
17982
ad0c8dce1699 (svn r22791) -Codechange: use callback for scanning from the NewGRF window
rubidium <rubidium@openttd.org>
parents: 17962
diff changeset
1092 }
ad0c8dce1699 (svn r22791) -Codechange: use callback for scanning from the NewGRF window
rubidium <rubidium@openttd.org>
parents: 17962
diff changeset
1093
9677
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
1094 virtual void OnDropdownSelect(int widget, int index)
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
1095 {
15345
52c9ee163c8f (svn r19986) -Fix (r19841): One could add and remove Grfs from the list via doubleclicking even if editing the list is not allowed.
frosch <frosch@openttd.org>
parents: 15331
diff changeset
1096 if (!this->editable) return;
16006
25371ea61636 (svn r20694) -Fix [FS#4087]: empty newgrf presets were not selectable
yexo <yexo@openttd.org>
parents: 15982
diff changeset
1097
25371ea61636 (svn r20694) -Fix [FS#4087]: empty newgrf presets were not selectable
yexo <yexo@openttd.org>
parents: 15982
diff changeset
1098 ClearGRFConfigList(&this->actives);
25371ea61636 (svn r20694) -Fix [FS#4087]: empty newgrf presets were not selectable
yexo <yexo@openttd.org>
parents: 15982
diff changeset
1099 this->preset = index;
25371ea61636 (svn r20694) -Fix [FS#4087]: empty newgrf presets were not selectable
yexo <yexo@openttd.org>
parents: 15982
diff changeset
1100
25371ea61636 (svn r20694) -Fix [FS#4087]: empty newgrf presets were not selectable
yexo <yexo@openttd.org>
parents: 15982
diff changeset
1101 if (index != -1) {
17809
981f157de59f (svn r22594) -Fix [FS#4644]: add active NewGRFs to the list of available ones when selecting the empty preset
yexo <yexo@openttd.org>
parents: 17769
diff changeset
1102 this->actives = LoadGRFPresetFromConfig(_grf_preset_list[index]);
9677
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
1103 }
17809
981f157de59f (svn r22594) -Fix [FS#4644]: add active NewGRFs to the list of available ones when selecting the empty preset
yexo <yexo@openttd.org>
parents: 17769
diff changeset
1104 this->avails.ForceRebuild();
9677
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
1105
19237
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1106 ResetObjectToPlace();
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
1107 DeleteWindowByClass(WC_GRF_PARAMETERS);
15203
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
1108 this->active_sel = NULL;
17826
03d75c842b87 (svn r22617) -Codechange: Add GameOptionsInvalidationData enum for data values for Window::OnInvalidateData() of windows with class WC_GAME_OPTIONS.
frosch <frosch@openttd.org>
parents: 17809
diff changeset
1109 this->InvalidateData(GOID_NEWGRF_PRESET_LOADED);
9677
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
1110 }
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
1111
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1112 virtual void OnQueryTextFinished(char *str)
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1113 {
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1114 if (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
1115
15603
ea0089ca72ef (svn r20264) -Fix (r20258): saving a new preset was broken
yexo <yexo@openttd.org>
parents: 15602
diff changeset
1116 SaveGRFPresetToConfig(str, this->actives);
ea0089ca72ef (svn r20264) -Fix (r20258): saving a new preset was broken
yexo <yexo@openttd.org>
parents: 15602
diff changeset
1117 GetGRFPresetList(&_grf_preset_list);
ea0089ca72ef (svn r20264) -Fix (r20258): saving a new preset was broken
yexo <yexo@openttd.org>
parents: 15602
diff changeset
1118
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
1119 /* Switch to this preset */
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
1120 for (uint i = 0; i < _grf_preset_list.Length(); i++) {
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
1121 if (_grf_preset_list[i] != NULL && strcmp(_grf_preset_list[i], str) == 0) {
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
1122 this->preset = i;
9677
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
1123 break;
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
1124 }
44a8397a07d4 (svn r13781) -Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file.
peter1138 <peter1138@openttd.org>
parents: 9648
diff changeset
1125 }
13170
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1126
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1127 this->InvalidateData();
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1128 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1129
15620
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
1130 /**
17486
e7672bafbe1c (svn r22241) -Codechange: Add additional to-be-used parameter to OnInvalidateData().
frosch <frosch@openttd.org>
parents: 17077
diff changeset
1131 * Some data on this window has become invalid.
17826
03d75c842b87 (svn r22617) -Codechange: Add GameOptionsInvalidationData enum for data values for Window::OnInvalidateData() of windows with class WC_GAME_OPTIONS.
frosch <frosch@openttd.org>
parents: 17809
diff changeset
1132 * @param data Information about the changed data. @see GameOptionsInvalidationData
17486
e7672bafbe1c (svn r22241) -Codechange: Add additional to-be-used parameter to OnInvalidateData().
frosch <frosch@openttd.org>
parents: 17077
diff changeset
1133 * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1134 */
17486
e7672bafbe1c (svn r22241) -Codechange: Add additional to-be-used parameter to OnInvalidateData().
frosch <frosch@openttd.org>
parents: 17077
diff changeset
1135 virtual void OnInvalidateData(int data = 0, bool gui_scope = true)
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1136 {
17486
e7672bafbe1c (svn r22241) -Codechange: Add additional to-be-used parameter to OnInvalidateData().
frosch <frosch@openttd.org>
parents: 17077
diff changeset
1137 if (!gui_scope) return;
10793
0744d383a56b (svn r15126) -Feature: downloading content from a central server (content.openttd.org) where authors can upload they NewGRFS/AI etc. This should make joining servers that use only NewGRFs that are distributed via this system easier as the players can download the NewGRFs from in the game. It should also make it easier to see whether there are updates for NewGRFs and make the necessary updates.
rubidium <rubidium@openttd.org>
parents: 10145
diff changeset
1138 switch (data) {
17826
03d75c842b87 (svn r22617) -Codechange: Add GameOptionsInvalidationData enum for data values for Window::OnInvalidateData() of windows with class WC_GAME_OPTIONS.
frosch <frosch@openttd.org>
parents: 17809
diff changeset
1139 default:
13170
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1140 /* Nothing important to do */
10793
0744d383a56b (svn r15126) -Feature: downloading content from a central server (content.openttd.org) where authors can upload they NewGRFS/AI etc. This should make joining servers that use only NewGRFs that are distributed via this system easier as the players can download the NewGRFs from in the game. It should also make it easier to see whether there are updates for NewGRFs and make the necessary updates.
rubidium <rubidium@openttd.org>
parents: 10145
diff changeset
1141 break;
0744d383a56b (svn r15126) -Feature: downloading content from a central server (content.openttd.org) where authors can upload they NewGRFS/AI etc. This should make joining servers that use only NewGRFs that are distributed via this system easier as the players can download the NewGRFs from in the game. It should also make it easier to see whether there are updates for NewGRFs and make the necessary updates.
rubidium <rubidium@openttd.org>
parents: 10145
diff changeset
1142
17826
03d75c842b87 (svn r22617) -Codechange: Add GameOptionsInvalidationData enum for data values for Window::OnInvalidateData() of windows with class WC_GAME_OPTIONS.
frosch <frosch@openttd.org>
parents: 17809
diff changeset
1143 case GOID_NEWGRF_RESCANNED:
10793
0744d383a56b (svn r15126) -Feature: downloading content from a central server (content.openttd.org) where authors can upload they NewGRFS/AI etc. This should make joining servers that use only NewGRFs that are distributed via this system easier as the players can download the NewGRFs from in the game. It should also make it easier to see whether there are updates for NewGRFs and make the necessary updates.
rubidium <rubidium@openttd.org>
parents: 10145
diff changeset
1144 /* Search the list for items that are now found and mark them as such. */
15423
fa1322ffb258 (svn r20066) -Fix: When rescanning NewGRFs resp. after content download also check whether compatible grfs are available now.
frosch <frosch@openttd.org>
parents: 15400
diff changeset
1145 for (GRFConfig **l = &this->actives; *l != NULL; l = &(*l)->next) {
fa1322ffb258 (svn r20066) -Fix: When rescanning NewGRFs resp. after content download also check whether compatible grfs are available now.
frosch <frosch@openttd.org>
parents: 15400
diff changeset
1146 GRFConfig *c = *l;
fa1322ffb258 (svn r20066) -Fix: When rescanning NewGRFs resp. after content download also check whether compatible grfs are available now.
frosch <frosch@openttd.org>
parents: 15400
diff changeset
1147 bool compatible = HasBit(c->flags, GCF_COMPATIBLE);
fa1322ffb258 (svn r20066) -Fix: When rescanning NewGRFs resp. after content download also check whether compatible grfs are available now.
frosch <frosch@openttd.org>
parents: 15400
diff changeset
1148 if (c->status != GCS_NOT_FOUND && !compatible) continue;
10793
0744d383a56b (svn r15126) -Feature: downloading content from a central server (content.openttd.org) where authors can upload they NewGRFS/AI etc. This should make joining servers that use only NewGRFs that are distributed via this system easier as the players can download the NewGRFs from in the game. It should also make it easier to see whether there are updates for NewGRFs and make the necessary updates.
rubidium <rubidium@openttd.org>
parents: 10145
diff changeset
1149
16256
49226e68e209 (svn r20957) -Codechange: Add another parameter to FindGRFConfig() to define search restrictions.
frosch <frosch@openttd.org>
parents: 16250
diff changeset
1150 const GRFConfig *f = FindGRFConfig(c->ident.grfid, FGCM_EXACT, compatible ? c->original_md5sum : c->ident.md5sum);
17077
5a60038ce980 (svn r21814) -Fix/Add: Check GRF version from action 8, and disallow usage of GRFs with versions above 7.
frosch <frosch@openttd.org>
parents: 16614
diff changeset
1151 if (f == NULL || HasBit(f->flags, GCF_INVALID)) continue;
10793
0744d383a56b (svn r15126) -Feature: downloading content from a central server (content.openttd.org) where authors can upload they NewGRFS/AI etc. This should make joining servers that use only NewGRFs that are distributed via this system easier as the players can download the NewGRFs from in the game. It should also make it easier to see whether there are updates for NewGRFs and make the necessary updates.
rubidium <rubidium@openttd.org>
parents: 10145
diff changeset
1152
15588
04eb4c42c0a0 (svn r20248) -Codechange: use a copy-constructor instead of a separate function co clone GRFConfig/GRFError
yexo <yexo@openttd.org>
parents: 15579
diff changeset
1153 *l = new GRFConfig(*f);
15423
fa1322ffb258 (svn r20066) -Fix: When rescanning NewGRFs resp. after content download also check whether compatible grfs are available now.
frosch <frosch@openttd.org>
parents: 15400
diff changeset
1154 (*l)->next = c->next;
10793
0744d383a56b (svn r15126) -Feature: downloading content from a central server (content.openttd.org) where authors can upload they NewGRFS/AI etc. This should make joining servers that use only NewGRFs that are distributed via this system easier as the players can download the NewGRFs from in the game. It should also make it easier to see whether there are updates for NewGRFs and make the necessary updates.
rubidium <rubidium@openttd.org>
parents: 10145
diff changeset
1155
15423
fa1322ffb258 (svn r20066) -Fix: When rescanning NewGRFs resp. after content download also check whether compatible grfs are available now.
frosch <frosch@openttd.org>
parents: 15400
diff changeset
1156 if (active_sel == c) active_sel = *l;
fa1322ffb258 (svn r20066) -Fix: When rescanning NewGRFs resp. after content download also check whether compatible grfs are available now.
frosch <frosch@openttd.org>
parents: 15400
diff changeset
1157
fa1322ffb258 (svn r20066) -Fix: When rescanning NewGRFs resp. after content download also check whether compatible grfs are available now.
frosch <frosch@openttd.org>
parents: 15400
diff changeset
1158 delete c;
10793
0744d383a56b (svn r15126) -Feature: downloading content from a central server (content.openttd.org) where authors can upload they NewGRFS/AI etc. This should make joining servers that use only NewGRFs that are distributed via this system easier as the players can download the NewGRFs from in the game. It should also make it easier to see whether there are updates for NewGRFs and make the necessary updates.
rubidium <rubidium@openttd.org>
parents: 10145
diff changeset
1159 }
17826
03d75c842b87 (svn r22617) -Codechange: Add GameOptionsInvalidationData enum for data values for Window::OnInvalidateData() of windows with class WC_GAME_OPTIONS.
frosch <frosch@openttd.org>
parents: 17809
diff changeset
1160
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1161 this->avails.ForceRebuild();
15579
5f128be91f59 (svn r20239) -Doc: Give a common name to all fall throughs (FALL THROUGH).
terkhen <terkhen@openttd.org>
parents: 15563
diff changeset
1162 /* FALL THROUGH */
17826
03d75c842b87 (svn r22617) -Codechange: Add GameOptionsInvalidationData enum for data values for Window::OnInvalidateData() of windows with class WC_GAME_OPTIONS.
frosch <frosch@openttd.org>
parents: 17809
diff changeset
1163 case GOID_NEWGRF_LIST_EDITED:
13170
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1164 this->preset = -1;
15579
5f128be91f59 (svn r20239) -Doc: Give a common name to all fall throughs (FALL THROUGH).
terkhen <terkhen@openttd.org>
parents: 15563
diff changeset
1165 /* FALL THROUGH */
17826
03d75c842b87 (svn r22617) -Codechange: Add GameOptionsInvalidationData enum for data values for Window::OnInvalidateData() of windows with class WC_GAME_OPTIONS.
frosch <frosch@openttd.org>
parents: 17809
diff changeset
1166 case GOID_NEWGRF_PRESET_LOADED: {
03d75c842b87 (svn r22617) -Codechange: Add GameOptionsInvalidationData enum for data values for Window::OnInvalidateData() of windows with class WC_GAME_OPTIONS.
frosch <frosch@openttd.org>
parents: 17809
diff changeset
1167 /* Update scrollbars */
15201
071e920abcfb (svn r19830) -Codechange: Move variable declarations to their first use.
alberth <alberth@openttd.org>
parents: 15200
diff changeset
1168 int i = 0;
15203
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
1169 for (const GRFConfig *c = this->actives; c != NULL; c = c->next, i++) {}
13170
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1170
19237
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1171 this->vscroll->SetCount(i + 1); // Reserve empty space for drag and drop handling.
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1172
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
1173 if (this->avail_pos >= 0) this->vscroll2->ScrollTowards(this->avail_pos);
13170
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1174 break;
15201
071e920abcfb (svn r19830) -Codechange: Move variable declarations to their first use.
alberth <alberth@openttd.org>
parents: 15200
diff changeset
1175 }
10793
0744d383a56b (svn r15126) -Feature: downloading content from a central server (content.openttd.org) where authors can upload they NewGRFS/AI etc. This should make joining servers that use only NewGRFs that are distributed via this system easier as the players can download the NewGRFs from in the game. It should also make it easier to see whether there are updates for NewGRFs and make the necessary updates.
rubidium <rubidium@openttd.org>
parents: 10145
diff changeset
1176 }
13170
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1177
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1178 this->BuildAvailables();
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1179
13170
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1180 this->SetWidgetsDisabledState(!this->editable,
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1181 WID_NS_PRESET_LIST,
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1182 WID_NS_APPLY_CHANGES,
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1183 WID_NS_TOGGLE_PALETTE,
13170
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1184 WIDGET_LIST_END
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1185 );
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1186 this->SetWidgetDisabledState(WID_NS_ADD, !this->editable || this->avail_sel == NULL || HasBit(this->avail_sel->flags, GCF_INVALID));
13170
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1187
15203
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
1188 bool disable_all = this->active_sel == NULL || !this->editable;
13170
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1189 this->SetWidgetsDisabledState(disable_all,
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1190 WID_NS_REMOVE,
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1191 WID_NS_MOVE_UP,
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1192 WID_NS_MOVE_DOWN,
13170
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1193 WIDGET_LIST_END
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1194 );
18342
d52fe213742a (svn r23178) -Feature [FS#4780]: in-game readme.txt readmer (LordAro)
rubidium <rubidium@openttd.org>
parents: 18192
diff changeset
1195
d52fe213742a (svn r23178) -Feature [FS#4780]: in-game readme.txt readmer (LordAro)
rubidium <rubidium@openttd.org>
parents: 18192
diff changeset
1196 const GRFConfig *c = (this->avail_sel == NULL) ? this->active_sel : this->avail_sel;
18413
e5c315e27c0a (svn r23249) -Feature: Also allow viewing of the other two textfiles supplied by BaNaNaS tars, i.e. changelog and license.
frosch <frosch@openttd.org>
parents: 18412
diff changeset
1197 for (TextfileType tft = TFT_BEGIN; tft < TFT_END; tft++) {
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1198 this->SetWidgetDisabledState(WID_NS_NEWGRF_TEXTFILE + tft, c == NULL || c->GetTextfile(tft) == NULL);
18413
e5c315e27c0a (svn r23249) -Feature: Also allow viewing of the other two textfiles supplied by BaNaNaS tars, i.e. changelog and license.
frosch <frosch@openttd.org>
parents: 18412
diff changeset
1199 }
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1200 this->SetWidgetDisabledState(WID_NS_OPEN_URL, c == NULL || StrEmpty(c->GetURL()));
18342
d52fe213742a (svn r23178) -Feature [FS#4780]: in-game readme.txt readmer (LordAro)
rubidium <rubidium@openttd.org>
parents: 18192
diff changeset
1201
18911
e48659f8d5c4 (svn r23760) -Feature: Allow readonly display of NewGRF parameters, if GRF list may not be edited.
frosch <frosch@openttd.org>
parents: 18908
diff changeset
1202 this->SetWidgetDisabledState(WID_NS_SET_PARAMETERS, !this->show_params || this->active_sel == NULL || this->active_sel->num_valid_params == 0);
e48659f8d5c4 (svn r23760) -Feature: Allow readonly display of NewGRF parameters, if GRF list may not be edited.
frosch <frosch@openttd.org>
parents: 18908
diff changeset
1203 this->SetWidgetDisabledState(WID_NS_VIEW_PARAMETERS, !this->show_params || this->active_sel == NULL || this->active_sel->num_valid_params == 0);
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1204 this->SetWidgetDisabledState(WID_NS_TOGGLE_PALETTE, disable_all);
13170
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1205
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1206 if (!disable_all) {
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1207 /* All widgets are now enabled, so disable widgets we can't use */
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1208 if (this->active_sel == this->actives) this->DisableWidget(WID_NS_MOVE_UP);
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1209 if (this->active_sel->next == NULL) this->DisableWidget(WID_NS_MOVE_DOWN);
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1210 if (this->active_sel->IsOpenTTDBaseGRF()) this->DisableWidget(WID_NS_REMOVE);
13170
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1211 }
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1212
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1213 this->SetWidgetDisabledState(WID_NS_PRESET_DELETE, this->preset == -1);
13170
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1214
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1215 bool has_missing = false;
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1216 bool has_compatible = false;
15203
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
1217 for (const GRFConfig *c = this->actives; !has_missing && c != NULL; c = c->next) {
13170
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1218 has_missing |= c->status == GCS_NOT_FOUND;
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1219 has_compatible |= HasBit(c->flags, GCF_COMPATIBLE);
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1220 }
19919
2a12d5271d09 (svn r24853) -Fix: Extend widget data member to 32 bits so that sprite IDs >= 2^16 can be used.
peter1138 <peter1138@openttd.org>
parents: 19868
diff changeset
1221 uint32 widget_data;
16394
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1222 StringID tool_tip;
13170
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1223 if (has_missing || has_compatible) {
16394
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1224 widget_data = STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON;
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1225 tool_tip = STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP;
13170
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1226 } else {
16394
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1227 widget_data = STR_INTRO_ONLINE_CONTENT;
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1228 tool_tip = STR_INTRO_TOOLTIP_ONLINE_CONTENT;
13170
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1229 }
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1230 this->GetWidget<NWidgetCore>(WID_NS_CONTENT_DOWNLOAD)->widget_data = widget_data;
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1231 this->GetWidget<NWidgetCore>(WID_NS_CONTENT_DOWNLOAD)->tool_tip = tool_tip;
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1232 this->GetWidget<NWidgetCore>(WID_NS_CONTENT_DOWNLOAD2)->widget_data = widget_data;
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1233 this->GetWidget<NWidgetCore>(WID_NS_CONTENT_DOWNLOAD2)->tool_tip = tool_tip;
16394
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1234
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1235 this->SetWidgetDisabledState(WID_NS_PRESET_SAVE, has_missing);
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1236 }
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1237
20693
2b19f1e6c882 -Codechange: Pass proper Unicode UCS-4 characters instead of just UCS-2 to the window key press handlers.
Michael Lutz <michi@icosahedron.de>
parents: 20593
diff changeset
1238 virtual EventState OnKeyPress(WChar key, uint16 keycode)
15209
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1239 {
16393
b7cc33056746 (svn r21109) -Add: Don't display available newgrfs when the newgrf list is not editable.
alberth <alberth@openttd.org>
parents: 16392
diff changeset
1240 if (!this->editable) return ES_NOT_HANDLED;
b7cc33056746 (svn r21109) -Add: Don't display available newgrfs when the newgrf list is not editable.
alberth <alberth@openttd.org>
parents: 16392
diff changeset
1241
15209
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1242 switch (keycode) {
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1243 case WKC_UP:
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1244 /* scroll up by one */
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1245 if (this->avail_pos > 0) this->avail_pos--;
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1246 break;
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1247
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1248 case WKC_DOWN:
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1249 /* scroll down by one */
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1250 if (this->avail_pos < (int)this->avails.Length() - 1) this->avail_pos++;
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1251 break;
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1252
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1253 case WKC_PAGEUP:
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1254 /* scroll up a page */
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
1255 this->avail_pos = (this->avail_pos < this->vscroll2->GetCapacity()) ? 0 : this->avail_pos - this->vscroll2->GetCapacity();
15209
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1256 break;
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1257
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1258 case WKC_PAGEDOWN:
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1259 /* scroll down a page */
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
1260 this->avail_pos = min(this->avail_pos + this->vscroll2->GetCapacity(), (int)this->avails.Length() - 1);
15209
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1261 break;
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1262
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1263 case WKC_HOME:
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1264 /* jump to beginning */
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1265 this->avail_pos = 0;
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1266 break;
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1267
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1268 case WKC_END:
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1269 /* jump to end */
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1270 this->avail_pos = this->avails.Length() - 1;
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1271 break;
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1272
19800
b43322410b60 (svn r24733) -Codechange: Move handling of editbox keys to window class.
frosch <frosch@openttd.org>
parents: 19796
diff changeset
1273 default:
b43322410b60 (svn r24733) -Codechange: Move handling of editbox keys to window class.
frosch <frosch@openttd.org>
parents: 19796
diff changeset
1274 return ES_NOT_HANDLED;
15209
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1275 }
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1276
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1277 if (this->avails.Length() == 0) this->avail_pos = -1;
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1278 if (this->avail_pos >= 0) {
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1279 this->avail_sel = this->avails[this->avail_pos];
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
1280 this->vscroll2->ScrollTowards(this->avail_pos);
15209
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1281 this->InvalidateData(0);
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1282 }
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1283
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1284 return ES_HANDLED;
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1285 }
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1286
19801
b9d951089320 (svn r24734) -Codechange: Move QueryStringBaseWindow::OnOSKInput to Window::OnEditboxChanged.
frosch <frosch@openttd.org>
parents: 19800
diff changeset
1287 virtual void OnEditboxChanged(int wid)
15209
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1288 {
16393
b7cc33056746 (svn r21109) -Add: Don't display available newgrfs when the newgrf list is not editable.
alberth <alberth@openttd.org>
parents: 16392
diff changeset
1289 if (!this->editable) return;
b7cc33056746 (svn r21109) -Add: Don't display available newgrfs when the newgrf list is not editable.
alberth <alberth@openttd.org>
parents: 16392
diff changeset
1290
19809
4df2993a99a6 (svn r24742) -Codechange: Remove QueryStringBaseWindow and store QueryStrings per widget instead.
frosch <frosch@openttd.org>
parents: 19807
diff changeset
1291 string_filter.SetFilterTerm(this->filter_editbox.text.buf);
19434
24df8a97401e (svn r24337) -Feature: Allow filtering for multiple words (separated by whitespace resp. quoted) in the sign list, content- and NewGRF-guis.
frosch <frosch@openttd.org>
parents: 19421
diff changeset
1292 this->avails.SetFilterState(!string_filter.IsEmpty());
15209
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1293 this->avails.ForceRebuild();
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1294 this->InvalidateData(0);
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1295 }
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1296
19237
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1297 virtual void OnDragDrop(Point pt, int widget)
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1298 {
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1299 if (!this->editable) return;
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1300
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1301 if (widget == WID_NS_FILE_LIST) {
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1302 if (this->active_sel != NULL) {
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1303 /* Get pointer to the selected file in the active list. */
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1304 int from_pos = 0;
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1305 GRFConfig **from_prev;
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1306 for (from_prev = &this->actives; *from_prev != this->active_sel; from_prev = &(*from_prev)->next, from_pos++) {}
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1307
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1308 /* Gets the drag-and-drop destination offset. Ignore the last dummy line. */
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1309 int to_pos = min(this->vscroll->GetScrolledRowFromWidget(pt.y, this, WID_NS_FILE_LIST), this->vscroll->GetCount() - 2);
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1310 if (to_pos != from_pos) { // Don't move NewGRF file over itself.
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1311 /* Get pointer to destination position. */
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1312 GRFConfig **to_prev = &this->actives;
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1313 for (int i = from_pos < to_pos ? -1 : 0; *to_prev != NULL && i < to_pos; to_prev = &(*to_prev)->next, i++) {}
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1314
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1315 /* Detach NewGRF file from its original position. */
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1316 *from_prev = this->active_sel->next;
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1317
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1318 /* Attach NewGRF file to its new position. */
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1319 this->active_sel->next = *to_prev;
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1320 *to_prev = this->active_sel;
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1321
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1322 this->vscroll->ScrollTowards(to_pos);
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1323 this->preset = -1;
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1324 this->InvalidateData();
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1325 }
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1326 } else if (this->avail_sel != NULL) {
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1327 int to_pos = min(this->vscroll->GetScrolledRowFromWidget(pt.y, this, WID_NS_FILE_LIST), this->vscroll->GetCount() - 1);
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1328 this->AddGRFToActive(to_pos);
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1329 }
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1330 } else if (widget == WID_NS_AVAIL_LIST && this->active_sel != NULL) {
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1331 /* Remove active NewGRF file by dragging it over available list. */
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1332 Point dummy = {-1, -1};
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1333 this->OnClick(dummy, WID_NS_REMOVE, 1);
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1334 }
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1335
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1336 ResetObjectToPlace();
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1337
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1338 if (this->active_over != -1) {
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1339 /* End of drag-and-drop, hide dragged destination highlight. */
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1340 this->SetWidgetDirty(this->active_over == -2 ? WID_NS_AVAIL_LIST : WID_NS_FILE_LIST);
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1341 this->active_over = -1;
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1342 }
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1343 }
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1344
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1345 virtual void OnMouseDrag(Point pt, int widget)
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1346 {
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1347 if (!this->editable) return;
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1348
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1349 if (widget == WID_NS_FILE_LIST && (this->active_sel != NULL || this->avail_sel != NULL)) {
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1350 /* An NewGRF file is dragged over the active list. */
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1351 int to_pos = this->vscroll->GetScrolledRowFromWidget(pt.y, this, WID_NS_FILE_LIST);
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1352 /* Skip the last dummy line if the source is from the active list. */
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1353 to_pos = min(to_pos, this->vscroll->GetCount() - (this->active_sel != NULL ? 2 : 1));
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1354
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1355 if (to_pos != this->active_over) {
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1356 this->active_over = to_pos;
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1357 this->SetWidgetDirty(WID_NS_FILE_LIST);
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1358 }
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1359 } else if (widget == WID_NS_AVAIL_LIST && this->active_sel != NULL) {
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1360 this->active_over = -2;
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1361 this->SetWidgetDirty(WID_NS_AVAIL_LIST);
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1362 } else if (this->active_over != -1) {
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1363 this->SetWidgetDirty(this->active_over == -2 ? WID_NS_AVAIL_LIST : WID_NS_FILE_LIST);
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1364 this->active_over = -1;
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1365 }
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1366 }
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1367
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1368 private:
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1369 /** Sort grfs by name. */
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1370 static int CDECL NameSorter(const GRFConfig * const *a, const GRFConfig * const *b)
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1371 {
20050
f8312ae70bc6 (svn r24983) -Change: Apply the same name sorting rules to content and NewGRF list as for the server list.
frosch <frosch@openttd.org>
parents: 20000
diff changeset
1372 int i = strnatcmp((*a)->GetName(), (*b)->GetName(), true); // Sort by name (natural sorting).
15599
146255899304 (svn r20259) -Add: allow NewGRFs to specify their version and use that to hide old NewGRFs / to choose the newest when loading compatible NewGRFs
rubidium <rubidium@openttd.org>
parents: 15598
diff changeset
1373 if (i != 0) return i;
146255899304 (svn r20259) -Add: allow NewGRFs to specify their version and use that to hide old NewGRFs / to choose the newest when loading compatible NewGRFs
rubidium <rubidium@openttd.org>
parents: 15598
diff changeset
1374
146255899304 (svn r20259) -Add: allow NewGRFs to specify their version and use that to hide old NewGRFs / to choose the newest when loading compatible NewGRFs
rubidium <rubidium@openttd.org>
parents: 15598
diff changeset
1375 i = (*a)->version - (*b)->version;
146255899304 (svn r20259) -Add: allow NewGRFs to specify their version and use that to hide old NewGRFs / to choose the newest when loading compatible NewGRFs
rubidium <rubidium@openttd.org>
parents: 15598
diff changeset
1376 if (i != 0) return i;
146255899304 (svn r20259) -Add: allow NewGRFs to specify their version and use that to hide old NewGRFs / to choose the newest when loading compatible NewGRFs
rubidium <rubidium@openttd.org>
parents: 15598
diff changeset
1377
146255899304 (svn r20259) -Add: allow NewGRFs to specify their version and use that to hide old NewGRFs / to choose the newest when loading compatible NewGRFs
rubidium <rubidium@openttd.org>
parents: 15598
diff changeset
1378 return memcmp((*a)->ident.md5sum, (*b)->ident.md5sum, lengthof((*b)->ident.md5sum));
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1379 }
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1380
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1381 /** Filter grfs by tags/name */
19434
24df8a97401e (svn r24337) -Feature: Allow filtering for multiple words (separated by whitespace resp. quoted) in the sign list, content- and NewGRF-guis.
frosch <frosch@openttd.org>
parents: 19421
diff changeset
1382 static bool CDECL TagNameFilter(const GRFConfig * const *a, StringFilter &filter)
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1383 {
19434
24df8a97401e (svn r24337) -Feature: Allow filtering for multiple words (separated by whitespace resp. quoted) in the sign list, content- and NewGRF-guis.
frosch <frosch@openttd.org>
parents: 19421
diff changeset
1384 filter.ResetState();
24df8a97401e (svn r24337) -Feature: Allow filtering for multiple words (separated by whitespace resp. quoted) in the sign list, content- and NewGRF-guis.
frosch <frosch@openttd.org>
parents: 19421
diff changeset
1385 filter.AddLine((*a)->GetName());
24df8a97401e (svn r24337) -Feature: Allow filtering for multiple words (separated by whitespace resp. quoted) in the sign list, content- and NewGRF-guis.
frosch <frosch@openttd.org>
parents: 19421
diff changeset
1386 filter.AddLine((*a)->filename);
24df8a97401e (svn r24337) -Feature: Allow filtering for multiple words (separated by whitespace resp. quoted) in the sign list, content- and NewGRF-guis.
frosch <frosch@openttd.org>
parents: 19421
diff changeset
1387 filter.AddLine((*a)->GetDescription());
24df8a97401e (svn r24337) -Feature: Allow filtering for multiple words (separated by whitespace resp. quoted) in the sign list, content- and NewGRF-guis.
frosch <frosch@openttd.org>
parents: 19421
diff changeset
1388 return filter.GetState();;
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1389 }
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1390
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1391 void BuildAvailables()
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1392 {
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1393 if (!this->avails.NeedRebuild()) return;
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1394
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1395 this->avails.Clear();
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1396
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1397 for (const GRFConfig *c = _all_grfs; c != NULL; c = c->next) {
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1398 bool found = false;
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1399 for (const GRFConfig *grf = this->actives; grf != NULL && !found; grf = grf->next) found = grf->ident.HasGrfIdentifier(c->ident.grfid, c->ident.md5sum);
15599
146255899304 (svn r20259) -Add: allow NewGRFs to specify their version and use that to hide old NewGRFs / to choose the newest when loading compatible NewGRFs
rubidium <rubidium@openttd.org>
parents: 15598
diff changeset
1400 if (found) continue;
146255899304 (svn r20259) -Add: allow NewGRFs to specify their version and use that to hide old NewGRFs / to choose the newest when loading compatible NewGRFs
rubidium <rubidium@openttd.org>
parents: 15598
diff changeset
1401
146255899304 (svn r20259) -Add: allow NewGRFs to specify their version and use that to hide old NewGRFs / to choose the newest when loading compatible NewGRFs
rubidium <rubidium@openttd.org>
parents: 15598
diff changeset
1402 if (_settings_client.gui.newgrf_show_old_versions) {
146255899304 (svn r20259) -Add: allow NewGRFs to specify their version and use that to hide old NewGRFs / to choose the newest when loading compatible NewGRFs
rubidium <rubidium@openttd.org>
parents: 15598
diff changeset
1403 *this->avails.Append() = c;
146255899304 (svn r20259) -Add: allow NewGRFs to specify their version and use that to hide old NewGRFs / to choose the newest when loading compatible NewGRFs
rubidium <rubidium@openttd.org>
parents: 15598
diff changeset
1404 } else {
17077
5a60038ce980 (svn r21814) -Fix/Add: Check GRF version from action 8, and disallow usage of GRFs with versions above 7.
frosch <frosch@openttd.org>
parents: 16614
diff changeset
1405 const GRFConfig *best = FindGRFConfig(c->ident.grfid, HasBit(c->flags, GCF_INVALID) ? FGCM_NEWEST : FGCM_NEWEST_VALID);
15599
146255899304 (svn r20259) -Add: allow NewGRFs to specify their version and use that to hide old NewGRFs / to choose the newest when loading compatible NewGRFs
rubidium <rubidium@openttd.org>
parents: 15598
diff changeset
1406 /*
146255899304 (svn r20259) -Add: allow NewGRFs to specify their version and use that to hide old NewGRFs / to choose the newest when loading compatible NewGRFs
rubidium <rubidium@openttd.org>
parents: 15598
diff changeset
1407 * If the best version is 0, then all NewGRF with this GRF ID
19843
9a8968c733ba (svn r24776) -Doc: Typo fixes, additions, and additional dots collected from various sources (including Eagle_rainbow, MinchinWeb)
alberth <alberth@openttd.org>
parents: 19810
diff changeset
1408 * have version 0, so for backward compatibility reasons we
15599
146255899304 (svn r20259) -Add: allow NewGRFs to specify their version and use that to hide old NewGRFs / to choose the newest when loading compatible NewGRFs
rubidium <rubidium@openttd.org>
parents: 15598
diff changeset
1409 * want to show them all.
146255899304 (svn r20259) -Add: allow NewGRFs to specify their version and use that to hide old NewGRFs / to choose the newest when loading compatible NewGRFs
rubidium <rubidium@openttd.org>
parents: 15598
diff changeset
1410 * If we are the best version, then we definitely want to
146255899304 (svn r20259) -Add: allow NewGRFs to specify their version and use that to hide old NewGRFs / to choose the newest when loading compatible NewGRFs
rubidium <rubidium@openttd.org>
parents: 15598
diff changeset
1411 * show that NewGRF!.
146255899304 (svn r20259) -Add: allow NewGRFs to specify their version and use that to hide old NewGRFs / to choose the newest when loading compatible NewGRFs
rubidium <rubidium@openttd.org>
parents: 15598
diff changeset
1412 */
146255899304 (svn r20259) -Add: allow NewGRFs to specify their version and use that to hide old NewGRFs / to choose the newest when loading compatible NewGRFs
rubidium <rubidium@openttd.org>
parents: 15598
diff changeset
1413 if (best->version == 0 || best->ident.HasGrfIdentifier(c->ident.grfid, c->ident.md5sum)) {
146255899304 (svn r20259) -Add: allow NewGRFs to specify their version and use that to hide old NewGRFs / to choose the newest when loading compatible NewGRFs
rubidium <rubidium@openttd.org>
parents: 15598
diff changeset
1414 *this->avails.Append() = c;
146255899304 (svn r20259) -Add: allow NewGRFs to specify their version and use that to hide old NewGRFs / to choose the newest when loading compatible NewGRFs
rubidium <rubidium@openttd.org>
parents: 15598
diff changeset
1415 }
146255899304 (svn r20259) -Add: allow NewGRFs to specify their version and use that to hide old NewGRFs / to choose the newest when loading compatible NewGRFs
rubidium <rubidium@openttd.org>
parents: 15598
diff changeset
1416 }
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1417 }
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1418
19434
24df8a97401e (svn r24337) -Feature: Allow filtering for multiple words (separated by whitespace resp. quoted) in the sign list, content- and NewGRF-guis.
frosch <frosch@openttd.org>
parents: 19421
diff changeset
1419 this->avails.Filter(this->string_filter);
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1420 this->avails.Compact();
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1421 this->avails.RebuildDone();
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1422 this->avails.Sort();
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1423
15212
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
1424 if (this->avail_sel != NULL) {
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
1425 this->avail_pos = this->avails.FindIndex(this->avail_sel);
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
1426 if (this->avail_pos < 0) this->avail_sel = NULL;
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
1427 }
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
1428
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
1429 this->vscroll2->SetCount(this->avails.Length()); // Update the scrollbar
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1430 }
19237
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1431
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1432 /**
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1433 * Insert a GRF into the active list.
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1434 * @param ins_pos Insert GRF at this position.
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1435 * @return True if the GRF was successfully added.
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1436 */
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1437 bool AddGRFToActive(int ins_pos = -1)
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1438 {
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1439 if (this->avail_sel == NULL || !this->editable || HasBit(this->avail_sel->flags, GCF_INVALID)) return false;
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1440
20000
6c78ce03b517 (svn r24932) -Fix [FS#5158]: Prevent more NewGRFs being selected than is possible to load.
peter1138 <peter1138@openttd.org>
parents: 19968
diff changeset
1441 int count = 0;
19237
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1442 GRFConfig **entry = NULL;
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1443 GRFConfig **list;
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1444 /* Find last entry in the list, checking for duplicate grfid on the way */
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1445 for (list = &this->actives; *list != NULL; list = &(*list)->next, ins_pos--) {
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1446 if (ins_pos == 0) entry = list; // Insert position? Save.
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1447 if ((*list)->ident.grfid == this->avail_sel->ident.grfid) {
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1448 ShowErrorMessage(STR_NEWGRF_DUPLICATE_GRFID, INVALID_STRING_ID, WL_INFO);
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1449 return false;
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1450 }
20000
6c78ce03b517 (svn r24932) -Fix [FS#5158]: Prevent more NewGRFs being selected than is possible to load.
peter1138 <peter1138@openttd.org>
parents: 19968
diff changeset
1451 count++;
19237
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1452 }
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1453 if (entry == NULL) entry = list;
20000
6c78ce03b517 (svn r24932) -Fix [FS#5158]: Prevent more NewGRFs being selected than is possible to load.
peter1138 <peter1138@openttd.org>
parents: 19968
diff changeset
1454 if (count >= MAX_NEWGRFS) {
6c78ce03b517 (svn r24932) -Fix [FS#5158]: Prevent more NewGRFs being selected than is possible to load.
peter1138 <peter1138@openttd.org>
parents: 19968
diff changeset
1455 ShowErrorMessage(STR_NEWGRF_TOO_MANY_NEWGRFS, INVALID_STRING_ID, WL_INFO);
6c78ce03b517 (svn r24932) -Fix [FS#5158]: Prevent more NewGRFs being selected than is possible to load.
peter1138 <peter1138@openttd.org>
parents: 19968
diff changeset
1456 return false;
6c78ce03b517 (svn r24932) -Fix [FS#5158]: Prevent more NewGRFs being selected than is possible to load.
peter1138 <peter1138@openttd.org>
parents: 19968
diff changeset
1457 }
19237
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1458
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1459 GRFConfig *c = new GRFConfig(*this->avail_sel); // Copy GRF details from scanned list.
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1460 c->SetParameterDefaults();
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1461
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1462 /* Insert GRF config to configuration list. */
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1463 c->next = *entry;
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1464 *entry = c;
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1465
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1466 /* Select next (or previous, if last one) item in the list. */
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1467 int new_pos = this->avail_pos + 1;
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1468 if (new_pos >= (int)this->avails.Length()) new_pos = this->avail_pos - 1;
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1469 this->avail_pos = new_pos;
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1470 if (new_pos >= 0) this->avail_sel = this->avails[new_pos];
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1471
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1472 this->avails.ForceRebuild();
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1473 this->InvalidateData(GOID_NEWGRF_LIST_EDITED);
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1474 return true;
ac215e4838cf (svn r24126) -Feature [FS#3854]: Drag and drop support for the NewGRF list window. (Based on patch by sbr)
michi_cc <michi_cc@openttd.org>
parents: 19079
diff changeset
1475 }
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1476 };
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1477
18618
690f883cee0e (svn r23465) -Feature [FS#4827]: add 'find missing content online' button to 'load savegame' and 'find network game' windows
yexo <yexo@openttd.org>
parents: 18444
diff changeset
1478 #if defined(ENABLE_NETWORK)
690f883cee0e (svn r23465) -Feature [FS#4827]: add 'find missing content online' button to 'load savegame' and 'find network game' windows
yexo <yexo@openttd.org>
parents: 18444
diff changeset
1479 /**
690f883cee0e (svn r23465) -Feature [FS#4827]: add 'find missing content online' button to 'load savegame' and 'find network game' windows
yexo <yexo@openttd.org>
parents: 18444
diff changeset
1480 * Show the content list window with all missing grfs from the given list.
19968
0dba7f49118c (svn r24900) -Fix [FS#5389]: Comments with typos (most fixes supplied by Eagle_rainbow)
planetmaker <planetmaker@openttd.org>
parents: 19919
diff changeset
1481 * @param list The list of grfs to check for missing / not exactly matching ones.
18618
690f883cee0e (svn r23465) -Feature [FS#4827]: add 'find missing content online' button to 'load savegame' and 'find network game' windows
yexo <yexo@openttd.org>
parents: 18444
diff changeset
1482 */
690f883cee0e (svn r23465) -Feature [FS#4827]: add 'find missing content online' button to 'load savegame' and 'find network game' windows
yexo <yexo@openttd.org>
parents: 18444
diff changeset
1483 void ShowMissingContentWindow(const GRFConfig *list)
690f883cee0e (svn r23465) -Feature [FS#4827]: add 'find missing content online' button to 'load savegame' and 'find network game' windows
yexo <yexo@openttd.org>
parents: 18444
diff changeset
1484 {
690f883cee0e (svn r23465) -Feature [FS#4827]: add 'find missing content online' button to 'load savegame' and 'find network game' windows
yexo <yexo@openttd.org>
parents: 18444
diff changeset
1485 /* Only show the things in the current list, or everything when nothing's selected */
690f883cee0e (svn r23465) -Feature [FS#4827]: add 'find missing content online' button to 'load savegame' and 'find network game' windows
yexo <yexo@openttd.org>
parents: 18444
diff changeset
1486 ContentVector cv;
690f883cee0e (svn r23465) -Feature [FS#4827]: add 'find missing content online' button to 'load savegame' and 'find network game' windows
yexo <yexo@openttd.org>
parents: 18444
diff changeset
1487 for (const GRFConfig *c = list; c != NULL; c = c->next) {
690f883cee0e (svn r23465) -Feature [FS#4827]: add 'find missing content online' button to 'load savegame' and 'find network game' windows
yexo <yexo@openttd.org>
parents: 18444
diff changeset
1488 if (c->status != GCS_NOT_FOUND && !HasBit(c->flags, GCF_COMPATIBLE)) continue;
690f883cee0e (svn r23465) -Feature [FS#4827]: add 'find missing content online' button to 'load savegame' and 'find network game' windows
yexo <yexo@openttd.org>
parents: 18444
diff changeset
1489
690f883cee0e (svn r23465) -Feature [FS#4827]: add 'find missing content online' button to 'load savegame' and 'find network game' windows
yexo <yexo@openttd.org>
parents: 18444
diff changeset
1490 ContentInfo *ci = new ContentInfo();
690f883cee0e (svn r23465) -Feature [FS#4827]: add 'find missing content online' button to 'load savegame' and 'find network game' windows
yexo <yexo@openttd.org>
parents: 18444
diff changeset
1491 ci->type = CONTENT_TYPE_NEWGRF;
690f883cee0e (svn r23465) -Feature [FS#4827]: add 'find missing content online' button to 'load savegame' and 'find network game' windows
yexo <yexo@openttd.org>
parents: 18444
diff changeset
1492 ci->state = ContentInfo::DOES_NOT_EXIST;
690f883cee0e (svn r23465) -Feature [FS#4827]: add 'find missing content online' button to 'load savegame' and 'find network game' windows
yexo <yexo@openttd.org>
parents: 18444
diff changeset
1493 ttd_strlcpy(ci->name, c->GetName(), lengthof(ci->name));
690f883cee0e (svn r23465) -Feature [FS#4827]: add 'find missing content online' button to 'load savegame' and 'find network game' windows
yexo <yexo@openttd.org>
parents: 18444
diff changeset
1494 ci->unique_id = BSWAP32(c->ident.grfid);
690f883cee0e (svn r23465) -Feature [FS#4827]: add 'find missing content online' button to 'load savegame' and 'find network game' windows
yexo <yexo@openttd.org>
parents: 18444
diff changeset
1495 memcpy(ci->md5sum, HasBit(c->flags, GCF_COMPATIBLE) ? c->original_md5sum : c->ident.md5sum, sizeof(ci->md5sum));
690f883cee0e (svn r23465) -Feature [FS#4827]: add 'find missing content online' button to 'load savegame' and 'find network game' windows
yexo <yexo@openttd.org>
parents: 18444
diff changeset
1496 *cv.Append() = ci;
690f883cee0e (svn r23465) -Feature [FS#4827]: add 'find missing content online' button to 'load savegame' and 'find network game' windows
yexo <yexo@openttd.org>
parents: 18444
diff changeset
1497 }
690f883cee0e (svn r23465) -Feature [FS#4827]: add 'find missing content online' button to 'load savegame' and 'find network game' windows
yexo <yexo@openttd.org>
parents: 18444
diff changeset
1498 ShowNetworkContentListWindow(cv.Length() == 0 ? NULL : &cv, CONTENT_TYPE_NEWGRF);
690f883cee0e (svn r23465) -Feature [FS#4827]: add 'find missing content online' button to 'load savegame' and 'find network game' windows
yexo <yexo@openttd.org>
parents: 18444
diff changeset
1499 }
690f883cee0e (svn r23465) -Feature [FS#4827]: add 'find missing content online' button to 'load savegame' and 'find network game' windows
yexo <yexo@openttd.org>
parents: 18444
diff changeset
1500 #endif
690f883cee0e (svn r23465) -Feature [FS#4827]: add 'find missing content online' button to 'load savegame' and 'find network game' windows
yexo <yexo@openttd.org>
parents: 18444
diff changeset
1501
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1502 Listing NewGRFWindow::last_sorting = {false, 0};
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1503 Filtering NewGRFWindow::last_filtering = {false, 0};
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1504
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1505 NewGRFWindow::GUIGRFConfigList::SortFunction * const NewGRFWindow::sorter_funcs[] = {
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1506 &NameSorter,
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1507 };
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1508
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1509 NewGRFWindow::GUIGRFConfigList::FilterFunction * const NewGRFWindow::filter_funcs[] = {
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1510 &TagNameFilter,
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1511 };
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1512
15620
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
1513 /**
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
1514 * Custom nested widget container for the NewGRF gui.
15216
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1515 * Depending on the space in the gui, it uses either
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1516 * - two column mode, put the #acs and the #avs underneath each other and the #info next to it, or
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1517 * - three column mode, put the #avs, #acs, and #info each in its own column.
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1518 */
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1519 class NWidgetNewGRFDisplay : public NWidgetContainer {
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1520 public:
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1521 static const uint INTER_LIST_SPACING; ///< Empty vertical space between both lists in the 2 column mode.
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1522 static const uint INTER_COLUMN_SPACING; ///< Empty horizontal space between two columns.
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1523 static const uint MAX_EXTRA_INFO_WIDTH; ///< Maximal additional width given to the panel.
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1524 static const uint MIN_EXTRA_FOR_3_COLUMNS; ///< Minimal additional width needed before switching to 3 columns.
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1525
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1526 NWidgetBase *avs; ///< Widget with the available grfs list and buttons.
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1527 NWidgetBase *acs; ///< Widget with the active grfs list and buttons.
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1528 NWidgetBase *inf; ///< Info panel.
16392
67f16153e351 (svn r21108) -Add: Copy the 'editable' flag of the newgrf window to its layout widget.
alberth <alberth@openttd.org>
parents: 16286
diff changeset
1529 bool editable; ///< Editable status of the parent NewGRF window (if \c false, drop all widgets that make the window editable).
15216
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1530
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1531 NWidgetNewGRFDisplay(NWidgetBase *avs, NWidgetBase *acs, NWidgetBase *inf) : NWidgetContainer(NWID_HORIZONTAL)
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1532 {
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1533 this->avs = avs;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1534 this->acs = acs;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1535 this->inf = inf;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1536
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1537 this->Add(this->avs);
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1538 this->Add(this->acs);
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1539 this->Add(this->inf);
16392
67f16153e351 (svn r21108) -Add: Copy the 'editable' flag of the newgrf window to its layout widget.
alberth <alberth@openttd.org>
parents: 16286
diff changeset
1540
67f16153e351 (svn r21108) -Add: Copy the 'editable' flag of the newgrf window to its layout widget.
alberth <alberth@openttd.org>
parents: 16286
diff changeset
1541 this->editable = true; // Temporary setting, 'real' value is set in SetupSmallestSize().
15216
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1542 }
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1543
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1544 virtual void SetupSmallestSize(Window *w, bool init_array)
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1545 {
16392
67f16153e351 (svn r21108) -Add: Copy the 'editable' flag of the newgrf window to its layout widget.
alberth <alberth@openttd.org>
parents: 16286
diff changeset
1546 /* Copy state flag from the window. */
67f16153e351 (svn r21108) -Add: Copy the 'editable' flag of the newgrf window to its layout widget.
alberth <alberth@openttd.org>
parents: 16286
diff changeset
1547 assert(dynamic_cast<NewGRFWindow *>(w) != NULL);
67f16153e351 (svn r21108) -Add: Copy the 'editable' flag of the newgrf window to its layout widget.
alberth <alberth@openttd.org>
parents: 16286
diff changeset
1548 NewGRFWindow *ngw = (NewGRFWindow *)w;
67f16153e351 (svn r21108) -Add: Copy the 'editable' flag of the newgrf window to its layout widget.
alberth <alberth@openttd.org>
parents: 16286
diff changeset
1549 this->editable = ngw->editable;
67f16153e351 (svn r21108) -Add: Copy the 'editable' flag of the newgrf window to its layout widget.
alberth <alberth@openttd.org>
parents: 16286
diff changeset
1550
15216
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1551 this->avs->SetupSmallestSize(w, init_array);
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1552 this->acs->SetupSmallestSize(w, init_array);
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1553 this->inf->SetupSmallestSize(w, init_array);
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1554
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1555 uint min_avs_width = this->avs->smallest_x + this->avs->padding_left + this->avs->padding_right;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1556 uint min_acs_width = this->acs->smallest_x + this->acs->padding_left + this->acs->padding_right;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1557 uint min_inf_width = this->inf->smallest_x + this->inf->padding_left + this->inf->padding_right;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1558
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1559 uint min_avs_height = this->avs->smallest_y + this->avs->padding_top + this->avs->padding_bottom;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1560 uint min_acs_height = this->acs->smallest_y + this->acs->padding_top + this->acs->padding_bottom;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1561 uint min_inf_height = this->inf->smallest_y + this->inf->padding_top + this->inf->padding_bottom;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1562
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1563 /* Smallest window is in two column mode. */
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1564 this->smallest_x = max(min_avs_width, min_acs_width) + INTER_COLUMN_SPACING + min_inf_width;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1565 this->smallest_y = max(min_inf_height, min_acs_height + INTER_LIST_SPACING + min_avs_height);
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1566
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1567 /* Filling. */
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1568 this->fill_x = LeastCommonMultiple(this->avs->fill_x, this->acs->fill_x);
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1569 if (this->inf->fill_x > 0 && (this->fill_x == 0 || this->fill_x > this->inf->fill_x)) this->fill_x = this->inf->fill_x;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1570
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1571 this->fill_y = this->avs->fill_y;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1572 if (this->acs->fill_y > 0 && (this->fill_y == 0 || this->fill_y > this->acs->fill_y)) this->fill_y = this->acs->fill_y;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1573 this->fill_y = LeastCommonMultiple(this->fill_y, this->inf->fill_y);
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1574
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1575 /* Resizing. */
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1576 this->resize_x = LeastCommonMultiple(this->avs->resize_x, this->acs->resize_x);
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1577 if (this->inf->resize_x > 0 && (this->resize_x == 0 || this->resize_x > this->inf->resize_x)) this->resize_x = this->inf->resize_x;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1578
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1579 this->resize_y = this->avs->resize_y;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1580 if (this->acs->resize_y > 0 && (this->resize_y == 0 || this->resize_y > this->acs->resize_y)) this->resize_y = this->acs->resize_y;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1581 this->resize_y = LeastCommonMultiple(this->resize_y, this->inf->resize_y);
18415
8abe19c16b0b (svn r23251) -Fix: 3-column view of NewGRF GUI had too much space for certain font sizes.
frosch <frosch@openttd.org>
parents: 18413
diff changeset
1582
8abe19c16b0b (svn r23251) -Fix: 3-column view of NewGRF GUI had too much space for certain font sizes.
frosch <frosch@openttd.org>
parents: 18413
diff changeset
1583 /* Make sure the height suits the 3 column (resp. not-editable) format; the 2 column format can easily fill space between the lists */
8abe19c16b0b (svn r23251) -Fix: 3-column view of NewGRF GUI had too much space for certain font sizes.
frosch <frosch@openttd.org>
parents: 18413
diff changeset
1584 this->smallest_y = ComputeMaxSize(min_acs_height, this->smallest_y + this->resize_y - 1, this->resize_y);
15216
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1585 }
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1586
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1587 virtual void AssignSizePosition(SizingType sizing, uint x, uint y, uint given_width, uint given_height, bool rtl)
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1588 {
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1589 this->StoreSizePosition(sizing, x, y, given_width, given_height);
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1590
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1591 uint min_avs_width = this->avs->smallest_x + this->avs->padding_left + this->avs->padding_right;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1592 uint min_acs_width = this->acs->smallest_x + this->acs->padding_left + this->acs->padding_right;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1593 uint min_inf_width = this->inf->smallest_x + this->inf->padding_left + this->inf->padding_right;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1594
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1595 uint min_list_width = max(min_avs_width, min_acs_width); // Smallest width of the lists such that they have equal width (incl padding).
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1596 uint avs_extra_width = min_list_width - min_avs_width; // Additional width needed for avs to reach min_list_width.
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1597 uint acs_extra_width = min_list_width - min_acs_width; // Additional width needed for acs to reach min_list_width.
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1598
19968
0dba7f49118c (svn r24900) -Fix [FS#5389]: Comments with typos (most fixes supplied by Eagle_rainbow)
planetmaker <planetmaker@openttd.org>
parents: 19919
diff changeset
1599 /* Use 2 or 3 columns? */
15216
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1600 uint min_three_columns = min_avs_width + min_acs_width + min_inf_width + 2 * INTER_COLUMN_SPACING;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1601 uint min_two_columns = min_list_width + min_inf_width + INTER_COLUMN_SPACING;
16393
b7cc33056746 (svn r21109) -Add: Don't display available newgrfs when the newgrf list is not editable.
alberth <alberth@openttd.org>
parents: 16392
diff changeset
1602 bool use_three_columns = this->editable && (min_three_columns + MIN_EXTRA_FOR_3_COLUMNS <= given_width);
15216
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1603
19968
0dba7f49118c (svn r24900) -Fix [FS#5389]: Comments with typos (most fixes supplied by Eagle_rainbow)
planetmaker <planetmaker@openttd.org>
parents: 19919
diff changeset
1604 /* Info panel is a separate column in both modes. Compute its width first. */
15216
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1605 uint extra_width, inf_width;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1606 if (use_three_columns) {
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1607 extra_width = given_width - min_three_columns;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1608 inf_width = min(MAX_EXTRA_INFO_WIDTH, extra_width / 2);
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1609 } else {
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1610 extra_width = given_width - min_two_columns;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1611 inf_width = min(MAX_EXTRA_INFO_WIDTH, extra_width / 2);
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1612 }
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1613 inf_width = ComputeMaxSize(this->inf->smallest_x, this->inf->smallest_x + inf_width, this->inf->GetHorizontalStepSize(sizing));
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1614 extra_width -= inf_width - this->inf->smallest_x;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1615
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1616 uint inf_height = ComputeMaxSize(this->inf->smallest_y, given_height, this->inf->GetVerticalStepSize(sizing));
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1617
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1618 if (use_three_columns) {
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1619 /* Three column display, first make both lists equally wide, then divide whatever is left between both lists.
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1620 * Only keep track of what avs gets, all other space goes to acs. */
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1621 uint avs_width = min(avs_extra_width, extra_width);
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1622 extra_width -= avs_width;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1623 extra_width -= min(acs_extra_width, extra_width);
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1624 avs_width += extra_width / 2;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1625
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1626 avs_width = ComputeMaxSize(this->avs->smallest_x, this->avs->smallest_x + avs_width, this->avs->GetHorizontalStepSize(sizing));
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1627
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1628 uint acs_width = given_width - // Remaining space, including horizontal padding.
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1629 inf_width - this->inf->padding_left - this->inf->padding_right -
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1630 avs_width - this->avs->padding_left - this->avs->padding_right - 2 * INTER_COLUMN_SPACING;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1631 acs_width = ComputeMaxSize(min_acs_width, acs_width, this->acs->GetHorizontalStepSize(sizing)) -
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1632 this->acs->padding_left - this->acs->padding_right;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1633
19968
0dba7f49118c (svn r24900) -Fix [FS#5389]: Comments with typos (most fixes supplied by Eagle_rainbow)
planetmaker <planetmaker@openttd.org>
parents: 19919
diff changeset
1634 /* Never use fill_y on these; the minimal size is chosen, so that the 3 column view looks nice */
18415
8abe19c16b0b (svn r23251) -Fix: 3-column view of NewGRF GUI had too much space for certain font sizes.
frosch <frosch@openttd.org>
parents: 18413
diff changeset
1635 uint avs_height = ComputeMaxSize(this->avs->smallest_y, given_height, this->avs->resize_y);
8abe19c16b0b (svn r23251) -Fix: 3-column view of NewGRF GUI had too much space for certain font sizes.
frosch <frosch@openttd.org>
parents: 18413
diff changeset
1636 uint acs_height = ComputeMaxSize(this->acs->smallest_y, given_height, this->acs->resize_y);
15216
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1637
19968
0dba7f49118c (svn r24900) -Fix [FS#5389]: Comments with typos (most fixes supplied by Eagle_rainbow)
planetmaker <planetmaker@openttd.org>
parents: 19919
diff changeset
1638 /* Assign size and position to the children. */
15216
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1639 if (rtl) {
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1640 x += this->inf->padding_left;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1641 this->inf->AssignSizePosition(sizing, x, y + this->inf->padding_top, inf_width, inf_height, rtl);
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1642 x += inf_width + this->inf->padding_right + INTER_COLUMN_SPACING;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1643 } else {
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1644 x += this->avs->padding_left;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1645 this->avs->AssignSizePosition(sizing, x, y + this->avs->padding_top, avs_width, avs_height, rtl);
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1646 x += avs_width + this->avs->padding_right + INTER_COLUMN_SPACING;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1647 }
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1648
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1649 x += this->acs->padding_left;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1650 this->acs->AssignSizePosition(sizing, x, y + this->acs->padding_top, acs_width, acs_height, rtl);
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1651 x += acs_width + this->acs->padding_right + INTER_COLUMN_SPACING;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1652
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1653 if (rtl) {
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1654 x += this->avs->padding_left;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1655 this->avs->AssignSizePosition(sizing, x, y + this->avs->padding_top, avs_width, avs_height, rtl);
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1656 } else {
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1657 x += this->inf->padding_left;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1658 this->inf->AssignSizePosition(sizing, x, y + this->inf->padding_top, inf_width, inf_height, rtl);
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1659 }
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1660 } else {
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1661 /* Two columns, all space in extra_width goes to both lists. Since the lists are underneath each other,
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1662 * the column is min_list_width wide at least. */
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1663 uint avs_width = ComputeMaxSize(this->avs->smallest_x, this->avs->smallest_x + avs_extra_width + extra_width,
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1664 this->avs->GetHorizontalStepSize(sizing));
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1665 uint acs_width = ComputeMaxSize(this->acs->smallest_x, this->acs->smallest_x + acs_extra_width + extra_width,
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1666 this->acs->GetHorizontalStepSize(sizing));
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1667
16393
b7cc33056746 (svn r21109) -Add: Don't display available newgrfs when the newgrf list is not editable.
alberth <alberth@openttd.org>
parents: 16392
diff changeset
1668 uint min_avs_height = (!this->editable) ? 0 : this->avs->smallest_y + this->avs->padding_top + this->avs->padding_bottom + INTER_LIST_SPACING;
15216
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1669 uint min_acs_height = this->acs->smallest_y + this->acs->padding_top + this->acs->padding_bottom;
16393
b7cc33056746 (svn r21109) -Add: Don't display available newgrfs when the newgrf list is not editable.
alberth <alberth@openttd.org>
parents: 16392
diff changeset
1670 uint extra_height = given_height - min_acs_height - min_avs_height;
15216
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1671
18415
8abe19c16b0b (svn r23251) -Fix: 3-column view of NewGRF GUI had too much space for certain font sizes.
frosch <frosch@openttd.org>
parents: 18413
diff changeset
1672 /* Never use fill_y on these; instead use the INTER_LIST_SPACING as filler */
8abe19c16b0b (svn r23251) -Fix: 3-column view of NewGRF GUI had too much space for certain font sizes.
frosch <frosch@openttd.org>
parents: 18413
diff changeset
1673 uint avs_height = ComputeMaxSize(this->avs->smallest_y, this->avs->smallest_y + extra_height / 2, this->avs->resize_y);
16393
b7cc33056746 (svn r21109) -Add: Don't display available newgrfs when the newgrf list is not editable.
alberth <alberth@openttd.org>
parents: 16392
diff changeset
1674 if (this->editable) extra_height -= avs_height - this->avs->smallest_y;
18415
8abe19c16b0b (svn r23251) -Fix: 3-column view of NewGRF GUI had too much space for certain font sizes.
frosch <frosch@openttd.org>
parents: 18413
diff changeset
1675 uint acs_height = ComputeMaxSize(this->acs->smallest_y, this->acs->smallest_y + extra_height, this->acs->resize_y);
15216
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1676
19968
0dba7f49118c (svn r24900) -Fix [FS#5389]: Comments with typos (most fixes supplied by Eagle_rainbow)
planetmaker <planetmaker@openttd.org>
parents: 19919
diff changeset
1677 /* Assign size and position to the children. */
15216
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1678 if (rtl) {
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1679 x += this->inf->padding_left;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1680 this->inf->AssignSizePosition(sizing, x, y + this->inf->padding_top, inf_width, inf_height, rtl);
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1681 x += inf_width + this->inf->padding_right + INTER_COLUMN_SPACING;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1682
18415
8abe19c16b0b (svn r23251) -Fix: 3-column view of NewGRF GUI had too much space for certain font sizes.
frosch <frosch@openttd.org>
parents: 18413
diff changeset
1683 this->acs->AssignSizePosition(sizing, x + this->acs->padding_left, y + this->acs->padding_top, acs_width, acs_height, rtl);
16393
b7cc33056746 (svn r21109) -Add: Don't display available newgrfs when the newgrf list is not editable.
alberth <alberth@openttd.org>
parents: 16392
diff changeset
1684 if (this->editable) {
18415
8abe19c16b0b (svn r23251) -Fix: 3-column view of NewGRF GUI had too much space for certain font sizes.
frosch <frosch@openttd.org>
parents: 18413
diff changeset
1685 this->avs->AssignSizePosition(sizing, x + this->avs->padding_left, y + given_height - avs_height - this->avs->padding_bottom, avs_width, avs_height, rtl);
16393
b7cc33056746 (svn r21109) -Add: Don't display available newgrfs when the newgrf list is not editable.
alberth <alberth@openttd.org>
parents: 16392
diff changeset
1686 } else {
b7cc33056746 (svn r21109) -Add: Don't display available newgrfs when the newgrf list is not editable.
alberth <alberth@openttd.org>
parents: 16392
diff changeset
1687 this->avs->AssignSizePosition(sizing, 0, 0, this->avs->smallest_x, this->avs->smallest_y, rtl);
b7cc33056746 (svn r21109) -Add: Don't display available newgrfs when the newgrf list is not editable.
alberth <alberth@openttd.org>
parents: 16392
diff changeset
1688 }
15216
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1689 } else {
18415
8abe19c16b0b (svn r23251) -Fix: 3-column view of NewGRF GUI had too much space for certain font sizes.
frosch <frosch@openttd.org>
parents: 18413
diff changeset
1690 this->acs->AssignSizePosition(sizing, x + this->acs->padding_left, y + this->acs->padding_top, acs_width, acs_height, rtl);
16393
b7cc33056746 (svn r21109) -Add: Don't display available newgrfs when the newgrf list is not editable.
alberth <alberth@openttd.org>
parents: 16392
diff changeset
1691 if (this->editable) {
18415
8abe19c16b0b (svn r23251) -Fix: 3-column view of NewGRF GUI had too much space for certain font sizes.
frosch <frosch@openttd.org>
parents: 18413
diff changeset
1692 this->avs->AssignSizePosition(sizing, x + this->avs->padding_left, y + given_height - avs_height - this->avs->padding_bottom, avs_width, avs_height, rtl);
16393
b7cc33056746 (svn r21109) -Add: Don't display available newgrfs when the newgrf list is not editable.
alberth <alberth@openttd.org>
parents: 16392
diff changeset
1693 } else {
b7cc33056746 (svn r21109) -Add: Don't display available newgrfs when the newgrf list is not editable.
alberth <alberth@openttd.org>
parents: 16392
diff changeset
1694 this->avs->AssignSizePosition(sizing, 0, 0, this->avs->smallest_x, this->avs->smallest_y, rtl);
b7cc33056746 (svn r21109) -Add: Don't display available newgrfs when the newgrf list is not editable.
alberth <alberth@openttd.org>
parents: 16392
diff changeset
1695 }
b7cc33056746 (svn r21109) -Add: Don't display available newgrfs when the newgrf list is not editable.
alberth <alberth@openttd.org>
parents: 16392
diff changeset
1696 uint dx = this->acs->current_x + this->acs->padding_left + this->acs->padding_right;
b7cc33056746 (svn r21109) -Add: Don't display available newgrfs when the newgrf list is not editable.
alberth <alberth@openttd.org>
parents: 16392
diff changeset
1697 if (this->editable) {
b7cc33056746 (svn r21109) -Add: Don't display available newgrfs when the newgrf list is not editable.
alberth <alberth@openttd.org>
parents: 16392
diff changeset
1698 dx = max(dx, this->avs->current_x + this->avs->padding_left + this->avs->padding_right);
b7cc33056746 (svn r21109) -Add: Don't display available newgrfs when the newgrf list is not editable.
alberth <alberth@openttd.org>
parents: 16392
diff changeset
1699 }
b7cc33056746 (svn r21109) -Add: Don't display available newgrfs when the newgrf list is not editable.
alberth <alberth@openttd.org>
parents: 16392
diff changeset
1700 x += dx + INTER_COLUMN_SPACING + this->inf->padding_left;
15216
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1701 this->inf->AssignSizePosition(sizing, x, y + this->inf->padding_top, inf_width, inf_height, rtl);
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1702 }
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1703 }
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1704 }
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1705
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1706 virtual NWidgetCore *GetWidgetFromPos(int x, int y)
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1707 {
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1708 if (!IsInsideBS(x, this->pos_x, this->current_x) || !IsInsideBS(y, this->pos_y, this->current_y)) return NULL;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1709
16393
b7cc33056746 (svn r21109) -Add: Don't display available newgrfs when the newgrf list is not editable.
alberth <alberth@openttd.org>
parents: 16392
diff changeset
1710 NWidgetCore *nw = (this->editable) ? this->avs->GetWidgetFromPos(x, y) : NULL;
15216
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1711 if (nw == NULL) nw = this->acs->GetWidgetFromPos(x, y);
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1712 if (nw == NULL) nw = this->inf->GetWidgetFromPos(x, y);
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1713 return nw;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1714 }
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1715
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1716 virtual void Draw(const Window *w)
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1717 {
16393
b7cc33056746 (svn r21109) -Add: Don't display available newgrfs when the newgrf list is not editable.
alberth <alberth@openttd.org>
parents: 16392
diff changeset
1718 if (this->editable) this->avs->Draw(w);
15216
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1719 this->acs->Draw(w);
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1720 this->inf->Draw(w);
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1721 }
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1722 };
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1723
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1724 const uint NWidgetNewGRFDisplay::INTER_LIST_SPACING = WD_RESIZEBOX_WIDTH + 1;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1725 const uint NWidgetNewGRFDisplay::INTER_COLUMN_SPACING = WD_RESIZEBOX_WIDTH;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1726 const uint NWidgetNewGRFDisplay::MAX_EXTRA_INFO_WIDTH = 150;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1727 const uint NWidgetNewGRFDisplay::MIN_EXTRA_FOR_3_COLUMNS = 50;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1728
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1729 static const NWidgetPart _nested_newgrf_actives_widgets[] = {
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1730 /* Left side, presets. */
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1731 NWidget(NWID_HORIZONTAL),
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1732 NWidget(WWT_TEXT, COLOUR_MAUVE), SetDataTip(STR_NEWGRF_SETTINGS_SELECT_PRESET, STR_NULL),
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1733 SetPadding(0, WD_FRAMETEXT_RIGHT, 0, 0),
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1734 NWidget(WWT_DROPDOWN, COLOUR_YELLOW, WID_NS_PRESET_LIST), SetFill(1, 0), SetResize(1, 0),
15216
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1735 SetDataTip(STR_JUST_STRING, STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP),
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1736 EndContainer(),
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1737 NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1738 NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_PRESET_SAVE), SetFill(1, 0), SetResize(1, 0),
15216
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1739 SetDataTip(STR_NEWGRF_SETTINGS_PRESET_SAVE, STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP),
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1740 NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_PRESET_DELETE), SetFill(1, 0), SetResize(1, 0),
15216
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1741 SetDataTip(STR_NEWGRF_SETTINGS_PRESET_DELETE, STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP),
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1742 EndContainer(),
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1743
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1744 NWidget(NWID_SPACER), SetMinimalSize(0, WD_RESIZEBOX_WIDTH), SetResize(1, 0), SetFill(1, 0),
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1745 NWidget(WWT_PANEL, COLOUR_MAUVE),
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1746 NWidget(WWT_LABEL, COLOUR_MAUVE), SetDataTip(STR_NEWGRF_SETTINGS_ACTIVE_LIST, STR_NULL),
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1747 SetFill(1, 0), SetResize(1, 0), SetPadding(3, WD_FRAMETEXT_RIGHT, 0, WD_FRAMETEXT_LEFT),
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1748 /* Left side, active grfs. */
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1749 NWidget(NWID_HORIZONTAL), SetPadding(0, 2, 0, 2),
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1750 NWidget(WWT_PANEL, COLOUR_MAUVE),
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1751 NWidget(WWT_INSET, COLOUR_MAUVE, WID_NS_FILE_LIST), SetMinimalSize(100, 1), SetPadding(2, 2, 2, 2),
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1752 SetFill(1, 1), SetResize(1, 1), SetScrollbar(WID_NS_SCROLLBAR), SetDataTip(STR_NULL, STR_NEWGRF_SETTINGS_FILE_TOOLTIP),
15216
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1753 EndContainer(),
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1754 EndContainer(),
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1755 NWidget(NWID_VSCROLLBAR, COLOUR_MAUVE, WID_NS_SCROLLBAR),
15216
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1756 EndContainer(),
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1757 /* Buttons. */
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1758 NWidget(NWID_SELECTION, INVALID_COLOUR, WID_NS_SHOW_REMOVE),
16394
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1759 NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPadding(2, 2, 2, 2), SetPIP(0, WD_RESIZEBOX_WIDTH, 0),
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1760 NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_REMOVE), SetFill(1, 0), SetResize(1, 0),
16394
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1761 SetDataTip(STR_NEWGRF_SETTINGS_REMOVE, STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP),
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1762 NWidget(NWID_VERTICAL),
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1763 NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_MOVE_UP), SetFill(1, 0), SetResize(1, 0),
16394
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1764 SetDataTip(STR_NEWGRF_SETTINGS_MOVEUP, STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP),
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1765 NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_MOVE_DOWN), SetFill(1, 0), SetResize(1, 0),
16394
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1766 SetDataTip(STR_NEWGRF_SETTINGS_MOVEDOWN, STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP),
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1767 EndContainer(),
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1768 EndContainer(),
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1769
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1770 NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPadding(2, 2, 2, 2),
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1771 NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_RESCAN_FILES2), SetFill(1, 0), SetResize(1, 0),
16394
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1772 SetDataTip(STR_NEWGRF_SETTINGS_RESCAN_FILES, STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP),
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1773 NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_CONTENT_DOWNLOAD2), SetFill(1, 0), SetResize(1, 0),
16394
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1774 SetDataTip(STR_INTRO_ONLINE_CONTENT, STR_INTRO_TOOLTIP_ONLINE_CONTENT),
15216
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1775 EndContainer(),
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1776 EndContainer(),
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1777 EndContainer(),
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1778 };
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1779
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1780 static const NWidgetPart _nested_newgrf_availables_widgets[] = {
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1781 NWidget(WWT_PANEL, COLOUR_MAUVE),
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1782 NWidget(WWT_LABEL, COLOUR_MAUVE), SetDataTip(STR_NEWGRF_SETTINGS_INACTIVE_LIST, STR_NULL),
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1783 SetFill(1, 0), SetResize(1, 0), SetPadding(3, WD_FRAMETEXT_RIGHT, 0, WD_FRAMETEXT_LEFT),
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1784 /* Left side, available grfs, filter edit box. */
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1785 NWidget(NWID_HORIZONTAL), SetPadding(WD_TEXTPANEL_TOP, 0, WD_TEXTPANEL_BOTTOM, 0),
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1786 SetPIP(WD_FRAMETEXT_LEFT, WD_FRAMETEXT_RIGHT, WD_FRAMETEXT_RIGHT),
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1787 NWidget(WWT_TEXT, COLOUR_MAUVE), SetFill(0, 1), SetDataTip(STR_NEWGRF_FILTER_TITLE, STR_NULL),
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1788 NWidget(WWT_EDITBOX, COLOUR_MAUVE, WID_NS_FILTER), SetFill(1, 0), SetMinimalSize(50, 12), SetResize(1, 0),
15216
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1789 SetDataTip(STR_LIST_FILTER_OSKTITLE, STR_LIST_FILTER_TOOLTIP),
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1790 EndContainer(),
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1791 /* Left side, available grfs. */
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1792 NWidget(NWID_HORIZONTAL), SetPadding(0, 2, 0, 2),
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1793 NWidget(WWT_PANEL, COLOUR_MAUVE),
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1794 NWidget(WWT_INSET, COLOUR_MAUVE, WID_NS_AVAIL_LIST), SetMinimalSize(100, 1), SetPadding(2, 2, 2, 2),
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1795 SetFill(1, 1), SetResize(1, 1), SetScrollbar(WID_NS_SCROLL2BAR),
15216
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1796 EndContainer(),
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1797 EndContainer(),
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1798 NWidget(NWID_VSCROLLBAR, COLOUR_MAUVE, WID_NS_SCROLL2BAR),
15216
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1799 EndContainer(),
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1800 /* Left side, available grfs, buttons. */
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1801 NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPadding(2, 2, 2, 2), SetPIP(0, WD_RESIZEBOX_WIDTH, 0),
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1802 NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_ADD), SetFill(1, 0), SetResize(1, 0),
15216
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1803 SetDataTip(STR_NEWGRF_SETTINGS_ADD, STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP),
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1804 NWidget(NWID_VERTICAL),
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1805 NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_RESCAN_FILES), SetFill(1, 0), SetResize(1, 0),
15216
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1806 SetDataTip(STR_NEWGRF_SETTINGS_RESCAN_FILES, STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP),
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1807 NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_CONTENT_DOWNLOAD), SetFill(1, 0), SetResize(1, 0),
15216
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1808 SetDataTip(STR_INTRO_ONLINE_CONTENT, STR_INTRO_TOOLTIP_ONLINE_CONTENT),
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1809 EndContainer(),
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1810 EndContainer(),
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1811 EndContainer(),
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1812 };
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1813
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1814 static const NWidgetPart _nested_newgrf_infopanel_widgets[] = {
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1815 /* Right side, info panel. */
18413
e5c315e27c0a (svn r23249) -Feature: Also allow viewing of the other two textfiles supplied by BaNaNaS tars, i.e. changelog and license.
frosch <frosch@openttd.org>
parents: 18412
diff changeset
1816 NWidget(NWID_VERTICAL), SetPadding(0, 0, 2, 0),
e5c315e27c0a (svn r23249) -Feature: Also allow viewing of the other two textfiles supplied by BaNaNaS tars, i.e. changelog and license.
frosch <frosch@openttd.org>
parents: 18412
diff changeset
1817 NWidget(WWT_PANEL, COLOUR_MAUVE), SetPadding(0, 0, 2, 0),
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1818 NWidget(WWT_EMPTY, COLOUR_MAUVE, WID_NS_NEWGRF_INFO_TITLE), SetFill(1, 0), SetResize(1, 0),
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1819 NWidget(WWT_EMPTY, COLOUR_MAUVE, WID_NS_NEWGRF_INFO), SetFill(1, 1), SetResize(1, 1), SetMinimalSize(150, 100),
18413
e5c315e27c0a (svn r23249) -Feature: Also allow viewing of the other two textfiles supplied by BaNaNaS tars, i.e. changelog and license.
frosch <frosch@openttd.org>
parents: 18412
diff changeset
1820 EndContainer(),
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1821 NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_OPEN_URL), SetFill(1, 0), SetResize(1, 0),
18648
f68b9653f952 (svn r23495) -Feature: button in NewGRF window to open URL from action14
yexo <yexo@openttd.org>
parents: 18627
diff changeset
1822 SetDataTip(STR_CONTENT_OPEN_URL, STR_CONTENT_OPEN_URL_TOOLTIP),
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1823 NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_NEWGRF_TEXTFILE + TFT_README), SetFill(1, 0), SetResize(1, 0),
19079
0af594336a81 (svn r23933) -Codechange: make the text file window strings more generic (LordAro)
rubidium <rubidium@openttd.org>
parents: 19078
diff changeset
1824 SetDataTip(STR_TEXTFILE_VIEW_README, STR_NULL),
18413
e5c315e27c0a (svn r23249) -Feature: Also allow viewing of the other two textfiles supplied by BaNaNaS tars, i.e. changelog and license.
frosch <frosch@openttd.org>
parents: 18412
diff changeset
1825 NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1826 NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_NEWGRF_TEXTFILE + TFT_CHANGELOG), SetFill(1, 0), SetResize(1, 0),
19079
0af594336a81 (svn r23933) -Codechange: make the text file window strings more generic (LordAro)
rubidium <rubidium@openttd.org>
parents: 19078
diff changeset
1827 SetDataTip(STR_TEXTFILE_VIEW_CHANGELOG, STR_NULL),
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1828 NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_NEWGRF_TEXTFILE + TFT_LICENSE), SetFill(1, 0), SetResize(1, 0),
19079
0af594336a81 (svn r23933) -Codechange: make the text file window strings more generic (LordAro)
rubidium <rubidium@openttd.org>
parents: 19078
diff changeset
1829 SetDataTip(STR_TEXTFILE_VIEW_LICENCE, STR_NULL),
18413
e5c315e27c0a (svn r23249) -Feature: Also allow viewing of the other two textfiles supplied by BaNaNaS tars, i.e. changelog and license.
frosch <frosch@openttd.org>
parents: 18412
diff changeset
1830 EndContainer(),
15216
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1831 EndContainer(),
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1832 NWidget(NWID_SELECTION, INVALID_COLOUR, WID_NS_SHOW_APPLY),
16395
2bef44471f4d (svn r21111) -Add: Remove the buttons below the newgrf details if the list is not editable.
alberth <alberth@openttd.org>
parents: 16394
diff changeset
1833 /* Right side, buttons. */
2bef44471f4d (svn r21111) -Add: Remove the buttons below the newgrf details if the list is not editable.
alberth <alberth@openttd.org>
parents: 16394
diff changeset
1834 NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(0, WD_RESIZEBOX_WIDTH, 0),
2bef44471f4d (svn r21111) -Add: Remove the buttons below the newgrf details if the list is not editable.
alberth <alberth@openttd.org>
parents: 16394
diff changeset
1835 NWidget(NWID_VERTICAL),
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1836 NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_SET_PARAMETERS), SetFill(1, 0), SetResize(1, 0),
16395
2bef44471f4d (svn r21111) -Add: Remove the buttons below the newgrf details if the list is not editable.
alberth <alberth@openttd.org>
parents: 16394
diff changeset
1837 SetDataTip(STR_NEWGRF_SETTINGS_SET_PARAMETERS, STR_NULL),
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1838 NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_TOGGLE_PALETTE), SetFill(1, 0), SetResize(1, 0),
16395
2bef44471f4d (svn r21111) -Add: Remove the buttons below the newgrf details if the list is not editable.
alberth <alberth@openttd.org>
parents: 16394
diff changeset
1839 SetDataTip(STR_NEWGRF_SETTINGS_TOGGLE_PALETTE, STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP),
2bef44471f4d (svn r21111) -Add: Remove the buttons below the newgrf details if the list is not editable.
alberth <alberth@openttd.org>
parents: 16394
diff changeset
1840 EndContainer(),
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1841 NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_APPLY_CHANGES), SetFill(1, 0), SetResize(1, 0),
16395
2bef44471f4d (svn r21111) -Add: Remove the buttons below the newgrf details if the list is not editable.
alberth <alberth@openttd.org>
parents: 16394
diff changeset
1842 SetDataTip(STR_NEWGRF_SETTINGS_APPLY_CHANGES, STR_NULL),
15216
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1843 EndContainer(),
18911
e48659f8d5c4 (svn r23760) -Feature: Allow readonly display of NewGRF parameters, if GRF list may not be edited.
frosch <frosch@openttd.org>
parents: 18908
diff changeset
1844 NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_VIEW_PARAMETERS), SetFill(1, 0), SetResize(1, 0),
e48659f8d5c4 (svn r23760) -Feature: Allow readonly display of NewGRF parameters, if GRF list may not be edited.
frosch <frosch@openttd.org>
parents: 18908
diff changeset
1845 SetDataTip(STR_NEWGRF_SETTINGS_SHOW_PARAMETERS, STR_NULL),
15216
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1846 EndContainer(),
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1847 };
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1848
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1849 /** Construct nested container widget for managing the lists and the info panel of the NewGRF GUI. */
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1850 NWidgetBase* NewGRFDisplay(int *biggest_index)
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1851 {
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1852 NWidgetBase *avs = MakeNWidgets(_nested_newgrf_availables_widgets, lengthof(_nested_newgrf_availables_widgets), biggest_index, NULL);
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1853
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1854 int biggest2;
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1855 NWidgetBase *acs = MakeNWidgets(_nested_newgrf_actives_widgets, lengthof(_nested_newgrf_actives_widgets), &biggest2, NULL);
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1856 *biggest_index = max(*biggest_index, biggest2);
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1857
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1858 NWidgetBase *inf = MakeNWidgets(_nested_newgrf_infopanel_widgets, lengthof(_nested_newgrf_infopanel_widgets), &biggest2, NULL);
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1859 *biggest_index = max(*biggest_index, biggest2);
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1860
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1861 return new NWidgetNewGRFDisplay(avs, acs, inf);
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1862 }
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1863
8025
7a501cf42789 (svn r11585) -Codechange: Enumify the widgets of the newGRF gui and a slight cleanup there
skidd13 <skidd13@openttd.org>
parents: 8019
diff changeset
1864 /* Widget definition of the manage newgrfs window */
11796
b89215528d20 (svn r16186) -Codechange: Adding nested widgets to _newgrf_desc and _newgrf_add_dlg_desc window descriptions.
alberth <alberth@openttd.org>
parents: 11795
diff changeset
1865 static const NWidgetPart _nested_newgrf_widgets[] = {
b89215528d20 (svn r16186) -Codechange: Adding nested widgets to _newgrf_desc and _newgrf_add_dlg_desc window descriptions.
alberth <alberth@openttd.org>
parents: 11795
diff changeset
1866 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
1867 NWidget(WWT_CLOSEBOX, COLOUR_MAUVE),
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
1868 NWidget(WWT_CAPTION, COLOUR_MAUVE), SetDataTip(STR_NEWGRF_SETTINGS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
20342
63dba929ba42 (svn r25294) -Feature: Add another button to window title bars to resize the window to its default size.
frosch <frosch@openttd.org>
parents: 20338
diff changeset
1869 NWidget(WWT_DEFSIZEBOX, COLOUR_MAUVE),
11796
b89215528d20 (svn r16186) -Codechange: Adding nested widgets to _newgrf_desc and _newgrf_add_dlg_desc window descriptions.
alberth <alberth@openttd.org>
parents: 11795
diff changeset
1870 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
1871 NWidget(WWT_PANEL, COLOUR_MAUVE),
15216
7be3e18b9c57 (svn r19845) -Feature: Dynamically switch between 2 and 3 column NewGRF gui for improved user experience.
alberth <alberth@openttd.org>
parents: 15212
diff changeset
1872 NWidgetFunction(NewGRFDisplay), SetPadding(WD_RESIZEBOX_WIDTH, WD_RESIZEBOX_WIDTH, 2, WD_RESIZEBOX_WIDTH),
15211
e28e566488a9 (svn r19840) -Add: Add 'rescan' functionality to the NewGRF window.
alberth <alberth@openttd.org>
parents: 15209
diff changeset
1873 /* Resize button. */
e28e566488a9 (svn r19840) -Add: Add 'rescan' functionality to the NewGRF window.
alberth <alberth@openttd.org>
parents: 15209
diff changeset
1874 NWidget(NWID_HORIZONTAL),
e28e566488a9 (svn r19840) -Add: Add 'rescan' functionality to the NewGRF window.
alberth <alberth@openttd.org>
parents: 15209
diff changeset
1875 NWidget(NWID_SPACER), SetFill(1, 0), SetResize(1, 0),
e28e566488a9 (svn r19840) -Add: Add 'rescan' functionality to the NewGRF window.
alberth <alberth@openttd.org>
parents: 15209
diff changeset
1876 NWidget(WWT_RESIZEBOX, COLOUR_MAUVE),
e28e566488a9 (svn r19840) -Add: Add 'rescan' functionality to the NewGRF window.
alberth <alberth@openttd.org>
parents: 15209
diff changeset
1877 EndContainer(),
11796
b89215528d20 (svn r16186) -Codechange: Adding nested widgets to _newgrf_desc and _newgrf_add_dlg_desc window descriptions.
alberth <alberth@openttd.org>
parents: 11795
diff changeset
1878 EndContainer(),
b89215528d20 (svn r16186) -Codechange: Adding nested widgets to _newgrf_desc and _newgrf_add_dlg_desc window descriptions.
alberth <alberth@openttd.org>
parents: 11795
diff changeset
1879 };
b89215528d20 (svn r16186) -Codechange: Adding nested widgets to _newgrf_desc and _newgrf_add_dlg_desc window descriptions.
alberth <alberth@openttd.org>
parents: 11795
diff changeset
1880
8025
7a501cf42789 (svn r11585) -Codechange: Enumify the widgets of the newGRF gui and a slight cleanup there
skidd13 <skidd13@openttd.org>
parents: 8019
diff changeset
1881 /* Window definition of the manage newgrfs window */
20335
cadf6aaa0573 (svn r25287) -Codechange: Keep a reference to the WindowDesc in the Window after construction.
frosch <frosch@openttd.org>
parents: 20050
diff changeset
1882 static WindowDesc _newgrf_desc(
20338
491ddf49f744 (svn r25290) -Add: Assign string names to notable windows.
frosch <frosch@openttd.org>
parents: 20335
diff changeset
1883 WDP_CENTER, "settings_newgrf", 300, 263,
5893
8547517ef719 (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium <rubidium@openttd.org>
parents: 5668
diff changeset
1884 WC_GAME_OPTIONS, WC_NONE,
19767
2a11204038e3 (svn r24700) -Cleanup: Remove WDF_UNCLICK_BUTTONS and make it the default.
frosch <frosch@openttd.org>
parents: 19560
diff changeset
1885 0,
13564
bae287664b02 (svn r18086) -Codechange: remove 'widget' from WindowDesc
rubidium <rubidium@openttd.org>
parents: 13419
diff changeset
1886 _nested_newgrf_widgets, lengthof(_nested_newgrf_widgets)
11373
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11208
diff changeset
1887 );
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1888
15620
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
1889 /**
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
1890 * Callback function for the newgrf 'apply changes' confirmation window
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1891 * @param w Window which is calling this callback
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1892 * @param confirmed boolean value, true when yes was clicked, false otherwise
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1893 */
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1894 static void NewGRFConfirmationCallback(Window *w, bool confirmed)
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1895 {
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1896 if (confirmed) {
16116
50a0ec38c886 (svn r20812) -Fix [FS#4125]: crash when confirming newgrf changes with the newgrf parameter window open
yexo <yexo@openttd.org>
parents: 16086
diff changeset
1897 DeleteWindowByClass(WC_GRF_PARAMETERS);
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1898 NewGRFWindow *nw = dynamic_cast<NewGRFWindow*>(w);
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1899
9457
267a95510fdf (svn r13375) -Add: logging of actions that could possibly cause desyncs and crashes to simplify debugging. See readme.txt for details
smatz <smatz@openttd.org>
parents: 9317
diff changeset
1900 GamelogStartAction(GLAT_GRF);
15203
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
1901 GamelogGRFUpdate(_grfconfig, nw->actives); // log GRF changes
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
1902 CopyGRFConfigList(nw->orig_list, nw->actives, false);
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1903 ReloadNewGRFData();
9457
267a95510fdf (svn r13375) -Add: logging of actions that could possibly cause desyncs and crashes to simplify debugging. See readme.txt for details
smatz <smatz@openttd.org>
parents: 9317
diff changeset
1904 GamelogStopAction();
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1905
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1906 /* Show new, updated list */
15201
071e920abcfb (svn r19830) -Codechange: Move variable declarations to their first use.
alberth <alberth@openttd.org>
parents: 15200
diff changeset
1907 GRFConfig *c;
071e920abcfb (svn r19830) -Codechange: Move variable declarations to their first use.
alberth <alberth@openttd.org>
parents: 15200
diff changeset
1908 int i = 0;
15203
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
1909 for (c = nw->actives; c != NULL && c != nw->active_sel; c = c->next, i++) {}
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
1910 CopyGRFConfigList(&nw->actives, *nw->orig_list, false);
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
1911 for (c = nw->actives; c != NULL && i > 0; c = c->next, i--) {}
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
1912 nw->active_sel = c;
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1913 nw->avails.ForceRebuild();
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1914
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1915 w->InvalidateData();
15982
62befe1b097c (svn r20670) -Add: support for action F
rubidium <rubidium@openttd.org>
parents: 15920
diff changeset
1916
62befe1b097c (svn r20670) -Add: support for action F
rubidium <rubidium@openttd.org>
parents: 15920
diff changeset
1917 ReInitAllWindows();
62befe1b097c (svn r20670) -Add: support for action F
rubidium <rubidium@openttd.org>
parents: 15920
diff changeset
1918 DeleteWindowByClass(WC_BUILD_OBJECT);
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1919 }
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1920 }
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1921
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1922
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1923
15620
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
1924 /**
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
1925 * Setup the NewGRF gui
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1926 * @param editable allow the user to make changes to the grfconfig in 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
1927 * @param show_params show information about what parameters are set for the grf files
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1928 * @param exec_changes if changes are made to the list (editable is true), apply these
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1929 * changes immediately or only update the list
15623
c62577640878 (svn r20286) -Codechange: Unify end of doxygen comments.
frosch <frosch@openttd.org>
parents: 15620
diff changeset
1930 * @param config pointer to a linked-list of grfconfig's that will be shown
c62577640878 (svn r20286) -Codechange: Unify end of doxygen comments.
frosch <frosch@openttd.org>
parents: 15620
diff changeset
1931 */
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1932 void ShowNewGRFSettings(bool editable, bool show_params, bool exec_changes, GRFConfig **config)
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1933 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1934 DeleteWindowByClass(WC_GAME_OPTIONS);
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1935 new NewGRFWindow(&_newgrf_desc, editable, show_params, exec_changes, config);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1936 }
17988
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1937
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1938 /** Widgets for the progress window. */
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1939 static const NWidgetPart _nested_scan_progress_widgets[] = {
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1940 NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(STR_NEWGRF_SCAN_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1941 NWidget(WWT_PANEL, COLOUR_GREY),
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1942 NWidget(NWID_HORIZONTAL), SetPIP(20, 0, 20),
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1943 NWidget(NWID_VERTICAL), SetPIP(11, 8, 11),
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1944 NWidget(WWT_LABEL, INVALID_COLOUR), SetDataTip(STR_NEWGRF_SCAN_MESSAGE, STR_NULL), SetFill(1, 0),
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1945 NWidget(WWT_EMPTY, INVALID_COLOUR, WID_SP_PROGRESS_BAR), SetFill(1, 0),
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1946 NWidget(WWT_EMPTY, INVALID_COLOUR, WID_SP_PROGRESS_TEXT), SetFill(1, 0),
17988
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1947 EndContainer(),
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1948 EndContainer(),
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1949 EndContainer(),
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1950 };
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1951
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1952 /** Description of the widgets and other settings of the window. */
20335
cadf6aaa0573 (svn r25287) -Codechange: Keep a reference to the WindowDesc in the Window after construction.
frosch <frosch@openttd.org>
parents: 20050
diff changeset
1953 static WindowDesc _scan_progress_desc(
20338
491ddf49f744 (svn r25290) -Add: Assign string names to notable windows.
frosch <frosch@openttd.org>
parents: 20335
diff changeset
1954 WDP_CENTER, NULL, 0, 0,
17988
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1955 WC_MODAL_PROGRESS, WC_NONE,
19767
2a11204038e3 (svn r24700) -Cleanup: Remove WDF_UNCLICK_BUTTONS and make it the default.
frosch <frosch@openttd.org>
parents: 19560
diff changeset
1956 0,
17988
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1957 _nested_scan_progress_widgets, lengthof(_nested_scan_progress_widgets)
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1958 );
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1959
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1960 /** Window for showing the progress of NewGRF scanning. */
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1961 struct ScanProgressWindow : public Window {
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1962 char *last_name; ///< The name of the last 'seen' NewGRF.
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1963 int scanned; ///< The number of NewGRFs that we have seen.
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1964
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1965 /** Create the window. */
20335
cadf6aaa0573 (svn r25287) -Codechange: Keep a reference to the WindowDesc in the Window after construction.
frosch <frosch@openttd.org>
parents: 20050
diff changeset
1966 ScanProgressWindow() : Window(&_scan_progress_desc), last_name(NULL), scanned(0)
17988
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1967 {
20335
cadf6aaa0573 (svn r25287) -Codechange: Keep a reference to the WindowDesc in the Window after construction.
frosch <frosch@openttd.org>
parents: 20050
diff changeset
1968 this->InitNested(1);
17988
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1969 }
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1970
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1971 /** Free the last name buffer. */
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1972 ~ScanProgressWindow()
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1973 {
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1974 free(last_name);
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1975 }
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1976
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1977 virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1978 {
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1979 switch (widget) {
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1980 case WID_SP_PROGRESS_BAR: {
19868
9c28125866da (svn r24801) -Codechange: Add functions to set integral DParams to suitable values for size computations.
frosch <frosch@openttd.org>
parents: 19843
diff changeset
1981 SetDParamMaxValue(0, 100);
17988
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1982 *size = GetStringBoundingBox(STR_GENERATION_PROGRESS);
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1983 /* We need some spacing for the 'border' */
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1984 size->height += 8;
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1985 size->width += 8;
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1986 break;
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1987 }
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1988
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
1989 case WID_SP_PROGRESS_TEXT:
19868
9c28125866da (svn r24801) -Codechange: Add functions to set integral DParams to suitable values for size computations.
frosch <frosch@openttd.org>
parents: 19843
diff changeset
1990 SetDParamMaxDigits(0, 4);
9c28125866da (svn r24801) -Codechange: Add functions to set integral DParams to suitable values for size computations.
frosch <frosch@openttd.org>
parents: 19843
diff changeset
1991 SetDParamMaxDigits(1, 4);
17988
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1992 /* We really don't know the width. We could determine it by scanning the NewGRFs,
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1993 * but this is the status window for scanning them... */
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1994 size->width = max(400U, GetStringBoundingBox(STR_NEWGRF_SCAN_STATUS).width);
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1995 size->height = FONT_HEIGHT_NORMAL * 2 + WD_PAR_VSEP_NORMAL;
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1996 break;
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1997 }
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1998 }
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
1999
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2000 virtual void DrawWidget(const Rect &r, int widget) const
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2001 {
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2002 switch (widget) {
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
2003 case WID_SP_PROGRESS_BAR: {
17988
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2004 /* Draw the % complete with a bar and a text */
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2005 DrawFrameRect(r.left, r.top, r.right, r.bottom, COLOUR_GREY, FR_BORDERONLY);
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2006 uint percent = scanned * 100 / max(1U, _settings_client.gui.last_newgrf_count);
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2007 DrawFrameRect(r.left + 1, r.top + 1, (int)((r.right - r.left - 2) * percent / 100) + r.left + 1, r.bottom - 1, COLOUR_MAUVE, FR_NONE);
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2008 SetDParam(0, percent);
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2009 DrawString(r.left, r.right, r.top + 5, STR_GENERATION_PROGRESS, TC_FROMSTRING, SA_HOR_CENTER);
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2010 break;
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2011 }
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2012
18695
7abb0c8c8227 (svn r23543) -Codechange: Document and name consistently widgets of NewGRF window
planetmaker <planetmaker@openttd.org>
parents: 18681
diff changeset
2013 case WID_SP_PROGRESS_TEXT:
17988
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2014 SetDParam(0, this->scanned);
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2015 SetDParam(1, _settings_client.gui.last_newgrf_count);
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2016 DrawString(r.left, r.right, r.top, STR_NEWGRF_SCAN_STATUS, TC_FROMSTRING, SA_HOR_CENTER);
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2017
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2018 DrawString(r.left, r.right, r.top + FONT_HEIGHT_NORMAL + WD_PAR_VSEP_NORMAL, this->last_name == NULL ? "" : this->last_name, TC_BLACK, SA_HOR_CENTER);
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2019 break;
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2020 }
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2021 }
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2022
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2023 /**
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2024 * Update the NewGRF scan status.
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2025 * @param num The number of NewGRFs scanned so far.
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2026 * @param name The name of the last scanned NewGRF.
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2027 */
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2028 void UpdateNewGRFScanStatus(uint num, const char *name)
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2029 {
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2030 free(this->last_name);
18011
9243bb1fc073 (svn r22820) -Codechange: perform a full (re)draw cycle in the first draw during progress instead of waiting 200ms
rubidium <rubidium@openttd.org>
parents: 17988
diff changeset
2031 if (name == NULL) {
9243bb1fc073 (svn r22820) -Codechange: perform a full (re)draw cycle in the first draw during progress instead of waiting 200ms
rubidium <rubidium@openttd.org>
parents: 17988
diff changeset
2032 char buf[256];
9243bb1fc073 (svn r22820) -Codechange: perform a full (re)draw cycle in the first draw during progress instead of waiting 200ms
rubidium <rubidium@openttd.org>
parents: 17988
diff changeset
2033 GetString(buf, STR_NEWGRF_SCAN_ARCHIVES, lastof(buf));
9243bb1fc073 (svn r22820) -Codechange: perform a full (re)draw cycle in the first draw during progress instead of waiting 200ms
rubidium <rubidium@openttd.org>
parents: 17988
diff changeset
2034 this->last_name = strdup(buf);
9243bb1fc073 (svn r22820) -Codechange: perform a full (re)draw cycle in the first draw during progress instead of waiting 200ms
rubidium <rubidium@openttd.org>
parents: 17988
diff changeset
2035 } else {
9243bb1fc073 (svn r22820) -Codechange: perform a full (re)draw cycle in the first draw during progress instead of waiting 200ms
rubidium <rubidium@openttd.org>
parents: 17988
diff changeset
2036 this->last_name = strdup(name);
9243bb1fc073 (svn r22820) -Codechange: perform a full (re)draw cycle in the first draw during progress instead of waiting 200ms
rubidium <rubidium@openttd.org>
parents: 17988
diff changeset
2037 }
17988
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2038 this->scanned = num;
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2039 if (num > _settings_client.gui.last_newgrf_count) _settings_client.gui.last_newgrf_count = num;
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2040
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2041 this->SetDirty();
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2042 }
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2043 };
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2044
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2045 /**
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2046 * Update the NewGRF scan status.
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2047 * @param num The number of NewGRFs scanned so far.
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2048 * @param name The name of the last scanned NewGRF.
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2049 */
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2050 void UpdateNewGRFScanStatus(uint num, const char *name)
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2051 {
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2052 ScanProgressWindow *w = dynamic_cast<ScanProgressWindow *>(FindWindowByClass(WC_MODAL_PROGRESS));
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2053 if (w == NULL) w = new ScanProgressWindow();
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2054 w->UpdateNewGRFScanStatus(num, name);
77b13e743894 (svn r22797) -Add: progress bar for scanning NewGRFs
rubidium <rubidium@openttd.org>
parents: 17982
diff changeset
2055 }