/ src /
/src/msg-handler.lisp
1 (in-package :cl-smoke.qt.core)
2
3 ;; FIXME Determine the actual size of the QtMsgType enum.
4 (cffi:defctype qt-msg-type :int)
5
6 ;; QtMsgHandler is a typedef for a pointer.
7 (define-pointer-typedef "QtMsgHandler" foreign-pointer)
8
9 (define-pointer-typedef "void(*)(QtMsgType,const char*)" foreign-pointer)
10 (define-pointer-typedef "unsigned char*" foreign-pointer)
11
12 (defcallback qt-msg-handler :void
13 ((type qt-msg-type)
14 (message :string))
15 (ecase type
16 (#.(value qt:+qt-debug-msg+)
17 (write-string "qDebug: " *debug-io*)
18 (write-line message *debug-io*))
19 (#.(value qt:+qt-warning-msg+) (warn message))
20 (#.(value qt:+qt-critical-msg+) (cerror "Ignore" "~A" message))
21 (#.(value qt:+qt-fatal-msg+) (error message))))
22
23 (eval-startup (:load-toplevel)
24 (qt:q-install-msg-handler (callback qt-msg-handler)))