annotate dwt/widgets/MenuItem.d @ 238:380bad9f6852

reverted char[] to String
author Frank Benoit <benoit@tionex.de>
date Mon, 05 May 2008 00:42:55 +0200
parents de2578a843a7
children ce446666f5a2
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 /*******************************************************************************
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2 * Copyright (c) 2000, 2007 IBM Corporation and others.
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 import tango.stdc.stringz;
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
34
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35 /**
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
36 * Instances of this class represent a selectable user interface object
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
37 * that issues notification when pressed and released.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
38 * <dl>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
39 * <dt><b>Styles:</b></dt>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
40 * <dd>CHECK, CASCADE, PUSH, RADIO, SEPARATOR</dd>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
41 * <dt><b>Events:</b></dt>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
42 * <dd>Arm, Help, Selection</dd>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
43 * </dl>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
44 * <p>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
45 * Note: Only one of the styles CHECK, CASCADE, PUSH, RADIO and SEPARATOR
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
46 * may be specified.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
47 * </p><p>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
48 * IMPORTANT: This class is <em>not</em> intended to be subclassed.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
49 * </p>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
50 */
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
51 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
52 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
53 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
54 int accelerator;
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
55
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
56 /**
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
57 * Constructs a new instance of this class given its parent
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
58 * (which must be a <code>Menu</code>) and a style value
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
59 * describing its behavior and appearance. The item is added
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
60 * to the end of the items maintained by its parent.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
61 * <p>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
62 * 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
63 * class <code>DWT</code> which is applicable to instances of this
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
64 * class, or must be built by <em>bitwise OR</em>'ing together
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
65 * (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
66 * of those <code>DWT</code> style constants. The class description
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
67 * lists the style constants that are applicable to the class.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
68 * Style bits are also inherited from superclasses.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
69 * </p>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
70 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
71 * @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
72 * @param style the style of control to construct
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
73 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
74 * @exception IllegalArgumentException <ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
75 * <li>ERROR_NULL_ARGUMENT - if the parent is null</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
76 * </ul>
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
77 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
78 * <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
79 * <li>ERROR_INVALID_SUBCLASS - if this class is not an allowed subclass</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
80 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
81 *
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
82 * @see DWT#CHECK
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
83 * @see DWT#CASCADE
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
84 * @see DWT#PUSH
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
85 * @see DWT#RADIO
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
86 * @see DWT#SEPARATOR
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
87 * @see Widget#checkSubclass
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
88 * @see Widget#getStyle
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
89 */
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
90 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
91 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
92 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
93 createWidget (parent.getItemCount ());
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
94 }
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 * Constructs a new instance of this class given its parent
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
98 * (which must be a <code>Menu</code>), a style value
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
99 * describing its behavior and appearance, and the index
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
100 * at which to place it in the items maintained by its parent.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
101 * <p>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
102 * 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
103 * class <code>DWT</code> which is applicable to instances of this
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
104 * class, or must be built by <em>bitwise OR</em>'ing together
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
105 * (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
106 * of those <code>DWT</code> style constants. The class description
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
107 * lists the style constants that are applicable to the class.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
108 * Style bits are also inherited from superclasses.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
109 * </p>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
110 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
111 * @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
112 * @param style the style of control to construct
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
113 * @param index the zero-relative index to store the receiver in its parent
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
114 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
115 * @exception IllegalArgumentException <ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
116 * <li>ERROR_NULL_ARGUMENT - if the parent is null</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
117 * <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
118 * </ul>
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
119 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
120 * <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
121 * <li>ERROR_INVALID_SUBCLASS - if this class is not an allowed subclass</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
122 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
123 *
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
124 * @see DWT#CHECK
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
125 * @see DWT#CASCADE
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
126 * @see DWT#PUSH
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
127 * @see DWT#RADIO
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
128 * @see DWT#SEPARATOR
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
129 * @see Widget#checkSubclass
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
130 * @see Widget#getStyle
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
131 */
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
132 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
133 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
134 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
135 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
136 if (!(0 <= index && index <= count)) {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
137 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
138 }
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 createWidget (index);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
140 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
141
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
142 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
143 updateAccelerator (accelGroup, true);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
144 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
145
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
146 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
147 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
148 if (menu !is null) menu.addAccelerators (accelGroup);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
149 }
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 * Adds the listener to the collection of listeners who will
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
153 * be notified when the arm events are generated for the control, by sending
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
154 * it one of the messages defined in the <code>ArmListener</code>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
155 * interface.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
156 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
157 * @param listener the listener which should be notified
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
158 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
159 * @exception IllegalArgumentException <ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
160 * <li>ERROR_NULL_ARGUMENT - if the listener is null</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
161 * </ul>
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
162 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
163 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
164 * <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
165 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
166 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
167 * @see ArmListener
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
168 * @see #removeArmListener
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
169 */
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
170 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
171 checkWidget();
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
172 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
173 TypedListener typedListener = new TypedListener (listener);
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
174 addListener (DWT.Arm, typedListener);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
175 }
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 * Adds the listener to the collection of listeners who will
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
179 * be notified when the help events are generated for the control, by sending
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
180 * it one of the messages defined in the <code>HelpListener</code>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
181 * interface.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
182 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
183 * @param listener the listener which should be notified
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
184 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
185 * @exception IllegalArgumentException <ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
186 * <li>ERROR_NULL_ARGUMENT - if the listener is null</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
187 * </ul>
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
188 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
189 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
190 * <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
191 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
192 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
193 * @see HelpListener
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
194 * @see #removeHelpListener
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
195 */
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
196 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
197 checkWidget();
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
198 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
199 TypedListener typedListener = new TypedListener (listener);
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
200 addListener (DWT.Help, typedListener);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
201 }
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 * Adds the listener to the collection of listeners who will
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
205 * be notified when the menu item is selected by the user, by sending
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
206 * it one of the messages defined in the <code>SelectionListener</code>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
207 * interface.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
208 * <p>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
209 * 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
210 * <code>widgetDefaultSelected</code> is not called.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
211 * </p>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
212 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
213 * @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
214 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
215 * @exception IllegalArgumentException <ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
216 * <li>ERROR_NULL_ARGUMENT - if the listener is null</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
217 * </ul>
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
218 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
219 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
220 * <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
221 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
222 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
223 * @see SelectionListener
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
224 * @see #removeSelectionListener
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
225 * @see SelectionEvent
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
226 */
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
227 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
228 checkWidget();
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
229 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
230 TypedListener typedListener = new TypedListener(listener);
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
231 addListener (DWT.Selection,typedListener);
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
232 addListener (DWT.DefaultSelection,typedListener);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
233 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
234
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
235 static int checkStyle (int style) {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
236 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
237 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
238
152
17f8449522fd overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
239 protected override void checkSubclass () {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
240 if (!isValidSubclass ()) error (DWT.ERROR_INVALID_SUBCLASS);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
241 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
242
152
17f8449522fd overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
243 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
244 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
245 char [] buffer = "\0";
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
246 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
247 switch (style & bits) {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
248 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
249 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
250 break;
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
251 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
252 /*
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 * 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
254 * 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
255 * 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
256 * 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
257 * 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
258 * 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
259 * 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
260 * 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
261 * 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
262 */
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 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
264 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
265 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
266 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
267 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
268 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
269 break;
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
270 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
271 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
272 break;
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
273 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
274 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
275 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
276 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
277 }
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
278 if (handle is null) error (DWT.ERROR_NO_HANDLES);
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
279 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
280 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
281 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
282 }
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 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
284 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
285 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
286 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
287 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
288 OS.gtk_widget_show (handle);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
289 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
290
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
291 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
292 if (menu !is null) menu.fixMenus (newParent);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
293 }
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 * Returns the widget accelerator. An accelerator is the bit-wise
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
297 * 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
298 * <code>DWT.CONTROL | DWT.SHIFT | 'T', DWT.ALT | DWT.F2</code>.
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
299 * The default value is zero, indicating that the menu item does
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
300 * not have an accelerator.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
301 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
302 * @return the accelerator or 0
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
303 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
304 * </ul>
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
305 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
306 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
307 * <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
308 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
309 */
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
310 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
311 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
312 return accelerator;
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
313 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
314
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
315 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
316 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
317 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
318 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
319 }
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 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
321 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
322 return shell.menuBar is menu ? shell.accelGroup : null;
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
323 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
324
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
325 /*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
326 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
327 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
328 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
329 }
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 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
331 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
332 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
333 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
334 return new Rectangle (x, y, width, height);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
335 }
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 * Returns <code>true</code> if the receiver is enabled, and
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
339 * <code>false</code> otherwise. A disabled menu item is typically
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
340 * not selectable from the user interface and draws with an
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
341 * inactive or "grayed" look.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
342 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
343 * @return the receiver's enabled state
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
344 *
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
345 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
346 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
347 * <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
348 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
349 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
350 * @see #isEnabled
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
351 */
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
352 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
353 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
354 return OS.GTK_WIDGET_SENSITIVE (handle);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
355 }
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 * Returns the receiver's cascade menu if it has one or null
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
359 * if it does not. Only <code>CASCADE</code> menu items can have
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
360 * a pull down menu. The sequence of key strokes, button presses
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
361 * and/or button releases that are used to request a pull down
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
362 * menu is platform specific.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
363 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
364 * @return the receiver's menu
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
365 *
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
366 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
367 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
368 * <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
369 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
370 */
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
371 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
372 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
373 return menu;
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
374 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
375
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
376 /**
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
377 * Returns the receiver's parent, which must be a <code>Menu</code>.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
378 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
379 * @return the receiver's parent
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
380 *
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
381 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
382 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
383 * <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
384 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
385 */
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
386 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
387 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
388 return parent;
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
389 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
390
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
391 /**
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
392 * Returns <code>true</code> if the receiver is selected,
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
393 * and false otherwise.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
394 * <p>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
395 * When the receiver is of type <code>CHECK</code> or <code>RADIO</code>,
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
396 * it is selected when it is checked.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
397 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
398 * @return the selection state
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
399 *
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
400 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
401 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
402 * <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
403 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
404 */
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
405 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
406 checkWidget();
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
407 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
408 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
409 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
410
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
411 override int /*long*/ gtk_activate (GtkWidget* widget) {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
412 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
413 /*
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 * 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
415 * 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
416 * 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
417 * 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
418 * 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
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 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
421 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
422 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
423 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
424 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
425 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
426 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
427 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
428 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
429 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
430 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
431 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
432 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
433 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
434 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
435 }
55
93981635e709 Checked and inserted missing default switch cases.
Frank Benoit <benoit@tionex.de>
parents: 48
diff changeset
436 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
437 }
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_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
439 }
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
440 if ((style & DWT.RADIO) !is 0) {
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
441 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
442 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
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 }
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
445 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
446 return 0;
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
447 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
448
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
449 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
450 parent.selectedItem = this;
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
451 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
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_show_help (GtkWidget* widget, int /*long*/ helpType) {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
456 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
457 if (handled) {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
458 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
459 } 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
460 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
461 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
462 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
463 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
464 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
465 }
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 return 0;
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
467 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
468
152
17f8449522fd overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
469 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
470 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
471 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
472 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
473 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
474 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
475
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
476 /**
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
477 * Returns <code>true</code> if the receiver is enabled and all
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
478 * of the receiver's ancestors are enabled, and <code>false</code>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
479 * otherwise. A disabled menu item is typically not selectable from the
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
480 * user interface and draws with an inactive or "grayed" look.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
481 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
482 * @return the receiver's enabled state
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
483 *
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
484 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
485 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
486 * <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
487 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
488 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
489 * @see #getEnabled
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
490 */
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
491 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
492 return getEnabled () && parent.isEnabled ();
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
493 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
494
152
17f8449522fd overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
495 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
496 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
497 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
498 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
499 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
500 super.releaseChildren (destroy);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
501 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
502
152
17f8449522fd overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
503 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
504 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
505 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
506 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
507 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
508 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
509 menu = null;
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
510 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
511
152
17f8449522fd overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
512 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
513 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
514 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
515 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
516 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
517 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
518 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
519 parent = null;
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
520 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
521
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
522 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
523 updateAccelerator (accelGroup, false);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
524 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
525
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
526 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
527 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
528 if (menu !is null) menu.removeAccelerators (accelGroup);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
529 }
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 * Removes the listener from the collection of listeners who will
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
533 * be notified when the arm events are generated for the control.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
534 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
535 * @param listener the listener which should no longer be notified
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
536 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
537 * @exception IllegalArgumentException <ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
538 * <li>ERROR_NULL_ARGUMENT - if the listener is null</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
539 * </ul>
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
540 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
541 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
542 * <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
543 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
544 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
545 * @see ArmListener
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
546 * @see #addArmListener
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
547 */
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
548 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
549 checkWidget();
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
550 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
551 if (eventTable is null) return;
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
552 eventTable.unhook (DWT.Arm, listener);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
553 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
554
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
555 /**
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
556 * Removes the listener from the collection of listeners who will
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
557 * be notified when the help events are generated for the control.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
558 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
559 * @param listener the listener which should no longer be notified
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
560 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
561 * @exception IllegalArgumentException <ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
562 * <li>ERROR_NULL_ARGUMENT - if the listener is null</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
563 * </ul>
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
564 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
565 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
566 * <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
567 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
568 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
569 * @see HelpListener
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
570 * @see #addHelpListener
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
571 */
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
572 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
573 checkWidget();
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
574 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
575 if (eventTable is null) return;
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
576 eventTable.unhook (DWT.Help, listener);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
577 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
578
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
579 /**
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
580 * Removes the listener from the collection of listeners who will
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
581 * be notified when the control is selected by the user.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
582 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
583 * @param listener the listener which should no longer be notified
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
584 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
585 * @exception IllegalArgumentException <ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
586 * <li>ERROR_NULL_ARGUMENT - if the listener is null</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
587 * </ul>
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
588 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
589 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
590 * <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
591 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
592 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
593 * @see SelectionListener
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
594 * @see #addSelectionListener
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
595 */
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
596 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
597 checkWidget();
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
598 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
599 if (eventTable is null) return;
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
600 eventTable.unhook (DWT.Selection, listener);
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
601 eventTable.unhook (DWT.DefaultSelection,listener);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
602 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
603 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
604 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
605 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
606 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
607 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
608 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
609 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
610 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
611 setSelection (true);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
612 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
613 /**
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
614 * Sets the widget accelerator. An accelerator is the bit-wise
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
615 * 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
616 * <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
617 * <code>DWT.CONTROL | DWT.SHIFT | 'T', DWT.ALT | DWT.F2</code>.
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
618 * The default value is zero, indicating that the menu item does
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
619 * not have an accelerator.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
620 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
621 * @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
622 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
623 * </ul>
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
624 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
625 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
626 * <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
627 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
628 */
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
629 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
630 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
631 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
632 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
633 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
634 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
635 if (accelGroup !is null) addAccelerator (accelGroup);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
636 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
637
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
638 /**
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
639 * Enables the receiver if the argument is <code>true</code>,
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
640 * and disables it otherwise. A disabled menu item is typically
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
641 * not selectable from the user interface and draws with an
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
642 * inactive or "grayed" look.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
643 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
644 * @param enabled the new enabled state
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
645 *
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
646 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
647 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
648 * <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
649 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
650 */
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
651 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
652 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
653 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
654 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
655 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
656 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
657 if (accelGroup !is null) addAccelerator (accelGroup);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
658 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
659
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
660 /**
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
661 * Sets the image the receiver will display to the argument.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
662 * <p>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
663 * Note: This operation is a hint and is not supported on
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
664 * platforms that do not have this concept (for example, Windows NT).
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
665 * </p>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
666 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
667 * @param image the image to display
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
668 *
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
669 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
670 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
671 * <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
672 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
673 */
150
f2e04420fd6c reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents: 72
diff changeset
674 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
675 checkWidget();
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
676 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
677 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
678 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
679 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
680 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
681 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
682 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
683 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
684 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
685 } 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
686 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
687 }
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 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
689 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
690 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
691 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
692 } 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
693 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
694 }
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
695 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
696
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
697 /**
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
698 * Sets the receiver's pull down menu to the argument.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
699 * Only <code>CASCADE</code> menu items can have a
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
700 * pull down menu. The sequence of key strokes, button presses
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
701 * and/or button releases that are used to request a pull down
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
702 * menu is platform specific.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
703 * <p>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
704 * Note: Disposing of a menu item that has a pull down menu
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
705 * will dispose of the menu. To avoid this behavior, set the
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
706 * menu to null before the menu item is disposed.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
707 * </p>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
708 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
709 * @param menu the new pull down menu
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
710 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
711 * @exception IllegalArgumentException <ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
712 * <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
713 * <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
714 * <li>ERROR_INVALID_ARGUMENT - if the menu has been disposed</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
715 * <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
716 * </ul>
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
717 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
718 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
719 * <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
720 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
721 */
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
722 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
723 checkWidget ();
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
724
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
725 /* Check to make sure the new menu is valid */
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
726 if ((style & DWT.CASCADE) is 0) {
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
727 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
728 }
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 if (menu !is null) {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
730 if ((menu.style & DWT.DROP_DOWN) is 0) {
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
731 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
732 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
733 if (menu.parent !is parent.parent) {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
734 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
735 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
736 }
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
737
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 /* 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
739 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
740 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
741 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
742 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
743 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
744 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
745 /*
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 * 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
747 * 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
748 */
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 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
750 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
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 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
753 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
754 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
755 }
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 if (accelGroup !is null) addAccelerators (accelGroup);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
757 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
758
152
17f8449522fd overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
759 override void setOrientation() {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
760 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
761 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
762 OS.gtk_widget_set_direction (handle, OS.GTK_TEXT_DIR_RTL);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
763 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
764 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
765 }
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
766 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
767
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
768 bool setRadioSelection (bool value) {
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
769 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
770 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
771 setSelection (value);
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
772 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
773 }
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
774 return true;
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
775 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
776
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
777 /**
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
778 * Sets the selection state of the receiver.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
779 * <p>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
780 * When the receiver is of type <code>CHECK</code> or <code>RADIO</code>,
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
781 * it is selected when it is checked.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
782 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
783 * @param selected the new selection state
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
784 *
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
785 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
786 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
787 * <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
788 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
789 */
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
790 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
791 checkWidget();
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
792 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
793 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
794 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
795 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
796 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
797 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
798
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
799 /**
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
800 * Sets the receiver's text. The string may include
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
801 * the mnemonic character and accelerator text.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
802 * <p>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
803 * Mnemonics are indicated by an '&amp;' that causes the next
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
804 * character to be the mnemonic. When the user presses a
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
805 * key sequence that matches the mnemonic, a selection
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
806 * event occurs. On most platforms, the mnemonic appears
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
807 * underlined but may be emphasised in a platform specific
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
808 * manner. The mnemonic indicator character '&amp;' can be
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
809 * escaped by doubling it in the string, causing a single
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
810 * '&amp;' to be displayed.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
811 * </p>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
812 * <p>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
813 * Accelerator text is indicated by the '\t' character.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
814 * On platforms that support accelerator text, the text
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
815 * that follows the '\t' character is displayed to the user,
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
816 * typically indicating the key stroke that will cause
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
817 * the item to become selected. On most platforms, the
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
818 * accelerator text appears right aligned in the menu.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
819 * Setting the accelerator text does not install the
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
820 * accelerator key sequence. The accelerator key sequence
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
821 * is installed using #setAccelerator.
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
822 * </p>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
823 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
824 * @param string the new text
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
825 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
826 * @exception IllegalArgumentException <ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
827 * <li>ERROR_NULL_ARGUMENT - if the text is null</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
828 * </ul>
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
829 * @exception DWTException <ul>
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
830 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
831 * <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
832 * </ul>
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
833 *
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
834 * @see #setAccelerator
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
835 */
238
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 158
diff changeset
836 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
837 checkWidget();
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
838 if (string is null) error (DWT.ERROR_NULL_ARGUMENT);
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
839 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
840 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
841 super.setText (string);
238
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 158
diff changeset
842 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
843 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
844 if (index !is -1) {
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
845 accelString = string.substring (index, string.length);
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
846 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
847 }
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 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
849 char* buffer = toStringz( chars );
8cec8f536af3 All D sources complete gvim retab (4 spaces), bug with Composite moveAbove/moveBelow fixed.
Frank Benoit <benoit@tionex.de>
parents: 55
diff changeset
850 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
851 OS.gtk_label_set_text_with_mnemonic (cast(GtkLabel*)label, buffer);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
852
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
853 auto ptr = cast(char*)OS.g_malloc (accelString.length + 1);
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
854 ptr[ 0 .. accelString.length ] = accelString;
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
855 ptr[ accelString.length ] = '\0';
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 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
858 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
859 if (oldPtr !is null) OS.g_free (oldPtr);
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
860 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
861
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
862 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
863 if (accelerator is 0 || !getEnabled ()) 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
864 int mask = 0;
71
295b29fc7d13 Renamed SWT to DWT
Frank Benoit <benoit@tionex.de>
parents: 59
diff changeset
865 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
866 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
867 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
868 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
869 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
870 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
871 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
872 } 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
873 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
874 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
875 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
876 }
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 }
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 /* 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
879 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
880 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
881 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
882 } 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
883 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
884 }
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 }
48
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
886 }
8e9ea24111fd Menu, MenuItem
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
887 }