# HG changeset patch
# User Frank Benoit
+ * IMPORTANT: This class is not part of the SWT + * public API. It is marked public only so that it can be shared + * within the packages provided by SWT. It should never be + * referenced from application code. + *
+ * + * @see Listener + */ +public class TypedListener : Listener { + + /** + * The receiver's event listener + */ + protected SWTEventListener eventListener; + +/** + * Constructs a new instance of this class for the given event listener. + *+ * IMPORTANT: This method is not part of the SWT + * public API. It is marked public only so that it can be shared + * within the packages provided by SWT. It should never be + * referenced from application code. + *
+ * + * @param listener the event listener to store in the receiver + */ +public this (SWTEventListener listener) { + eventListener = listener; +} + +/** + * Returns the receiver's event listener. + *+ * IMPORTANT: This method is not part of the SWT + * public API. It is marked public only so that it can be shared + * within the packages provided by SWT. It should never be + * referenced from application code. + *
+ * + * @return the receiver's event listener + */ +public SWTEventListener getEventListener () { + return eventListener; +} + +/** + * Handles the given event. + *+ * IMPORTANT: This method is not part of the SWT + * public API. It is marked public only so that it can be shared + * within the packages provided by SWT. It should never be + * referenced from application code. + *
+ * @param e the event to handle + */ +public void handleEvent (Event e) { + switch (e.type) { + case SWT.Activate: { + (cast(ShellListener) eventListener).shellActivated(new ShellEvent(e)); + break; + } + case SWT.Arm: { + (cast(ArmListener) eventListener).widgetArmed (new ArmEvent (e)); + break; + } + case SWT.Close: { + /* Fields set by Decorations */ + ShellEvent event = new ShellEvent (e); + (cast(ShellListener) eventListener).shellClosed(event); + e.doit = event.doit; + break; + } + case SWT.Collapse: { + if ( auto l = cast(TreeListener)eventListener ) { + l.treeCollapsed(new TreeEvent(e)); + } else { + (cast(ExpandListener) eventListener).itemCollapsed(new ExpandEvent(e)); + } + break; + } + case SWT.Deactivate: { + (cast(ShellListener) eventListener).shellDeactivated(new ShellEvent(e)); + break; + } + case SWT.Deiconify: { + (cast(ShellListener) eventListener).shellDeiconified(new ShellEvent(e)); + break; + } + case SWT.DefaultSelection: { + (cast(SelectionListener)eventListener).widgetDefaultSelected(new SelectionEvent(e)); + break; + } + case SWT.Dispose: { + (cast(DisposeListener) eventListener).widgetDisposed(new DisposeEvent(e)); + break; + } + case SWT.DragDetect: { + (cast(DragDetectListener) eventListener).dragDetected(new DragDetectEvent(e)); + break; + } + case SWT.Expand: { + if (auto l = cast(TreeListener)eventListener ) { + l.treeExpanded(new TreeEvent(e)); + } else { + (cast(ExpandListener) eventListener).itemExpanded(new ExpandEvent(e)); + } + break; + } + case SWT.FocusIn: { + (cast(FocusListener) eventListener).focusGained(new FocusEvent(e)); + break; + } + case SWT.FocusOut: { + (cast(FocusListener) eventListener).focusLost(new FocusEvent(e)); + break; + } + case SWT.Help: { + (cast(HelpListener) eventListener).helpRequested (new HelpEvent (e)); + break; + } + case SWT.Hide: { + (cast(MenuListener) eventListener).menuHidden(new MenuEvent(e)); + break; + } + case SWT.Iconify: { + (cast(ShellListener) eventListener).shellIconified(new ShellEvent(e)); + break; + } + case SWT.KeyDown: { + /* Fields set by Control */ + KeyEvent event = new KeyEvent(e); + (cast(KeyListener) eventListener).keyPressed(event); + e.doit = event.doit; + break; + } + case SWT.KeyUp: { + /* Fields set by Control */ + KeyEvent event = new KeyEvent(e); + (cast(KeyListener) eventListener).keyReleased(event); + e.doit = event.doit; + break; + } + case SWT.Modify: { + (cast(ModifyListener) eventListener).modifyText(new ModifyEvent(e)); + break; + } + case SWT.MenuDetect: { + MenuDetectEvent event = new MenuDetectEvent(e); + (cast(MenuDetectListener) eventListener).menuDetected(event); + e.x = event.x; + e.y = event.y; + e.doit = event.doit; + break; + } + case SWT.MouseDown: { + (cast(MouseListener) eventListener).mouseDown(new MouseEvent(e)); + break; + } + case SWT.MouseDoubleClick: { + (cast(MouseListener) eventListener).mouseDoubleClick(new MouseEvent(e)); + break; + } + case SWT.MouseEnter: { + (cast(MouseTrackListener) eventListener).mouseEnter (new MouseEvent (e)); + break; + } + case SWT.MouseExit: { + (cast(MouseTrackListener) eventListener).mouseExit (new MouseEvent (e)); + break; + } + case SWT.MouseHover: { + (cast(MouseTrackListener) eventListener).mouseHover (new MouseEvent (e)); + break; + } + case SWT.MouseMove: { + (cast(MouseMoveListener) eventListener).mouseMove(new MouseEvent(e)); + return; + } + case SWT.MouseWheel: { + (cast(MouseWheelListener) eventListener).mouseScrolled(new MouseEvent(e)); + return; + } + case SWT.MouseUp: { + (cast(MouseListener) eventListener).mouseUp(new MouseEvent(e)); + break; + } + case SWT.Move: { + (cast(ControlListener) eventListener).controlMoved(new ControlEvent(e)); + break; + } + case SWT.Paint: { + /* Fields set by Control */ + PaintEvent event = new PaintEvent (e); + (cast(PaintListener) eventListener).paintControl (event); + e.gc = event.gc; + break; + } + case SWT.Resize: { + (cast(ControlListener) eventListener).controlResized(new ControlEvent(e)); + break; + } + case SWT.Selection: { + /* Fields set by Sash */ + SelectionEvent event = new SelectionEvent (e); + (cast(SelectionListener) eventListener).widgetSelected (event); + e.x = event.x; + e.y = event.y; + e.doit = event.doit; + break; + } + case SWT.Show: { + (cast(MenuListener) eventListener).menuShown(new MenuEvent(e)); + break; + } + case SWT.Traverse: { + /* Fields set by Control */ + TraverseEvent event = new TraverseEvent (e); + (cast(TraverseListener) eventListener).keyTraversed (event); + e.detail = event.detail; + e.doit = event.doit; + break; + } + case SWT.Verify: { + /* Fields set by Text, RichText */ + VerifyEvent event = new VerifyEvent (e); + (cast(VerifyListener) eventListener).verifyText (event); + e.text = event.text; + e.doit = event.doit; + break; + } + } +} + +} diff -r ffa3c27c4328 -r 10acbb123580 dwt/widgets/Widget.d --- a/dwt/widgets/Widget.d Wed Jan 09 01:08:22 2008 +0100 +++ b/dwt/widgets/Widget.d Wed Jan 09 02:59:32 2008 +0100 @@ -10,10 +10,25 @@ *******************************************************************************/ module dwt.widgets.Widget; +import dwt.SWT; +import dwt.dwthelper.utils; import dwt.internal.gtk.c.gtktypes; import dwt.internal.gtk.c.gdktypes; + +import dwt.events.DisposeListener; +import dwt.internal.Converter; +import dwt.internal.SWTEventListener; +import dwt.internal.gtk.OS; +import dwt.widgets.Display; import dwt.widgets.Event; +import dwt.widgets.EventTable; +import dwt.widgets.Listener; +import dwt.widgets.TypedListener; +import tango.stdc.stringz; +import tango.stdc.string; + +/+ class Widget{ int /*long*/ windowProc (GtkWidget* handle, int /*long*/ user_data) ; int /*long*/ windowProc (GtkWidget* handle, int /*long*/ arg0, int /*long*/ user_data) ; @@ -133,11 +148,7 @@ static const int LAST_SIGNAL = 62; } -/++ -import dwt.SWT; -import dwt.internal.*; -import dwt.internal.gtk.*; -import dwt.events.*; ++/ /** * This class is the abstract superclass of all user interface objects. @@ -176,7 +187,7 @@ * platforms and should never be accessed from application code. * */ - public int /*long*/ handle; + public GtkWidget* handle; int style, state; Display display; EventTable eventTable; @@ -287,7 +298,7 @@ /** * Prevents uninitialized instances from being created outside the package. */ -Widget () {} +this () {} /** * Constructs a new instance of this class given its parent @@ -318,7 +329,7 @@ * @see #checkSubclass * @see #getStyle */ -public Widget (Widget parent, int style) { +public this (Widget parent, int style) { checkSubclass (); checkParent (parent); this.style = style; @@ -326,7 +337,7 @@ } void _addListener (int eventType, Listener listener) { - if (eventTable == null) eventTable = new EventTable (); + if (eventTable is null) eventTable = new EventTable (); eventTable.hook (eventType, listener); } @@ -355,7 +366,7 @@ */ public void addListener (int eventType, Listener listener) { checkWidget (); - if (listener == null) error (SWT.ERROR_NULL_ARGUMENT); + if (listener is null) error (SWT.ERROR_NULL_ARGUMENT); _addListener (eventType, listener); } @@ -380,28 +391,28 @@ */ public void addDisposeListener (DisposeListener listener) { checkWidget (); - if (listener == null) error (SWT.ERROR_NULL_ARGUMENT); + if (listener is null) error (SWT.ERROR_NULL_ARGUMENT); TypedListener typedListener = new TypedListener (listener); addListener (SWT.Dispose, typedListener); } -int /*long*/ paintWindow () { - return 0; +GdkWindow* paintWindow () { + return null; } static int checkBits (int style, int int0, int int1, int int2, int int3, int int4, int int5) { int mask = int0 | int1 | int2 | int3 | int4 | int5; - if ((style & mask) == 0) style |= int0; - if ((style & int0) != 0) style = (style & ~mask) | int0; - if ((style & int1) != 0) style = (style & ~mask) | int1; - if ((style & int2) != 0) style = (style & ~mask) | int2; - if ((style & int3) != 0) style = (style & ~mask) | int3; - if ((style & int4) != 0) style = (style & ~mask) | int4; - if ((style & int5) != 0) style = (style & ~mask) | int5; + if ((style & mask) is 0) style |= int0; + if ((style & int0) !is 0) style = (style & ~mask) | int0; + if ((style & int1) !is 0) style = (style & ~mask) | int1; + if ((style & int2) !is 0) style = (style & ~mask) | int2; + if ((style & int3) !is 0) style = (style & ~mask) | int3; + if ((style & int4) !is 0) style = (style & ~mask) | int4; + if ((style & int5) !is 0) style = (style & ~mask) | int5; return style; } -int /*long*/ cellDataProc (int /*long*/ tree_column, int /*long*/ cell, int /*long*/ tree_model, int /*long*/ iter, int /*long*/ data) { +int /*long*/ cellDataProc (int /*long*/ tree_column, int /*long*/ cell, int /*long*/ tree_model, int /*long*/ iter, GtkWidget* data) { return 0; } @@ -411,10 +422,10 @@ void checkOrientation (Widget parent) { style &= ~SWT.MIRRORED; - if ((style & (SWT.LEFT_TO_RIGHT | SWT.RIGHT_TO_LEFT)) == 0) { - if (parent != null) { - if ((parent.style & SWT.LEFT_TO_RIGHT) != 0) style |= SWT.LEFT_TO_RIGHT; - if ((parent.style & SWT.RIGHT_TO_LEFT) != 0) style |= SWT.RIGHT_TO_LEFT; + if ((style & (SWT.LEFT_TO_RIGHT | SWT.RIGHT_TO_LEFT)) is 0) { + if (parent !is null) { + if ((parent.style & SWT.LEFT_TO_RIGHT) !is 0) style |= SWT.LEFT_TO_RIGHT; + if ((parent.style & SWT.RIGHT_TO_LEFT) !is 0) style |= SWT.RIGHT_TO_LEFT; } } style = checkBits (style, SWT.LEFT_TO_RIGHT, SWT.RIGHT_TO_LEFT, 0, 0, 0, 0); @@ -433,7 +444,7 @@ * */ void checkParent (Widget parent) { - if (parent == null) error (SWT.ERROR_NULL_ARGUMENT); + if (parent is null) error (SWT.ERROR_NULL_ARGUMENT); if (parent.isDisposed ()) error (SWT.ERROR_INVALID_ARGUMENT); parent.checkWidget (); parent.checkOpen (); @@ -496,9 +507,9 @@ */ protected void checkWidget () { Display display = this.display; - if (display == null) error (SWT.ERROR_WIDGET_DISPOSED); - if (display.thread != Thread.currentThread ()) error (SWT.ERROR_THREAD_INVALID_ACCESS); - if ((state & DISPOSED) != 0) error (SWT.ERROR_WIDGET_DISPOSED); + if (display is null) error (SWT.ERROR_WIDGET_DISPOSED); + if (display.thread !is Thread.getThis ()) error (SWT.ERROR_THREAD_INVALID_ACCESS); + if ((state & DISPOSED) !is 0) error (SWT.ERROR_WIDGET_DISPOSED); } void createHandle (int index) { @@ -512,15 +523,15 @@ } void deregister () { - if (handle == 0) return; - if ((state & HANDLE) != 0) display.removeWidget (handle); + if (handle is null) return; + if ((state & HANDLE) !is 0) display.removeWidget (handle); } void destroyWidget () { - int /*long*/ topHandle = topHandle (); + GtkWidget* h = topHandle (); releaseHandle (); - if (topHandle != 0 && (state & HANDLE) != 0) { - OS.gtk_widget_destroy (topHandle); + if (h !is null && (state & HANDLE) !is 0) { + OS.gtk_widget_destroy (h); } } @@ -585,7 +596,7 @@ */ public Object getData () { checkWidget(); - return (state & KEYED_DATA) != 0 ? ((Object []) data) [0] : data; + return (state & KEYED_DATA) !is 0 ? (cast(ArrayWrapperObject)data).array[0] : data; } /** * Returns the application defined property of the receiver @@ -611,13 +622,13 @@ * * @see #setData(String, Object) */ -public Object getData (String key) { +public Object getData (char[] key) { checkWidget(); - if (key == null) error (SWT.ERROR_NULL_ARGUMENT); - if ((state & KEYED_DATA) != 0) { - Object [] table = (Object []) data; + if (key is null) error (SWT.ERROR_NULL_ARGUMENT); + if ((state & KEYED_DATA) !is 0) { + char[][] table = (cast(ArrayWrapperString2) data).array; for (int i=1; itrue
when the widget is disposed and false
otherwise
*/
-public boolean isDisposed () {
- return (state & DISPOSED) != 0;
+public bool isDisposed () {
+ return (state & DISPOSED) !is 0;
}
/**
@@ -993,17 +1000,17 @@
*
* @see SWT
*/
-public boolean isListening (int eventType) {
+public bool isListening (int eventType) {
checkWidget ();
return hooks (eventType);
}
-boolean isValidThread () {
+bool isValidThread () {
return getDisplay ().isValidThread ();
}
-boolean isValidSubclass() {
- return Display.isValidClass(getClass());
+bool isValidSubclass() {
+ return true;//Display.isValidClass(getClass());
}
void hookEvents () {
@@ -1022,31 +1029,31 @@
*
* @see #isListening
*/
-boolean hooks (int eventType) {
- if (eventTable == null) return false;
+bool hooks (int eventType) {
+ if (eventTable is null) return false;
return eventTable.hooks (eventType);
}
-int /*long*/ hoverProc (int /*long*/ widget) {
+int /*long*/ hoverProc (GtkWidget* widget) {
return 0;
}
-int /*long*/ menuPositionProc (int /*long*/ menu, int /*long*/ x, int /*long*/ y, int /*long*/ push_in, int /*long*/ user_data) {
+int /*long*/ menuPositionProc (GtkWidget * menu, int /*long*/ x, int /*long*/ y, int /*long*/ push_in, int /*long*/ user_data) {
return 0;
}
-boolean mnemonicHit (int /*long*/ mnemonicHandle, char key) {
+bool mnemonicHit (int /*long*/ mnemonicHandle, char key) {
if (!mnemonicMatch (mnemonicHandle, key)) return false;
- OS.g_signal_handlers_block_matched (mnemonicHandle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, MNEMONIC_ACTIVATE);
- boolean result = OS.gtk_widget_mnemonic_activate (mnemonicHandle, false);
- OS.g_signal_handlers_unblock_matched (mnemonicHandle, OS.G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, MNEMONIC_ACTIVATE);
+ OS.g_signal_handlers_block_matched ( cast(void*)mnemonicHandle, cast(GSignalMatchType)OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, cast(void*)MNEMONIC_ACTIVATE);
+ bool result = cast(bool)OS.gtk_widget_mnemonic_activate (cast(GtkWidget*)mnemonicHandle, false);
+ OS.g_signal_handlers_unblock_matched (cast(void*)mnemonicHandle, cast(GSignalMatchType)OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, cast(void*)MNEMONIC_ACTIVATE);
return result;
}
-boolean mnemonicMatch (int /*long*/ mnemonicHandle, char key) {
+bool mnemonicMatch (int /*long*/ mnemonicHandle, char key) {
int keyval1 = OS.gdk_keyval_to_lower (OS.gdk_unicode_to_keyval (key));
- int keyval2 = OS.gdk_keyval_to_lower (OS.gtk_label_get_mnemonic_keyval (mnemonicHandle));
- return keyval1 == keyval2;
+ int keyval2 = OS.gdk_keyval_to_lower (OS.gtk_label_get_mnemonic_keyval (cast(GtkLabel*)mnemonicHandle));
+ return keyval1 is keyval2;
}
/**
@@ -1070,7 +1077,7 @@
*/
public void notifyListeners (int eventType, Event event) {
checkWidget();
- if (event == null) event = new Event ();
+ if (event is null) event = new Event ();
sendEvent (eventType, event);
}
@@ -1083,19 +1090,19 @@
}
void register () {
- if (handle == 0) return;
- if ((state & HANDLE) != 0) display.addWidget (handle, this);
+ if (handle is null) return;
+ if ((state & HANDLE) !is 0) display.addWidget (handle, this);
}
-void release (boolean destroy) {
- if ((state & DISPOSE_SENT) == 0) {
+void release (bool destroy) {
+ if ((state & DISPOSE_SENT) is 0) {
state |= DISPOSE_SENT;
sendEvent (SWT.Dispose);
}
- if ((state & DISPOSED) == 0) {
+ if ((state & DISPOSED) is 0) {
releaseChildren (destroy);
}
- if ((state & RELEASED) == 0) {
+ if ((state & RELEASED) is 0) {
state |= RELEASED;
if (destroy) {
releaseParent ();
@@ -1108,11 +1115,11 @@
}
}
-void releaseChildren (boolean destroy) {
+void releaseChildren (bool destroy) {
}
void releaseHandle () {
- handle = 0;
+ handle = null;
state |= DISPOSED;
display = null;
}
@@ -1150,8 +1157,8 @@
*/
public void removeListener (int eventType, Listener handler) {
checkWidget ();
- if (handler == null) error (SWT.ERROR_NULL_ARGUMENT);
- if (eventTable == null) return;
+ if (handler is null) error (SWT.ERROR_NULL_ARGUMENT);
+ if (eventTable is null) return;
eventTable.unhook (eventType, handler);
}
@@ -1181,16 +1188,16 @@
*/
protected void removeListener (int eventType, SWTEventListener handler) {
checkWidget ();
- if (handler == null) error (SWT.ERROR_NULL_ARGUMENT);
- if (eventTable == null) return;
+ if (handler is null) error (SWT.ERROR_NULL_ARGUMENT);
+ if (eventTable is null) return;
eventTable.unhook (eventType, handler);
}
-int /*long*/ rendererGetSizeProc (int /*long*/ cell, int /*long*/ handle, int /*long*/ cell_area, int /*long*/ x_offset, int /*long*/ y_offset, int /*long*/ width, int /*long*/ height) {
+void rendererGetSizeProc(GtkCellRenderer *cell, GtkWidget *handle, GdkRectangle *cell_area, int *x_offset, int *y_offset, int *width, int *height) {
return 0;
}
-int /*long*/ rendererRenderProc (int /*long*/ cell, int /*long*/ window, int /*long*/ handle, int /*long*/ background_area, int /*long*/ cell_area, int /*long*/ expose_area, int /*long*/ flags) {
+void rendererRenderProc (GtkCellRenderer * cell, GdkDrawable * window, GtkWidget * handle, GdkRectangle *background_area, GdkRectangle *cell_area, GdkRectangle *expose_area, int flags){
return 0;
}
@@ -1213,15 +1220,15 @@
*/
public void removeDisposeListener (DisposeListener listener) {
checkWidget ();
- if (listener == null) error (SWT.ERROR_NULL_ARGUMENT);
- if (eventTable == null) return;
+ if (listener is null) error (SWT.ERROR_NULL_ARGUMENT);
+ if (eventTable is null) return;
eventTable.unhook (SWT.Dispose, listener);
}
void sendEvent (Event event) {
Display display = event.display;
if (!display.filterEvent (event)) {
- if (eventTable != null) eventTable.sendEvent (event);
+ if (eventTable !is null) eventTable.sendEvent (event);
}
}
@@ -1233,15 +1240,15 @@
sendEvent (eventType, event, true);
}
-void sendEvent (int eventType, Event event, boolean send) {
- if (eventTable == null && !display.filters (eventType)) {
+void sendEvent (int eventType, Event event, bool send) {
+ if (eventTable is null && !display.filters (eventType)) {
return;
}
- if (event == null) event = new Event ();
+ if (event is null) event = new Event ();
event.type = eventType;
event.display = display;
event.widget = this;
- if (event.time == 0) {
+ if (event.time is 0) {
event.time = display.getLastEventTime ();
}
if (send) {
@@ -1251,9 +1258,9 @@
}
}
-boolean sendKeyEvent (int type, GdkEventKey keyEvent) {
- int length = keyEvent.length;
- if (keyEvent.string == 0 || OS.g_utf8_strlen (keyEvent.string, length) <= 1) {
+bool sendKeyEvent (int type, GdkEventKey* keyEvent) {
+ int len = keyEvent.length;
+ if (keyEvent.str is null || OS.g_utf8_strlen (keyEvent.str, len) <= 1) {
Event event = new Event ();
event.time = keyEvent.time;
if (!setKeyState (event, keyEvent)) return true;
@@ -1269,21 +1276,19 @@
if (isDisposed ()) return false;
return event.doit;
}
- byte [] buffer = new byte [length];
- OS.memmove (buffer, keyEvent.string, length);
- char [] chars = Converter.mbcsToWcs (null, buffer);
- return sendIMKeyEvent (type, keyEvent, chars) != null;
+ char [] chars = fromUtf8z( keyEvent.str );
+ return sendIMKeyEvent (type, keyEvent, chars) !is null;
}
-char [] sendIMKeyEvent (int type, GdkEventKey keyEvent, char [] chars) {
+char [] sendIMKeyEvent (int type, GdkEventKey* keyEvent, char [] chars) {
int index = 0, count = 0, state = 0;
- int /*long*/ ptr = 0;
- if (keyEvent == null) {
+ GdkEvent* ptr = null;
+ if (keyEvent is null) {
ptr = OS.gtk_get_current_event ();
- if (ptr != 0) {
+ if (ptr !is null) {
keyEvent = new GdkEventKey ();
- OS.memmove (keyEvent, ptr, GdkEventKey.sizeof);
- switch (keyEvent.type) {
+ memmove (keyEvent, ptr, GdkEventKey.sizeof);
+ switch (cast(int)keyEvent.type) {
case OS.GDK_KEY_PRESS:
case OS.GDK_KEY_RELEASE:
state = keyEvent.state;
@@ -1294,14 +1299,14 @@
}
}
}
- if (keyEvent == null) {
- int [] buffer = new int [1];
- OS.gtk_get_current_event_state (buffer);
- state = buffer [0];
+ if (keyEvent is null) {
+ GdkModifierType buffer;
+ OS.gtk_get_current_event_state (&buffer);
+ state = buffer;
}
while (index < chars.length) {
Event event = new Event ();
- if (keyEvent != null && chars.length <= 1) {
+ if (keyEvent !is null && chars.length <= 1) {
setKeyState (event, keyEvent);
} else {
setInputState (event, state);
@@ -1316,15 +1321,15 @@
* the key by returning null.
*/
if (isDisposed ()) {
- if (ptr != 0) OS.gdk_event_free (ptr);
+ if (ptr !is null) OS.gdk_event_free (ptr);
return null;
}
if (event.doit) chars [count++] = chars [index];
index++;
}
- if (ptr != 0) OS.gdk_event_free (ptr);
- if (count == 0) return null;
- if (index != count) {
+ if (ptr !is null) OS.gdk_event_free (ptr);
+ if (count is 0) return null;
+ if (index !is count) {
char [] result = new char [count];
System.arraycopy (chars, 0, result, 0, count);
return result;
@@ -1356,8 +1361,8 @@
*/
public void setData (Object data) {
checkWidget();
- if ((state & KEYED_DATA) != 0) {
- ((Object []) this.data) [0] = data;
+ if ((state & KEYED_DATA) !is 0) {
+ (cast(ArrayWrapperObject) this.data).array[0] = data;
} else {
this.data = data;
}
@@ -1387,94 +1392,100 @@
*
* @see #getData(String)
*/
-public void setData (String key, Object value) {
+public void setData (char[] key, Object value) {
checkWidget();
- if (key == null) error (SWT.ERROR_NULL_ARGUMENT);
+ if (key is null) error (SWT.ERROR_NULL_ARGUMENT);
int index = 1;
Object [] table = null;
- if ((state & KEYED_DATA) != 0) {
- table = (Object []) data;
- while (index < table.length) {
- if (key.equals (table [index])) break;
+ if ((state & KEYED_DATA) !is 0) {
+ auto arr = (cast(ArrayWrapperString2) data).array;
+ ArrayWrapperString[] strtable;
+ foreach( str; arr ){
+ strtable ~= new ArrayWrapperString( str );
+ }
+ while (index < strtable.length) {
+ if (key ==/*eq*/ strtable [index].array ) break;
index += 2;
}
+ table = cast(Object[])strtable;
}
- if (value != null) {
- if ((state & KEYED_DATA) != 0) {
- if (index == table.length) {
+ if (value !is null) {
+ if ((state & KEYED_DATA) !is 0) {
+ if (index is table.length) {
Object [] newTable = new Object [table.length + 2];
System.arraycopy (table, 0, newTable, 0, table.length);
- data = table = newTable;
+ table = newTable;
+ data = new ArrayWrapperObject( table );
}
} else {
table = new Object [3];
table [0] = data;
- data = table;
+ data = new ArrayWrapperObject( table );
state |= KEYED_DATA;
}
- table [index] = key;
+ table [index] = new ArrayWrapperString( key );
table [index + 1] = value;
} else {
- if ((state & KEYED_DATA) != 0) {
- if (index != table.length) {
- int length = table.length - 2;
- if (length == 1) {
+ if ((state & KEYED_DATA) !is 0) {
+ if (index !is table.length) {
+ int len = table.length - 2;
+ if (len is 1) {
data = table [0];
state &= ~KEYED_DATA;
} else {
- Object [] newTable = new Object [length];
+ Object [] newTable = new Object [len];
System.arraycopy (table, 0, newTable, 0, index);
- System.arraycopy (table, index + 2, newTable, index, length - index);
- data = newTable;
+ System.arraycopy (table, index + 2, newTable, index, len - index);
+ data = new ArrayWrapperObject( newTable );
}
}
}
}
}
-void setForegroundColor (int /*long*/ handle, GdkColor color) {
- int /*long*/ style = OS.gtk_widget_get_modifier_style (handle);
+void setForegroundColor (GtkWidget* handle, GdkColor* color) {
+ auto style = OS.gtk_widget_get_modifier_style (handle);
OS.gtk_rc_style_set_fg (style, OS.GTK_STATE_NORMAL, color);
OS.gtk_rc_style_set_fg (style, OS.GTK_STATE_ACTIVE, color);
OS.gtk_rc_style_set_fg (style, OS.GTK_STATE_PRELIGHT, color);
int flags = OS.gtk_rc_style_get_color_flags (style, OS.GTK_STATE_NORMAL);
- flags = (color == null) ? flags & ~OS.GTK_RC_FG: flags | OS.GTK_RC_FG;
+ flags = (color is null) ? flags & ~OS.GTK_RC_FG: flags | OS.GTK_RC_FG;
OS.gtk_rc_style_set_color_flags (style, OS.GTK_STATE_NORMAL, flags);
flags = OS.gtk_rc_style_get_color_flags (style, OS.GTK_STATE_ACTIVE);
- flags = (color == null) ? flags & ~OS.GTK_RC_FG: flags | OS.GTK_RC_FG;
+ flags = (color is null) ? flags & ~OS.GTK_RC_FG: flags | OS.GTK_RC_FG;
OS.gtk_rc_style_set_color_flags (style, OS.GTK_STATE_ACTIVE, flags);
flags = OS.gtk_rc_style_get_color_flags (style, OS.GTK_STATE_PRELIGHT);
- flags = (color == null) ? flags & ~OS.GTK_RC_FG: flags | OS.GTK_RC_FG;
+ flags = (color is null) ? flags & ~OS.GTK_RC_FG: flags | OS.GTK_RC_FG;
OS.gtk_rc_style_set_color_flags (style, OS.GTK_STATE_PRELIGHT, flags);
OS.gtk_rc_style_set_text (style, OS.GTK_STATE_NORMAL, color);
OS.gtk_rc_style_set_text (style, OS.GTK_STATE_ACTIVE, color);
OS.gtk_rc_style_set_text (style, OS.GTK_STATE_PRELIGHT, color);
flags = OS.gtk_rc_style_get_color_flags (style, OS.GTK_STATE_NORMAL);
- flags = (color == null) ? flags & ~OS.GTK_RC_TEXT: flags | OS.GTK_RC_TEXT;
+ flags = (color is null) ? flags & ~OS.GTK_RC_TEXT: flags | OS.GTK_RC_TEXT;
OS.gtk_rc_style_set_color_flags (style, OS.GTK_STATE_NORMAL, flags);
flags = OS.gtk_rc_style_get_color_flags (style, OS.GTK_STATE_PRELIGHT);
- flags = (color == null) ? flags & ~OS.GTK_RC_TEXT: flags | OS.GTK_RC_TEXT;
+ flags = (color is null) ? flags & ~OS.GTK_RC_TEXT: flags | OS.GTK_RC_TEXT;
OS.gtk_rc_style_set_color_flags (style, OS.GTK_STATE_PRELIGHT, flags);
flags = OS.gtk_rc_style_get_color_flags (style, OS.GTK_STATE_ACTIVE);
- flags = (color == null) ? flags & ~OS.GTK_RC_TEXT: flags | OS.GTK_RC_TEXT;
+ flags = (color is null) ? flags & ~OS.GTK_RC_TEXT: flags | OS.GTK_RC_TEXT;
OS.gtk_rc_style_set_color_flags (style, OS.GTK_STATE_ACTIVE, flags);
OS.gtk_widget_modify_style (handle, style);
}
-boolean setInputState (Event event, int state) {
- if ((state & OS.GDK_MOD1_MASK) != 0) event.stateMask |= SWT.ALT;
- if ((state & OS.GDK_SHIFT_MASK) != 0) event.stateMask |= SWT.SHIFT;
- if ((state & OS.GDK_CONTROL_MASK) != 0) event.stateMask |= SWT.CONTROL;
- if ((state & OS.GDK_BUTTON1_MASK) != 0) event.stateMask |= SWT.BUTTON1;
- if ((state & OS.GDK_BUTTON2_MASK) != 0) event.stateMask |= SWT.BUTTON2;
- if ((state & OS.GDK_BUTTON3_MASK) != 0) event.stateMask |= SWT.BUTTON3;
+bool setInputState (Event event, int state) {
+ if ((state & OS.GDK_MOD1_MASK) !is 0) event.stateMask |= SWT.ALT;
+ if ((state & OS.GDK_SHIFT_MASK) !is 0) event.stateMask |= SWT.SHIFT;
+ if ((state & OS.GDK_CONTROL_MASK) !is 0) event.stateMask |= SWT.CONTROL;
+ if ((state & OS.GDK_BUTTON1_MASK) !is 0) event.stateMask |= SWT.BUTTON1;
+ if ((state & OS.GDK_BUTTON2_MASK) !is 0) event.stateMask |= SWT.BUTTON2;
+ if ((state & OS.GDK_BUTTON3_MASK) !is 0) event.stateMask |= SWT.BUTTON3;
return true;
}
-boolean setKeyState (Event event, GdkEventKey keyEvent) {
- if (keyEvent.string != 0 && OS.g_utf8_strlen (keyEvent.string, keyEvent.length) > 1) return false;
- boolean isNull = false;
+bool setKeyState (Event event, GdkEventKey* keyEvent) {
+ if (keyEvent.str !is null && OS.g_utf8_strlen (keyEvent.str, keyEvent.length) > 1) return false;
+ bool isNull = false;
event.keyCode = Display.translateKey (keyEvent.keyval);
switch (keyEvent.keyval) {
case OS.GDK_BackSpace: event.character = SWT.BS; break;
@@ -1487,24 +1498,26 @@
case OS.GDK_Tab:
case OS.GDK_ISO_Left_Tab: event.character = SWT.TAB; break;
default: {
- if (event.keyCode == 0) {
- int [] keyval = new int [1], effective_group= new int [1], level = new int [1], consumed_modifiers = new int [1];
- if (OS.gdk_keymap_translate_keyboard_state(OS.gdk_keymap_get_default (), keyEvent.hardware_keycode, 0, keyEvent.group, keyval, effective_group, level, consumed_modifiers)) {
- event.keyCode = OS.gdk_keyval_to_unicode (keyval [0]);
+ if (event.keyCode is 0) {
+ uint keyval;
+ int effective_group, level;
+ GdkModifierType consumed_modifiers;
+ if (OS.gdk_keymap_translate_keyboard_state(OS.gdk_keymap_get_default (), keyEvent.hardware_keycode, cast(GdkModifierType)0, keyEvent.group, &keyval, &effective_group, &level, &consumed_modifiers)) {
+ event.keyCode = OS.gdk_keyval_to_unicode (keyval );
}
}
int key = keyEvent.keyval;
- if ((keyEvent.state & OS.GDK_CONTROL_MASK) != 0 && (0 <= key && key <= 0x7F)) {
+ if ((keyEvent.state & OS.GDK_CONTROL_MASK) !is 0 && (0 <= key && key <= 0x7F)) {
if ('a' <= key && key <= 'z') key -= 'a' - 'A';
if (64 <= key && key <= 95) key -= 64;
- event.character = (char) key;
- isNull = keyEvent.keyval == '@' && key == 0;
+ event.character = cast(char) key;
+ isNull = keyEvent.keyval is '@' && key is 0;
} else {
- event.character = (char) OS.gdk_keyval_to_unicode (key);
+ event.character = cast(char) OS.gdk_keyval_to_unicode (key);
}
}
}
- if (event.keyCode == 0 && event.character == 0) {
+ if (event.keyCode is 0 && event.character is 0) {
if (!isNull) return false;
}
return setInputState (event, keyEvent.state);
@@ -1531,20 +1544,20 @@
*
* @return a string representation of the receiver
*/
-public String toString () {
- String string = "*Disposed*";
+public char[] toString () {
+ char[] str = "*Disposed*";
if (!isDisposed ()) {
- string = "*Wrong Thread*";
- if (isValidThread ()) string = getNameText ();
+ str = "*Wrong Thread*";
+ if (isValidThread ()) str = getNameText ();
}
- return getName () + " {" + string + "}";
+ return getName () ~ " {" ~ str ~ "}";
}
-int /*long*/ topHandle () {
+GtkWidget* topHandle () {
return handle;
}
-int /*long*/ timerProc (int /*long*/ widget) {
+int /*long*/ timerProc (GtkWidget* widget) {
return 0;
}
@@ -1552,12 +1565,12 @@
return 0;
}
-boolean translateTraversal (int event) {
+bool translateTraversal (int event) {
return false;
}
-int /*long*/ windowProc (int /*long*/ handle, int /*long*/ user_data) {
- switch ((int)/*64*/user_data) {
+int /*long*/ windowProc (GtkWidget* handle, int /*long*/ user_data) {
+ switch (cast(int)/*64*/user_data) {
case ACTIVATE: return gtk_activate (handle);
case CHANGED: return gtk_changed (handle);
case CLICKED: return gtk_clicked (handle);
@@ -1570,24 +1583,24 @@
case POPUP_MENU: return gtk_popup_menu (handle);
case PREEDIT_CHANGED: return gtk_preedit_changed (handle);
case REALIZE: return gtk_realize (handle);
- case SELECT: return gtk_select (handle);
+ case SELECT: return gtk_select (cast(int)handle);
case SHOW: return gtk_show (handle);
- case VALUE_CHANGED: return gtk_value_changed (handle);
+ case VALUE_CHANGED: return gtk_value_changed (cast(int)handle);
case UNMAP: return gtk_unmap (handle);
case UNREALIZE: return gtk_unrealize (handle);
default: return 0;
}
}
-int /*long*/ windowProc (int /*long*/ handle, int /*long*/ arg0, int /*long*/ user_data) {
- switch ((int)/*64*/user_data) {
+int /*long*/ windowProc (GtkWidget* handle, int /*long*/ arg0, int /*long*/ user_data) {
+ switch (cast(int)/*64*/user_data) {
case EXPOSE_EVENT_INVERSE: {
- GdkEventExpose gdkEvent = new GdkEventExpose ();
- OS.memmove (gdkEvent, arg0, GdkEventExpose.sizeof);
- int /*long*/ paintWindow = paintWindow();
- int /*long*/ window = gdkEvent.window;
- if (window != paintWindow) return 0;
- return (state & OBSCURED) != 0 ? 1 : 0;
+ GdkEventExpose* gdkEvent = new GdkEventExpose ();
+ memmove (gdkEvent, cast(void*)arg0, GdkEventExpose.sizeof);
+ auto paintWindow = paintWindow();
+ auto window = gdkEvent.window;
+ if (window !is paintWindow) return 0;
+ return (state & OBSCURED) !is 0 ? 1 : 0;
}
case BUTTON_PRESS_EVENT_INVERSE:
case BUTTON_RELEASE_EVENT_INVERSE:
@@ -1596,7 +1609,7 @@
}
case BUTTON_PRESS_EVENT: return gtk_button_press_event (handle, arg0);
case BUTTON_RELEASE_EVENT: return gtk_button_release_event (handle, arg0);
- case COMMIT: return gtk_commit (handle, arg0);
+ case COMMIT: return gtk_commit (cast(int)handle, arg0);
case CONFIGURE_EVENT: return gtk_configure_event (handle, arg0);
case DELETE_EVENT: return gtk_delete_event (handle, arg0);
case ENTER_NOTIFY_EVENT: return gtk_enter_notify_event (handle, arg0);
@@ -1606,8 +1619,8 @@
case FOCUS: return gtk_focus (handle, arg0);
case FOCUS_IN_EVENT: return gtk_focus_in_event (handle, arg0);
case FOCUS_OUT_EVENT: return gtk_focus_out_event (handle, arg0);
- case KEY_PRESS_EVENT: return gtk_key_press_event (handle, arg0);
- case KEY_RELEASE_EVENT: return gtk_key_release_event (handle, arg0);
+ case KEY_PRESS_EVENT: return gtk_key_press_event (handle, cast(GdkEventKey*)arg0);
+ case KEY_RELEASE_EVENT: return gtk_key_release_event (handle, cast(GdkEventKey*)arg0);
case INPUT: return gtk_input (handle, arg0);
case LEAVE_NOTIFY_EVENT: return gtk_leave_notify_event (handle, arg0);
case MAP_EVENT: return gtk_map_event (handle, arg0);
@@ -1618,7 +1631,7 @@
case SHOW_HELP: return gtk_show_help (handle, arg0);
case SIZE_ALLOCATE: return gtk_size_allocate (handle, arg0);
case STYLE_SET: return gtk_style_set (handle, arg0);
- case TOGGLED: return gtk_toggled (handle, arg0);
+ case TOGGLED: return gtk_toggled (cast(int)handle, arg0);
case UNMAP_EVENT: return gtk_unmap_event (handle, arg0);
case VISIBILITY_NOTIFY_EVENT: return gtk_visibility_notify_event (handle, arg0);
case WINDOW_STATE_EVENT: return gtk_window_state_event (handle, arg0);
@@ -1626,21 +1639,21 @@
}
}
-int /*long*/ windowProc (int /*long*/ handle, int /*long*/ arg0, int /*long*/ arg1, int /*long*/ user_data) {
- switch ((int)/*64*/user_data) {
+int /*long*/ windowProc (GtkWidget* handle, int /*long*/ arg0, int /*long*/ arg1, int /*long*/ user_data) {
+ switch (cast(int)/*64*/user_data) {
case DELETE_RANGE: return gtk_delete_range (handle, arg0, arg1);
case DELETE_TEXT: return gtk_delete_text (handle, arg0, arg1);
- case ROW_ACTIVATED: return gtk_row_activated (handle, arg0, arg1);
+ case ROW_ACTIVATED: return gtk_row_activated (cast(int)handle, arg0, arg1);
case SCROLL_CHILD: return gtk_scroll_child (handle, arg0, arg1);
case SWITCH_PAGE: return gtk_switch_page (handle, arg0, arg1);
- case TEST_COLLAPSE_ROW: return gtk_test_collapse_row (handle, arg0, arg1);
- case TEST_EXPAND_ROW: return gtk_test_expand_row(handle, arg0, arg1);
+ case TEST_COLLAPSE_ROW: return gtk_test_collapse_row (cast(int)handle, arg0, arg1);
+ case TEST_EXPAND_ROW: return gtk_test_expand_row(cast(int)handle, arg0, arg1);
default: return 0;
}
}
-int /*long*/ windowProc (int /*long*/ handle, int /*long*/ arg0, int /*long*/ arg1, int /*long*/ arg2, int /*long*/ user_data) {
- switch ((int)/*64*/user_data) {
+int /*long*/ windowProc (GtkWidget* handle, int /*long*/ arg0, int /*long*/ arg1, int /*long*/ arg2, int /*long*/ user_data) {
+ switch (cast(int)/*64*/user_data) {
case CHANGE_VALUE: return gtk_change_value (handle, arg0, arg1, arg2);
case EXPAND_COLLAPSE_CURSOR_ROW: return gtk_expand_collapse_cursor_row (handle, arg0, arg1, arg2);
case INSERT_TEXT: return gtk_insert_text (handle, arg0, arg1, arg2);
@@ -1650,4 +1663,3 @@
}
}
-++/
\ No newline at end of file
diff -r ffa3c27c4328 -r 10acbb123580 todo.txt
--- a/todo.txt Wed Jan 09 01:08:22 2008 +0100
+++ b/todo.txt Wed Jan 09 02:59:32 2008 +0100
@@ -113,8 +113,8 @@
widgets/Tree
widgets/TreeColumn
widgets/TreeItem
-widgets/TypedListener
-widgets/Widget
+widgets/TypedListener // OK
+widgets/Widget // OK
layout/FormLayout
layout/FormAttachment