# HG changeset patch # User Jacob Carlborg # Date 1228768038 -3600 # Node ID 96d20dc95b8c0d4c358bd78fdaee53e3076f3a79 # Parent 6914d8d302deabaab3877daeb28ad0c3eb7c0532 Updated FontDialog to 3.514 diff -r 6914d8d302de -r 96d20dc95b8c dwt/widgets/FontDialog.d --- a/dwt/widgets/FontDialog.d Mon Dec 08 21:23:00 2008 +0100 +++ b/dwt/widgets/FontDialog.d Mon Dec 08 21:27:18 2008 +0100 @@ -28,7 +28,7 @@ import dwt.internal.cocoa.SWTPanelDelegate; import dwt.dwthelper.utils; -import dwt.internal.cocoa.NSInteger; +import dwt.internal.objc.cocoa.Cocoa; import dwt.widgets.Dialog; import dwt.widgets.Display; import dwt.widgets.Shell; @@ -56,47 +56,47 @@ bool selected; int fontID, fontSize; - /** - * Constructs a new instance of this class given only its parent. - * - * @param parent a shell which will be the parent of the new instance - * - * @exception IllegalArgumentException - * @exception DWTException - */ - 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. - *

- * The style value is either one of the style constants defined in - * class DWT which is applicable to instances of this - * class, or must be built by bitwise OR'ing together - * (that is, using the int "|" operator) two or more - * of those DWT style constants. The class description - * lists the style constants that are applicable to the class. - * Style bits are also inherited from superclasses. - *

- * - * @param parent a shell which will be the parent of the new instance - * @param style the style of dialog to construct - * - * @exception IllegalArgumentException - * @exception DWTException - */ +/** + * Constructs a new instance of this class given only its parent. + * + * @param parent a shell which will be the parent of the new instance + * + * @exception IllegalArgumentException + * @exception DWTException + */ +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. + *

+ * The style value is either one of the style constants defined in + * class DWT which is applicable to instances of this + * class, or must be built by bitwise OR'ing together + * (that is, using the int "|" operator) two or more + * of those DWT style constants. The class description + * lists the style constants that are applicable to the class. + * Style bits are also inherited from superclasses. + *

+ * + * @param parent a shell which will be the parent of the new instance + * @param style the style of dialog to construct + * + * @exception IllegalArgumentException + * @exception DWTException + */ public this (Shell parent, int style) { super (parent, checkStyle (parent, style)); checkSubclass (); @@ -107,134 +107,134 @@ } /** - * Returns a FontData object describing the font that was - * selected in the dialog, or null if none is available. - * - * @return the FontData for the selected font, or null - * @deprecated use #getFontList () - */ - public FontData getFontData () { - return fontData; - } - - /** - * Returns a FontData set describing the font that was - * selected in the dialog, or null if none is available. - * - * @return the FontData for the selected font, or null - * @since 2.1.1 - */ - public FontData [] getFontList () { - if (fontData is null) return null; - FontData [] result = new FontData [1]; - result [0] = fontData; - return result; - } - - /** - * Returns an RGB describing the color that was selected - * in the dialog, or null if none is available. - * - * @return the RGB value for the selected color, or null - * - * @see PaletteData#getRGBs - * - * @since 2.1 - */ - public RGB getRGB () { - return rgb; - } - - //int fontProc (int nextHandler, int theEvent, int userData) { - // int kind = OS.GetEventKind (theEvent); - // switch (kind) { - // case OS.kEventFontPanelClosed: - // open = false; - // break; - // case OS.kEventFontSelection: - // int [] fontID = new int [1]; - // if (OS.GetEventParameter (theEvent, OS.kEventParamATSUFontID, OS.typeUInt32, null, 4, null, fontID) is OS.noErr) { - // this.fontID = fontID [0]; - // } - // int [] fontSize = new int [1]; - // if (OS.GetEventParameter (theEvent, OS.kEventParamATSUFontSize, OS.typeFixed, null, 4, null, fontSize) is OS.noErr) { - // this.fontSize = fontSize [0]; - // } - // RGBColor color = new RGBColor (); - // int [] actualSize = new int [1]; - // if (OS.GetEventParameter (theEvent, OS.kEventParamFontColor, OS.typeRGBColor, null, RGBColor.sizeof, actualSize, color) is OS.noErr) { - // int red = (color.red >> 8) & 0xFF; - // int green = (color.green >> 8) & 0xFF; - // int blue = (color.blue >> 8) & 0xFF; - // rgb = new RGB (red, green, blue); - // } else { - // int [] dict = new int [1]; - // if (OS.GetEventParameter (theEvent, OS.kEventParamDictionary, OS.typeCFDictionaryRef, null, 4, actualSize, dict) is OS.noErr) { - // int [] attrib = new int [1]; - // if (OS.CFDictionaryGetValueIfPresent (dict [0], OS.kFontPanelAttributesKey (), attrib)) { - // int [] tags = new int [1]; - // int [] sizes = new int [1]; - // int [] values = new int [1]; - // if (OS.CFDictionaryGetValueIfPresent (attrib [0], OS.kFontPanelAttributeTagsKey (), tags) && - // OS.CFDictionaryGetValueIfPresent (attrib [0], OS.kFontPanelAttributeSizesKey (), sizes) && - // OS.CFDictionaryGetValueIfPresent (attrib [0], OS.kFontPanelAttributeValuesKey (), values) - // ) { - // int count = OS.CFDataGetLength (tags [0]) / 4; - // int tagPtr = OS.CFDataGetBytePtr (tags[0]); - // int sizePtr = OS.CFDataGetBytePtr (sizes [0]); - // int [] tag = new int [1]; - // int [] size = new int [1]; - // int valueOffset = 0; - // for (int i = 0 ; i < count ; i++) { - // OS.memmove (tag, tagPtr + (i * 4), 4); - // OS.memmove (size, sizePtr + (i * 4), 4); - // if (tag [0] is OS.kATSUColorTag && size[0] is RGBColor.sizeof) { - // int valuePtr = OS.CFDataGetBytePtr (values [0]); - // OS.memmove (color, valuePtr + valueOffset, RGBColor.sizeof); - // int red = (color.red >> 8) & 0xFF; - // int green = (color.green >> 8) & 0xFF; - // int blue = (color.blue >> 8) & 0xFF; - // rgb = new RGB (red, green, blue); - // break ; - // } - // valueOffset = size[0]; - // } - // } - // } - // } - // } - // break; - // } - // return OS.noErr; - //} - - /** - * Makes the dialog visible and brings it to the front - * of the display. - * - * @return a FontData object describing the font that was selected, - * or null if the dialog was cancelled or an error occurred - * - * @exception DWTException - */ - public FontData open () { + * Returns a FontData object describing the font that was + * selected in the dialog, or null if none is available. + * + * @return the FontData for the selected font, or null + * @deprecated use #getFontList () + */ +public FontData getFontData () { + return fontData; +} + +/** + * Returns a FontData set describing the font that was + * selected in the dialog, or null if none is available. + * + * @return the FontData for the selected font, or null + * @since 2.1.1 + */ +public FontData [] getFontList () { + if (fontData is null) return null; + FontData [] result = new FontData [1]; + result [0] = fontData; + return result; +} + +/** + * Returns an RGB describing the color that was selected + * in the dialog, or null if none is available. + * + * @return the RGB value for the selected color, or null + * + * @see PaletteData#getRGBs + * + * @since 2.1 + */ +public RGB getRGB () { + return rgb; +} + +//int fontProc (int nextHandler, int theEvent, int userData) { +// int kind = OS.GetEventKind (theEvent); +// switch (kind) { +// case OS.kEventFontPanelClosed: +// open = false; +// break; +// case OS.kEventFontSelection: +// int [] fontID = new int [1]; +// if (OS.GetEventParameter (theEvent, OS.kEventParamATSUFontID, OS.typeUInt32, null, 4, null, fontID) is OS.noErr) { +// this.fontID = fontID [0]; +// } +// int [] fontSize = new int [1]; +// if (OS.GetEventParameter (theEvent, OS.kEventParamATSUFontSize, OS.typeFixed, null, 4, null, fontSize) is OS.noErr) { +// this.fontSize = fontSize [0]; +// } +// RGBColor color = new RGBColor (); +// int [] actualSize = new int [1]; +// if (OS.GetEventParameter (theEvent, OS.kEventParamFontColor, OS.typeRGBColor, null, RGBColor.sizeof, actualSize, color) is OS.noErr) { +// int red = (color.red >> 8) & 0xFF; +// int green = (color.green >> 8) & 0xFF; +// int blue = (color.blue >> 8) & 0xFF; +// rgb = new RGB (red, green, blue); +// } else { +// int [] dict = new int [1]; +// if (OS.GetEventParameter (theEvent, OS.kEventParamDictionary, OS.typeCFDictionaryRef, null, 4, actualSize, dict) is OS.noErr) { +// int [] attrib = new int [1]; +// if (OS.CFDictionaryGetValueIfPresent (dict [0], OS.kFontPanelAttributesKey (), attrib)) { +// int [] tags = new int [1]; +// int [] sizes = new int [1]; +// int [] values = new int [1]; +// if (OS.CFDictionaryGetValueIfPresent (attrib [0], OS.kFontPanelAttributeTagsKey (), tags) && +// OS.CFDictionaryGetValueIfPresent (attrib [0], OS.kFontPanelAttributeSizesKey (), sizes) && +// OS.CFDictionaryGetValueIfPresent (attrib [0], OS.kFontPanelAttributeValuesKey (), values) +// ) { +// int count = OS.CFDataGetLength (tags [0]) / 4; +// int tagPtr = OS.CFDataGetBytePtr (tags[0]); +// int sizePtr = OS.CFDataGetBytePtr (sizes [0]); +// int [] tag = new int [1]; +// int [] size = new int [1]; +// int valueOffset = 0; +// for (int i = 0 ; i < count ; i++) { +// OS.memmove (tag, tagPtr + (i * 4), 4); +// OS.memmove (size, sizePtr + (i * 4), 4); +// if (tag [0] is OS.kATSUColorTag && size[0] is RGBColor.sizeof) { +// int valuePtr = OS.CFDataGetBytePtr (values [0]); +// OS.memmove (color, valuePtr + valueOffset, RGBColor.sizeof); +// int red = (color.red >> 8) & 0xFF; +// int green = (color.green >> 8) & 0xFF; +// int blue = (color.blue >> 8) & 0xFF; +// rgb = new RGB (red, green, blue); +// break ; +// } +// valueOffset = size[0]; +// } +// } +// } +// } +// } +// break; +// } +// return OS.noErr; +//} + +/** + * Makes the dialog visible and brings it to the front + * of the display. + * + * @return a FontData object describing the font that was selected, + * or null if the dialog was cancelled or an error occurred + * + * @exception DWTException + */ +public FontData open () { Display display = parent !is null ? parent.display : Display.getCurrent (); - NSFontPanel panel = NSFontPanel.sharedFontPanel(); - panel.setTitle(NSString.stringWith(title !is null ? title : "")); + NSFontPanel panel = NSFontPanel.sharedFontPanel(); + panel.setTitle(NSString.stringWith(title !is null ? title : "")); bool create = fontData !is null; Font font = create ? new Font(display, fontData) : display.getSystemFont(); panel.setPanelFont(font.handle, false); - SWTPanelDelegate delegate_ = cast(SWTPanelDelegate)(new SWTPanelDelegate()).alloc().init(); - char* jniRef = OS.NewGlobalRef(this); - if (jniRef is null) DWT.error(DWT.ERROR_NO_HANDLES); - OS.object_setInstanceVariable(delegate.id, Display.DWT_OBJECT, jniRef); - panel.setDelegate(delegate_); - fontData = null; + SWTPanelDelegate delegate_ = cast(SWTPanelDelegate)(new SWTPanelDelegate()).alloc().init(); + void* jniRef = OS.NewGlobalRef(this); + if (jniRef is null) DWT.error(DWT.ERROR_NO_HANDLES); + OS.object_setInstanceVariable(delegate_.id, Display.SWT_OBJECT, jniRef); + panel.setDelegate(delegate_); + fontData = null; selected = false; - panel.orderFront(null); + panel.orderFront(null); NSApplication.sharedApplication().runModalForWindow(panel); if (selected) { NSFont nsFont = panel.panelConvertFont(font.handle); @@ -242,62 +242,61 @@ fontData = Font.cocoa_new(display, nsFont).getFontData()[0]; } } - panel.setDelegate(null); - delegate_.release(); - OS.DeleteGlobalRef(jniRef); + panel.setDelegate(null); + delegate_.release(); if (create) font.dispose(); - return fontData; - } - - /** - * Sets a FontData object describing the font to be - * selected by default in the dialog, or null to let - * the platform choose one. - * - * @param fontData the FontData to use initially, or null - * @deprecated use #setFontList (FontData []) - */ - public void setFontData (FontData fontData) { - this.fontData = fontData; + return fontData; +} + +/** + * Sets a FontData object describing the font to be + * selected by default in the dialog, or null to let + * the platform choose one. + * + * @param fontData the FontData to use initially, or null + * @deprecated use #setFontList (FontData []) + */ +public void setFontData (FontData fontData) { + this.fontData = fontData; +} + +/** + * Sets the set of FontData objects describing the font to + * be selected by default in the dialog, or null to let + * the platform choose one. + * + * @param fontData the set of FontData objects to use initially, or null + * to let the platform select a default when open() is called + * + * @see Font#getFontData + * + * @since 2.1.1 + */ +public void setFontList (FontData [] fontData) { + if (fontData !is null && fontData.length > 0) { + this.fontData = fontData [0]; + } else { + this.fontData = null; } - - /** - * Sets the set of FontData objects describing the font to - * be selected by default in the dialog, or null to let - * the platform choose one. - * - * @param fontData the set of FontData objects to use initially, or null - * to let the platform select a default when open() is called - * - * @see Font#getFontData - * - * @since 2.1.1 - */ - public void setFontList (FontData [] fontData) { - if (fontData !is null && fontData.length > 0) { - this.fontData = fontData [0]; - } else { - this.fontData = null; - } - } - - /** - * Sets the RGB describing the color to be selected by default - * in the dialog, or null to let the platform choose one. - * - * @param rgb the RGB value to use initially, or null to let - * the platform select a default when open() is called - * - * @see PaletteData#getRGBs - * - * @since 2.1 - */ - public void setRGB (RGB rgb) { - this.rgb = rgb; - } +} + +/** + * Sets the RGB describing the color to be selected by default + * in the dialog, or null to let the platform choose one. + * + * @param rgb the RGB value to use initially, or null to let + * the platform select a default when open() is called + * + * @see PaletteData#getRGBs + * + * @since 2.1 + */ +public void setRGB (RGB rgb) { + this.rgb = rgb; +} void windowWillClose(objc.id id, objc.SEL sel, objc.id sender) { - NSApplication.sharedApplication().stop(null); - } - - } + NSApplication.sharedApplication().stop(null); +} + +}