annotate dwt/widgets/Decorations.d @ 58:a5c274fa5af9

extended helloworld crashing
author Frank Benoit <benoit@tionex.de>
date Sat, 12 Jan 2008 07:02:08 +0100
parents 6e625fa1612d
children 8cec8f536af3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1 /*******************************************************************************
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2 * Copyright (c) 2000, 2007 IBM Corporation and others.
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3 * All rights reserved. This program and the accompanying materials
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4 * are made available under the terms of the Eclipse Public License v1.0
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
5 * which accompanies this distribution, and is available at
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
6 * http://www.eclipse.org/legal/epl-v10.html
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
7 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
8 * Contributors:
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
9 * IBM Corporation - initial API and implementation
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
10 *******************************************************************************/
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
11 module dwt.widgets.Decorations;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
12
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
13 import dwt.widgets.Control;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
14 import dwt.widgets.Menu;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
15 import dwt.widgets.Composite;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
16
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
17 import dwt.SWT;
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
18 import dwt.internal.gtk.OS;
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
19 //import dwt.graphics.;
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
20 import dwt.widgets.Canvas;
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
21 import dwt.graphics.Image;
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
22 import dwt.graphics.ImageData;
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
23 import dwt.widgets.Control;
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
24 import dwt.widgets.Display;
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
25 import dwt.widgets.Widget;
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
26 import dwt.widgets.Button;
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
27
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
28 /**
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
29 * Instances of this class provide the appearance and
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
30 * behavior of <code>Shells</code>, but are not top
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31 * level shells or dialogs. Class <code>Shell</code>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32 * shares a significant amount of code with this class,
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
33 * and is a subclass.
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
34 * <p>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35 * IMPORTANT: This class was intended to be abstract and
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
36 * should <em>never</em> be referenced or instantiated.
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
37 * Instead, the class <code>Shell</code> should be used.
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
38 * </p>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
39 * <p>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
40 * Instances are always displayed in one of the maximized,
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
41 * minimized or normal states:
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
42 * <ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
43 * <li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
44 * When an instance is marked as <em>maximized</em>, the
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
45 * window manager will typically resize it to fill the
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
46 * entire visible area of the display, and the instance
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
47 * is usually put in a state where it can not be resized
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
48 * (even if it has style <code>RESIZE</code>) until it is
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
49 * no longer maximized.
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
50 * </li><li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
51 * When an instance is in the <em>normal</em> state (neither
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
52 * maximized or minimized), its appearance is controlled by
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
53 * the style constants which were specified when it was created
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
54 * and the restrictions of the window manager (see below).
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
55 * </li><li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
56 * When an instance has been marked as <em>minimized</em>,
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
57 * its contents (client area) will usually not be visible,
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
58 * and depending on the window manager, it may be
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
59 * "iconified" (that is, replaced on the desktop by a small
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
60 * simplified representation of itself), relocated to a
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
61 * distinguished area of the screen, or hidden. Combinations
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
62 * of these changes are also possible.
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
63 * </li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
64 * </ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
65 * </p>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
66 * Note: The styles supported by this class must be treated
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
67 * as <em>HINT</em>s, since the window manager for the
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
68 * desktop on which the instance is visible has ultimate
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
69 * control over the appearance and behavior of decorations.
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
70 * For example, some window managers only support resizable
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
71 * windows and will always assume the RESIZE style, even if
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
72 * it is not set.
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
73 * <dl>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
74 * <dt><b>Styles:</b></dt>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
75 * <dd>BORDER, CLOSE, MIN, MAX, NO_TRIM, RESIZE, TITLE, ON_TOP, TOOL</dd>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
76 * <dt><b>Events:</b></dt>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
77 * <dd>(none)</dd>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
78 * </dl>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
79 * Class <code>SWT</code> provides two "convenience constants"
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
80 * for the most commonly required style combinations:
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
81 * <dl>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
82 * <dt><code>SHELL_TRIM</code></dt>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
83 * <dd>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
84 * the result of combining the constants which are required
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
85 * to produce a typical application top level shell: (that
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
86 * is, <code>CLOSE | TITLE | MIN | MAX | RESIZE</code>)
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
87 * </dd>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
88 * <dt><code>DIALOG_TRIM</code></dt>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
89 * <dd>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
90 * the result of combining the constants which are required
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
91 * to produce a typical application dialog shell: (that
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
92 * is, <code>TITLE | CLOSE | BORDER</code>)
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
93 * </dd>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
94 * </dl>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
95 * <p>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
96 * IMPORTANT: This class is intended to be subclassed <em>only</em>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
97 * within the SWT implementation.
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
98 * </p>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
99 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
100 * @see #getMinimized
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
101 * @see #getMaximized
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
102 * @see Shell
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
103 * @see SWT
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
104 */
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
105 public class Decorations : Canvas {
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
106 char[] text;
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
107 Image image;
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
108 Image [] images;
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
109 bool minimized, maximized;
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
110 Menu menuBar;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
111 Menu [] menus;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
112 Control savedFocus;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
113 Button defaultButton, saveDefault;
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
114 GtkAccelGroup* accelGroup;
38
6e625fa1612d Shell, some code left
Frank Benoit <benoit@tionex.de>
parents: 37
diff changeset
115 GtkWidget* vboxHandle;
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
116
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
117 this () {
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
118 /* Do nothing */
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
119 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
120
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
121 /**
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
122 * Constructs a new instance of this class given its parent
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
123 * and a style value describing its behavior and appearance.
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
124 * <p>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
125 * The style value is either one of the style constants defined in
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
126 * class <code>SWT</code> which is applicable to instances of this
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
127 * class, or must be built by <em>bitwise OR</em>'ing together
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
128 * (that is, using the <code>int</code> "|" operator) two or more
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
129 * of those <code>SWT</code> style constants. The class description
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
130 * lists the style constants that are applicable to the class.
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
131 * Style bits are also inherited from superclasses.
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
132 * </p>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
133 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
134 * @param parent a composite control which will be the parent of the new instance (cannot be null)
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
135 * @param style the style of control to construct
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
136 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
137 * @exception IllegalArgumentException <ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
138 * <li>ERROR_NULL_ARGUMENT - if the parent is null</li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
139 * </ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
140 * @exception SWTException <ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
141 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
142 * <li>ERROR_INVALID_SUBCLASS - if this class is not an allowed subclass</li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
143 * </ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
144 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
145 * @see SWT#BORDER
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
146 * @see SWT#CLOSE
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
147 * @see SWT#MIN
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
148 * @see SWT#MAX
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
149 * @see SWT#RESIZE
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
150 * @see SWT#TITLE
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
151 * @see SWT#NO_TRIM
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
152 * @see SWT#SHELL_TRIM
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
153 * @see SWT#DIALOG_TRIM
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
154 * @see SWT#ON_TOP
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
155 * @see SWT#TOOL
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
156 * @see Widget#checkSubclass
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
157 * @see Widget#getStyle
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
158 */
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
159 public this (Composite parent, int style) {
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
160 super (parent, checkStyle (style));
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
161 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
162
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
163 static int checkStyle (int style) {
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
164 if ((style & SWT.NO_TRIM) !is 0) {
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
165 style &= ~(SWT.CLOSE | SWT.TITLE | SWT.MIN | SWT.MAX | SWT.RESIZE | SWT.BORDER);
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
166 }
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
167 if ((style & (SWT.MENU | SWT.MIN | SWT.MAX | SWT.CLOSE)) !is 0) {
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
168 style |= SWT.TITLE;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
169 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
170 return style;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
171 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
172
58
a5c274fa5af9 extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents: 38
diff changeset
173 override protected void checkSubclass () {
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
174 if (!isValidSubclass ()) error (SWT.ERROR_INVALID_SUBCLASS);
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
175 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
176
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
177 void _setImages (Image [] images) {
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
178 if (images !is null && images.length > 1) {
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
179 Image [] bestImages = new Image [images.length];
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
180 System.arraycopy (images, 0, bestImages, 0, images.length);
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
181 sort (bestImages);
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
182 images = bestImages;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
183 }
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
184 GList* pixbufs;
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
185 if (images !is null) {
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
186 for (int i = 0; i < images.length; i++) {
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
187 Image image = images [i];
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
188 auto pixbuf = Display.createPixbuf (image);
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
189 pixbufs = OS.g_list_append (pixbufs, pixbuf);
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
190 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
191 }
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
192 OS.gtk_window_set_icon_list (cast(GtkWindow*)topHandle (), pixbufs);
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
193 GList* data;
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
194 auto temp = pixbufs;
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
195 while (temp !is null) {
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
196 data = temp;
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
197 OS.g_object_unref (data);
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
198 temp = cast(GList*)OS.g_list_next (temp);
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
199 }
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
200 if (pixbufs !is null) OS.g_list_free (pixbufs);
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
201 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
202
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
203 void addMenu (Menu menu) {
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
204 if (menus is null) menus = new Menu [4];
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
205 for (int i=0; i<menus.length; i++) {
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
206 if (menus [i] is null) {
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
207 menus [i] = menu;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
208 return;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
209 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
210 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
211 Menu [] newMenus = new Menu [menus.length + 4];
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
212 newMenus [menus.length] = menu;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
213 System.arraycopy (menus, 0, newMenus, 0, menus.length);
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
214 menus = newMenus;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
215 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
216
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
217 int compare (ImageData data1, ImageData data2) {
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
218 if (data1.width is data2.width && data1.height is data2.height) {
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
219 int transparent1 = data1.getTransparencyType ();
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
220 int transparent2 = data2.getTransparencyType ();
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
221 if (transparent1 is SWT.TRANSPARENCY_ALPHA) return -1;
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
222 if (transparent2 is SWT.TRANSPARENCY_ALPHA) return 1;
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
223 if (transparent1 is SWT.TRANSPARENCY_MASK) return -1;
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
224 if (transparent2 is SWT.TRANSPARENCY_MASK) return 1;
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
225 if (transparent1 is SWT.TRANSPARENCY_PIXEL) return -1;
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
226 if (transparent2 is SWT.TRANSPARENCY_PIXEL) return 1;
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
227 return 0;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
228 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
229 return data1.width > data2.width || data1.height > data2.height ? -1 : 1;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
230 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
231
58
a5c274fa5af9 extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents: 38
diff changeset
232 override Control computeTabGroup () {
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
233 return this;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
234 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
235
58
a5c274fa5af9 extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents: 38
diff changeset
236 override Control computeTabRoot () {
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
237 return this;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
238 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
239
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
240 void createAccelGroup () {
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
241 if (accelGroup !is null) return;
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
242 accelGroup = OS.gtk_accel_group_new ();
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
243 if (accelGroup is null) SWT.error (SWT.ERROR_NO_HANDLES);
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
244 //FIXME - what should we do for Decorations
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
245 auto shellHandle = topHandle ();
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
246 OS.gtk_window_add_accel_group (cast(GtkWindow*)shellHandle, accelGroup);
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
247 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
248
58
a5c274fa5af9 extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents: 38
diff changeset
249 override void createWidget (int index) {
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
250 super.createWidget (index);
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
251 text = "";
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
252 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
253
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
254 void destroyAccelGroup () {
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
255 if (accelGroup is null) return;
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
256 auto shellHandle = topHandle ();
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
257 OS.gtk_window_remove_accel_group (cast(GtkWindow*)shellHandle, accelGroup);
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
258 //TEMPORARY CODE
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
259 // OS.g_object_unref (accelGroup);
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
260 accelGroup = null;
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
261 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
262
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
263 void fixAccelGroup () {
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
264 if (menuBar is null) return;
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
265 destroyAccelGroup ();
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
266 createAccelGroup ();
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
267 menuBar.addAccelerators (accelGroup);
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
268 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
269
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
270 void fixDecorations (Decorations newDecorations, Control control, Menu [] menus) {
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
271 if (this is newDecorations) return;
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
272 if (control is savedFocus) savedFocus = null;
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
273 if (control is defaultButton) defaultButton = null;
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
274 if (control is saveDefault) saveDefault = null;
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
275 if (menus is null) return;
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
276 Menu menu = control.menu;
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
277 if (menu !is null) {
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
278 int index = 0;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
279 while (index <menus.length) {
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
280 if (menus [index] is menu) {
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
281 control.setMenu (null);
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
282 return;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
283 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
284 index++;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
285 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
286 menu.fixMenus (newDecorations);
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
287 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
288 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
289
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
290 /**
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
291 * Returns the receiver's default button if one had
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
292 * previously been set, otherwise returns null.
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
293 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
294 * @return the default button or null
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
295 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
296 * @exception SWTException <ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
297 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
298 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
299 * </ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
300 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
301 * @see #setDefaultButton(Button)
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
302 */
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
303 public Button getDefaultButton () {
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
304 checkWidget();
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
305 return defaultButton !is null ? defaultButton : saveDefault;
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
306 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
307
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
308 /**
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
309 * Returns the receiver's image if it had previously been
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
310 * set using <code>setImage()</code>. The image is typically
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
311 * displayed by the window manager when the instance is
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
312 * marked as iconified, and may also be displayed somewhere
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
313 * in the trim when the instance is in normal or maximized
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
314 * states.
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
315 * <p>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
316 * Note: This method will return null if called before
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
317 * <code>setImage()</code> is called. It does not provide
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
318 * access to a window manager provided, "default" image
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
319 * even if one exists.
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
320 * </p>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
321 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
322 * @return the image
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
323 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
324 * @exception SWTException <ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
325 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
326 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
327 * </ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
328 */
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
329 public Image getImage () {
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
330 checkWidget ();
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
331 return image;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
332 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
333
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
334 /**
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
335 * Returns the receiver's images if they had previously been
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
336 * set using <code>setImages()</code>. Images are typically
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
337 * displayed by the window manager when the instance is
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
338 * marked as iconified, and may also be displayed somewhere
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
339 * in the trim when the instance is in normal or maximized
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
340 * states. Depending where the icon is displayed, the platform
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
341 * chooses the icon with the "best" attributes. It is expected
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
342 * that the array will contain the same icon rendered at different
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
343 * sizes, with different depth and transparency attributes.
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
344 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
345 * <p>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
346 * Note: This method will return an empty array if called before
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
347 * <code>setImages()</code> is called. It does not provide
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
348 * access to a window manager provided, "default" image
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
349 * even if one exists.
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
350 * </p>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
351 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
352 * @return the images
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
353 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
354 * @exception SWTException <ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
355 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
356 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
357 * </ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
358 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
359 * @since 3.0
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
360 */
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
361 public Image [] getImages () {
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
362 checkWidget ();
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
363 if (images is null) return new Image [0];
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
364 Image [] result = new Image [images.length];
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
365 System.arraycopy (images, 0, result, 0, images.length);
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
366 return result;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
367 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
368
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
369 /**
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
370 * Returns <code>true</code> if the receiver is currently
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
371 * maximized, and false otherwise.
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
372 * <p>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
373 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
374 * @return the maximized state
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
375 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
376 * @exception SWTException <ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
377 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
378 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
379 * </ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
380 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
381 * @see #setMaximized
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
382 */
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
383 public bool getMaximized () {
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
384 checkWidget();
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
385 return maximized;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
386 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
387
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
388 /**
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
389 * Returns the receiver's menu bar if one had previously
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
390 * been set, otherwise returns null.
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
391 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
392 * @return the menu bar or null
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
393 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
394 * @exception SWTException <ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
395 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
396 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
397 * </ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
398 */
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
399 public Menu getMenuBar () {
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
400 checkWidget();
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
401 return menuBar;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
402 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
403
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
404 /**
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
405 * Returns <code>true</code> if the receiver is currently
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
406 * minimized, and false otherwise.
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
407 * <p>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
408 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
409 * @return the minimized state
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
410 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
411 * @exception SWTException <ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
412 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
413 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
414 * </ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
415 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
416 * @see #setMinimized
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
417 */
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
418 public bool getMinimized () {
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
419 checkWidget();
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
420 return minimized;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
421 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
422
58
a5c274fa5af9 extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents: 38
diff changeset
423 override char[] getNameText () {
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
424 return getText ();
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
425 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
426
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
427 /**
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
428 * Returns the receiver's text, which is the string that the
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
429 * window manager will typically display as the receiver's
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
430 * <em>title</em>. If the text has not previously been set,
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
431 * returns an empty string.
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
432 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
433 * @return the text
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
434 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
435 * @exception SWTException <ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
436 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
437 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
438 * </ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
439 */
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
440 public char[] getText () {
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
441 checkWidget();
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
442 return text;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
443 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
444
58
a5c274fa5af9 extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents: 38
diff changeset
445 override public bool isReparentable () {
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
446 checkWidget ();
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
447 return false;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
448 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
449
58
a5c274fa5af9 extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents: 38
diff changeset
450 override bool isTabGroup () {
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
451 return true;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
452 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
453
58
a5c274fa5af9 extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents: 38
diff changeset
454 override bool isTabItem () {
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
455 return false;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
456 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
457
58
a5c274fa5af9 extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents: 38
diff changeset
458 override Decorations menuShell () {
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
459 return this;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
460 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
461
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
462 void removeMenu (Menu menu) {
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
463 if (menus is null) return;
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
464 for (int i=0; i<menus.length; i++) {
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
465 if (menus [i] is menu) {
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
466 menus [i] = null;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
467 return;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
468 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
469 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
470 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
471
58
a5c274fa5af9 extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents: 38
diff changeset
472 override void releaseChildren (bool destroy) {
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
473 if (menuBar !is null) {
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
474 menuBar.release (false);
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
475 menuBar = null;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
476 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
477 super.releaseChildren (destroy);
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
478 if (menus !is null) {
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
479 for (int i=0; i<menus.length; i++) {
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
480 Menu menu = menus [i];
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
481 if (menu !is null && !menu.isDisposed ()) {
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
482 menu.dispose ();
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
483 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
484 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
485 menus = null;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
486 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
487 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
488
58
a5c274fa5af9 extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents: 38
diff changeset
489 override void releaseHandle () {
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
490 super.releaseHandle ();
38
6e625fa1612d Shell, some code left
Frank Benoit <benoit@tionex.de>
parents: 37
diff changeset
491 vboxHandle = null;
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
492 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
493
58
a5c274fa5af9 extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents: 38
diff changeset
494 override void releaseWidget () {
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
495 super.releaseWidget ();
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
496 image = null;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
497 images = null;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
498 savedFocus = null;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
499 defaultButton = saveDefault = null;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
500 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
501
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
502 bool restoreFocus () {
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
503 if (savedFocus !is null && savedFocus.isDisposed ()) savedFocus = null;
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
504 bool restored = savedFocus !is null && savedFocus.setFocus ();
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
505 savedFocus = null;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
506 /*
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
507 * This code is intentionally commented. When no widget
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
508 * has been given focus, some platforms give focus to the
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
509 * default button. Motif doesn't do this.
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
510 */
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
511 // if (restored) return true;
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
512 // if (defaultButton !is null && !defaultButton.isDisposed ()) {
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
513 // if (defaultButton.setFocus ()) return true;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
514 // }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
515 // return false;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
516 return restored;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
517 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
518
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
519 /**
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
520 * If the argument is not null, sets the receiver's default
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
521 * button to the argument, and if the argument is null, sets
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
522 * the receiver's default button to the first button which
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
523 * was set as the receiver's default button (called the
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
524 * <em>saved default button</em>). If no default button had
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
525 * previously been set, or the saved default button was
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
526 * disposed, the receiver's default button will be set to
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
527 * null.
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
528 * <p>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
529 * The default button is the button that is selected when
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
530 * the receiver is active and the user presses ENTER.
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
531 * </p>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
532 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
533 * @param button the new default button
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
534 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
535 * @exception IllegalArgumentException <ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
536 * <li>ERROR_INVALID_ARGUMENT - if the button has been disposed</li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
537 * <li>ERROR_INVALID_PARENT - if the control is not in the same widget tree</li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
538 * </ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
539 * @exception SWTException <ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
540 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
541 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
542 * </ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
543 */
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
544 public void setDefaultButton (Button button) {
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
545 checkWidget();
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
546 GtkWidget* buttonHandle;
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
547 if (button !is null) {
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
548 if (button.isDisposed ()) error (SWT.ERROR_INVALID_ARGUMENT);
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
549 if (button.menuShell () !is this) error (SWT.ERROR_INVALID_PARENT);
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
550 buttonHandle = button.handle;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
551 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
552 saveDefault = defaultButton = button;
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
553 OS.gtk_window_set_default (cast(GtkWindow*)topHandle (), buttonHandle);
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
554 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
555
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
556 /**
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
557 * Sets the receiver's image to the argument, which may
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
558 * be null. The image is typically displayed by the window
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
559 * manager when the instance is marked as iconified, and
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
560 * may also be displayed somewhere in the trim when the
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
561 * instance is in normal or maximized states.
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
562 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
563 * @param image the new image (or null)
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
564 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
565 * @exception IllegalArgumentException <ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
566 * <li>ERROR_INVALID_ARGUMENT - if the image has been disposed</li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
567 * </ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
568 * @exception SWTException <ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
569 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
570 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
571 * </ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
572 */
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
573 public void setImage (Image image) {
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
574 checkWidget ();
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
575 this.image = image;
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
576 _setImages (image !is null ? [image] : null);
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
577 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
578
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
579 /**
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
580 * Sets the receiver's images to the argument, which may
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
581 * be an empty array. Images are typically displayed by the
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
582 * window manager when the instance is marked as iconified,
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
583 * and may also be displayed somewhere in the trim when the
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
584 * instance is in normal or maximized states. Depending where
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
585 * the icon is displayed, the platform chooses the icon with
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
586 * the "best" attributes. It is expected that the array will
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
587 * contain the same icon rendered at different sizes, with
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
588 * different depth and transparency attributes.
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
589 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
590 * @param images the new image array
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
591 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
592 * @exception IllegalArgumentException <ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
593 * <li>ERROR_NULL_ARGUMENT - if the array of images is null</li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
594 * <li>ERROR_INVALID_ARGUMENT - if one of the images is null or has been disposed</li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
595 * </ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
596 * @exception SWTException <ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
597 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
598 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
599 * </ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
600 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
601 * @since 3.0
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
602 */
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
603 public void setImages (Image [] images) {
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
604 checkWidget ();
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
605 if (images is null) error (SWT.ERROR_INVALID_ARGUMENT);
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
606 for (int i = 0; i < images.length; i++) {
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
607 if (images [i] is null || images [i].isDisposed ()) error (SWT.ERROR_INVALID_ARGUMENT);
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
608 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
609 this.images = images;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
610 _setImages (images);
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
611 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
612
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
613 /**
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
614 * Sets the maximized state of the receiver.
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
615 * If the argument is <code>true</code> causes the receiver
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
616 * to switch to the maximized state, and if the argument is
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
617 * <code>false</code> and the receiver was previously maximized,
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
618 * causes the receiver to switch back to either the minimized
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
619 * or normal states.
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
620 * <p>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
621 * Note: The result of intermixing calls to <code>setMaximized(true)</code>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
622 * and <code>setMinimized(true)</code> will vary by platform. Typically,
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
623 * the behavior will match the platform user's expectations, but not
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
624 * always. This should be avoided if possible.
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
625 * </p>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
626 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
627 * @param maximized the new maximized state
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
628 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
629 * @exception SWTException <ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
630 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
631 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
632 * </ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
633 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
634 * @see #setMinimized
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
635 */
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
636 public void setMaximized (bool maximized) {
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
637 checkWidget();
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
638 this.maximized = maximized;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
639 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
640
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
641 /**
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
642 * Sets the receiver's menu bar to the argument, which
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
643 * may be null.
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
644 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
645 * @param menu the new menu bar
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
646 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
647 * @exception IllegalArgumentException <ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
648 * <li>ERROR_INVALID_ARGUMENT - if the menu has been disposed</li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
649 * <li>ERROR_INVALID_PARENT - if the menu is not in the same widget tree</li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
650 * </ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
651 * @exception SWTException <ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
652 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
653 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
654 * </ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
655 */
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
656 public void setMenuBar (Menu menu) {
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
657 checkWidget();
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
658 if (menuBar is menu) return;
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
659 if (menu !is null) {
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
660 if ((menu.style & SWT.BAR) is 0) error (SWT.ERROR_MENU_NOT_BAR);
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
661 if (menu.parent !is this) error (SWT.ERROR_INVALID_PARENT);
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
662 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
663 menuBar = menu;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
664 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
665
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
666 /**
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
667 * Sets the minimized stated of the receiver.
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
668 * If the argument is <code>true</code> causes the receiver
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
669 * to switch to the minimized state, and if the argument is
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
670 * <code>false</code> and the receiver was previously minimized,
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
671 * causes the receiver to switch back to either the maximized
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
672 * or normal states.
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
673 * <p>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
674 * Note: The result of intermixing calls to <code>setMaximized(true)</code>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
675 * and <code>setMinimized(true)</code> will vary by platform. Typically,
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
676 * the behavior will match the platform user's expectations, but not
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
677 * always. This should be avoided if possible.
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
678 * </p>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
679 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
680 * @param minimized the new maximized state
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
681 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
682 * @exception SWTException <ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
683 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
684 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
685 * </ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
686 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
687 * @see #setMaximized
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
688 */
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
689 public void setMinimized (bool minimized) {
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
690 checkWidget();
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
691 this.minimized = minimized;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
692 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
693
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
694 void setSavedFocus (Control control) {
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
695 if (this is control) return;
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
696 savedFocus = control;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
697 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
698
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
699 /**
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
700 * Sets the receiver's text, which is the string that the
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
701 * window manager will typically display as the receiver's
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
702 * <em>title</em>, to the argument, which must not be null.
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
703 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
704 * @param string the new text
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
705 *
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
706 * @exception IllegalArgumentException <ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
707 * <li>ERROR_NULL_ARGUMENT - if the text is null</li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
708 * </ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
709 * @exception SWTException <ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
710 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
711 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
712 * </ul>
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
713 */
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
714 public void setText (char[] string) {
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
715 checkWidget();
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
716 if (string is null) error (SWT.ERROR_NULL_ARGUMENT);
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
717 text = string;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
718 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
719
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
720 void sort (Image [] images) {
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
721 /* Shell Sort from K&R, pg 108 */
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
722 int length = images.length;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
723 if (length <= 1) return;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
724 ImageData [] datas = new ImageData [length];
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
725 for (int i = 0; i < length; i++) {
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
726 datas [i] = images [i].getImageData ();
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
727 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
728 for (int gap=length/2; gap>0; gap/=2) {
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
729 for (int i=gap; i<length; i++) {
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
730 for (int j=i-gap; j>=0; j-=gap) {
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
731 if (compare (datas [j], datas [j + gap]) >= 0) {
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
732 Image swap = images [j];
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
733 images [j] = images [j + gap];
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
734 images [j + gap] = swap;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
735 ImageData swapData = datas [j];
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
736 datas [j] = datas [j + gap];
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
737 datas [j + gap] = swapData;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
738 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
739 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
740 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
741 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
742 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
743
58
a5c274fa5af9 extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents: 38
diff changeset
744 override bool traverseItem (bool next) {
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
745 return false;
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
746 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
747
58
a5c274fa5af9 extended helloworld crashing
Frank Benoit <benoit@tionex.de>
parents: 38
diff changeset
748 override bool traverseReturn () {
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
749 Button button = defaultButton !is null ? defaultButton: saveDefault;
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
750 if (button is null || button.isDisposed ()) return false;
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
751 /*
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
752 * Bug in GTK. When a default button that is disabled is
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
753 * activated using the Enter key, GTK GP's. The fix is to
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
754 * detect this case and stop GTK from processing the Enter
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
755 * key.
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
756 */
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
757 if (!button.isVisible () || !button.isEnabled ()) return true;
37
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
758 auto shellHandle = _getShell ().topHandle ();
c86fc3d50cfa Decorations
Frank Benoit <benoit@tionex.de>
parents: 30
diff changeset
759 return cast(bool)OS.gtk_window_activate_default (cast(GtkWindow*)shellHandle);
30
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
760 }
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
761
5e5d1c9cffdb ATK, Control
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
762 }