src/toolbar_gui.cpp
author smatz
Wed, 07 May 2008 15:53:58 +0000
changeset 10450 0b56b6553350
parent 10445 2dd7d9d0a957
child 10452 27eb85080c0a
permissions -rw-r--r--
(svn r12992) -Fix (r12976): main toolbar wasn't marked dirty when a child combobox was destroyed
2186
461a2aff3486 (svn r2701) Insert Id tags into all source files
tron
parents: 2163
diff changeset
     1
/* $Id$ */
461a2aff3486 (svn r2701) Insert Id tags into all source files
tron
parents: 2163
diff changeset
     2
9219
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
     3
/** @file toolbar_gui.cpp Code related to the (main) toolbar. */
6527
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6145
diff changeset
     4
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
     5
#include "stdafx.h"
1891
92a3b0aa0946 (svn r2397) - CodeChange: rename all "ttd" files to "openttd" files.
Darkvater
parents: 1885
diff changeset
     6
#include "openttd.h"
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
     7
#include "gui.h"
8603
88c5ce6a5215 (svn r11668) -Codechange: more refactoring aimed at reducing compile time and making it more logic where function definitions can be found.
rubidium
parents: 8602
diff changeset
     8
#include "window_gui.h"
88c5ce6a5215 (svn r11668) -Codechange: more refactoring aimed at reducing compile time and making it more logic where function definitions can be found.
rubidium
parents: 8602
diff changeset
     9
#include "window_func.h"
8720
4e60c30e2006 (svn r11787) -Codechange: more header rewrites. This time related to viewport.h.
rubidium
parents: 8710
diff changeset
    10
#include "viewport_func.h"
8612
6414fc21c2f3 (svn r11677) -Codechange: move price and command related types/functions to their respective places.
rubidium
parents: 8610
diff changeset
    11
#include "command_func.h"
2159
3b634157c3b2 (svn r2669) Shuffle some more stuff around to reduce dependencies
tron
parents: 2150
diff changeset
    12
#include "variables.h"
2676
2ba71e034d97 (svn r3218) -Feature: Multiheaded train engines will now stay in the same train
bjarni
parents: 2652
diff changeset
    13
#include "train.h"
7353
716c6dd9322a (svn r10097) -Feature: Add support for articulated road vehicles, or callbacks 11 and 17 for
maedhros
parents: 7343
diff changeset
    14
#include "roadveh.h"
4668
8b6035c51188 (svn r6562) -Codechange: merged the vehicle list window widget arrays
bjarni
parents: 4634
diff changeset
    15
#include "vehicle_gui.h"
8607
d16299e657ba (svn r11672) -Codechange: refactor some stuff out of gui.h.
rubidium
parents: 8604
diff changeset
    16
#include "rail_gui.h"
d16299e657ba (svn r11672) -Codechange: refactor some stuff out of gui.h.
rubidium
parents: 8604
diff changeset
    17
#include "road_gui.h"
8636
2b158acb649c (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents: 8635
diff changeset
    18
#include "date_func.h"
8640
1e93b81e96d2 (svn r11706) -Codechange: split vehicle.h and remove another bunch of useless includes.
rubidium
parents: 8636
diff changeset
    19
#include "vehicle_func.h"
8653
a83f7a536919 (svn r11719) -Codechange: split sound.h in a header with types and one with functions.
rubidium
parents: 8645
diff changeset
    20
#include "sound_func.h"
8701
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8692
diff changeset
    21
#include "terraform_gui.h"
8345
6caa3fdb972c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents: 8320
diff changeset
    22
#include "transparency.h"
8610
17cc343a23dd (svn r11675) -Codechange: split the string types from the string functions.
rubidium
parents: 8607
diff changeset
    23
#include "strings_func.h"
8750
fdd6054e7bae (svn r11818) -Codechange: split player.h into smaller pieces.
rubidium
parents: 8720
diff changeset
    24
#include "player_base.h"
fdd6054e7bae (svn r11818) -Codechange: split player.h into smaller pieces.
rubidium
parents: 8720
diff changeset
    25
#include "player_func.h"
fdd6054e7bae (svn r11818) -Codechange: split player.h into smaller pieces.
rubidium
parents: 8720
diff changeset
    26
#include "player_gui.h"
8766
c86cfa3a7580 (svn r11834) -Codechange: only include settings_type.h if needed.
rubidium
parents: 8760
diff changeset
    27
#include "settings_type.h"
9219
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
    28
#include "toolbar_gui.h"
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
    29
#include "vehicle_base.h"
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
    30
#include "gfx_func.h"
10225
8becb17444a7 (svn r12757) -Codechange: move all cheat related stuff from all over the place to a single location.
rubidium
parents: 9222
diff changeset
    31
#include "cheat_func.h"
10235
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
    32
#include "transparency_gui.h"
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
    33
#include "screenshot.h"
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
    34
#include "newgrf_config.h"
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
    35
#include "signs_func.h"
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
    36
#include "fios.h"
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
    37
#include "functions.h"
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
    38
#include "console.h"
10237
f14be17a032a (svn r12769) -Codechange: some coding style cleanups.
rubidium
parents: 10235
diff changeset
    39
#include "news_gui.h"
10445
2dd7d9d0a957 (svn r12987) -Codechange: split viewport and tile selection.
rubidium
parents: 10434
diff changeset
    40
#include "tilehighlight_func.h"
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    41
8760
ce0891c412ce (svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents: 8750
diff changeset
    42
#include "network/network.h"
10235
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
    43
#include "network/network_gui.h"
193
0a7025304867 (svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents: 176
diff changeset
    44
9219
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
    45
#include "table/strings.h"
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
    46
#include "table/sprites.h"
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    47
10235
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
    48
static Window *PopupMainToolbMenu(Window *w, uint16 parent_button, StringID base_string, byte item_count, byte disabled_mask);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
    49
static Window *PopupMainPlayerToolbMenu(Window *w, int main_button, int gray);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    50
10235
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
    51
RailType _last_built_railtype;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
    52
RoadType _last_built_roadtype;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
    53
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
    54
static void SelectSignTool()
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
    55
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
    56
	if (_cursor.sprite == SPR_CURSOR_SIGN) {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
    57
		ResetObjectToPlace();
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
    58
	} else {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
    59
		SetObjectToPlace(SPR_CURSOR_SIGN, PAL_NONE, VHM_RECT, WC_MAIN_TOOLBAR, 0);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
    60
		_place_proc = PlaceProc_Sign;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
    61
	}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
    62
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
    63
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
    64
/** Returns the position where the toolbar wants the menu to appear.
9219
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
    65
 * Make sure the dropdown is fully visible within the window.
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
    66
 * x + w->left because x is supposed to be the offset of the toolbar-button
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
    67
 * we clicked on and w->left the toolbar window itself. So meaning that
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
    68
 * the default position is aligned with the left side of the clicked button */
10235
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
    69
static Point GetToolbarDropdownPos(uint16 parent_button, int width, int height)
9219
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
    70
{
10229
fba3f9fa44d7 (svn r12761) -Codechange: lots of minor whitespace coding style fixes around operators.
rubidium
parents: 10225
diff changeset
    71
	const Window *w = FindWindowById(WC_MAIN_TOOLBAR, 0);
9219
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
    72
	Point pos;
9222
7e175d5a9b4e (svn r12402) -Fix: some toolbars didn't seem to show anymore.
rubidium
parents: 9219
diff changeset
    73
	pos.x = w->widget[GB(parent_button, 0, 8)].left;
9219
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
    74
	pos.x = w->left + Clamp(pos.x, 0, w->width - width);
9222
7e175d5a9b4e (svn r12402) -Fix: some toolbars didn't seem to show anymore.
rubidium
parents: 9219
diff changeset
    75
	pos.y = w->height;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    76
9219
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
    77
	return pos;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    78
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    79
10235
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
    80
/* --- Pausing --- */
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    81
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    82
static void ToolbarPauseClick(Window *w)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    83
{
2549
f1d3b383d557 (svn r3078) Some more stuff, which piled up:
tron
parents: 2548
diff changeset
    84
	if (_networking && !_network_server) return; // only server can pause the game
213
770e504a6e51 (svn r214) -Feature: CMD_NET_INSTANT [just in time command handling over network] (sign_de)
darkvater
parents: 206
diff changeset
    85
6557
8381016f71f3 (svn r9034) -Codechange: renamed _pause to _pause_game, as some targets already have
truelight
parents: 6527
diff changeset
    86
	if (DoCommandP(0, _pause_game ? 0 : 1, 0, NULL, CMD_PAUSE)) SndPlayFx(SND_15_BEEP);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    87
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    88
10235
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
    89
/* --- Fast forwarding --- */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
    90
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    91
static void ToolbarFastForwardClick(Window *w)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    92
{
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    93
	_fast_forward ^= true;
541
e1cd34389f79 (svn r925) Use sound enums
tron
parents: 534
diff changeset
    94
	SndPlayFx(SND_15_BEEP);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    95
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    96
10235
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
    97
/* --- Options button menu --- */
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    98
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    99
static void ToolbarOptionsClick(Window *w)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   100
{
4822
ff5230aeb132 (svn r6746) -Codechange: Remove the need for double strings in "checkmarked" items. While
Darkvater
parents: 4821
diff changeset
   101
	uint16 x = 0;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   102
8920
04df97185061 (svn r11994) -Codechange: Remove numbers from string names where the strings aren't present in TTD, since they don't correspond to either TTD's TextIDs or OpenTTD's StringIDs.
maedhros
parents: 8766
diff changeset
   103
	w = PopupMainToolbMenu(w, 2, STR_02C4_GAME_OPTIONS, 14, 0);
7511
ddbac631dc6d (svn r10271) -Fix r9563: move the Transparency Option menu item to the place it should have been in the first place: Option Menu, not Map Menu (go figure :p)
truelight
parents: 7498
diff changeset
   104
8427
143b0be22af1 (svn r11484) -Codechange: Remove the doubled function SetBitT and rename the remaining to fit with the naming style
skidd13
parents: 8425
diff changeset
   105
	if (HasBit(_display_opt, DO_SHOW_TOWN_NAMES))    SetBit(x,  6);
143b0be22af1 (svn r11484) -Codechange: Remove the doubled function SetBitT and rename the remaining to fit with the naming style
skidd13
parents: 8425
diff changeset
   106
	if (HasBit(_display_opt, DO_SHOW_STATION_NAMES)) SetBit(x,  7);
143b0be22af1 (svn r11484) -Codechange: Remove the doubled function SetBitT and rename the remaining to fit with the naming style
skidd13
parents: 8425
diff changeset
   107
	if (HasBit(_display_opt, DO_SHOW_SIGNS))         SetBit(x,  8);
143b0be22af1 (svn r11484) -Codechange: Remove the doubled function SetBitT and rename the remaining to fit with the naming style
skidd13
parents: 8425
diff changeset
   108
	if (HasBit(_display_opt, DO_WAYPOINTS))          SetBit(x,  9);
143b0be22af1 (svn r11484) -Codechange: Remove the doubled function SetBitT and rename the remaining to fit with the naming style
skidd13
parents: 8425
diff changeset
   109
	if (HasBit(_display_opt, DO_FULL_ANIMATION))     SetBit(x, 10);
143b0be22af1 (svn r11484) -Codechange: Remove the doubled function SetBitT and rename the remaining to fit with the naming style
skidd13
parents: 8425
diff changeset
   110
	if (HasBit(_display_opt, DO_FULL_DETAIL))        SetBit(x, 11);
9111
7f882e1856c2 (svn r12198) -Fix [FS#1789]: "Transparent buildings" now only toggles buildings, so show tick when buildings are transparent.
peter1138
parents: 9080
diff changeset
   111
	if (IsTransparencySet(TO_HOUSES))                SetBit(x, 12);
7f882e1856c2 (svn r12198) -Fix [FS#1789]: "Transparent buildings" now only toggles buildings, so show tick when buildings are transparent.
peter1138
parents: 9080
diff changeset
   112
	if (IsTransparencySet(TO_SIGNS))                 SetBit(x, 13);
8578
55218950ce2d (svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents: 8566
diff changeset
   113
	WP(w, menu_d).checked_items = x;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   114
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   115
10235
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   116
static void MenuClickSettings(int index)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   117
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   118
	switch (index) {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   119
		case 0: ShowGameOptions();      return;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   120
		case 1: ShowGameDifficulty();   return;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   121
		case 2: ShowPatchesSelection(); return;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   122
		case 3: ShowNewGRFSettings(!_networking, true, true, &_grfconfig);   return;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   123
		case 4: ShowTransparencyToolbar(); break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   124
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   125
		case  6: ToggleBit(_display_opt, DO_SHOW_TOWN_NAMES);    break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   126
		case  7: ToggleBit(_display_opt, DO_SHOW_STATION_NAMES); break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   127
		case  8: ToggleBit(_display_opt, DO_SHOW_SIGNS);         break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   128
		case  9: ToggleBit(_display_opt, DO_WAYPOINTS);          break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   129
		case 10: ToggleBit(_display_opt, DO_FULL_ANIMATION);     break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   130
		case 11: ToggleBit(_display_opt, DO_FULL_DETAIL);        break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   131
		case 12: ToggleTransparency(TO_HOUSES);                  break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   132
		case 13: ToggleTransparency(TO_SIGNS);                   break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   133
	}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   134
	MarkWholeScreenDirty();
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   135
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   136
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   137
/* --- Saving/loading button menu --- */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   138
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   139
static void ToolbarSaveClick(Window *w)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   140
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   141
	PopupMainToolbMenu(w, 3, STR_015C_SAVE_GAME, 4, 0);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   142
}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   143
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   144
static void ToolbarScenSaveOrLoad(Window *w)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   145
{
6145
d34703513ed0 (svn r8512) -Codechange: From the intro window enter the scenario editor. From the scenario editor dialog, remove the 'load heightmap' option and put that with the other options like 'load scenario', 'save scenario', etc. Play a little bit with positioning of elements inside the scenario editor dialog so it looks better.
Darkvater
parents: 6144
diff changeset
   146
	PopupMainToolbMenu(w, 3, STR_0292_SAVE_SCENARIO, 6, 0);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   147
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   148
10235
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   149
static void MenuClickSaveLoad(int index)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   150
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   151
	if (_game_mode == GM_EDITOR) {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   152
		switch (index) {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   153
			case 0: ShowSaveLoadDialog(SLD_SAVE_SCENARIO);  break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   154
			case 1: ShowSaveLoadDialog(SLD_LOAD_SCENARIO);  break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   155
			case 2: ShowSaveLoadDialog(SLD_LOAD_HEIGHTMAP); break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   156
			case 3: AskExitToGameMenu();                    break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   157
			case 5: HandleExitGameRequest();                break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   158
		}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   159
	} else {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   160
		switch (index) {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   161
			case 0: ShowSaveLoadDialog(SLD_SAVE_GAME); break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   162
			case 1: ShowSaveLoadDialog(SLD_LOAD_GAME); break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   163
			case 2: AskExitToGameMenu();               break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   164
			case 3: HandleExitGameRequest();           break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   165
		}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   166
	}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   167
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   168
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   169
/* --- Map button menu --- */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   170
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   171
static void ToolbarMapClick(Window *w)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   172
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   173
	PopupMainToolbMenu(w, 4, STR_02DE_MAP_OF_WORLD, 3, 0);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   174
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   175
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   176
static void MenuClickMap(int index)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   177
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   178
	switch (index) {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   179
		case 0: ShowSmallMap();            break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   180
		case 1: ShowExtraViewPortWindow(); break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   181
		case 2: ShowSignList();            break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   182
	}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   183
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   184
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   185
static void MenuClickScenMap(int index)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   186
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   187
	switch (index) {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   188
		case 0: ShowSmallMap();            break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   189
		case 1: ShowExtraViewPortWindow(); break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   190
		case 2: ShowSignList();            break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   191
		case 3: ShowTownDirectory();       break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   192
	}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   193
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   194
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   195
/* --- Town button menu --- */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   196
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   197
static void ToolbarTownClick(Window *w)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   198
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   199
	PopupMainToolbMenu(w, 5, STR_02BB_TOWN_DIRECTORY, 1, 0);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   200
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   201
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   202
static void MenuClickTown(int index)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   203
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   204
	ShowTownDirectory();
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   205
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   206
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   207
/* --- Subidies button menu --- */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   208
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   209
static void ToolbarSubsidiesClick(Window *w)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   210
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   211
	PopupMainToolbMenu(w, 6, STR_02DD_SUBSIDIES, 1, 0);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   212
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   213
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   214
static void MenuClickSubsidies(int index)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   215
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   216
	ShowSubsidiesList();
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   217
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   218
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   219
/* --- Stations button menu --- */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   220
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   221
static void ToolbarStationsClick(Window *w)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   222
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   223
	PopupMainPlayerToolbMenu(w, 7, 0);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   224
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   225
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   226
static void MenuClickStations(int index)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   227
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   228
	ShowPlayerStations((PlayerID)index);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   229
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   230
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   231
/* --- Finances button menu --- */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   232
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   233
static void ToolbarFinancesClick(Window *w)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   234
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   235
	PopupMainPlayerToolbMenu(w, 8, 0);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   236
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   237
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   238
static void MenuClickFinances(int index)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   239
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   240
	ShowPlayerFinances((PlayerID)index);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   241
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   242
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   243
/* --- Company's button menu --- */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   244
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   245
static void ToolbarPlayersClick(Window *w)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   246
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   247
	PopupMainPlayerToolbMenu(w, 9, 0);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   248
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   249
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   250
static void MenuClickCompany(int index)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   251
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   252
	if (_networking && index == 0) {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   253
		ShowClientList();
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   254
	} else {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   255
		if (_networking) index--;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   256
		ShowPlayerCompany((PlayerID)index);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   257
	}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   258
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   259
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   260
/* --- Graphs button menu --- */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   261
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   262
static void ToolbarGraphsClick(Window *w)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   263
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   264
	PopupMainToolbMenu(w, 10, STR_0154_OPERATING_PROFIT_GRAPH, 6, 0);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   265
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   266
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   267
static void MenuClickGraphs(int index)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   268
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   269
	switch (index) {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   270
		case 0: ShowOperatingProfitGraph();    break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   271
		case 1: ShowIncomeGraph();             break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   272
		case 2: ShowDeliveredCargoGraph();     break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   273
		case 3: ShowPerformanceHistoryGraph(); break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   274
		case 4: ShowCompanyValueGraph();       break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   275
		case 5: ShowCargoPaymentRates();       break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   276
	}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   277
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   278
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   279
/* --- League button menu --- */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   280
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   281
static void ToolbarLeagueClick(Window *w)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   282
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   283
	PopupMainToolbMenu(w, 11, STR_015A_COMPANY_LEAGUE_TABLE, 2, 0);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   284
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   285
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   286
static void MenuClickLeague(int index)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   287
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   288
	switch (index) {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   289
		case 0: ShowCompanyLeagueTable();      break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   290
		case 1: ShowPerformanceRatingDetail(); break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   291
	}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   292
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   293
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   294
/* --- Industries button menu --- */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   295
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   296
static void ToolbarIndustryClick(Window *w)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   297
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   298
	/* Disable build-industry menu if we are a spectator */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   299
	PopupMainToolbMenu(w, 12, STR_INDUSTRY_DIR, 2, (_current_player == PLAYER_SPECTATOR) ? (1 << 1) : 0);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   300
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   301
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   302
static void MenuClickIndustry(int index)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   303
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   304
	switch (index) {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   305
		case 0: ShowIndustryDirectory();   break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   306
		case 1: ShowBuildIndustryWindow(); break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   307
	}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   308
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   309
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   310
/* --- Trains button menu + 1 helper function for all vehicles. --- */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   311
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   312
static void ToolbarVehicleClick(Window *w, VehicleType veh)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   313
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   314
	const Vehicle *v;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   315
	int dis = ~0;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   316
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   317
	FOR_ALL_VEHICLES(v) {
10350
e08d68483283 (svn r12892) -Fix: too many items in the vehicle toolbars were greyed out.
rubidium
parents: 10281
diff changeset
   318
		if (v->type == veh && v->IsPrimaryVehicle()) ClrBit(dis, v->owner);
10235
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   319
	}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   320
	PopupMainPlayerToolbMenu(w, 13 + veh, dis);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   321
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   322
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   323
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   324
static void ToolbarTrainClick(Window *w)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   325
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   326
	ToolbarVehicleClick(w, VEH_TRAIN);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   327
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   328
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   329
static void MenuClickShowTrains(int index)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   330
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   331
	ShowVehicleListWindow((PlayerID)index, VEH_TRAIN);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   332
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   333
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   334
/* --- Road vehicle button menu --- */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   335
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   336
static void ToolbarRoadClick(Window *w)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   337
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   338
	ToolbarVehicleClick(w, VEH_ROAD);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   339
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   340
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   341
static void MenuClickShowRoad(int index)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   342
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   343
	ShowVehicleListWindow((PlayerID)index, VEH_ROAD);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   344
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   345
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   346
/* --- Ship button menu --- */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   347
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   348
static void ToolbarShipClick(Window *w)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   349
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   350
	ToolbarVehicleClick(w, VEH_SHIP);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   351
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   352
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   353
static void MenuClickShowShips(int index)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   354
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   355
	ShowVehicleListWindow((PlayerID)index, VEH_SHIP);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   356
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   357
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   358
/* --- Aircraft button menu --- */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   359
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   360
static void ToolbarAirClick(Window *w)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   361
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   362
	ToolbarVehicleClick(w, VEH_AIRCRAFT);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   363
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   364
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   365
static void MenuClickShowAir(int index)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   366
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   367
	ShowVehicleListWindow((PlayerID)index, VEH_AIRCRAFT);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   368
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   369
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   370
/* --- Zoom in button --- */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   371
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   372
static void ToolbarZoomInClick(Window *w)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   373
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   374
	if (DoZoomInOutWindow(ZOOM_IN, FindWindowById(WC_MAIN_WINDOW, 0))) {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   375
		w->HandleButtonClick(17);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   376
		SndPlayFx(SND_15_BEEP);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   377
	}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   378
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   379
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   380
/* --- Zoom out button --- */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   381
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   382
static void ToolbarZoomOutClick(Window *w)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   383
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   384
	if (DoZoomInOutWindow(ZOOM_OUT, FindWindowById(WC_MAIN_WINDOW, 0))) {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   385
		w->HandleButtonClick(18);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   386
		SndPlayFx(SND_15_BEEP);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   387
	}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   388
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   389
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   390
/* --- Rail button menu --- */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   391
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   392
static void ToolbarBuildRailClick(Window *w)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   393
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   394
	const Player *p = GetPlayer(_local_player);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   395
	Window *w2 = PopupMainToolbMenu(w, 19, STR_1015_RAILROAD_CONSTRUCTION, RAILTYPE_END, ~p->avail_railtypes);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   396
	WP(w2, menu_d).sel_index = _last_built_railtype;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   397
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   398
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   399
static void MenuClickBuildRail(int index)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   400
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   401
	_last_built_railtype = (RailType)index;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   402
	ShowBuildRailToolbar(_last_built_railtype, -1);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   403
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   404
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   405
/* --- Road button menu --- */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   406
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   407
static void ToolbarBuildRoadClick(Window *w)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   408
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   409
	const Player *p = GetPlayer(_local_player);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   410
	/* The standard road button is *always* available */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   411
	Window *w2 = PopupMainToolbMenu(w, 20, STR_180A_ROAD_CONSTRUCTION, 2, ~(p->avail_roadtypes | ROADTYPES_ROAD));
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   412
	WP(w2, menu_d).sel_index = _last_built_roadtype;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   413
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   414
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   415
static void MenuClickBuildRoad(int index)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   416
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   417
	_last_built_roadtype = (RoadType)index;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   418
	ShowBuildRoadToolbar(_last_built_roadtype);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   419
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   420
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   421
/* --- Water button menu --- */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   422
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   423
static void ToolbarBuildWaterClick(Window *w)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   424
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   425
	PopupMainToolbMenu(w, 21, STR_9800_DOCK_CONSTRUCTION, 1, 0);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   426
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   427
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   428
static void MenuClickBuildWater(int index)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   429
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   430
	ShowBuildDocksToolbar();
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   431
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   432
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   433
/* --- Airport button menu --- */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   434
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   435
static void ToolbarBuildAirClick(Window *w)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   436
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   437
	PopupMainToolbMenu(w, 22, STR_A01D_AIRPORT_CONSTRUCTION, 1, 0);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   438
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   439
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   440
static void MenuClickBuildAir(int index)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   441
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   442
	ShowBuildAirToolbar();
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   443
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   444
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   445
/* --- Forest button menu --- */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   446
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   447
static void ToolbarForestClick(Window *w)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   448
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   449
	PopupMainToolbMenu(w, 23, STR_LANDSCAPING, 3, 0);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   450
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   451
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   452
static void MenuClickForest(int index)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   453
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   454
	switch (index) {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   455
		case 0: ShowTerraformToolbar();  break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   456
		case 1: ShowBuildTreesToolbar(); break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   457
		case 2: SelectSignTool();        break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   458
	}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   459
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   460
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   461
/* --- Music button menu --- */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   462
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   463
static void ToolbarMusicClick(Window *w)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   464
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   465
	PopupMainToolbMenu(w, 24, STR_01D3_SOUND_MUSIC, 1, 0);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   466
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   467
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   468
static void MenuClickMusicWindow(int index)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   469
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   470
	ShowMusicWindow();
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   471
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   472
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   473
/* --- Newspaper button menu --- */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   474
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   475
static void ToolbarNewspaperClick(Window *w)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   476
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   477
	PopupMainToolbMenu(w, 25, STR_0200_LAST_MESSAGE_NEWS_REPORT, 3, 0);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   478
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   479
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   480
static void MenuClickNewspaper(int index)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   481
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   482
	switch (index) {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   483
		case 0: ShowLastNewsMessage(); break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   484
		case 1: ShowMessageOptions();  break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   485
		case 2: ShowMessageHistory();  break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   486
	}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   487
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   488
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   489
/* --- Help button menu --- */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   490
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   491
static void ToolbarHelpClick(Window *w)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   492
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   493
	PopupMainToolbMenu(w, 26, STR_02D5_LAND_BLOCK_INFO, 6, 0);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   494
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   495
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   496
static void MenuClickSmallScreenshot()
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   497
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   498
	SetScreenshotType(SC_VIEWPORT);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   499
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   500
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   501
static void MenuClickWorldScreenshot()
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   502
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   503
	SetScreenshotType(SC_WORLD);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   504
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   505
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   506
static void MenuClickHelp(int index)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   507
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   508
	switch (index) {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   509
		case 0: PlaceLandBlockInfo();       break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   510
		case 2: IConsoleSwitch();           break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   511
		case 3: MenuClickSmallScreenshot(); break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   512
		case 4: MenuClickWorldScreenshot(); break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   513
		case 5: ShowAboutWindow();          break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   514
	}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   515
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   516
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   517
/* --- Scenario editor specific handlers. */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   518
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   519
static void ToolbarScenDateBackward(Window *w)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   520
{
6527
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6145
diff changeset
   521
	/* don't allow too fast scrolling */
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   522
	if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) {
8532
3099f32f9bfd (svn r11596) -Codechange: Use the Window member HandleButtonClick and remove its now useless counterpart function
belugas
parents: 8528
diff changeset
   523
		w->HandleButtonClick(6);
10434
d6accd017341 (svn r12976) -Codechange: use w->SetDirty() instead of SetWindowDirty(w) when it's certain that w != NULL.
rubidium
parents: 10433
diff changeset
   524
		w->SetDirty();
193
0a7025304867 (svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents: 176
diff changeset
   525
8418
b49fc6be1ab9 (svn r11475) -Codechange: rename clamp and clampu to Clamp and ClampU to fit with the coding style
skidd13
parents: 8385
diff changeset
   526
		_patches_newgame.starting_year = Clamp(_patches_newgame.starting_year - 1, MIN_YEAR, MAX_YEAR);
4300
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
   527
		SetDate(ConvertYMDToDate(_patches_newgame.starting_year, 0, 1));
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   528
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   529
	_left_button_clicked = false;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   530
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   531
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   532
static void ToolbarScenDateForward(Window *w)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   533
{
6527
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6145
diff changeset
   534
	/* don't allow too fast scrolling */
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   535
	if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) {
8532
3099f32f9bfd (svn r11596) -Codechange: Use the Window member HandleButtonClick and remove its now useless counterpart function
belugas
parents: 8528
diff changeset
   536
		w->HandleButtonClick(7);
10434
d6accd017341 (svn r12976) -Codechange: use w->SetDirty() instead of SetWindowDirty(w) when it's certain that w != NULL.
rubidium
parents: 10433
diff changeset
   537
		w->SetDirty();
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   538
8418
b49fc6be1ab9 (svn r11475) -Codechange: rename clamp and clampu to Clamp and ClampU to fit with the coding style
skidd13
parents: 8385
diff changeset
   539
		_patches_newgame.starting_year = Clamp(_patches_newgame.starting_year + 1, MIN_YEAR, MAX_YEAR);
4300
687a17c9c557 (svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents: 4299
diff changeset
   540
		SetDate(ConvertYMDToDate(_patches_newgame.starting_year, 0, 1));
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   541
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   542
	_left_button_clicked = false;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   543
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   544
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   545
static void ToolbarScenMapTownDir(Window *w)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   546
{
4821
c8d85defeec2 (svn r6745) -Codechange: Have the dropdown menus fall fully inside the top toolbar. So
Darkvater
parents: 4820
diff changeset
   547
	/* Scenario editor button, *hack*hack* use different button to activate */
7621
5a724720444c (svn r10398) -Fix (r10271): transparency menu option wasn't moved properly in the scenario editor
peter1138
parents: 7582
diff changeset
   548
	PopupMainToolbMenu(w, 8 | (17 << 8), STR_02DE_MAP_OF_WORLD, 4, 0);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   549
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   550
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   551
static void ToolbarScenZoomIn(Window *w)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   552
{
152
c3964b43943e (svn r153) -Feature: [1009710] Extra Viewport. In the minimap dropdown menu, open a new viewport to have a quick look at your favorite map-positions. Independent zoom and quick jump to/from viewport (Dribbel)
darkvater
parents: 135
diff changeset
   553
	if (DoZoomInOutWindow(ZOOM_IN, FindWindowById(WC_MAIN_WINDOW, 0))) {
8532
3099f32f9bfd (svn r11596) -Codechange: Use the Window member HandleButtonClick and remove its now useless counterpart function
belugas
parents: 8528
diff changeset
   554
		w->HandleButtonClick(9);
541
e1cd34389f79 (svn r925) Use sound enums
tron
parents: 534
diff changeset
   555
		SndPlayFx(SND_15_BEEP);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   556
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   557
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   558
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   559
static void ToolbarScenZoomOut(Window *w)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   560
{
152
c3964b43943e (svn r153) -Feature: [1009710] Extra Viewport. In the minimap dropdown menu, open a new viewport to have a quick look at your favorite map-positions. Independent zoom and quick jump to/from viewport (Dribbel)
darkvater
parents: 135
diff changeset
   561
	if (DoZoomInOutWindow(ZOOM_OUT, FindWindowById(WC_MAIN_WINDOW, 0))) {
8532
3099f32f9bfd (svn r11596) -Codechange: Use the Window member HandleButtonClick and remove its now useless counterpart function
belugas
parents: 8528
diff changeset
   562
		w->HandleButtonClick(10);
541
e1cd34389f79 (svn r925) Use sound enums
tron
parents: 534
diff changeset
   563
		SndPlayFx(SND_15_BEEP);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   564
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   565
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   566
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   567
static void ToolbarScenGenLand(Window *w)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   568
{
8532
3099f32f9bfd (svn r11596) -Codechange: Use the Window member HandleButtonClick and remove its now useless counterpart function
belugas
parents: 8528
diff changeset
   569
	w->HandleButtonClick(11);
541
e1cd34389f79 (svn r925) Use sound enums
tron
parents: 534
diff changeset
   570
	SndPlayFx(SND_15_BEEP);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   571
8701
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8692
diff changeset
   572
	ShowEditorTerraformToolbar();
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   573
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   574
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   575
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   576
static void ToolbarScenGenTown(Window *w)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   577
{
8532
3099f32f9bfd (svn r11596) -Codechange: Use the Window member HandleButtonClick and remove its now useless counterpart function
belugas
parents: 8528
diff changeset
   578
	w->HandleButtonClick(12);
541
e1cd34389f79 (svn r925) Use sound enums
tron
parents: 534
diff changeset
   579
	SndPlayFx(SND_15_BEEP);
9219
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   580
	ShowBuildTownWindow();
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   581
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   582
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   583
static void ToolbarScenGenIndustry(Window *w)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   584
{
8532
3099f32f9bfd (svn r11596) -Codechange: Use the Window member HandleButtonClick and remove its now useless counterpart function
belugas
parents: 8528
diff changeset
   585
	w->HandleButtonClick(13);
541
e1cd34389f79 (svn r925) Use sound enums
tron
parents: 534
diff changeset
   586
	SndPlayFx(SND_15_BEEP);
7714
d2060492ca03 (svn r10496) -Feature: Replace all the windows for Industry building by a more flexible one.
belugas
parents: 7698
diff changeset
   587
	ShowBuildIndustryWindow();
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   588
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   589
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   590
static void ToolbarScenBuildRoad(Window *w)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   591
{
8532
3099f32f9bfd (svn r11596) -Codechange: Use the Window member HandleButtonClick and remove its now useless counterpart function
belugas
parents: 8528
diff changeset
   592
	w->HandleButtonClick(14);
541
e1cd34389f79 (svn r925) Use sound enums
tron
parents: 534
diff changeset
   593
	SndPlayFx(SND_15_BEEP);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   594
	ShowBuildRoadScenToolbar();
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   595
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   596
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   597
static void ToolbarScenPlantTrees(Window *w)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   598
{
8532
3099f32f9bfd (svn r11596) -Codechange: Use the Window member HandleButtonClick and remove its now useless counterpart function
belugas
parents: 8528
diff changeset
   599
	w->HandleButtonClick(15);
541
e1cd34389f79 (svn r925) Use sound enums
tron
parents: 534
diff changeset
   600
	SndPlayFx(SND_15_BEEP);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   601
	ShowBuildTreesScenToolbar();
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   602
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   603
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   604
static void ToolbarScenPlaceSign(Window *w)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   605
{
8532
3099f32f9bfd (svn r11596) -Codechange: Use the Window member HandleButtonClick and remove its now useless counterpart function
belugas
parents: 8528
diff changeset
   606
	w->HandleButtonClick(16);
541
e1cd34389f79 (svn r925) Use sound enums
tron
parents: 534
diff changeset
   607
	SndPlayFx(SND_15_BEEP);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   608
	SelectSignTool();
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   609
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   610
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   611
static void ToolbarBtn_NULL(Window *w)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   612
{
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   613
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   614
2639
8a7342eb3a78 (svn r3181) -Bracing
tron
parents: 2635
diff changeset
   615
10235
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   616
/* --- Toolbar handling for the 'normal' case */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   617
2639
8a7342eb3a78 (svn r3181) -Bracing
tron
parents: 2635
diff changeset
   618
typedef void ToolbarButtonProc(Window *w);
8a7342eb3a78 (svn r3181) -Bracing
tron
parents: 2635
diff changeset
   619
4171
3fadda3afe70 (svn r5609) CodeChange : Apply coding style
belugas
parents: 4077
diff changeset
   620
static ToolbarButtonProc * const _toolbar_button_procs[] = {
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   621
	ToolbarPauseClick,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   622
	ToolbarFastForwardClick,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   623
	ToolbarOptionsClick,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   624
	ToolbarSaveClick,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   625
	ToolbarMapClick,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   626
	ToolbarTownClick,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   627
	ToolbarSubsidiesClick,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   628
	ToolbarStationsClick,
10235
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   629
	ToolbarFinancesClick,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   630
	ToolbarPlayersClick,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   631
	ToolbarGraphsClick,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   632
	ToolbarLeagueClick,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   633
	ToolbarIndustryClick,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   634
	ToolbarTrainClick,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   635
	ToolbarRoadClick,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   636
	ToolbarShipClick,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   637
	ToolbarAirClick,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   638
	ToolbarZoomInClick,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   639
	ToolbarZoomOutClick,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   640
	ToolbarBuildRailClick,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   641
	ToolbarBuildRoadClick,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   642
	ToolbarBuildWaterClick,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   643
	ToolbarBuildAirClick,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   644
	ToolbarForestClick,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   645
	ToolbarMusicClick,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   646
	ToolbarNewspaperClick,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   647
	ToolbarHelpClick,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   648
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   649
10235
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   650
static void MainToolbarWndProc(Window *w, WindowEvent *e)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   651
{
2952
6a26eeda9679 (svn r3511) More whitespace ([FS#46] by Rubidium)
tron
parents: 2951
diff changeset
   652
	switch (e->event) {
9219
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   653
		case WE_PAINT:
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   654
			/* Draw brown-red toolbar bg. */
10229
fba3f9fa44d7 (svn r12761) -Codechange: lots of minor whitespace coding style fixes around operators.
rubidium
parents: 10225
diff changeset
   655
			GfxFillRect(0, 0, w->width - 1, w->height - 1, 0xB2);
fba3f9fa44d7 (svn r12761) -Codechange: lots of minor whitespace coding style fixes around operators.
rubidium
parents: 10225
diff changeset
   656
			GfxFillRect(0, 0, w->width - 1, w->height - 1, 0xB4 | (1 << PALETTE_MODIFIER_GREYOUT));
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   657
9219
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   658
			/* If spectator, disable all construction buttons
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   659
			* ie : Build road, rail, ships, airports and landscaping
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   660
			* Since enabled state is the default, just disable when needed */
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   661
			w->SetWidgetsDisabledState(_current_player == PLAYER_SPECTATOR, 19, 20, 21, 22, 23, WIDGET_LIST_END);
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   662
			/* disable company list drop downs, if there are no companies */
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   663
			w->SetWidgetsDisabledState(ActivePlayerCount() == 0, 7, 8, 13, 14, 15, 16, WIDGET_LIST_END);
193
0a7025304867 (svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents: 176
diff changeset
   664
9219
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   665
			w->SetWidgetDisabledState(19, !CanBuildVehicleInfrastructure(VEH_TRAIN));
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   666
			w->SetWidgetDisabledState(22, !CanBuildVehicleInfrastructure(VEH_AIRCRAFT));
193
0a7025304867 (svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents: 176
diff changeset
   667
9219
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   668
			DrawWindowWidgets(w);
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   669
			break;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   670
9219
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   671
		case WE_CLICK:
10235
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   672
			if (_game_mode != GM_MENU && !w->IsWidgetDisabled(e->we.click.widget)) _toolbar_button_procs[e->we.click.widget](w);
9219
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   673
			break;
7856
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
   674
9219
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   675
		case WE_KEYPRESS:
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   676
			switch (e->we.keypress.keycode) {
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   677
				case WKC_F1: case WKC_PAUSE: ToolbarPauseClick(w); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   678
				case WKC_F2: ShowGameOptions(); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   679
				case WKC_F3: MenuClickSaveLoad(0); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   680
				case WKC_F4: ShowSmallMap(); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   681
				case WKC_F5: ShowTownDirectory(); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   682
				case WKC_F6: ShowSubsidiesList(); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   683
				case WKC_F7: ShowPlayerStations(_local_player); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   684
				case WKC_F8: ShowPlayerFinances(_local_player); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   685
				case WKC_F9: ShowPlayerCompany(_local_player); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   686
				case WKC_F10: ShowOperatingProfitGraph(); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   687
				case WKC_F11: ShowCompanyLeagueTable(); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   688
				case WKC_F12: ShowBuildIndustryWindow(); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   689
				case WKC_SHIFT | WKC_F1: ShowVehicleListWindow(_local_player, VEH_TRAIN); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   690
				case WKC_SHIFT | WKC_F2: ShowVehicleListWindow(_local_player, VEH_ROAD); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   691
				case WKC_SHIFT | WKC_F3: ShowVehicleListWindow(_local_player, VEH_SHIP); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   692
				case WKC_SHIFT | WKC_F4: ShowVehicleListWindow(_local_player, VEH_AIRCRAFT); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   693
				case WKC_NUM_PLUS: // Fall through
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   694
				case WKC_EQUALS: // Fall through
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   695
				case WKC_SHIFT | WKC_EQUALS: // Fall through
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   696
				case WKC_SHIFT | WKC_F5: ToolbarZoomInClick(w); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   697
				case WKC_NUM_MINUS: // Fall through
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   698
				case WKC_MINUS: // Fall through
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   699
				case WKC_SHIFT | WKC_MINUS: // Fall through
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   700
				case WKC_SHIFT | WKC_F6: ToolbarZoomOutClick(w); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   701
				case WKC_SHIFT | WKC_F7: if (CanBuildVehicleInfrastructure(VEH_TRAIN)) ShowBuildRailToolbar(_last_built_railtype, -1); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   702
				case WKC_SHIFT | WKC_F8: ShowBuildRoadToolbar(_last_built_roadtype); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   703
				case WKC_SHIFT | WKC_F9: ShowBuildDocksToolbar(); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   704
				case WKC_SHIFT | WKC_F10: if (CanBuildVehicleInfrastructure(VEH_AIRCRAFT)) ShowBuildAirToolbar(); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   705
				case WKC_SHIFT | WKC_F11: ShowBuildTreesToolbar(); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   706
				case WKC_SHIFT | WKC_F12: ShowMusicWindow(); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   707
				case WKC_CTRL  | 'S': MenuClickSmallScreenshot(); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   708
				case WKC_CTRL  | 'G': MenuClickWorldScreenshot(); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   709
				case WKC_CTRL | WKC_ALT | 'C': if (!_networking) ShowCheatWindow(); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   710
				case 'A': if (CanBuildVehicleInfrastructure(VEH_TRAIN)) ShowBuildRailToolbar(_last_built_railtype, 4); break; // Invoke Autorail
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   711
				case 'L': ShowTerraformToolbar(); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   712
				case 'M': ShowSmallMap(); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   713
				case 'V': ShowExtraViewPortWindow(); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   714
				default: return;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   715
			}
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   716
			e->we.keypress.cont = false;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   717
			break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   718
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   719
		case WE_PLACE_OBJ:
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   720
			_place_proc(e->we.place.tile);
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   721
			break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   722
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   723
		case WE_ABORT_PLACE_OBJ:
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   724
			w->RaiseWidget(25);
10434
d6accd017341 (svn r12976) -Codechange: use w->SetDirty() instead of SetWindowDirty(w) when it's certain that w != NULL.
rubidium
parents: 10433
diff changeset
   725
			w->SetDirty();
9219
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   726
			break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   727
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   728
		case WE_MOUSELOOP:
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   729
			if (w->IsWidgetLowered(0) != !!_pause_game) {
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   730
				w->ToggleWidgetLoweredState(0);
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   731
				w->InvalidateWidget(0);
7856
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
   732
			}
7857
105eabc8fe1a (svn r10724) -Fix (r10723): Toolbar spacing was off-by-one
peter1138
parents: 7856
diff changeset
   733
9219
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   734
			if (w->IsWidgetLowered(1) != !!_fast_forward) {
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   735
				w->ToggleWidgetLoweredState(1);
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   736
				w->InvalidateWidget(1);
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   737
			}
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   738
			break;
7856
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
   739
9219
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   740
		case WE_RESIZE: {
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   741
			/* There are 27 buttons plus some spacings if the space allows it */
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   742
			uint button_width;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   743
			uint spacing;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   744
			if (w->width >= 27 * 22) {
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   745
				button_width = 22;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   746
				spacing = w->width - (27 * button_width);
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   747
			} else {
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   748
				button_width = w->width / 27;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   749
				spacing = 0;
4719
413b21513ef7 (svn r6631) -Codechange: Use accessors for click_state.
belugas
parents: 4709
diff changeset
   750
			}
9219
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   751
			uint extra_spacing_at[] = { 4, 8, 13, 17, 19, 24, 0 };
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   752
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   753
			for (uint i = 0, x = 0, j = 0; i < 27; i++) {
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   754
				if (extra_spacing_at[j] == i) {
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   755
					j++;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   756
					uint add = spacing / (lengthof(extra_spacing_at) - j);
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   757
					spacing -= add;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   758
					x += add;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   759
				}
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   760
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   761
				w->widget[i].left = x;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   762
				x += (spacing != 0) ? button_width : (w->width - x) / (27 - i);
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   763
				w->widget[i].right = x - 1;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   764
			}
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   765
		} break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   766
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   767
		case WE_TIMEOUT:
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   768
			for (uint i = 2; i < w->widget_count; i++) {
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   769
				if (w->IsWidgetLowered(i)) {
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   770
					w->RaiseWidget(i);
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   771
					w->InvalidateWidget(i);
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   772
				}
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   773
			}
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   774
			break;
5045
3e734e178dae (svn r7094) -Codechange: Get rid of the window-specific code in DoZoomInOutWindow (enable, disable
Darkvater
parents: 5044
diff changeset
   775
3e734e178dae (svn r7094) -Codechange: Get rid of the window-specific code in DoZoomInOutWindow (enable, disable
Darkvater
parents: 5044
diff changeset
   776
		case WE_MESSAGE:
7744
a1c9caef2a8d (svn r10548) -Fix [FS#1020]: don't segfault when you quit in the end-of-the-game screen
truelight
parents: 7714
diff changeset
   777
			if (FindWindowById(WC_MAIN_WINDOW, 0) != NULL) HandleZoomMessage(w, FindWindowById(WC_MAIN_WINDOW, 0)->viewport, 17, 18);
5045
3e734e178dae (svn r7094) -Codechange: Get rid of the window-specific code in DoZoomInOutWindow (enable, disable
Darkvater
parents: 5044
diff changeset
   778
			break;
4719
413b21513ef7 (svn r6631) -Codechange: Use accessors for click_state.
belugas
parents: 4709
diff changeset
   779
	}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   780
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   781
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   782
static const Widget _toolb_normal_widgets[] = {
7856
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
   783
{     WWT_IMGBTN,   RESIZE_LEFT,    14,     0,     0,     0,    21, SPR_IMG_PAUSE,           STR_0171_PAUSE_GAME},
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
   784
{     WWT_IMGBTN,   RESIZE_NONE,    14,     0,     0,     0,    21, SPR_IMG_FASTFORWARD,     STR_FAST_FORWARD},
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
   785
{     WWT_IMGBTN,   RESIZE_NONE,    14,     0,     0,     0,    21, SPR_IMG_SETTINGS,        STR_0187_OPTIONS},
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
   786
{   WWT_IMGBTN_2,   RESIZE_NONE,    14,     0,     0,     0,    21, SPR_IMG_SAVE,            STR_0172_SAVE_GAME_ABANDON_GAME},
4938
074f734a91ca (svn r6925) -Codechange: Be more strict with widget distinctions. WWT_PANEL is only plain panel,
Darkvater
parents: 4912
diff changeset
   787
7856
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
   788
{     WWT_IMGBTN,   RESIZE_NONE,    14,     0,     0,     0,    21, SPR_IMG_SMALLMAP,        STR_0174_DISPLAY_MAP},
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
   789
{     WWT_IMGBTN,   RESIZE_NONE,    14,     0,     0,     0,    21, SPR_IMG_TOWN,            STR_0176_DISPLAY_TOWN_DIRECTORY},
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
   790
{     WWT_IMGBTN,   RESIZE_NONE,    14,     0,     0,     0,    21, SPR_IMG_SUBSIDIES,       STR_02DC_DISPLAY_SUBSIDIES},
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
   791
{     WWT_IMGBTN,   RESIZE_NONE,    14,     0,     0,     0,    21, SPR_IMG_COMPANY_LIST,    STR_0173_DISPLAY_LIST_OF_COMPANY},
4938
074f734a91ca (svn r6925) -Codechange: Be more strict with widget distinctions. WWT_PANEL is only plain panel,
Darkvater
parents: 4912
diff changeset
   792
7856
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
   793
{     WWT_IMGBTN,   RESIZE_NONE,    14,     0,     0,     0,    21, SPR_IMG_COMPANY_FINANCE, STR_0177_DISPLAY_COMPANY_FINANCES},
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
   794
{     WWT_IMGBTN,   RESIZE_NONE,    14,     0,     0,     0,    21, SPR_IMG_COMPANY_GENERAL, STR_0178_DISPLAY_COMPANY_GENERAL},
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
   795
{     WWT_IMGBTN,   RESIZE_NONE,    14,     0,     0,     0,    21, SPR_IMG_GRAPHS,          STR_0179_DISPLAY_GRAPHS},
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
   796
{     WWT_IMGBTN,   RESIZE_NONE,    14,     0,     0,     0,    21, SPR_IMG_COMPANY_LEAGUE,  STR_017A_DISPLAY_COMPANY_LEAGUE},
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
   797
{     WWT_IMGBTN,   RESIZE_NONE,    14,     0,     0,     0,    21, SPR_IMG_INDUSTRY,        STR_0312_FUND_CONSTRUCTION_OF_NEW},
4938
074f734a91ca (svn r6925) -Codechange: Be more strict with widget distinctions. WWT_PANEL is only plain panel,
Darkvater
parents: 4912
diff changeset
   798
7856
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
   799
{     WWT_IMGBTN,   RESIZE_NONE,    14,     0,     0,     0,    21, SPR_IMG_TRAINLIST,       STR_017B_DISPLAY_LIST_OF_COMPANY},
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
   800
{     WWT_IMGBTN,   RESIZE_NONE,    14,     0,     0,     0,    21, SPR_IMG_TRUCKLIST,       STR_017C_DISPLAY_LIST_OF_COMPANY},
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
   801
{     WWT_IMGBTN,   RESIZE_NONE,    14,     0,     0,     0,    21, SPR_IMG_SHIPLIST,        STR_017D_DISPLAY_LIST_OF_COMPANY},
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
   802
{     WWT_IMGBTN,   RESIZE_NONE,    14,     0,     0,     0,    21, SPR_IMG_AIRPLANESLIST,   STR_017E_DISPLAY_LIST_OF_COMPANY},
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
   803
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
   804
{     WWT_IMGBTN,   RESIZE_NONE,    14,     0,     0,     0,    21, SPR_IMG_ZOOMIN,          STR_017F_ZOOM_THE_VIEW_IN},
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
   805
{     WWT_IMGBTN,   RESIZE_NONE,    14,     0,     0,     0,    21, SPR_IMG_ZOOMOUT,         STR_0180_ZOOM_THE_VIEW_OUT},
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
   806
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
   807
{     WWT_IMGBTN,   RESIZE_NONE,    14,     0,     0,     0,    21, SPR_IMG_BUILDRAIL,       STR_0181_BUILD_RAILROAD_TRACK},
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
   808
{     WWT_IMGBTN,   RESIZE_NONE,    14,     0,     0,     0,    21, SPR_IMG_BUILDROAD,       STR_0182_BUILD_ROADS},
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
   809
{     WWT_IMGBTN,   RESIZE_NONE,    14,     0,     0,     0,    21, SPR_IMG_BUILDWATER,      STR_0183_BUILD_SHIP_DOCKS},
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
   810
{     WWT_IMGBTN,   RESIZE_NONE,    14,     0,     0,     0,    21, SPR_IMG_BUILDAIR,        STR_0184_BUILD_AIRPORTS},
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
   811
{     WWT_IMGBTN,   RESIZE_NONE,    14,     0,     0,     0,    21, SPR_IMG_LANDSCAPING,     STR_LANDSCAPING_TOOLBAR_TIP}, // tree icon is 0x2E6
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
   812
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
   813
{     WWT_IMGBTN,   RESIZE_NONE,    14,     0,     0,     0,    21, SPR_IMG_MUSIC,           STR_01D4_SHOW_SOUND_MUSIC_WINDOW},
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
   814
{     WWT_IMGBTN,   RESIZE_NONE,    14,     0,     0,     0,    21, SPR_IMG_MESSAGES,        STR_0203_SHOW_LAST_MESSAGE_NEWS},
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
   815
{     WWT_IMGBTN,   RESIZE_NONE,    14,     0,     0,     0,    21, SPR_IMG_QUERY,           STR_0186_LAND_BLOCK_INFORMATION},
176
84990c4b9212 (svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
darkvater
parents: 168
diff changeset
   816
{   WIDGETS_END},
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   817
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   818
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   819
static const WindowDesc _toolb_normal_desc = {
7856
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
   820
	0, 0, 0, 22, 640, 22,
6144
5a0ffbf27ced (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium
parents: 6141
diff changeset
   821
	WC_MAIN_TOOLBAR, WC_NONE,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   822
	WDF_STD_TOOLTIPS | WDF_DEF_WIDGET,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   823
	_toolb_normal_widgets,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   824
	MainToolbarWndProc
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   825
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   826
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   827
10235
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   828
/* --- Toolbar handling for the scenario editor */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   829
9219
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   830
static ToolbarButtonProc * const _scen_toolbar_button_procs[] = {
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   831
	ToolbarPauseClick,
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   832
	ToolbarFastForwardClick,
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   833
	ToolbarOptionsClick,
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   834
	ToolbarScenSaveOrLoad,
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   835
	ToolbarBtn_NULL,
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   836
	ToolbarBtn_NULL,
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   837
	ToolbarScenDateBackward,
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   838
	ToolbarScenDateForward,
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   839
	ToolbarScenMapTownDir,
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   840
	ToolbarScenZoomIn,
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   841
	ToolbarScenZoomOut,
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   842
	ToolbarScenGenLand,
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   843
	ToolbarScenGenTown,
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   844
	ToolbarScenGenIndustry,
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   845
	ToolbarScenBuildRoad,
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   846
	ToolbarScenPlantTrees,
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   847
	ToolbarScenPlaceSign,
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   848
	NULL,
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   849
	NULL,
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   850
	NULL,
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   851
	NULL,
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   852
	NULL,
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   853
	NULL,
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   854
	NULL,
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   855
	ToolbarMusicClick,
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   856
	NULL,
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   857
	ToolbarHelpClick,
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   858
};
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   859
10235
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
   860
static void ScenEditToolbarWndProc(Window *w, WindowEvent *e)
9219
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   861
{
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   862
	switch (e->event) {
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   863
		case WE_PAINT:
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   864
			w->SetWidgetDisabledState(6, _patches_newgame.starting_year <= MIN_YEAR);
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   865
			w->SetWidgetDisabledState(7, _patches_newgame.starting_year >= MAX_YEAR);
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   866
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   867
			/* Draw brown-red toolbar bg. */
10229
fba3f9fa44d7 (svn r12761) -Codechange: lots of minor whitespace coding style fixes around operators.
rubidium
parents: 10225
diff changeset
   868
			GfxFillRect(0, 0, w->width - 1, w->height - 1, 0xB2);
fba3f9fa44d7 (svn r12761) -Codechange: lots of minor whitespace coding style fixes around operators.
rubidium
parents: 10225
diff changeset
   869
			GfxFillRect(0, 0, w->width - 1, w->height - 1, 0xB4 | (1 << PALETTE_MODIFIER_GREYOUT));
9219
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   870
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   871
			DrawWindowWidgets(w);
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   872
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   873
			SetDParam(0, ConvertYMDToDate(_patches_newgame.starting_year, 0, 1));
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   874
			DrawStringCenteredTruncated(w->widget[6].right, w->widget[7].left, 6, STR_00AF, TC_FROMSTRING);
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   875
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   876
			/* We hide this panel when the toolbar space gets too small */
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   877
			if (w->widget[4].left != w->widget[4].right) {
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   878
				DrawStringCenteredTruncated(w->widget[4].left + 1, w->widget[4].right - 1,  1, STR_0221_OPENTTD, TC_FROMSTRING);
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   879
				DrawStringCenteredTruncated(w->widget[4].left + 1, w->widget[4].right - 1, 11, STR_0222_SCENARIO_EDITOR, TC_FROMSTRING);
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   880
			}
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   881
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   882
			break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   883
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   884
		case WE_CLICK:
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   885
			if (_game_mode == GM_MENU) return;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   886
			_scen_toolbar_button_procs[e->we.click.widget](w);
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   887
			break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   888
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   889
		case WE_KEYPRESS:
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   890
			switch (e->we.keypress.keycode) {
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   891
				case WKC_F1: case WKC_PAUSE: ToolbarPauseClick(w); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   892
				case WKC_F2: ShowGameOptions(); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   893
				case WKC_F3: MenuClickSaveLoad(0); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   894
				case WKC_F4: ToolbarScenGenLand(w); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   895
				case WKC_F5: ToolbarScenGenTown(w); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   896
				case WKC_F6: ToolbarScenGenIndustry(w); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   897
				case WKC_F7: ToolbarScenBuildRoad(w); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   898
				case WKC_F8: ToolbarScenPlantTrees(w); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   899
				case WKC_F9: ToolbarScenPlaceSign(w); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   900
				case WKC_F10: ShowMusicWindow(); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   901
				case WKC_F11: PlaceLandBlockInfo(); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   902
				case WKC_CTRL | 'S': MenuClickSmallScreenshot(); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   903
				case WKC_CTRL | 'G': MenuClickWorldScreenshot(); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   904
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   905
				/* those following are all fall through */
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   906
				case WKC_NUM_PLUS:
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   907
				case WKC_EQUALS:
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   908
				case WKC_SHIFT | WKC_EQUALS:
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   909
				case WKC_SHIFT | WKC_F5: ToolbarZoomInClick(w); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   910
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   911
				/* those following are all fall through */
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   912
				case WKC_NUM_MINUS:
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   913
				case WKC_MINUS:
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   914
				case WKC_SHIFT | WKC_MINUS:
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   915
				case WKC_SHIFT | WKC_F6: ToolbarZoomOutClick(w); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   916
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   917
				case 'L': ShowEditorTerraformToolbar(); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   918
				case 'M': ShowSmallMap(); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   919
				case 'V': ShowExtraViewPortWindow(); break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   920
				default: return;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   921
			}
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   922
			e->we.keypress.cont = false;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   923
			break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   924
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   925
		case WE_PLACE_OBJ:
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   926
			_place_proc(e->we.place.tile);
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   927
			break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   928
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   929
		case WE_ABORT_PLACE_OBJ:
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   930
			w->RaiseWidget(25);
10434
d6accd017341 (svn r12976) -Codechange: use w->SetDirty() instead of SetWindowDirty(w) when it's certain that w != NULL.
rubidium
parents: 10433
diff changeset
   931
			w->SetDirty();
9219
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   932
			break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   933
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   934
		case WE_RESIZE: {
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   935
			/* There are 15 buttons plus some spacings if the space allows it.
10229
fba3f9fa44d7 (svn r12761) -Codechange: lots of minor whitespace coding style fixes around operators.
rubidium
parents: 10225
diff changeset
   936
			* Furthermore there are two panels of which one is non - essential
9219
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   937
			* and that one can be removed is the space is too small. */
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   938
			uint buttons_width;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   939
			uint spacing;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   940
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   941
			static int normal_min_width = (15 * 22) + (2 * 130);
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   942
			static int one_less_panel_min_width = (15 * 22) + 130;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   943
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   944
			if (w->width >= one_less_panel_min_width) {
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   945
				buttons_width = 15 * 22;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   946
				spacing = w->width - ((w->width >= normal_min_width) ? normal_min_width : one_less_panel_min_width);
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   947
			} else {
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   948
				buttons_width = w->width - 130;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   949
				spacing = 0;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   950
			}
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   951
			uint extra_spacing_at[] = { 3, 4, 7, 8, 10, 16, 0 };
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   952
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   953
			/* Yes, it defines about 27 widgets for this toolbar */
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   954
			for (uint i = 0, x = 0, j = 0, b = 0; i < 27; i++) {
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   955
				switch (i) {
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   956
					case 4:
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   957
						w->widget[i].left = x;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   958
						if (w->width < normal_min_width) {
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   959
							w->widget[i].right = x;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   960
							j++;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   961
							continue;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   962
						}
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   963
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   964
						x += 130;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   965
						w->widget[i].right = x - 1;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   966
						break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   967
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   968
					case 5: {
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   969
						int offset = x - w->widget[i].left;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   970
						w->widget[i + 1].left  += offset;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   971
						w->widget[i + 1].right += offset;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   972
						w->widget[i + 2].left  += offset;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   973
						w->widget[i + 2].right += offset;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   974
						w->widget[i].left = x;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   975
						x += 130;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   976
						w->widget[i].right = x - 1;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   977
						i += 2;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   978
					} break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   979
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   980
					default:
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   981
						if (w->widget[i].bottom == 0) continue;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   982
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   983
						w->widget[i].left = x;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   984
						x += buttons_width / (15 - b);
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   985
						w->widget[i].right = x - 1;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   986
						buttons_width -= buttons_width / (15 - b);
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   987
						b++;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   988
						break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   989
				}
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   990
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   991
				if (extra_spacing_at[j] == i) {
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   992
					j++;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   993
					uint add = spacing / (lengthof(extra_spacing_at) - j);
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   994
					spacing -= add;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   995
					x += add;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   996
				}
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   997
			}
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   998
		} break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
   999
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
  1000
		case WE_MOUSELOOP:
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
  1001
			if (w->IsWidgetLowered(0) != !!_pause_game) {
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
  1002
				w->ToggleWidgetLoweredState(0);
10434
d6accd017341 (svn r12976) -Codechange: use w->SetDirty() instead of SetWindowDirty(w) when it's certain that w != NULL.
rubidium
parents: 10433
diff changeset
  1003
				w->SetDirty();
9219
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
  1004
			}
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
  1005
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
  1006
			if (w->IsWidgetLowered(1) != !!_fast_forward) {
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
  1007
				w->ToggleWidgetLoweredState(1);
10434
d6accd017341 (svn r12976) -Codechange: use w->SetDirty() instead of SetWindowDirty(w) when it's certain that w != NULL.
rubidium
parents: 10433
diff changeset
  1008
				w->SetDirty();
9219
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
  1009
			}
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
  1010
			break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
  1011
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
  1012
		case WE_MESSAGE:
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
  1013
			HandleZoomMessage(w, FindWindowById(WC_MAIN_WINDOW, 0)->viewport, 9, 10);
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
  1014
			break;
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
  1015
	}
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
  1016
}
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
  1017
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1018
static const Widget _toolb_scen_widgets[] = {
7856
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
  1019
{  WWT_IMGBTN, RESIZE_LEFT, 14,   0,   0,  0, 21, SPR_IMG_PAUSE,       STR_0171_PAUSE_GAME},
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
  1020
{  WWT_IMGBTN, RESIZE_NONE, 14,   0,   0,  0, 21, SPR_IMG_FASTFORWARD, STR_FAST_FORWARD},
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
  1021
{  WWT_IMGBTN, RESIZE_NONE, 14,   0,   0,  0, 21, SPR_IMG_SETTINGS,    STR_0187_OPTIONS},
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
  1022
{WWT_IMGBTN_2, RESIZE_NONE, 14,   0,   0,  0, 21, SPR_IMG_SAVE,        STR_0297_SAVE_SCENARIO_LOAD_SCENARIO},
4938
074f734a91ca (svn r6925) -Codechange: Be more strict with widget distinctions. WWT_PANEL is only plain panel,
Darkvater
parents: 4912
diff changeset
  1023
7856
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
  1024
{   WWT_PANEL, RESIZE_NONE, 14,   0,   0,  0, 21, 0x0,                 STR_NULL},
4938
074f734a91ca (svn r6925) -Codechange: Be more strict with widget distinctions. WWT_PANEL is only plain panel,
Darkvater
parents: 4912
diff changeset
  1025
7856
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
  1026
{   WWT_PANEL, RESIZE_NONE, 14,   0, 129,  0, 21, 0x0,                 STR_NULL},
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
  1027
{  WWT_IMGBTN, RESIZE_NONE, 14,   3,  14,  5, 16, SPR_ARROW_DOWN,      STR_029E_MOVE_THE_STARTING_DATE},
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
  1028
{  WWT_IMGBTN, RESIZE_NONE, 14, 113, 125,  5, 16, SPR_ARROW_UP,        STR_029F_MOVE_THE_STARTING_DATE},
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
  1029
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
  1030
{  WWT_IMGBTN, RESIZE_NONE, 14,   0,   0,  0, 21, SPR_IMG_SMALLMAP,    STR_0175_DISPLAY_MAP_TOWN_DIRECTORY},
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
  1031
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
  1032
{  WWT_IMGBTN, RESIZE_NONE, 14,   0,   0,  0, 21, SPR_IMG_ZOOMIN,      STR_017F_ZOOM_THE_VIEW_IN},
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
  1033
{  WWT_IMGBTN, RESIZE_NONE, 14,   0,   0,  0, 21, SPR_IMG_ZOOMOUT,     STR_0180_ZOOM_THE_VIEW_OUT},
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
  1034
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
  1035
{  WWT_IMGBTN, RESIZE_NONE, 14,   0,   0,  0, 21, SPR_IMG_LANDSCAPING, STR_022E_LANDSCAPE_GENERATION},
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
  1036
{  WWT_IMGBTN, RESIZE_NONE, 14,   0,   0,  0, 21, SPR_IMG_TOWN,        STR_022F_TOWN_GENERATION},
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
  1037
{  WWT_IMGBTN, RESIZE_NONE, 14,   0,   0,  0, 21, SPR_IMG_INDUSTRY,    STR_0230_INDUSTRY_GENERATION},
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
  1038
{  WWT_IMGBTN, RESIZE_NONE, 14,   0,   0,  0, 21, SPR_IMG_BUILDROAD,   STR_0231_ROAD_CONSTRUCTION},
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
  1039
{  WWT_IMGBTN, RESIZE_NONE, 14,   0,   0,  0, 21, SPR_IMG_PLANTTREES,  STR_0288_PLANT_TREES},
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
  1040
{  WWT_IMGBTN, RESIZE_NONE, 14,   0,   0,  0, 21, SPR_IMG_SIGN,        STR_0289_PLACE_SIGN},
4938
074f734a91ca (svn r6925) -Codechange: Be more strict with widget distinctions. WWT_PANEL is only plain panel,
Darkvater
parents: 4912
diff changeset
  1041
074f734a91ca (svn r6925) -Codechange: Be more strict with widget distinctions. WWT_PANEL is only plain panel,
Darkvater
parents: 4912
diff changeset
  1042
{   WWT_EMPTY, RESIZE_NONE,  0,   0,   0,  0,  0, 0x0,                 STR_NULL},
074f734a91ca (svn r6925) -Codechange: Be more strict with widget distinctions. WWT_PANEL is only plain panel,
Darkvater
parents: 4912
diff changeset
  1043
{   WWT_EMPTY, RESIZE_NONE,  0,   0,   0,  0,  0, 0x0,                 STR_NULL},
074f734a91ca (svn r6925) -Codechange: Be more strict with widget distinctions. WWT_PANEL is only plain panel,
Darkvater
parents: 4912
diff changeset
  1044
{   WWT_EMPTY, RESIZE_NONE,  0,   0,   0,  0,  0, 0x0,                 STR_NULL},
074f734a91ca (svn r6925) -Codechange: Be more strict with widget distinctions. WWT_PANEL is only plain panel,
Darkvater
parents: 4912
diff changeset
  1045
{   WWT_EMPTY, RESIZE_NONE,  0,   0,   0,  0,  0, 0x0,                 STR_NULL},
074f734a91ca (svn r6925) -Codechange: Be more strict with widget distinctions. WWT_PANEL is only plain panel,
Darkvater
parents: 4912
diff changeset
  1046
{   WWT_EMPTY, RESIZE_NONE,  0,   0,   0,  0,  0, 0x0,                 STR_NULL},
074f734a91ca (svn r6925) -Codechange: Be more strict with widget distinctions. WWT_PANEL is only plain panel,
Darkvater
parents: 4912
diff changeset
  1047
{   WWT_EMPTY, RESIZE_NONE,  0,   0,   0,  0,  0, 0x0,                 STR_NULL},
074f734a91ca (svn r6925) -Codechange: Be more strict with widget distinctions. WWT_PANEL is only plain panel,
Darkvater
parents: 4912
diff changeset
  1048
{   WWT_EMPTY, RESIZE_NONE,  0,   0,   0,  0,  0, 0x0,                 STR_NULL},
7856
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
  1049
{  WWT_IMGBTN, RESIZE_NONE, 14,   0,   0,  0, 21, SPR_IMG_MUSIC,       STR_01D4_SHOW_SOUND_MUSIC_WINDOW},
4938
074f734a91ca (svn r6925) -Codechange: Be more strict with widget distinctions. WWT_PANEL is only plain panel,
Darkvater
parents: 4912
diff changeset
  1050
{   WWT_EMPTY, RESIZE_NONE,  0,   0,   0,  0,  0, 0x0,                 STR_NULL},
7856
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
  1051
{  WWT_IMGBTN, RESIZE_NONE, 14,   0,   0,  0, 21, SPR_IMG_QUERY,       STR_0186_LAND_BLOCK_INFORMATION},
3248
3efa415f68f1 (svn r3931) - [ 1451726 ] Use sprite names in main_gui.c instead of numbers (matthewwalton)
Darkvater
parents: 3182
diff changeset
  1052
{WIDGETS_END},
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1053
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1054
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1055
static const WindowDesc _toolb_scen_desc = {
7856
121ae75a45a0 (svn r10723) -Codechange: dynamically sized (width) main toolbars and status bar for when the window becomes less than 640 pixels in width.
rubidium
parents: 7855
diff changeset
  1056
	0, 0, 130, 22, 640, 22,
6144
5a0ffbf27ced (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium
parents: 6141
diff changeset
  1057
	WC_MAIN_TOOLBAR, WC_NONE,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1058
	WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1059
	_toolb_scen_widgets,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1060
	ScenEditToolbarWndProc
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1061
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1062
10235
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1063
/* --- Rendering/handling the drop down menus --- */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1064
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1065
typedef void MenuClickedProc(int index);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1066
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1067
static MenuClickedProc * const _menu_clicked_procs[] = {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1068
	NULL,                 /* 0 */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1069
	NULL,                 /* 1 */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1070
	MenuClickSettings,    /* 2 */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1071
	MenuClickSaveLoad,    /* 3 */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1072
	MenuClickMap,         /* 4 */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1073
	MenuClickTown,        /* 5 */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1074
	MenuClickSubsidies,   /* 6 */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1075
	MenuClickStations,    /* 7 */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1076
	MenuClickFinances,    /* 8 */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1077
	MenuClickCompany,     /* 9 */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1078
	MenuClickGraphs,      /* 10 */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1079
	MenuClickLeague,      /* 11 */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1080
	MenuClickIndustry,    /* 12 */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1081
	MenuClickShowTrains,  /* 13 */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1082
	MenuClickShowRoad,    /* 14 */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1083
	MenuClickShowShips,   /* 15 */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1084
	MenuClickShowAir,     /* 16 */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1085
	MenuClickScenMap,     /* 17 */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1086
	NULL,                 /* 18 */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1087
	MenuClickBuildRail,   /* 19 */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1088
	MenuClickBuildRoad,   /* 20 */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1089
	MenuClickBuildWater,  /* 21 */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1090
	MenuClickBuildAir,    /* 22 */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1091
	MenuClickForest,      /* 23 */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1092
	MenuClickMusicWindow, /* 24 */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1093
	MenuClickNewspaper,   /* 25 */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1094
	MenuClickHelp,        /* 26 */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1095
};
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1096
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1097
static void MenuWndProc(Window *w, WindowEvent *e)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1098
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1099
	switch (e->event) {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1100
		case WE_CREATE:
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1101
			w->widget[0].right = w->width - 1;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1102
			break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1103
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1104
		case WE_PAINT: {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1105
			byte count = WP(w, menu_d).item_count;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1106
			byte sel = WP(w, menu_d).sel_index;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1107
			uint16 chk = WP(w, menu_d).checked_items;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1108
			StringID string = WP(w, menu_d).string_id;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1109
			byte dis = WP(w, menu_d).disabled_items;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1110
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1111
			DrawWindowWidgets(w);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1112
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1113
			int x = 1;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1114
			int y = 1;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1115
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1116
			for (; count != 0; count--, string++, sel--) {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1117
				TextColour color = HasBit(dis, 0) ? TC_GREY : (sel == 0) ? TC_WHITE : TC_BLACK;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1118
				if (sel == 0) GfxFillRect(x, y, x + w->width - 3, y + 9, 0);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1119
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1120
				if (HasBit(chk, 0)) DrawString(x + 2, y, STR_CHECKMARK, color);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1121
				DrawString(x + 2, y, string, color);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1122
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1123
				y += 10;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1124
				chk >>= 1;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1125
				dis >>= 1;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1126
			}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1127
		} break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1128
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1129
		case WE_DESTROY: {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1130
				Window *v = FindWindowById(WC_MAIN_TOOLBAR, 0);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1131
				v->RaiseWidget(WP(w, menu_d).main_button);
10434
d6accd017341 (svn r12976) -Codechange: use w->SetDirty() instead of SetWindowDirty(w) when it's certain that w != NULL.
rubidium
parents: 10433
diff changeset
  1132
				w->SetDirty();
10235
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1133
				return;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1134
			}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1135
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1136
		case WE_POPUPMENU_SELECT: {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1137
			int index = GetMenuItemIndex(w, e->we.popupmenu.pt.x, e->we.popupmenu.pt.y);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1138
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1139
			if (index < 0) {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1140
				Window *w2 = FindWindowById(WC_MAIN_TOOLBAR,0);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1141
				if (GetWidgetFromPos(w2, e->we.popupmenu.pt.x - w2->left, e->we.popupmenu.pt.y - w2->top) == WP(w, menu_d).main_button)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1142
					index = WP(w, menu_d).sel_index;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1143
			}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1144
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1145
			int action_id = WP(w, menu_d).action_id;
10433
cca9f7948fe5 (svn r12975) -Codechange: replace DeleteWindow(w) with delete w.
rubidium
parents: 10350
diff changeset
  1146
			delete w;
10235
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1147
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1148
			if (index >= 0) {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1149
				assert((uint)index <= lengthof(_menu_clicked_procs));
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1150
				_menu_clicked_procs[action_id](index);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1151
			}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1152
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1153
		} break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1154
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1155
		case WE_POPUPMENU_OVER: {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1156
			int index = GetMenuItemIndex(w, e->we.popupmenu.pt.x, e->we.popupmenu.pt.y);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1157
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1158
			if (index == -1 || index == WP(w, menu_d).sel_index) return;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1159
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1160
			WP(w, menu_d).sel_index = index;
10434
d6accd017341 (svn r12976) -Codechange: use w->SetDirty() instead of SetWindowDirty(w) when it's certain that w != NULL.
rubidium
parents: 10433
diff changeset
  1161
			w->SetDirty();
10235
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1162
			return;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1163
		}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1164
	}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1165
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1166
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1167
/* Dynamic widget length determined by toolbar-string length.
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1168
 * See PopupMainToolbMenu en MenuWndProc */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1169
static const Widget _menu_widgets[] = {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1170
{    WWT_PANEL, RESIZE_NONE, 14, 0,  0, 0, 0, 0x0, STR_NULL},
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1171
{ WIDGETS_END},
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1172
};
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1173
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1174
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1175
/**
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1176
 * Get the maximum length of a given string in a string-list. This is an
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1177
 * implicit string-list where the ID's are consecutive
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1178
 * @param base_string StringID of the first string in the list
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1179
 * @param count amount of StringID's in the list
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1180
 * @return the length of the longest string
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1181
 */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1182
static int GetStringListMaxWidth(StringID base_string, byte count)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1183
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1184
	char buffer[512];
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1185
	int width, max_width = 0;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1186
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1187
	for (byte i = 0; i != count; i++) {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1188
		GetString(buffer, base_string + i, lastof(buffer));
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1189
		width = GetStringBoundingBox(buffer).width;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1190
		if (width > max_width) max_width = width;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1191
	}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1192
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1193
	return max_width;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1194
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1195
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1196
/**
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1197
 * Show a general dropdown menu. The positioning of the dropdown menu
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1198
 * defaults to the left side of the parent_button, eg the button that caused
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1199
 * this window to appear. The only exceptions are when the right side of this
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1200
 * dropdown would fall outside the main toolbar window, in that case it is
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1201
 * aligned with the toolbar's right side.
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1202
 * Since the disable-mask is only 8 bits right now, these dropdowns are
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1203
 * restricted to 8 items max if any bits of disabled_mask are active.
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1204
 * @param w Pointer to a window this dropdown menu belongs to. Has no effect
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1205
 * whatsoever, only graphically for positioning.
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1206
 * @param parent_button The widget identifier of the button that was clicked for
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1207
 * this dropdown. The created dropdown then knows what button to raise (button) on
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1208
 * action and whose function to execute (action).
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1209
 * It is possible to appoint another button for an action event by setting the
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1210
 * upper 8 bits of this parameter. If non is set, action is presumed to be the same
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1211
 * as button. So<br>
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1212
 * button bits 0 -  7 - widget clicked to get dropdown
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1213
 * action bits 8 - 15 - function of widget to execute on select (defaults to bits 0 - 7)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1214
 * @param base_string The first StringID shown in the dropdown list. All others are
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1215
 * consecutive indeces from the language file. XXX - fix? Use ingame-string tables?
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1216
 * @param item_count Number of strings in the list, see previous parameter
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1217
 * @param disabled_mask Bitmask of disabled strings in the list
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1218
 * @return Return a pointer to the newly created dropdown window */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1219
static Window *PopupMainToolbMenu(Window *w, uint16 parent_button, StringID base_string, byte item_count, byte disabled_mask)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1220
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1221
	assert(disabled_mask == 0 || item_count <= 8);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1222
	w->LowerWidget(parent_button);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1223
	w->InvalidateWidget(parent_button);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1224
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1225
	DeleteWindowById(WC_TOOLBAR_MENU, 0);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1226
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1227
	/* Extend the dropdown toolbar to the longest string in the list */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1228
	int width = max(GetStringListMaxWidth(base_string, item_count) + 6, 140);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1229
	int height = item_count * 10 + 2;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1230
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1231
	Point pos = GetToolbarDropdownPos(parent_button, width, height);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1232
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1233
	w = AllocateWindow(pos.x, pos.y, width, height, MenuWndProc, WC_TOOLBAR_MENU, _menu_widgets);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1234
	w->widget[0].bottom = item_count * 10 + 1;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1235
	w->flags4 &= ~WF_WHITE_BORDER_MASK;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1236
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1237
	WP(w, menu_d).item_count = item_count;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1238
	WP(w, menu_d).sel_index = 0;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1239
	WP(w, menu_d).main_button = GB(parent_button, 0, 8);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1240
	WP(w, menu_d).action_id = (GB(parent_button, 8, 8) != 0) ? GB(parent_button, 8, 8) : parent_button;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1241
	WP(w, menu_d).string_id = base_string;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1242
	WP(w, menu_d).checked_items = 0;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1243
	WP(w, menu_d).disabled_items = disabled_mask;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1244
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1245
	_popup_menu_active = true;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1246
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1247
	SndPlayFx(SND_15_BEEP);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1248
	return w;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1249
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1250
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1251
/* --- Rendering/drawing the player menu --- */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1252
static int GetPlayerIndexFromMenu(int index)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1253
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1254
	if (index >= 0) {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1255
		const Player *p;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1256
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1257
		FOR_ALL_PLAYERS(p) {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1258
			if (p->is_active && --index < 0) return p->index;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1259
		}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1260
	}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1261
	return -1;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1262
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1263
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1264
static void UpdatePlayerMenuHeight(Window *w)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1265
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1266
	byte num = ActivePlayerCount();
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1267
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1268
	/* Increase one to fit in PlayerList in the menu when in network */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1269
	if (_networking && WP(w, menu_d).main_button == 9) num++;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1270
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1271
	if (WP(w, menu_d).item_count != num) {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1272
		WP(w, menu_d).item_count = num;
10434
d6accd017341 (svn r12976) -Codechange: use w->SetDirty() instead of SetWindowDirty(w) when it's certain that w != NULL.
rubidium
parents: 10433
diff changeset
  1273
		w->SetDirty();
10235
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1274
		num = num * 10 + 2;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1275
		w->height = num;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1276
		w->widget[0].bottom = w->widget[0].top + num - 1;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1277
		w->top = GetToolbarDropdownPos(0, w->width, w->height).y;
10434
d6accd017341 (svn r12976) -Codechange: use w->SetDirty() instead of SetWindowDirty(w) when it's certain that w != NULL.
rubidium
parents: 10433
diff changeset
  1278
		w->SetDirty();
10235
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1279
	}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1280
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1281
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1282
static void PlayerMenuWndProc(Window *w, WindowEvent *e)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1283
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1284
	switch (e->event) {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1285
		case WE_PAINT: {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1286
			UpdatePlayerMenuHeight(w);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1287
			DrawWindowWidgets(w);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1288
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1289
			int x = 1;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1290
			int y = 1;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1291
			int sel = WP(w, menu_d).sel_index;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1292
			int chk = WP(w, menu_d).checked_items; // let this mean gray items.
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1293
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1294
			/* 9 = playerlist */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1295
			if (_networking && WP(w, menu_d).main_button == 9) {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1296
				if (sel == 0) {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1297
					GfxFillRect(x, y, x + 238, y + 9, 0);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1298
				}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1299
				DrawString(x + 19, y, STR_NETWORK_CLIENT_LIST, TC_FROMSTRING);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1300
				y += 10;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1301
				sel--;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1302
			}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1303
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1304
			const Player *p;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1305
			FOR_ALL_PLAYERS(p) {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1306
				if (p->is_active) {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1307
					if (p->index == sel) {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1308
						GfxFillRect(x, y, x + 238, y + 9, 0);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1309
					}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1310
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1311
					DrawPlayerIcon(p->index, x + 2, y + 1);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1312
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1313
					SetDParam(0, p->index);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1314
					SetDParam(1, p->index);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1315
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1316
					TextColour color = (p->index == sel) ? TC_WHITE : TC_BLACK;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1317
					if (chk & 1) color = TC_GREY;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1318
					DrawString(x + 19, y, STR_7021, color);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1319
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1320
					y += 10;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1321
				}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1322
				chk >>= 1;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1323
			}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1324
		 } break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1325
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1326
		case WE_DESTROY: {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1327
			Window *v = FindWindowById(WC_MAIN_TOOLBAR, 0);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1328
			v->RaiseWidget(WP(w, menu_d).main_button);
10450
0b56b6553350 (svn r12992) -Fix (r12976): main toolbar wasn't marked dirty when a child combobox was destroyed
smatz
parents: 10445
diff changeset
  1329
			v->SetDirty();
10235
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1330
			return;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1331
		}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1332
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1333
		case WE_POPUPMENU_SELECT: {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1334
			int index = GetMenuItemIndex(w, e->we.popupmenu.pt.x, e->we.popupmenu.pt.y);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1335
			int action_id = WP(w, menu_d).action_id;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1336
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1337
			/* We have a new entry at the top of the list of menu 9 when networking
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1338
			*  so keep that in count */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1339
			if (_networking && WP(w, menu_d).main_button == 9) {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1340
				if (index > 0) index = GetPlayerIndexFromMenu(index - 1) + 1;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1341
			} else {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1342
				index = GetPlayerIndexFromMenu(index);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1343
			}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1344
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1345
			if (index < 0) {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1346
				Window *w2 = FindWindowById(WC_MAIN_TOOLBAR,0);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1347
				if (GetWidgetFromPos(w2, e->we.popupmenu.pt.x - w2->left, e->we.popupmenu.pt.y - w2->top) == WP(w, menu_d).main_button)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1348
					index = WP(w, menu_d).sel_index;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1349
			}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1350
10433
cca9f7948fe5 (svn r12975) -Codechange: replace DeleteWindow(w) with delete w.
rubidium
parents: 10350
diff changeset
  1351
			delete w;
10235
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1352
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1353
			if (index >= 0) {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1354
				assert(index >= 0 && index < 30);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1355
				_menu_clicked_procs[action_id](index);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1356
			}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1357
		} break;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1358
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1359
		case WE_POPUPMENU_OVER: {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1360
			int index;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1361
			UpdatePlayerMenuHeight(w);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1362
			index = GetMenuItemIndex(w, e->we.popupmenu.pt.x, e->we.popupmenu.pt.y);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1363
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1364
			/* We have a new entry at the top of the list of menu 9 when networking
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1365
			* so keep that in count */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1366
			if (_networking && WP(w, menu_d).main_button == 9) {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1367
				if (index > 0) index = GetPlayerIndexFromMenu(index - 1) + 1;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1368
			} else {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1369
				index = GetPlayerIndexFromMenu(index);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1370
			}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1371
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1372
			if (index == -1 || index == WP(w, menu_d).sel_index) return;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1373
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1374
			WP(w, menu_d).sel_index = index;
10434
d6accd017341 (svn r12976) -Codechange: use w->SetDirty() instead of SetWindowDirty(w) when it's certain that w != NULL.
rubidium
parents: 10433
diff changeset
  1375
			w->SetDirty();
10235
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1376
			return;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1377
		}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1378
	}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1379
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1380
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1381
static const Widget _player_menu_widgets[] = {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1382
{    WWT_PANEL, RESIZE_NONE, 14, 0, 240, 0, 81, 0x0, STR_NULL},
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1383
{ WIDGETS_END},
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1384
};
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1385
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1386
static Window *PopupMainPlayerToolbMenu(Window *w, int main_button, int gray)
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1387
{
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1388
	w->LowerWidget(main_button);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1389
	w->InvalidateWidget(main_button);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1390
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1391
	DeleteWindowById(WC_TOOLBAR_MENU, 0);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1392
	Point pos = GetToolbarDropdownPos(main_button, 241, 82);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1393
	w = AllocateWindow(pos.x, pos.y, 241, 82, PlayerMenuWndProc, WC_TOOLBAR_MENU, _player_menu_widgets);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1394
	w->flags4 &= ~WF_WHITE_BORDER_MASK;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1395
	WP(w, menu_d).item_count = 0;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1396
	WP(w, menu_d).sel_index = (_local_player != PLAYER_SPECTATOR) ? _local_player : GetPlayerIndexFromMenu(0);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1397
	if (_networking && main_button == 9) {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1398
		if (_local_player != PLAYER_SPECTATOR) {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1399
			WP(w, menu_d).sel_index++;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1400
		} else {
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1401
			/* Select client list by default for spectators */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1402
			WP(w, menu_d).sel_index = 0;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1403
		}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1404
	}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1405
	WP(w, menu_d).action_id = main_button;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1406
	WP(w, menu_d).main_button = main_button;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1407
	WP(w, menu_d).checked_items = gray;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1408
	WP(w, menu_d).disabled_items = 0;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1409
	_popup_menu_active = true;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1410
	SndPlayFx(SND_15_BEEP);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1411
	return w;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1412
}
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1413
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1414
/* --- Allocating the toolbar --- */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1415
9219
d232ad03c54c (svn r12398) -Codechange [FS#1770]: Move toolbar related code to it's own little neighbourhood. Based on a patch by Dominik.
rubidium
parents: 9111
diff changeset
  1416
Window *AllocateToolbar()
4077
d3022f976946 (svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents: 4013
diff changeset
  1417
{
10281
85a77bfe5614 (svn r12813) -Fix [FS#1943]: the 'last built railtype' got reset too often.
rubidium
parents: 10237
diff changeset
  1418
	/* Clean old GUI values; railtype is (re)set by rail_gui.cpp */
10235
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1419
	_last_built_roadtype = ROADTYPE_ROAD;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1420
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1421
	Window *w = AllocateWindowDesc((_game_mode != GM_EDITOR) ? &_toolb_normal_desc : &_toolb_scen_desc);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1422
	if (w == NULL) return NULL;
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1423
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1424
	CLRBITS(w->flags4, WF_WHITE_BORDER_MASK);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1425
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1426
	w->SetWidgetDisabledState(0, _networking && !_network_server); // if not server, disable pause button
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1427
	w->SetWidgetDisabledState(1, _networking); // if networking, disable fast-forward button
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1428
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1429
	/* 'w' is for sure a WC_MAIN_TOOLBAR */
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1430
	PositionMainToolbar(w);
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1431
684949ed0f03 (svn r12767) -Codechange: merge all main toolbar related functions into a single file instead of scattering the functionality over several files.
rubidium
parents: 10229
diff changeset
  1432
	return w;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1433
}