src/window.h
author KUDr
Sun, 18 Feb 2007 19:55:35 +0000
branchcpp_gui
changeset 6260 740c702f6871
parent 6259 0f36789984b1
child 6261 5fd6b1cfa424
permissions -rw-r--r--
(svn r8804) [cpp_gui] -Codechange: BaseWindow now inherits from CompositeWidget (with no benefits yet)
-CompositeWidget is no longer abstract (added OnLeftClick() to it)
2186
461a2aff3486 (svn r2701) Insert Id tags into all source files
tron
parents: 2159
diff changeset
     1
/* $Id$ */
461a2aff3486 (svn r2701) Insert Id tags into all source files
tron
parents: 2159
diff changeset
     2
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
     3
#ifndef WINDOW_H
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
     4
#define WINDOW_H
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
     5
6235
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
     6
#include <list>
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
     7
#include <map>
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
     8
#include "macros.h"
4299
b86602eaaff1 (svn r5944) -Merge TGP (r5578, r5579, r5724, r5726): -Feature: filter for textboxes to only
truelight
parents: 4266
diff changeset
     9
#include "string.h"
4712
273ec3b182bf (svn r6624) -Feature: added ability to add refit commands to vehicle orders (can only be done in goto depot orders)
bjarni
parents: 4695
diff changeset
    10
#include "order.h"
5838
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
    11
#include "rail.h"
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
    12
#include "airport.h"
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
    13
#include "misc/rect.hpp"
6235
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
    14
#include "misc/countedptr.hpp"
4299
b86602eaaff1 (svn r5944) -Merge TGP (r5578, r5579, r5724, r5726): -Feature: filter for textboxes to only
truelight
parents: 4266
diff changeset
    15
4634
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
    16
typedef struct WindowEvent WindowEvent;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    17
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
    18
typedef void WindowProc(BaseWindow *w, WindowEvent *e);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    19
867
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    20
/* How the resize system works:
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    21
    First, you need to add a WWT_RESIZEBOX to the widgets, and you need
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    22
     to add the flag WDF_RESIZABLE to the window. Now the window is ready
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    23
     to resize itself.
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    24
    As you may have noticed, all widgets have a RESIZE_XXX in their line.
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    25
     This lines controls how the widgets behave on resize. RESIZE_NONE means
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    26
     it doesn't do anything. Any other option let's one of the borders
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    27
     move with the changed width/height. So if a widget has
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    28
     RESIZE_RIGHT, and the window is made 5 pixels wider by the user,
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    29
     the right of the window will also be made 5 pixels wider.
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    30
    Now, what if you want to clamp a widget to the bottom? Give it the flag
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    31
     RESIZE_TB. This is RESIZE_TOP + RESIZE_BOTTOM. Now if the window gets
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    32
     5 pixels bigger, both the top and bottom gets 5 bigger, so the whole
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    33
     widgets moves downwards without resizing, and appears to be clamped
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    34
     to the bottom. Nice aint it?
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    35
   You should know one more thing about this system. Most windows can't
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    36
    handle an increase of 1 pixel. So there is a step function, which
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    37
    let the windowsize only be changed by X pixels. You configure this
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    38
    after making the window, like this:
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    39
      w->resize.step_height = 10;
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    40
    Now the window will only change in height in steps of 10.
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    41
   You can also give a minimum width and height. The default value is
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    42
    the default height/width of the window itself. You can change this
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    43
    AFTER window-creation, with:
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    44
     w->resize.width or w->resize.height.
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    45
   That was all.. good luck, and enjoy :) -- TrueLight */
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    46
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
    47
enum ResizeFlag {
867
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    48
	RESIZE_NONE   = 0,
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    49
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    50
	RESIZE_LEFT   = 1,
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    51
	RESIZE_RIGHT  = 2,
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    52
	RESIZE_TOP    = 4,
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    53
	RESIZE_BOTTOM = 8,
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    54
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    55
	RESIZE_LR     = RESIZE_LEFT  | RESIZE_RIGHT,
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    56
	RESIZE_RB     = RESIZE_RIGHT | RESIZE_BOTTOM,
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    57
	RESIZE_TB     = RESIZE_TOP   | RESIZE_BOTTOM,
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    58
	RESIZE_LRB    = RESIZE_LEFT  | RESIZE_RIGHT  | RESIZE_BOTTOM,
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    59
	RESIZE_LRTB   = RESIZE_LEFT  | RESIZE_RIGHT  | RESIZE_TOP | RESIZE_BOTTOM,
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    60
	RESIZE_RTB    = RESIZE_RIGHT | RESIZE_TOP    | RESIZE_BOTTOM,
4749
9490e643f23f (svn r6661) Feature: Windows are not restricted to 32 widget items anymore.
belugas
parents: 4739
diff changeset
    61
9490e643f23f (svn r6661) Feature: Windows are not restricted to 32 widget items anymore.
belugas
parents: 4739
diff changeset
    62
	/* The following flags are used by the system to specify what is disabled, hidden, or clicked
9490e643f23f (svn r6661) Feature: Windows are not restricted to 32 widget items anymore.
belugas
parents: 4739
diff changeset
    63
	 * They are used in the same place as the above RESIZE_x flags, Widget visual_flags.
9490e643f23f (svn r6661) Feature: Windows are not restricted to 32 widget items anymore.
belugas
parents: 4739
diff changeset
    64
	 * These states are used in exceptions. If nothing is specified, they will indicate
9490e643f23f (svn r6661) Feature: Windows are not restricted to 32 widget items anymore.
belugas
parents: 4739
diff changeset
    65
	 * Enabled, visible or unclicked widgets*/
9490e643f23f (svn r6661) Feature: Windows are not restricted to 32 widget items anymore.
belugas
parents: 4739
diff changeset
    66
	WIDG_DISABLED = 4,  // widget is greyed out, not available
9490e643f23f (svn r6661) Feature: Windows are not restricted to 32 widget items anymore.
belugas
parents: 4739
diff changeset
    67
	WIDG_HIDDEN   = 5,  // widget is made invisible
9490e643f23f (svn r6661) Feature: Windows are not restricted to 32 widget items anymore.
belugas
parents: 4739
diff changeset
    68
	WIDG_LOWERED  = 6,  // widget is paint lowered, a pressed button in fact
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
    69
};
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
    70
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
    71
DECLARE_ENUM_AS_BIT_SET(ResizeFlag);
867
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
    72
6242
17609af8a1d1 (svn r8704) [cpp_gui] -Codechange: flash_timeout and autorepeat_timeout extracted from Window::flags4
KUDr
parents: 6241
diff changeset
    73
enum WindowFlags {
17609af8a1d1 (svn r8704) [cpp_gui] -Codechange: flash_timeout and autorepeat_timeout extracted from Window::flags4
KUDr
parents: 6241
diff changeset
    74
	//WF_TIMEOUT_SHL       = 0,
17609af8a1d1 (svn r8704) [cpp_gui] -Codechange: flash_timeout and autorepeat_timeout extracted from Window::flags4
KUDr
parents: 6241
diff changeset
    75
	//WF_TIMEOUT_MASK      = 7,
17609af8a1d1 (svn r8704) [cpp_gui] -Codechange: flash_timeout and autorepeat_timeout extracted from Window::flags4
KUDr
parents: 6241
diff changeset
    76
	WF_DRAGGING          = 1 <<  3,
17609af8a1d1 (svn r8704) [cpp_gui] -Codechange: flash_timeout and autorepeat_timeout extracted from Window::flags4
KUDr
parents: 6241
diff changeset
    77
	WF_SCROLL_UP         = 1 <<  4,
17609af8a1d1 (svn r8704) [cpp_gui] -Codechange: flash_timeout and autorepeat_timeout extracted from Window::flags4
KUDr
parents: 6241
diff changeset
    78
	WF_SCROLL_DOWN       = 1 <<  5,
17609af8a1d1 (svn r8704) [cpp_gui] -Codechange: flash_timeout and autorepeat_timeout extracted from Window::flags4
KUDr
parents: 6241
diff changeset
    79
	WF_SCROLL_MIDDLE     = 1 <<  6,
17609af8a1d1 (svn r8704) [cpp_gui] -Codechange: flash_timeout and autorepeat_timeout extracted from Window::flags4
KUDr
parents: 6241
diff changeset
    80
	WF_HSCROLL           = 1 <<  7,
17609af8a1d1 (svn r8704) [cpp_gui] -Codechange: flash_timeout and autorepeat_timeout extracted from Window::flags4
KUDr
parents: 6241
diff changeset
    81
	WF_SIZING            = 1 <<  8,
17609af8a1d1 (svn r8704) [cpp_gui] -Codechange: flash_timeout and autorepeat_timeout extracted from Window::flags4
KUDr
parents: 6241
diff changeset
    82
	WF_STICKY            = 1 <<  9,
17609af8a1d1 (svn r8704) [cpp_gui] -Codechange: flash_timeout and autorepeat_timeout extracted from Window::flags4
KUDr
parents: 6241
diff changeset
    83
17609af8a1d1 (svn r8704) [cpp_gui] -Codechange: flash_timeout and autorepeat_timeout extracted from Window::flags4
KUDr
parents: 6241
diff changeset
    84
	WF_DISABLE_VP_SCROLL = 1 << 10,
17609af8a1d1 (svn r8704) [cpp_gui] -Codechange: flash_timeout and autorepeat_timeout extracted from Window::flags4
KUDr
parents: 6241
diff changeset
    85
17609af8a1d1 (svn r8704) [cpp_gui] -Codechange: flash_timeout and autorepeat_timeout extracted from Window::flags4
KUDr
parents: 6241
diff changeset
    86
	//WF_WHITE_BORDER_ONE  = 1 << 11,
17609af8a1d1 (svn r8704) [cpp_gui] -Codechange: flash_timeout and autorepeat_timeout extracted from Window::flags4
KUDr
parents: 6241
diff changeset
    87
	//WF_WHITE_BORDER_MASK = 1 << 12 | WF_WHITE_BORDER_ONE,
17609af8a1d1 (svn r8704) [cpp_gui] -Codechange: flash_timeout and autorepeat_timeout extracted from Window::flags4
KUDr
parents: 6241
diff changeset
    88
	WF_SCROLL2           = 1 << 13,
17609af8a1d1 (svn r8704) [cpp_gui] -Codechange: flash_timeout and autorepeat_timeout extracted from Window::flags4
KUDr
parents: 6241
diff changeset
    89
};
17609af8a1d1 (svn r8704) [cpp_gui] -Codechange: flash_timeout and autorepeat_timeout extracted from Window::flags4
KUDr
parents: 6241
diff changeset
    90
17609af8a1d1 (svn r8704) [cpp_gui] -Codechange: flash_timeout and autorepeat_timeout extracted from Window::flags4
KUDr
parents: 6241
diff changeset
    91
DECLARE_ENUM_AS_BIT_SET(WindowFlags);
17609af8a1d1 (svn r8704) [cpp_gui] -Codechange: flash_timeout and autorepeat_timeout extracted from Window::flags4
KUDr
parents: 6241
diff changeset
    92
4755
4a3564952554 (svn r6669) -Add: vararg functions to set hidden/disabled/lowered state of multiple widgets in one call
glx
parents: 4749
diff changeset
    93
/* used to indicate the end of widgets' list for vararg functions */
4a3564952554 (svn r6669) -Add: vararg functions to set hidden/disabled/lowered state of multiple widgets in one call
glx
parents: 4749
diff changeset
    94
enum {
4a3564952554 (svn r6669) -Add: vararg functions to set hidden/disabled/lowered state of multiple widgets in one call
glx
parents: 4749
diff changeset
    95
	WIDGET_LIST_END = -1,
4a3564952554 (svn r6669) -Add: vararg functions to set hidden/disabled/lowered state of multiple widgets in one call
glx
parents: 4749
diff changeset
    96
};
4a3564952554 (svn r6669) -Add: vararg functions to set hidden/disabled/lowered state of multiple widgets in one call
glx
parents: 4749
diff changeset
    97
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
    98
/****************** THESE ARE NOT WIDGET TYPES!!!!! *******************/
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
    99
enum WindowWidgetBehaviours {
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   100
	WWB_PUSHBUTTON  = 1 << 5,
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   101
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   102
	WWB_MASK        = 0xE0,
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   103
};
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   104
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   105
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   106
enum WindowWidgetTypes {
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   107
	WWT_EMPTY,
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   108
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   109
	WWT_PANEL,      /* simple depressed panel */
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   110
	WWT_INSET,      /* pressed (inset) panel, most commonly used as combo box _text_ area */
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   111
	WWT_IMGBTN,     /* button with image */
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   112
	WWT_IMGBTN_2,   /* button with diff image when clicked */
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   113
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   114
	WWT_TEXTBTN,    /* button with text */
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   115
	WWT_TEXTBTN_2,  /* button with diff text when clicked */
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   116
	WWT_LABEL,      /* centered label */
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   117
	WWT_MATRIX,
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   118
	WWT_SCROLLBAR,
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   119
	WWT_FRAME,      /* frame */
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   120
	WWT_CAPTION,
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   121
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   122
	WWT_HSCROLLBAR,
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   123
	WWT_STICKYBOX,
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   124
	WWT_SCROLL2BAR, /* 2nd vertical scrollbar*/
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   125
	WWT_RESIZEBOX,
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   126
	WWT_CLOSEBOX,
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   127
	WWT_LAST,       /* Last Item. use WIDGETS_END to fill up padding!! */
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   128
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   129
	WWT_MASK = 0x1F,
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   130
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   131
	WWT_PUSHBTN     = WWT_PANEL   | WWB_PUSHBUTTON,
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   132
	WWT_PUSHTXTBTN  = WWT_TEXTBTN | WWB_PUSHBUTTON,
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   133
	WWT_PUSHIMGBTN  = WWT_IMGBTN  | WWB_PUSHBUTTON,
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   134
};
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   135
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   136
#define WIDGETS_END WWT_LAST,   RESIZE_NONE,     0,     0,     0,     0,     0, 0, STR_NULL
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   137
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   138
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   139
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   140
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   141
struct Widget;
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   142
typedef CCountedPtr<Widget> WidgetPtr;
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   143
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   144
struct CompositeWidget;
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   145
typedef CCountedPtr<CompositeWidget> CompositeWidgetPtr;
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   146
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   147
typedef int32 WidgetId;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   148
4437
d06bb548e48d (svn r6209) Move DrawFrameRect() out of gfx.[ch], because it uses data (_color_list) which the renderer shouldn't have know about
tron
parents: 4434
diff changeset
   149
typedef enum FrameFlags {
5838
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
   150
	FR_NONE         = 0x00,
1938
21bd6ef5f85e (svn r2444) - CodeChange: Add an enum for demagicifying the values of the 'flags' parameter of DrawFrameRect(). (_Abraxa_)
hackykid
parents: 1648
diff changeset
   151
	FR_TRANSPARENT  = 0x01,  ///< Makes the background transparent if set
21bd6ef5f85e (svn r2444) - CodeChange: Add an enum for demagicifying the values of the 'flags' parameter of DrawFrameRect(). (_Abraxa_)
hackykid
parents: 1648
diff changeset
   152
	FR_BORDERONLY   = 0x10,  ///< Draw border only, no background
21bd6ef5f85e (svn r2444) - CodeChange: Add an enum for demagicifying the values of the 'flags' parameter of DrawFrameRect(). (_Abraxa_)
hackykid
parents: 1648
diff changeset
   153
	FR_LOWERED      = 0x20,  ///< If set the frame is lowered and the background color brighter (ie. buttons when pressed)
21bd6ef5f85e (svn r2444) - CodeChange: Add an enum for demagicifying the values of the 'flags' parameter of DrawFrameRect(). (_Abraxa_)
hackykid
parents: 1648
diff changeset
   154
	FR_DARKENED     = 0x40,  ///< If set the background is darker, allows for lowered frames with normal background color when used with FR_LOWERED (ie. dropdown boxes)
4437
d06bb548e48d (svn r6209) Move DrawFrameRect() out of gfx.[ch], because it uses data (_color_list) which the renderer shouldn't have know about
tron
parents: 4434
diff changeset
   155
} FrameFlags;
d06bb548e48d (svn r6209) Move DrawFrameRect() out of gfx.[ch], because it uses data (_color_list) which the renderer shouldn't have know about
tron
parents: 4434
diff changeset
   156
5838
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
   157
DECLARE_ENUM_AS_BIT_SET(FrameFlags);
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
   158
4437
d06bb548e48d (svn r6209) Move DrawFrameRect() out of gfx.[ch], because it uses data (_color_list) which the renderer shouldn't have know about
tron
parents: 4434
diff changeset
   159
void DrawFrameRect(int left, int top, int right, int bottom, int color, FrameFlags flags);
1938
21bd6ef5f85e (svn r2444) - CodeChange: Add an enum for demagicifying the values of the 'flags' parameter of DrawFrameRect(). (_Abraxa_)
hackykid
parents: 1648
diff changeset
   160
4634
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   161
enum WindowEventCodes {
5664
dbbf4f842a00 (svn r7616) -Cleanup:
Darkvater
parents: 5268
diff changeset
   162
	WE_CREATE,
dbbf4f842a00 (svn r7616) -Cleanup:
Darkvater
parents: 5268
diff changeset
   163
	WE_DESTROY,
dbbf4f842a00 (svn r7616) -Cleanup:
Darkvater
parents: 5268
diff changeset
   164
	WE_PAINT,
dbbf4f842a00 (svn r7616) -Cleanup:
Darkvater
parents: 5268
diff changeset
   165
	WE_KEYPRESS,
dbbf4f842a00 (svn r7616) -Cleanup:
Darkvater
parents: 5268
diff changeset
   166
	WE_CLICK,
dbbf4f842a00 (svn r7616) -Cleanup:
Darkvater
parents: 5268
diff changeset
   167
	WE_RCLICK,
dbbf4f842a00 (svn r7616) -Cleanup:
Darkvater
parents: 5268
diff changeset
   168
	WE_MOUSEOVER,
dbbf4f842a00 (svn r7616) -Cleanup:
Darkvater
parents: 5268
diff changeset
   169
	WE_MOUSELOOP,
dbbf4f842a00 (svn r7616) -Cleanup:
Darkvater
parents: 5268
diff changeset
   170
	WE_MOUSEWHEEL,
dbbf4f842a00 (svn r7616) -Cleanup:
Darkvater
parents: 5268
diff changeset
   171
	WE_TICK,
dbbf4f842a00 (svn r7616) -Cleanup:
Darkvater
parents: 5268
diff changeset
   172
	WE_4,
dbbf4f842a00 (svn r7616) -Cleanup:
Darkvater
parents: 5268
diff changeset
   173
	WE_TIMEOUT,
dbbf4f842a00 (svn r7616) -Cleanup:
Darkvater
parents: 5268
diff changeset
   174
	WE_PLACE_OBJ,
dbbf4f842a00 (svn r7616) -Cleanup:
Darkvater
parents: 5268
diff changeset
   175
	WE_ABORT_PLACE_OBJ,
dbbf4f842a00 (svn r7616) -Cleanup:
Darkvater
parents: 5268
diff changeset
   176
	WE_ON_EDIT_TEXT,
dbbf4f842a00 (svn r7616) -Cleanup:
Darkvater
parents: 5268
diff changeset
   177
	WE_ON_EDIT_TEXT_CANCEL,
dbbf4f842a00 (svn r7616) -Cleanup:
Darkvater
parents: 5268
diff changeset
   178
	WE_POPUPMENU_SELECT,
dbbf4f842a00 (svn r7616) -Cleanup:
Darkvater
parents: 5268
diff changeset
   179
	WE_POPUPMENU_OVER,
dbbf4f842a00 (svn r7616) -Cleanup:
Darkvater
parents: 5268
diff changeset
   180
	WE_DRAGDROP,
dbbf4f842a00 (svn r7616) -Cleanup:
Darkvater
parents: 5268
diff changeset
   181
	WE_PLACE_DRAG,
dbbf4f842a00 (svn r7616) -Cleanup:
Darkvater
parents: 5268
diff changeset
   182
	WE_PLACE_MOUSEUP,
dbbf4f842a00 (svn r7616) -Cleanup:
Darkvater
parents: 5268
diff changeset
   183
	WE_PLACE_PRESIZE,
dbbf4f842a00 (svn r7616) -Cleanup:
Darkvater
parents: 5268
diff changeset
   184
	WE_DROPDOWN_SELECT,
dbbf4f842a00 (svn r7616) -Cleanup:
Darkvater
parents: 5268
diff changeset
   185
	WE_RESIZE,
dbbf4f842a00 (svn r7616) -Cleanup:
Darkvater
parents: 5268
diff changeset
   186
	WE_MESSAGE,
dbbf4f842a00 (svn r7616) -Cleanup:
Darkvater
parents: 5268
diff changeset
   187
	WE_SCROLL,
dbbf4f842a00 (svn r7616) -Cleanup:
Darkvater
parents: 5268
diff changeset
   188
	WE_INVALIDATE_DATA,
4634
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   189
};
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   190
4634
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   191
struct WindowEvent {
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   192
	byte event;
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   193
	union {
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   194
		struct{
6259
0f36789984b1 (svn r8803) [cpp_gui] -Codechange: point structures (Point, Point16) made compatible
KUDr
parents: 6258
diff changeset
   195
			PointRaw pt;
4634
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   196
			int widget;
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   197
		} click;
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents: 424
diff changeset
   198
4634
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   199
		struct {
6259
0f36789984b1 (svn r8803) [cpp_gui] -Codechange: point structures (Point, Point16) made compatible
KUDr
parents: 6258
diff changeset
   200
			PointRaw pt;
4634
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   201
			TileIndex tile;
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   202
			TileIndex starttile;
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   203
			int userdata;
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   204
		} place;
1648
747061dca705 (svn r2152) - Fix: Chatbar in MP games is now on-top of the news window.
darkvater
parents: 1570
diff changeset
   205
4634
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   206
		struct {
6259
0f36789984b1 (svn r8803) [cpp_gui] -Codechange: point structures (Point, Point16) made compatible
KUDr
parents: 6258
diff changeset
   207
			PointRaw pt;
4634
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   208
			int widget;
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   209
		} dragdrop;
4335
18bc63352a17 (svn r6036) -Codechange: do not handle SCROLL in a central function, but let windows handle them theirself. Added WE_SCROLL for this.
truelight
parents: 4318
diff changeset
   210
4634
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   211
		struct {
6259
0f36789984b1 (svn r8803) [cpp_gui] -Codechange: point structures (Point, Point16) made compatible
KUDr
parents: 6258
diff changeset
   212
			PointRaw size;
0f36789984b1 (svn r8803) [cpp_gui] -Codechange: point structures (Point, Point16) made compatible
KUDr
parents: 6258
diff changeset
   213
			PointRaw diff;
4634
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   214
		} sizing;
4337
f77887bd2634 (svn r6038) -Codechange: move mousewheel code to event WE_MOUSEWHEEL instead of a general function that handles that
truelight
parents: 4335
diff changeset
   215
4634
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   216
		struct {
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   217
			char *str;
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   218
		} edittext;
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   219
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   220
		struct {
6259
0f36789984b1 (svn r8803) [cpp_gui] -Codechange: point structures (Point, Point16) made compatible
KUDr
parents: 6258
diff changeset
   221
			PointRaw pt;
4634
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   222
		} popupmenu;
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   223
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   224
		struct {
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   225
			int button;
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   226
			int index;
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   227
		} dropdown;
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   228
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   229
		struct {
6259
0f36789984b1 (svn r8803) [cpp_gui] -Codechange: point structures (Point, Point16) made compatible
KUDr
parents: 6258
diff changeset
   230
			PointRaw pt;
4634
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   231
			int widget;
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   232
		} mouseover;
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   233
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   234
		struct {
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   235
			bool cont;     // continue the search? (default true)
5108
dc67d70b5a45 (svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents: 5090
diff changeset
   236
			uint16 key;    // 16-bit Unicode value of the key
4634
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   237
			uint16 keycode;// untranslated key (including shift-state)
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   238
		} keypress;
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   239
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   240
		struct {
5838
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
   241
			int msg;      // message to be sent
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
   242
			int wparam;   // additional message-specific information
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
   243
			int lparam;   // additional message-specific information
4634
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   244
		} message;
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   245
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   246
		struct {
6259
0f36789984b1 (svn r8803) [cpp_gui] -Codechange: point structures (Point, Point16) made compatible
KUDr
parents: 6258
diff changeset
   247
			PointRaw delta;   // delta position against position of last call
4634
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   248
		} scroll;
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   249
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   250
		struct {
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   251
			int wheel;     // how much was 'wheel'd'
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   252
		} wheel;
897461a3e9ca (svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents: 4547
diff changeset
   253
	} we;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   254
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   255
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   256
struct OldWidget;
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   257
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   258
typedef struct WindowDesc {
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   259
	int16 left, top, width, height;
2788
db2896482939 (svn r3336) byte -> WindowClass, uint16 -> WindowNumber
tron
parents: 2757
diff changeset
   260
	WindowClass cls;
db2896482939 (svn r3336) byte -> WindowClass, uint16 -> WindowNumber
tron
parents: 2757
diff changeset
   261
	WindowClass parent_cls;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   262
	uint32 flags;
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   263
	const OldWidget *widgets;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   264
	WindowProc *proc;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   265
} WindowDesc;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   266
5664
dbbf4f842a00 (svn r7616) -Cleanup:
Darkvater
parents: 5268
diff changeset
   267
enum WindowDefaultFlag {
5667
248a3234d2e2 (svn r7619) -Feature (Internal): Add support for modal children. It's a window-child that
Darkvater
parents: 5666
diff changeset
   268
	WDF_STD_TOOLTIPS    =   1, /* use standard routine when displaying tooltips */
248a3234d2e2 (svn r7619) -Feature (Internal): Add support for modal children. It's a window-child that
Darkvater
parents: 5666
diff changeset
   269
	WDF_DEF_WIDGET      =   2, /* default widget control for some widgets in the on click event */
248a3234d2e2 (svn r7619) -Feature (Internal): Add support for modal children. It's a window-child that
Darkvater
parents: 5666
diff changeset
   270
	WDF_STD_BTN         =   4, /* default handling for close and drag widgets (widget no 0 and 1) */
2064
c889fcc76398 (svn r2573) Codechange: Removed WDF_RESTORE_DPARAM, it's not needed with the new string system.
ludde
parents: 2021
diff changeset
   271
5667
248a3234d2e2 (svn r7619) -Feature (Internal): Add support for modal children. It's a window-child that
Darkvater
parents: 5666
diff changeset
   272
	WDF_UNCLICK_BUTTONS =  16, /* Unclick buttons when the window event times out */
248a3234d2e2 (svn r7619) -Feature (Internal): Add support for modal children. It's a window-child that
Darkvater
parents: 5666
diff changeset
   273
	WDF_STICKY_BUTTON   =  32, /* Set window to sticky mode; they are not closed unless closed with 'X' (widget 2) */
248a3234d2e2 (svn r7619) -Feature (Internal): Add support for modal children. It's a window-child that
Darkvater
parents: 5666
diff changeset
   274
	WDF_RESIZABLE       =  64, /* A window can be resized */
248a3234d2e2 (svn r7619) -Feature (Internal): Add support for modal children. It's a window-child that
Darkvater
parents: 5666
diff changeset
   275
	WDF_MODAL           = 128, /* The window is a modal child of some other window, meaning the parent is 'inactive' */
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   276
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   277
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   278
/* can be used as x or y coordinates to cause a specific placement */
5664
dbbf4f842a00 (svn r7616) -Cleanup:
Darkvater
parents: 5268
diff changeset
   279
enum WindowDefaultPosition {
5072
df5bde83a4bc (svn r7130) -Codechange: Handle the positioning of windows through the desc->left/top settings with
Darkvater
parents: 5071
diff changeset
   280
	WDP_AUTO      = -1, ///< Find a place automatically
df5bde83a4bc (svn r7130) -Codechange: Handle the positioning of windows through the desc->left/top settings with
Darkvater
parents: 5071
diff changeset
   281
	WDP_CENTER    = -2, ///< Center the window (left/right or top/bottom)
df5bde83a4bc (svn r7130) -Codechange: Handle the positioning of windows through the desc->left/top settings with
Darkvater
parents: 5071
diff changeset
   282
	WDP_ALIGN_TBR = -3, ///< Align the right side of the window with the right side of the main toolbar
df5bde83a4bc (svn r7130) -Codechange: Handle the positioning of windows through the desc->left/top settings with
Darkvater
parents: 5071
diff changeset
   283
	WDP_ALIGN_TBL = -4, ///< Align the left side of the window with the left side of the main toolbar
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   284
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   285
1390
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   286
typedef struct Textbuf {
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   287
	char *buf;                  /* buffer in which text is saved */
5698
6697ee90a195 (svn r7700) -Fix (r7182): the caret 'randomly' jumped back and forth when getting a new randomised seed in the Generation World GUI.
rubidium
parents: 5682
diff changeset
   288
	uint16 maxlength, maxwidth; /* the maximum size of the buffer. Maxwidth specifies screensize in pixels, maxlength is in bytes */
6697ee90a195 (svn r7700) -Fix (r7182): the caret 'randomly' jumped back and forth when getting a new randomised seed in the Generation World GUI.
rubidium
parents: 5682
diff changeset
   289
	uint16 length, width;       /* the current size of the string. Width specifies screensize in pixels, length is in bytes */
1390
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   290
	bool caret;                 /* is the caret ("_") visible or not */
5698
6697ee90a195 (svn r7700) -Fix (r7182): the caret 'randomly' jumped back and forth when getting a new randomised seed in the Generation World GUI.
rubidium
parents: 5682
diff changeset
   291
	uint16 caretpos;            /* the current position of the caret in the buffer, in bytes */
1390
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   292
	uint16 caretxoffs;          /* the current position of the caret in pixels */
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   293
} Textbuf;
53a5713cf3f9 (svn r1894) - Codechange: cleaned up the console a bit, wholly unified handling of text with that of editboxes
Darkvater
parents: 1386
diff changeset
   294
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   295
#define WP(ptr,str) (*(str*)(ptr)->custom)
2906
18fa7bda750f (svn r3461) - Fix: Increase window-size as for 64-bit machines it wasn't enough
Darkvater
parents: 2888
diff changeset
   296
/* You cannot 100% reliably calculate the biggest custom struct as
18fa7bda750f (svn r3461) - Fix: Increase window-size as for 64-bit machines it wasn't enough
Darkvater
parents: 2888
diff changeset
   297
 * the number of pointers in it and alignment will have a huge impact.
4299
b86602eaaff1 (svn r5944) -Merge TGP (r5578, r5579, r5724, r5726): -Feature: filter for textboxes to only
truelight
parents: 4266
diff changeset
   298
 * 96 is the largest window-size for 64-bit machines currently */
b86602eaaff1 (svn r5944) -Merge TGP (r5578, r5579, r5724, r5726): -Feature: filter for textboxes to only
truelight
parents: 4266
diff changeset
   299
#define WINDOW_CUSTOM_SIZE 96
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   300
2596
d228e8ce6fcf (svn r3133) - static, const
tron
parents: 2549
diff changeset
   301
typedef struct Scrollbar {
62
2bdd81b8adcc (svn r63) Fix: [ 1009385 ] Too many save games prevented loading
dominik
parents: 0
diff changeset
   302
	uint16 count, cap, pos;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   303
} Scrollbar;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   304
2596
d228e8ce6fcf (svn r3133) - static, const
tron
parents: 2549
diff changeset
   305
typedef struct ResizeInfo {
867
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
   306
	uint width; /* Minimum width and height */
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
   307
	uint height;
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
   308
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
   309
	uint step_width; /* In how big steps the width and height go */
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
   310
	uint step_height;
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
   311
} ResizeInfo;
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
   312
2622
1219c6a5bef3 (svn r3162) -Fix: renamed 'Message' to 'WindowMessage', a struct named 'Message' already
truelight
parents: 2596
diff changeset
   313
typedef struct WindowMessage {
1648
747061dca705 (svn r2152) - Fix: Chatbar in MP games is now on-top of the news window.
darkvater
parents: 1570
diff changeset
   314
		int msg;
747061dca705 (svn r2152) - Fix: Chatbar in MP games is now on-top of the news window.
darkvater
parents: 1570
diff changeset
   315
		int wparam;
747061dca705 (svn r2152) - Fix: Chatbar in MP games is now on-top of the news window.
darkvater
parents: 1570
diff changeset
   316
		int lparam;
2622
1219c6a5bef3 (svn r3162) -Fix: renamed 'Message' to 'WindowMessage', a struct named 'Message' already
truelight
parents: 2596
diff changeset
   317
} WindowMessage;
1648
747061dca705 (svn r2152) - Fix: Chatbar in MP games is now on-top of the news window.
darkvater
parents: 1570
diff changeset
   318
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   319
struct OldWidget {
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   320
	WindowWidgetTypes type;           ///< OldWidget type, see @WindowWidgetTypes
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   321
	byte m_display_flags;             ///< Resize direction, alignment, etc. during resizing, see @ResizeFlags
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   322
	byte color;                       ///< OldWidget colour, see docs/ottd-colourtext-palette.png
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   323
	int16 left, right, top, bottom;   ///< The position offsets inside the window
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   324
	uint16 data;                      ///< The String/Image or special code (list-matrixes) of a widget
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   325
	StringID tooltips;                ///< Tooltips that are shown when rightclicking on a widget
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   326
};
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   327
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   328
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   329
struct Widget : public SimpleCountedObject {
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   330
	//	byte type;                        ///< Widget type, see @WindowWidgetTypes
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   331
	CompositeWidget *m_container;       ///< widget container (can be any panel or window)
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   332
	WidgetId m_id;                      ///< Widget id in its container
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   333
	Rect16 m_rect;                      ///< The position offsets relative to the container
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   334
	uint16 m_data;                      ///< The String/Image or special code (list-matrixes) of a widget
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   335
	byte m_display_flags;               ///< Resize direction, alignment, etc. during resizing, see @ResizeFlags
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   336
	byte m_color;                       ///< Widget colour, see docs/ottd-colourtext-palette.png
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   337
	bool m_is_closing : 1;              ///< Widget was logically destroyed
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   338
	bool m_dont_clip : 1;               ///< should not be clipped by parent (container)
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   339
	StringID m_tooltips;                ///< Tooltips that are shown when rightclicking on a widget
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   340
6260
740c702f6871 (svn r8804) [cpp_gui] -Codechange: BaseWindow now inherits from CompositeWidget (with no benefits yet)
KUDr
parents: 6259
diff changeset
   341
	Widget()
740c702f6871 (svn r8804) [cpp_gui] -Codechange: BaseWindow now inherits from CompositeWidget (with no benefits yet)
KUDr
parents: 6259
diff changeset
   342
		: m_container(NULL), m_id(0), m_rect(), m_data(0), m_display_flags(0), m_color(0)
740c702f6871 (svn r8804) [cpp_gui] -Codechange: BaseWindow now inherits from CompositeWidget (with no benefits yet)
KUDr
parents: 6259
diff changeset
   343
		, m_is_closing(false), m_tooltips(0)
740c702f6871 (svn r8804) [cpp_gui] -Codechange: BaseWindow now inherits from CompositeWidget (with no benefits yet)
KUDr
parents: 6259
diff changeset
   344
	{}
740c702f6871 (svn r8804) [cpp_gui] -Codechange: BaseWindow now inherits from CompositeWidget (with no benefits yet)
KUDr
parents: 6259
diff changeset
   345
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   346
	Widget(CompositeWidget *container, WidgetId id, byte display_flags, byte color, const Rect16 &rect, StringID tooltips)
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   347
		: m_container(container)
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   348
		, m_id(id)
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   349
		, m_rect(rect)
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   350
		, m_data(0)
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   351
		, m_display_flags(display_flags)
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   352
		, m_color(color)
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   353
		, m_is_closing(false)
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   354
		, m_dont_clip(false)
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   355
		, m_tooltips(tooltips)
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   356
	{}
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   357
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   358
	int16 Left() const;
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   359
	int16 Top() const;
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   360
	int16 Right() const;
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   361
	int16 Bottom() const;
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   362
	int16 Width() const;
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   363
	int16 Height() const;
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   364
	const Point16& TopLeft() const;
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   365
	const Point16& BottomRight() const;
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   366
	const Rect16& GetRect() const;
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   367
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   368
	void SetLeft(int16 val);
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   369
	void SetTop(int16 val);
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   370
	void SetRight(int16 val);
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   371
	void SetBottom(int16 val);
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   372
	void SetWidth(int16 val);
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   373
	void SetHeight(int16 val);
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   374
	void SetTopLeft(const Point16 &pt);
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   375
	void SetBottomRight(const Point16 &pt);
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   376
	void SetRect(const Rect16 &rect);
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   377
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   378
	WidgetId GetId() const;
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   379
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   380
	virtual Widget* WidgetFromPt(const Point16 &pt);
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   381
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   382
	virtual void Close();
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   383
	virtual bool OnLeftClick(WindowEvent *ev) = 0;
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   384
};
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   385
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   386
struct CompositeWidget : public Widget {
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   387
	typedef Widget super;
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   388
	typedef std::map<WidgetId, WidgetPtr> Widgets;
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   389
	typedef Widgets::iterator WidgetIterator;
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   390
	typedef Widgets::reverse_iterator WidgetReverseIterator;
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   391
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   392
protected:
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   393
	Widgets m_widgets;
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   394
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   395
public:
6260
740c702f6871 (svn r8804) [cpp_gui] -Codechange: BaseWindow now inherits from CompositeWidget (with no benefits yet)
KUDr
parents: 6259
diff changeset
   396
	CompositeWidget()
740c702f6871 (svn r8804) [cpp_gui] -Codechange: BaseWindow now inherits from CompositeWidget (with no benefits yet)
KUDr
parents: 6259
diff changeset
   397
		: Widget()
740c702f6871 (svn r8804) [cpp_gui] -Codechange: BaseWindow now inherits from CompositeWidget (with no benefits yet)
KUDr
parents: 6259
diff changeset
   398
	{}
740c702f6871 (svn r8804) [cpp_gui] -Codechange: BaseWindow now inherits from CompositeWidget (with no benefits yet)
KUDr
parents: 6259
diff changeset
   399
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   400
	CompositeWidget(CompositeWidget *container, WidgetId id, byte display_flags, byte color, const Rect16 &rect, StringID tooltips)
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   401
		: Widget(container, id, display_flags, color, rect, tooltips)
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   402
	{}
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   403
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   404
	void AddWidget(Widget *wd);
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   405
	Widget* GetWidget(WidgetId id);
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   406
	Widget* RemoveWidget(WidgetId id);
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   407
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   408
	/*virtual*/ Widget* WidgetFromPt(const Point16 &pt);
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   409
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   410
	virtual void Close();
6260
740c702f6871 (svn r8804) [cpp_gui] -Codechange: BaseWindow now inherits from CompositeWidget (with no benefits yet)
KUDr
parents: 6259
diff changeset
   411
740c702f6871 (svn r8804) [cpp_gui] -Codechange: BaseWindow now inherits from CompositeWidget (with no benefits yet)
KUDr
parents: 6259
diff changeset
   412
	/*virtual*/ bool OnLeftClick(WindowEvent *ev);
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   413
};
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   414
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   415
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   416
struct BaseWindow;
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   417
typedef CCountedPtr<BaseWindow> WindowPtr;
6235
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   418
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   419
struct WindowList {
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   420
	struct Item {
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   421
		WindowPtr w;
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   422
		Item(BaseWindow *v = NULL) : w(v) {}
6235
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   423
		Item(const Item &src) : w(src.w) {}
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   424
		~Item()
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   425
		{}
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   426
	};
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   427
	typedef std::list<Item> List;
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   428
	typedef List::iterator Iterator;
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   429
	typedef List::reverse_iterator ReverseIterator;
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   430
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   431
	List m_list;
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   432
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   433
	void Add(BaseWindow *w);
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   434
	void Remove(BaseWindow *w);
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   435
	Iterator Find(BaseWindow *w);
6235
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   436
	Iterator FindFirstVitalWindow();
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   437
	Iterator FindByClass(WindowClass cls);
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   438
	Iterator FindById(WindowClass cls, WindowNumber num);
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   439
	Iterator FindFromPt(int x, int y);
6235
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   440
6236
ec056d324811 (svn r8693) [cpp_gui] -Fix: g++ compilation errors 'non-local function A uses local type B' (template arguments must have external linkage while local type has no linkage)
KUDr
parents: 6235
diff changeset
   441
	Iterator EnumT(bool (*enum_proc)(Iterator))
6235
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   442
	{
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   443
		for (Iterator it = m_list.begin(); it != m_list.end(); ++it) {
6236
ec056d324811 (svn r8693) [cpp_gui] -Fix: g++ compilation errors 'non-local function A uses local type B' (template arguments must have external linkage while local type has no linkage)
KUDr
parents: 6235
diff changeset
   444
			if (enum_proc(it)) return it;
6235
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   445
		}
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   446
		return m_list.end();
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   447
	}
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   448
6236
ec056d324811 (svn r8693) [cpp_gui] -Fix: g++ compilation errors 'non-local function A uses local type B' (template arguments must have external linkage while local type has no linkage)
KUDr
parents: 6235
diff changeset
   449
	template <class Tmatch_1> Iterator EnumT(bool (*enum_proc)(Iterator, Tmatch_1), Tmatch_1 match)
ec056d324811 (svn r8693) [cpp_gui] -Fix: g++ compilation errors 'non-local function A uses local type B' (template arguments must have external linkage while local type has no linkage)
KUDr
parents: 6235
diff changeset
   450
	{
ec056d324811 (svn r8693) [cpp_gui] -Fix: g++ compilation errors 'non-local function A uses local type B' (template arguments must have external linkage while local type has no linkage)
KUDr
parents: 6235
diff changeset
   451
		for (Iterator it = m_list.begin(); it != m_list.end(); ++it) {
ec056d324811 (svn r8693) [cpp_gui] -Fix: g++ compilation errors 'non-local function A uses local type B' (template arguments must have external linkage while local type has no linkage)
KUDr
parents: 6235
diff changeset
   452
			if (enum_proc(it, match)) return it;
ec056d324811 (svn r8693) [cpp_gui] -Fix: g++ compilation errors 'non-local function A uses local type B' (template arguments must have external linkage while local type has no linkage)
KUDr
parents: 6235
diff changeset
   453
		}
ec056d324811 (svn r8693) [cpp_gui] -Fix: g++ compilation errors 'non-local function A uses local type B' (template arguments must have external linkage while local type has no linkage)
KUDr
parents: 6235
diff changeset
   454
		return m_list.end();
ec056d324811 (svn r8693) [cpp_gui] -Fix: g++ compilation errors 'non-local function A uses local type B' (template arguments must have external linkage while local type has no linkage)
KUDr
parents: 6235
diff changeset
   455
	}
ec056d324811 (svn r8693) [cpp_gui] -Fix: g++ compilation errors 'non-local function A uses local type B' (template arguments must have external linkage while local type has no linkage)
KUDr
parents: 6235
diff changeset
   456
ec056d324811 (svn r8693) [cpp_gui] -Fix: g++ compilation errors 'non-local function A uses local type B' (template arguments must have external linkage while local type has no linkage)
KUDr
parents: 6235
diff changeset
   457
	template <class Tmatch_1, class Tmatch_2> Iterator EnumT(bool (*enum_proc)(Iterator, Tmatch_1, Tmatch_2), Tmatch_1 match_1, Tmatch_2 match_2)
ec056d324811 (svn r8693) [cpp_gui] -Fix: g++ compilation errors 'non-local function A uses local type B' (template arguments must have external linkage while local type has no linkage)
KUDr
parents: 6235
diff changeset
   458
	{
ec056d324811 (svn r8693) [cpp_gui] -Fix: g++ compilation errors 'non-local function A uses local type B' (template arguments must have external linkage while local type has no linkage)
KUDr
parents: 6235
diff changeset
   459
		for (Iterator it = m_list.begin(); it != m_list.end(); ++it) {
ec056d324811 (svn r8693) [cpp_gui] -Fix: g++ compilation errors 'non-local function A uses local type B' (template arguments must have external linkage while local type has no linkage)
KUDr
parents: 6235
diff changeset
   460
			if (enum_proc(it, match_1, match_2)) return it;
ec056d324811 (svn r8693) [cpp_gui] -Fix: g++ compilation errors 'non-local function A uses local type B' (template arguments must have external linkage while local type has no linkage)
KUDr
parents: 6235
diff changeset
   461
		}
ec056d324811 (svn r8693) [cpp_gui] -Fix: g++ compilation errors 'non-local function A uses local type B' (template arguments must have external linkage while local type has no linkage)
KUDr
parents: 6235
diff changeset
   462
		return m_list.end();
ec056d324811 (svn r8693) [cpp_gui] -Fix: g++ compilation errors 'non-local function A uses local type B' (template arguments must have external linkage while local type has no linkage)
KUDr
parents: 6235
diff changeset
   463
	}
ec056d324811 (svn r8693) [cpp_gui] -Fix: g++ compilation errors 'non-local function A uses local type B' (template arguments must have external linkage while local type has no linkage)
KUDr
parents: 6235
diff changeset
   464
ec056d324811 (svn r8693) [cpp_gui] -Fix: g++ compilation errors 'non-local function A uses local type B' (template arguments must have external linkage while local type has no linkage)
KUDr
parents: 6235
diff changeset
   465
	Iterator ReverseEnumT(bool (*enum_proc)(Iterator))
6235
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   466
	{
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   467
		for (Iterator it = m_list.end(); it != m_list.begin(); ) {
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   468
			--it;
6236
ec056d324811 (svn r8693) [cpp_gui] -Fix: g++ compilation errors 'non-local function A uses local type B' (template arguments must have external linkage while local type has no linkage)
KUDr
parents: 6235
diff changeset
   469
			if (enum_proc(it)) return it;
ec056d324811 (svn r8693) [cpp_gui] -Fix: g++ compilation errors 'non-local function A uses local type B' (template arguments must have external linkage while local type has no linkage)
KUDr
parents: 6235
diff changeset
   470
		}
ec056d324811 (svn r8693) [cpp_gui] -Fix: g++ compilation errors 'non-local function A uses local type B' (template arguments must have external linkage while local type has no linkage)
KUDr
parents: 6235
diff changeset
   471
		return m_list.end();
ec056d324811 (svn r8693) [cpp_gui] -Fix: g++ compilation errors 'non-local function A uses local type B' (template arguments must have external linkage while local type has no linkage)
KUDr
parents: 6235
diff changeset
   472
	}
ec056d324811 (svn r8693) [cpp_gui] -Fix: g++ compilation errors 'non-local function A uses local type B' (template arguments must have external linkage while local type has no linkage)
KUDr
parents: 6235
diff changeset
   473
ec056d324811 (svn r8693) [cpp_gui] -Fix: g++ compilation errors 'non-local function A uses local type B' (template arguments must have external linkage while local type has no linkage)
KUDr
parents: 6235
diff changeset
   474
	template <class Tmatch_1> Iterator ReverseEnumT(bool (*enum_proc)(Iterator, Tmatch_1), Tmatch_1 match)
ec056d324811 (svn r8693) [cpp_gui] -Fix: g++ compilation errors 'non-local function A uses local type B' (template arguments must have external linkage while local type has no linkage)
KUDr
parents: 6235
diff changeset
   475
	{
ec056d324811 (svn r8693) [cpp_gui] -Fix: g++ compilation errors 'non-local function A uses local type B' (template arguments must have external linkage while local type has no linkage)
KUDr
parents: 6235
diff changeset
   476
		for (Iterator it = m_list.end(); it != m_list.begin(); ) {
ec056d324811 (svn r8693) [cpp_gui] -Fix: g++ compilation errors 'non-local function A uses local type B' (template arguments must have external linkage while local type has no linkage)
KUDr
parents: 6235
diff changeset
   477
			--it;
ec056d324811 (svn r8693) [cpp_gui] -Fix: g++ compilation errors 'non-local function A uses local type B' (template arguments must have external linkage while local type has no linkage)
KUDr
parents: 6235
diff changeset
   478
			if (enum_proc(it, match)) return it;
6235
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   479
		}
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   480
		return m_list.end();
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   481
	}
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   482
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   483
	template <class Tmatch_1, class Tmatch_2> Iterator ReverseEnumT(bool (*enum_proc)(Iterator, Tmatch_1, Tmatch_2), Tmatch_1 match_1, Tmatch_2 match_2)
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   484
	{
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   485
		for (Iterator it = m_list.end(); it != m_list.begin(); ) {
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   486
			--it;
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   487
			if (enum_proc(it, match_1, match_2)) return it;
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   488
		}
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   489
		return m_list.end();
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   490
	}
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   491
6235
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   492
};
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   493
6260
740c702f6871 (svn r8804) [cpp_gui] -Codechange: BaseWindow now inherits from CompositeWidget (with no benefits yet)
KUDr
parents: 6259
diff changeset
   494
struct BaseWindow : public CompositeWidget {
6245
6fa82c6ee8ca (svn r8711) [cpp_gui] -Codechange: even more funktion->method conversions
bjarni
parents: 6244
diff changeset
   495
public:
6235
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   496
	static WindowList s_list;
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   497
6242
17609af8a1d1 (svn r8704) [cpp_gui] -Codechange: flash_timeout and autorepeat_timeout extracted from Window::flags4
KUDr
parents: 6241
diff changeset
   498
	WindowFlags flags4;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   499
	WindowClass window_class;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   500
	WindowNumber window_number;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   501
867
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
   502
	int left, top;
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
   503
	int width, height;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   504
842
ebfd36603ab9 (svn r1323) Adding autoreplace feature
bjarni
parents: 826
diff changeset
   505
	Scrollbar hscroll, vscroll, vscroll2;
867
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 859
diff changeset
   506
	ResizeInfo resize;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   507
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   508
	byte caption_color;
6242
17609af8a1d1 (svn r8704) [cpp_gui] -Codechange: flash_timeout and autorepeat_timeout extracted from Window::flags4
KUDr
parents: 6241
diff changeset
   509
	byte autorepeat_timeout; ///< timer for scroll (spin) click autorepeat
17609af8a1d1 (svn r8704) [cpp_gui] -Codechange: flash_timeout and autorepeat_timeout extracted from Window::flags4
KUDr
parents: 6241
diff changeset
   510
	byte flash_timeout;      ///< timer for flashing white border
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   511
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   512
	WindowProc *wndproc;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   513
	ViewPort *viewport;
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   514
	const OldWidget *original_widget;
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   515
	OldWidget *widget;
5232
0ba6acdc527f (svn r7352) -Codechange: add widget_count parameter to the window.
rubidium
parents: 5199
diff changeset
   516
	uint widget_count;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   517
	uint32 desc_flags;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   518
2622
1219c6a5bef3 (svn r3162) -Fix: renamed 'Message' to 'WindowMessage', a struct named 'Message' already
truelight
parents: 2596
diff changeset
   519
	WindowMessage message;
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   520
	BaseWindow *parent;
158
b1a821f84250 (svn r159) -Fix: w->custom[] was too small for 64bit pointers
truelight
parents: 129
diff changeset
   521
	byte custom[WINDOW_CUSTOM_SIZE];
6235
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   522
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   523
	BaseWindow(const WindowDesc *desc, WindowNumber num = 0);
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   524
	virtual bool Create(const WindowDesc *desc, WindowNumber num = 0);
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   525
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   526
	static BaseWindow* Allocate(int x, int y, int width, int height, WindowProc *proc, WindowClass cls, const OldWidget *widget);
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   527
	static BaseWindow* Allocate(const WindowDesc *desc, int window_number = 0);
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   528
	static BaseWindow* AllocateFront(const WindowDesc *desc, int window_number = 0);
6235
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   529
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   530
	void ZeroInit()
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   531
	{
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   532
		memset(&flags4, 0, sizeof(*this) - cpp_offsetof(BaseWindow, flags4));
6235
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   533
	}
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   534
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   535
	BaseWindow* FindChild() const;
6235
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   536
	void SetDirty() const;
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   537
	void CDECL SetWidgetsDisabledState(bool disab_stat, int widgets, ...);
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   538
	void CDECL SetWidgetsHiddenState(bool hidden_stat, int widgets, ...);
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   539
	void CDECL SetWidgetsLoweredState(bool lowered_stat, int widgets, ...);
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   540
	void RaiseButtons();
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   541
	void HandleButtonClick(byte widget);
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   542
	void BringToFront();
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   543
	static BaseWindow* BringToFrontById(WindowClass cls, WindowNumber number);
6235
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   544
	void StartDrag();
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   545
	bool ContinueDrag();
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   546
	void StartSizing();
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   547
	bool ContinueSizing();
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   548
	static bool HandleWindowDragging(void);
6243
8f231ee779cb (svn r8706) [cpp_gui] -Codechange: few more functions turned into Window methods
KUDr
parents: 6242
diff changeset
   549
	void DispatchLeftClickEvent(int x, int y);
8f231ee779cb (svn r8706) [cpp_gui] -Codechange: few more functions turned into Window methods
KUDr
parents: 6242
diff changeset
   550
	void DispatchRightClickEvent(int x, int y);
8f231ee779cb (svn r8706) [cpp_gui] -Codechange: few more functions turned into Window methods
KUDr
parents: 6242
diff changeset
   551
	void DispatchMouseWheelEvent(int widget, int wheel);
6235
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   552
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   553
	/*virtual*/ void FinalRelease();
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   554
	virtual void Close();
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   555
	virtual bool IsVital();
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   556
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   557
	static BaseWindow* Get(WindowList::Iterator it);
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   558
	static BaseWindow* FindFromPt(int x, int y);
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   559
	static BaseWindow* FindById(WindowClass cls, WindowNumber num);
6235
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   560
	static void SetDirtyById(WindowClass cls, WindowNumber num);
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   561
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   562
	bool IsOfPrototype(const OldWidget *widgets) const;
6238
1ff56ccccbb5 (svn r8696) [cpp_gui] -Codechange: changed GetMenuItemIndex() and ResizeWindow() into Window methods
bjarni
parents: 6237
diff changeset
   563
	int GetMenuItemIndex(int x, int y) const;
6240
8d4ea2d6befc (svn r8699) [cpp_gui] -Cleanup: removed the word Window from some Window method names as just being Winddow methods indicates that it's working on a window
bjarni
parents: 6239
diff changeset
   564
	void Resize(int x, int y);
6238
1ff56ccccbb5 (svn r8696) [cpp_gui] -Codechange: changed GetMenuItemIndex() and ResizeWindow() into Window methods
bjarni
parents: 6237
diff changeset
   565
6245
6fa82c6ee8ca (svn r8711) [cpp_gui] -Codechange: even more funktion->method conversions
bjarni
parents: 6244
diff changeset
   566
	void CallEventNP(int event);
6fa82c6ee8ca (svn r8711) [cpp_gui] -Codechange: even more funktion->method conversions
bjarni
parents: 6244
diff changeset
   567
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   568
	void AssignWidget(const OldWidget *widget);
6237
bce32e54c993 (svn r8695) [cpp_gui] -Codechange: changed AssignWidgetToWindow() and InvalidateWidget() into Window methods
bjarni
parents: 6236
diff changeset
   569
6244
4b42fb40e6d2 (svn r8710) [cpp_gui] -Codechange: yet another two functions are turned into Window methods
bjarni
parents: 6243
diff changeset
   570
	void InvalidateData();
6237
bce32e54c993 (svn r8695) [cpp_gui] -Codechange: changed AssignWidgetToWindow() and InvalidateWidget() into Window methods
bjarni
parents: 6236
diff changeset
   571
	void InvalidateWidget(byte widget_index) const;
bce32e54c993 (svn r8695) [cpp_gui] -Codechange: changed AssignWidgetToWindow() and InvalidateWidget() into Window methods
bjarni
parents: 6236
diff changeset
   572
6249
abafebc2fbce (svn r8717) [cpp_gui] -Codechange: changed the functions about closing all windows into methods
bjarni
parents: 6248
diff changeset
   573
	static void DeleteNonVitalWindows(void);
abafebc2fbce (svn r8717) [cpp_gui] -Codechange: changed the functions about closing all windows into methods
bjarni
parents: 6248
diff changeset
   574
	static void DeleteAllNonVitalWindows(void);
abafebc2fbce (svn r8717) [cpp_gui] -Codechange: changed the functions about closing all windows into methods
bjarni
parents: 6248
diff changeset
   575
	static void ShowVitalWindows(void);
abafebc2fbce (svn r8717) [cpp_gui] -Codechange: changed the functions about closing all windows into methods
bjarni
parents: 6248
diff changeset
   576
	static void HideVitalWindows(void);
abafebc2fbce (svn r8717) [cpp_gui] -Codechange: changed the functions about closing all windows into methods
bjarni
parents: 6248
diff changeset
   577
6244
4b42fb40e6d2 (svn r8710) [cpp_gui] -Codechange: yet another two functions are turned into Window methods
bjarni
parents: 6243
diff changeset
   578
	/* viewport.cpp */
4b42fb40e6d2 (svn r8710) [cpp_gui] -Codechange: yet another two functions are turned into Window methods
bjarni
parents: 6243
diff changeset
   579
	void DrawViewport() const;
4b42fb40e6d2 (svn r8710) [cpp_gui] -Codechange: yet another two functions are turned into Window methods
bjarni
parents: 6243
diff changeset
   580
6241
6a7a41b0cd32 (svn r8702) [cpp_gui] -Codechange: changed the 3 window functions in widget.cpp into Window methods
bjarni
parents: 6240
diff changeset
   581
	/* widget.cpp */
6a7a41b0cd32 (svn r8702) [cpp_gui] -Codechange: changed the 3 window functions in widget.cpp into Window methods
bjarni
parents: 6240
diff changeset
   582
	int GetWidgetFromPos(int x, int y) const;
6a7a41b0cd32 (svn r8702) [cpp_gui] -Codechange: changed the 3 window functions in widget.cpp into Window methods
bjarni
parents: 6240
diff changeset
   583
	void DrawWidgets() const;
6a7a41b0cd32 (svn r8702) [cpp_gui] -Codechange: changed the 3 window functions in widget.cpp into Window methods
bjarni
parents: 6240
diff changeset
   584
	void ShowDropDownMenu(const StringID *strings, int selected, int button, uint32 disabled_mask, uint32 hidden_mask);
6245
6fa82c6ee8ca (svn r8711) [cpp_gui] -Codechange: even more funktion->method conversions
bjarni
parents: 6244
diff changeset
   585
	void ResizeButtons(byte left, byte right);
6fa82c6ee8ca (svn r8711) [cpp_gui] -Codechange: even more funktion->method conversions
bjarni
parents: 6244
diff changeset
   586
6fa82c6ee8ca (svn r8711) [cpp_gui] -Codechange: even more funktion->method conversions
bjarni
parents: 6244
diff changeset
   587
private:
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   588
	void ScrollbarClickHandler(const OldWidget *wi, int x, int y);
6245
6fa82c6ee8ca (svn r8711) [cpp_gui] -Codechange: even more funktion->method conversions
bjarni
parents: 6244
diff changeset
   589
public:
6241
6a7a41b0cd32 (svn r8702) [cpp_gui] -Codechange: changed the 3 window functions in widget.cpp into Window methods
bjarni
parents: 6240
diff changeset
   590
6248
24583caadfee (svn r8716) [cpp_gui] -Codechange: IsWindowWidgetDisabled() turned into Window method
KUDr
parents: 6247
diff changeset
   591
	/*inline*/ void SetWidgetDisabledState(byte widget_index, bool disab_stat);
24583caadfee (svn r8716) [cpp_gui] -Codechange: IsWindowWidgetDisabled() turned into Window method
KUDr
parents: 6247
diff changeset
   592
	/*inline*/ void DisableWidget(byte widget_index);
24583caadfee (svn r8716) [cpp_gui] -Codechange: IsWindowWidgetDisabled() turned into Window method
KUDr
parents: 6247
diff changeset
   593
	/*inline*/ void EnableWidget(byte widget_index);
24583caadfee (svn r8716) [cpp_gui] -Codechange: IsWindowWidgetDisabled() turned into Window method
KUDr
parents: 6247
diff changeset
   594
	/*inline*/ bool IsWidgetDisabled(byte widget_index) const;
6251
cd413fa2e252 (svn r8720) [cpp_gui] -Codechange: SetWindowWidgetLoweredState(), ToggleWidgetLoweredState(), LowerWindowWidget(), RaiseWindowWidget() and IsWindowWidgetLowered() turned into Window methods
KUDr
parents: 6250
diff changeset
   595
6250
5135b200b376 (svn r8718) [cpp_gui] -Codechange: SetWindowWidgetHiddenState(), HideWindowWidget(), ShowWindowWidget() and IsWindowWidgetHidden() turned into Window methods
KUDr
parents: 6249
diff changeset
   596
	/*inline*/ void SetWidgetHiddenState(byte widget_index, bool hidden_stat);
5135b200b376 (svn r8718) [cpp_gui] -Codechange: SetWindowWidgetHiddenState(), HideWindowWidget(), ShowWindowWidget() and IsWindowWidgetHidden() turned into Window methods
KUDr
parents: 6249
diff changeset
   597
	/*inline*/ void HideWidget(byte widget_index);
5135b200b376 (svn r8718) [cpp_gui] -Codechange: SetWindowWidgetHiddenState(), HideWindowWidget(), ShowWindowWidget() and IsWindowWidgetHidden() turned into Window methods
KUDr
parents: 6249
diff changeset
   598
	/*inline*/ void ShowWidget(byte widget_index);
5135b200b376 (svn r8718) [cpp_gui] -Codechange: SetWindowWidgetHiddenState(), HideWindowWidget(), ShowWindowWidget() and IsWindowWidgetHidden() turned into Window methods
KUDr
parents: 6249
diff changeset
   599
	/*inline*/ bool IsWidgetHidden(byte widget_index) const;
6246
2a4c2c4d66f0 (svn r8713) [cpp_gui] -Codechange: SetWindowWidgetDisabledState turned into Window method
KUDr
parents: 6245
diff changeset
   600
6251
cd413fa2e252 (svn r8720) [cpp_gui] -Codechange: SetWindowWidgetLoweredState(), ToggleWidgetLoweredState(), LowerWindowWidget(), RaiseWindowWidget() and IsWindowWidgetLowered() turned into Window methods
KUDr
parents: 6250
diff changeset
   601
	/*inline*/ void SetWidgetLoweredState(byte widget_index, bool lowered_stat);
cd413fa2e252 (svn r8720) [cpp_gui] -Codechange: SetWindowWidgetLoweredState(), ToggleWidgetLoweredState(), LowerWindowWidget(), RaiseWindowWidget() and IsWindowWidgetLowered() turned into Window methods
KUDr
parents: 6250
diff changeset
   602
	/*inline*/ void ToggleWidgetLoweredState(byte widget_index);
cd413fa2e252 (svn r8720) [cpp_gui] -Codechange: SetWindowWidgetLoweredState(), ToggleWidgetLoweredState(), LowerWindowWidget(), RaiseWindowWidget() and IsWindowWidgetLowered() turned into Window methods
KUDr
parents: 6250
diff changeset
   603
	/*inline*/ void LowerWidget(byte widget_index);
cd413fa2e252 (svn r8720) [cpp_gui] -Codechange: SetWindowWidgetLoweredState(), ToggleWidgetLoweredState(), LowerWindowWidget(), RaiseWindowWidget() and IsWindowWidgetLowered() turned into Window methods
KUDr
parents: 6250
diff changeset
   604
	/*inline*/ void RaiseWidget(byte widget_index);
cd413fa2e252 (svn r8720) [cpp_gui] -Codechange: SetWindowWidgetLoweredState(), ToggleWidgetLoweredState(), LowerWindowWidget(), RaiseWindowWidget() and IsWindowWidgetLowered() turned into Window methods
KUDr
parents: 6250
diff changeset
   605
	/*inline*/ bool IsWidgetLowered(byte widget_index) const;
cd413fa2e252 (svn r8720) [cpp_gui] -Codechange: SetWindowWidgetLoweredState(), ToggleWidgetLoweredState(), LowerWindowWidget(), RaiseWindowWidget() and IsWindowWidgetLowered() turned into Window methods
KUDr
parents: 6250
diff changeset
   606
6235
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   607
	//int32 AddRef()
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   608
	//{
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   609
	//	const char *name = NULL;
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   610
	//	switch (window_class)
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   611
	//	{
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   612
	//		case WC_MAIN_WINDOW:      name = "mw"; break;
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   613
	//		case WC_SELECT_GAME:      name = "sg"; break;
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   614
	//		case WC_INDUSTRY_VIEW:    name = "iw"; break;
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   615
	//		default: break;
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   616
	//	}
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   617
	//	if (name != NULL) printf("%s+\n", name);
6256
220cd0db67a4 (svn r8774) [cpp_gui] -Codechange: CountedObject renamed to SimpleCountedObject and moved to countedptr.hpp and countedobj.cpp
KUDr
parents: 6254
diff changeset
   618
	//	return SimpleCountedObject::AddRef();
6235
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   619
	//}
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   620
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   621
	//int32 Release()
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   622
	//{
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   623
	//	const char *name = NULL;
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   624
	//	switch (window_class)
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   625
	//	{
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   626
	//		case WC_MAIN_WINDOW:      name = "mw"; break;
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   627
	//		case WC_SELECT_GAME:      name = "sg"; break;
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   628
	//		case WC_INDUSTRY_VIEW:    name = "iw"; break;
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   629
	//		default: break;
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   630
	//	}
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   631
	//	if (name != NULL) printf("%s-\n", name);
6256
220cd0db67a4 (svn r8774) [cpp_gui] -Codechange: CountedObject renamed to SimpleCountedObject and moved to countedptr.hpp and countedobj.cpp
KUDr
parents: 6254
diff changeset
   632
	//	return SimpleCountedObject::Release();
6235
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   633
	//}
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   634
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   635
	template <class Tmatch> struct EnumMatch {
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   636
		Tmatch &m_match;
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   637
		EnumMatch(Tmatch &m)
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   638
			: m_match(m)
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   639
		{}
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   640
		bool EnumProc(WindowList::Iterator it)
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   641
		{
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   642
			return m_match->EnumProc((*it).w);
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   643
		}
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   644
	};
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   645
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   646
	//template <class Tmatch> BaseWindow* EnumT(Tmatch m)
6236
ec056d324811 (svn r8693) [cpp_gui] -Fix: g++ compilation errors 'non-local function A uses local type B' (template arguments must have external linkage while local type has no linkage)
KUDr
parents: 6235
diff changeset
   647
	//{
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   648
	//	WindowList::Iterator it = BaseWindow::s_list.EnumT(EnumMatch<Tmatch>(m));
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   649
	//	return (it == BaseWindow::s_list.m_list.end()) ? NULL : (*it).w;
6236
ec056d324811 (svn r8693) [cpp_gui] -Fix: g++ compilation errors 'non-local function A uses local type B' (template arguments must have external linkage while local type has no linkage)
KUDr
parents: 6235
diff changeset
   650
	//}
6235
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   651
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   652
	//template <class Tmatch> BaseWindow* ReverseEnumT(Tmatch m)
6236
ec056d324811 (svn r8693) [cpp_gui] -Fix: g++ compilation errors 'non-local function A uses local type B' (template arguments must have external linkage while local type has no linkage)
KUDr
parents: 6235
diff changeset
   653
	//{
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   654
	//	WindowList::Iterator it = BaseWindow::s_list.ReverseEnumT(EnumMatch<Tmatch>(m));
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   655
	//	return (it == BaseWindow::s_list.m_list.end()) ? NULL : (*it).w;
6236
ec056d324811 (svn r8693) [cpp_gui] -Fix: g++ compilation errors 'non-local function A uses local type B' (template arguments must have external linkage while local type has no linkage)
KUDr
parents: 6235
diff changeset
   656
	//}
6235
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   657
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   658
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   659
6235
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   660
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   661
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   662
#define FOR_ALL_WINDOWS(wz) \
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   663
	for (WindowList::Iterator it = BaseWindow::s_list.m_list.begin(); it != BaseWindow::s_list.m_list.end() && (wz = (*it).w) != NULL; it++)
6235
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   664
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   665
#define REVERSED_FOR_ALL_WINDOWS(wz) \
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   666
	for (WindowList::ReverseIterator it = BaseWindow::s_list.m_list.rbegin(); it != BaseWindow::s_list.m_list.rend() && (wz = (*it).w) != NULL; it++)
6235
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   667
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   668
4299
b86602eaaff1 (svn r5944) -Merge TGP (r5578, r5579, r5724, r5726): -Feature: filter for textboxes to only
truelight
parents: 4266
diff changeset
   669
typedef struct querystr_d {
b86602eaaff1 (svn r5944) -Merge TGP (r5578, r5579, r5724, r5726): -Feature: filter for textboxes to only
truelight
parents: 4266
diff changeset
   670
	StringID caption;
b86602eaaff1 (svn r5944) -Merge TGP (r5578, r5579, r5724, r5726): -Feature: filter for textboxes to only
truelight
parents: 4266
diff changeset
   671
	Textbuf text;
b86602eaaff1 (svn r5944) -Merge TGP (r5578, r5579, r5724, r5726): -Feature: filter for textboxes to only
truelight
parents: 4266
diff changeset
   672
	const char *orig;
b86602eaaff1 (svn r5944) -Merge TGP (r5578, r5579, r5724, r5726): -Feature: filter for textboxes to only
truelight
parents: 4266
diff changeset
   673
	CharSetFilter afilter;
5682
eeddbbacd4ac (svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents: 5669
diff changeset
   674
	bool handled;
4299
b86602eaaff1 (svn r5944) -Merge TGP (r5578, r5579, r5724, r5726): -Feature: filter for textboxes to only
truelight
parents: 4266
diff changeset
   675
} querystr_d;
b86602eaaff1 (svn r5944) -Merge TGP (r5578, r5579, r5724, r5726): -Feature: filter for textboxes to only
truelight
parents: 4266
diff changeset
   676
assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(querystr_d));
b86602eaaff1 (svn r5944) -Merge TGP (r5578, r5579, r5724, r5726): -Feature: filter for textboxes to only
truelight
parents: 4266
diff changeset
   677
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   678
typedef struct {
4171
3fadda3afe70 (svn r5609) CodeChange : Apply coding style
belugas
parents: 4077
diff changeset
   679
	byte item_count;      /* follow_vehicle */
3fadda3afe70 (svn r5609) CodeChange : Apply coding style
belugas
parents: 4077
diff changeset
   680
	byte sel_index;       /* scrollpos_x */
3fadda3afe70 (svn r5609) CodeChange : Apply coding style
belugas
parents: 4077
diff changeset
   681
	byte main_button;     /* scrollpos_y */
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   682
	byte action_id;
4171
3fadda3afe70 (svn r5609) CodeChange : Apply coding style
belugas
parents: 4077
diff changeset
   683
	StringID string_id;   /* unk30 */
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   684
	uint16 checked_items; /* unk32 */
2216
51a715447fc4 (svn r2734) -Feature: The Main Toolbar Dropdown Menu can now display disabled items
celestar
parents: 2187
diff changeset
   685
	byte disabled_items;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   686
} menu_d;
1004
edbdc62fbf24 (svn r1503) Added feature:
miham
parents: 998
diff changeset
   687
assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(menu_d));
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   688
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   689
typedef struct {
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   690
	int16 data_1, data_2, data_3;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   691
	int16 data_4, data_5;
2596
d228e8ce6fcf (svn r3133) - static, const
tron
parents: 2549
diff changeset
   692
	bool close;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   693
	byte byte_1;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   694
} def_d;
1004
edbdc62fbf24 (svn r1503) Added feature:
miham
parents: 998
diff changeset
   695
assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(def_d));
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   696
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   697
typedef struct {
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   698
	void *data;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   699
} void_d;
1004
edbdc62fbf24 (svn r1503) Added feature:
miham
parents: 998
diff changeset
   700
assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(void_d));
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   701
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   702
typedef struct {
2596
d228e8ce6fcf (svn r3133) - static, const
tron
parents: 2549
diff changeset
   703
	uint16 base;
d228e8ce6fcf (svn r3133) - static, const
tron
parents: 2549
diff changeset
   704
	uint16 count;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   705
} tree_d;
1004
edbdc62fbf24 (svn r1503) Added feature:
miham
parents: 998
diff changeset
   706
assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(tree_d));
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   707
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   708
typedef struct {
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   709
	StringID string_id;
4834
ddcf440d0ffd (svn r6758) -Feature: Add a measurement tool that will show dimensions and height
Darkvater
parents: 4800
diff changeset
   710
	byte paramcount;
ddcf440d0ffd (svn r6758) -Feature: Add a measurement tool that will show dimensions and height
Darkvater
parents: 4800
diff changeset
   711
	uint32 params[5];
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   712
} tooltips_d;
1004
edbdc62fbf24 (svn r1503) Added feature:
miham
parents: 998
diff changeset
   713
assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(tooltips_d));
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   714
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   715
typedef struct {
4800
009e3c6cea8a (svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents: 4790
diff changeset
   716
	byte vehicle_type;
5187
d1f4e447a7eb (svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents: 5124
diff changeset
   717
	union {
5838
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
   718
		RailTypeByte railtype;
6254
abc6ad7c035c (svn r8769) [cpp_gui] -Sync with trunk (r8730..r8768)
KUDr
parents: 6251
diff changeset
   719
		AirportFTAClass::Flags flags;
5187
d1f4e447a7eb (svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents: 5124
diff changeset
   720
	} filter;
5199
523e7025d979 (svn r7314) -Cleanup: const, whitespace, coding style and variable usage.
Darkvater
parents: 5187
diff changeset
   721
	byte sel_index;  // deprecated value, used for 'unified' ship and road
5187
d1f4e447a7eb (svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents: 5124
diff changeset
   722
	bool descending_sort_order;
4770
987ef30e5b45 (svn r6684) -Feature: [train build window] added sorting options for the engines
bjarni
parents: 4766
diff changeset
   723
	byte sort_criteria;
6032
cc75c53d40e9 (svn r8333) -Codechange: when invalidating a build window list, set a flag instead of rebuilding the list and then rebuild it the next time it's redrawn
bjarni
parents: 5838
diff changeset
   724
	bool regenerate_list;
2498
befad2fe53d2 (svn r3024) -Codechange: Another batch of replacements of int/uint/int16/byte/-1 with proper types and constants
tron
parents: 2448
diff changeset
   725
	EngineID sel_engine;
befad2fe53d2 (svn r3024) -Codechange: Another batch of replacements of int/uint/int16/byte/-1 with proper types and constants
tron
parents: 2448
diff changeset
   726
	EngineID rename_engine;
5187
d1f4e447a7eb (svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents: 5124
diff changeset
   727
	EngineList eng_list;
4790
04df6a3f9b31 (svn r6712) -Code cleanup: renamed buildtrain_d to buildvehicle_d as it's used for all vehicle types
bjarni
parents: 4786
diff changeset
   728
} buildvehicle_d;
04df6a3f9b31 (svn r6712) -Code cleanup: renamed buildtrain_d to buildvehicle_d as it's used for all vehicle types
bjarni
parents: 4786
diff changeset
   729
assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(buildvehicle_d));
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   730
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   731
typedef struct {
842
ebfd36603ab9 (svn r1323) Adding autoreplace feature
bjarni
parents: 826
diff changeset
   732
	byte sel_index[2];
2746
d96ce2fdc3e4 (svn r3291) - Codechange, Autoreplace: Replace int with EngineID and -1 with INVALID_ENGINE, as appropriate.
peter1138
parents: 2683
diff changeset
   733
	EngineID sel_engine[2];
842
ebfd36603ab9 (svn r1323) Adding autoreplace feature
bjarni
parents: 826
diff changeset
   734
	uint16 count[2];
4434
4175805666a5 (svn r6204) -Cleanup: replace non-indentation with spaces; like '}<TAB>else {' -> '} else {', tabs between code and comment, etc.
rubidium
parents: 4345
diff changeset
   735
	bool wagon_btnstate; // true means engine is selected
6195
b90cf92697b9 (svn r8610) -Codechange/Feature: rewrote the list handling in the autoreplace window
bjarni
parents: 6075
diff changeset
   736
	EngineList list[2];
b90cf92697b9 (svn r8610) -Codechange/Feature: rewrote the list handling in the autoreplace window
bjarni
parents: 6075
diff changeset
   737
	bool update_left;
b90cf92697b9 (svn r8610) -Codechange/Feature: rewrote the list handling in the autoreplace window
bjarni
parents: 6075
diff changeset
   738
	bool update_right;
b90cf92697b9 (svn r8610) -Codechange/Feature: rewrote the list handling in the autoreplace window
bjarni
parents: 6075
diff changeset
   739
	bool init_lists;
842
ebfd36603ab9 (svn r1323) Adding autoreplace feature
bjarni
parents: 826
diff changeset
   740
} replaceveh_d;
1004
edbdc62fbf24 (svn r1503) Added feature:
miham
parents: 998
diff changeset
   741
assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(replaceveh_d));
842
ebfd36603ab9 (svn r1323) Adding autoreplace feature
bjarni
parents: 826
diff changeset
   742
ebfd36603ab9 (svn r1323) Adding autoreplace feature
bjarni
parents: 826
diff changeset
   743
typedef struct {
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   744
	VehicleID sel;
4638
8abe4f10b94b (svn r6513) -Codechange: unified the code to draw depot windows
bjarni
parents: 4635
diff changeset
   745
	byte type;
4739
bd535b408617 (svn r6651) -Coding feature: added the windowevent WE_INVALIDATE_DATA
bjarni
parents: 4730
diff changeset
   746
	bool generate_list;
4635
b9fb2f19eb64 (svn r6503) -Codechange: added a function to tell what vehicles a depot contains
bjarni
parents: 4634
diff changeset
   747
	uint16 engine_list_length;
b9fb2f19eb64 (svn r6503) -Codechange: added a function to tell what vehicles a depot contains
bjarni
parents: 4634
diff changeset
   748
	uint16 wagon_list_length;
b9fb2f19eb64 (svn r6503) -Codechange: added a function to tell what vehicles a depot contains
bjarni
parents: 4634
diff changeset
   749
	uint16 engine_count;
b9fb2f19eb64 (svn r6503) -Codechange: added a function to tell what vehicles a depot contains
bjarni
parents: 4634
diff changeset
   750
	uint16 wagon_count;
b9fb2f19eb64 (svn r6503) -Codechange: added a function to tell what vehicles a depot contains
bjarni
parents: 4634
diff changeset
   751
	Vehicle **vehicle_list;
b9fb2f19eb64 (svn r6503) -Codechange: added a function to tell what vehicles a depot contains
bjarni
parents: 4634
diff changeset
   752
	Vehicle **wagon_list;
4638
8abe4f10b94b (svn r6513) -Codechange: unified the code to draw depot windows
bjarni
parents: 4635
diff changeset
   753
} depot_d;
8abe4f10b94b (svn r6513) -Codechange: unified the code to draw depot windows
bjarni
parents: 4635
diff changeset
   754
assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(depot_d));
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   755
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   756
typedef struct {
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   757
	int sel;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   758
} order_d;
1004
edbdc62fbf24 (svn r1503) Added feature:
miham
parents: 998
diff changeset
   759
assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(order_d));
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   760
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   761
typedef struct {
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   762
	byte tab;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   763
} traindetails_d;
1004
edbdc62fbf24 (svn r1503) Added feature:
miham
parents: 998
diff changeset
   764
assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(traindetails_d));
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   765
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   766
typedef struct {
849
c6223dbdb202 (svn r1330) Increase size of some vars from int16 to int32 to guard against future overflows
tron
parents: 842
diff changeset
   767
	int32 scroll_x;
c6223dbdb202 (svn r1330) Increase size of some vars from int16 to int32 to guard against future overflows
tron
parents: 842
diff changeset
   768
	int32 scroll_y;
c6223dbdb202 (svn r1330) Increase size of some vars from int16 to int32 to guard against future overflows
tron
parents: 842
diff changeset
   769
	int32 subscroll;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   770
} smallmap_d;
4318
fe085a1dd0ad (svn r5971) -Fix: wrong struct in assert_compile (thomasdev)
truelight
parents: 4300
diff changeset
   771
assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(smallmap_d));
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   772
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   773
typedef struct {
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   774
	uint32 face;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   775
	byte gender;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   776
} facesel_d;
1004
edbdc62fbf24 (svn r1503) Added feature:
miham
parents: 998
diff changeset
   777
assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(facesel_d));
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   778
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   779
typedef struct {
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   780
	int sel;
4695
52419a88345d (svn r6602) - Feature: we now support NewGRF livery refits, as used by DBsetXL, amongst others. This requires a savegame bump to save the cargo subtype.
peter1138
parents: 4694
diff changeset
   781
	struct RefitOption *cargo;
4694
a4d2a3abe75c (svn r6601) - Codechange: Support cargo subtypes in the refit window. The refit window has been altered to support resizing and scrolling. Note that the cargo subtype isn't yet passed for actual refitting yet. (Based on mart3p's patch)
peter1138
parents: 4692
diff changeset
   782
	struct RefitList *list;
a4d2a3abe75c (svn r6601) - Codechange: Support cargo subtypes in the refit window. The refit window has been altered to support resizing and scrolling. Note that the cargo subtype isn't yet passed for actual refitting yet. (Based on mart3p's patch)
peter1138
parents: 4692
diff changeset
   783
	uint length;
4712
273ec3b182bf (svn r6624) -Feature: added ability to add refit commands to vehicle orders (can only be done in goto depot orders)
bjarni
parents: 4695
diff changeset
   784
	VehicleOrderID order;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   785
} refit_d;
1004
edbdc62fbf24 (svn r1503) Added feature:
miham
parents: 998
diff changeset
   786
assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(refit_d));
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   787
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   788
typedef struct {
2116
cdfc27b696b7 (svn r2626) static, const, misc.
tron
parents: 2064
diff changeset
   789
	VehicleID follow_vehicle;
849
c6223dbdb202 (svn r1330) Increase size of some vars from int16 to int32 to guard against future overflows
tron
parents: 842
diff changeset
   790
	int32 scrollpos_x;
c6223dbdb202 (svn r1330) Increase size of some vars from int16 to int32 to guard against future overflows
tron
parents: 842
diff changeset
   791
	int32 scrollpos_y;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   792
} vp_d;
5123
9eb435a37492 (svn r7203) -Cleanup: Donnu what Miham was smoking there, but removed it (assert_compile + 3)
Darkvater
parents: 5120
diff changeset
   793
assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(vp_d));
1004
edbdc62fbf24 (svn r1503) Added feature:
miham
parents: 998
diff changeset
   794
edbdc62fbf24 (svn r1503) Added feature:
miham
parents: 998
diff changeset
   795
// vp2_d is the same as vp_d, except for the data_# values..
edbdc62fbf24 (svn r1503) Added feature:
miham
parents: 998
diff changeset
   796
typedef struct {
5123
9eb435a37492 (svn r7203) -Cleanup: Donnu what Miham was smoking there, but removed it (assert_compile + 3)
Darkvater
parents: 5120
diff changeset
   797
	VehicleID follow_vehicle;
1004
edbdc62fbf24 (svn r1503) Added feature:
miham
parents: 998
diff changeset
   798
	int32 scrollpos_x;
edbdc62fbf24 (svn r1503) Added feature:
miham
parents: 998
diff changeset
   799
	int32 scrollpos_y;
edbdc62fbf24 (svn r1503) Added feature:
miham
parents: 998
diff changeset
   800
	byte data_1;
edbdc62fbf24 (svn r1503) Added feature:
miham
parents: 998
diff changeset
   801
	byte data_2;
edbdc62fbf24 (svn r1503) Added feature:
miham
parents: 998
diff changeset
   802
	byte data_3;
edbdc62fbf24 (svn r1503) Added feature:
miham
parents: 998
diff changeset
   803
} vp2_d;
edbdc62fbf24 (svn r1503) Added feature:
miham
parents: 998
diff changeset
   804
assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(vp2_d));
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   805
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   806
typedef struct {
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   807
	uint16 follow_vehicle;
849
c6223dbdb202 (svn r1330) Increase size of some vars from int16 to int32 to guard against future overflows
tron
parents: 842
diff changeset
   808
	int32 scrollpos_x;
c6223dbdb202 (svn r1330) Increase size of some vars from int16 to int32 to guard against future overflows
tron
parents: 842
diff changeset
   809
	int32 scrollpos_y;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   810
	NewsItem *ni;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   811
} news_d;
1004
edbdc62fbf24 (svn r1503) Added feature:
miham
parents: 998
diff changeset
   812
assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(news_d));
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   813
859
46839573bed8 (svn r1340) -Feature: scrolling credits list...finally! Hope nobody gets offended if I forgot them.
darkvater
parents: 849
diff changeset
   814
typedef struct {
998
d9dc257b8949 (svn r1496) -Fix: highscore no longer crashes in network games with a dedicated server. At the end of the game (can only be set by the server) the highscore is shown for the top5 companies of that game
darkvater
parents: 983
diff changeset
   815
	uint32 background_img;
d9dc257b8949 (svn r1496) -Fix: highscore no longer crashes in network games with a dedicated server. At the end of the game (can only be set by the server) the highscore is shown for the top5 companies of that game
darkvater
parents: 983
diff changeset
   816
	int8 rank;
d9dc257b8949 (svn r1496) -Fix: highscore no longer crashes in network games with a dedicated server. At the end of the game (can only be set by the server) the highscore is shown for the top5 companies of that game
darkvater
parents: 983
diff changeset
   817
} highscore_d;
1004
edbdc62fbf24 (svn r1503) Added feature:
miham
parents: 998
diff changeset
   818
assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(highscore_d));
998
d9dc257b8949 (svn r1496) -Fix: highscore no longer crashes in network games with a dedicated server. At the end of the game (can only be set by the server) the highscore is shown for the top5 companies of that game
darkvater
parents: 983
diff changeset
   819
d9dc257b8949 (svn r1496) -Fix: highscore no longer crashes in network games with a dedicated server. At the end of the game (can only be set by the server) the highscore is shown for the top5 companies of that game
darkvater
parents: 983
diff changeset
   820
typedef struct {
d9dc257b8949 (svn r1496) -Fix: highscore no longer crashes in network games with a dedicated server. At the end of the game (can only be set by the server) the highscore is shown for the top5 companies of that game
darkvater
parents: 983
diff changeset
   821
	int height;
d9dc257b8949 (svn r1496) -Fix: highscore no longer crashes in network games with a dedicated server. At the end of the game (can only be set by the server) the highscore is shown for the top5 companies of that game
darkvater
parents: 983
diff changeset
   822
	uint16 counter;
d9dc257b8949 (svn r1496) -Fix: highscore no longer crashes in network games with a dedicated server. At the end of the game (can only be set by the server) the highscore is shown for the top5 companies of that game
darkvater
parents: 983
diff changeset
   823
} scroller_d;
1004
edbdc62fbf24 (svn r1503) Added feature:
miham
parents: 998
diff changeset
   824
assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(scroller_d));
859
46839573bed8 (svn r1340) -Feature: scrolling credits list...finally! Hope nobody gets offended if I forgot them.
darkvater
parents: 849
diff changeset
   825
4542
24f60077489a (svn r6372) -Codechange: static, unneeded decleration in headers, superfluous header includes
Darkvater
parents: 4520
diff changeset
   826
typedef enum SortListFlags {
5838
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
   827
	VL_NONE    = 0x00,
2888
0972346d11a8 (svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents: 2887
diff changeset
   828
	VL_DESC    = 0x01,  // sort descending or ascending
0972346d11a8 (svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents: 2887
diff changeset
   829
	VL_RESORT  = 0x02,  // instruct the code to resort the list in the next loop
5838
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
   830
	VL_REBUILD = 0x04,  // create sort-listing to use for qsort and friends
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
   831
	VL_END     = 0x08
4542
24f60077489a (svn r6372) -Codechange: static, unneeded decleration in headers, superfluous header includes
Darkvater
parents: 4520
diff changeset
   832
} SortListFlags;
588
1b60458bdc29 (svn r1009) -Feature: per-station vehicle lists
tron
parents: 543
diff changeset
   833
5838
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
   834
DECLARE_ENUM_AS_BIT_SET(SortListFlags);
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
   835
4542
24f60077489a (svn r6372) -Codechange: static, unneeded decleration in headers, superfluous header includes
Darkvater
parents: 4520
diff changeset
   836
typedef struct Listing {
24f60077489a (svn r6372) -Codechange: static, unneeded decleration in headers, superfluous header includes
Darkvater
parents: 4520
diff changeset
   837
	bool order;    // Ascending/descending
24f60077489a (svn r6372) -Codechange: static, unneeded decleration in headers, superfluous header includes
Darkvater
parents: 4520
diff changeset
   838
	byte criteria; // Sorting criteria
24f60077489a (svn r6372) -Codechange: static, unneeded decleration in headers, superfluous header includes
Darkvater
parents: 4520
diff changeset
   839
} Listing;
588
1b60458bdc29 (svn r1009) -Feature: per-station vehicle lists
tron
parents: 543
diff changeset
   840
2888
0972346d11a8 (svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents: 2887
diff changeset
   841
typedef struct list_d {
4542
24f60077489a (svn r6372) -Codechange: static, unneeded decleration in headers, superfluous header includes
Darkvater
parents: 4520
diff changeset
   842
	uint16 list_length;  // length of the list being sorted
24f60077489a (svn r6372) -Codechange: static, unneeded decleration in headers, superfluous header includes
Darkvater
parents: 4520
diff changeset
   843
	byte sort_type;      // what criteria to sort on
24f60077489a (svn r6372) -Codechange: static, unneeded decleration in headers, superfluous header includes
Darkvater
parents: 4520
diff changeset
   844
	SortListFlags flags; // used to control sorting/resorting/etc.
24f60077489a (svn r6372) -Codechange: static, unneeded decleration in headers, superfluous header includes
Darkvater
parents: 4520
diff changeset
   845
	uint16 resort_timer; // resort list after a given amount of ticks if set
2888
0972346d11a8 (svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents: 2887
diff changeset
   846
} list_d;
0972346d11a8 (svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents: 2887
diff changeset
   847
assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(list_d));
0972346d11a8 (svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents: 2887
diff changeset
   848
1648
747061dca705 (svn r2152) - Fix: Chatbar in MP games is now on-top of the news window.
darkvater
parents: 1570
diff changeset
   849
typedef struct message_d {
747061dca705 (svn r2152) - Fix: Chatbar in MP games is now on-top of the news window.
darkvater
parents: 1570
diff changeset
   850
	int msg;
747061dca705 (svn r2152) - Fix: Chatbar in MP games is now on-top of the news window.
darkvater
parents: 1570
diff changeset
   851
	int wparam;
747061dca705 (svn r2152) - Fix: Chatbar in MP games is now on-top of the news window.
darkvater
parents: 1570
diff changeset
   852
	int lparam;
747061dca705 (svn r2152) - Fix: Chatbar in MP games is now on-top of the news window.
darkvater
parents: 1570
diff changeset
   853
} message_d;
747061dca705 (svn r2152) - Fix: Chatbar in MP games is now on-top of the news window.
darkvater
parents: 1570
diff changeset
   854
assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(message_d));
747061dca705 (svn r2152) - Fix: Chatbar in MP games is now on-top of the news window.
darkvater
parents: 1570
diff changeset
   855
2636
e2bfdc3e82b6 (svn r3178) - Codechange: move static _dropdown_* vars into the window custom data, giving var1 and var2 more meaningful names.
peter1138
parents: 2634
diff changeset
   856
typedef struct dropdown_d {
2683
6f67fcf73873 (svn r3225) - Fix for "[ 1359165 ] Autoreplace problem with r3171 and later" -- Move the disabled/hidden bits to custom data in window struct.
peter1138
parents: 2636
diff changeset
   857
	uint32 disabled_state;
6f67fcf73873 (svn r3225) - Fix for "[ 1359165 ] Autoreplace problem with r3171 and later" -- Move the disabled/hidden bits to custom data in window struct.
peter1138
parents: 2636
diff changeset
   858
	uint32 hidden_state;
2636
e2bfdc3e82b6 (svn r3178) - Codechange: move static _dropdown_* vars into the window custom data, giving var1 and var2 more meaningful names.
peter1138
parents: 2634
diff changeset
   859
	WindowClass parent_wnd_class;
e2bfdc3e82b6 (svn r3178) - Codechange: move static _dropdown_* vars into the window custom data, giving var1 and var2 more meaningful names.
peter1138
parents: 2634
diff changeset
   860
	WindowNumber parent_wnd_num;
e2bfdc3e82b6 (svn r3178) - Codechange: move static _dropdown_* vars into the window custom data, giving var1 and var2 more meaningful names.
peter1138
parents: 2634
diff changeset
   861
	byte parent_button;
e2bfdc3e82b6 (svn r3178) - Codechange: move static _dropdown_* vars into the window custom data, giving var1 and var2 more meaningful names.
peter1138
parents: 2634
diff changeset
   862
	byte num_items;
e2bfdc3e82b6 (svn r3178) - Codechange: move static _dropdown_* vars into the window custom data, giving var1 and var2 more meaningful names.
peter1138
parents: 2634
diff changeset
   863
	byte selected_index;
e2bfdc3e82b6 (svn r3178) - Codechange: move static _dropdown_* vars into the window custom data, giving var1 and var2 more meaningful names.
peter1138
parents: 2634
diff changeset
   864
	const StringID *items;
e2bfdc3e82b6 (svn r3178) - Codechange: move static _dropdown_* vars into the window custom data, giving var1 and var2 more meaningful names.
peter1138
parents: 2634
diff changeset
   865
	byte click_delay;
e2bfdc3e82b6 (svn r3178) - Codechange: move static _dropdown_* vars into the window custom data, giving var1 and var2 more meaningful names.
peter1138
parents: 2634
diff changeset
   866
	bool drag_mode;
e2bfdc3e82b6 (svn r3178) - Codechange: move static _dropdown_* vars into the window custom data, giving var1 and var2 more meaningful names.
peter1138
parents: 2634
diff changeset
   867
} dropdown_d;
e2bfdc3e82b6 (svn r3178) - Codechange: move static _dropdown_* vars into the window custom data, giving var1 and var2 more meaningful names.
peter1138
parents: 2634
diff changeset
   868
assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(dropdown_d));
e2bfdc3e82b6 (svn r3178) - Codechange: move static _dropdown_* vars into the window custom data, giving var1 and var2 more meaningful names.
peter1138
parents: 2634
diff changeset
   869
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   870
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   871
/* window.c */
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   872
//void CallWindowEventNP(BaseWindow *w, int event);
1093
e8d26c7dc42f (svn r1594) Convert all undefined parameter lists to (void) and add the appropriate warning flags in the Makefile
tron
parents: 1009
diff changeset
   873
void CallWindowTickEvent(void);
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   874
//void SetWindowDirty(const BaseWindow *w);
5838
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
   875
void SendWindowMessage(WindowClass wnd_class, WindowNumber wnd_num, int msg, int wparam, int lparam);
9c3129cb019b (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5726
diff changeset
   876
void SendWindowMessageClass(WindowClass wnd_class, int msg, int wparam, int lparam);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   877
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   878
//BaseWindow *FindWindowById(WindowClass cls, WindowNumber number);
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   879
//void DeleteWindow(BaseWindow *w);
5077
587701a06b6a (svn r7138) -Fix: [vehicle list windows] fixed a rare crash where having some (not all) vehicle list windows open for a player, that goes bankrupt would crash the game
bjarni
parents: 5072
diff changeset
   880
void DeletePlayerWindows(PlayerID pi);
587701a06b6a (svn r7138) -Fix: [vehicle list windows] fixed a rare crash where having some (not all) vehicle list windows open for a player, that goes bankrupt would crash the game
bjarni
parents: 5072
diff changeset
   881
void ChangeWindowOwner(PlayerID old_player, PlayerID new_player);
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   882
//BaseWindow *BringWindowToFrontById(WindowClass cls, WindowNumber number);
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   883
//BaseWindow *FindWindowFromPt(int x, int y);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   884
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   885
//BaseWindow *AllocateWindow(
6235
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   886
//							int x,
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   887
//							int y,
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   888
//							int width,
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   889
//							int height,
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   890
//							WindowProc *proc,
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   891
//							WindowClass cls,
5077e6ed3788 (svn r8683) [cpp_gui] -Codechange: first steps towards OO GUI (together with Bjarni) without changes in the logic
KUDr
parents: 6224
diff changeset
   892
//							const Widget *widget);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   893
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   894
//BaseWindow *AllocateWindowDesc(const WindowDesc *desc);
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   895
//BaseWindow *AllocateWindowDescFront(const WindowDesc *desc, int window_number);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   896
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   897
//void DrawWindowViewport(const BaseWindow *w);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   898
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   899
/**
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   900
 * Sets the enabled/disabled status of a widget.
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   901
 * By default, widgets are enabled.
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   902
 * On certain conditions, they have to be disabled.
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   903
 * @param w : BaseWindow on which the widget is located
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   904
 * @param widget_index : index of this widget in the window
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   905
 * @param disab_stat : status to use ie: disabled = true, enabled = false
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   906
 */
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   907
inline void BaseWindow::SetWidgetDisabledState(byte widget_index, bool disab_stat)
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   908
{
6246
2a4c2c4d66f0 (svn r8713) [cpp_gui] -Codechange: SetWindowWidgetDisabledState turned into Window method
KUDr
parents: 6245
diff changeset
   909
	assert(widget_index < widget_count);
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   910
	SB(widget[widget_index].m_display_flags, WIDG_DISABLED, 1, !!disab_stat);
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   911
}
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   912
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   913
/**
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   914
 * Sets a widget to disabled.
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   915
 * @param w : BaseWindow on which the widget is located
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   916
 * @param widget_index : index of this widget in the window
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   917
 */
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   918
inline void BaseWindow::DisableWidget(byte widget_index)
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   919
{
6247
67e881450cf3 (svn r8714) [cpp_gui] -Codechange: DisableWindowWidget() and EnableWindowWidget() turned into Window methods
KUDr
parents: 6246
diff changeset
   920
	SetWidgetDisabledState(widget_index, true);
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   921
}
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   922
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   923
/**
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   924
 * Sets a widget to Enabled.
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   925
 * @param w : BaseWindow on which the widget is located
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   926
 * @param widget_index : index of this widget in the window
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   927
 */
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   928
inline void BaseWindow::EnableWidget(byte widget_index)
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   929
{
6247
67e881450cf3 (svn r8714) [cpp_gui] -Codechange: DisableWindowWidget() and EnableWindowWidget() turned into Window methods
KUDr
parents: 6246
diff changeset
   930
	SetWidgetDisabledState(widget_index, false);
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   931
}
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   932
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   933
/**
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   934
 * Gets the enabled/disabled status of a widget.
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   935
 * @param w : BaseWindow on which the widget is located
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   936
 * @param widget_index : index of this widget in the window
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   937
 * @return status of the widget ie: disabled = true, enabled = false
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   938
 */
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   939
inline bool BaseWindow::IsWidgetDisabled(byte widget_index) const
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   940
{
6248
24583caadfee (svn r8716) [cpp_gui] -Codechange: IsWindowWidgetDisabled() turned into Window method
KUDr
parents: 6247
diff changeset
   941
	assert(widget_index < widget_count);
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   942
	return HASBIT(widget[widget_index].m_display_flags, WIDG_DISABLED);
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   943
}
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   944
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   945
/**
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   946
 * Sets the hidden/shown status of a widget.
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   947
 * By default, widgets are visible.
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   948
 * On certain conditions, they have to be hidden.
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   949
 * @param w BaseWindow on which the widget is located
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   950
 * @param widget_index index of this widget in the window
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   951
 * @param hidden_stat status to use ie. hidden = true, visible = false
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   952
 */
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   953
inline void BaseWindow::SetWidgetHiddenState(byte widget_index, bool hidden_stat)
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   954
{
6250
5135b200b376 (svn r8718) [cpp_gui] -Codechange: SetWindowWidgetHiddenState(), HideWindowWidget(), ShowWindowWidget() and IsWindowWidgetHidden() turned into Window methods
KUDr
parents: 6249
diff changeset
   955
	assert(widget_index < widget_count);
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   956
	SB(widget[widget_index].m_display_flags, WIDG_HIDDEN, 1, !!hidden_stat);
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   957
}
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   958
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   959
/**
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   960
 * Sets a widget hidden.
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   961
 * @param w : BaseWindow on which the widget is located
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   962
 * @param widget_index : index of this widget in the window
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   963
 */
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   964
inline void BaseWindow::HideWidget(byte widget_index)
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   965
{
6250
5135b200b376 (svn r8718) [cpp_gui] -Codechange: SetWindowWidgetHiddenState(), HideWindowWidget(), ShowWindowWidget() and IsWindowWidgetHidden() turned into Window methods
KUDr
parents: 6249
diff changeset
   966
	SetWidgetHiddenState(widget_index, true);
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   967
}
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   968
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   969
/**
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   970
 * Sets a widget visible.
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   971
 * @param w : BaseWindow on which the widget is located
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   972
 * @param widget_index : index of this widget in the window
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   973
 */
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   974
inline void BaseWindow::ShowWidget(byte widget_index)
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   975
{
6250
5135b200b376 (svn r8718) [cpp_gui] -Codechange: SetWindowWidgetHiddenState(), HideWindowWidget(), ShowWindowWidget() and IsWindowWidgetHidden() turned into Window methods
KUDr
parents: 6249
diff changeset
   976
	SetWidgetHiddenState(widget_index, false);
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   977
}
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   978
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   979
/**
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   980
 * Gets the visibility of a widget.
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   981
 * @param w : BaseWindow on which the widget is located
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   982
 * @param widget_index : index of this widget in the window
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   983
 * @return status of the widget ie: hidden = true, visible = false
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   984
 */
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   985
inline bool BaseWindow::IsWidgetHidden(byte widget_index) const
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   986
{
6250
5135b200b376 (svn r8718) [cpp_gui] -Codechange: SetWindowWidgetHiddenState(), HideWindowWidget(), ShowWindowWidget() and IsWindowWidgetHidden() turned into Window methods
KUDr
parents: 6249
diff changeset
   987
	assert(widget_index < widget_count);
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   988
	return HASBIT(widget[widget_index].m_display_flags, WIDG_HIDDEN);
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   989
}
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   990
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   991
/**
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   992
 * Sets the lowered/raised status of a widget.
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   993
 * @param w : BaseWindow on which the widget is located
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   994
 * @param widget_index : index of this widget in the window
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   995
 * @param hidden_stat : status to use ie: lowered = true, raised = false
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   996
 */
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
   997
inline void BaseWindow::SetWidgetLoweredState(byte widget_index, bool lowered_stat)
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
   998
{
6251
cd413fa2e252 (svn r8720) [cpp_gui] -Codechange: SetWindowWidgetLoweredState(), ToggleWidgetLoweredState(), LowerWindowWidget(), RaiseWindowWidget() and IsWindowWidgetLowered() turned into Window methods
KUDr
parents: 6250
diff changeset
   999
	assert(widget_index < widget_count);
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
  1000
	SB(widget[widget_index].m_display_flags, WIDG_LOWERED, 1, !!lowered_stat);
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
  1001
}
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
  1002
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
  1003
/**
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
  1004
 * Invert the lowered/raised  status of a widget.
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
  1005
 * @param w : BaseWindow on which the widget is located
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
  1006
 * @param widget_index : index of this widget in the window
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
  1007
 */
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
  1008
inline void BaseWindow::ToggleWidgetLoweredState(byte widget_index)
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
  1009
{
6251
cd413fa2e252 (svn r8720) [cpp_gui] -Codechange: SetWindowWidgetLoweredState(), ToggleWidgetLoweredState(), LowerWindowWidget(), RaiseWindowWidget() and IsWindowWidgetLowered() turned into Window methods
KUDr
parents: 6250
diff changeset
  1010
	assert(widget_index < widget_count);
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
  1011
	TOGGLEBIT(widget[widget_index].m_display_flags, WIDG_LOWERED);
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
  1012
}
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
  1013
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
  1014
/**
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
  1015
 * Marks a widget as lowered.
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
  1016
 * @param w : BaseWindow on which the widget is located
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
  1017
 * @param widget_index : index of this widget in the window
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
  1018
 */
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
  1019
inline void BaseWindow::LowerWidget(byte widget_index)
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
  1020
{
6251
cd413fa2e252 (svn r8720) [cpp_gui] -Codechange: SetWindowWidgetLoweredState(), ToggleWidgetLoweredState(), LowerWindowWidget(), RaiseWindowWidget() and IsWindowWidgetLowered() turned into Window methods
KUDr
parents: 6250
diff changeset
  1021
	SetWidgetLoweredState(widget_index, true);
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
  1022
}
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
  1023
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
  1024
/**
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
  1025
 * Marks a widget as raised.
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
  1026
 * @param w : BaseWindow on which the widget is located
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
  1027
 * @param widget_index : index of this widget in the window
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
  1028
 */
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
  1029
inline void BaseWindow::RaiseWidget(byte widget_index)
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
  1030
{
6251
cd413fa2e252 (svn r8720) [cpp_gui] -Codechange: SetWindowWidgetLoweredState(), ToggleWidgetLoweredState(), LowerWindowWidget(), RaiseWindowWidget() and IsWindowWidgetLowered() turned into Window methods
KUDr
parents: 6250
diff changeset
  1031
	SetWidgetLoweredState(widget_index, false);
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
  1032
}
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
  1033
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
  1034
/**
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
  1035
 * Gets the lowered state of a widget.
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
  1036
 * @param w : BaseWindow on which the widget is located
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
  1037
 * @param widget_index : index of this widget in the window
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
  1038
 * @return status of the widget ie: lowered = true, raised= false
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
  1039
 */
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
  1040
inline bool BaseWindow::IsWidgetLowered(byte widget_index) const
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
  1041
{
6251
cd413fa2e252 (svn r8720) [cpp_gui] -Codechange: SetWindowWidgetLoweredState(), ToggleWidgetLoweredState(), LowerWindowWidget(), RaiseWindowWidget() and IsWindowWidgetLowered() turned into Window methods
KUDr
parents: 6250
diff changeset
  1042
	assert(widget_index < widget_count);
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
  1043
	return HASBIT(widget[widget_index].m_display_flags, WIDG_LOWERED);
4692
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
  1044
}
fdccb9b2dbcd (svn r6599) -Codechange: Add accessors around the members click/disabled/hidden_state of Window
belugas
parents: 4638
diff changeset
  1045
1093
e8d26c7dc42f (svn r1594) Convert all undefined parameter lists to (void) and add the appropriate warning flags in the Makefile
tron
parents: 1009
diff changeset
  1046
void InitWindowSystem(void);
1474
d83520edcda6 (svn r1978) - Fix: Plug some memleaks; thanks Valgrind
Darkvater
parents: 1390
diff changeset
  1047
void UnInitWindowSystem(void);
d83520edcda6 (svn r1978) - Fix: Plug some memleaks; thanks Valgrind
Darkvater
parents: 1390
diff changeset
  1048
void ResetWindowSystem(void);
1570
c470380facb9 (svn r2074) MouseLoop -> InputLoop(), factor out a real mouse-specific MouseLoop from the new InitLoop() (more in the spirit of HandleKeypress()).
pasky
parents: 1474
diff changeset
  1049
void InputLoop(void);
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
  1050
//void InvalidateThisWindowData(BaseWindow *w);
4739
bd535b408617 (svn r6651) -Coding feature: added the windowevent WE_INVALIDATE_DATA
bjarni
parents: 4730
diff changeset
  1051
void InvalidateWindowData(WindowClass cls, WindowNumber number);
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
  1052
//void RaiseWindowButtons(BaseWindow *w);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1053
void RelocateAllWindows(int neww, int newh);
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
  1054
int PositionMainToolbar(BaseWindow *w);
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
  1055
//void CDECL SetWindowWidgetsDisabledState(BaseWindow *w, bool disab_stat, int widgets, ...);
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
  1056
//void CDECL SetWindowWidgetsHiddenState(BaseWindow *w, bool hidden_stat, int widgets, ...);
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
  1057
//void CDECL SetWindowWidgetsLoweredState(BaseWindow *w, bool lowered_stat, int widgets, ...);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1058
4719
413b21513ef7 (svn r6631) -Codechange: Use accessors for click_state.
belugas
parents: 4712
diff changeset
  1059
/* misc_gui.c*/
4884
895f06b87934 (svn r6821) -Codechange: For the measurement tool do not show the tooltip when the selection
Darkvater
parents: 4834
diff changeset
  1060
void GuiShowTooltipsWithArgs(StringID str, uint paramcount, const uint params[]);
4834
ddcf440d0ffd (svn r6758) -Feature: Add a measurement tool that will show dimensions and height
Darkvater
parents: 4800
diff changeset
  1061
static inline void GuiShowTooltips(StringID str)
ddcf440d0ffd (svn r6758) -Feature: Add a measurement tool that will show dimensions and height
Darkvater
parents: 4800
diff changeset
  1062
{
ddcf440d0ffd (svn r6758) -Feature: Add a measurement tool that will show dimensions and height
Darkvater
parents: 4800
diff changeset
  1063
	GuiShowTooltipsWithArgs(str, 0, NULL);
ddcf440d0ffd (svn r6758) -Feature: Add a measurement tool that will show dimensions and height
Darkvater
parents: 4800
diff changeset
  1064
}
4719
413b21513ef7 (svn r6631) -Codechange: Use accessors for click_state.
belugas
parents: 4712
diff changeset
  1065
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
  1066
//void HandleButtonClick(BaseWindow *w, byte widget);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1067
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
  1068
BaseWindow *GetCallbackWnd(void);
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
  1069
//WindowList::Iterator FindWindowZPosition(const BaseWindow *w);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1070
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1071
/* window.c */
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
  1072
//extern BaseWindow *_z_windows[];
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
  1073
//extern BaseWindow **_last_z_window;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1074
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1075
VARDEF Point _cursorpos_drag_start;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1076
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1077
VARDEF int _scrollbar_start_pos;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1078
VARDEF int _scrollbar_size;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1079
VARDEF byte _scroller_click_timeout;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1080
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1081
VARDEF bool _scrolling_scrollbar;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1082
VARDEF bool _scrolling_viewport;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1083
VARDEF bool _popup_menu_active;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1084
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1085
VARDEF byte _special_mouse_mode;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1086
enum SpecialMouseMode {
4344
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4337
diff changeset
  1087
	WSM_NONE     = 0,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1088
	WSM_DRAGDROP = 1,
4344
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4337
diff changeset
  1089
	WSM_SIZING   = 2,
5d0e40cd67b9 (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4337
diff changeset
  1090
	WSM_PRESIZE  = 3,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1091
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1092
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1093
6073
d8dae377c879 (svn r8384) -Codechange: [GUI] instead of writing a resize button function for each window, a global ResizeButtons() is added
bjarni
parents: 6032
diff changeset
  1094
/** Evenly distribute some widgets when resizing horizontally (often a button row)
6075
33cdb35f9af5 (svn r8390) -Codechange (r8384): Rewrote ResizeButtons()
bjarni
parents: 6073
diff changeset
  1095
 *  The widgets are presumed to be in a line and numberef from left to right (without gaps)
6073
d8dae377c879 (svn r8384) -Codechange: [GUI] instead of writing a resize button function for each window, a global ResizeButtons() is added
bjarni
parents: 6032
diff changeset
  1096
 * @param w widow to modify
d8dae377c879 (svn r8384) -Codechange: [GUI] instead of writing a resize button function for each window, a global ResizeButtons() is added
bjarni
parents: 6032
diff changeset
  1097
 * @param left The leftmost widget to resize
6075
33cdb35f9af5 (svn r8390) -Codechange (r8384): Rewrote ResizeButtons()
bjarni
parents: 6073
diff changeset
  1098
 * @param right The rightmost widget to resize. Since right side of it is used, remember to set it to RESIZE_RIGHT
6073
d8dae377c879 (svn r8384) -Codechange: [GUI] instead of writing a resize button function for each window, a global ResizeButtons() is added
bjarni
parents: 6032
diff changeset
  1099
 */
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents: 6256
diff changeset
  1100
//void ResizeButtons(BaseWindow *w, byte left, byte right);
6073
d8dae377c879 (svn r8384) -Codechange: [GUI] instead of writing a resize button function for each window, a global ResizeButtons() is added
bjarni
parents: 6032
diff changeset
  1101
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1102
#endif /* WINDOW_H */