repos
/
qt.examples
/ annotate_shade
summary
|
shortlog
|
log
|
tree
|
commit
|
commitdiff
|
headdiff
|
annotate
|
headblob
|
headfilediff
|
filehistory
normal
|
plain
|
shade
|
zebra
Testrun examples on commit
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
2009-05-24 tobias
15
2009-04-05 tobias
16
(defun append-list-model (list-model string)
15:36:46 '
17
"Appends STRING to LIST-MODEL."
'
18
(let ((index (cxx:row-count list-model)))
'
19
(unless (cxx:insert-row list-model index)
'
20
(error "insert-row ~A for ~A failed." index list-model))
2009-05-24 tobias
21
(unless (cxx:set-data list-model (cxx:index list-model index) string)
15:00:42 '
22
(error "set-data failed."))))
2009-04-05 tobias
23
15:36:46 '
24
(defmethod initialize-instance :after ((repl repl) &rest args)
'
25
(declare (ignore args))
2009-05-11 tobias
26
(setf (cxx:model (output repl)) (model repl))
2009-04-05 tobias
27
(qt:connect (qt:get-signal (input repl) "returnPressed()")
15:36:46 '
28
#'(lambda ()
'
29
(append-list-model ;; Input
'
30
(model repl)
'
31
(format nil "> ~A" (cxx:text (input repl))))
'
32
(append-list-model ;; return value
'
33
(model repl)
2009-05-24 tobias
34
(write-to-string
15:00:42 '
35
(handler-case (eval (read-from-string
'
36
(cxx:text (input repl))))
'
37
(error (condition) condition))))
'
38
(cxx:clear (input repl))))
2009-04-05 tobias
39
(let ((layout (make-instance 'qt:vbox-layout)))
15:36:46 '
40
(cxx:add-widget layout (output repl))
'
41
(cxx:add-widget layout (input repl))
2009-05-11 tobias
42
(setf (cxx:layout repl) layout))
2009-04-05 tobias
43
(cxx:set-focus (input repl)))
15:36:46 '
44
'
45
(defun repl ()
'
46
"Lisp REPL"
2009-07-01 tobias
47
(qt:with-app
2009-04-05 tobias
48
(let ((repl (make-instance 'repl)))
15:36:46 '
49
(cxx:show repl)
2009-07-01 tobias
50
(qt:exec repl))))