[Gd-chatter] r11528 - trunk/fundev/sources/deuce
andreas at gwydiondylan.org
andreas at gwydiondylan.org
Fri Dec 7 02:21:49 CET 2007
Author: andreas
Date: Fri Dec 7 02:21:48 2007
New Revision: 11528
Modified:
trunk/fundev/sources/deuce/module.dylan
trunk/fundev/sources/deuce/streams.dylan
Log:
job: minor
Hack of <interval-stream> that auto-repaints the window.
Modified: trunk/fundev/sources/deuce/module.dylan
==============================================================================
--- trunk/fundev/sources/deuce/module.dylan (original)
+++ trunk/fundev/sources/deuce/module.dylan Fri Dec 7 02:21:48 2007
@@ -246,7 +246,8 @@
add-node!, remove-node!,
do-save-all-files;
- create <interval-stream>;
+ create <interval-stream>,
+ <repainting-interval-stream>;
create <kill-history>,
do-history-elements,
Modified: trunk/fundev/sources/deuce/streams.dylan
==============================================================================
--- trunk/fundev/sources/deuce/streams.dylan (original)
+++ trunk/fundev/sources/deuce/streams.dylan Fri Dec 7 02:21:48 2007
@@ -21,9 +21,16 @@
sealed slot %current-position :: <basic-bp>;
end class <interval-stream>;
+define sealed class <repainting-interval-stream> (<interval-stream>)
+ sealed constant slot %window :: <window>, required-init-keyword: window:;
+end;
+
define sealed domain make (singleton(<interval-stream>));
define sealed domain initialize (<interval-stream>);
+define sealed domain make (singleton(<repainting-interval-stream>));
+define sealed domain initialize (<repainting-interval-stream>);
+
define sealed method make
(class == <interval-stream>, #rest initargs,
#key buffer, interval, direction, #all-keys)
@@ -44,6 +51,26 @@
end
end method make;
+define sealed method make
+ (class == <repainting-interval-stream>, #rest initargs,
+ #key buffer, interval, direction, window, #all-keys)
+ => (stream :: <interval-stream>)
+ ignore(direction);
+ let (start-bp, end-bp)
+ = values(interval-start-bp(buffer | interval), interval-end-bp(buffer | interval));
+ let buffer
+ = buffer
+ | select (interval by instance?)
+ <buffer> => interval;
+ otherwise => bp-buffer(start-bp);
+ end;
+ with-keywords-removed (initargs = initargs, #[interval:])
+ apply(next-method, class,
+ start-bp: start-bp, end-bp: end-bp,
+ buffer: buffer, window: window, initargs)
+ end
+end method make;
+
define sealed method initialize
(stream :: <interval-stream>, #key interval, direction) => ()
ignore(interval);
@@ -231,6 +258,14 @@
insert-moving!(bp, char)
end method write-element;
+define sealed method write-element
+ (stream :: <repainting-interval-stream>, char :: <object>) => ()
+ next-method();
+ // ---*** The centering argument is a hack, and doesn't belong here
+ queue-redisplay(stream.%window, $display-text, centering: 1);
+ redisplay-window(stream.%window);
+end;
+
define sealed method write
(stream :: <interval-stream>, string :: <byte-string>,
#key start: _start :: <integer> = 0, end: _end :: <integer> = size(string)) => ()
@@ -239,6 +274,15 @@
insert-moving!(bp, string, start: _start, end: _end)
end method write;
+define sealed method write
+ (stream :: <repainting-interval-stream>, string :: <byte-string>,
+ #key start: _start :: <integer> = 0, end: _end :: <integer> = size(string)) => ()
+ next-method();
+ // ---*** The centering argument is a hack, and doesn't belong here
+ queue-redisplay(stream.%window, $display-text, centering: 1);
+ redisplay-window(stream.%window);
+end;
+
/// Positionable stream protocol
More information about the chatter
mailing list