annotate src/newgrf_gui.cpp @ 17486:e7672bafbe1c draft

(svn r22241) -Codechange: Add additional to-be-used parameter to OnInvalidateData().
author frosch <frosch@openttd.org>
date Sun, 13 Mar 2011 21:31:29 +0000
parents 5a60038ce980
children 105b4e4eb168
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"
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
13 #include "gui.h"
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
14 #include "newgrf.h"
8114
2d6af5d7a142 (svn r11675) -Codechange: split the string types from the string functions.
rubidium <rubidium@openttd.org>
parents: 8107
diff changeset
15 #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
16 #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
17 #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
18 #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
19 #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
20 #include "widgets/dropdown_type.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
21 #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
22 #include "network/network_content.h"
13043
8eef3a6e299f (svn r17541) -Feature: Filtering in Add-NewGRF dialog.
frosch <frosch@openttd.org>
parents: 13020
diff changeset
23 #include "sortlist_type.h"
8eef3a6e299f (svn r17541) -Feature: Filtering in Add-NewGRF dialog.
frosch <frosch@openttd.org>
parents: 13020
diff changeset
24 #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
25 #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
26 #include "newgrf_text.h"
16522
fa50c5fffd18 (svn r21248) -Codechange: don't run the tar scanner twice upon startup
rubidium <rubidium@openttd.org>
parents: 16441
diff changeset
27 #include "fileio_func.h"
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
28
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
29 #include "table/strings.h"
2495310e220f (svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium <rubidium@openttd.org>
parents: 8224
diff changeset
30 #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
31
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
32 /**
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
33 * 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
34 */
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
35 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
36 {
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
37 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
38 /* 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
39 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
40
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
41 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
42 SetDParamStr(1, c->error->custom_message);
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 SetDParam (2, 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
44 SetDParamStr(3, c->filename);
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 SetDParam (4, 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
46 SetDParamStr(5, c->error->data);
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 for (uint i = 0; i < c->error->num_params; i++) {
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
48 SetDParam(6 + i, c->error->param_value[i]);
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
49 }
14645
b7a22979b84e (svn r19224) -Codechange: change parameters passed to ShowErrorMessage() a bit
smatz <smatz@openttd.org>
parents: 14561
diff changeset
50 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
51 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
52 }
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 }
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
13017
ab07d6d87608 (svn r17511) -Codechange: Simplify ShowNewGRFInfo() by passing 'right' instead of 'width'.
frosch <frosch@openttd.org>
parents: 12879
diff changeset
55 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
56 {
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
57 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
58 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
59 SetDParamStr(0, c->error->custom_message); // is skipped by built-in messages
2416082e752c (svn r14112) -Fix (r13715)[FS#2232]: Action B custom messages with parameteers were broken.
frosch <frosch@openttd.org>
parents: 9864
diff changeset
60 SetDParam (1, STR_JUST_RAW_STRING);
2416082e752c (svn r14112) -Fix (r13715)[FS#2232]: Action B custom messages with parameteers were broken.
frosch <frosch@openttd.org>
parents: 9864
diff changeset
61 SetDParamStr(2, c->filename);
2416082e752c (svn r14112) -Fix (r13715)[FS#2232]: Action B custom messages with parameteers were broken.
frosch <frosch@openttd.org>
parents: 9864
diff changeset
62 SetDParam (3, STR_JUST_RAW_STRING);
2416082e752c (svn r14112) -Fix (r13715)[FS#2232]: Action B custom messages with parameteers were broken.
frosch <frosch@openttd.org>
parents: 9864
diff changeset
63 SetDParamStr(4, c->error->data);
2416082e752c (svn r14112) -Fix (r13715)[FS#2232]: Action B custom messages with parameteers were broken.
frosch <frosch@openttd.org>
parents: 9864
diff changeset
64 for (uint i = 0; i < c->error->num_params; i++) {
11833
e4d9da4d81eb (svn r16223) -Fix (r8881): ActionB should use the online parameters from GRFFile instead of the initial user-specified values from GRFConfig. Also use the values as they were set when the ActionB was executed, not as they are set when the message is shown.
frosch <frosch@openttd.org>
parents: 11796
diff changeset
65 SetDParam(5 + 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
66 }
9957
2416082e752c (svn r14112) -Fix (r13715)[FS#2232]: Action B custom messages with parameteers were broken.
frosch <frosch@openttd.org>
parents: 9864
diff changeset
67 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
68
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
69 SetDParamStr(0, message);
13017
ab07d6d87608 (svn r17511) -Codechange: Simplify ShowNewGRFInfo() by passing 'right' instead of 'width'.
frosch <frosch@openttd.org>
parents: 12879
diff changeset
70 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
71 }
e3a3a903fa28 (svn r8838) -Feature: Show newgrf error messages loaded in Action B in the newgrf gui
maedhros <maedhros@openttd.org>
parents: 5893
diff changeset
72
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
73 /* 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
74 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
75 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
76 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
77 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
78
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
79 /* 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
80 char buff[256];
14676
353df593bee0 (svn r19255) -Codechange: encapsulate GRFIdentifier in GRFConfig instead of subclassing it
yexo <yexo@openttd.org>
parents: 14645
diff changeset
81 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
82 SetDParamStr(0, buff);
13017
ab07d6d87608 (svn r17511) -Codechange: Simplify ShowNewGRFInfo() by passing 'right' instead of 'width'.
frosch <frosch@openttd.org>
parents: 12879
diff changeset
83 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
84
16286
3210d6542c3f (svn r20992) -Fix (r20958): Show either version and minimum compatible version or neither
planetmaker <planetmaker@openttd.org>
parents: 16259
diff changeset
85 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
86 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
87 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
88 }
16286
3210d6542c3f (svn r20992) -Fix (r20958): Show either version and minimum compatible version or neither
planetmaker <planetmaker@openttd.org>
parents: 16259
diff changeset
89 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
90 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
91 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
92 }
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
93
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
94 /* 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
95 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
96 SetDParamStr(0, buff);
13017
ab07d6d87608 (svn r17511) -Codechange: Simplify ShowNewGRFInfo() by passing 'right' instead of 'width'.
frosch <frosch@openttd.org>
parents: 12879
diff changeset
97 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
98
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
99 /* 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
100 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
101 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
102 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
103 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
104 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
105 } 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
106 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
107 }
13017
ab07d6d87608 (svn r17511) -Codechange: Simplify ShowNewGRFInfo() by passing 'right' instead of 'width'.
frosch <frosch@openttd.org>
parents: 12879
diff changeset
108 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
109
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
110 /* Draw the palette of the NewGRF */
15593
7d5548deab3f (svn r20253) -Codechange: change GRFConfig::windows_paletted into a bitmask/bitset
rubidium <rubidium@openttd.org>
parents: 15588
diff changeset
111 SetDParamStr(0, (c->palette & GRFP_USE_WINDOWS) ? "Windows" : "DOS");
13017
ab07d6d87608 (svn r17511) -Codechange: Simplify ShowNewGRFInfo() by passing 'right' instead of 'width'.
frosch <frosch@openttd.org>
parents: 12879
diff changeset
112 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
113 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
114
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
115 /* Show flags */
13017
ab07d6d87608 (svn r17511) -Codechange: Simplify ShowNewGRFInfo() by passing 'right' instead of 'width'.
frosch <frosch@openttd.org>
parents: 12879
diff changeset
116 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
117 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
118 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
119 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
120
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
121 /* 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
122 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
123 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
124 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
125 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
126 } else {
13017
ab07d6d87608 (svn r17511) -Codechange: Simplify ShowNewGRFInfo() by passing 'right' instead of 'width'.
frosch <frosch@openttd.org>
parents: 12879
diff changeset
127 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
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 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
130
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
131
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
132 /** Enum referring to the widgets of the NewGRF parameters window */
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
133 enum ShowNewGRFParametersWidgets {
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
134 GRFPAR_WIDGET_SHOW_NUMPAR, ///< #NWID_SELECTION to optionally display #GRFPAR_WIDGET_NUMPAR
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
135 GRFPAR_WIDGET_NUMPAR_DEC, ///< Button to decrease number of parameters
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
136 GRFPAR_WIDGET_NUMPAR_INC, ///< Button to increase number of parameters
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
137 GRFPAR_WIDGET_NUMPAR, ///< Optional number of parameters
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
138 GRFPAR_WIDGET_NUMPAR_TEXT, ///< Text description
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
139 GRFPAR_WIDGET_BACKGROUND, ///< Panel to draw the settings on
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
140 GRFPAR_WIDGET_SCROLLBAR, ///< Scrollbar to scroll through all settings
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
141 GRFPAR_WIDGET_ACCEPT, ///< Accept button
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
142 GRFPAR_WIDGET_RESET, ///< Reset button
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
143 GRFPAR_WIDGET_SHOW_DESCRIPTION, ///< #NWID_SELECTION to optionally display parameter descriptions
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
144 GRFPAR_WIDGET_DESCRIPTION, ///< Multi-line description of a parameter
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
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 * 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
149 */
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
150 struct NewGRFParametersWindow : public Window {
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
151 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
152 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
153 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
154 bool clicked_increase; ///< True if the increase button was clicked, false for the decrease button.
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.
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
160
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
161 NewGRFParametersWindow(const WindowDesc *desc, GRFConfig *c) : Window(),
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
162 grf_config(c),
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
163 clicked_button(UINT_MAX),
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
164 timeout(0),
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
165 clicked_row(UINT_MAX)
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
166 {
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
167 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
168
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
169 this->CreateNestedTree(desc);
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
170 this->vscroll = this->GetScrollbar(GRFPAR_WIDGET_SCROLLBAR);
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->GetWidget<NWidgetStacked>(GRFPAR_WIDGET_SHOW_NUMPAR)->SetDisplayedPlane(this->action14present ? SZSP_HORIZONTAL : 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 this->GetWidget<NWidgetStacked>(GRFPAR_WIDGET_SHOW_DESCRIPTION)->SetDisplayedPlane(this->action14present ? 0 : SZSP_HORIZONTAL);
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
173 this->FinishInitNested(desc); // 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
174
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
175 this->InvalidateData();
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
176 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
177
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
178 /**
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
179 * 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
180 * @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
181 * @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
182 */
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
183 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
184 {
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
185 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
186 return &dummy_parameter_info;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
187 }
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 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
190 {
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
191 switch (widget) {
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
192 case GRFPAR_WIDGET_NUMPAR_DEC:
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
193 case GRFPAR_WIDGET_NUMPAR_INC: {
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
194 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
195 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
196 }
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
197
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
198 case GRFPAR_WIDGET_NUMPAR: {
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
199 SetDParam(0, 999);
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 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
201 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
202 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
203 *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
204 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
205 }
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
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
207 case GRFPAR_WIDGET_BACKGROUND:
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
208 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
209
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
210 resize->width = 1;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
211 resize->height = this->line_height;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
212 size->height = GB(this->GetWidget<NWidgetCore>(widget)->widget_data, MAT_ROW_START, MAT_ROW_BITS) * this->line_height;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
213 break;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
214
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
215 case GRFPAR_WIDGET_DESCRIPTION:
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
216 size->height = max<uint>(size->height, FONT_HEIGHT_NORMAL * 4 + WD_TEXTPANEL_TOP + WD_TEXTPANEL_BOTTOM);
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
217 break;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
218 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
219 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
220
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
221 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
222 {
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
223 switch (widget) {
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
224 case GRFPAR_WIDGET_NUMPAR:
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
225 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
226 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
227 }
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
228 }
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
229
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
230 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
231 {
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
232 if (widget == GRFPAR_WIDGET_DESCRIPTION) {
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
233 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
234 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
235 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
236 if (desc == NULL) return;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
237 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
238 return;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
239 } else if (widget != GRFPAR_WIDGET_BACKGROUND) {
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
240 return;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
241 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
242
16441
86fd9bcc9d2f (svn r21157) -Codechange: remove information about the text direction out of the language "list"
rubidium <rubidium@openttd.org>
parents: 16395
diff changeset
243 bool rtl = _current_text_dir == TD_RTL;
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
244 uint buttons_left = rtl ? r.right - 23 : r.left + 4;
15804
cefe74c2f556 (svn r20479) -Change: Use 'Buttons Name: Value' layout for AI and NewGRF parameter GUI.
frosch <frosch@openttd.org>
parents: 15787
diff changeset
245 uint text_left = r.left + (rtl ? WD_FRAMERECT_LEFT : 28);
cefe74c2f556 (svn r20479) -Change: Use 'Buttons Name: Value' layout for AI and NewGRF parameter GUI.
frosch <frosch@openttd.org>
parents: 15787
diff changeset
246 uint text_right = r.right - (rtl ? 28 : WD_FRAMERECT_RIGHT);
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
247
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
248 int y = r.top;
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
249 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
250 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
251 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
252 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
253 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
254
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
255 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
256 DrawFrameRect(buttons_left, y + 2, buttons_left + 19, y + 10, (current_value != 0) ? COLOUR_GREEN : COLOUR_RED, (current_value != 0) ? FR_LOWERED : FR_NONE);
15804
cefe74c2f556 (svn r20479) -Change: Use 'Buttons Name: Value' layout for AI and NewGRF parameter GUI.
frosch <frosch@openttd.org>
parents: 15787
diff changeset
257 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
258 } else if (par_info->type == PTYPE_UINT_ENUM) {
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
259 DrawArrowButtons(buttons_left, y + 2, COLOUR_YELLOW, (this->clicked_button == i) ? 1 + (this->clicked_increase != rtl) : 0, current_value > par_info->min_value, current_value < par_info->max_value);
15804
cefe74c2f556 (svn r20479) -Change: Use 'Buttons Name: Value' layout for AI and NewGRF parameter GUI.
frosch <frosch@openttd.org>
parents: 15787
diff changeset
260 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
261 SetDParam(3, current_value);
16250
dd6d2c758c96 (svn r20951) -Codechange: Add SmallMap::Contains() and use it.
frosch <frosch@openttd.org>
parents: 16116
diff changeset
262 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
263 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
264 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
265 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
266 SetDParamStr(3, label);
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
267 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
268 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
269 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
270
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
271 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
272 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
273 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
274 SetDParamStr(1, name);
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
275 } 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
276 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
277 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
278 }
15804
cefe74c2f556 (svn r20479) -Change: Use 'Buttons Name: Value' layout for AI and NewGRF parameter GUI.
frosch <frosch@openttd.org>
parents: 15787
diff changeset
279
cefe74c2f556 (svn r20479) -Change: Use 'Buttons Name: Value' layout for AI and NewGRF parameter GUI.
frosch <frosch@openttd.org>
parents: 15787
diff changeset
280 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
281 y += this->line_height;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
282 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
283 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
284
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
285 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
286 {
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
287 switch (widget) {
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
288 case GRFPAR_WIDGET_NUMPAR_DEC:
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
289 if (!this->action14present && this->grf_config->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
290 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
291 this->InvalidateData();
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
292 SetWindowClassesDirty(WC_GAME_OPTIONS); // Is always the newgrf window
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
293 }
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
294 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
295
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
296 case GRFPAR_WIDGET_NUMPAR_INC: {
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
297 GRFConfig *c = this->grf_config;
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
298 if (!this->action14present && c->num_params < c->num_valid_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
299 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
300 this->InvalidateData();
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
301 SetWindowClassesDirty(WC_GAME_OPTIONS); // Is always the newgrf window
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
302 }
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
303 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
304 }
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
305
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
306 case GRFPAR_WIDGET_BACKGROUND: {
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
307 uint num = this->vscroll->GetScrolledRowFromWidget(pt.y, this, GRFPAR_WIDGET_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
308 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
309 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
310 DeleteChildWindows(WC_QUERY_STRING);
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
311 this->clicked_row = num;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
312 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
313
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
314 const NWidgetBase *wid = this->GetWidget<NWidgetBase>(GRFPAR_WIDGET_BACKGROUND);
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
315 int x = pt.x - wid->pos_x;
16441
86fd9bcc9d2f (svn r21157) -Codechange: remove information about the text direction out of the language "list"
rubidium <rubidium@openttd.org>
parents: 16395
diff changeset
316 if (_current_text_dir == TD_RTL) x = wid->current_x - x;
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
317 x -= 4;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
318
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
319 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
320 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
321
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
322 /* One of the arrows is clicked */
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
323 if (IsInsideMM(x, 0, 21)) {
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
324 uint32 val = 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
325 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
326 val = !val;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
327 } else {
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
328 if (x >= 10) {
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
329 /* Increase button clicked */
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
330 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
331 this->clicked_increase = true;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
332 } else {
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
333 /* Decrease button clicked */
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
334 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
335 this->clicked_increase = false;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
336 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
337 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
338 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
339
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
340 this->clicked_button = num;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
341 this->timeout = 5;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
342 } else if (par_info->type == PTYPE_UINT_ENUM && click_count >= 2) {
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
343 /* Display a query box so users can enter a custom value. */
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
344 SetDParam(0, this->grf_config->param[num]);
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
345 ShowQueryString(STR_JUST_INT, STR_CONFIG_SETTING_QUERY_CAPTION, 10, 100, this, CS_NUMERAL, QSF_NONE);
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
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
348 this->SetDirty();
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
349 break;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
350 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
351
15920
74e5e0907a80 (svn r20604) -Feature: add a reset button to the newgrf parameters window
yexo <yexo@openttd.org>
parents: 15917
diff changeset
352 case GRFPAR_WIDGET_RESET:
74e5e0907a80 (svn r20604) -Feature: add a reset button to the newgrf parameters window
yexo <yexo@openttd.org>
parents: 15917
diff changeset
353 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
354 this->InvalidateData();
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
355 SetWindowClassesDirty(WC_GAME_OPTIONS); // Is always the newgrf window
15920
74e5e0907a80 (svn r20604) -Feature: add a reset button to the newgrf parameters window
yexo <yexo@openttd.org>
parents: 15917
diff changeset
356 break;
74e5e0907a80 (svn r20604) -Feature: add a reset button to the newgrf parameters window
yexo <yexo@openttd.org>
parents: 15917
diff changeset
357
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
358 case GRFPAR_WIDGET_ACCEPT:
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
359 delete this;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
360 break;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
361 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
362 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
363
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
364 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
365 {
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
366 if (StrEmpty(str)) return;
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
367 int32 value = atoi(str);
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
368 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
369 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
370 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
371 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
372 this->SetDirty();
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
373 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
374
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
375 virtual void OnResize()
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
376 {
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
377 NWidgetCore *nwi = this->GetWidget<NWidgetCore>(GRFPAR_WIDGET_BACKGROUND);
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
378 this->vscroll->SetCapacity(nwi->current_y / this->line_height);
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
379 nwi->widget_data = (this->vscroll->GetCapacity() << MAT_ROW_START) + (1 << MAT_COL_START);
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
380 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
381
17486
e7672bafbe1c (svn r22241) -Codechange: Add additional to-be-used parameter to OnInvalidateData().
frosch <frosch@openttd.org>
parents: 17077
diff changeset
382 /**
e7672bafbe1c (svn r22241) -Codechange: Add additional to-be-used parameter to OnInvalidateData().
frosch <frosch@openttd.org>
parents: 17077
diff changeset
383 * 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
384 * @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
385 * @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
386 */
e7672bafbe1c (svn r22241) -Codechange: Add additional to-be-used parameter to OnInvalidateData().
frosch <frosch@openttd.org>
parents: 17077
diff changeset
387 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
388 {
17486
e7672bafbe1c (svn r22241) -Codechange: Add additional to-be-used parameter to OnInvalidateData().
frosch <frosch@openttd.org>
parents: 17077
diff changeset
389 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
390 if (!this->action14present) {
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
391 this->SetWidgetDisabledState(GRFPAR_WIDGET_NUMPAR_DEC, this->grf_config->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
392 this->SetWidgetDisabledState(GRFPAR_WIDGET_NUMPAR_INC, this->grf_config->num_params >= this->grf_config->num_valid_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
393 }
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
394
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
395 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
396 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
397 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
398 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
399 }
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
400 }
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
401
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
402 virtual void OnTick()
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
403 {
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
404 if (--this->timeout == 0) {
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
405 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
406 this->SetDirty();
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
407 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
408 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
409 };
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
410 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
411
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
412
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
413 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
414 NWidget(NWID_HORIZONTAL),
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
415 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
416 NWidget(WWT_CAPTION, COLOUR_MAUVE), SetDataTip(STR_NEWGRF_PARAMETERS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
417 EndContainer(),
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
418 NWidget(NWID_SELECTION, INVALID_COLOUR, GRFPAR_WIDGET_SHOW_NUMPAR),
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
419 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
420 NWidget(NWID_HORIZONTAL), 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
421 NWidget(WWT_PUSHARROWBTN, COLOUR_YELLOW, GRFPAR_WIDGET_NUMPAR_DEC), SetMinimalSize(12, 12), SetDataTip(AWV_DECREASE, STR_NULL),
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
422 NWidget(WWT_PUSHARROWBTN, COLOUR_YELLOW, GRFPAR_WIDGET_NUMPAR_INC), SetMinimalSize(12, 12), SetDataTip(AWV_INCREASE, STR_NULL),
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
423 NWidget(WWT_TEXT, COLOUR_MAUVE, GRFPAR_WIDGET_NUMPAR), SetResize(1, 0), SetFill(1, 0), SetPadding(0, 0, 0, 4), SetDataTip(STR_NEWGRF_PARAMETERS_NUM_PARAM, STR_NULL),
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
424 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
425 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
426 EndContainer(),
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
427 NWidget(NWID_HORIZONTAL),
15778
4f4c3160cca8 (svn r20452) -Codechange: Remove NWidgetCore::FindScrollbar() and associate scrollbar explicitly using a NWidgetPart via SetScrollbar().
frosch <frosch@openttd.org>
parents: 15626
diff changeset
428 NWidget(WWT_MATRIX, COLOUR_MAUVE, GRFPAR_WIDGET_BACKGROUND), SetMinimalSize(188, 182), SetResize(1, 1), SetFill(1, 0), SetDataTip(0x501, STR_NULL), SetScrollbar(GRFPAR_WIDGET_SCROLLBAR),
15787
6c4bec3b8401 (svn r20461) -Codechange: Replace WWT_HSCROLLBAR, WWT_SCROLLBAR and WWT_SCROLL2BAR with NWID_HSCROLLBAR and NWID_VSCROLLBAR.
frosch <frosch@openttd.org>
parents: 15779
diff changeset
429 NWidget(NWID_VSCROLLBAR, COLOUR_MAUVE, GRFPAR_WIDGET_SCROLLBAR),
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
430 EndContainer(),
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
431 NWidget(NWID_SELECTION, INVALID_COLOUR, GRFPAR_WIDGET_SHOW_DESCRIPTION),
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
432 NWidget(WWT_PANEL, COLOUR_MAUVE, GRFPAR_WIDGET_DESCRIPTION), SetResize(1, 0), SetFill(1, 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
433 EndContainer(),
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
434 EndContainer(),
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
435 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
436 NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
74e5e0907a80 (svn r20604) -Feature: add a reset button to the newgrf parameters window
yexo <yexo@openttd.org>
parents: 15917
diff changeset
437 NWidget(WWT_PUSHTXTBTN, COLOUR_MAUVE, GRFPAR_WIDGET_ACCEPT), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_NEWGRF_PARAMETERS_CLOSE, STR_NULL),
74e5e0907a80 (svn r20604) -Feature: add a reset button to the newgrf parameters window
yexo <yexo@openttd.org>
parents: 15917
diff changeset
438 NWidget(WWT_PUSHTXTBTN, COLOUR_MAUVE, GRFPAR_WIDGET_RESET), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_NEWGRF_PARAMETERS_RESET, STR_NEWGRF_PARAMETERS_RESET_TOOLTIP),
74e5e0907a80 (svn r20604) -Feature: add a reset button to the newgrf parameters window
yexo <yexo@openttd.org>
parents: 15917
diff changeset
439 EndContainer(),
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
440 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
441 EndContainer(),
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
442 };
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
443
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
444 /* Window definition for the change grf parameters window */
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
445 static const WindowDesc _newgrf_parameters_desc(
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
446 WDP_CENTER, 500, 208,
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
447 WC_GRF_PARAMETERS, WC_NONE,
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
448 WDF_UNCLICK_BUTTONS,
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
449 _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
450 );
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
451
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
452 void OpenGRFParameterWindow(GRFConfig *c)
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
453 {
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
454 DeleteWindowByClass(WC_GRF_PARAMETERS);
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
455 new NewGRFParametersWindow(&_newgrf_parameters_desc, c);
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
456 }
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
457
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
458 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
459
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
460 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
461 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
462 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
463
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
464 virtual ~DropDownListPresetItem() {}
9864
199cb67d074d (svn r14009) -Cleanup (r14008): Bad whitespace...
peter1138 <peter1138@openttd.org>
parents: 9863
diff changeset
465
9863
3db7ce31355e (svn r14008) -Fix (r14004): NewGRF preset drop down list not working
peter1138 <peter1138@openttd.org>
parents: 9760
diff changeset
466 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
467 {
9863
3db7ce31355e (svn r14008) -Fix (r14004): NewGRF preset drop down list not working
peter1138 <peter1138@openttd.org>
parents: 9760
diff changeset
468 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
469 }
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
470
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
471 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
472 {
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
473 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
474 }
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
475 };
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
476
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
477 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
478
11795
8f4775ec6562 (svn r16185) -Codechange: Moving the ShowNewGRFStateWidgets and AddNewGRFWindowWidgets widget enums outside their window structs.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
479 /** Names of the manage newgrfs window widgets. */
8f4775ec6562 (svn r16185) -Codechange: Moving the ShowNewGRFStateWidgets and AddNewGRFWindowWidgets widget enums outside their window structs.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
480 enum ShowNewGRFStateWidgets {
8f4775ec6562 (svn r16185) -Codechange: Moving the ShowNewGRFStateWidgets and AddNewGRFWindowWidgets widget enums outside their window structs.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
481 SNGRFS_PRESET_LIST,
8f4775ec6562 (svn r16185) -Codechange: Moving the ShowNewGRFStateWidgets and AddNewGRFWindowWidgets widget enums outside their window structs.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
482 SNGRFS_PRESET_SAVE,
8f4775ec6562 (svn r16185) -Codechange: Moving the ShowNewGRFStateWidgets and AddNewGRFWindowWidgets widget enums outside their window structs.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
483 SNGRFS_PRESET_DELETE,
8f4775ec6562 (svn r16185) -Codechange: Moving the ShowNewGRFStateWidgets and AddNewGRFWindowWidgets widget enums outside their window structs.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
484 SNGRFS_ADD,
8f4775ec6562 (svn r16185) -Codechange: Moving the ShowNewGRFStateWidgets and AddNewGRFWindowWidgets widget enums outside their window structs.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
485 SNGRFS_REMOVE,
8f4775ec6562 (svn r16185) -Codechange: Moving the ShowNewGRFStateWidgets and AddNewGRFWindowWidgets widget enums outside their window structs.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
486 SNGRFS_MOVE_UP,
8f4775ec6562 (svn r16185) -Codechange: Moving the ShowNewGRFStateWidgets and AddNewGRFWindowWidgets widget enums outside their window structs.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
487 SNGRFS_MOVE_DOWN,
15209
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
488 SNGRFS_FILTER,
11795
8f4775ec6562 (svn r16185) -Codechange: Moving the ShowNewGRFStateWidgets and AddNewGRFWindowWidgets widget enums outside their window structs.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
489 SNGRFS_FILE_LIST,
8f4775ec6562 (svn r16185) -Codechange: Moving the ShowNewGRFStateWidgets and AddNewGRFWindowWidgets widget enums outside their window structs.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
490 SNGRFS_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
491 SNGRFS_AVAIL_LIST,
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
492 SNGRFS_SCROLL2BAR,
15204
f29231ce72e1 (svn r19833) -Change: Modify NewGRF window towards having combined lists, add captions.
alberth <alberth@openttd.org>
parents: 15203
diff changeset
493 SNGRFS_NEWGRF_INFO_TITLE,
11795
8f4775ec6562 (svn r16185) -Codechange: Moving the ShowNewGRFStateWidgets and AddNewGRFWindowWidgets widget enums outside their window structs.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
494 SNGRFS_NEWGRF_INFO,
8f4775ec6562 (svn r16185) -Codechange: Moving the ShowNewGRFStateWidgets and AddNewGRFWindowWidgets widget enums outside their window structs.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
495 SNGRFS_SET_PARAMETERS,
8f4775ec6562 (svn r16185) -Codechange: Moving the ShowNewGRFStateWidgets and AddNewGRFWindowWidgets widget enums outside their window structs.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
496 SNGRFS_TOGGLE_PALETTE,
8f4775ec6562 (svn r16185) -Codechange: Moving the ShowNewGRFStateWidgets and AddNewGRFWindowWidgets widget enums outside their window structs.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
497 SNGRFS_APPLY_CHANGES,
15211
e28e566488a9 (svn r19840) -Add: Add 'rescan' functionality to the NewGRF window.
alberth <alberth@openttd.org>
parents: 15209
diff changeset
498 SNGRFS_RESCAN_FILES,
16394
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
499 SNGRFS_RESCAN_FILES2,
11795
8f4775ec6562 (svn r16185) -Codechange: Moving the ShowNewGRFStateWidgets and AddNewGRFWindowWidgets widget enums outside their window structs.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
500 SNGRFS_CONTENT_DOWNLOAD,
16394
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
501 SNGRFS_CONTENT_DOWNLOAD2,
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
502 SNGRFS_SHOW_REMOVE, ///< Select active list buttons (0 = normal, 1 = simple layout).
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
503 SNGRFS_SHOW_APPLY, ///< Select display of the buttons below the 'details'.
11795
8f4775ec6562 (svn r16185) -Codechange: Moving the ShowNewGRFStateWidgets and AddNewGRFWindowWidgets widget enums outside their window structs.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
504 };
8f4775ec6562 (svn r16185) -Codechange: Moving the ShowNewGRFStateWidgets and AddNewGRFWindowWidgets widget enums outside their window structs.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
505
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
506 /**
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
507 * Window for showing NewGRF files
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
508 */
15209
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
509 struct NewGRFWindow : public QueryStringBaseWindow {
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
510 typedef GUIList<const GRFConfig *> GUIGRFConfigList;
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
511
15209
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
512 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
513 static const uint EDITBOX_MAX_LENGTH = 300;
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
514
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
515 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
516 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
517 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
518 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
519
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
520 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
521 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
522 int avail_pos; ///< Index of #avail_sel if existing, else \c -1.
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
523
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
524 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
525 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
526
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
527 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
528 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
529 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
530 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
531 int preset; ///< Selected preset.
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
532
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
533 Scrollbar *vscroll;
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
534 Scrollbar *vscroll2;
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
535
15209
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
536 NewGRFWindow(const WindowDesc *desc, bool editable, bool show_params, bool execute, GRFConfig **orig_list) : QueryStringBaseWindow(EDITBOX_MAX_SIZE)
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
537 {
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
538 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
539 this->avail_pos = -1;
15203
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
540 this->active_sel = NULL;
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
541 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
542 this->orig_list = orig_list;
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
543 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
544 this->execute = execute;
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
545 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
546 this->preset = -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
547
15203
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
548 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
549 GetGRFPresetList(&_grf_preset_list);
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
550
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
551 this->CreateNestedTree(desc);
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
552 this->vscroll = this->GetScrollbar(SNGRFS_SCROLLBAR);
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
553 this->vscroll2 = this->GetScrollbar(SNGRFS_SCROLL2BAR);
16394
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
554
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
555 this->GetWidget<NWidgetStacked>(SNGRFS_SHOW_REMOVE)->SetDisplayedPlane(this->editable ? 0 : 1);
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
556 this->GetWidget<NWidgetStacked>(SNGRFS_SHOW_APPLY)->SetDisplayedPlane(this->editable ? 0 : SZSP_HORIZONTAL);
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
557 this->FinishInitNested(desc);
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
558
15209
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
559 InitializeTextBuffer(&this->text, this->edit_str_buf, this->edit_str_size, EDITBOX_MAX_LENGTH);
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
560 this->SetFocusedWidget(SNGRFS_FILTER);
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
561
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
562 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
563 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
564 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
565 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
566 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
567
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
568 this->OnInvalidateData(2);
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
569 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
570
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
571 ~NewGRFWindow()
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
572 {
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
573 DeleteWindowByClass(WC_GRF_PARAMETERS);
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
574
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
575 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
576 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
577 ResetGRFConfig(false);
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
578 ReloadNewGRFData();
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
579 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
580
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
581 /* 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
582 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
583 _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
584 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
585
13705
8dee47e001b2 (svn r18230) -Codechange: Allow fill stepsize to be set from Window::UpdateWidgetSize().
alberth <alberth@openttd.org>
parents: 13704
diff changeset
586 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
587 {
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
588 switch (widget) {
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
589 case SNGRFS_FILE_LIST:
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
590 resize->height = max(12, 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
591 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
592 break;
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
593
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
594 case SNGRFS_AVAIL_LIST:
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
595 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
596 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
597 break;
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
598
15204
f29231ce72e1 (svn r19833) -Change: Modify NewGRF window towards having combined lists, add captions.
alberth <alberth@openttd.org>
parents: 15203
diff changeset
599 case SNGRFS_NEWGRF_INFO_TITLE: {
f29231ce72e1 (svn r19833) -Change: Modify NewGRF window towards having combined lists, add captions.
alberth <alberth@openttd.org>
parents: 15203
diff changeset
600 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
601 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
602 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
603 break;
f29231ce72e1 (svn r19833) -Change: Modify NewGRF window towards having combined lists, add captions.
alberth <alberth@openttd.org>
parents: 15203
diff changeset
604 }
f29231ce72e1 (svn r19833) -Change: Modify NewGRF window towards having combined lists, add captions.
alberth <alberth@openttd.org>
parents: 15203
diff changeset
605
13171
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
606 case SNGRFS_NEWGRF_INFO:
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
607 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
608 break;
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
609
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
610 case SNGRFS_PRESET_LIST: {
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
611 Dimension d = GetStringBoundingBox(STR_NUM_CUSTOM);
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
612 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
613 if (_grf_preset_list[i] != NULL) {
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
614 SetDParamStr(0, _grf_preset_list[i]);
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
615 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
616 }
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
617 }
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
618 d.width += padding.width;
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
619 *size = maxdim(d, *size);
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
620 break;
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
621 }
15194
2d9d9be17bbe (svn r19823) -Fix: Ensure that both texts of the newgrf gui download button fit.
alberth <alberth@openttd.org>
parents: 15185
diff changeset
622
16394
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
623 case SNGRFS_CONTENT_DOWNLOAD:
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
624 case SNGRFS_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
625 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
626 *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
627 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
628 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
629 break;
2d9d9be17bbe (svn r19823) -Fix: Ensure that both texts of the newgrf gui download button fit.
alberth <alberth@openttd.org>
parents: 15185
diff changeset
630 }
13171
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
631 }
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
632 }
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
633
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
634 virtual void OnResize()
13171
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
635 {
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
636 this->vscroll->SetCapacityFromWidget(this, SNGRFS_FILE_LIST);
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
637 this->vscroll2->SetCapacityFromWidget(this, SNGRFS_AVAIL_LIST);
13171
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
638 }
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
639
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
640 virtual void SetStringParameters(int widget) const
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
641 {
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
642 switch (widget) {
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
643 case SNGRFS_PRESET_LIST:
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
644 if (this->preset == -1) {
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
645 SetDParam(0, STR_NUM_CUSTOM);
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
646 } else {
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
647 SetDParam(0, STR_JUST_RAW_STRING);
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
648 SetDParamStr(1, _grf_preset_list[this->preset]);
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
649 }
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
650 break;
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
651 }
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
652 }
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
653
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
654 virtual void OnPaint()
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
655 {
9273
72a6d2e60834 (svn r13139) -Codechange: move DrawWindowWidgets and DrawWindowViewport to the Window class and remove Window from their naming.
rubidium <rubidium@openttd.org>
parents: 9207
diff changeset
656 this->DrawWidgets();
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
657 if (this->editable) this->DrawEditBox(SNGRFS_FILTER);
13171
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
658 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
659
15620
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
660 /**
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
661 * 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
662 * @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
663 * @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
664 */
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
665 FORCEINLINE PaletteID GetPalette(const GRFConfig *c) const
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
666 {
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
667 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
668
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
669 /* 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
670 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
671 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
672 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
673 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
674 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
675 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
676 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
677 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
678 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
679 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
680 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
681 }
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
682
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
683 /* 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
684 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
685 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
686 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
687 } 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
688 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
689 }
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
690 }
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
691
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
692 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
693 }
e31a7ac11eb1 (svn r19836) -Codechange: Move sprite palette selection code in NewGRF gui to its own method.
alberth <alberth@openttd.org>
parents: 15205
diff changeset
694
13171
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
695 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
696 {
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
697 switch (widget) {
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
698 case SNGRFS_FILE_LIST: {
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
699 GfxFillRect(r.left + 1, r.top + 1, r.right - 1, r.bottom - 1, 0xD7);
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
700
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
701 uint step_height = this->GetWidget<NWidgetBase>(SNGRFS_FILE_LIST)->resize_y;
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
702 uint y = r.top + WD_FRAMERECT_TOP;
15220
ef4601cbbb98 (svn r19849) -Fix: Center sprite and text seperately in the newgrf gui active list.
alberth <alberth@openttd.org>
parents: 15219
diff changeset
703 int sprite_offset_y = (step_height - 10) / 2;
ef4601cbbb98 (svn r19849) -Fix: Center sprite and text seperately in the newgrf gui active list.
alberth <alberth@openttd.org>
parents: 15219
diff changeset
704 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
705
16441
86fd9bcc9d2f (svn r21157) -Codechange: remove information about the text direction out of the language "list"
rubidium <rubidium@openttd.org>
parents: 16395
diff changeset
706 bool rtl = _current_text_dir == TD_RTL;
13659
2c473236b6fd (svn r18183) -Codechange: make the NewGRF window RTL aware
rubidium <rubidium@openttd.org>
parents: 13654
diff changeset
707 uint text_left = rtl ? r.left + WD_FRAMERECT_LEFT : r.left + 25;
2c473236b6fd (svn r18183) -Codechange: make the NewGRF window RTL aware
rubidium <rubidium@openttd.org>
parents: 13654
diff changeset
708 uint text_right = rtl ? r.right - 25 : r.right - WD_FRAMERECT_RIGHT;
2c473236b6fd (svn r18183) -Codechange: make the NewGRF window RTL aware
rubidium <rubidium@openttd.org>
parents: 13654
diff changeset
709 uint square_left = rtl ? r.right - 15 : r.left + 5;
2c473236b6fd (svn r18183) -Codechange: make the NewGRF window RTL aware
rubidium <rubidium@openttd.org>
parents: 13654
diff changeset
710 uint warning_left = rtl ? r.right - 30 : r.left + 20;
2c473236b6fd (svn r18183) -Codechange: make the NewGRF window RTL aware
rubidium <rubidium@openttd.org>
parents: 13654
diff changeset
711
13171
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
712 int i = 0;
15203
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
713 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
714 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
715 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
716 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
717 PaletteID pal = this->GetPalette(c);
13171
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
718
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
719 if (h) GfxFillRect(r.left + 1, y, r.right - 1, y + step_height - 1, 156);
13696
619a107df4a1 (svn r18221) -Codechange: make the NewGRF window big font aware
rubidium <rubidium@openttd.org>
parents: 13695
diff changeset
720 DrawSprite(SPR_SQUARE, pal, square_left, y + sprite_offset_y);
619a107df4a1 (svn r18221) -Codechange: make the NewGRF window big font aware
rubidium <rubidium@openttd.org>
parents: 13695
diff changeset
721 if (c->error != NULL) DrawSprite(SPR_WARNING_SIGN, 0, warning_left, y + sprite_offset_y);
13659
2c473236b6fd (svn r18183) -Codechange: make the NewGRF window RTL aware
rubidium <rubidium@openttd.org>
parents: 13654
diff changeset
722 uint txtoffset = c->error == NULL ? 0 : 10;
15220
ef4601cbbb98 (svn r19849) -Fix: Center sprite and text seperately in the newgrf gui active list.
alberth <alberth@openttd.org>
parents: 15219
diff changeset
723 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
724 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
725 }
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
726 }
15618
e4640748f223 (svn r20281) -Codechange: unify case scope closure + break coding style
rubidium <rubidium@openttd.org>
parents: 15605
diff changeset
727 break;
e4640748f223 (svn r20281) -Codechange: unify case scope closure + break coding style
rubidium <rubidium@openttd.org>
parents: 15605
diff changeset
728 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
729
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
730 case SNGRFS_AVAIL_LIST: {
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
731 GfxFillRect(r.left + 1, r.top + 1, r.right - 1, r.bottom - 1, 0xD7);
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
732
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
733 uint step_height = this->GetWidget<NWidgetBase>(SNGRFS_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
734 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
735 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
736 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
737 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
738
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
739 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
740 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
741 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
742 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
743
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
744 if (h) GfxFillRect(r.left + 1, y, r.right - 1, y + step_height - 1, 156);
15219
861c943801ad (svn r19848) -Fix (r19837): Center the texts of the inactive newgrfs.
alberth <alberth@openttd.org>
parents: 15216
diff changeset
745 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
746 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
747 }
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
748 break;
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
749 }
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
750
15204
f29231ce72e1 (svn r19833) -Change: Modify NewGRF window towards having combined lists, add captions.
alberth <alberth@openttd.org>
parents: 15203
diff changeset
751 case SNGRFS_NEWGRF_INFO_TITLE:
f29231ce72e1 (svn r19833) -Change: Modify NewGRF window towards having combined lists, add captions.
alberth <alberth@openttd.org>
parents: 15203
diff changeset
752 /* Create the nice grayish rectangle at the details top. */
f29231ce72e1 (svn r19833) -Change: Modify NewGRF window towards having combined lists, add captions.
alberth <alberth@openttd.org>
parents: 15203
diff changeset
753 GfxFillRect(r.left + 1, r.top + 1, r.right - 1, r.bottom - 1, 157);
15400
821c26b30fd9 (svn r20043) -Codechange: Introduce vertical alignment for DrawStringMultiLine().
alberth <alberth@openttd.org>
parents: 15345
diff changeset
754 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
755 break;
f29231ce72e1 (svn r19833) -Change: Modify NewGRF window towards having combined lists, add captions.
alberth <alberth@openttd.org>
parents: 15203
diff changeset
756
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
757 case SNGRFS_NEWGRF_INFO: {
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
758 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
759 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
760 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
761 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
762 }
93c95e6c1a53 (svn r17676) -Codechange: make the NewGRF GUI nested
rubidium <rubidium@openttd.org>
parents: 13170
diff changeset
763 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
764 }
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
765 }
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
766 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
767
14409
1eaefde497fd (svn r18966) -Codechange: Remove Window::OnDoubleClick() in favour of a parameter for OnClick().
frosch <frosch@openttd.org>
parents: 14391
diff changeset
768 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
769 {
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
770 switch (widget) {
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
771 case SNGRFS_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
772 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
773
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
774 /* 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
775 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
776
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
777 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
778 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
779 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
780 }
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
781 }
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
782
15212
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
783 this->DeleteChildWindows(WC_QUERY_STRING); // Remove the parameter query window
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
784 ShowDropDownList(this, list, this->preset, SNGRFS_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
785 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
786 }
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
787
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
788 case SNGRFS_PRESET_SAVE:
12632
e41943276802 (svn r17075) -Codechange: rename ~750 strings to be more uniform with their relatives
rubidium <rubidium@openttd.org>
parents: 12619
diff changeset
789 ShowQueryString(STR_EMPTY, STR_NEWGRF_SETTINGS_PRESET_SAVE_QUERY, 32, 100, 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
790 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
791
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
792 case SNGRFS_PRESET_DELETE:
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
793 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
794
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
795 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
796 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
797 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
798 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
799 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
800 break;
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
801
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
802 case SNGRFS_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
803 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
804
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
805 int pos = 0;
15203
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
806 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
807 GRFConfig *c = *pc;
15203
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
808 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
809 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
810 this->active_sel->next = c;
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
811 *pc = this->active_sel;
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
812 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
813 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
814 }
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
815 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
816 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
817 this->InvalidateData();
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
818 break;
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
819 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
820
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
821 case SNGRFS_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
822 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
823
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
824 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
825 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
826 GRFConfig *c = *pc;
15203
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
827 if (c == this->active_sel) {
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
828 *pc = c->next;
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
829 c->next = c->next->next;
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
830 (*pc)->next = c;
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
831 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
832 }
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
833 }
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
834 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
835 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
836 this->InvalidateData();
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
837 break;
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
838 }
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
839
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 case SNGRFS_FILE_LIST: { // Select an active GRF.
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
841 uint i = this->vscroll->GetScrolledRowFromWidget(pt.y, this, SNGRFS_FILE_LIST);
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
842
15201
071e920abcfb (svn r19830) -Codechange: Move variable declarations to their first use.
alberth <alberth@openttd.org>
parents: 15200
diff changeset
843 GRFConfig *c;
15203
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
844 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
845
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
846 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
847 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
848 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
849 this->avail_pos = -1;
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
850
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
851 this->InvalidateData();
15212
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
852 if (click_count == 1) break;
15626
33d3500b2a62 (svn r20289) -Codechange: Unify fall through coding style.
terkhen <terkhen@openttd.org>
parents: 15623
diff changeset
853 /* FALL THROUGH, with double click. */
15212
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
854 }
15626
33d3500b2a62 (svn r20289) -Codechange: Unify fall through coding style.
terkhen <terkhen@openttd.org>
parents: 15623
diff changeset
855
15212
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
856 case SNGRFS_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
857 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
858 DeleteWindowByClass(WC_GRF_PARAMETERS);
15212
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
859
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
860 /* 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
861 GRFConfig *newsel = this->active_sel->next;
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
862 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
863 GRFConfig *c = *pc;
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
864 /* 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
865 * 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
866 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
867
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
868 if (c == this->active_sel) {
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
869 *pc = c->next;
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
870 delete c;
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
871 break;
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
872 }
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
873 }
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
874
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
875 this->active_sel = newsel;
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
876 this->preset = -1;
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
877 this->avail_pos = -1;
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
878 this->avail_sel = NULL;
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
879 this->avails.ForceRebuild();
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
880 this->InvalidateData(2);
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
881 break;
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
882 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
883
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
884 case SNGRFS_AVAIL_LIST: { // Select a non-active GRF.
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
885 uint i = this->vscroll2->GetScrolledRowFromWidget(pt.y, this, SNGRFS_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
886 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
887 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
888 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
889 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
890 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
891 }
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
892 this->InvalidateData();
15212
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
893 if (click_count == 1) break;
15626
33d3500b2a62 (svn r20289) -Codechange: Unify fall through coding style.
terkhen <terkhen@openttd.org>
parents: 15623
diff changeset
894 /* FALL THROUGH, with double click. */
15212
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
895 }
15626
33d3500b2a62 (svn r20289) -Codechange: Unify fall through coding style.
terkhen <terkhen@openttd.org>
parents: 15623
diff changeset
896
15212
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
897 case SNGRFS_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
898 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
899
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
900 GRFConfig **list;
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
901 /* Find last entry in the list, checking for duplicate grfid on the way */
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
902 for (list = &this->actives; *list != NULL; list = &(*list)->next) {
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
903 if ((*list)->ident.grfid == this->avail_sel->ident.grfid) {
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
904 ShowErrorMessage(STR_NEWGRF_DUPLICATE_GRFID, INVALID_STRING_ID, WL_INFO);
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
905 return;
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
906 }
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
907 }
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
908
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
909 GRFConfig *c = new GRFConfig(*this->avail_sel); // Copy GRF details from scanned list.
15917
052cfee737ea (svn r20601) -Feature: [NewGRF] Add 'DEFA' field to set parameter defaults with action 14
yexo <yexo@openttd.org>
parents: 15804
diff changeset
910 c->SetParameterDefaults();
15212
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
911 *list = c; // Append GRF config to configuration list.
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
912
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
913 /* Select next (or previous, if last one) item in the list. */
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
914 int new_pos = this->avail_pos + 1;
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
915 if (new_pos >= (int)this->avails.Length()) new_pos = this->avail_pos - 1;
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
916 this->avail_pos = new_pos;
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
917 if (new_pos >= 0) this->avail_sel = this->avails[new_pos];
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
918
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
919 this->avails.ForceRebuild();
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
920 this->InvalidateData(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
921 break;
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
922 }
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
923
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
924 case SNGRFS_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
925 if (!this->editable) break;
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
926 if (this->execute) {
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
927 ShowQuery(
12632
e41943276802 (svn r17075) -Codechange: rename ~750 strings to be more uniform with their relatives
rubidium <rubidium@openttd.org>
parents: 12619
diff changeset
928 STR_NEWGRF_POPUP_CAUTION_CAPTION,
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
929 STR_NEWGRF_CONFIRMATION_TEXT,
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
930 this,
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
931 NewGRFConfirmationCallback
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
932 );
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
933 } else {
15203
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
934 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
935 ResetGRFConfig(false);
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
936 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
937 }
15212
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
938 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
939 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
940
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
941 case SNGRFS_SET_PARAMETERS: { // Edit parameters
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 || !this->show_params) 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
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
944 OpenGRFParameterWindow(this->active_sel);
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
945 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
946 }
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
947
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
948 case SNGRFS_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
949 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
950 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
951 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
952 }
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
953 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
954
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
955 case SNGRFS_CONTENT_DOWNLOAD:
16394
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
956 case SNGRFS_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
957 if (!_network_available) {
14645
b7a22979b84e (svn r19224) -Codechange: change parameters passed to ShowErrorMessage() a bit
smatz <smatz@openttd.org>
parents: 14561
diff changeset
958 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
959 } 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
960 #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
961 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
962
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
963 /* Only show the things in the current list, or everything when nothing's selected */
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
964 ContentVector cv;
15203
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
965 for (const GRFConfig *c = this->actives; c != NULL; c = c->next) {
10886
b22fa54bad95 (svn r15221) -Change [FS#2574]: only show missing NewGRFs when opening the content download window from a NewGRF list and there are missing NewGRFs, otherwise show just all NewGRFs the system knows.
rubidium <rubidium@openttd.org>
parents: 10808
diff changeset
966 if (c->status != GCS_NOT_FOUND && !HasBit(c->flags, GCF_COMPATIBLE)) continue;
b22fa54bad95 (svn r15221) -Change [FS#2574]: only show missing NewGRFs when opening the content download window from a NewGRF list and there are missing NewGRFs, otherwise show just all NewGRFs the system knows.
rubidium <rubidium@openttd.org>
parents: 10808
diff changeset
967
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
968 ContentInfo *ci = new ContentInfo();
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
969 ci->type = CONTENT_TYPE_NEWGRF;
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
970 ci->state = ContentInfo::DOES_NOT_EXIST;
14711
74b0a8a64ff5 (svn r19295) -Codechange: introduce wrapper functions for GRFConfig::name/info
yexo <yexo@openttd.org>
parents: 14676
diff changeset
971 ttd_strlcpy(ci->name, c->GetName(), lengthof(ci->name));
14676
353df593bee0 (svn r19255) -Codechange: encapsulate GRFIdentifier in GRFConfig instead of subclassing it
yexo <yexo@openttd.org>
parents: 14645
diff changeset
972 ci->unique_id = BSWAP32(c->ident.grfid);
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
973 memcpy(ci->md5sum, HasBit(c->flags, GCF_COMPATIBLE) ? c->original_md5sum : c->ident.md5sum, sizeof(ci->md5sum));
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
974 *cv.Append() = ci;
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
975 }
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
976 ShowNetworkContentListWindow(cv.Length() == 0 ? NULL : &cv, CONTENT_TYPE_NEWGRF);
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
977 #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
978 }
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
979 break;
15211
e28e566488a9 (svn r19840) -Add: Add 'rescan' functionality to the NewGRF window.
alberth <alberth@openttd.org>
parents: 15209
diff changeset
980
e28e566488a9 (svn r19840) -Add: Add 'rescan' functionality to the NewGRF window.
alberth <alberth@openttd.org>
parents: 15209
diff changeset
981 case SNGRFS_RESCAN_FILES:
16394
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
982 case SNGRFS_RESCAN_FILES2:
16522
fa50c5fffd18 (svn r21248) -Codechange: don't run the tar scanner twice upon startup
rubidium <rubidium@openttd.org>
parents: 16441
diff changeset
983 TarScanner::DoScan();
15211
e28e566488a9 (svn r19840) -Add: Add 'rescan' functionality to the NewGRF window.
alberth <alberth@openttd.org>
parents: 15209
diff changeset
984 ScanNewGRFFiles();
e28e566488a9 (svn r19840) -Add: Add 'rescan' functionality to the NewGRF window.
alberth <alberth@openttd.org>
parents: 15209
diff changeset
985 this->avail_sel = NULL;
e28e566488a9 (svn r19840) -Add: Add 'rescan' functionality to the NewGRF window.
alberth <alberth@openttd.org>
parents: 15209
diff changeset
986 this->avail_pos = -1;
e28e566488a9 (svn r19840) -Add: Add 'rescan' functionality to the NewGRF window.
alberth <alberth@openttd.org>
parents: 15209
diff changeset
987 this->avails.ForceRebuild();
e28e566488a9 (svn r19840) -Add: Add 'rescan' functionality to the NewGRF window.
alberth <alberth@openttd.org>
parents: 15209
diff changeset
988 this->InvalidateData(1);
15212
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
989 this->DeleteChildWindows(WC_QUERY_STRING); // Remove the parameter query window
15557
14828f61eda6 (svn r20217) -Fix [FS#3969]: Invalidate saveload GUI after rescanning NewGRFs.
frosch <frosch@openttd.org>
parents: 15423
diff changeset
990 InvalidateWindowClassesData(WC_SAVELOAD);
15211
e28e566488a9 (svn r19840) -Add: Add 'rescan' functionality to the NewGRF window.
alberth <alberth@openttd.org>
parents: 15209
diff changeset
991 break;
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
992 }
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
993 }
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
994
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
995 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
996 {
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
997 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
998
25371ea61636 (svn r20694) -Fix [FS#4087]: empty newgrf presets were not selectable
yexo <yexo@openttd.org>
parents: 15982
diff changeset
999 ClearGRFConfigList(&this->actives);
25371ea61636 (svn r20694) -Fix [FS#4087]: empty newgrf presets were not selectable
yexo <yexo@openttd.org>
parents: 15982
diff changeset
1000 this->preset = index;
25371ea61636 (svn r20694) -Fix [FS#4087]: empty newgrf presets were not selectable
yexo <yexo@openttd.org>
parents: 15982
diff changeset
1001
25371ea61636 (svn r20694) -Fix [FS#4087]: empty newgrf presets were not selectable
yexo <yexo@openttd.org>
parents: 15982
diff changeset
1002 if (index != -1) {
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
1003 GRFConfig *c = LoadGRFPresetFromConfig(_grf_preset_list[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
1004
16006
25371ea61636 (svn r20694) -Fix [FS#4087]: empty newgrf presets were not selectable
yexo <yexo@openttd.org>
parents: 15982
diff changeset
1005 this->active_sel = NULL;
25371ea61636 (svn r20694) -Fix [FS#4087]: empty newgrf presets were not selectable
yexo <yexo@openttd.org>
parents: 15982
diff changeset
1006 this->actives = c;
25371ea61636 (svn r20694) -Fix [FS#4087]: empty newgrf presets were not selectable
yexo <yexo@openttd.org>
parents: 15982
diff changeset
1007 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
1008 }
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
1009
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
1010 DeleteWindowByClass(WC_GRF_PARAMETERS);
15203
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
1011 this->active_sel = NULL;
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
1012 this->InvalidateData(3);
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
1013 }
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
1014
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1015 virtual void OnQueryTextFinished(char *str)
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1016 {
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1017 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
1018
15603
ea0089ca72ef (svn r20264) -Fix (r20258): saving a new preset was broken
yexo <yexo@openttd.org>
parents: 15602
diff changeset
1019 SaveGRFPresetToConfig(str, this->actives);
ea0089ca72ef (svn r20264) -Fix (r20258): saving a new preset was broken
yexo <yexo@openttd.org>
parents: 15602
diff changeset
1020 GetGRFPresetList(&_grf_preset_list);
ea0089ca72ef (svn r20264) -Fix (r20258): saving a new preset was broken
yexo <yexo@openttd.org>
parents: 15602
diff changeset
1021
15598
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
1022 /* Switch to this preset */
b5da2954ec59 (svn r20258) -Feature: more user-friendly gui to change NewGRF parameters
yexo <yexo@openttd.org>
parents: 15593
diff changeset
1023 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
1024 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
1025 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
1026 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
1027 }
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
1028 }
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
1029
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1030 this->InvalidateData();
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1031 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1032
15620
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
1033 /**
17486
e7672bafbe1c (svn r22241) -Codechange: Add additional to-be-used parameter to OnInvalidateData().
frosch <frosch@openttd.org>
parents: 17077
diff changeset
1034 * 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
1035 * @param data Information about the changed data.
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1036 * - 0: (optionally) build availables, update button status.
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1037 * - 1: build availables, Add newly found grfs, update button status.
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1038 * - 2: (optionally) build availables, Reset preset, + 3
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1039 * - 3: (optionally) build availables, Update active scrollbar, update button status.
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1040 * - 4: Force a rebuild of the availables, + 2
17486
e7672bafbe1c (svn r22241) -Codechange: Add additional to-be-used parameter to OnInvalidateData().
frosch <frosch@openttd.org>
parents: 17077
diff changeset
1041 * @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
1042 */
17486
e7672bafbe1c (svn r22241) -Codechange: Add additional to-be-used parameter to OnInvalidateData().
frosch <frosch@openttd.org>
parents: 17077
diff changeset
1043 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
1044 {
17486
e7672bafbe1c (svn r22241) -Codechange: Add additional to-be-used parameter to OnInvalidateData().
frosch <frosch@openttd.org>
parents: 17077
diff changeset
1045 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
1046 switch (data) {
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
1047 default: NOT_REACHED();
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
1048 case 0:
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
1049 /* 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
1050 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
1051
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
1052 case 1:
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
1053 /* 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
1054 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
1055 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
1056 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
1057 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
1058
16256
49226e68e209 (svn r20957) -Codechange: Add another parameter to FindGRFConfig() to define search restrictions.
frosch <frosch@openttd.org>
parents: 16250
diff changeset
1059 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
1060 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
1061
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
1062 *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
1063 (*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
1064
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
1065 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
1066
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
1067 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
1068 }
15579
5f128be91f59 (svn r20239) -Doc: Give a common name to all fall throughs (FALL THROUGH).
terkhen <terkhen@openttd.org>
parents: 15563
diff changeset
1069 /* FALL THROUGH */
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1070 case 4:
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1071 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
1072 /* FALL THROUGH */
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
1073 case 2:
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1074 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
1075 /* FALL THROUGH */
15201
071e920abcfb (svn r19830) -Codechange: Move variable declarations to their first use.
alberth <alberth@openttd.org>
parents: 15200
diff changeset
1076 case 3: {
071e920abcfb (svn r19830) -Codechange: Move variable declarations to their first use.
alberth <alberth@openttd.org>
parents: 15200
diff changeset
1077 int i = 0;
15203
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
1078 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
1079
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
1080 this->vscroll->SetCapacityFromWidget(this, SNGRFS_FILE_LIST);
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
1081 this->vscroll->SetCount(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
1082
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
1083 this->vscroll2->SetCapacityFromWidget(this, SNGRFS_AVAIL_LIST);
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
1084 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
1085 break;
15201
071e920abcfb (svn r19830) -Codechange: Move variable declarations to their first use.
alberth <alberth@openttd.org>
parents: 15200
diff changeset
1086 }
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
1087 }
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
1088
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1089 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
1090
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
1091 this->SetWidgetsDisabledState(!this->editable,
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1092 SNGRFS_PRESET_LIST,
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1093 SNGRFS_APPLY_CHANGES,
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1094 SNGRFS_TOGGLE_PALETTE,
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1095 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
1096 );
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
1097 this->SetWidgetDisabledState(SNGRFS_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
1098
15203
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
1099 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
1100 this->SetWidgetsDisabledState(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
1101 SNGRFS_REMOVE,
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1102 SNGRFS_MOVE_UP,
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1103 SNGRFS_MOVE_DOWN,
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1104 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
1105 );
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1106 this->SetWidgetDisabledState(SNGRFS_SET_PARAMETERS, !this->show_params || 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
1107 this->SetWidgetDisabledState(SNGRFS_TOGGLE_PALETTE, 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
1108
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1109 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
1110 /* All widgets are now enabled, so disable widgets we can't use */
15203
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
1111 if (this->active_sel == this->actives) this->DisableWidget(SNGRFS_MOVE_UP);
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
1112 if (this->active_sel->next == NULL) this->DisableWidget(SNGRFS_MOVE_DOWN);
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
1113 if (this->active_sel->IsOpenTTDBaseGRF()) this->DisableWidget(SNGRFS_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
1114 }
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1115
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1116 this->SetWidgetDisabledState(SNGRFS_PRESET_DELETE, this->preset == -1);
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1117
c001604f4ab3 (svn r17675) -Codechange: move the 'state' changes out of the OnPaint of the newgrf window
rubidium <rubidium@openttd.org>
parents: 13168
diff changeset
1118 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
1119 bool has_compatible = false;
15203
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
1120 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
1121 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
1122 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
1123 }
16394
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1124 uint16 widget_data;
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1125 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
1126 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
1127 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
1128 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
1129 } else {
16394
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1130 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
1131 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
1132 }
16394
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1133 this->GetWidget<NWidgetCore>(SNGRFS_CONTENT_DOWNLOAD)->widget_data = widget_data;
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1134 this->GetWidget<NWidgetCore>(SNGRFS_CONTENT_DOWNLOAD)->tool_tip = tool_tip;
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1135 this->GetWidget<NWidgetCore>(SNGRFS_CONTENT_DOWNLOAD2)->widget_data = widget_data;
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1136 this->GetWidget<NWidgetCore>(SNGRFS_CONTENT_DOWNLOAD2)->tool_tip = tool_tip;
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1137
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
1138 this->SetWidgetDisabledState(SNGRFS_PRESET_SAVE, has_missing);
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1139 }
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1140
15209
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1141 virtual void OnMouseLoop()
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1142 {
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
1143 if (this->editable) this->HandleEditBox(SNGRFS_FILTER);
15209
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1144 }
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1145
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1146 virtual EventState OnKeyPress(uint16 key, uint16 keycode)
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1147 {
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
1148 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
1149
15209
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1150 switch (keycode) {
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1151 case WKC_UP:
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1152 /* scroll up by one */
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1153 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
1154 break;
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1155
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1156 case WKC_DOWN:
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1157 /* scroll down by one */
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1158 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
1159 break;
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1160
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1161 case WKC_PAGEUP:
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1162 /* 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
1163 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
1164 break;
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1165
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1166 case WKC_PAGEDOWN:
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1167 /* 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
1168 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
1169 break;
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1170
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1171 case WKC_HOME:
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1172 /* jump to beginning */
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1173 this->avail_pos = 0;
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1174 break;
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1175
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1176 case WKC_END:
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1177 /* jump to end */
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1178 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
1179 break;
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1180
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1181 default: {
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1182 /* Handle editbox input */
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1183 EventState state = ES_NOT_HANDLED;
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1184 if (this->HandleEditBoxKey(SNGRFS_FILTER, key, keycode, state) == HEBR_EDITING) {
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1185 this->OnOSKInput(SNGRFS_FILTER);
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1186 }
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1187 return state;
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1188 }
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1189 }
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1190
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1191 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
1192 if (this->avail_pos >= 0) {
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1193 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
1194 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
1195 this->InvalidateData(0);
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1196 }
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1197
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1198 return ES_HANDLED;
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1199 }
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1200
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1201 virtual void OnOSKInput(int wid)
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1202 {
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
1203 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
1204
15209
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1205 this->avails.SetFilterState(!StrEmpty(this->edit_str_buf));
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1206 this->avails.ForceRebuild();
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1207 this->InvalidateData(0);
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1208 }
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1209
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1210 private:
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1211 /** 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
1212 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
1213 {
16614
1111794047a4 (svn r21344) -Feature [FS#4214]: Natural sorting of strings using ICU.
terkhen <terkhen@openttd.org>
parents: 16601
diff changeset
1214 int i = strnatcmp((*a)->GetName(), (*b)->GetName()); // 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
1215 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
1216
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
1217 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
1218 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
1219
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
1220 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
1221 }
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1222
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1223 /** Filter grfs by tags/name */
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1224 static bool CDECL TagNameFilter(const GRFConfig * const *a, const char *filter_string)
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1225 {
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1226 if (strcasestr((*a)->GetName(), filter_string) != NULL) return true;
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1227 if ((*a)->filename != NULL && strcasestr((*a)->filename, filter_string) != NULL) return true;
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1228 if ((*a)->GetDescription() != NULL && strcasestr((*a)->GetDescription(), filter_string) != NULL) return true;
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1229 return false;
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1230 }
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1231
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1232 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
1233 {
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1234 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
1235
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1236 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
1237
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1238 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
1239 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
1240 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
1241 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
1242
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
1243 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
1244 *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
1245 } 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
1246 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
1247 /*
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
1248 * If the best version is 0, then all NewGRF with this GRF ID
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
1249 * have version 0, so for backward compatability reasons we
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
1250 * 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
1251 * 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
1252 * 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
1253 */
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
1254 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
1255 *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
1256 }
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
1257 }
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1258 }
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1259
15209
eb71d6bac72c (svn r19838) -Change: Add filter capability to the availables list.
alberth <alberth@openttd.org>
parents: 15208
diff changeset
1260 this->avails.Filter(this->edit_str_buf);
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1261 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
1262 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
1263 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
1264
15212
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
1265 if (this->avail_sel != NULL) {
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
1266 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
1267 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
1268 }
a4e976b89e90 (svn r19841) -Feature: Setup NewGRFs from a single window.
alberth <alberth@openttd.org>
parents: 15211
diff changeset
1269
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
1270 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
1271 }
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1272 };
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1273
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1274 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
1275 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
1276
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1277 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
1278 &NameSorter,
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1279 };
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1280
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1281 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
1282 &TagNameFilter,
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1283 };
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1284
15620
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
1285 /**
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
1286 * 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
1287 * 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
1288 * - 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
1289 * - 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
1290 */
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
1291 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
1292 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
1293 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
1294 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
1295 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
1296 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
1297
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
1298 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
1299 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
1300 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
1301 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
1302
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
1303 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
1304 {
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
1305 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
1306 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
1307 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
1308
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
1309 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
1310 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
1311 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
1312
67f16153e351 (svn r21108) -Add: Copy the 'editable' flag of the newgrf window to its layout widget.
alberth <alberth@openttd.org>
parents: 16286
diff changeset
1313 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
1314 }
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
1315
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
1316 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
1317 {
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
1318 /* 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
1319 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
1320 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
1321 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
1322
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
1323 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
1324 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
1325 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
1326
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
1327 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
1328 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
1329 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
1330
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
1331 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
1332 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
1333 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
1334
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
1335 /* 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
1336 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
1337 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
1338
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
1339 /* 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
1340 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
1341 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
1342
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
1343 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
1344 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
1345 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
1346
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
1347 /* 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
1348 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
1349 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
1350
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
1351 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
1352 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
1353 this->resize_y = LeastCommonMultiple(this->resize_y, this->inf->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
1354 }
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
1355
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
1356 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
1357 {
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
1358 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
1359
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
1360 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
1361 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
1362 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
1363
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
1364 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
1365 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
1366 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
1367
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
1368 /* Use 2 or 3 colmuns? */
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
1369 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
1370 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
1371 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
1372
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
1373 /* Info panel is a seperate column in both modes. Compute its width first. */
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
1374 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
1375 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
1376 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
1377 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
1378 } 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
1379 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
1380 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
1381 }
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
1382 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
1383 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
1384
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
1385 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
1386
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
1387 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
1388 /* 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
1389 * 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
1390 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
1391 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
1392 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
1393 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
1394
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
1395 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
1396
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
1397 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
1398 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
1399 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
1400 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
1401 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
1402
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
1403 uint avs_height = ComputeMaxSize(this->avs->smallest_y, given_height, this->avs->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
1404 uint acs_height = ComputeMaxSize(this->acs->smallest_y, given_height, this->acs->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
1405
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
1406 /* Assign size and position to the childs. */
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
1407 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
1408 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
1409 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
1410 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
1411 } 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
1412 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
1413 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
1414 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
1415 }
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
1416
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
1417 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
1418 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
1419 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
1420
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
1421 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
1422 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
1423 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
1424 } 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
1425 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
1426 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
1427 }
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
1428 } 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
1429 /* 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
1430 * 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
1431 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
1432 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
1433 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
1434 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
1435
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
1436 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
1437 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
1438 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
1439
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
1440 uint avs_height = ComputeMaxSize(this->avs->smallest_y, this->avs->smallest_y + extra_height / 2, this->avs->GetVerticalStepSize(sizing));
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
1441 if (this->editable) extra_height -= avs_height - this->avs->smallest_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
1442 uint acs_height = ComputeMaxSize(this->acs->smallest_y, this->acs->smallest_y + extra_height, this->acs->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
1443
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
1444 /* Assign size and position to the childs. */
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
1445 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
1446 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
1447 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
1448 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
1449
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
1450 uint ypos = y + this->acs->padding_top;
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
1451 this->acs->AssignSizePosition(sizing, x + this->acs->padding_left, ypos, 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
1452 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
1453 ypos += acs_height + this->acs->padding_bottom + INTER_LIST_SPACING + this->avs->padding_top;
b7cc33056746 (svn r21109) -Add: Don't display available newgrfs when the newgrf list is not editable.
alberth <alberth@openttd.org>
parents: 16392
diff changeset
1454 this->avs->AssignSizePosition(sizing, x + this->avs->padding_left, ypos, avs_width, avs_height, 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
1455 } 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
1456 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
1457 }
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
1458 } 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
1459 uint ypos = y + this->acs->padding_top;
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
1460 this->acs->AssignSizePosition(sizing, x + this->acs->padding_left, ypos, 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
1461 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
1462 ypos += acs_height + this->acs->padding_bottom + INTER_LIST_SPACING + this->avs->padding_top;
b7cc33056746 (svn r21109) -Add: Don't display available newgrfs when the newgrf list is not editable.
alberth <alberth@openttd.org>
parents: 16392
diff changeset
1463 this->avs->AssignSizePosition(sizing, x + this->avs->padding_left, ypos, avs_width, avs_height, 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
1464 } 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
1465 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
1466 }
b7cc33056746 (svn r21109) -Add: Don't display available newgrfs when the newgrf list is not editable.
alberth <alberth@openttd.org>
parents: 16392
diff changeset
1467 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
1468 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
1469 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
1470 }
b7cc33056746 (svn r21109) -Add: Don't display available newgrfs when the newgrf list is not editable.
alberth <alberth@openttd.org>
parents: 16392
diff changeset
1471 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
1472 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
1473 }
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
1474 }
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
1475 }
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
1476
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
1477 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
1478 {
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
1479 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
1480
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
1481 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
1482 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
1483 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
1484 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
1485 }
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
1486
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
1487 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
1488 {
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
1489 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
1490 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
1491 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
1492 }
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
1493 };
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
1494
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
1495 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
1496 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
1497 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
1498 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
1499
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
1500 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
1501 /* 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
1502 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
1503 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
1504 SetPadding(0, WD_FRAMETEXT_RIGHT, 0, 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
1505 NWidget(WWT_DROPDOWN, COLOUR_YELLOW, SNGRFS_PRESET_LIST), SetFill(1, 0), SetResize(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
1506 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
1507 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
1508 NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
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
1509 NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, SNGRFS_PRESET_SAVE), SetFill(1, 0), SetResize(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
1510 SetDataTip(STR_NEWGRF_SETTINGS_PRESET_SAVE, STR_NEWGRF_SETTINGS_PRESET_SAVE_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
1511 NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, SNGRFS_PRESET_DELETE), SetFill(1, 0), SetResize(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
1512 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
1513 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
1514
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 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
1516 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
1517 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
1518 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
1519 /* 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
1520 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
1521 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
1522 NWidget(WWT_INSET, COLOUR_MAUVE, SNGRFS_FILE_LIST), SetMinimalSize(100, 1), SetPadding(2, 2, 2, 2),
15778
4f4c3160cca8 (svn r20452) -Codechange: Remove NWidgetCore::FindScrollbar() and associate scrollbar explicitly using a NWidgetPart via SetScrollbar().
frosch <frosch@openttd.org>
parents: 15626
diff changeset
1523 SetFill(1, 1), SetResize(1, 1), SetScrollbar(SNGRFS_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
1524 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
1525 EndContainer(),
15787
6c4bec3b8401 (svn r20461) -Codechange: Replace WWT_HSCROLLBAR, WWT_SCROLLBAR and WWT_SCROLL2BAR with NWID_HSCROLLBAR and NWID_VSCROLLBAR.
frosch <frosch@openttd.org>
parents: 15779
diff changeset
1526 NWidget(NWID_VSCROLLBAR, COLOUR_MAUVE, SNGRFS_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
1527 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
1528 /* Buttons. */
16394
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1529 NWidget(NWID_SELECTION, INVALID_COLOUR, SNGRFS_SHOW_REMOVE),
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1530 NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPadding(2, 2, 2, 2), SetPIP(0, WD_RESIZEBOX_WIDTH, 0),
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1531 NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, SNGRFS_REMOVE), SetFill(1, 0), SetResize(1, 0),
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1532 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
1533 NWidget(NWID_VERTICAL),
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1534 NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, SNGRFS_MOVE_UP), SetFill(1, 0), SetResize(1, 0),
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1535 SetDataTip(STR_NEWGRF_SETTINGS_MOVEUP, STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP),
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1536 NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, SNGRFS_MOVE_DOWN), SetFill(1, 0), SetResize(1, 0),
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1537 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
1538 EndContainer(),
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1539 EndContainer(),
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1540
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1541 NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPadding(2, 2, 2, 2),
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1542 NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, SNGRFS_RESCAN_FILES2), SetFill(1, 0), SetResize(1, 0),
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1543 SetDataTip(STR_NEWGRF_SETTINGS_RESCAN_FILES, STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP),
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1544 NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, SNGRFS_CONTENT_DOWNLOAD2), SetFill(1, 0), SetResize(1, 0),
82aa3e68581d (svn r21110) -Add: Tidy up the buttons of the active newgrfs list.
alberth <alberth@openttd.org>
parents: 16393
diff changeset
1545 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
1546 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
1547 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
1548 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
1549 };
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
1550
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 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
1552 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
1553 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
1554 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
1555 /* 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
1556 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
1557 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
1558 NWidget(WWT_TEXT, COLOUR_MAUVE), SetFill(0, 1), SetDataTip(STR_NEWGRF_FILTER_TITLE, 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
1559 NWidget(WWT_EDITBOX, COLOUR_MAUVE, SNGRFS_FILTER), SetFill(1, 0), SetMinimalSize(50, 12), SetResize(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
1560 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
1561 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
1562 /* 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
1563 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
1564 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
1565 NWidget(WWT_INSET, COLOUR_MAUVE, SNGRFS_AVAIL_LIST), SetMinimalSize(100, 1), SetPadding(2, 2, 2, 2),
15778
4f4c3160cca8 (svn r20452) -Codechange: Remove NWidgetCore::FindScrollbar() and associate scrollbar explicitly using a NWidgetPart via SetScrollbar().
frosch <frosch@openttd.org>
parents: 15626
diff changeset
1566 SetFill(1, 1), SetResize(1, 1), SetScrollbar(SNGRFS_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
1567 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
1568 EndContainer(),
15787
6c4bec3b8401 (svn r20461) -Codechange: Replace WWT_HSCROLLBAR, WWT_SCROLLBAR and WWT_SCROLL2BAR with NWID_HSCROLLBAR and NWID_VSCROLLBAR.
frosch <frosch@openttd.org>
parents: 15779
diff changeset
1569 NWidget(NWID_VSCROLLBAR, COLOUR_MAUVE, SNGRFS_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
1570 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
1571 /* 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
1572 NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPadding(2, 2, 2, 2), SetPIP(0, WD_RESIZEBOX_WIDTH, 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
1573 NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, SNGRFS_ADD), SetFill(1, 0), SetResize(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
1574 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
1575 NWidget(NWID_VERTICAL),
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 NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, SNGRFS_RESCAN_FILES), SetFill(1, 0), SetResize(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
1577 SetDataTip(STR_NEWGRF_SETTINGS_RESCAN_FILES, STR_NEWGRF_SETTINGS_RESCAN_FILES_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
1578 NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, SNGRFS_CONTENT_DOWNLOAD), SetFill(1, 0), SetResize(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
1579 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
1580 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
1581 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
1582 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
1583 };
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
1584
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 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
1586 /* Right side, info 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
1587 NWidget(WWT_PANEL, COLOUR_MAUVE), SetPadding(0, 0, 2, 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
1588 NWidget(WWT_EMPTY, COLOUR_MAUVE, SNGRFS_NEWGRF_INFO_TITLE), SetFill(1, 0), SetResize(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
1589 NWidget(WWT_EMPTY, COLOUR_MAUVE, SNGRFS_NEWGRF_INFO), SetFill(1, 1), SetResize(1, 1), SetMinimalSize(150, 100),
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 EndContainer(),
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
1591 NWidget(NWID_SELECTION, INVALID_COLOUR, SNGRFS_SHOW_APPLY),
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
1592 /* 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
1593 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
1594 NWidget(NWID_VERTICAL),
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
1595 NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, SNGRFS_SET_PARAMETERS), SetFill(1, 0), SetResize(1, 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
1596 SetDataTip(STR_NEWGRF_SETTINGS_SET_PARAMETERS, STR_NULL),
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
1597 NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, SNGRFS_TOGGLE_PALETTE), SetFill(1, 0), SetResize(1, 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
1598 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
1599 EndContainer(),
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
1600 NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, SNGRFS_APPLY_CHANGES), SetFill(1, 0), SetResize(1, 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
1601 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
1602 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
1603 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
1604 };
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
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 /** 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
1607 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
1608 {
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 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
1610
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 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
1612 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
1613 *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
1614
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 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
1616 *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
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 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
1619 }
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1620
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
1621 /* 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
1622 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
1623 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
1624 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
1625 NWidget(WWT_CAPTION, COLOUR_MAUVE), SetDataTip(STR_NEWGRF_SETTINGS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
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
1626 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
1627 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
1628 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
1629 /* Resize button. */
e28e566488a9 (svn r19840) -Add: Add 'rescan' functionality to the NewGRF window.
alberth <alberth@openttd.org>
parents: 15209
diff changeset
1630 NWidget(NWID_HORIZONTAL),
e28e566488a9 (svn r19840) -Add: Add 'rescan' functionality to the NewGRF window.
alberth <alberth@openttd.org>
parents: 15209
diff changeset
1631 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
1632 NWidget(WWT_RESIZEBOX, COLOUR_MAUVE),
e28e566488a9 (svn r19840) -Add: Add 'rescan' functionality to the NewGRF window.
alberth <alberth@openttd.org>
parents: 15209
diff changeset
1633 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
1634 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
1635 };
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
1636
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
1637 /* Window definition of the manage newgrfs window */
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
1638 static const WindowDesc _newgrf_desc(
13796
3e68f07eb821 (svn r18322) -Codechange: remove the WDP duplication; no need to tell the same twice.
rubidium <rubidium@openttd.org>
parents: 13755
diff changeset
1639 WDP_CENTER, 300, 263,
5893
8547517ef719 (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium <rubidium@openttd.org>
parents: 5668
diff changeset
1640 WC_GAME_OPTIONS, WC_NONE,
13749
fc3ab8256c95 (svn r18274) -Codechange: remove the unused WDF flags
rubidium <rubidium@openttd.org>
parents: 13705
diff changeset
1641 WDF_UNCLICK_BUTTONS,
13564
bae287664b02 (svn r18086) -Codechange: remove 'widget' from WindowDesc
rubidium <rubidium@openttd.org>
parents: 13419
diff changeset
1642 _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
1643 );
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1644
15620
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
1645 /**
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
1646 * 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
1647 * @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
1648 * @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
1649 */
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1650 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
1651 {
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1652 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
1653 DeleteWindowByClass(WC_GRF_PARAMETERS);
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1654 NewGRFWindow *nw = dynamic_cast<NewGRFWindow*>(w);
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1655
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
1656 GamelogStartAction(GLAT_GRF);
15203
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
1657 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
1658 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
1659 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
1660 GamelogStopAction();
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1661
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1662 /* Show new, updated list */
15201
071e920abcfb (svn r19830) -Codechange: Move variable declarations to their first use.
alberth <alberth@openttd.org>
parents: 15200
diff changeset
1663 GRFConfig *c;
071e920abcfb (svn r19830) -Codechange: Move variable declarations to their first use.
alberth <alberth@openttd.org>
parents: 15200
diff changeset
1664 int i = 0;
15203
2ef926c44a98 (svn r19832) -Codechange: Rename variables list->actives, sel->active_sel.
alberth <alberth@openttd.org>
parents: 15202
diff changeset
1665 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
1666 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
1667 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
1668 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
1669 nw->avails.ForceRebuild();
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1670
15208
ebff51f3984b (svn r19837) -Change: Display list of available (non-active) grfs in the NewGRF window.
alberth <alberth@openttd.org>
parents: 15207
diff changeset
1671 w->InvalidateData();
15982
62befe1b097c (svn r20670) -Add: support for action F
rubidium <rubidium@openttd.org>
parents: 15920
diff changeset
1672
62befe1b097c (svn r20670) -Add: support for action F
rubidium <rubidium@openttd.org>
parents: 15920
diff changeset
1673 ReInitAllWindows();
62befe1b097c (svn r20670) -Add: support for action F
rubidium <rubidium@openttd.org>
parents: 15920
diff changeset
1674 DeleteWindowByClass(WC_BUILD_OBJECT);
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1675 }
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1676 }
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1677
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1678
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1679
15620
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
1680 /**
f8e9a3f0c140 (svn r20283) -Codechange: Unify start of doygen comments.
frosch <frosch@openttd.org>
parents: 15618
diff changeset
1681 * 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
1682 * @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
1683 * @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
1684 * @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
1685 * 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
1686 * @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
1687 */
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1688 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
1689 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1690 DeleteWindowByClass(WC_GAME_OPTIONS);
9207
839a532bf0f6 (svn r13073) -Codechange: make classes of the NewGRF windows
peter1138 <peter1138@openttd.org>
parents: 9164
diff changeset
1691 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
1692 }