[mcclim-cvs] CVS mcclim/Drei
thenriksen
thenriksen at common-lisp.net
Fri Feb 1 20:28:46 UTC 2008
Update of /project/mcclim/cvsroot/mcclim/Drei
In directory clnet:/tmp/cvs-serv19045/Drei
Modified Files:
input-editor.lisp
Log Message:
Implemented generic input-editor typeout, provided we can get an
output record for the input editor.
Theoretically, the nice typeout implementation should now also work
for Goatee, though I seem to have broken it at some other point.
--- /project/mcclim/cvsroot/mcclim/Drei/input-editor.lisp 2008/02/01 16:50:31 1.36
+++ /project/mcclim/cvsroot/mcclim/Drei/input-editor.lisp 2008/02/01 20:28:45 1.37
@@ -46,13 +46,7 @@
:initform nil
:documentation "After a command has been
executed, the contents of the Drei area instance shall be
-replaced by the contents of this array, if non-NIL.")
- (%typeout-record :accessor typeout-record
- :initform nil
- :documentation "The output record (if any)
-that is the typeout information for this Drei-based
-input-editing-stream. `With-input-editor-typeout' manages this
-output record."))
+replaced by the contents of this array, if non-NIL."))
(:documentation "An mixin that helps in implementing Drei-based
input-editing streams. This class should not be directly
instantiated."))
@@ -754,73 +748,6 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
-;;; `With-input-editor-typeout'
-;;;
-;;; Clears some space above the input-editing stream, moving other
-;;; output records on the sheet down, and prints the output. Nothing
-;;; is displayed until after the with-input-editor-typeout body is
-;;; done.
-
-(defun sheet-move-output-vertically (sheet y delta-y)
- "Move the output records of `sheet', starting at vertical
-device unit offset `y' or below, down by `delta-y' device units,
-then repaint `sheet'."
- (unless (zerop delta-y)
- (with-bounding-rectangle* (sheet-x1 sheet-y1 sheet-x2 sheet-y2) sheet
- (declare (ignore sheet-x1 sheet-y1))
- (map-over-output-records-overlapping-region
- #'(lambda (record)
- (multiple-value-bind (record-x record-y) (output-record-position record)
- (when (>= (+ record-y (bounding-rectangle-height record)) y)
- (setf (output-record-position record)
- (values record-x (+ record-y delta-y))))))
- (stream-output-history sheet)
- (make-bounding-rectangle 0 y sheet-x2 sheet-y2))
- ;; Only repaint within the visible region...
- (with-bounding-rectangle* (viewport-x1 viewport-y1 viewport-x2 viewport-y2)
- (or (pane-viewport-region sheet) sheet)
- (declare (ignore viewport-y1))
- (repaint-sheet sheet (make-bounding-rectangle viewport-x1 (- y (abs delta-y))
- viewport-x2 viewport-y2))))))
-
-(defmethod climi::invoke-with-input-editor-typeout ((editing-stream drei-input-editing-mixin)
- (continuation function) &key erase)
- (declare (ignore erase))
- (let* ((encapsulated-stream (encapsulating-stream-stream editing-stream))
- (new-typeout-record (with-output-to-output-record (encapsulated-stream)
- (funcall continuation encapsulated-stream)))
- (editor-record (drei-instance editing-stream)))
- (with-accessors ((stream-typeout-record typeout-record)) editing-stream
- (with-sheet-medium (medium encapsulated-stream)
- (setf (output-record-position new-typeout-record)
- (values 0 (bounding-rectangle-min-y (or stream-typeout-record editor-record))))
- ;; Calculate the height difference between the old typeout and the new.
- (let ((delta-y (- (bounding-rectangle-height new-typeout-record)
- (if stream-typeout-record
- (bounding-rectangle-height stream-typeout-record)
- 0))))
- (multiple-value-bind (typeout-x typeout-y)
- (output-record-position new-typeout-record)
- (declare (ignore typeout-x))
- ;; Clear the old typeout.
- (when stream-typeout-record
- (clear-output-record stream-typeout-record))
- (sheet-move-output-vertically encapsulated-stream typeout-y delta-y)
- ;; Reuse the old stream-typeout-record, if any.
- (cond (stream-typeout-record
- (add-output-record new-typeout-record stream-typeout-record))
- (t
- (stream-add-output-record encapsulated-stream new-typeout-record)
- (setf stream-typeout-record new-typeout-record)))
- ;; Now, let there be light!
- (with-bounding-rectangle* (x1 y1 x2 y2) stream-typeout-record
- (declare (ignore x2))
- (repaint-sheet encapsulated-stream
- (make-bounding-rectangle
- x1 y1 (bounding-rectangle-width encapsulated-stream) y2)))))))))
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;
;;; Presentation type specialization.
;;; When starting out with reading `command-or-form', we use Lisp
More information about the Mcclim-cvs
mailing list