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

Update SWT 3.4M7 to 3.4
author Frank Benoit <benoit@tionex.de>
date Sun, 29 Jun 2008 14:33:38 +0200
parents 5a30aa9820f3
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
72
5899e0b43e5d porting notice
Frank Benoit <benoit@tionex.de>
parents: 71
diff changeset
1 /*******************************************************************************
259
c0d810de7093 Update SWT 3.4M7 to 3.4
Frank Benoit <benoit@tionex.de>
parents: 255
diff changeset
2 * Copyright (c) 2000, 2008 IBM Corporation and others.
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3 * All rights reserved. This program and the accompanying materials
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4 * are made available under the terms of the Eclipse Public License v1.0
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
5 * which accompanies this distribution, and is available at
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
6 * http://www.eclipse.org/legal/epl-v10.html
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
7 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
8 * Contributors:
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
9 * IBM Corporation - initial API and implementation
72
5899e0b43e5d porting notice
Frank Benoit <benoit@tionex.de>
parents: 71
diff changeset
10 * Port to the D programming language:
5899e0b43e5d porting notice
Frank Benoit <benoit@tionex.de>
parents: 71
diff changeset
11 * Frank Benoit <benoit@tionex.de>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
12 *******************************************************************************/
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
13 module dwt.widgets.MenuItem;
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
14
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
15
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
16 import dwt.widgets.Menu;
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
17 import dwt.widgets.Item;
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
18 import dwt.widgets.Decorations;
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
19 import dwt.graphics.Rectangle;
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
20 import dwt.graphics.Image;
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
21 import dwt.widgets.ImageList;
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
22 import dwt.DWT;
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
23 import dwt.internal.gtk.OS;
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
24 import dwt.events.ArmListener;
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
25 import dwt.events.HelpListener;
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
26 import dwt.events.SelectionListener;
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
27 import dwt.events.SelectionEvent;
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
28 import dwt.widgets.TypedListener;
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
29 import dwt.widgets.Event;
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
30 import dwt.widgets.Display;
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31
158
de2578a843a7 Tango update to rev 3158, TracedException>Exception, fromUtf8z>fromStringz,Fix Bug in MenuItem Thanx to nascent for the report.
Frank Benoit <benoit@tionex.de>
parents: 152
diff changeset
32 import dwt.dwthelper.utils;
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
33
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
34 /**
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35 * Instances of this class represent a selectable user interface object
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
36 * that issues notification when pressed and released.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
37 * <dl>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
38 * <dt><b>Styles:</b></dt>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
39 * <dd>CHECK, CASCADE, PUSH, RADIO, SEPARATOR</dd>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
40 * <dt><b>Events:</b></dt>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
41 * <dd>Arm, Help, Selection</dd>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
42 * </dl>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
43 * <p>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
44 * Note: Only one of the styles CHECK, CASCADE, PUSH, RADIO and SEPARATOR
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
45 * may be specified.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
46 * </p><p>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
47 * IMPORTANT: This class is <em>not</em> intended to be subclassed.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
48 * </p>
259
c0d810de7093 Update SWT 3.4M7 to 3.4
Frank Benoit <benoit@tionex.de>
parents: 255
diff changeset
49 *
c0d810de7093 Update SWT 3.4M7 to 3.4
Frank Benoit <benoit@tionex.de>
parents: 255
diff changeset
50 * @see <a href="http://www.eclipse.org/swt/">Sample code and further information</a>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
51 */
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
52 public class MenuItem : Item {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
53 Menu parent, menu;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
54 GtkAccelGroup* groupHandle;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
55 int accelerator;
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
56
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
57 /**
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
58 * Constructs a new instance of this class given its parent
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
59 * (which must be a <code>Menu</code>) and a style value
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
60 * describing its behavior and appearance. The item is added
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
61 * to the end of the items maintained by its parent.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
62 * <p>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
63 * The style value is either one of the style constants defined in
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
64 * class <code>DWT</code> which is applicable to instances of this
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
65 * class, or must be built by <em>bitwise OR</em>'ing together
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
66 * (that is, using the <code>int</code> "|" operator) two or more
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
67 * of those <code>DWT</code> style constants. The class description
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
68 * lists the style constants that are applicable to the class.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
69 * Style bits are also inherited from superclasses.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
70 * </p>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
71 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
72 * @param parent a menu control which will be the parent of the new instance (cannot be null)
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
73 * @param style the style of control to construct
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
74 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
75 * @exception IllegalArgumentException <ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
76 * <li>ERROR_NULL_ARGUMENT - if the parent is null</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
77 * </ul>
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
78 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
79 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
80 * <li>ERROR_INVALID_SUBCLASS - if this class is not an allowed subclass</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
81 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
82 *
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
83 * @see DWT#CHECK
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
84 * @see DWT#CASCADE
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
85 * @see DWT#PUSH
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
86 * @see DWT#RADIO
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
87 * @see DWT#SEPARATOR
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
88 * @see Widget#checkSubclass
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
89 * @see Widget#getStyle
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
90 */
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
91 public this (Menu parent, int style) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
92 super (parent, checkStyle (style));
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
93 this.parent = parent;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
94 createWidget (parent.getItemCount ());
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
95 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
96
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
97 /**
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
98 * Constructs a new instance of this class given its parent
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
99 * (which must be a <code>Menu</code>), a style value
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
100 * describing its behavior and appearance, and the index
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
101 * at which to place it in the items maintained by its parent.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
102 * <p>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
103 * The style value is either one of the style constants defined in
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
104 * class <code>DWT</code> which is applicable to instances of this
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
105 * class, or must be built by <em>bitwise OR</em>'ing together
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
106 * (that is, using the <code>int</code> "|" operator) two or more
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
107 * of those <code>DWT</code> style constants. The class description
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
108 * lists the style constants that are applicable to the class.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
109 * Style bits are also inherited from superclasses.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
110 * </p>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
111 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
112 * @param parent a menu control which will be the parent of the new instance (cannot be null)
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
113 * @param style the style of control to construct
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
114 * @param index the zero-relative index to store the receiver in its parent
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
115 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
116 * @exception IllegalArgumentException <ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
117 * <li>ERROR_NULL_ARGUMENT - if the parent is null</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
118 * <li>ERROR_INVALID_RANGE - if the index is not between 0 and the number of elements in the parent (inclusive)</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
119 * </ul>
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
120 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
121 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
122 * <li>ERROR_INVALID_SUBCLASS - if this class is not an allowed subclass</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
123 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
124 *
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
125 * @see DWT#CHECK
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
126 * @see DWT#CASCADE
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
127 * @see DWT#PUSH
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
128 * @see DWT#RADIO
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
129 * @see DWT#SEPARATOR
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
130 * @see Widget#checkSubclass
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
131 * @see Widget#getStyle
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
132 */
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
133 public this (Menu parent, int style, int index) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
134 super (parent, checkStyle (style));
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
135 this.parent = parent;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
136 int count = parent.getItemCount ();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
137 if (!(0 <= index && index <= count)) {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
138 error (DWT.ERROR_INVALID_RANGE);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
139 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
140 createWidget (index);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
141 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
142
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
143 void addAccelerator (GtkAccelGroup* accelGroup) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
144 updateAccelerator (accelGroup, true);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
145 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
146
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
147 void addAccelerators (GtkAccelGroup* accelGroup) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
148 addAccelerator (accelGroup);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
149 if (menu !is null) menu.addAccelerators (accelGroup);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
150 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
151
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
152 /**
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
153 * Adds the listener to the collection of listeners who will
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
154 * be notified when the arm events are generated for the control, by sending
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
155 * it one of the messages defined in the <code>ArmListener</code>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
156 * interface.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
157 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
158 * @param listener the listener which should be notified
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
159 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
160 * @exception IllegalArgumentException <ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
161 * <li>ERROR_NULL_ARGUMENT - if the listener is null</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
162 * </ul>
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
163 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
164 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
165 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
166 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
167 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
168 * @see ArmListener
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
169 * @see #removeArmListener
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
170 */
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
171 public void addArmListener (ArmListener listener) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
172 checkWidget();
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
173 if (listener is null) error (DWT.ERROR_NULL_ARGUMENT);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
174 TypedListener typedListener = new TypedListener (listener);
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
175 addListener (DWT.Arm, typedListener);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
176 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
177
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
178 /**
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
179 * Adds the listener to the collection of listeners who will
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
180 * be notified when the help events are generated for the control, by sending
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
181 * it one of the messages defined in the <code>HelpListener</code>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
182 * interface.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
183 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
184 * @param listener the listener which should be notified
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
185 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
186 * @exception IllegalArgumentException <ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
187 * <li>ERROR_NULL_ARGUMENT - if the listener is null</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
188 * </ul>
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
189 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
190 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
191 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
192 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
193 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
194 * @see HelpListener
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
195 * @see #removeHelpListener
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
196 */
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
197 public void addHelpListener (HelpListener listener) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
198 checkWidget();
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
199 if (listener is null) error (DWT.ERROR_NULL_ARGUMENT);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
200 TypedListener typedListener = new TypedListener (listener);
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
201 addListener (DWT.Help, typedListener);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
202 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
203
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
204 /**
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
205 * Adds the listener to the collection of listeners who will
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
206 * be notified when the menu item is selected by the user, by sending
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
207 * it one of the messages defined in the <code>SelectionListener</code>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
208 * interface.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
209 * <p>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
210 * When <code>widgetSelected</code> is called, the stateMask field of the event object is valid.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
211 * <code>widgetDefaultSelected</code> is not called.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
212 * </p>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
213 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
214 * @param listener the listener which should be notified when the menu item is selected by the user
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
215 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
216 * @exception IllegalArgumentException <ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
217 * <li>ERROR_NULL_ARGUMENT - if the listener is null</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
218 * </ul>
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
219 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
220 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
221 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
222 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
223 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
224 * @see SelectionListener
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
225 * @see #removeSelectionListener
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
226 * @see SelectionEvent
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
227 */
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
228 public void addSelectionListener (SelectionListener listener) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
229 checkWidget();
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
230 if (listener is null) error (DWT.ERROR_NULL_ARGUMENT);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
231 TypedListener typedListener = new TypedListener(listener);
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
232 addListener (DWT.Selection,typedListener);
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
233 addListener (DWT.DefaultSelection,typedListener);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
234 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
235
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
236 static int checkStyle (int style) {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
237 return checkBits (style, DWT.PUSH, DWT.CHECK, DWT.RADIO, DWT.SEPARATOR, DWT.CASCADE, 0);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
238 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
239
152
17f8449522fd overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
240 protected override void checkSubclass () {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
241 if (!isValidSubclass ()) error (DWT.ERROR_INVALID_SUBCLASS);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
242 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
243
152
17f8449522fd overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
244 override void createHandle (int index) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
245 state |= HANDLE;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
246 char [] buffer = "\0";
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
247 int bits = DWT.CHECK | DWT.RADIO | DWT.PUSH | DWT.SEPARATOR;
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
248 switch (style & bits) {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
249 case DWT.SEPARATOR:
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
250 handle = OS.gtk_separator_menu_item_new ();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
251 break;
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
252 case DWT.RADIO:
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
253 /*
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
254 * Feature in GTK. In GTK, radio button must always be part of
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
255 * a radio button group. In a GTK radio group, one button is always
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
256 * selected. This means that it is not possible to have a single
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
257 * radio button that is unselected. This is necessary to allow
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
258 * applications to implement their own radio behavior or use radio
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
259 * buttons outside of radio groups. The fix is to create a hidden
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
260 * radio button for each radio button we create and add them
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
261 * to the same group. This allows the visible button to be
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
262 * unselected.
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
263 */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
264 groupHandle = cast(GtkAccelGroup*) OS.gtk_radio_menu_item_new (null);
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
265 if (groupHandle is null) error (DWT.ERROR_NO_HANDLES);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
266 OS.g_object_ref (groupHandle);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
267 OS.gtk_object_sink (cast(GtkObject*)groupHandle);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
268 auto group = OS.gtk_radio_menu_item_get_group (cast(GtkRadioMenuItem*) groupHandle);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
269 handle = OS.gtk_radio_menu_item_new_with_label (group, buffer.ptr);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
270 break;
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
271 case DWT.CHECK:
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
272 handle = OS.gtk_check_menu_item_new_with_label (buffer.ptr);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
273 break;
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
274 case DWT.PUSH:
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
275 default:
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
276 handle = OS.gtk_image_menu_item_new_with_label (buffer.ptr);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
277 break;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
278 }
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
279 if (handle is null) error (DWT.ERROR_NO_HANDLES);
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
280 if ((style & DWT.SEPARATOR) is 0) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
281 auto label = OS.gtk_bin_get_child (cast(GtkBin*)handle);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
282 OS.gtk_accel_label_set_accel_widget (cast(GtkAccelLabel*)label, null);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
283 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
284 auto parentHandle = parent.handle;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
285 bool enabled = OS.GTK_WIDGET_SENSITIVE (parentHandle);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
286 if (!enabled) OS.GTK_WIDGET_SET_FLAGS (parentHandle, OS.GTK_SENSITIVE);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
287 OS.gtk_menu_shell_insert (cast(GtkMenuShell*)parentHandle, handle, index);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
288 if (!enabled) OS.GTK_WIDGET_UNSET_FLAGS (parentHandle, OS.GTK_SENSITIVE);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
289 OS.gtk_widget_show (handle);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
290 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
291
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
292 void fixMenus (Decorations newParent) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
293 if (menu !is null) menu.fixMenus (newParent);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
294 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
295
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
296 /**
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
297 * Returns the widget accelerator. An accelerator is the bit-wise
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
298 * OR of zero or more modifier masks and a key. Examples:
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
299 * <code>DWT.CONTROL | DWT.SHIFT | 'T', DWT.ALT | DWT.F2</code>.
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
300 * The default value is zero, indicating that the menu item does
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
301 * not have an accelerator.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
302 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
303 * @return the accelerator or 0
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
304 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
305 * </ul>
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
306 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
307 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
308 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
309 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
310 */
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
311 public int getAccelerator () {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
312 checkWidget();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
313 return accelerator;
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
314 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
315
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
316 GtkAccelGroup* getAccelGroup () {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
317 Menu menu = parent;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
318 while (menu !is null && menu.cascade !is null) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
319 menu = menu.cascade.parent;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
320 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
321 if (menu is null) return null;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
322 Decorations shell = menu.parent;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
323 return shell.menuBar is menu ? shell.accelGroup : null;
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
324 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
325
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
326 /*public*/ Rectangle getBounds () {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
327 checkWidget();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
328 if (!OS.GTK_WIDGET_MAPPED (handle)) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
329 return new Rectangle (0, 0, 0, 0);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
330 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
331 int x = OS.GTK_WIDGET_X (handle);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
332 int y = OS.GTK_WIDGET_Y (handle);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
333 int width = OS.GTK_WIDGET_WIDTH (handle);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
334 int height = OS.GTK_WIDGET_HEIGHT (handle);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
335 return new Rectangle (x, y, width, height);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
336 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
337
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
338 /**
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
339 * Returns <code>true</code> if the receiver is enabled, and
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
340 * <code>false</code> otherwise. A disabled menu item is typically
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
341 * not selectable from the user interface and draws with an
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
342 * inactive or "grayed" look.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
343 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
344 * @return the receiver's enabled state
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
345 *
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
346 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
347 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
348 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
349 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
350 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
351 * @see #isEnabled
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
352 */
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
353 public bool getEnabled () {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
354 checkWidget();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
355 return OS.GTK_WIDGET_SENSITIVE (handle);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
356 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
357
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
358 /**
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
359 * Returns the receiver's cascade menu if it has one or null
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
360 * if it does not. Only <code>CASCADE</code> menu items can have
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
361 * a pull down menu. The sequence of key strokes, button presses
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
362 * and/or button releases that are used to request a pull down
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
363 * menu is platform specific.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
364 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
365 * @return the receiver's menu
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
366 *
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
367 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
368 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
369 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
370 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
371 */
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
372 public Menu getMenu () {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
373 checkWidget();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
374 return menu;
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
375 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
376
240
ce446666f5a2 Update to SWT 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 238
diff changeset
377 String getNameText () {
ce446666f5a2 Update to SWT 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 238
diff changeset
378 if ((style & DWT.SEPARATOR) !is 0) return "|";
ce446666f5a2 Update to SWT 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 238
diff changeset
379 return super.getNameText ();
ce446666f5a2 Update to SWT 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 238
diff changeset
380 }
ce446666f5a2 Update to SWT 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 238
diff changeset
381
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
382 /**
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
383 * Returns the receiver's parent, which must be a <code>Menu</code>.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
384 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
385 * @return the receiver's parent
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
386 *
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
387 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
388 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
389 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
390 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
391 */
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
392 public Menu getParent () {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
393 checkWidget();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
394 return parent;
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
395 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
396
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
397 /**
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
398 * Returns <code>true</code> if the receiver is selected,
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
399 * and false otherwise.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
400 * <p>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
401 * When the receiver is of type <code>CHECK</code> or <code>RADIO</code>,
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
402 * it is selected when it is checked.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
403 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
404 * @return the selection state
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
405 *
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
406 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
407 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
408 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
409 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
410 */
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
411 public bool getSelection () {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
412 checkWidget();
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
413 if ((style & (DWT.CHECK | DWT.RADIO)) is 0) return false;
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
414 return cast(bool)OS.gtk_check_menu_item_get_active(cast(GtkCheckMenuItem*)handle);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
415 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
416
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
417 override int /*long*/ gtk_activate (GtkWidget* widget) {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
418 if ((style & DWT.CASCADE) !is 0 && menu !is null) return 0;
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
419 /*
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
420 * Bug in GTK. When an ancestor menu is disabled and
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
421 * the user types an accelerator key, GTK delivers the
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
422 * the activate signal even though the menu item cannot
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
423 * be invoked using the mouse. The fix is to ignore
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
424 * activate signals when an ancestor menu is disabled.
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
425 */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
426 if (!isEnabled ()) return 0;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
427 Event event = new Event ();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
428 auto ptr = OS.gtk_get_current_event ();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
429 if (ptr !is null) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
430 GdkEvent* gdkEvent = ptr;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
431 switch (gdkEvent.type) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
432 case OS.GDK_KEY_PRESS:
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
433 case OS.GDK_KEY_RELEASE:
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
434 case OS.GDK_BUTTON_PRESS:
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
435 case OS.GDK_2BUTTON_PRESS:
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
436 case OS.GDK_BUTTON_RELEASE: {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
437 int state;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
438 OS.gdk_event_get_state (ptr, &state);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
439 setInputState (event, state);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
440 break;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
441 }
55
93981635e709 Checked and inserted missing default switch cases.
Frank Benoit <benoit@tionex.de>
parents: 48
diff changeset
442 default:
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
443 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
444 OS.gdk_event_free (ptr);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
445 }
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
446 if ((style & DWT.RADIO) !is 0) {
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
447 if ((parent.getStyle () & DWT.NO_RADIO_GROUP) is 0) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
448 selectRadio ();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
449 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
450 }
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
451 postEvent (DWT.Selection, event);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
452 return 0;
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
453 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
454
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
455 override int /*long*/ gtk_select (int /*long*/ item) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
456 parent.selectedItem = this;
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
457 sendEvent (DWT.Arm);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
458 return 0;
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
459 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
460
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
461 override int /*long*/ gtk_show_help (GtkWidget* widget, int /*long*/ helpType) {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
462 bool handled = hooks (DWT.Help);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
463 if (handled) {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
464 postEvent (DWT.Help);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
465 } else {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
466 handled = parent.sendHelpEvent (helpType);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
467 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
468 if (handled) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
469 OS.gtk_menu_shell_deactivate (cast(GtkMenuShell*)parent.handle);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
470 return 1;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
471 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
472 return 0;
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
473 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
474
152
17f8449522fd overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
475 override void hookEvents () {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
476 super.hookEvents ();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
477 OS.g_signal_connect_closure (handle, OS.activate.ptr, display.closures [ACTIVATE], false);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
478 OS.g_signal_connect_closure (handle, OS.select.ptr, display.closures [SELECT], false);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
479 OS.g_signal_connect_closure_by_id (handle, display.signalIds [SHOW_HELP], 0, display.closures [SHOW_HELP], false);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
480 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
481
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
482 /**
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
483 * Returns <code>true</code> if the receiver is enabled and all
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
484 * of the receiver's ancestors are enabled, and <code>false</code>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
485 * otherwise. A disabled menu item is typically not selectable from the
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
486 * user interface and draws with an inactive or "grayed" look.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
487 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
488 * @return the receiver's enabled state
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
489 *
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
490 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
491 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
492 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
493 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
494 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
495 * @see #getEnabled
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
496 */
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
497 public bool isEnabled () {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
498 return getEnabled () && parent.isEnabled ();
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
499 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
500
152
17f8449522fd overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
501 override void releaseChildren (bool destroy) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
502 if (menu !is null) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
503 menu.release (false);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
504 menu = null;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
505 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
506 super.releaseChildren (destroy);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
507 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
508
152
17f8449522fd overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
509 override void releaseParent () {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
510 super.releaseParent ();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
511 if (menu !is null) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
512 if (menu.selectedItem is this) menu.selectedItem = null;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
513 menu.dispose ();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
514 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
515 menu = null;
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
516 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
517
152
17f8449522fd overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
518 override void releaseWidget () {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
519 super.releaseWidget ();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
520 auto accelGroup = getAccelGroup ();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
521 if (accelGroup !is null) removeAccelerator (accelGroup);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
522 if (groupHandle !is null) OS.g_object_unref (groupHandle);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
523 groupHandle = null;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
524 accelerator = 0;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
525 parent = null;
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
526 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
527
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
528 void removeAccelerator (GtkAccelGroup* accelGroup) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
529 updateAccelerator (accelGroup, false);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
530 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
531
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
532 void removeAccelerators (GtkAccelGroup* accelGroup) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
533 removeAccelerator (accelGroup);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
534 if (menu !is null) menu.removeAccelerators (accelGroup);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
535 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
536
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
537 /**
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
538 * Removes the listener from the collection of listeners who will
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
539 * be notified when the arm events are generated for the control.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
540 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
541 * @param listener the listener which should no longer be notified
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
542 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
543 * @exception IllegalArgumentException <ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
544 * <li>ERROR_NULL_ARGUMENT - if the listener is null</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
545 * </ul>
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
546 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
547 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
548 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
549 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
550 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
551 * @see ArmListener
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
552 * @see #addArmListener
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
553 */
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
554 public void removeArmListener (ArmListener listener) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
555 checkWidget();
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
556 if (listener is null) error (DWT.ERROR_NULL_ARGUMENT);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
557 if (eventTable is null) return;
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
558 eventTable.unhook (DWT.Arm, listener);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
559 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
560
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
561 /**
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
562 * Removes the listener from the collection of listeners who will
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
563 * be notified when the help events are generated for the control.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
564 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
565 * @param listener the listener which should no longer be notified
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
566 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
567 * @exception IllegalArgumentException <ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
568 * <li>ERROR_NULL_ARGUMENT - if the listener is null</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
569 * </ul>
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
570 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
571 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
572 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
573 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
574 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
575 * @see HelpListener
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
576 * @see #addHelpListener
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
577 */
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
578 public void removeHelpListener (HelpListener listener) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
579 checkWidget();
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
580 if (listener is null) error (DWT.ERROR_NULL_ARGUMENT);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
581 if (eventTable is null) return;
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
582 eventTable.unhook (DWT.Help, listener);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
583 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
584
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
585 /**
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
586 * Removes the listener from the collection of listeners who will
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
587 * be notified when the control is selected by the user.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
588 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
589 * @param listener the listener which should no longer be notified
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
590 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
591 * @exception IllegalArgumentException <ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
592 * <li>ERROR_NULL_ARGUMENT - if the listener is null</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
593 * </ul>
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
594 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
595 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
596 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
597 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
598 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
599 * @see SelectionListener
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
600 * @see #addSelectionListener
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
601 */
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
602 public void removeSelectionListener (SelectionListener listener) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
603 checkWidget();
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
604 if (listener is null) error (DWT.ERROR_NULL_ARGUMENT);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
605 if (eventTable is null) return;
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
606 eventTable.unhook (DWT.Selection, listener);
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
607 eventTable.unhook (DWT.DefaultSelection,listener);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
608 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
609 void selectRadio () {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
610 int index = 0;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
611 MenuItem [] items = parent.getItems ();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
612 while (index < items.length && items [index] !is this) index++;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
613 int i = index - 1;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
614 while (i >= 0 && items [i].setRadioSelection (false)) --i;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
615 int j = index + 1;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
616 while (j < items.length && items [j].setRadioSelection (false)) j++;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
617 setSelection (true);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
618 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
619 /**
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
620 * Sets the widget accelerator. An accelerator is the bit-wise
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
621 * OR of zero or more modifier masks and a key. Examples:
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
622 * <code>DWT.MOD1 | DWT.MOD2 | 'T', DWT.MOD3 | DWT.F2</code>.
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
623 * <code>DWT.CONTROL | DWT.SHIFT | 'T', DWT.ALT | DWT.F2</code>.
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
624 * The default value is zero, indicating that the menu item does
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
625 * not have an accelerator.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
626 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
627 * @param accelerator an integer that is the bit-wise OR of masks and a key
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
628 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
629 * </ul>
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
630 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
631 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
632 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
633 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
634 */
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
635 public void setAccelerator (int accelerator) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
636 checkWidget();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
637 if (this.accelerator is accelerator) return;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
638 auto accelGroup = getAccelGroup ();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
639 if (accelGroup !is null) removeAccelerator (accelGroup);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
640 this.accelerator = accelerator;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
641 if (accelGroup !is null) addAccelerator (accelGroup);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
642 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
643
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
644 /**
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
645 * Enables the receiver if the argument is <code>true</code>,
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
646 * and disables it otherwise. A disabled menu item is typically
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
647 * not selectable from the user interface and draws with an
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
648 * inactive or "grayed" look.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
649 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
650 * @param enabled the new enabled state
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
651 *
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
652 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
653 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
654 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
655 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
656 */
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
657 public void setEnabled (bool enabled) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
658 checkWidget();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
659 if (OS.GTK_WIDGET_SENSITIVE (handle) is enabled) return;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
660 auto accelGroup = getAccelGroup ();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
661 if (accelGroup !is null) removeAccelerator (accelGroup);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
662 OS.gtk_widget_set_sensitive (handle, enabled);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
663 if (accelGroup !is null) addAccelerator (accelGroup);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
664 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
665
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
666 /**
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
667 * Sets the image the receiver will display to the argument.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
668 * <p>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
669 * Note: This operation is a hint and is not supported on
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
670 * platforms that do not have this concept (for example, Windows NT).
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
671 * </p>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
672 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
673 * @param image the image to display
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
674 *
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
675 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
676 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
677 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
678 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
679 */
150
f2e04420fd6c reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents: 72
diff changeset
680 public override void setImage (Image image) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
681 checkWidget();
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
682 if ((style & DWT.SEPARATOR) !is 0) return;
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
683 super.setImage (image);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
684 if (!OS.GTK_IS_IMAGE_MENU_ITEM (cast(GTypeInstance*)handle)) return;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
685 if (image !is null) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
686 ImageList imageList = parent.imageList;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
687 if (imageList is null) imageList = parent.imageList = new ImageList ();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
688 int imageIndex = imageList.indexOf (image);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
689 if (imageIndex is -1) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
690 imageIndex = imageList.add (image);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
691 } else {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
692 imageList.put (imageIndex, image);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
693 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
694 auto pixbuf = imageList.getPixbuf (imageIndex);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
695 auto imageHandle = OS.gtk_image_new_from_pixbuf (pixbuf);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
696 OS.gtk_image_menu_item_set_image (cast(GtkImageMenuItem*)handle, imageHandle);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
697 OS.gtk_widget_show (imageHandle);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
698 } else {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
699 OS.gtk_image_menu_item_set_image (cast(GtkImageMenuItem*)handle, null);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
700 }
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
701 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
702
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
703 /**
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
704 * Sets the receiver's pull down menu to the argument.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
705 * Only <code>CASCADE</code> menu items can have a
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
706 * pull down menu. The sequence of key strokes, button presses
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
707 * and/or button releases that are used to request a pull down
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
708 * menu is platform specific.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
709 * <p>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
710 * Note: Disposing of a menu item that has a pull down menu
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
711 * will dispose of the menu. To avoid this behavior, set the
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
712 * menu to null before the menu item is disposed.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
713 * </p>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
714 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
715 * @param menu the new pull down menu
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
716 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
717 * @exception IllegalArgumentException <ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
718 * <li>ERROR_MENU_NOT_DROP_DOWN - if the menu is not a drop down menu</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
719 * <li>ERROR_MENUITEM_NOT_CASCADE - if the menu item is not a <code>CASCADE</code></li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
720 * <li>ERROR_INVALID_ARGUMENT - if the menu has been disposed</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
721 * <li>ERROR_INVALID_PARENT - if the menu is not in the same widget tree</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
722 * </ul>
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
723 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
724 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
725 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
726 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
727 */
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
728 public void setMenu (Menu menu) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
729 checkWidget ();
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
730
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
731 /* Check to make sure the new menu is valid */
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
732 if ((style & DWT.CASCADE) is 0) {
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
733 error (DWT.ERROR_MENUITEM_NOT_CASCADE);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
734 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
735 if (menu !is null) {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
736 if ((menu.style & DWT.DROP_DOWN) is 0) {
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
737 error (DWT.ERROR_MENU_NOT_DROP_DOWN);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
738 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
739 if (menu.parent !is parent.parent) {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
740 error (DWT.ERROR_INVALID_PARENT);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
741 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
742 }
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
743
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
744 /* Assign the new menu */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
745 Menu oldMenu = this.menu;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
746 if (oldMenu is menu) return;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
747 auto accelGroup = getAccelGroup ();
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
748 if (accelGroup !is null) removeAccelerators (accelGroup);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
749 if (oldMenu !is null) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
750 oldMenu.cascade = null;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
751 /*
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
752 * Add a reference to the menu we are about
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
753 * to replace or GTK will destroy it.
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
754 */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
755 OS.g_object_ref (oldMenu.handle);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
756 OS.gtk_menu_item_remove_submenu (cast(GtkMenuItem*)handle);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
757 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
758 if ((this.menu = menu) !is null) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
759 menu.cascade = this;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
760 OS.gtk_menu_item_set_submenu (cast(GtkMenuItem*)handle, menu.handle);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
761 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
762 if (accelGroup !is null) addAccelerators (accelGroup);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
763 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
764
152
17f8449522fd overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
765 override void setOrientation() {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
766 if ((parent.style & DWT.RIGHT_TO_LEFT) !is 0) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
767 if (handle !is null) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
768 OS.gtk_widget_set_direction (handle, OS.GTK_TEXT_DIR_RTL);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
769 OS.gtk_container_forall (cast(GtkContainer*)handle, cast(GtkCallback)&Display.setDirectionProcFunc, cast(void*)OS.GTK_TEXT_DIR_RTL);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
770 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
771 }
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
772 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
773
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
774 bool setRadioSelection (bool value) {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
775 if ((style & DWT.RADIO) is 0) return false;
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
776 if (getSelection () !is value) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
777 setSelection (value);
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
778 postEvent (DWT.Selection);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
779 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
780 return true;
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
781 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
782
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
783 /**
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
784 * Sets the selection state of the receiver.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
785 * <p>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
786 * When the receiver is of type <code>CHECK</code> or <code>RADIO</code>,
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
787 * it is selected when it is checked.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
788 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
789 * @param selected the new selection state
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
790 *
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
791 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
792 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
8e9ea24111fd Menu, MenuItem
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>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
794 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
795 */
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
796 public void setSelection (bool selected) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
797 checkWidget();
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
798 if ((style & (DWT.CHECK | DWT.RADIO)) is 0) return;
158
de2578a843a7 Tango update to rev 3158, TracedException>Exception, fromUtf8z>fromStringz,Fix Bug in MenuItem Thanx to nascent for the report.
Frank Benoit <benoit@tionex.de>
parents: 152
diff changeset
799 OS.g_signal_handlers_block_matched (handle, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, udACTIVATE);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
800 OS.gtk_check_menu_item_set_active (cast(GtkCheckMenuItem*)handle, selected);
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
801 if ((style & DWT.RADIO) !is 0) OS.gtk_check_menu_item_set_active (cast(GtkCheckMenuItem*)groupHandle, !selected);
158
de2578a843a7 Tango update to rev 3158, TracedException>Exception, fromUtf8z>fromStringz,Fix Bug in MenuItem Thanx to nascent for the report.
Frank Benoit <benoit@tionex.de>
parents: 152
diff changeset
802 OS.g_signal_handlers_unblock_matched (handle, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, udACTIVATE);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
803 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
804
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
805 /**
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
806 * Sets the receiver's text. The string may include
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
807 * the mnemonic character and accelerator text.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
808 * <p>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
809 * Mnemonics are indicated by an '&amp;' that causes the next
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
810 * character to be the mnemonic. When the user presses a
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
811 * key sequence that matches the mnemonic, a selection
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
812 * event occurs. On most platforms, the mnemonic appears
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
813 * underlined but may be emphasised in a platform specific
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
814 * manner. The mnemonic indicator character '&amp;' can be
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
815 * escaped by doubling it in the string, causing a single
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
816 * '&amp;' to be displayed.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
817 * </p>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
818 * <p>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
819 * Accelerator text is indicated by the '\t' character.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
820 * On platforms that support accelerator text, the text
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
821 * that follows the '\t' character is displayed to the user,
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
822 * typically indicating the key stroke that will cause
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
823 * the item to become selected. On most platforms, the
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
824 * accelerator text appears right aligned in the menu.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
825 * Setting the accelerator text does not install the
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
826 * accelerator key sequence. The accelerator key sequence
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
827 * is installed using #setAccelerator.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
828 * </p>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
829 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
830 * @param string the new text
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
831 *
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
832 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
833 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
834 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
835 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
836 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
837 * @see #setAccelerator
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
838 */
238
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 158
diff changeset
839 public override void setText (String string) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
840 checkWidget();
255
5a30aa9820f3 removed tango.stdc.stringz imports and allow null for arrays and string arguments.
Frank Benoit <benoit@tionex.de>
parents: 248
diff changeset
841 // DWT extension: allow null for zero length string
5a30aa9820f3 removed tango.stdc.stringz imports and allow null for arrays and string arguments.
Frank Benoit <benoit@tionex.de>
parents: 248
diff changeset
842 //if (string is null) error (DWT.ERROR_NULL_ARGUMENT);
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
843 if ((style & DWT.SEPARATOR) !is 0) return;
158
de2578a843a7 Tango update to rev 3158, TracedException>Exception, fromUtf8z>fromStringz,Fix Bug in MenuItem Thanx to nascent for the report.
Frank Benoit <benoit@tionex.de>
parents: 152
diff changeset
844 if (text.equals(string)) return;
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
845 super.setText (string);
238
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 158
diff changeset
846 String accelString = "";
158
de2578a843a7 Tango update to rev 3158, TracedException>Exception, fromUtf8z>fromStringz,Fix Bug in MenuItem Thanx to nascent for the report.
Frank Benoit <benoit@tionex.de>
parents: 152
diff changeset
847 int index = string.indexOf ('\t');
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
848 if (index !is -1) {
240
ce446666f5a2 Update to SWT 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 238
diff changeset
849 bool isRTL = (parent.style & DWT.RIGHT_TO_LEFT) !is 0;
ce446666f5a2 Update to SWT 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 238
diff changeset
850 accelString = (isRTL? "" : " ") ~ string.substring (index+1, string.length) ~ (isRTL? " " : "");
158
de2578a843a7 Tango update to rev 3158, TracedException>Exception, fromUtf8z>fromStringz,Fix Bug in MenuItem Thanx to nascent for the report.
Frank Benoit <benoit@tionex.de>
parents: 152
diff changeset
851 string = string.substring (0, index);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
852 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
853 char [] chars = fixMnemonic (string);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
854 auto label = OS.gtk_bin_get_child (cast(GtkBin*)handle);
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
855 OS.gtk_label_set_text_with_mnemonic (cast(GtkLabel*)label, chars.toStringzValidPtr() );
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
856
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
857 auto ptr = cast(char*)OS.g_malloc (accelString.length + 1);
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
858 ptr[ 0 .. accelString.length ] = accelString;
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
859 ptr[ accelString.length ] = '\0';
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
860
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
861 auto oldPtr = OS.GTK_ACCEL_LABEL_GET_ACCEL_STRING (cast(GtkAccelLabel*)label);
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
862 OS.GTK_ACCEL_LABEL_SET_ACCEL_STRING (cast(GtkAccelLabel*)label, ptr);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
863 if (oldPtr !is null) OS.g_free (oldPtr);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
864 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
865
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
866 void updateAccelerator (GtkAccelGroup* accelGroup, bool add) {
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
867 if (accelerator is 0 || !getEnabled ()) return;
240
ce446666f5a2 Update to SWT 3.4M7
Frank Benoit <benoit@tionex.de>
parents: 238
diff changeset
868 if ((accelerator & DWT.COMMAND) !is 0) return;
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
869 int mask = 0;
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
870 if ((accelerator & DWT.ALT) !is 0) mask |= OS.GDK_MOD1_MASK;
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
871 if ((accelerator & DWT.SHIFT) !is 0) mask |= OS.GDK_SHIFT_MASK;
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
872 if ((accelerator & DWT.CONTROL) !is 0) mask |= OS.GDK_CONTROL_MASK;
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
873 int keysym = accelerator & DWT.KEY_MASK;
59
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
874 int newKey = Display.untranslateKey (keysym);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
875 if (newKey !is 0) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
876 keysym = newKey;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
877 } else {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
878 switch (keysym) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
879 case '\r': keysym = OS.GDK_Return; break;
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
880 default: keysym = Display.wcsToMbcs (cast(char) keysym);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
881 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
882 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
883 /* When accel_key is zero, it causes GTK warnings */
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
884 if (keysym !is 0) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
885 if (add) {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
886 OS.gtk_widget_add_accelerator (handle, OS.activate.ptr, accelGroup, keysym, mask, OS.GTK_ACCEL_VISIBLE);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
887 } else {
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
888 OS.gtk_widget_remove_accelerator (handle, accelGroup, keysym, mask);
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
889 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
890 }
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
891 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
892 }