+;;; File Chooser
+
+(defmethod initialize-instance ((file-chooser file-chooser) &rest initargs
+ &key filter filters shortcut-folder
+ shortcut-folders shortcut-folder-uti
+ shortcut-folder-uris)
+ (declare (ignore filter filters shortcut-folder shortcut-folders
+ shortcut-folder-uti shortcut-folder-uris))
+ (prog1
+ (call-next-method)
+ (initial-add file-chooser #'file-chooser-add-filter
+ initargs :filer :filters)
+ (initial-add file-chooser #'file-chooser-add-shortcut-folder
+ initargs :shortcut-folder :shortcut-folders)
+ (initial-add file-chooser #'file-chooser-add-shortcut-folder-uri
+ initargs :shortcut-folder-uri :shortcut-folders-uris)))
+
+
+(defbinding file-chooser-select-filename () boolean
+ (file-chooser file-chooser)
+ (filename string))
+
+(defbinding file-chooser-unselect-filename () nil
+ (file-chooser file-chooser)
+ (filename string))
+
+(defbinding file-chooser-select-all () boolean
+ (file-chooser file-chooser))
+
+(defbinding file-chooser-unselect-all () boolean
+ (file-chooser file-chooser))
+
+(defbinding file-chooser-get-filenames () (gslist string)
+ (file-chooser file-chooser))
+
+(defbinding file-chooser-select-uri () boolean
+ (file-chooser file-chooser)
+ (uri string))
+
+(defbinding file-chooser-unselect-uri () nil
+ (file-chooser file-chooser)
+ (uri string))
+
+(defbinding file-chooser-get-uris () (gslist string)
+ (file-chooser file-chooser))
+
+(defbinding file-chooser-add-filter () nil
+ (file-chooser file-chooser)
+ (filter file-filter))
+
+(defbinding file-chooser-remove-filter () nil
+ (file-chooser file-chooser)
+ (filter file-filter))
+
+(defbinding file-chooser-list-filters () (gslist file-filter)
+ (file-chooser file-chooser))
+
+(defbinding file-chooser-add-shortcut-folder () boolean
+ (file-chooser file-chooser)
+ (folder string)
+ (nil null))
+
+(defbinding file-chooser-remove-shortcut-folder () nil
+ (file-chooser file-chooser)
+ (folder string)
+ (nil null))
+
+(defbinding file-chooser-list-shortcut-folders () (gslist string)
+ (file-chooser file-chooser))
+
+(defbinding file-chooser-add-shortcut-folder-uri () boolean
+ (file-chooser file-chooser)
+ (uri string)
+ (nil null))
+
+(defbinding file-chooser-remove-shortcut-folder-uri () nil
+ (file-chooser file-chooser)
+ (uri string)
+ (nil null))
+
+(defbinding file-chooser-list-shortcut-folder-uris () (gslist string)
+ (file-chooser file-chooser))
+
+
+;;; File Filter
+
+(defmethod initialize-instance ((file-filter file-filter) &rest initargs
+ &key mime-type mime-types pattern patterns
+ pixbuf-formats)
+ (declare (ignore mime-type mime-types pattern patterns))
+ (prog1
+ (call-next-method)
+ (when pixbuf-formats
+ #-gtk2.6(warn "Initarg :PIXBUF-FORMATS not supportet in this version of Gtk")
+ #+gtk2.6(file-filter-add-pixbuf-formats file-filter))
+ (initial-add file-filter #'file-filter-add-mime-type
+ initargs :mime-type :mime-types)
+ (initial-add file-filter #'file-filter-add-pattern
+ initargs :pattern :patterns)))
+
+
+(defbinding file-filter-add-mime-type () nil
+ (filter file-filter)
+ (mime-type string))
+
+(defbinding file-filter-add-pattern () nil
+ (filter file-filter)
+ (pattern string))
+
+#+gtk2.6
+(defbinding file-filter-add-pixbuf-formats () nil
+ (filter file-filter))
+
+(def-callback-marshal %file-filter-func (boolean file-filter-info))
+
+(defbinding file-filter-add-custom (filter needed function) nil
+ (filter file-filter)
+ (needed file-filter-flags)
+ ((callback %file-filter-func) pointer)
+ ((register-callback-function function) unsigned-int)
+ ((callback user-data-destroy-func) pointer))
+
+(defbinding file-filter-get-needed () file-filter-flags
+ (filter file-filter))
+
+(defbinding file-filter-filter () boolean
+ (filter file-filter)
+ (filter-info file-filter-info))
+
+
+