repos
/
qt.examples
/ annotate_shade
summary
|
shortlog
|
log
|
tree
|
commit
|
commitdiff
|
headdiff
|
annotate
|
headblob
|
headfilediff
|
filehistory
normal
|
plain
|
shade
|
zebra
Use new qt:with-app.
Annotate for file /src/repl.lisp
2009-04-14 tobias
1
;;; Copyright 2009 Tobias Rautenkranz
14:29:22 '
2
;;; License: X11 license
'
3
2009-04-05 tobias
4
(in-package :qt.examples)
15:36:46 '
5
'
6
(defclass repl (qt:widget)
'
7
((model :reader model
2009-05-11 tobias
8
:initform (make-instance 'qt:string-list-model))
2009-04-05 tobias
9
(output :reader output
15:36:46 '
10
:initform (make-instance 'qt:list-view))
2009-07-01 tobias
11
(input :reader input
2009-04-05 tobias
12
:initform (make-instance 'qt:line-edit)))
15:36:46 '
13
(:metaclass cxx:class))
'
14
'
15
(defun append-list-model (list-model string)
'
16
"Appends STRING to LIST-MODEL."
'
17
(let ((index (cxx:row-count list-model)))
'
18
(unless (cxx:insert-row list-model index)
'
19
(error "insert-row ~A for ~A failed." index list-model))
2009-05-24 tobias
20
(unless (cxx:set-data list-model (cxx:index list-model index) string)
15:00:42 '
21
(error "set-data failed."))))
2009-04-05 tobias
22
15:36:46 '
23
(defmethod initialize-instance :after ((repl repl) &rest args)
'
24
(declare (ignore args))
2009-05-11 tobias
25
(setf (cxx:model (output repl)) (model repl))
2009-04-05 tobias
26
(qt:connect (qt:get-signal (input repl) "returnPressed()")
15:36:46 '
27
#'(lambda ()
'
28
(append-list-model ;; Input
'
29
(model repl)
'
30
(format nil "> ~A" (cxx:text (input repl))))
'
31
(append-list-model ;; return value
'
32
(model repl)
2009-05-24 tobias
33
(write-to-string
15:00:42 '
34
(handler-case (eval (read-from-string
'
35
(cxx:text (input repl))))
'
36
(error (condition) condition))))
'
37
(cxx:clear (input repl))))
2009-04-05 tobias
38
(let ((layout (make-instance 'qt:vbox-layout)))
15:36:46 '
39
(cxx:add-widget layout (output repl))
'
40
(cxx:add-widget layout (input repl))
2009-05-11 tobias
41
(setf (cxx:layout repl) layout))
2009-04-05 tobias
42
(cxx:set-focus (input repl)))
15:36:46 '
43
'
44
(defun repl ()
'
45
"Lisp REPL"
2009-07-01 tobias
46
(qt:with-app ()
2009-04-05 tobias
47
(let ((repl (make-instance 'repl)))
15:36:46 '
48
(cxx:show repl)
2009-07-01 tobias
49
(qt:exec))))