Changeset 6735


Ignore:
Timestamp:
Jun 15, 2007, 4:27:31 AM (17 years ago)
Author:
Gary Byers
Message:

More stuff.


File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/ide-1.0/ccl/examples/cocoa-prefs.lisp

    r6726 r6735  
    2727  (:metaclass ns:+ns-object))
    2828
    29 (defclass lisp-preferences-window-controller (ns:ns-window-controller)
     29(defclass font-name-transformer (ns:ns-value-transformer)
    3030    ()
    3131  (:metaclass ns:+ns-object))
     32
     33(objc:defmethod #/transformedNameClass ((self +font-name-transformer))
     34  ns:ns-string)
     35
     36
     37(objc:defmethod (#/allowsReverseTransformation :<BOOL>)
     38    ((self +font-name-transformer))
     39  nil)
     40
     41(objc:defmethod #/transformValue ((self font-name-transformer) value)
     42  ;; Is there any better way of doing this that doesn't involve
     43  ;; making a font ?
     44  (#/displayName (make-instance ns:ns-font
     45                                :with-name value
     46                                :size (float 12.0 +cgfloat-zero+))))
     47
     48
     49
     50(defclass lisp-preferences-window-controller (ns:ns-window-controller)
     51    ((selected-font-index :foreign-type :int))
     52  (:metaclass ns:+ns-object))
     53
     54(objc:defmethod (#/fontPanelForDefaultFont: :void)
     55    ((self lisp-preferences-window-controller) sender)
     56  (with-slots (selected-font-index) self
     57    (setq selected-font-index 1))
     58  (#/orderFrontFontPanel: *NSApp* sender))
     59
     60
     61(objc:defmethod (#/fontPanelForModelineFont: :void)
     62    ((self lisp-preferences-window-controller) sender)
     63  (with-slots (selected-font-index) self
     64    (setq selected-font-index 2))
     65  (#/orderFrontFontPanel: *NSApp* sender))
     66
     67(objc:defmethod (#/changeFont: :void) ((self lisp-preferences-window-controller) sender)
     68  #+debug (#_NSLog #@"ChangeFont.")
     69  (with-slots ((idx selected-font-index)) self
     70    (when (> idx 0)
     71      (let* ((f (#/convertFont: sender (default-font))))
     72        (when (is-fixed-pitch-font f)
     73          (let* ((values (#/values (#/sharedUserDefaultsController ns:ns-user-defaults-controller))))
     74            (#/setValue:forKey: values (#/fontName f) (if (eql 1 idx) #@"defaultFontName" #@"modelineFontName:"))
     75            (#/setValue:forKey: values (#/stringWithFormat: ns:ns-string #@"%u" (round (#/pointSize f))) (if (eql 1 idx) #@"defaultFontSize" #@"modelineFontSize"))))))))
    3276
    3377
     
    58102        (t
    59103         (update-cocoa-defaults)
    60          (let* ((sdc (#/sharedUserDefaultsController ns:ns-user-defaults-controller)))
     104         (#/setValueTransformer:forName:
     105          ns:ns-value-transformer
     106          (make-instance 'font-name-transformer)
     107          #@"FontNameTransformer")
     108         (let* ((sdc (make-instance ns:ns-user-defaults-controller
     109                                    :with-defaults +null-ptr+
     110                                    :initial-values (cocoa-defaults-initial-values))))
    61111           (#/setAppliesImmediately: sdc nil)
    62112           (let* ((controller (make-instance lisp-preferences-window-controller
     
    64114                  (window (#/window controller)))
    65115             (unless (%null-ptr-p window)
    66                (#/setFloatingPanel: window nil)
     116               (#/setFloatingPanel: window t)
    67117               (dolist (d (cocoa-defaults))
    68118                 (let* ((key (objc-constant-string-nsstringptr (cocoa-default-string d))))
     
    85135    (#/sharedPanel class)))
    86136
     137
     138(objc:defmethod (#/makeKeyAndOrderFront: :void)
     139    ((self lisp-preferences-panel) sender)
     140  (#/setShowsAlpha: (#/sharedColorPanel ns:ns-color-panel) t)
     141  (call-next-method sender))
     142
    87143(objc:defmethod (#/show :void) ((self lisp-preferences-panel))
    88144  (#/makeKeyAndOrderFront: self +null-ptr+))
Note: See TracChangeset for help on using the changeset viewer.