X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=gtk%2Fgtk.selectors.lisp;h=c09a509ddf8ed34f7f02b34a4a4b2c5c12004934;hb=804b4c8f24b3725eb90f29d7e6910b2598b68771;hp=7fb7125bdbc5c7b4397db06891108a2fa0c22ea9;hpb=5f5e986083a9f1bacb55eba9a4b0a5997ba27777;p=cl-gtk2.git diff --git a/gtk/gtk.selectors.lisp b/gtk/gtk.selectors.lisp index 7fb7125..c09a509 100644 --- a/gtk/gtk.selectors.lisp +++ b/gtk/gtk.selectors.lisp @@ -1,11 +1,43 @@ (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 @@ -50,17 +82,27 @@ (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))) + +(export 'file-chooser-filters) (defcfun gtk-file-chooser-add-shortcut-folder :boolean (file-chooser g-object) @@ -112,21 +154,37 @@ (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)