annotate mde/gui/WMScreen.d @ 132:264028f4115a

Cleaned up mde.imde and a couple of widget functions. New mde.menus module to add default menus. The input singleton is now created in mde.input.Input instead of mde.imde.
author Diggory Hardy <diggory.hardy@gmail.com>
date Fri, 23 Jan 2009 14:59:05 +0000
parents 9cff74f68b84
children 783969f4665c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
122
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
1 /* LICENSE BLOCK
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
2 Part of mde: a Modular D game-oriented Engine
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
3 Copyright © 2007-2008 Diggory Hardy
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
4
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
5 This program is free software: you can redistribute it and/or modify it under the terms
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
6 of the GNU General Public License as published by the Free Software Foundation, either
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
7 version 2 of the License, or (at your option) any later version.
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
8
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
9 This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
10 without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
11 See the GNU General Public License for more details.
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
12
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
13 You should have received a copy of the GNU General Public License
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
14 along with this program. If not, see <http://www.gnu.org/licenses/>. */
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
15
131
9cff74f68b84 Major revisions to popup handling. Buttons can close menus now, plus some smaller impovements. Removed Widget module.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 128
diff changeset
16 /******************************************************************************
122
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
17 * A gui manager class using mde.setup.Screen and mde.input.Input.
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
18 *
131
9cff74f68b84 Major revisions to popup handling. Buttons can close menus now, plus some smaller impovements. Removed Widget module.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 128
diff changeset
19 * This is the module to use externally to create a graphical user interface
9cff74f68b84 Major revisions to popup handling. Buttons can close menus now, plus some smaller impovements. Removed Widget module.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 128
diff changeset
20 * (likely also with content modules).
9cff74f68b84 Major revisions to popup handling. Buttons can close menus now, plus some smaller impovements. Removed Widget module.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 128
diff changeset
21 *****************************************************************************/
122
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
22 module mde.gui.WMScreen;
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
23
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
24 import mde.gui.WidgetManager;
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
25 import mde.gui.widget.Ifaces;
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
26 import mde.gui.renderer.createRenderer;
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
27
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
28 import mde.setup.Screen;
132
264028f4115a Cleaned up mde.imde and a couple of widget functions.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 131
diff changeset
29 import mde.input.Input;
122
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
30
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
31 import tango.util.log.Log : Log, Logger;
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
32
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
33 private Logger logger;
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
34 static this () {
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
35 logger = Log.getLogger ("mde.gui.WMScreen");
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
36 }
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
37
131
9cff74f68b84 Major revisions to popup handling. Buttons can close menus now, plus some smaller impovements. Removed Widget module.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 128
diff changeset
38 /******************************************************************************
122
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
39 * The widget manager.
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
40 *
131
9cff74f68b84 Major revisions to popup handling. Buttons can close menus now, plus some smaller impovements. Removed Widget module.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 128
diff changeset
41 * This provides a layer on top of WidgetLoader, handling input and rendering.
9cff74f68b84 Major revisions to popup handling. Buttons can close menus now, plus some smaller impovements. Removed Widget module.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 128
diff changeset
42 * Other functionality is contained in the super class, to simplify supporting
9cff74f68b84 Major revisions to popup handling. Buttons can close menus now, plus some smaller impovements. Removed Widget module.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 128
diff changeset
43 * new input/graphics libraries.
122
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
44 *
131
9cff74f68b84 Major revisions to popup handling. Buttons can close menus now, plus some smaller impovements. Removed Widget module.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 128
diff changeset
45 * Currently mouse coordinates are passed to widgets untranslated. It may make
9cff74f68b84 Major revisions to popup handling. Buttons can close menus now, plus some smaller impovements. Removed Widget module.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 128
diff changeset
46 * sense to translate them and possibly drop events for some uses, such as if
9cff74f68b84 Major revisions to popup handling. Buttons can close menus now, plus some smaller impovements. Removed Widget module.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 128
diff changeset
47 * the gui is drawn to a texture.
122
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
48 *
131
9cff74f68b84 Major revisions to popup handling. Buttons can close menus now, plus some smaller impovements. Removed Widget module.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 128
diff changeset
49 * Public non IWidget* methods should be thread-safe.
9cff74f68b84 Major revisions to popup handling. Buttons can close menus now, plus some smaller impovements. Removed Widget module.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 128
diff changeset
50 *****************************************************************************/
122
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
51 scope class WMScreen : AWidgetManager, Screen.IDrawable {
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
52 /** Construct a new widget manager.
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
53 *
128
41582439a42b Added support for dynamic EnumContent loading and saving, with translation loading.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 126
diff changeset
54 * Must be run after static this.
41582439a42b Added support for dynamic EnumContent loading and saving, with translation loading.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 126
diff changeset
55 *
122
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
56 * params:
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
57 * fileName = Name of file specifying the gui, excluding path and extension.
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
58 */
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
59 this (char[] file) {
128
41582439a42b Added support for dynamic EnumContent loading and saving, with translation loading.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 126
diff changeset
60 // Doesn't need a lock - cannot conflict with other class functions.
122
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
61 super(file);
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
62
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
63 Screen.addDrawable (this);
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
64 // Events we want to know about:
132
264028f4115a Cleaned up mde.imde and a couple of widget functions.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 131
diff changeset
65 input = Input.singleton;
264028f4115a Cleaned up mde.imde and a couple of widget functions.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 131
diff changeset
66 input.addMouseClickCallback(&clickEvent)
264028f4115a Cleaned up mde.imde and a couple of widget functions.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 131
diff changeset
67 .addMouseMotionCallback(&motionEvent);
122
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
68 }
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
69
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
70 /** Draw the gui. */
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
71 void draw() {
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
72 synchronized(mutex) {
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
73 if (child)
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
74 child.draw;
131
9cff74f68b84 Major revisions to popup handling. Buttons can close menus now, plus some smaller impovements. Removed Widget module.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 128
diff changeset
75 if (childIPPW)
9cff74f68b84 Major revisions to popup handling. Buttons can close menus now, plus some smaller impovements. Removed Widget module.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 128
diff changeset
76 childIPPW.drawPopup;
122
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
77 }
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
78 }
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
79
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
80 /** For mouse click events.
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
81 *
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
82 * Sends the event on to the relevant windows and all click callbacks. */
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
83 void clickEvent (ushort usx, ushort usy, ubyte b, bool state) {
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
84 debug scope (failure)
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
85 logger.warn ("clickEvent: failed!");
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
86 mutex.lock;
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
87 scope(exit) mutex.unlock;
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
88 if (child is null) return;
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
89
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
90 wdabs cx = cast(wdabs) usx, cy = cast(wdabs) usy;
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
91
131
9cff74f68b84 Major revisions to popup handling. Buttons can close menus now, plus some smaller impovements. Removed Widget module.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 128
diff changeset
92 // Callbacks have the highest priority receiving events (e.g. a button release)
122
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
93 foreach (dg; clickCallbacks)
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
94 if (dg (cx, cy, b, state)) return;
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
95
131
9cff74f68b84 Major revisions to popup handling. Buttons can close menus now, plus some smaller impovements. Removed Widget module.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 128
diff changeset
96 // Update underMouse to get the widget clicked on
9cff74f68b84 Major revisions to popup handling. Buttons can close menus now, plus some smaller impovements. Removed Widget module.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 128
diff changeset
97 updateUnderMouse (cx, cy, state);
122
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
98
131
9cff74f68b84 Major revisions to popup handling. Buttons can close menus now, plus some smaller impovements. Removed Widget module.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 128
diff changeset
99 // Disable keyboard input if on another widget:
9cff74f68b84 Major revisions to popup handling. Buttons can close menus now, plus some smaller impovements. Removed Widget module.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 128
diff changeset
100 if (keyFocus && keyFocus !is underMouse) {
122
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
101 keyFocus.keyFocusLost;
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
102 keyFocus = null;
132
264028f4115a Cleaned up mde.imde and a couple of widget functions.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 131
diff changeset
103 input.setLetterCallback (null);
122
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
104 }
131
9cff74f68b84 Major revisions to popup handling. Buttons can close menus now, plus some smaller impovements. Removed Widget module.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 128
diff changeset
105 // Finally, post the actual event:
9cff74f68b84 Major revisions to popup handling. Buttons can close menus now, plus some smaller impovements. Removed Widget module.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 128
diff changeset
106 if (underMouse.clickEvent (cast(wdabs)cx,cast(wdabs)cy,b,state) & 1) {
9cff74f68b84 Major revisions to popup handling. Buttons can close menus now, plus some smaller impovements. Removed Widget module.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 128
diff changeset
107 // keyboard input requested
9cff74f68b84 Major revisions to popup handling. Buttons can close menus now, plus some smaller impovements. Removed Widget module.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 128
diff changeset
108 keyFocus = underMouse;
132
264028f4115a Cleaned up mde.imde and a couple of widget functions.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 131
diff changeset
109 input.setLetterCallback (&underMouse.keyEvent);
131
9cff74f68b84 Major revisions to popup handling. Buttons can close menus now, plus some smaller impovements. Removed Widget module.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 128
diff changeset
110 }
122
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
111 }
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
112
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
113 /** For mouse motion events.
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
114 *
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
115 * Sends the event on to all motion callbacks. */
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
116 void motionEvent (ushort scx, ushort scy) {
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
117 debug scope (failure)
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
118 logger.warn ("motionEvent: failed!");
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
119 mutex.lock;
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
120 scope(exit) mutex.unlock;
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
121 wdabs cx = cast(wdabs) scx, cy = cast(wdabs) scy;
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
122 foreach (dg; motionCallbacks)
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
123 dg (cx, cy);
131
9cff74f68b84 Major revisions to popup handling. Buttons can close menus now, plus some smaller impovements. Removed Widget module.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 128
diff changeset
124
9cff74f68b84 Major revisions to popup handling. Buttons can close menus now, plus some smaller impovements. Removed Widget module.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 128
diff changeset
125 updateUnderMouse (cx, cy, false);
122
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
126 }
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
127
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
128
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
129 void sizeEvent (int nw, int nh) { // IDrawable function
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
130 mutex.lock;
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
131 scope(exit) mutex.unlock;
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
132
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
133 w = cast(wdim) nw;
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
134 h = cast(wdim) nh;
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
135
126
c9843fbaac88 Dynamic minimal size changing improved; works over layouts sharing alignment.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 122
diff changeset
136 if (w < mw) {
c9843fbaac88 Dynamic minimal size changing improved; works over layouts sharing alignment.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 122
diff changeset
137 logger.warn ("Min width for gui, {}, not met: {}", mw, w);
c9843fbaac88 Dynamic minimal size changing improved; works over layouts sharing alignment.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 122
diff changeset
138 w = mw;
c9843fbaac88 Dynamic minimal size changing improved; works over layouts sharing alignment.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 122
diff changeset
139 }
c9843fbaac88 Dynamic minimal size changing improved; works over layouts sharing alignment.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 122
diff changeset
140 if (h < mh) {
c9843fbaac88 Dynamic minimal size changing improved; works over layouts sharing alignment.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 122
diff changeset
141 logger.warn ("Min height for gui, {}, not met: {}", mh, h);
c9843fbaac88 Dynamic minimal size changing improved; works over layouts sharing alignment.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 122
diff changeset
142 h = mh;
c9843fbaac88 Dynamic minimal size changing improved; works over layouts sharing alignment.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 122
diff changeset
143 }
122
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
144
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
145 if (!child) return; // if not created yet.
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
146 child.setWidth (w, -1);
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
147 child.setHeight (h, -1);
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
148 child.setPosition (0,0);
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
149 }
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
150
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
151 protected:
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
152 /* Second stage of widget loading.
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
153 * Note: sizeEvent should be called with window size before this. */
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
154 final override void createRootWidget () {
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
155 // The renderer needs to be created on the first load, but not after this.
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
156 if (rend is null)
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
157 rend = createRenderer (rendName);
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
158
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
159 debug (mdeWidgets) logger.trace ("Creating root widget...");
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
160 child = makeWidget (this, "root");
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
161 debug (mdeWidgets) logger.trace ("Setting up root widget...");
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
162 child.setup (0, 3);
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
163
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
164 mw = child.minWidth;
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
165 mh = child.minHeight;
126
c9843fbaac88 Dynamic minimal size changing improved; works over layouts sharing alignment.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 122
diff changeset
166 if (w < mw) {
c9843fbaac88 Dynamic minimal size changing improved; works over layouts sharing alignment.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 122
diff changeset
167 logger.warn ("Min width for gui, {}, not met: {}", mw, w);
c9843fbaac88 Dynamic minimal size changing improved; works over layouts sharing alignment.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 122
diff changeset
168 w = mw;
c9843fbaac88 Dynamic minimal size changing improved; works over layouts sharing alignment.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 122
diff changeset
169 }
c9843fbaac88 Dynamic minimal size changing improved; works over layouts sharing alignment.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 122
diff changeset
170 if (h < mh) {
c9843fbaac88 Dynamic minimal size changing improved; works over layouts sharing alignment.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 122
diff changeset
171 logger.warn ("Min height for gui, {}, not met: {}", mh, h);
c9843fbaac88 Dynamic minimal size changing improved; works over layouts sharing alignment.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 122
diff changeset
172 h = mh;
c9843fbaac88 Dynamic minimal size changing improved; works over layouts sharing alignment.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 122
diff changeset
173 }
122
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
174
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
175 debug (mdeWidgets) logger.trace ("Setting size and position of root widget...");
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
176 child.setWidth (w, -1);
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
177 child.setHeight (h, -1);
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
178 child.setPosition (0,0);
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
179 debug (mdeWidgets) logger.trace ("Done creating root widget.");
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
180 }
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
181
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
182 final override void preSave () {
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
183 if (keyFocus) {
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
184 keyFocus.keyFocusLost;
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
185 keyFocus = null;
132
264028f4115a Cleaned up mde.imde and a couple of widget functions.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 131
diff changeset
186 input.setLetterCallback (null);
122
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
187 }
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
188 }
132
264028f4115a Cleaned up mde.imde and a couple of widget functions.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 131
diff changeset
189
264028f4115a Cleaned up mde.imde and a couple of widget functions.
Diggory Hardy <diggory.hardy@gmail.com>
parents: 131
diff changeset
190 Input input; // input singleton
122
f96e8d18c00a Missed file from last commit.
Diggory Hardy <diggory.hardy@gmail.com>
parents:
diff changeset
191 }