annotate dwt/widgets/ToolItem.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.
75
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3 * All rights reserved. This program and the accompanying materials
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4 * are made available under the terms of the Eclipse Public License v1.0
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
5 * which accompanies this distribution, and is available at
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
6 * http://www.eclipse.org/legal/epl-v10.html
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
7 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
8 * Contributors:
a7afc89b7afe ToolBar and ToolItem
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: 75
diff changeset
10 * Port to the D programming language:
0f12f6bb9739 author notice
Frank Benoit <benoit@tionex.de>
parents: 75
diff changeset
11 * Frank Benoit <benoit@tionex.de>
75
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
12 *******************************************************************************/
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
13 module dwt.widgets.ToolItem;
a7afc89b7afe ToolBar and ToolItem
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
75
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
17
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
18
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
19 import dwt.DWT;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
20 import dwt.DWTException;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
21 import dwt.events.SelectionEvent;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
22 import dwt.events.SelectionListener;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
23 import dwt.graphics.Image;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
24 import dwt.graphics.Rectangle;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
25 import dwt.internal.gtk.OS;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
26 import dwt.widgets.Item;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
27 import dwt.widgets.ToolBar;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
28 import dwt.widgets.Control;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
29 import dwt.widgets.Shell;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
30 import dwt.widgets.TypedListener;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31 import dwt.widgets.Event;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32 import dwt.widgets.ImageList;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
33
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
34 /**
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35 * Instances of this class represent a selectable user interface object
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
36 * that represents a button in a tool bar.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
37 * <dl>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
38 * <dt><b>Styles:</b></dt>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
39 * <dd>PUSH, CHECK, RADIO, SEPARATOR, DROP_DOWN</dd>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
40 * <dt><b>Events:</b></dt>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
41 * <dd>Selection</dd>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
42 * </dl>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
43 * <p>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
44 * Note: Only one of the styles CHECK, PUSH, RADIO, SEPARATOR and DROP_DOWN
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
45 * may be specified.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
46 * </p><p>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
47 * IMPORTANT: This class is <em>not</em> intended to be subclassed.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
48 * </p>
259
c0d810de7093 Update SWT 3.4M7 to 3.4
Frank Benoit <benoit@tionex.de>
parents: 255
diff changeset
49 *
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/snippets/#toolbar">ToolBar, ToolItem snippets</a>
c0d810de7093 Update SWT 3.4M7 to 3.4
Frank Benoit <benoit@tionex.de>
parents: 255
diff changeset
51 * @see <a href="http://www.eclipse.org/swt/">Sample code and further information</a>
75
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
52 */
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
53 public class ToolItem : Item {
150
f2e04420fd6c reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents: 108
diff changeset
54
f2e04420fd6c reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents: 108
diff changeset
55 alias Item.setForegroundColor setForegroundColor;
f2e04420fd6c reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents: 108
diff changeset
56
75
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
57 GtkWidget* boxHandle, arrowHandle, arrowBoxHandle, separatorHandle, labelHandle, imageHandle;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
58 ToolBar parent;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
59 Control control;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
60 Image hotImage, disabledImage;
238
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 152
diff changeset
61 String toolTipText;
75
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
62 bool drawHotImage;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
63
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
64 /**
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
65 * Constructs a new instance of this class given its parent
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
66 * (which must be a <code>ToolBar</code>) and a style value
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
67 * describing its behavior and appearance. The item is added
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
68 * to the end of the items maintained by its parent.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
69 * <p>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
70 * The style value is either one of the style constants defined in
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
71 * class <code>DWT</code> which is applicable to instances of this
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
72 * class, or must be built by <em>bitwise OR</em>'ing together
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
73 * (that is, using the <code>int</code> "|" operator) two or more
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
74 * of those <code>DWT</code> style constants. The class description
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
75 * lists the style constants that are applicable to the class.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
76 * Style bits are also inherited from superclasses.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
77 * </p>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
78 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
79 * @param parent a composite control which will be the parent of the new instance (cannot be null)
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
80 * @param style the style of control to construct
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
81 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
82 * @exception IllegalArgumentException <ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
83 * <li>ERROR_NULL_ARGUMENT - if the parent is null</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
84 * </ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
85 * @exception DWTException <ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
86 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
87 * <li>ERROR_INVALID_SUBCLASS - if this class is not an allowed subclass</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
88 * </ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
89 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
90 * @see DWT#PUSH
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
91 * @see DWT#CHECK
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
92 * @see DWT#RADIO
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
93 * @see DWT#SEPARATOR
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
94 * @see DWT#DROP_DOWN
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
95 * @see Widget#checkSubclass
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
96 * @see Widget#getStyle
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
97 */
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
98 public this (ToolBar parent, int style) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
99 super (parent, checkStyle (style));
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
100 this.parent = parent;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
101 createWidget (parent.getItemCount ());
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
102 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
103
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
104 /**
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
105 * Constructs a new instance of this class given its parent
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
106 * (which must be a <code>ToolBar</code>), a style value
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
107 * describing its behavior and appearance, and the index
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
108 * at which to place it in the items maintained by its parent.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
109 * <p>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
110 * The style value is either one of the style constants defined in
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
111 * class <code>DWT</code> which is applicable to instances of this
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
112 * class, or must be built by <em>bitwise OR</em>'ing together
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
113 * (that is, using the <code>int</code> "|" operator) two or more
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
114 * of those <code>DWT</code> style constants. The class description
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
115 * lists the style constants that are applicable to the class.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
116 * Style bits are also inherited from superclasses.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
117 * </p>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
118 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
119 * @param parent a composite control which will be the parent of the new instance (cannot be null)
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
120 * @param style the style of control to construct
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
121 * @param index the zero-relative index to store the receiver in its parent
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
122 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
123 * @exception IllegalArgumentException <ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
124 * <li>ERROR_NULL_ARGUMENT - if the parent is null</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
125 * <li>ERROR_INVALID_RANGE - if the index is not between 0 and the number of elements in the parent (inclusive)</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
126 * </ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
127 * @exception DWTException <ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
128 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
129 * <li>ERROR_INVALID_SUBCLASS - if this class is not an allowed subclass</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
130 * </ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
131 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
132 * @see DWT#PUSH
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
133 * @see DWT#CHECK
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
134 * @see DWT#RADIO
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
135 * @see DWT#SEPARATOR
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
136 * @see DWT#DROP_DOWN
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
137 * @see Widget#checkSubclass
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
138 * @see Widget#getStyle
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
139 */
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
140 public this (ToolBar parent, int style, int index) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
141 super (parent, checkStyle (style));
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
142 this.parent = parent;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
143 int count = parent.getItemCount ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
144 if (!(0 <= index && index <= count)) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
145 error (DWT.ERROR_INVALID_RANGE);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
146 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
147 createWidget (index);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
148 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
149
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
150 /**
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
151 * Adds the listener to the collection of listeners who will
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
152 * be notified when the control is selected by the user, by sending
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
153 * it one of the messages defined in the <code>SelectionListener</code>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
154 * interface.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
155 * <p>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
156 * When <code>widgetSelected</code> is called when the mouse is over the arrow portion of a drop-down tool,
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
157 * the event object detail field contains the value <code>DWT.ARROW</code>.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
158 * <code>widgetDefaultSelected</code> is not called.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
159 * </p>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
160 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
161 * @param listener the listener which should be notified when the control is selected by the user,
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
162 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
163 * @exception IllegalArgumentException <ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
164 * <li>ERROR_NULL_ARGUMENT - if the listener is null</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
165 * </ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
166 * @exception DWTException <ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
167 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
168 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
169 * </ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
170 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
171 * @see SelectionListener
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
172 * @see #removeSelectionListener
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
173 * @see SelectionEvent
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
174 */
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
175 public void addSelectionListener(SelectionListener listener) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
176 checkWidget();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
177 if (listener is null) error (DWT.ERROR_NULL_ARGUMENT);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
178 TypedListener typedListener = new TypedListener (listener);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
179 addListener (DWT.Selection,typedListener);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
180 addListener (DWT.DefaultSelection,typedListener);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
181 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
182
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
183 static int checkStyle (int style) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
184 return checkBits (style, DWT.PUSH, DWT.CHECK, DWT.RADIO, DWT.SEPARATOR, DWT.DROP_DOWN, 0);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
185 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
186
152
17f8449522fd overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
187 protected override void checkSubclass () {
75
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
188 if (!isValidSubclass ()) error (DWT.ERROR_INVALID_SUBCLASS);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
189 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
190
152
17f8449522fd overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
191 override void createHandle (int index) {
75
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
192 state |= HANDLE;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
193 if ((style & DWT.SEPARATOR) is 0) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
194 boxHandle = cast(GtkWidget*)((parent.style & DWT.RIGHT) !is 0 ? OS.gtk_hbox_new (false, 0) : OS.gtk_vbox_new (false, 0));
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
195 if (boxHandle is null) error (DWT.ERROR_NO_HANDLES);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
196 labelHandle = OS.gtk_label_new_with_mnemonic (null);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
197 if (labelHandle is null) error (DWT.ERROR_NO_HANDLES);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
198 imageHandle = OS.gtk_image_new ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
199 if (imageHandle is null) error (DWT.ERROR_NO_HANDLES);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
200 OS.gtk_container_add (boxHandle, imageHandle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
201 OS.gtk_container_add (boxHandle, labelHandle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
202 if ((parent.style & DWT.VERTICAL) !is 0) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
203 // Align text and images to the left
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
204 OS.gtk_box_set_child_packing (boxHandle, imageHandle, false, false, 0, OS.GTK_PACK_START);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
205 OS.gtk_box_set_child_packing (boxHandle, labelHandle, false, false, 2, OS.GTK_PACK_START);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
206 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
207 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
208 int bits = DWT.SEPARATOR | DWT.RADIO | DWT.CHECK | DWT.PUSH | DWT.DROP_DOWN;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
209 switch (style & bits) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
210 case DWT.SEPARATOR:
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
211 handle = cast(GtkWidget*)OS.gtk_hbox_new (false, 0);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
212 if (handle is null) error (DWT.ERROR_NO_HANDLES);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
213 bool isVertical = (parent.style & DWT.VERTICAL) !is 0;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
214 separatorHandle = isVertical ? OS.gtk_hseparator_new() : OS.gtk_vseparator_new();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
215 if (separatorHandle is null) error (DWT.ERROR_NO_HANDLES);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
216 OS.gtk_widget_set_size_request (separatorHandle, isVertical ? 15 : 6, isVertical ? 6 : 15);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
217 OS.gtk_widget_set_size_request (handle, isVertical ? 15 : 6, isVertical ? 6 : 15);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
218 OS.gtk_container_add (handle, separatorHandle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
219 break;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
220 case DWT.DROP_DOWN:
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
221 handle = OS.gtk_button_new ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
222 if (handle is null) error (DWT.ERROR_NO_HANDLES);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
223 arrowBoxHandle = cast(GtkWidget*)OS.gtk_hbox_new (false, 0);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
224 if (arrowBoxHandle is null) error(DWT.ERROR_NO_HANDLES);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
225 arrowHandle = OS.gtk_arrow_new (OS.GTK_ARROW_DOWN, OS.GTK_SHADOW_NONE);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
226 if (arrowHandle is null) error (DWT.ERROR_NO_HANDLES);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
227 OS.gtk_widget_set_size_request (arrowHandle, 8, 6);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
228 OS.gtk_container_add (handle, arrowBoxHandle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
229 OS.gtk_container_add (arrowBoxHandle, boxHandle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
230 OS.gtk_container_add (arrowBoxHandle, arrowHandle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
231 break;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
232 case DWT.RADIO:
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
233 /*
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
234 * This code is intentionally commented. Because GTK
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
235 * enforces radio behavior in a button group a radio group
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
236 * is not created for each set of contiguous buttons, each
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
237 * radio button will not draw unpressed. The fix is to use
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
238 * toggle buttons instead.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
239 */
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
240 // handle = OS.gtk_radio_button_new (0);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
241 // if (handle is 0) error (DWT.ERROR_NO_HANDLES);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
242 // OS.gtk_toggle_button_set_mode (handle, false);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
243 // OS.gtk_container_add (handle, boxHandle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
244 // break;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
245 case DWT.CHECK:
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
246 handle = OS.gtk_toggle_button_new ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
247 if (handle is null) error (DWT.ERROR_NO_HANDLES);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
248 OS.gtk_toggle_button_set_mode (handle, false);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
249 OS.gtk_container_add (handle, boxHandle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
250 break;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
251 case DWT.PUSH:
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
252 default:
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
253 handle = OS.gtk_button_new ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
254 if (handle is null) error (DWT.ERROR_NO_HANDLES);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
255 OS.gtk_container_add (handle, boxHandle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
256 break;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
257 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
258 if ((style & DWT.SEPARATOR) is 0) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
259 int relief;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
260 OS.gtk_widget_style_get1 (parent.handle, OS.button_relief.ptr, &relief);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
261 OS.gtk_button_set_relief (handle, relief );
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
262 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
263 OS.GTK_WIDGET_UNSET_FLAGS (handle, OS.GTK_CAN_FOCUS);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
264 // This code is intentionally commented.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
265 // int /*long*/ fontHandle = parent.fontHandle ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
266 // GdkColor color = new GdkColor ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
267 // int /*long*/ style = OS.gtk_widget_get_style (fontHandle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
268 // OS.gtk_style_get_fg (style, OS.GTK_STATE_NORMAL, color);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
269 // int /*long*/ font = OS.gtk_style_get_font_desc (style);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
270 // setForegroundColor (color);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
271 // setFontDescription (font);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
272 if ((parent.state & FOREGROUND) !is 0) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
273 setForegroundColor (parent.getForegroundColor());
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
274 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
275 if ((parent.state & FONT) !is 0) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
276 setFontDescription (parent.getFontDescription());
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
277 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
278 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
279
152
17f8449522fd overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
280 override void createWidget (int index) {
75
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
281 super.createWidget (index);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
282 showWidget (index);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
283 parent.relayout ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
284 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
285
152
17f8449522fd overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
286 override void deregister() {
75
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
287 super.deregister ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
288 if (labelHandle !is null) display.removeWidget (labelHandle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
289 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
290
150
f2e04420fd6c reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents: 108
diff changeset
291 public override void dispose () {
75
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
292 if (isDisposed ()) return;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
293 ToolBar parent = this.parent;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
294 super.dispose ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
295 parent.relayout ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
296 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
297
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
298 /**
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
299 * Returns a rectangle describing the receiver's size and location
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
300 * relative to its parent.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
301 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
302 * @return the receiver's bounding rectangle
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
303 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
304 * @exception DWTException <ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
305 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
306 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
307 * </ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
308 */
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
309 public Rectangle getBounds () {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
310 checkWidget();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
311 parent.forceResize ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
312 auto topHandle = topHandle ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
313 int x, y, width, height;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
314 /*
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
315 * Bug in GTK. Toolbar items are only allocated their minimum size
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
316 * in versions before 2.4.0. The fix is to use the total size
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
317 * available minus any borders.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
318 */
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
319 if (OS.GTK_VERSION < OS.buildVERSION (2, 4, 0) && control !is null && !control.isDisposed ()) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
320 int border = OS.gtk_container_get_border_width (parent.handle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
321 int shadow;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
322 OS.gtk_widget_style_get1 (parent.handle, "shadow_type".ptr, &shadow);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
323 if (shadow !is OS.GTK_SHADOW_NONE) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
324 border += OS.gtk_style_get_xthickness (OS.gtk_widget_get_style (parent.handle));
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
325 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
326 if ((parent.style & DWT.VERTICAL) !is 0) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
327 x = border;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
328 y = OS.GTK_WIDGET_Y (topHandle) + border;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
329 width = OS.GTK_WIDGET_WIDTH (parent.handle) - border*2;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
330 height = OS.GTK_WIDGET_HEIGHT (topHandle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
331 } else {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
332 x = OS.GTK_WIDGET_X (topHandle) + border;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
333 y = border;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
334 width = OS.GTK_WIDGET_WIDTH (topHandle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
335 height = OS.GTK_WIDGET_HEIGHT (parent.handle) - border*2;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
336 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
337 } else {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
338 x = OS.GTK_WIDGET_X (topHandle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
339 y = OS.GTK_WIDGET_Y (topHandle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
340 width = OS.GTK_WIDGET_WIDTH (topHandle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
341 height = OS.GTK_WIDGET_HEIGHT (topHandle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
342 }
240
ce446666f5a2 Update to SWT 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 238
diff changeset
343 if ((parent.style & DWT.MIRRORED) !is 0) x = parent.getClientWidth () - width - x;
ce446666f5a2 Update to SWT 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 238
diff changeset
344 if ((style & DWT.SEPARATOR) !is 0 && control !is null) height = Math.max (height, 23);
75
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
345 return new Rectangle (x, y, width, height);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
346 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
347
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
348 /**
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
349 * Returns the control that is used to fill the bounds of
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
350 * the item when the item is a <code>SEPARATOR</code>.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
351 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
352 * @return the control
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
353 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
354 * @exception DWTException <ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
355 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
a7afc89b7afe ToolBar and ToolItem
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>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
357 * </ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
358 */
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
359 public Control getControl () {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
360 checkWidget();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
361 return control;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
362 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
363
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
364 /**
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
365 * Returns the receiver's disabled image if it has one, or null
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
366 * if it does not.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
367 * <p>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
368 * The disabled image is displayed when the receiver is disabled.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
369 * </p>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
370 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
371 * @return the receiver's disabled image
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
372 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
373 * @exception DWTException <ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
374 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
375 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
376 * </ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
377 */
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
378 public Image getDisabledImage () {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
379 checkWidget();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
380 return disabledImage;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
381 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
382
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
383 /**
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
384 * Returns <code>true</code> if the receiver is enabled, and
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
385 * <code>false</code> otherwise. A disabled control is typically
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
386 * not selectable from the user interface and draws with an
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
387 * inactive or "grayed" look.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
388 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
389 * @return the receiver's enabled state
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
390 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
391 * @exception DWTException <ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
392 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
393 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
394 * </ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
395 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
396 * @see #isEnabled
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
397 */
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
398 public bool getEnabled () {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
399 checkWidget();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
400 auto topHandle = topHandle ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
401 return OS.GTK_WIDGET_SENSITIVE (topHandle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
402 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
403
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
404 /**
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
405 * Returns the receiver's hot image if it has one, or null
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
406 * if it does not.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
407 * <p>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
408 * The hot image is displayed when the mouse enters the receiver.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
409 * </p>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
410 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
411 * @return the receiver's hot image
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
412 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
413 * @exception DWTException <ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
414 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
415 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
416 * </ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
417 */
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
418 public Image getHotImage () {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
419 checkWidget();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
420 return hotImage;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
421 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
422
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
423 /**
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
424 * Returns the receiver's parent, which must be a <code>ToolBar</code>.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
425 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
426 * @return the receiver's parent
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
427 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
428 * @exception DWTException <ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
429 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
430 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
431 * </ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
432 */
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
433 public ToolBar getParent () {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
434 checkWidget();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
435 if (parent is null) error (DWT.ERROR_WIDGET_DISPOSED);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
436 return parent;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
437 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
438
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
439 /**
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
440 * Returns <code>true</code> if the receiver is selected,
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
441 * and false otherwise.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
442 * <p>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
443 * When the receiver is of type <code>CHECK</code> or <code>RADIO</code>,
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
444 * it is selected when it is checked (which some platforms draw as a
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
445 * pushed in button). If the receiver is of any other type, this method
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
446 * returns false.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
447 * </p>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
448 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
449 * @return the selection state
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
450 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
451 * @exception DWTException <ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
452 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
453 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
454 * </ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
455 */
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
456 public bool getSelection () {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
457 checkWidget();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
458 if ((style & (DWT.CHECK | DWT.RADIO)) is 0) return false;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
459 return cast(bool)OS.gtk_toggle_button_get_active (handle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
460 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
461
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
462 /**
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
463 * Returns the receiver's tool tip text, or null if it has not been set.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
464 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
465 * @return the receiver's tool tip text
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
466 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
467 * @exception DWTException <ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
468 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
469 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
470 * </ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
471 */
238
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 152
diff changeset
472 public String getToolTipText () {
75
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
473 checkWidget();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
474 return toolTipText;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
475 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
476
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
477 /**
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
478 * Gets the width of the receiver.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
479 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
480 * @return the width
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
481 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
482 * @exception DWTException <ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
483 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
484 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
485 * </ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
486 */
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
487 public int getWidth () {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
488 checkWidget();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
489 parent.forceResize ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
490 auto topHandle = topHandle ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
491 return OS.GTK_WIDGET_WIDTH (topHandle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
492 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
493
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
494 override int /*long*/ gtk_button_press_event (GtkWidget* widget, GdkEventButton* gdkEvent) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
495 double x = gdkEvent.x;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
496 gdkEvent.x += OS.GTK_WIDGET_X (handle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
497 double y = gdkEvent.y;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
498 gdkEvent.y += OS.GTK_WIDGET_Y (handle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
499 auto result = parent.gtk_button_press_event (widget, gdkEvent);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
500 gdkEvent.x = x;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
501 gdkEvent.y = y;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
502 return result;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
503 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
504
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
505 override int /*long*/ gtk_button_release_event (GtkWidget* widget, GdkEventButton* gdkEvent) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
506 double x = gdkEvent.x;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
507 gdkEvent.x += OS.GTK_WIDGET_X (handle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
508 double y = gdkEvent.y;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
509 gdkEvent.y += OS.GTK_WIDGET_Y (handle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
510 auto result = parent.gtk_button_release_event (widget, gdkEvent);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
511 gdkEvent.x = x;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
512 gdkEvent.y = y;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
513 return result;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
514 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
515
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
516 override int /*long*/ gtk_clicked (GtkWidget* widget) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
517 Event event = new Event ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
518 if ((style & DWT.DROP_DOWN) !is 0) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
519 auto eventPtr = OS.gtk_get_current_event ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
520 if (eventPtr !is null) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
521 GdkEvent* gdkEvent = cast(GdkEvent*)eventPtr;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
522 switch (gdkEvent.type) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
523 case OS.GDK_BUTTON_PRESS:
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
524 case OS.GDK_2BUTTON_PRESS:
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
525 case OS.GDK_BUTTON_RELEASE: {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
526 double x_win;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
527 double y_win;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
528 OS.gdk_event_get_coords (eventPtr, &x_win, &y_win);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
529 int x = OS.GTK_WIDGET_X (arrowHandle) - OS.GTK_WIDGET_X (handle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
530 int width = OS.GTK_WIDGET_WIDTH (arrowHandle);
240
ce446666f5a2 Update to SWT 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 238
diff changeset
531 if ((((parent.style & DWT.RIGHT_TO_LEFT) is 0) && x <= cast(int)x_win)
ce446666f5a2 Update to SWT 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 238
diff changeset
532 || (((parent.style & DWT.RIGHT_TO_LEFT) !is 0) && cast(int)x_win <= x + width)) {
75
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
533 event.detail = DWT.ARROW;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
534 auto topHandle = topHandle ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
535 event.x = OS.GTK_WIDGET_X (topHandle);
240
ce446666f5a2 Update to SWT 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 238
diff changeset
536 if ((parent.style & DWT.MIRRORED) !is 0) event.x = parent.getClientWidth () - OS.GTK_WIDGET_WIDTH (topHandle) - event.x;
75
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
537 event.y = OS.GTK_WIDGET_Y (topHandle) + OS.GTK_WIDGET_HEIGHT (topHandle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
538 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
539 break;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
540 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
541 default:
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
542 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
543 OS.gdk_event_free (eventPtr);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
544 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
545 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
546 if ((style & DWT.RADIO) !is 0) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
547 if ((parent.getStyle () & DWT.NO_RADIO_GROUP) is 0) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
548 selectRadio ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
549 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
550 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
551 postEvent (DWT.Selection, event);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
552 return 0;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
553 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
554
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
555 override int /*long*/ gtk_enter_notify_event (GtkWidget* widget, GdkEventCrossing* event) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
556 parent.gtk_enter_notify_event (widget, event);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
557 drawHotImage = (parent.style & DWT.FLAT) !is 0 && hotImage !is null;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
558 if (drawHotImage && imageHandle !is null) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
559 ImageList imageList = parent.imageList;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
560 if (imageList !is null) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
561 int index = imageList.indexOf (hotImage);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
562 if (index !is -1) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
563 auto pixbuf = imageList.getPixbuf (index);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
564 OS.gtk_image_set_from_pixbuf (imageHandle, pixbuf);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
565 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
566 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
567 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
568 return 0;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
569 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
570
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
571 override int /*long*/ gtk_event_after (GtkWidget* widget, GdkEvent* gdkEvent) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
572 switch (gdkEvent.type) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
573 case OS.GDK_BUTTON_PRESS: {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
574 GdkEventButton* gdkEventButton = cast(GdkEventButton*)gdkEvent;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
575 if (gdkEventButton.button is 3) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
576 parent.showMenu (cast(int) gdkEventButton.x_root, cast(int) gdkEventButton.y_root);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
577 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
578 break;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
579 default:
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
580 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
581 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
582 return 0;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
583 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
584
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
585 override int /*long*/ gtk_focus_out_event (GtkWidget* widget, GdkEventFocus* event) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
586 OS.GTK_WIDGET_UNSET_FLAGS (handle, OS.GTK_CAN_FOCUS);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
587 parent.lastFocus = this;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
588 return 0;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
589 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
590
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
591 override int /*long*/ gtk_leave_notify_event (GtkWidget* widget, GdkEventCrossing* event) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
592 parent.gtk_leave_notify_event (widget, event);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
593 if (drawHotImage) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
594 drawHotImage = false;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
595 if (imageHandle !is null && image !is null) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
596 ImageList imageList = parent.imageList;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
597 if (imageList !is null) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
598 int index = imageList.indexOf (image);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
599 if (index !is -1) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
600 auto pixbuf = imageList.getPixbuf (index);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
601 OS.gtk_image_set_from_pixbuf (imageHandle, pixbuf);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
602 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
603 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
604 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
605 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
606 return 0;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
607 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
608
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
609 override int /*long*/ gtk_map (GtkWidget* widget) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
610 parent.fixZOrder ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
611 return 0;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
612 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
613
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
614 override int /*long*/ gtk_mnemonic_activate (GtkWidget* widget, int /*long*/ arg1) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
615 return parent.gtk_mnemonic_activate (widget, arg1);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
616 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
617
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
618 bool hasFocus () {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
619 return OS.GTK_WIDGET_HAS_FOCUS (handle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
620 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
621
152
17f8449522fd overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
622 override void hookEvents () {
75
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
623 super.hookEvents ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
624 if ((style & DWT.SEPARATOR) !is 0) return;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
625 OS.g_signal_connect_closure (handle, OS.clicked.ptr, display.closures [CLICKED], false);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
626 OS.g_signal_connect_closure_by_id (handle, display.signalIds [ENTER_NOTIFY_EVENT], 0, display.closures [ENTER_NOTIFY_EVENT], false);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
627 OS.g_signal_connect_closure_by_id (handle, display.signalIds [LEAVE_NOTIFY_EVENT], 0, display.closures [LEAVE_NOTIFY_EVENT], false);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
628 if (labelHandle !is null) OS.g_signal_connect_closure_by_id (labelHandle, display.signalIds [MNEMONIC_ACTIVATE], 0, display.closures [MNEMONIC_ACTIVATE], false);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
629
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
630 OS.g_signal_connect_closure_by_id (handle, display.signalIds [FOCUS_OUT_EVENT], 0, display.closures [FOCUS_OUT_EVENT], false);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
631
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
632 /*
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
633 * Feature in GTK. Usually, GTK widgets propagate all events to their
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
634 * parent when they are done their own processing. However, in contrast
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
635 * to other widgets, the buttons that make up the tool items, do not propagate
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
636 * the mouse up/down events. It is interesting to note that they DO propagate
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
637 * mouse motion events. The fix is to explicitly forward mouse up/down events
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
638 * to the parent.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
639 */
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
640 int mask =
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
641 OS.GDK_EXPOSURE_MASK | OS.GDK_POINTER_MOTION_MASK |
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
642 OS.GDK_BUTTON_PRESS_MASK | OS.GDK_BUTTON_RELEASE_MASK |
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
643 OS.GDK_ENTER_NOTIFY_MASK | OS.GDK_LEAVE_NOTIFY_MASK |
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
644 OS.GDK_KEY_PRESS_MASK | OS.GDK_KEY_RELEASE_MASK |
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
645 OS.GDK_FOCUS_CHANGE_MASK;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
646 OS.gtk_widget_add_events (handle, mask);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
647 OS.g_signal_connect_closure_by_id (handle, display.signalIds [BUTTON_PRESS_EVENT], 0, display.closures [BUTTON_PRESS_EVENT], false);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
648 OS.g_signal_connect_closure_by_id (handle, display.signalIds [BUTTON_RELEASE_EVENT], 0, display.closures [BUTTON_RELEASE_EVENT], false);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
649 OS.g_signal_connect_closure_by_id (handle, display.signalIds [EVENT_AFTER], 0, display.closures[EVENT_AFTER], false);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
650
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
651 auto topHandle = topHandle ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
652 OS.g_signal_connect_closure_by_id (topHandle, display.signalIds [MAP], 0, display.closures [MAP], true);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
653 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
654
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
655 /**
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
656 * Returns <code>true</code> if the receiver is enabled and all
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
657 * of the receiver's ancestors are enabled, and <code>false</code>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
658 * otherwise. A disabled control is typically not selectable from the
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
659 * user interface and draws with an inactive or "grayed" look.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
660 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
661 * @return the receiver's enabled state
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
662 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
663 * @exception DWTException <ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
664 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
665 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
666 * </ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
667 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
668 * @see #getEnabled
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
669 */
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
670 public bool isEnabled () {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
671 checkWidget();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
672 return getEnabled () && parent.isEnabled ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
673 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
674
152
17f8449522fd overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
675 override void register () {
75
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
676 super.register ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
677 if (labelHandle !is null) display.addWidget (labelHandle, this);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
678 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
679
152
17f8449522fd overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
680 override void releaseHandle () {
75
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
681 super.releaseHandle ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
682 boxHandle = arrowHandle = separatorHandle = labelHandle = imageHandle = null;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
683 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
684
152
17f8449522fd overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
685 override void releaseWidget () {
75
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
686 super.releaseWidget ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
687 if (parent.lastFocus is this) parent.lastFocus = null;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
688 parent = null;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
689 control = null;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
690 hotImage = disabledImage = null;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
691 toolTipText = null;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
692 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
693
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
694 /**
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
695 * Removes the listener from the collection of listeners who will
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
696 * be notified when the control is selected by the user.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
697 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
698 * @param listener the listener which should no longer be notified
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
699 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
700 * @exception IllegalArgumentException <ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
701 * <li>ERROR_NULL_ARGUMENT - if the listener is null</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
702 * </ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
703 * @exception DWTException <ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
704 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
705 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
706 * </ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
707 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
708 * @see SelectionListener
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
709 * @see #addSelectionListener
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
710 */
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
711 public void removeSelectionListener(SelectionListener listener) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
712 checkWidget();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
713 if (listener is null) error (DWT.ERROR_NULL_ARGUMENT);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
714 if (eventTable is null) return;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
715 eventTable.unhook (DWT.Selection, listener);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
716 eventTable.unhook (DWT.DefaultSelection,listener);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
717 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
718
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
719 void resizeControl () {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
720 if (control !is null && !control.isDisposed ()) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
721 if (separatorHandle !is null) OS.gtk_widget_hide (separatorHandle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
722 /*
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
723 * Set the size and location of the control
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
724 * separately to minimize flashing in the
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
725 * case where the control does not resize
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
726 * to the size that was requested. This
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
727 * case can occur when the control is a
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
728 * combo box.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
729 */
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
730 Rectangle itemRect = getBounds ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
731 control.setSize (itemRect.width, itemRect.height);
240
ce446666f5a2 Update to SWT 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 238
diff changeset
732 OS.gtk_widget_set_size_request (handle, itemRect.width, itemRect.height);
75
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
733 Rectangle rect = control.getBounds ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
734 rect.x = itemRect.x + (itemRect.width - rect.width) / 2;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
735 rect.y = itemRect.y + (itemRect.height - rect.height) / 2;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
736 control.setLocation (rect.x, rect.y);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
737 } else {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
738 if (separatorHandle !is null) OS.gtk_widget_show (separatorHandle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
739 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
740 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
741
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
742 void selectRadio () {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
743 int index = 0;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
744 ToolItem [] items = parent.getItems ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
745 while (index < items.length && items [index] !is this) index++;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
746 int i = index - 1;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
747 while (i >= 0 && items [i].setRadioSelection (false)) --i;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
748 int j = index + 1;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
749 while (j < items.length && items [j].setRadioSelection (false)) j++;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
750 setSelection (true);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
751 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
752
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
753 /**
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
754 * Sets the control that is used to fill the bounds of
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
755 * the item when the item is a <code>SEPARATOR</code>.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
756 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
757 * @param control the new control
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
758 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
759 * @exception IllegalArgumentException <ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
760 * <li>ERROR_INVALID_ARGUMENT - if the control has been disposed</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
761 * <li>ERROR_INVALID_PARENT - if the control is not in the same widget tree</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
762 * </ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
763 * @exception DWTException <ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
764 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
765 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
766 * </ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
767 */
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
768 public void setControl (Control control) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
769 checkWidget ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
770 if (control !is null) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
771 if (control.isDisposed()) error (DWT.ERROR_INVALID_ARGUMENT);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
772 if (control.parent !is parent) error (DWT.ERROR_INVALID_PARENT);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
773 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
774 if ((style & DWT.SEPARATOR) is 0) return;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
775 if (this.control is control) return;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
776 this.control = control;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
777 parent.relayout ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
778 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
779
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
780 /**
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
781 * Sets the receiver's disabled image to the argument, which may be
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
782 * null indicating that no disabled image should be displayed.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
783 * <p>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
784 * The disabled image is displayed when the receiver is disabled.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
785 * </p>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
786 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
787 * @param image the disabled image to display on the receiver (may be null)
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
788 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
789 * @exception IllegalArgumentException <ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
790 * <li>ERROR_INVALID_ARGUMENT - if the image has been disposed</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
791 * </ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
792 * @exception DWTException <ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
793 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
794 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
795 * </ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
796 */
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
797 public void setDisabledImage (Image image) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
798 checkWidget();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
799 if ((style & DWT.SEPARATOR) !is 0) return;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
800 disabledImage = image;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
801 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
802
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
803 /**
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
804 * Enables the receiver if the argument is <code>true</code>,
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
805 * and disables it otherwise.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
806 * <p>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
807 * A disabled control is typically
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
808 * not selectable from the user interface and draws with an
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
809 * inactive or "grayed" look.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
810 * </p>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
811 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
812 * @param enabled the new enabled state
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
813 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
814 * @exception DWTException <ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
815 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
816 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
817 * </ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
818 */
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
819 public void setEnabled (bool enabled) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
820 checkWidget();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
821 auto topHandle = topHandle ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
822 OS.gtk_widget_set_sensitive (topHandle, enabled);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
823 if (enabled) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
824 /*
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
825 * Bug in GTK. GtkButton requires an enter notify before it
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
826 * allows the button to be pressed, but events are dropped when
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
827 * widgets are insensitive. The fix is to hide and show the
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
828 * button if the pointer is within its bounds.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
829 */
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
830 int x, y;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
831 OS.gdk_window_get_pointer (parent.paintWindow (), &x, &y, null);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
832 if (getBounds ().contains (x, y)) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
833 OS.gtk_widget_hide (handle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
834 OS.gtk_widget_show (handle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
835 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
836 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
837 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
838
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
839 bool setFocus () {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
840 if ((style & DWT.SEPARATOR) !is 0) return false;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
841 if (!OS.gtk_widget_get_child_visible (handle)) return false;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
842 OS.GTK_WIDGET_SET_FLAGS (handle, OS.GTK_CAN_FOCUS);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
843 OS.gtk_widget_grab_focus (handle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
844 bool result = cast(bool)OS.gtk_widget_is_focus (handle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
845 if (!result) OS.GTK_WIDGET_UNSET_FLAGS (handle, OS.GTK_CAN_FOCUS);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
846 return result;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
847 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
848
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
849 void setFontDescription (PangoFontDescription* font) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
850 OS.gtk_widget_modify_font (handle, font);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
851 if (labelHandle !is null) OS.gtk_widget_modify_font (labelHandle, font);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
852 if (imageHandle !is null) OS.gtk_widget_modify_font (imageHandle, font);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
853 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
854
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
855 alias Item.setForegroundColor setForegroundColor;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
856 void setForegroundColor (GdkColor* color) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
857 setForegroundColor (handle, color);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
858 if (labelHandle !is null) setForegroundColor (labelHandle, color);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
859 if (imageHandle !is null) setForegroundColor (imageHandle, color);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
860 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
861
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
862 /**
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
863 * Sets the receiver's hot image to the argument, which may be
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
864 * null indicating that no hot image should be displayed.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
865 * <p>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
866 * The hot image is displayed when the mouse enters the receiver.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
867 * </p>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
868 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
869 * @param image the hot image to display on the receiver (may be null)
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
870 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
871 * @exception IllegalArgumentException <ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
872 * <li>ERROR_INVALID_ARGUMENT - if the image has been disposed</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
873 * </ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
874 * @exception DWTException <ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
875 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
876 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
877 * </ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
878 */
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
879 public void setHotImage (Image image) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
880 checkWidget();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
881 if ((style & DWT.SEPARATOR) !is 0) return;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
882 hotImage = image;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
883 if (image !is null) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
884 ImageList imageList = parent.imageList;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
885 if (imageList is null) imageList = parent.imageList = new ImageList ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
886 int imageIndex = imageList.indexOf (image);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
887 if (imageIndex is -1) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
888 imageIndex = imageList.add (image);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
889 } else {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
890 imageList.put (imageIndex, image);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
891 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
892 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
893 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
894
150
f2e04420fd6c reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents: 108
diff changeset
895 public override void setImage (Image image) {
75
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
896 checkWidget();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
897 if ((style & DWT.SEPARATOR) !is 0) return;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
898 super.setImage (image);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
899 if (imageHandle is null) return;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
900 if (image !is null) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
901 ImageList imageList = parent.imageList;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
902 if (imageList is null) imageList = parent.imageList = new ImageList ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
903 int imageIndex = imageList.indexOf (image);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
904 if (imageIndex is -1) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
905 imageIndex = imageList.add (image);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
906 } else {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
907 imageList.put (imageIndex, image);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
908 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
909 auto pixbuf = imageList.getPixbuf (imageIndex);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
910 OS.gtk_image_set_from_pixbuf (imageHandle, pixbuf);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
911 OS.gtk_widget_show (imageHandle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
912 } else {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
913 OS.gtk_image_set_from_pixbuf (imageHandle, null);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
914 OS.gtk_widget_hide (imageHandle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
915 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
916 parent.relayout ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
917 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
918
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
919 void setOrientation () {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
920 if ((parent.style & DWT.RIGHT_TO_LEFT) !is 0) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
921 if (handle !is null) OS.gtk_widget_set_direction (handle, OS.GTK_TEXT_DIR_RTL);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
922 if (labelHandle !is null) OS.gtk_widget_set_direction (labelHandle, OS.GTK_TEXT_DIR_RTL);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
923 if (imageHandle !is null) OS.gtk_widget_set_direction (imageHandle, OS.GTK_TEXT_DIR_RTL);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
924 if (separatorHandle !is null) OS.gtk_widget_set_direction (separatorHandle, OS.GTK_TEXT_DIR_RTL);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
925 if (arrowHandle !is null) OS.gtk_widget_set_direction (arrowHandle, OS.GTK_TEXT_DIR_RTL);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
926 if (boxHandle !is null) OS.gtk_widget_set_direction (boxHandle, OS.GTK_TEXT_DIR_RTL);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
927 if (arrowBoxHandle !is null) OS.gtk_widget_set_direction (arrowBoxHandle, OS.GTK_TEXT_DIR_RTL);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
928 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
929 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
930
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
931 bool setRadioSelection (bool value) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
932 if ((style & DWT.RADIO) is 0) return false;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
933 if (getSelection () !is value) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
934 setSelection (value);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
935 postEvent (DWT.Selection);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
936 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
937 return true;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
938 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
939
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
940 /**
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
941 * Sets the selection state of the receiver.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
942 * <p>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
943 * When the receiver is of type <code>CHECK</code> or <code>RADIO</code>,
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
944 * it is selected when it is checked (which some platforms draw as a
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
945 * pushed in button).
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
946 * </p>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
947 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
948 * @param selected the new selection state
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
949 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
950 * @exception DWTException <ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
951 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
952 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
953 * </ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
954 */
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
955 public void setSelection (bool selected) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
956 checkWidget ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
957 if ((style & (DWT.CHECK | DWT.RADIO)) is 0) return;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
958 OS.g_signal_handlers_block_matched (handle, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, udCLICKED);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
959 OS.gtk_toggle_button_set_active (handle, selected);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
960 OS.g_signal_handlers_unblock_matched (handle, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, udCLICKED);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
961 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
962
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
963 /**
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
964 * Sets the receiver's text. The string may include
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
965 * the mnemonic character.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
966 * </p>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
967 * <p>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
968 * Mnemonics are indicated by an '&amp;' that causes the next
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
969 * character to be the mnemonic. When the user presses a
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
970 * key sequence that matches the mnemonic, a selection
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
971 * event occurs. On most platforms, the mnemonic appears
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
972 * underlined but may be emphasised in a platform specific
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
973 * manner. The mnemonic indicator character '&amp;' can be
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
974 * escaped by doubling it in the string, causing a single
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
975 * '&amp;' to be displayed.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
976 * </p>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
977 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
978 * @param string the new text
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
979 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
980 * @exception DWTException <ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
981 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
982 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
983 * </ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
984 */
238
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 152
diff changeset
985 public override void setText (String string) {
75
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
986 checkWidget();
255
5a30aa9820f3 removed tango.stdc.stringz imports and allow null for arrays and string arguments.
Frank Benoit <benoit@tionex.de>
parents: 248
diff changeset
987 // DWT extension: allow null for zero length string
5a30aa9820f3 removed tango.stdc.stringz imports and allow null for arrays and string arguments.
Frank Benoit <benoit@tionex.de>
parents: 248
diff changeset
988 //if (string is null) error (DWT.ERROR_NULL_ARGUMENT);
75
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
989 if ((style & DWT.SEPARATOR) !is 0) return;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
990 super.setText (string);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
991 if (labelHandle is null) return;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
992 char [] chars = fixMnemonic (string);
248
34409a2fc053 Fix call OS.gtk_label_set_text_with_mnemonic with valid ptr, even for zero length strings.
Frank Benoit <benoit@tionex.de>
parents: 240
diff changeset
993 OS.gtk_label_set_text_with_mnemonic (labelHandle, chars.toStringzValidPtr());
75
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
994 if (string.length !is 0) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
995 OS.gtk_widget_show (labelHandle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
996 } else {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
997 OS.gtk_widget_hide (labelHandle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
998 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
999 parent.relayout ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1000 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1001
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1002 /**
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1003 * Sets the receiver's tool tip text to the argument, which
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1004 * may be null indicating that no tool tip text should be shown.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1005 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1006 * @param string the new tool tip text (or null)
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1007 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1008 * @exception DWTException <ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1009 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1010 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1011 * </ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1012 */
238
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 152
diff changeset
1013 public void setToolTipText (String string) {
75
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1014 checkWidget();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1015 if (parent.toolTipText is null) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1016 Shell shell = parent._getShell ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1017 setToolTipText (shell, string);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1018 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1019 toolTipText = string;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1020 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1021
238
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 152
diff changeset
1022 void setToolTipText (Shell shell, String newString) {
75
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1023 shell.setToolTipText (handle, newString);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1024 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1025
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1026 /**
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1027 * Sets the width of the receiver, for <code>SEPARATOR</code> ToolItems.
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1028 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1029 * @param width the new width
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1030 *
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1031 * @exception DWTException <ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1032 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1033 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1034 * </ul>
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1035 */
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1036 public void setWidth (int width) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1037 checkWidget();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1038 if ((style & DWT.SEPARATOR) is 0) return;
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1039 if (width < 0) return;
240
ce446666f5a2 Update to SWT 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 238
diff changeset
1040 bool isVertical = (parent.style & DWT.VERTICAL) !is 0;
ce446666f5a2 Update to SWT 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 238
diff changeset
1041 OS.gtk_widget_set_size_request (separatorHandle, width, isVertical ? 6 : 15);
ce446666f5a2 Update to SWT 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 238
diff changeset
1042 OS.gtk_widget_set_size_request (handle, width, isVertical ? 6 : 15);
75
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1043 parent.relayout ();
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1044 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1045
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1046 void showWidget (int index) {
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1047 if (handle !is null) OS.gtk_widget_show (handle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1048 if (boxHandle !is null) OS.gtk_widget_show (boxHandle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1049 if (separatorHandle !is null) OS.gtk_widget_show (separatorHandle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1050 if (arrowBoxHandle !is null) OS.gtk_widget_show (arrowBoxHandle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1051 if (arrowHandle !is null) OS.gtk_widget_show (arrowHandle);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1052 OS.gtk_toolbar_insert_widget (parent.handle, handle, null, null, index);
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1053 }
a7afc89b7afe ToolBar and ToolItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1054 }