annotate dwt/widgets/ToolItem.d @ 248:34409a2fc053

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