Index: /branches/ide-1.0/ccl/examples/cocoa-prefs.lisp
===================================================================
--- /branches/ide-1.0/ccl/examples/cocoa-prefs.lisp	(revision 6760)
+++ /branches/ide-1.0/ccl/examples/cocoa-prefs.lisp	(revision 6761)
@@ -84,5 +84,20 @@
     ((self lisp-preferences-window-controller)
      sender)
-  )
+  (declare (ignore sender))
+  (let* ((panel (make-instance 'ns:ns-open-panel))
+         (values (#/values (#/sharedUserDefaultsController ns:ns-user-defaults-controller))))
+    (#/setAllowsMultipleSelection: panel nil)
+    (#/setCanChooseDirectories: panel t)
+    (#/setCanChooseFiles: panel nil)
+    (when (eql
+           (#/runModalForDirectory:file:types:
+            panel
+            (#/valueForKey: values #@"hyperspecFileURLString")
+            +null-ptr+
+            +null-ptr+)
+           #$NSOKButton)
+      (let* ((filename (#/objectAtIndex: (#/filenames panel) 0)))
+        (#/setValue:forKey: values filename #@"hyperspecFileURLString")))))
+
 
 
@@ -90,25 +105,27 @@
   (cond (*lisp-preferences-panel*)
         (t
-         (update-cocoa-defaults)
-         (#/setValueTransformer:forName:
-          ns:ns-value-transformer
-          (make-instance 'font-name-transformer)
-          #@"FontNameTransformer")
-         (let* ((sdc (#/sharedUserDefaultsController ns:ns-user-defaults-controller)))
-           (#/setInitialValues: sdc (#/setAppliesImmediately: sdc nil))
-           (cocoa-defaults-initial-values)
-           (let* ((controller (make-instance lisp-preferences-window-controller
+         (let* ((domain (#/standardUserDefaults ns:ns-user-defaults))
+                (initial-values (cocoa-defaults-initial-values)))
+           (#/registerDefaults: domain initial-values)
+           (update-cocoa-defaults)
+           (#/setValueTransformer:forName:
+            ns:ns-value-transformer
+            (make-instance 'font-name-transformer)
+            #@"FontNameTransformer")
+           (let* ((sdc (#/sharedUserDefaultsController ns:ns-user-defaults-controller)))
+             (#/setAppliesImmediately: sdc nil)
+             (#/setInitialValues: sdc initial-values)
+             (let* ((controller (make-instance lisp-preferences-window-controller
                                              :with-window-nib-name #@"preferences"))
                   (window (#/window controller)))
-             (unless (%null-ptr-p window)
-               (#/setFloatingPanel: window t)
-               (#/addObserver:selector:name:object:
-                (#/defaultCenter ns:ns-notification-center)
-                controller
-                (@selector #/defaultsChanged:)
-                #&NSUserDefaultsDidChangeNotification
-                (#/standardUserDefaults ns:ns-user-defaults))
-               #+debug (#_NSLog #@"sdc = %@" :id sdc)
-               (setq *lisp-preferences-panel* window)))))))
+               (unless (%null-ptr-p window)
+                 (#/setFloatingPanel: window t)
+                 (#/addObserver:selector:name:object:
+                  (#/defaultCenter ns:ns-notification-center)
+                  controller
+                  (@selector #/defaultsChanged:)
+                  #&NSUserDefaultsDidChangeNotification
+                  (#/standardUserDefaults ns:ns-user-defaults))
+                 (setq *lisp-preferences-panel* window))))))))
 
   
@@ -121,5 +138,9 @@
 (objc:defmethod (#/makeKeyAndOrderFront: :void)
     ((self lisp-preferences-panel) sender)
-  (#/setShowsAlpha: (#/sharedColorPanel ns:ns-color-panel) t)
+  (#_NSLog #@"panel becoming main")
+  (let* ((color-panel (#/sharedColorPanel ns:ns-color-panel)))
+    (#/close color-panel)
+    (#/setAction: color-panel +null-ptr+)
+    (#/setShowsAlpha: color-panel t))
   (call-next-method sender))
 
