(glib:at-init ()
(eval-when (:compile-toplevel :load-toplevel :execute)
(define-foreign-library gdk
- (:unix (:or "libgdk-x11-2.0.so.0" "libgdk-x11-2.0.so"))
+ ((:and :unix (:not :darwin)) (:or "libgdk-x11-2.0.so.0" "libgdk-x11-2.0.so"))
+ (:darwin (:or "libgdk-x11-2.0.0.dylib" "libgdk-x11-2.0.dylib"))
(:windows "libgdk-win32-2.0-0.dll")
(t "libgdk-2.0"))
(define-foreign-library gdk-pixbuf
- (:unix (:or "libgdk_pixbuf-2.0.so.0" "libgdk_pixbuf-2.0.so"))
+ ((:and :unix (:not :darwin)) (:or "libgdk_pixbuf-2.0.so.0" "libgdk_pixbuf-2.0.so"))
+ (:darwin (:or "libgdk_pixbuf-2.0.0.dylib" "libgdk_pixbuf-2.0.dylib"))
(:windows (:or "libgdk_pixbuf-win32-2.0-0" "libgdk_pixbuf-2.0-0.dll"))
(t "libgdk_pixbuf-2.0"))
-
+
(define-foreign-library gtk
- (:unix (:or "libgtk-x11-2.0.so.0" "libgtk-x11-2.0.so"))
+ ((:and :unix (:not :darwin)) (:or "libgtk-x11-2.0.so.0" "libgtk-x11-2.0.so"))
+ (:darwin (:or "libgtk-x11-2.0.0.dylib" "libgtk-x11-2.0.dylib"))
(:windows (:or "libgtk-2.0-0.dll" "libgtk-win32-2.0-0.dll"))
(t "libgtk-2.0")))
("GtkFileChooser"
(:cffi gtk::current-name gtk::file-chooser-current-name (:string :free-to-foreign t :encoding :utf-8)
nil "gtk_file_chooser_set_current_name")
- (:cffi gtk::filename gtk::file-chooser-filename (glib:g-string :free-from-foreign t :free-to-foreign t)
+ (:cond :+win32
+ :cffi gtk::filename gtk::file-chooser-filename (glib:g-string :free-from-foreign t :free-to-foreign t)
+ "gtk_file_chooser_get_filename_utf8" "gtk_file_chooser_set_filename_utf8")
+ (:cond :-win32
+ :cffi gtk::filename gtk::file-chooser-filename (glib:g-string :free-from-foreign t :free-to-foreign t)
"gtk_file_chooser_get_filename" "gtk_file_chooser_set_filename")
- (:cffi gtk::current-folder gtk::file-chooser-current-folder (glib:g-string :free-from-foreign t :free-to-foreign t)
+ (:cond :+win32
+ :cffi gtk::current-folder gtk::file-chooser-current-folder (glib:g-string :free-from-foreign t :free-to-foreign t)
+ "gtk_file_chooser_get_current_folder_utf8" "gtk_file_chooser_set_current_folder_utf8")
+ (:cond :-win32
+ :cffi gtk::current-folder gtk::file-chooser-current-folder (glib:g-string :free-from-foreign t :free-to-foreign t)
"gtk_file_chooser_get_current_folder" "gtk_file_chooser_set_current_folder")
(:cffi gtk::uri gtk::file-chooser-uri (glib:g-string :free-from-foreign t :free-to-foreign t)
"gtk_file_chooser_get_uri" "gtk_file_chooser_set_uri")
(:cffi gtk::current-folder-uri gtk::file-chooser-current-folder-uri (glib:g-string :free-from-foreign t :free-to-foreign t)
"gtk_file_chooser_get_current_folder_uri" "gtk_file_chooser_set_current_folder_uri")
- (:cffi gtk::preview-filename gtk::file-chooser-preview-filename (glib:g-string :free-from-foreign t :free-to-foreign t)
+ (:cond :+win32
+ :cffi gtk::preview-filename gtk::file-chooser-preview-filename (glib:g-string :free-from-foreign t :free-to-foreign t)
+ "gtk_file_chooser_get_preview_filename_utf8" nil)
+ (:cond :-win32
+ :cffi gtk::preview-filename gtk::file-chooser-preview-filename (glib:g-string :free-from-foreign t :free-to-foreign t)
"gtk_file_chooser_get_preview_filename" nil)
(:cffi gtk::preview-uri gtk::file-chooser-preview-uri (glib:g-string :free-from-foreign t :free-to-foreign t)
"gtk_file_chooser_get_preview_uri" nil))
(at-init ()
(eval-when (:compile-toplevel :load-toplevel :execute)
(define-foreign-library glib
- (:unix (:or "libglib-2.0.so.0" "libglib-2.0.so"))
+ ((:and :unix (:not :darwin)) (:or "libglib-2.0.so.0" "libglib-2.0.so"))
+ (:darwin (:or "libglib-2.0.0.dylib" "libglib-2.0.dylib"))
(:windows "libglib-2.0-0.dll")
(t (:default "libglib-2.0"))))
(eval-when (:compile-toplevel :load-toplevel :execute)
(define-foreign-library gthread
- (:unix (:or "libgthread-2.0.so.0" "libgthread-2.0.so"))
+ ((:and :unix (:not :darwin)) (:or "libgthread-2.0.so.0" "libgthread-2.0.so"))
+ (:darwin (:or "libgthread-2.0.0.dylib" "libgthread-2.0.dylib"))
(:windows "libgthread-2.0-0.dll")
(t "libgthread-2.0")))
(write-char (char-downcase c) stream))
(write-string "_get_type" stream)))
+(defclass print-readtime-condition ()
+ ((condition :initarg :condition)))
+
+(defmethod print-object ((o print-readtime-condition) stream)
+ (format stream "#~A" (slot-value o 'condition)))
+
(defun get-g-class-definition (type &optional lisp-name-package)
(when (and (stringp type) (null (ignore-errors (gtype type))))
(let ((type-init-name (probable-type-init-name type)))
(,@(mapcar (lambda (property)
(property->property-definition name property))
own-properties)
- ,@(cdr (find g-name *additional-properties* :key 'car :test 'string=))))))
+ ,@(mapcan (lambda (property-definition)
+ (if (eq :cond (car property-definition))
+ (list (make-instance 'print-readtime-condition :condition (cadr property-definition)) (cddr property-definition))
+ (list property-definition)))
+ (cdr (find g-name *additional-properties* :key 'car :test 'string=)))))))
(defun get-g-interface-definition (interface &optional lisp-name-package)
(when (and (stringp interface) (null (ignore-errors (gtype interface))))
,@(append (mapcar (lambda (property)
(property->property-definition name property))
properties)
- (cdr (find g-name *additional-properties* :key 'car :test 'string=))))))
+ (mapcan (lambda (property-definition)
+ (if (eq :cond (car property-definition))
+ (list (make-instance 'print-readtime-condition :condition (cadr property-definition)) (cddr property-definition))
+ (list property-definition)))
+ (cdr (find g-name *additional-properties* :key 'car :test 'string=)))))))
(defun get-g-class-definitions-for-root-1 (type)
(unless (member (gtype type) *generation-exclusions* :test 'g-type=)
(at-init ()
(eval-when (:compile-toplevel :load-toplevel :execute)
(cffi:define-foreign-library gobject
- (:unix (:or "libgobject-2.0.so.0" "libgobject-2.0.so"))
+ ((:and :unix (:not :darwin)) (:or "libgobject-2.0.so.0" "libgobject-2.0.so"))
+ (:darwin (:or "libgobject-2.0.0.dylib" "libgobject-2.0.dylib"))
(:windows "libgobject-2.0-0.dll")
(t "libgobject-2.0")))
(gethash name *registered-object-types*))
(defun get-g-object-lisp-type (g-type)
(setf g-type (gtype g-type))
- (loop
- while (not (null g-type))
- for lisp-type = (gethash (gtype-name g-type) *registered-object-types*)
- when lisp-type do (return lisp-type)
- do (setf g-type (g-type-parent g-type))))
+ (iter (while (not (null g-type)))
+ (for lisp-type = (gethash (gtype-name g-type) *registered-object-types*))
+ (when lisp-type
+ (return lisp-type))
+ (setf g-type (g-type-parent g-type))))
(defun make-g-object-from-pointer (pointer)
(let* ((g-type (g-type-from-instance pointer))
(:file "gtk.paned")
(:file "gtk.child-properties")
(:file "gtk.widget")
+ (:file "gtk.tree-view-dnd")
(:file "gtk.builder")
(:file "gtk.assistant")
(:file "gtk.link-button")
(:file "gtk.demo")
(:file "gtk.timer")
+ (:file "gtk.finalize-classes")
(:module "demo-files"
:pathname "demo/"
:components ((:plain-file "demo1" :type "ui")
--- /dev/null
+(in-package :gtk)
+
+(defun finalize-subclasses (class)
+ ;(format t "Finalizing ~A~%" class)
+ (c2mop:ensure-finalized class)
+ (iter (for subclass in (c2mop:class-direct-subclasses class))
+ (finalize-subclasses subclass)))
+
+(defun finalize-gtk-classes ()
+ (finalize-subclasses (find-class 'gobject:g-object)))
+
+(finalize-gtk-classes)
(:cffi current-name file-chooser-current-name
(:string :free-to-foreign t :encoding :utf-8) nil
"gtk_file_chooser_set_current_name")
+ #+win32
+ (:cffi filename file-chooser-filename
+ (g-string :free-from-foreign t :free-to-foreign t)
+ "gtk_file_chooser_get_filename_utf8" "gtk_file_chooser_set_filename_utf8")
+ #-win32
(:cffi filename file-chooser-filename
(g-string :free-from-foreign t :free-to-foreign t)
"gtk_file_chooser_get_filename" "gtk_file_chooser_set_filename")
+ #+win32
+ (:cffi current-folder file-chooser-current-folder
+ (g-string :free-from-foreign t :free-to-foreign t)
+ "gtk_file_chooser_get_current_folder_utf8"
+ "gtk_file_chooser_set_current_folder_utf8")
+ #-win32
(:cffi current-folder file-chooser-current-folder
(g-string :free-from-foreign t :free-to-foreign t)
"gtk_file_chooser_get_current_folder" "gtk_file_chooser_set_current_folder")
(g-string :free-from-foreign t :free-to-foreign t)
"gtk_file_chooser_get_current_folder_uri"
"gtk_file_chooser_set_current_folder_uri")
+ #+win32
+ (:cffi preview-filename file-chooser-preview-filename
+ (g-string :free-from-foreign t :free-to-foreign t)
+ "gtk_file_chooser_get_preview_filename_utf8" nil)
+ #-win32
(:cffi preview-filename file-chooser-preview-filename
(g-string :free-from-foreign t :free-to-foreign t)
"gtk_file_chooser_get_preview_filename" nil)
; 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))
(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-filters)
-(defcfun gtk-file-chooser-add-shortcut-folder :boolean
+(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)
--- /dev/null
+(in-package :gtk)
+
+(define-vtable ("GtkTreeDragSource" tree-drag-source)
+ (:skip parent-instance g-type-interface)
+ ;;methods
+ (row-draggable (:boolean
+ (tree-drag-source g-object)
+ (path (g-boxed-foreign tree-path))))
+ (drag-data-get (:boolean
+ (tree-drag-source g-object)
+ (path (g-boxed-foreign tree-path))
+ (selection-data (g-boxed-foreign selection-data))))
+ (drag-data-delete (:boolean
+ (tree-drag-source g-object)
+ (path (g-boxed-foreign tree-path)))))
+
+(define-vtable ("GtkTreeDragDest" tree-drag-dest)
+ (:skip parent-instance g-type-interface)
+ ;;methods
+ (drag-data-received (:boolean
+ (tree-drag-dest g-object)
+ (path (g-boxed-foreign tree-path))
+ (selection-data (g-boxed-foreign selection-data))))
+ (row-drop-possible (:boolean
+ (tree-drag-dest g-object)
+ (path (g-boxed-foreign tree-path))
+ (selection-data (g-boxed-foreign selection-data)))))
+
(glib:at-init ()
(eval-when (:compile-toplevel :load-toplevel :execute)
(define-foreign-library pango
- (:unix "libpango-1.0.so.0")
+ ((:and :unix (:not :darwin)) "libpango-1.0.so.0")
+ (:darwin (:or "libpango-1.0.0.dylib" "libpango-1.0.dylib"))
(:windows "libpango-1.0-0.dll")
(t (:default "libgpango-1.0"))))