Mercurial > projects > dwt-mac
diff dwt/widgets/ColorDialog.d @ 37:642f460a0908
Fixed a lot of compile errors, a "hello world" app compiles now
author | Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com> |
---|---|
date | Fri, 10 Oct 2008 12:29:48 +0200 |
parents | e831403a80a9 |
children | d8635bb48c7c |
line wrap: on
line diff
--- a/dwt/widgets/ColorDialog.d Tue Oct 07 12:56:18 2008 +0200 +++ b/dwt/widgets/ColorDialog.d Fri Oct 10 12:29:48 2008 +0200 @@ -7,11 +7,12 @@ * * Contributors: * IBM Corporation - initial API and implementation + * + * Port to the D programming language: + * Jacob Carlborg <jacob.carlborg@gmail.com> *******************************************************************************/ module dwt.widgets.ColorDialog; -import dwt.dwthelper.utils; - import dwt.DWT; import dwt.DWTException; @@ -24,6 +25,12 @@ import dwt.internal.cocoa.OS; import dwt.internal.cocoa.SWTPanelDelegate; +import dwt.dwthelper.utils; +import dwt.internal.cocoa.NSInteger; +import dwt.widgets.Dialog; +import dwt.widgets.Display; +import dwt.widgets.Shell; + /** * Instances of this class allow the user to select a color * from a predefined set of available colors. @@ -41,126 +48,126 @@ public class ColorDialog : Dialog { RGB rgb; -/** - * Constructs a new instance of this class given only its parent. - * - * @param parent a composite control which will be the parent of the new instance - * - * @exception IllegalArgumentException <ul> - * <li>ERROR_NULL_ARGUMENT - if the parent is null</li> - * </ul> - * @exception DWTException <ul> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li> - * <li>ERROR_INVALID_SUBCLASS - if this class is not an allowed subclass</li> - * </ul> - * - * @see DWT - * @see Widget#checkSubclass - * @see Widget#getStyle - */ -public this(Shell parent) { - this(parent, DWT.APPLICATION_MODAL); -} - -/** - * Constructs a new instance of this class given its parent - * and a style value describing its behavior and appearance. - * <p> - * The style value is either one of the style constants defined in - * class <code>DWT</code> which is applicable to instances of this - * class, or must be built by <em>bitwise OR</em>'ing together - * (that is, using the <code>int</code> "|" operator) two or more - * of those <code>DWT</code> style constants. The class description - * lists the style constants that are applicable to the class. - * Style bits are also inherited from superclasses. - * </p> - * - * @param parent a composite control which will be the parent of the new instance (cannot be null) - * @param style the style of control to construct - * - * @exception IllegalArgumentException <ul> - * <li>ERROR_NULL_ARGUMENT - if the parent is null</li> - * </ul> - * @exception DWTException <ul> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li> - * <li>ERROR_INVALID_SUBCLASS - if this class is not an allowed subclass</li> - * </ul> - * - * @see DWT - * @see Widget#checkSubclass - * @see Widget#getStyle - */ -public this(Shell parent, int style) { - super(parent, style); - checkSubclass (); -} - -void changeColor(int sender) { - //TODO -} - -/** - * Returns the currently selected color in the receiver. - * - * @return the RGB value for the selected color, may be null - * - * @see PaletteData#getRGBs - */ -public RGB getRGB() { - return rgb; -} - -/** - * Makes the receiver visible and brings it to the front - * of the display. - * - * @return the selected color, or null if the dialog was - * cancelled, no color was selected, or an error - * occurred - * - * @exception DWTException <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> - * </ul> - */ -public RGB open() { - NSColorPanel panel = NSColorPanel.sharedColorPanel(); - if (rgb !is null) { - NSColor color = NSColor.colorWithDeviceRed(rgb.red / 255f, rgb.green / 255f, rgb.blue / 255f, 1); - panel.setColor(color); + /** + * Constructs a new instance of this class given only its parent. + * + * @param parent a composite control which will be the parent of the new instance + * + * @exception IllegalArgumentException <ul> + * <li>ERROR_NULL_ARGUMENT - if the parent is null</li> + * </ul> + * @exception DWTException <ul> + * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li> + * <li>ERROR_INVALID_SUBCLASS - if this class is not an allowed subclass</li> + * </ul> + * + * @see DWT + * @see Widget#checkSubclass + * @see Widget#getStyle + */ + public this(Shell parent) { + this(parent, DWT.APPLICATION_MODAL); + } + + /** + * Constructs a new instance of this class given its parent + * and a style value describing its behavior and appearance. + * <p> + * The style value is either one of the style constants defined in + * class <code>DWT</code> which is applicable to instances of this + * class, or must be built by <em>bitwise OR</em>'ing together + * (that is, using the <code>int</code> "|" operator) two or more + * of those <code>DWT</code> style constants. The class description + * lists the style constants that are applicable to the class. + * Style bits are also inherited from superclasses. + * </p> + * + * @param parent a composite control which will be the parent of the new instance (cannot be null) + * @param style the style of control to construct + * + * @exception IllegalArgumentException <ul> + * <li>ERROR_NULL_ARGUMENT - if the parent is null</li> + * </ul> + * @exception DWTException <ul> + * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li> + * <li>ERROR_INVALID_SUBCLASS - if this class is not an allowed subclass</li> + * </ul> + * + * @see DWT + * @see Widget#checkSubclass + * @see Widget#getStyle + */ + public this(Shell parent, int style) { + super(parent, style); + checkSubclass (); + } + + void changeColor(int sender) { + //TODO } - SWTPanelDelegate delegate = cast(SWTPanelDelegate)new SWTPanelDelegate().alloc().init(); - int jniRef = OS.NewGlobalRef(this); - if (jniRef is 0) DWT.error(DWT.ERROR_NO_HANDLES); - delegate.setTag(jniRef); - panel.setDelegate(delegate); - rgb = null; - panel.orderFront(null); - NSApplication.sharedApplication().runModalForWindow_(panel); - panel.setDelegate(null); - delegate.release(); - OS.DeleteGlobalRef(jniRef); - NSColor color = panel.color(); - if (color !is null) { - color = color.colorUsingColorSpaceName_(NSString.stringWith("NSCalibratedRGBColorSpace")); - rgb = new RGB(cast(int)(color.redComponent() * 255), cast(int)(color.greenComponent() * 255), cast(int)(color.blueComponent() * 255)); + + /** + * Returns the currently selected color in the receiver. + * + * @return the RGB value for the selected color, may be null + * + * @see PaletteData#getRGBs + */ + public RGB getRGB() { + return rgb; } - return rgb; -} - -/** - * Sets the receiver's selected color to be the argument. - * - * @param rgb the new RGB value for the selected color, may be - * null to let the platform select a default when - * open() is called - * @see PaletteData#getRGBs - */ -public void setRGB(RGB rgb) { - this.rgb = rgb; -} - -void windowWillClose(int sender) { - NSApplication.sharedApplication().stop(null); -} -} + + /** + * Makes the receiver visible and brings it to the front + * of the display. + * + * @return the selected color, or null if the dialog was + * cancelled, no color was selected, or an error + * occurred + * + * @exception DWTException <ul> + * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> + * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> + * </ul> + */ + public RGB open() { + NSColorPanel panel = NSColorPanel.sharedColorPanel(); + if (rgb !is null) { + NSColor color = NSColor.colorWithDeviceRed(rgb.red / 255f, rgb.green / 255f, rgb.blue / 255f, 1); + panel.setColor(color); + } + SWTPanelDelegate delegate_ = cast(SWTPanelDelegate)(new SWTPanelDelegate()).alloc().init(); + NSInteger jniRef = OS.NewGlobalRef(this); + if (jniRef is 0) DWT.error(DWT.ERROR_NO_HANDLES); + delegate_.setTag(jniRef); + panel.setDelegate(delegate_); + rgb = null; + panel.orderFront(null); + NSApplication.sharedApplication().runModalForWindow_(panel); + panel.setDelegate(null); + delegate_.release(); + OS.DeleteGlobalRef(jniRef); + NSColor color = panel.color(); + if (color !is null) { + color = color.colorUsingColorSpaceName_(NSString.stringWith("NSCalibratedRGBColorSpace")); + rgb = new RGB(cast(int)(color.redComponent() * 255), cast(int)(color.greenComponent() * 255), cast(int)(color.blueComponent() * 255)); + } + return rgb; + } + + /** + * Sets the receiver's selected color to be the argument. + * + * @param rgb the new RGB value for the selected color, may be + * null to let the platform select a default when + * open() is called + * @see PaletteData#getRGBs + */ + public void setRGB(RGB rgb) { + this.rgb = rgb; + } + + void windowWillClose(int sender) { + NSApplication.sharedApplication().stop(null); + } + }