Typo.
[cl-gtk2.git] / gtk / gtk.selectors.lisp
index 7fb7125..f08c6de 100644 (file)
@@ -1,23 +1,57 @@
 (in-package :gtk)
 
+(defcfun (%gtk-color-selection-get-previous-color "gtk_color_selection_get_previous_color") :void
+  (color-selection (g-object color-selection))
+  (color (g-boxed-foreign color)))
+
+(defun gtk-color-selection-get-previous-color (color-selection)
+  (let ((color (make-color)))
+    (%gtk-color-selection-get-previous-color color-selection color)
+    color))
+
+(defcfun gtk-color-selection-set-previous-color :void
+  (color-selection (g-object color-selection))
+  (color (g-boxed-foreign color)))
+
 (defcfun (color-selection-adjusting-p "gtk_color_selection_is_adjusting") :boolean
   (color-selection g-object))
 
 (export 'color-selection-adjusting-p)
 
-; TODO: gtk_color_selection_palette_from_string
+(defcfun gtk-color-selection-palette-from-string :boolean
+  (str :string)
+  (colors :pointer)
+  (n-colors :pointer))
+
+(defun color-selection-palette-from-string (str)
+  (with-foreign-objects ((colors :pointer) (n-colors :int))
+    (when (gtk-color-selection-palette-from-string str colors n-colors)
+      (iter (with colors-ar = (mem-ref colors :pointer))
+            (for i from 0 below (mem-ref n-colors :int))
+            (for color-ptr =
+                 (inc-pointer colors-ar
+                              (* i (foreign-type-size 'gdk::color-cstruct))))
+            (for color = (convert-from-foreign color-ptr '(g-boxed-foreign color)))
+            (collect color)
+            (finally (g-free colors-ar))))))
+
+(defcfun gtk-color-selection-palette-to-string (g-string :free-from-foreign t)
+  (colors :pointer)
+  (n-colors :int))
 
 ; TODO: gtk_color_selection_palette_to_string
 
 ; TODO: gtk_color_selection_set_change_palette_with_screen_hook
 
-(defcfun (file-chooser-select-filename "gtk_file_chooser_select_filename") :boolean
+(defcfun (file-chooser-select-filename #+win32 "gtk_file_chooser_select_filename_utf8"
+                                       #-win32 "gtk_file_chooser_select_filename") :boolean
   (file-chooser g-object)
   (filename :string))
 
 (export 'file-chooser-select-filename)
 
-(defcfun (file-chooser-unselect-filename "gtk_file_chooser_unselect_filename") :void
+(defcfun (file-chooser-unselect-filename #+win32 "gtk_file_chooser_unselect_filename_utf8"
+                                         #-win32 "gtk_file_chooser_unselect_filename") :void
   (file-chooser g-object)
   (filename :string))
 
@@ -33,7 +67,8 @@
 
 (export 'file-chooser-unselect-all)
 
-(defcfun (file-chooser-filenames "gtk_file_chooser_get_filenames") (gslist (g-string :free-from-foreign t))
+(defcfun (file-chooser-filenames #+win32 "gtk_file_chooser_get_filenames_utf8"
+                                 #-win32 "gtk_file_chooser_get_filenames") (gslist (g-string :free-from-foreign t))
   (file-chooser g-object))
 
 (export 'file-chooser-filenames)
 
 (export 'file-chooser-unselect-uri)
 
-(defcfun (file-chooser-uris "gtk_file_chooser_get_uris") (gslist (g-string :free-from-foreign t))
+(defcfun (file-chooser-uris "gtk_file_chooser_get_uris") (gslist (g-string :free-from-foreign t) :free-from-foreign t)
   (file-chooser g-object))
 
 (export 'file-chooser-uris)
 
-; TODO: gtk_file_chooser_add_filter
-; --- ownership issues
+(defcfun (file-chooser-add-filter "gtk_file_chooser_add_filter") :void
+  (chooser (g-object file-chooser))
+  (filter (g-object file-filter)))
+
+(export 'file-chooser-add-filter)
+
+(defcfun (file-chooser-remove-filter "gtk_file_chooser_remove_filter") :void
+  (chooser (g-object file-chooser))
+  (filter (g-object file-filter)))
 
-; TODO: gtk_file_chooser_remove_filter
+(export 'file-chooser-remove-filter)
 
-; TODO: gtk_file_chooser_list_filters
+(defcfun (file-chooser-filters "gtk_file_chooser_list_filters") (glist (g-string :free-from-foreign t) :free-from-foreign t)
+  (chooser (g-object file-chooser)))
 
-(defcfun gtk-file-chooser-add-shortcut-folder :boolean
+(export 'file-chooser-filters)
+
+(defcfun (gtk-file-chooser-add-shortcut-folder #+win32 "gtk_file_chooser_add_shortcut_folder_utf8"
+                                               #-win32 "gtk_file_chooser_add_shortcut_folder") :boolean
   (file-chooser g-object)
   (folder :string)
   (error :pointer))
 
 (export 'file-chooser-add-shortcut-folder)
 
-(defcfun gtk-file-chooser-remove-shortcut-folder :boolean
+(defcfun (gtk-file-chooser-remove-shortcut-folder #+win32 "gtk_file_chooser_remove_shortcut_folder_utf8"
+                                                  #-win32 "gtk_file_chooser_remove_shortcut_folder") :boolean
   (file-chooser g-object)
   (folder :string)
   (error :pointer))
 
 (export 'file-chooser-remove-shortcut-folder)
 
-(defcfun (file-chooser-shortcut-folders "gtk_file_chooser_list_shortcut_folders") (gslist (g-string :free-from-foreign t))
+(defcfun (file-chooser-shortcut-folders #+win32 "gtk_file_chooser_list_shortcut_folders_utf8"
+                                        #-win32 "gtk_file_chooser_list_shortcut_folders") (gslist (g-string :free-from-foreign t))
   (file-chooser g-object))
 
 (export 'file-chooser-shortcut-folders)
 
 (export 'file-chooser-shortcut-folder-uris)
 
-; TODO: gtk_file_chooser_get_current_folder_file
+(defcfun (file-chooser-get-current-folder-file "gtk_file_chooser_get_current_folder_file") g-object
+  (chooser (g-object file-chooser)))
+
+(defcfun gtk-file-chooser-set-current-folder-file :boolean
+  (file-chooser (g-object file-chooser))
+  (file g-object)
+  (error :pointer))
 
-; TODO: gtk_file_chooser_get_file
+(defun file-chooser-set-current-folder-file (file-chooser file)
+  (gtk-file-chooser-set-current-folder-file file-chooser file (null-pointer)))
 
-; TODO: gtk_file_chooser_get_files
+(export '(file-chooser-get-current-folder-file file-chooser-set-current-folder-file))
 
-; TODO: gtk_file_chooser_get_preview_file
+(defcfun (file-chooser-get-file "gtk_file_chooser_get_file") g-object
+  (file-chooser (g-object file-chooser)))
+
+(defcfun gtk-file-chooser-set-file g-object
+  (file-chooser (g-object file-chooser))
+  (file g-object)
+  (error :pointer))
 
-; TODO: gtk_file_chooser_select_file
+(defun file-chooser-set-file (file-chooser file)
+  (gtk-file-chooser-set-file file-chooser file (null-pointer)))
 
-; TODO: gtk_file_chooser_set_current_folder_file
+(export '(file-chooser-get-file file-chooser-set-file))
 
-; TODO: gtk_file_chooser_set_file
+(defcfun (file-chooser-unselect-file "gtk_file_chooser_unselect_file") :void
+  (file-chooser (g-object file-chooser))
+  (file g-object))
 
-; TODO: gtk_file_chooser_unselect_file
+(export 'file-chooser-unselect-file)
 
 (defcfun (file-filter-add-pattern "gtk_file_filter_add_pattern") :void
   (file-filter g-object)