changeset 54:96d20dc95b8c

Updated FontDialog to 3.514
author Jacob Carlborg <doob@me.com>
date Mon, 08 Dec 2008 21:27:18 +0100
parents 6914d8d302de
children 6309d49b16b7
files dwt/widgets/FontDialog.d
diffstat 1 files changed, 219 insertions(+), 220 deletions(-) [+]
line wrap: on
line diff
--- 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 <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>
-     */
-    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 shell which will be the parent of the new instance
-     * @param style the style of dialog 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>
-     */
+/**
+ * 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 <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>
+ */
+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 shell which will be the parent of the new instance
+ * @param style the style of dialog 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>
+ */
     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 <ul>
-     *    <li>ERROR_WIDGET_DISPOSED - if the dialog has been disposed</li>
-     *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the dialog</li>
-     * </ul>
-     */
-    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 <ul>
+ *    <li>ERROR_WIDGET_DISPOSED - if the dialog has been disposed</li>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the dialog</li>
+ * </ul>
+ */
+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);
+}
+
+}