repos
/
qt.examples
/ annotate_shade
summary
|
shortlog
|
log
|
tree
|
commit
|
commitdiff
|
headdiff
|
annotate
|
headblob
|
headfilediff
|
filehistory
normal
|
plain
|
shade
|
zebra
use (setf instead of setter methods.
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
(cxx:set-data list-model (cxx:index list-model index)
2009-05-11 tobias
21
(qt:make-variant string))))
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
(format nil "~S"
15:00:42 '
34
(handler-case (eval (read-from-string (cxx:text (input repl))))
'
35
(error (condition) condition))))
2009-05-11 tobias
36
(setf (cxx:text (input repl)) "")))
2009-04-05 tobias
37
(let ((layout (make-instance 'qt:vbox-layout)))
15:36:46 '
38
(cxx:add-widget layout (output repl))
'
39
(cxx:add-widget layout (input repl))
2009-05-11 tobias
40
(setf (cxx:layout repl) layout))
2009-04-05 tobias
41
(cxx:set-focus (input repl)))
15:36:46 '
42
'
43
(defun repl ()
'
44
"Lisp REPL"
2009-07-01 tobias
45
(qt:with-app
2009-04-05 tobias
46
(let ((repl (make-instance 'repl)))
15:36:46 '
47
(cxx:show repl)
2009-07-01 tobias
48
(qt:exec repl))))