annotate dwt/widgets/ExpandItem.d @ 259:c0d810de7093

Update SWT 3.4M7 to 3.4
author Frank Benoit <benoit@tionex.de>
date Sun, 29 Jun 2008 14:33:38 +0200
parents 5a30aa9820f3
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
f2e04420fd6c reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents: 108
diff changeset
1 /*******************************************************************************
259
c0d810de7093 Update SWT 3.4M7 to 3.4
Frank Benoit <benoit@tionex.de>
parents: 255
diff changeset
2 * Copyright (c) 2000, 2008 IBM Corporation and others.
79
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3 * All rights reserved. This program and the accompanying materials
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4 * are made available under the terms of the Eclipse Public License v1.0
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
5 * which accompanies this distribution, and is available at
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
6 * http://www.eclipse.org/legal/epl-v10.html
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
7 *
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
8 * Contributors:
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
9 * IBM Corporation - initial API and implementation
108
0f12f6bb9739 author notice
Frank Benoit <benoit@tionex.de>
parents: 79
diff changeset
10 * Port to the D programming language:
0f12f6bb9739 author notice
Frank Benoit <benoit@tionex.de>
parents: 79
diff changeset
11 * Frank Benoit <benoit@tionex.de>
79
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
12 *******************************************************************************/
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
13 module dwt.widgets.ExpandItem;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
14
238
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 152
diff changeset
15 import dwt.dwthelper.utils;
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 152
diff changeset
16
79
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
17
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
18 import dwt.DWT;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
19 import dwt.DWTException;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
20 import dwt.graphics.GC;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
21 import dwt.graphics.Image;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
22 import dwt.graphics.Point;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
23 import dwt.graphics.Rectangle;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
24 import dwt.internal.Converter;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
25 import dwt.internal.gtk.OS;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
26 import dwt.widgets.Item;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
27 import dwt.widgets.Control;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
28 import dwt.widgets.Display;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
29 import dwt.widgets.ExpandBar;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
30 import dwt.widgets.ImageList;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31 import dwt.widgets.Event;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
33 import Math = tango.math.Math;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
34
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35 /**
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
36 * Instances of this class represent a selectable user interface object
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
37 * that represents a expandable item in a expand bar.
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
38 * <p>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
39 * <dl>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
40 * <dt><b>Styles:</b></dt>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
41 * <dd>(none)</dd>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
42 * <dt><b>Events:</b></dt>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
43 * <dd>(none)</dd>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
44 * </dl>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
45 * </p><p>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
46 * IMPORTANT: This class is <em>not</em> intended to be subclassed.
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
47 * </p>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
48 *
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
49 * @see ExpandBar
259
c0d810de7093 Update SWT 3.4M7 to 3.4
Frank Benoit <benoit@tionex.de>
parents: 255
diff changeset
50 * @see <a href="http://www.eclipse.org/swt/">Sample code and further information</a>
79
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
51 *
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
52 * @since 3.2
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
53 */
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
54 public class ExpandItem : Item {
150
f2e04420fd6c reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents: 108
diff changeset
55
f2e04420fd6c reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents: 108
diff changeset
56 alias Item.setForegroundColor setForegroundColor;
f2e04420fd6c reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents: 108
diff changeset
57 alias Item.windowProc windowProc;
f2e04420fd6c reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents: 108
diff changeset
58
79
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
59 ExpandBar parent;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
60 Control control;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
61 ImageList imageList;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
62 GtkWidget* clientHandle, boxHandle, labelHandle, imageHandle;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
63 bool expanded;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
64 int x, y, width, height;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
65 int imageHeight, imageWidth;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
66 static final int TEXT_INSET = 6;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
67 static final int BORDER = 1;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
68 static final int CHEVRON_SIZE = 24;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
69
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
70 /**
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
71 * Constructs a new instance of this class given its parent
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
72 * and a style value describing its behavior and appearance.
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
73 * <p>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
74 * The style value is either one of the style constants defined in
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
75 * class <code>DWT</code> which is applicable to instances of this
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
76 * class, or must be built by <em>bitwise OR</em>'ing together
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
77 * (that is, using the <code>int</code> "|" operator) two or more
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
78 * of those <code>DWT</code> style constants. The class description
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
79 * lists the style constants that are applicable to the class.
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
80 * Style bits are also inherited from superclasses.
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
81 * </p>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
82 *
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
83 * @param parent a composite control which will be the parent of the new instance (cannot be null)
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
84 * @param style the style of control to construct
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
85 *
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
86 * @exception IllegalArgumentException <ul>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
87 * <li>ERROR_NULL_ARGUMENT - if the parent is null</li>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
88 * </ul>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
89 * @exception DWTException <ul>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
90 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
91 * <li>ERROR_INVALID_SUBCLASS - if this class is not an allowed subclass</li>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
92 * </ul>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
93 *
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
94 * @see Widget#checkSubclass
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
95 * @see Widget#getStyle
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
96 */
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
97 public this (ExpandBar parent, int style) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
98 super (parent, style);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
99 this.parent = parent;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
100 createWidget (parent.getItemCount ());
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
101 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
102
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
103 /**
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
104 * Constructs a new instance of this class given its parent, a
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
105 * style value describing its behavior and appearance, and the index
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
106 * at which to place it in the items maintained by its parent.
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
107 * <p>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
108 * The style value is either one of the style constants defined in
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
109 * class <code>DWT</code> which is applicable to instances of this
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
110 * class, or must be built by <em>bitwise OR</em>'ing together
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
111 * (that is, using the <code>int</code> "|" operator) two or more
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
112 * of those <code>DWT</code> style constants. The class description
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
113 * lists the style constants that are applicable to the class.
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
114 * Style bits are also inherited from superclasses.
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
115 * </p>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
116 *
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
117 * @param parent a composite control which will be the parent of the new instance (cannot be null)
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
118 * @param style the style of control to construct
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
119 * @param index the zero-relative index to store the receiver in its parent
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
120 *
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
121 * @exception IllegalArgumentException <ul>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
122 * <li>ERROR_NULL_ARGUMENT - if the parent is null</li>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
123 * <li>ERROR_INVALID_RANGE - if the index is not between 0 and the number of elements in the parent (inclusive)</li>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
124 * </ul>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
125 * @exception DWTException <ul>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
126 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
127 * <li>ERROR_INVALID_SUBCLASS - if this class is not an allowed subclass</li>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
128 * </ul>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
129 *
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
130 * @see Widget#checkSubclass
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
131 * @see Widget#getStyle
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
132 */
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
133 public this (ExpandBar parent, int style, int index) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
134 super (parent, style);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
135 this.parent = parent;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
136 createWidget (index);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
137 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
138
152
17f8449522fd overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
139 protected override void checkSubclass () {
79
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
140 if (!isValidSubclass ()) error (DWT.ERROR_INVALID_SUBCLASS);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
141 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
142
152
17f8449522fd overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
143 override void createHandle (int index) {
79
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
144 if (OS.GTK_VERSION >= OS.buildVERSION (2, 4, 0)) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
145 state |= HANDLE;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
146 handle = OS.gtk_expander_new (null);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
147 if (handle is null) error (DWT.ERROR_NO_HANDLES);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
148 clientHandle = cast(GtkWidget*)OS.g_object_new (display.gtk_fixed_get_type (), null);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
149 if (clientHandle is null) error (DWT.ERROR_NO_HANDLES);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
150 OS.gtk_container_add (handle, clientHandle);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
151 boxHandle = cast(GtkWidget*)OS.gtk_hbox_new (false, 4);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
152 if (boxHandle is null) error (DWT.ERROR_NO_HANDLES);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
153 labelHandle = cast(GtkWidget*)OS.gtk_label_new (null);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
154 if (labelHandle is null) error (DWT.ERROR_NO_HANDLES);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
155 imageHandle = cast(GtkWidget*)OS.gtk_image_new ();
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
156 if (imageHandle is null) error (DWT.ERROR_NO_HANDLES);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
157 OS.gtk_container_add (boxHandle, imageHandle);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
158 OS.gtk_container_add (boxHandle, labelHandle);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
159 OS.gtk_expander_set_label_widget (handle, boxHandle);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
160 OS.GTK_WIDGET_SET_FLAGS (handle, OS.GTK_CAN_FOCUS);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
161 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
162 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
163
152
17f8449522fd overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
164 override void createWidget (int index) {
79
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
165 super.createWidget (index);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
166 showWidget (index);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
167 parent.createItem (this, style, index);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
168 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
169
152
17f8449522fd overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
170 override void deregister() {
79
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
171 super.deregister();
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
172 if (OS.GTK_VERSION >= OS.buildVERSION (2, 4, 0)) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
173 display.removeWidget (clientHandle);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
174 display.removeWidget (boxHandle);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
175 display.removeWidget (labelHandle);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
176 display.removeWidget (imageHandle);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
177 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
178 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
179
152
17f8449522fd overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
180 override void destroyWidget () {
79
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
181 parent.destroyItem (this);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
182 super.destroyWidget ();
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
183 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
184
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
185 void drawChevron (GC gc, int x, int y) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
186 int [] polyline1, polyline2;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
187 if (expanded) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
188 int px = x + 4 + 5;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
189 int py = y + 4 + 7;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
190 polyline1 = [
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
191 px,py, px+1,py, px+1,py-1, px+2,py-1, px+2,py-2, px+3,py-2, px+3,py-3,
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
192 px+3,py-2, px+4,py-2, px+4,py-1, px+5,py-1, px+5,py, px+6,py];
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
193 py += 4;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
194 polyline2 = [
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
195 px,py, px+1,py, px+1,py-1, px+2,py-1, px+2,py-2, px+3,py-2, px+3,py-3,
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
196 px+3,py-2, px+4,py-2, px+4,py-1, px+5,py-1, px+5,py, px+6,py];
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
197 } else {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
198 int px = x + 4 + 5;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
199 int py = y + 4 + 4;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
200 polyline1 = [
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
201 px,py, px+1,py, px+1,py+1, px+2,py+1, px+2,py+2, px+3,py+2, px+3,py+3,
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
202 px+3,py+2, px+4,py+2, px+4,py+1, px+5,py+1, px+5,py, px+6,py];
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
203 py += 4;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
204 polyline2 = [
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
205 px,py, px+1,py, px+1,py+1, px+2,py+1, px+2,py+2, px+3,py+2, px+3,py+3,
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
206 px+3,py+2, px+4,py+2, px+4,py+1, px+5,py+1, px+5,py, px+6,py];
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
207 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
208 gc.setForeground (display.getSystemColor (DWT.COLOR_TITLE_FOREGROUND));
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
209 gc.drawPolyline (polyline1);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
210 gc.drawPolyline (polyline2);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
211 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
212
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
213 void drawItem (GC gc, bool drawFocus) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
214 int headerHeight = parent.getBandHeight ();
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
215 Display display = getDisplay ();
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
216 gc.setForeground (display.getSystemColor (DWT.COLOR_TITLE_BACKGROUND));
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
217 gc.setBackground (display.getSystemColor (DWT.COLOR_TITLE_BACKGROUND_GRADIENT));
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
218 gc.fillGradientRectangle (x, y, width, headerHeight, true);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
219 if (expanded) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
220 gc.setForeground (display.getSystemColor (DWT.COLOR_TITLE_BACKGROUND_GRADIENT));
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
221 gc.drawLine (x, y + headerHeight, x, y + headerHeight + height - 1);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
222 gc.drawLine (x, y + headerHeight + height - 1, x + width - 1, y + headerHeight + height - 1);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
223 gc.drawLine (x + width - 1, y + headerHeight + height - 1, x + width - 1, y + headerHeight);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
224 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
225 int drawX = x;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
226 if (image !is null) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
227 drawX += ExpandItem.TEXT_INSET;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
228 if (imageHeight > headerHeight) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
229 gc.drawImage (image, drawX, y + headerHeight - imageHeight);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
230 } else {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
231 gc.drawImage (image, drawX, y + (headerHeight - imageHeight) / 2);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
232 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
233 drawX += imageWidth;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
234 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
235 if (text.length > 0) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
236 drawX += ExpandItem.TEXT_INSET;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
237 Point size = gc.stringExtent (text);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
238 gc.setForeground (parent.getForeground ());
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
239 gc.drawString (text, drawX, y + (headerHeight - size.y) / 2, true);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
240 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
241 int chevronSize = ExpandItem.CHEVRON_SIZE;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
242 drawChevron (gc, x + width - chevronSize, y + (headerHeight - chevronSize) / 2);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
243 if (drawFocus) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
244 gc.drawFocus (x + 1, y + 1, width - 2, headerHeight - 2);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
245 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
246 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
247
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
248 /**
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
249 * Returns the control that is shown when the item is expanded.
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
250 * If no control has been set, return <code>null</code>.
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
251 *
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
252 * @return the control
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
253 *
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
254 * @exception DWTException <ul>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
255 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
256 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
257 * </ul>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
258 */
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
259 public Control getControl () {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
260 checkWidget ();
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
261 return control;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
262 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
263
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
264 /**
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
265 * Returns <code>true</code> if the receiver is expanded,
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
266 * and false otherwise.
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
267 *
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
268 * @return the expanded state
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
269 *
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
270 * @exception DWTException <ul>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
271 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
272 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
273 * </ul>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
274 */
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
275 public bool getExpanded () {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
276 checkWidget ();
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
277 return expanded;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
278 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
279
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
280 /**
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
281 * Returns the height of the receiver's header
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
282 *
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
283 * @return the height of the header
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
284 *
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
285 * @exception DWTException <ul>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
286 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
287 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
288 * </ul>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
289 */
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
290 public int getHeaderHeight () {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
291 checkWidget ();
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
292 if (OS.GTK_VERSION >= OS.buildVERSION (2, 4, 0)) {
240
ce446666f5a2 Update to SWT 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 238
diff changeset
293 return OS.GTK_WIDGET_HEIGHT (handle) - (expanded ? height : 0);
79
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
294 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
295 return Math.max (parent.getBandHeight (), imageHeight);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
296 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
297
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
298 /**
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
299 * Gets the height of the receiver.
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
300 *
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
301 * @return the height
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
302 *
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
303 * @exception DWTException <ul>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
304 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
305 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
306 * </ul>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
307 */
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
308 public int getHeight () {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
309 checkWidget ();
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
310 return height;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
311 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
312
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
313 /**
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
314 * Returns the receiver's parent, which must be a <code>ExpandBar</code>.
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
315 *
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
316 * @return the receiver's parent
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
317 *
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
318 * @exception DWTException <ul>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
319 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
320 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
321 * </ul>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
322 */
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
323 public ExpandBar getParent () {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
324 checkWidget();
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
325 return parent;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
326 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
327
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
328 int getPreferredWidth (GC gc) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
329 int width = ExpandItem.TEXT_INSET * 2 + ExpandItem.CHEVRON_SIZE;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
330 if (image !is null) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
331 width += ExpandItem.TEXT_INSET + imageWidth;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
332 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
333 if (text.length > 0) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
334 width += gc.stringExtent (text).x;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
335 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
336 return width;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
337 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
338
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
339 override int /*long*/ gtk_activate (GtkWidget* widget) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
340 Event event = new Event ();
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
341 event.item = this;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
342 int type = OS.gtk_expander_get_expanded (handle) ? DWT.Collapse : DWT.Expand;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
343 parent.sendEvent (type, event);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
344 return 0;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
345 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
346
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
347 override int /*long*/ gtk_button_press_event (GtkWidget* widget, GdkEventButton* event) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
348 setFocus ();
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
349 return 0;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
350 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
351
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
352 override int /*long*/ gtk_focus_out_event (GtkWidget* widget, GdkEventFocus* event) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
353 OS.GTK_WIDGET_UNSET_FLAGS (handle, OS.GTK_CAN_FOCUS);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
354 parent.lastFocus = this;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
355 return 0;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
356 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
357
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
358 override int /*long*/ gtk_size_allocate (GtkWidget* widget, int /*long*/ allocation) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
359 parent.layoutItems (0, false);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
360 return 0;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
361 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
362
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
363 override int /*long*/ gtk_enter_notify_event (GtkWidget* widget, GdkEventCrossing* event) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
364 parent.gtk_enter_notify_event(widget, event);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
365 return 0;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
366 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
367
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
368 bool hasFocus () {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
369 return OS.GTK_WIDGET_HAS_FOCUS (handle);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
370 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
371
152
17f8449522fd overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
372 override void hookEvents () {
79
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
373 super.hookEvents ();
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
374 if (OS.GTK_VERSION >= OS.buildVERSION (2, 4, 0)) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
375 OS.g_signal_connect_closure (handle, OS.activate.ptr, display.closures [ACTIVATE], false);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
376 OS.g_signal_connect_closure (handle, OS.activate.ptr, display.closures [ACTIVATE_INVERSE], true);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
377 OS.g_signal_connect_closure_by_id (handle, display.signalIds [BUTTON_PRESS_EVENT], 0, display.closures [BUTTON_PRESS_EVENT], false);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
378 OS.g_signal_connect_closure_by_id (handle, display.signalIds [FOCUS_OUT_EVENT], 0, display.closures [FOCUS_OUT_EVENT], false);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
379 OS.g_signal_connect_closure (clientHandle, OS.size_allocate.ptr, display.closures [SIZE_ALLOCATE], true);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
380 OS.g_signal_connect_closure_by_id (handle, display.signalIds [ENTER_NOTIFY_EVENT], 0, display.closures [ENTER_NOTIFY_EVENT], false);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
381 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
382 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
383
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
384 void redraw () {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
385 if (OS.GTK_VERSION < OS.buildVERSION (2, 4, 0)) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
386 int headerHeight = parent.getBandHeight ();
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
387 if (imageHeight > headerHeight) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
388 parent.redraw (x + ExpandItem.TEXT_INSET, y + headerHeight - imageHeight, imageWidth, imageHeight, false);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
389 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
390 parent.redraw (x, y, width, headerHeight + height, false);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
391 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
392 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
393
152
17f8449522fd overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
394 override void register () {
79
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
395 super.register ();
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
396 if (OS.GTK_VERSION >= OS.buildVERSION (2, 4, 0)) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
397 display.addWidget (clientHandle, this);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
398 display.addWidget (boxHandle, this);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
399 display.addWidget (labelHandle, this);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
400 display.addWidget (imageHandle, this);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
401 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
402 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
403
152
17f8449522fd overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
404 override void releaseHandle () {
79
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
405 super.releaseHandle ();
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
406 clientHandle = boxHandle = labelHandle = imageHandle = null;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
407 parent = null;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
408 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
409
152
17f8449522fd overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
410 override void releaseWidget () {
79
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
411 super.releaseWidget ();
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
412 if (imageList !is null) imageList.dispose ();
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
413 if (OS.GTK_VERSION >= OS.buildVERSION (2, 4, 0)) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
414 if (parent.lastFocus is this) parent.lastFocus = null;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
415 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
416 imageList = null;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
417 control = null;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
418 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
419
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
420 void resizeControl (int yScroll) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
421 if (control !is null && !control.isDisposed ()) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
422 bool visible =cast(bool) OS.gtk_expander_get_expanded (handle);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
423 if (visible) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
424 int x = OS.GTK_WIDGET_X (clientHandle);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
425 int y = OS.GTK_WIDGET_Y (clientHandle);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
426 if (x !is -1 && y !is -1) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
427 int width = OS.GTK_WIDGET_WIDTH (clientHandle);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
428 int height = OS.GTK_WIDGET_HEIGHT (clientHandle);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
429 int property;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
430 OS.gtk_widget_style_get1 (handle, OS.focus_line_width.ptr, &property);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
431 y += property * 2;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
432 height -= property * 2;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
433 control.setBounds (x, y - yScroll, width, Math.max (0, height), true, true);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
434 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
435 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
436 control.setVisible (visible);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
437 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
438 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
439
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
440 void setBounds (int x, int y, int width, int height, bool move, bool size) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
441 redraw ();
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
442 int headerHeight = parent.getBandHeight ();
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
443 if (move) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
444 if (imageHeight > headerHeight) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
445 y += (imageHeight - headerHeight);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
446 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
447 this.x = x;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
448 this.y = y;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
449 redraw ();
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
450 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
451 if (size) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
452 this.width = width;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
453 this.height = height;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
454 redraw ();
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
455 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
456 if (control !is null && !control.isDisposed ()) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
457 if (move) control.setLocation (x + BORDER, y + headerHeight);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
458 if (size) control.setSize (Math.max (0, width - 2 * BORDER), Math.max (0, height - BORDER));
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
459 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
460 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
461
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
462 /**
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
463 * Sets the control that is shown when the item is expanded.
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
464 *
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
465 * @param control the new control (or null)
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
466 *
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
467 * @exception IllegalArgumentException <ul>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
468 * <li>ERROR_INVALID_ARGUMENT - if the control has been disposed</li>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
469 * <li>ERROR_INVALID_PARENT - if the control is not in the same widget tree</li>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
470 * </ul>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
471 * @exception DWTException <ul>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
472 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
473 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
474 * </ul>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
475 */
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
476 public void setControl (Control control) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
477 checkWidget ();
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
478 if (control !is null) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
479 if (control.isDisposed ()) error (DWT.ERROR_INVALID_ARGUMENT);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
480 if (control.parent !is parent) error (DWT.ERROR_INVALID_PARENT);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
481 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
482 if (this.control is control) return;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
483 this.control = control;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
484 if (control !is null) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
485 control.setVisible (expanded);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
486 if (OS.GTK_VERSION < OS.buildVERSION (2, 4, 0)) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
487 int headerHeight = parent.getBandHeight ();
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
488 control.setBounds (x + BORDER, y + headerHeight, Math.max (0, width - 2 * BORDER), Math.max (0, height - BORDER));
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
489 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
490 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
491 if (OS.GTK_VERSION >= OS.buildVERSION (2, 4, 0)) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
492 parent.layoutItems (0, true);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
493 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
494 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
495
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
496 /**
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
497 * Sets the expanded state of the receiver.
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
498 *
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
499 * @param expanded the new expanded state
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
500 *
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
501 * @exception DWTException <ul>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
502 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
503 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
504 * </ul>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
505 */
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
506 public void setExpanded (bool expanded) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
507 checkWidget ();
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
508 this.expanded = expanded;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
509 if (OS.GTK_VERSION >= OS.buildVERSION (2, 4, 0)) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
510 OS.gtk_expander_set_expanded (handle, expanded);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
511 parent.layoutItems (0, true);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
512 } else {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
513 parent.showItem (this);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
514 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
515 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
516
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
517 bool setFocus () {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
518 if (!OS.gtk_widget_get_child_visible (handle)) return false;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
519 OS.GTK_WIDGET_SET_FLAGS (handle, OS.GTK_CAN_FOCUS);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
520 OS.gtk_widget_grab_focus (handle);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
521 bool result = cast(bool)OS.gtk_widget_is_focus (handle);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
522 if (!result) OS.GTK_WIDGET_UNSET_FLAGS (handle, OS.GTK_CAN_FOCUS);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
523 return result;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
524 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
525
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
526 void setFontDescription (PangoFontDescription* font) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
527 OS.gtk_widget_modify_font (handle, font);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
528 if (labelHandle !is null) OS.gtk_widget_modify_font (labelHandle, font);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
529 if (imageHandle !is null) OS.gtk_widget_modify_font (imageHandle, font);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
530 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
531
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
532 alias Item.setForegroundColor setForegroundColor;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
533 void setForegroundColor (GdkColor* color) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
534 setForegroundColor (handle, color);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
535 if (labelHandle !is null) setForegroundColor (labelHandle, color);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
536 if (imageHandle !is null) setForegroundColor (imageHandle, color);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
537 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
538
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
539 /**
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
540 * Sets the height of the receiver. This is height of the item when it is expanded,
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
541 * excluding the height of the header.
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
542 *
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
543 * @param height the new height
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
544 *
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
545 * @exception DWTException <ul>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
546 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
547 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
548 * </ul>
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
549 */
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
550 public void setHeight (int height) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
551 checkWidget ();
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
552 if (height < 0) return;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
553 if (OS.GTK_VERSION >= OS.buildVERSION (2, 4, 0)) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
554 this.height = height;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
555 OS.gtk_widget_set_size_request (clientHandle, -1, height);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
556 parent.layoutItems (0, false);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
557 } else {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
558 setBounds (0, 0, width, height, false, true);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
559 if (expanded) parent.layoutItems (parent.indexOf (this) + 1, true);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
560 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
561 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
562
150
f2e04420fd6c reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents: 108
diff changeset
563 public override void setImage (Image image) {
79
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
564 super.setImage (image);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
565 if (OS.GTK_VERSION >= OS.buildVERSION (2, 4, 0)) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
566 if (imageList !is null) imageList.dispose ();
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
567 imageList = null;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
568 if (image !is null) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
569 if (image.isDisposed ()) error (DWT.ERROR_INVALID_ARGUMENT);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
570 imageList = new ImageList ();
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
571 int imageIndex = imageList.add (image);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
572 auto pixbuf = imageList.getPixbuf (imageIndex);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
573 OS.gtk_image_set_from_pixbuf (imageHandle, pixbuf);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
574 if (text.length is 0) OS.gtk_widget_hide (labelHandle);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
575 OS.gtk_widget_show (imageHandle);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
576 } else {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
577 OS.gtk_image_set_from_pixbuf (imageHandle, null);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
578 OS.gtk_widget_show (labelHandle);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
579 OS.gtk_widget_hide (imageHandle);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
580 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
581 } else {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
582 int oldImageHeight = imageHeight;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
583 if (image !is null) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
584 Rectangle bounds = image.getBounds ();
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
585 imageHeight = bounds.height;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
586 imageWidth = bounds.width;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
587 } else {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
588 imageHeight = imageWidth = 0;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
589 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
590 if (oldImageHeight !is imageHeight) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
591 parent.layoutItems (parent.indexOf (this), true);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
592 } else {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
593 redraw ();
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
594 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
595 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
596 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
597
240
ce446666f5a2 Update to SWT 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 238
diff changeset
598 void setOrientation() {
ce446666f5a2 Update to SWT 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 238
diff changeset
599 super.setOrientation ();
ce446666f5a2 Update to SWT 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 238
diff changeset
600 if ((parent.style & DWT.RIGHT_TO_LEFT) !is 0) {
ce446666f5a2 Update to SWT 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 238
diff changeset
601 OS.gtk_widget_set_direction (handle, OS.GTK_TEXT_DIR_RTL);
ce446666f5a2 Update to SWT 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 238
diff changeset
602 display.doSetDirectionProc(handle, OS.GTK_TEXT_DIR_RTL);
ce446666f5a2 Update to SWT 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 238
diff changeset
603 }
ce446666f5a2 Update to SWT 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 238
diff changeset
604 }
ce446666f5a2 Update to SWT 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 238
diff changeset
605
238
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 152
diff changeset
606 public override void setText (String string) {
79
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
607 super.setText (string);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
608 if (OS.GTK_VERSION >= OS.buildVERSION (2, 4, 0)) {
255
5a30aa9820f3 removed tango.stdc.stringz imports and allow null for arrays and string arguments.
Frank Benoit <benoit@tionex.de>
parents: 240
diff changeset
609 OS.gtk_label_set_text (labelHandle, toStringz(string));
79
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
610 } else {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
611 redraw ();
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
612 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
613 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
614
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
615 void showWidget (int index) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
616 if (OS.GTK_VERSION >= OS.buildVERSION (2, 4, 0)) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
617 OS.gtk_widget_show (handle);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
618 OS.gtk_widget_show (clientHandle);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
619 OS.gtk_container_add (parent.handle, handle);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
620 OS.gtk_box_set_child_packing (parent.handle, handle, false, false, 0, OS.GTK_PACK_START);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
621 if (boxHandle !is null) OS.gtk_widget_show (boxHandle);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
622 if (labelHandle !is null) OS.gtk_widget_show (labelHandle);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
623 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
624 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
625
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
626 override int /*long*/ windowProc (GtkWidget* handle, int /*long*/ user_data) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
627 switch (cast(int)/*64*/user_data) {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
628 case ACTIVATE_INVERSE: {
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
629 expanded = cast(bool)OS.gtk_expander_get_expanded (handle);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
630 parent.layoutItems (0, false);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
631 return 0;
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
632 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
633 default:
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
634 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
635 return super.windowProc (handle, user_data);
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
636 }
eb0144eddf0f ExpandBar and ExpandItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
637 }