! Copyright (C) 2005, 2006 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. IN: gadgets-panes USING: arrays gadgets gadgets-borders gadgets-buttons gadgets-labels gadgets-scrolling gadgets-paragraphs gadgets-theme gadgets-presentations gadgets-outliners generic hashtables io kernel namespaces sequences styles strings ; TUPLE: pane output current prototype scrolls? ; : add-output 2dup set-pane-output add-gadget ; : add-current 2dup set-pane-current add-gadget ; : prepare-line ( pane -- ) dup pane-prototype clone swap add-current ; : pane-clear ( pane -- ) dup pane-output clear-incremental pane-current clear-gadget ; C: pane ( -- pane ) over set-delegate over set-pane-prototype over add-output dup prepare-line ; : scroll-pane ( pane -- ) dup pane-scrolls? [ scroll>bottom ] [ drop ] if ; TUPLE: pane-stream pane ; : prepare-print ( current -- gadget ) dup gadget-children { { [ dup empty? ] [ 2drop ""