Mercurial > projects > dwt-linux
diff dwt/widgets/Widget.d @ 28:10acbb123580
Widget and TypedListener
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Wed, 09 Jan 2008 02:59:32 +0100 |
parents | ffa3c27c4328 |
children | ffffd0cd3b59 |
line wrap: on
line diff
--- 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. * </p> */ - 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 @@ * </ul> */ 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; i<table.length; i+=2) { - if (key.equals (table [i])) return table [i+1]; + if (key ==/*eq*/ table [i] ) return new ArrayWrapperString( table [i+1] ); } } return null; @@ -640,21 +651,21 @@ */ public Display getDisplay () { Display display = this.display; - if (display == null) error (SWT.ERROR_WIDGET_DISPOSED); + if (display is null) error (SWT.ERROR_WIDGET_DISPOSED); return display; } -String getName () { -// String string = getClass ().getName (); -// int index = string.lastIndexOf ('.'); -// if (index == -1) return string; - String string = getClass ().getName (); - int index = string.length (); - while ((--index > 0) && (string.charAt (index) != '.')) {} - return string.substring (index + 1, string.length ()); +char[] getName () { +// char[] str = getClass ().getName (); +// int index = str.lastIndexOf ('.'); +// if (index is -1) return str; + char[] str = this.classinfo.name; + int index = str.length; + while ((--index > 0) && (str[index] !is '.')) {} + return str[index + 1 .. $ ]; } -String getNameText () { +char[] getNameText () { return ""; } @@ -684,27 +695,27 @@ } -int /*long*/ gtk_activate (int /*long*/ widget) { +int /*long*/ gtk_activate (GtkWidget* widget) { return 0; } -int /*long*/ gtk_button_press_event (int /*long*/ widget, int /*long*/ event) { +int /*long*/ gtk_button_press_event (GtkWidget* widget, int /*long*/ event) { return 0; } -int /*long*/ gtk_button_release_event (int /*long*/ widget, int /*long*/ event) { +int /*long*/ gtk_button_release_event (GtkWidget* widget, int /*long*/ event) { return 0; } -int /*long*/ gtk_changed (int /*long*/ widget) { +int /*long*/ gtk_changed (GtkWidget* widget) { return 0; } -int /*long*/ gtk_change_value (int /*long*/ widget, int /*long*/ scroll, int /*long*/ value1, int /*long*/ value2) { +int /*long*/ gtk_change_value (GtkWidget* widget, int /*long*/ scroll, int /*long*/ value1, int /*long*/ value2) { return 0; } -int /*long*/ gtk_clicked (int /*long*/ widget) { +int /*long*/ gtk_clicked (GtkWidget* widget) { return 0; } @@ -712,127 +723,123 @@ return 0; } -int /*long*/ gtk_configure_event (int /*long*/ widget, int /*long*/ event) { +int /*long*/ gtk_configure_event (GtkWidget* widget, int /*long*/ event) { return 0; } -int /*long*/ gtk_day_selected (int /*long*/ widget) { - return 0; -} - -int /*long*/ gtk_delete_event (int /*long*/ widget, int /*long*/ event) { +int /*long*/ gtk_day_selected (GtkWidget* widget) { return 0; } -int /*long*/ gtk_delete_range (int /*long*/ widget, int /*long*/ iter1, int /*long*/ iter2) { +int /*long*/ gtk_delete_event (GtkWidget* widget, int /*long*/ event) { return 0; } -int /*long*/ gtk_delete_text (int /*long*/ widget, int /*long*/ start_pos, int /*long*/ end_pos) { +int /*long*/ gtk_delete_range (GtkWidget* widget, int /*long*/ iter1, int /*long*/ iter2) { return 0; } -int /*long*/ gtk_enter_notify_event (int /*long*/ widget, int /*long*/ event) { +int /*long*/ gtk_delete_text (GtkWidget* widget, int /*long*/ start_pos, int /*long*/ end_pos) { return 0; } -int /*long*/ gtk_event (int /*long*/ widget, int /*long*/ event) { +int /*long*/ gtk_enter_notify_event (GtkWidget* widget, int /*long*/ event) { return 0; } -int /*long*/ gtk_event_after (int /*long*/ widget, int /*long*/ event) { +int /*long*/ gtk_event (GtkWidget* widget, int /*long*/ event) { return 0; } -int /*long*/ gtk_expand_collapse_cursor_row (int /*long*/ widget, int /*long*/ logical, int /*long*/ expand, int /*long*/ open_all) { +int /*long*/ gtk_event_after (GtkWidget* widget, int /*long*/ event) { return 0; } -int /*long*/ gtk_expose_event (int /*long*/ widget, int /*long*/ event) { +int /*long*/ gtk_expand_collapse_cursor_row (GtkWidget* widget, int /*long*/ logical, int /*long*/ expand, int /*long*/ open_all) { return 0; } -int /*long*/ gtk_focus (int /*long*/ widget, int /*long*/ event) { +int /*long*/ gtk_expose_event (GtkWidget* widget, int /*long*/ event) { return 0; } -int /*long*/ gtk_focus_in_event (int /*long*/ widget, int /*long*/ event) { +int /*long*/ gtk_focus (GtkWidget* widget, int /*long*/ event) { return 0; } -int /*long*/ gtk_focus_out_event (int /*long*/ widget, int /*long*/ event) { +int /*long*/ gtk_focus_in_event (GtkWidget* widget, int /*long*/ event) { return 0; } -int /*long*/ gtk_grab_focus (int /*long*/ widget) { +int /*long*/ gtk_focus_out_event (GtkWidget* widget, int /*long*/ event) { return 0; } -int /*long*/ gtk_hide (int /*long*/ widget) { +int /*long*/ gtk_grab_focus (GtkWidget* widget) { return 0; } -int /*long*/ gtk_input (int /*long*/ widget, int /*long*/ arg1) { +int /*long*/ gtk_hide (GtkWidget* widget) { return 0; } -int /*long*/ gtk_insert_text (int /*long*/ widget, int /*long*/ new_text, int /*long*/ new_text_length, int /*long*/ position) { +int /*long*/ gtk_input (GtkWidget* widget, int /*long*/ arg1) { + return 0; +} + +int /*long*/ gtk_insert_text (GtkWidget* widget, int /*long*/ new_text, int /*long*/ new_text_length, int /*long*/ position) { return 0; } -int /*long*/ gtk_key_press_event (int /*long*/ widget, int /*long*/ event) { - GdkEventKey gdkEvent = new GdkEventKey (); - OS.memmove (gdkEvent, event, GdkEventKey.sizeof); - return sendKeyEvent (SWT.KeyDown, gdkEvent) ? 0 : 1; +int /*long*/ gtk_key_press_event (GtkWidget* widget, GdkEventKey* event) { + return sendKeyEvent (SWT.KeyDown, event) ? 0 : 1; } -int /*long*/ gtk_key_release_event (int /*long*/ widget, int /*long*/ event) { - GdkEventKey gdkEvent = new GdkEventKey (); - OS.memmove (gdkEvent, event, GdkEventKey.sizeof); - return sendKeyEvent (SWT.KeyUp, gdkEvent) ? 0 : 1; +int /*long*/ gtk_key_release_event (GtkWidget* widget, GdkEventKey* event) { + return sendKeyEvent (SWT.KeyUp, event) ? 0 : 1; } -int /*long*/ gtk_leave_notify_event (int /*long*/ widget, int /*long*/ event) { +int /*long*/ gtk_leave_notify_event (GtkWidget* widget, int /*long*/ event) { return 0; } -int /*long*/ gtk_map (int /*long*/ widget) { +int /*long*/ gtk_map (GtkWidget* widget) { return 0; } -int /*long*/ gtk_map_event (int /*long*/ widget, int /*long*/ event) { +int /*long*/ gtk_map_event (GtkWidget* widget, int /*long*/ event) { return 0; } -int /*long*/ gtk_mnemonic_activate (int /*long*/ widget, int /*long*/ arg1) { +int /*long*/ gtk_mnemonic_activate (GtkWidget* widget, int /*long*/ arg1) { return 0; } -int /*long*/ gtk_month_changed (int /*long*/ widget) { +int /*long*/ gtk_month_changed (GtkWidget* widget) { return 0; } -int /*long*/ gtk_motion_notify_event (int /*long*/ widget, int /*long*/ event) { +int /*long*/ gtk_motion_notify_event (GtkWidget* widget, int /*long*/ event) { return 0; } -int /*long*/ gtk_move_focus (int /*long*/ widget, int /*long*/ event) { +int /*long*/ gtk_move_focus (GtkWidget* widget, int /*long*/ event) { return 0; } -int /*long*/ gtk_output (int /*long*/ widget) { +int /*long*/ gtk_output (GtkWidget* widget) { return 0; } -int /*long*/ gtk_popup_menu (int /*long*/ widget) { +int /*long*/ gtk_popup_menu (GtkWidget* widget) { return 0; } -int /*long*/ gtk_preedit_changed (int /*long*/ imcontext) { +int /*long*/ gtk_preedit_changed (GtkWidget* imcontext) { return 0; } -int /*long*/ gtk_realize (int /*long*/ widget) { +int /*long*/ gtk_realize (GtkWidget* widget) { return 0; } @@ -840,11 +847,11 @@ return 0; } -int /*long*/ gtk_scroll_child (int /*long*/ widget, int /*long*/ scrollType, int /*long*/ horizontal) { +int /*long*/ gtk_scroll_child (GtkWidget* widget, int /*long*/ scrollType, int /*long*/ horizontal) { return 0; } -int /*long*/ gtk_scroll_event (int /*long*/ widget, int /*long*/ event) { +int /*long*/ gtk_scroll_event (GtkWidget* widget, int /*long*/ event) { return 0; } @@ -852,23 +859,23 @@ return 0; } -int /*long*/ gtk_show (int /*long*/ widget) { +int /*long*/ gtk_show (GtkWidget* widget) { return 0; } -int /*long*/ gtk_show_help (int /*long*/ widget, int /*long*/ helpType) { +int /*long*/ gtk_show_help (GtkWidget* widget, int /*long*/ helpType) { return 0; } -int /*long*/ gtk_size_allocate (int /*long*/ widget, int /*long*/ allocation) { +int /*long*/ gtk_size_allocate (GtkWidget* widget, int /*long*/ allocation) { return 0; } -int /*long*/ gtk_style_set (int /*long*/ widget, int /*long*/ previousStyle) { +int /*long*/ gtk_style_set (GtkWidget* widget, int /*long*/ previousStyle) { return 0; } -int /*long*/ gtk_switch_page (int /*long*/ widget, int /*long*/ page, int /*long*/ page_num) { +int /*long*/ gtk_switch_page (GtkWidget* widget, int /*long*/ page, int /*long*/ page_num) { return 0; } @@ -880,7 +887,7 @@ return 0; } -int /*long*/ gtk_text_buffer_insert_text (int /*long*/ widget, int /*long*/ iter, int /*long*/ text, int /*long*/ length) { +int /*long*/ gtk_text_buffer_insert_text (GtkWidget* widget, int /*long*/ iter, int /*long*/ text, int /*long*/ length) { return 0; } @@ -892,15 +899,15 @@ return 0; } -int /*long*/ gtk_unmap (int /*long*/ widget) { +int /*long*/ gtk_unmap (GtkWidget* widget) { return 0; } -int /*long*/ gtk_unmap_event (int /*long*/ widget, int /*long*/ event) { +int /*long*/ gtk_unmap_event (GtkWidget* widget, int /*long*/ event) { return 0; } -int /*long*/ gtk_unrealize (int /*long*/ widget) { +int /*long*/ gtk_unrealize (GtkWidget* widget) { return 0; } @@ -908,46 +915,46 @@ return 0; } -int /*long*/ gtk_visibility_notify_event (int /*long*/ widget, int /*long*/ event) { +int /*long*/ gtk_visibility_notify_event (GtkWidget* widget, int /*long*/ event) { return 0; } -int /*long*/ gtk_window_state_event (int /*long*/ widget, int /*long*/ event) { +int /*long*/ gtk_window_state_event (GtkWidget* widget, int /*long*/ event) { return 0; } -int fontHeight (int /*long*/ font, int /*long*/ widgetHandle) { - int /*long*/ context = OS.gtk_widget_get_pango_context (widgetHandle); - int /*long*/ lang = OS.pango_context_get_language (context); - int /*long*/ metrics = OS.pango_context_get_metrics (context, font, lang); +int fontHeight ( PangoFontDescription* font, GtkWidget* widgetHandle ) { + auto context = OS.gtk_widget_get_pango_context (widgetHandle); + auto lang = OS.pango_context_get_language (context); + auto metrics = OS.pango_context_get_metrics (context, font, lang); int ascent = OS.pango_font_metrics_get_ascent (metrics); int descent = OS.pango_font_metrics_get_descent (metrics); OS.pango_font_metrics_unref (metrics); return OS.PANGO_PIXELS (ascent + descent); } -int /*long*/ filterProc(int /*long*/ xEvent, int /*long*/ gdkEvent, int /*long*/ data2) { - return 0; +GdkFilterReturn filterProc (GdkXEvent* xEvent, GdkEvent* gdkEvent, void* data) { + return cast(GdkFilterReturn)0; } -boolean filters (int eventType) { +bool filters (int eventType) { return display.filters (eventType); } -int /*long*/ fixedMapProc (int /*long*/ widget) { +int /*long*/ fixedMapProc (GtkWidget* widget) { return 0; } -char [] fixMnemonic (String string) { - int length = string.length (); - char [] text = new char [length]; - string.getChars (0, length, text, 0); +char [] fixMnemonic (char[] str) { + int len = str.length; + char [] text = new char [len]; + text = str[0 .. len]; int i = 0, j = 0; - char [] result = new char [length * 2]; - while (i < length) { + char [] result = new char [len * 2]; + while (i < len) { switch (text [i]) { case '&': - if (i + 1 < length && text [i + 1] == '&') { + if (i + 1 < len && text [i + 1] is '&') { i++; } else { text [i] = '_'; @@ -973,8 +980,8 @@ * * @return <code>true</code> when the widget is disposed and <code>false</code> 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