X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=gtk%2Fgtk.dialog.lisp;h=05744d4da88b9fd5d9941542d6ede7a1758f6a8a;hb=bd6107b4baeadf2e895ac82f8c977ca3c0c5ad3a;hp=6f92abee9d670522e19824dac04d26876d8ae0f6;hpb=0d03b82a77743d2ea5ef69bea08735fa12857d92;p=cl-gtk2.git diff --git a/gtk/gtk.dialog.lisp b/gtk/gtk.dialog.lisp index 6f92abe..05744d4 100644 --- a/gtk/gtk.dialog.lisp +++ b/gtk/gtk.dialog.lisp @@ -1,24 +1,11 @@ (in-package :gtk) -(define-g-enum "GtkResponseType" response-type () - (:none -1) - (:reject -2) - (:accept -3) - (:delete-event -4) - (:ok -5) - (:cancel -6) - (:close -7) - (:yes -8) - (:no -9) - (:apply -10) - (:help -11)) - (defcfun (dialog-run "gtk_dialog_run") response-type (dialog (g-object dialog))) (export 'dialog-run) -(defcfun (dialog-respose "gtk_dialog_response") :void +(defcfun (dialog-response "gtk_dialog_response") :void (dialog (g-object dialog)) (response response-type)) @@ -38,37 +25,19 @@ (export 'dialog-add-action-widget) -(defcfun (dialog-set-default-response "gtk_dialog_set_default_response") :void - (dialog (g-object dialog)) - (response response-type)) - -(defun (setf dialog-default-response) (response dialog) - (dialog-set-default-response dialog response) - response) - -(export 'dialog-default-response) - (defcfun (dialog-set-response-sensitive "gtk_dialog_set_response_sensitive") :void (dialog (g-object dialog)) (response response-type) (setting :boolean)) +(export 'dialog-set-response-sensitive) + (defcfun (dialog-response-for-widget "gtk_dialog_get_response_for_widget") :int (dialog (g-object dialog)) (widget (g-object widget))) (export 'dialog-response-for-widget) -(defcfun (dialog-action-area "gtk_dialog_get_action_area") (g-object widget) - (dialog (g-object dialog))) - -(export 'dialog-action-area) - -(defcfun (dialog-content-area "gtk_dialog_get_content_area") (g-object widget) - (dialog (g-object dialog))) - -(export 'dialog-content-area) - (defcfun (dialog-alternative-button-order-on-screen "gtk_alternative_dialog_button_order") :boolean (screen (g-object screen))) @@ -79,7 +48,7 @@ (n-params :int) (new-order (:pointer response-type))) -(defun (setf dialog-alternative-button-order) (response-list dialog) +(defun set-dialog-alternative-button-order (dialog response-list) (with-foreign-object (new-order 'response-type (length response-list)) (loop for i from 0 @@ -88,5 +57,18 @@ (dialog-set-alternative-button-order-from-array dialog (length response-list) new-order)) response-list) -(export 'dialog-alternative-button-order) - +(export 'set-dialog-alternative-button-order) + +(defmacro with-gtk-message-error-handler (&body body) + (let ((dialog (gensym)) + (e (gensym))) + `(handler-case + (progn ,@body) + (error (,e) (using* ((,dialog (make-instance 'message-dialog + :message-type :error :buttons :ok + :text (format nil "Error~%~A~%during execution of~%~A" ,e '(progn ,@body))))) + (dialog-run ,dialog) + (object-destroy ,dialog) + nil))))) + +(export 'with-gtk-message-error-handler)