! Copyright (C) 2006 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. IN: gadgets USING: gadgets gadgets-labels gadgets-layouts gadgets-theme gadgets-viewports hashtables kernel math namespaces queues sequences threads ; ! Hash mapping aliens to gadgets SYMBOL: windows : reset-windows ( hash -- hash ) H{ } clone windows set-global ; : window ( handle -- world ) windows get hash ; : register-window ( world handle -- ) windows get set-hash ; : unregister-window ( handle -- ) windows get remove-hash ; : layout-queued ( -- ) invalid dup queue-empty? [ drop ] [ deque dup layout find-world [ dup world-handle set ] when* layout-queued ] if ; : init-ui ( -- ) H{ } clone \ timers set-global \ invalid set-global ; : ui-step ( -- ) do-timers [ layout-queued ] make-hash hash-values [ dup world-handle [ draw-world ] [ drop ] if ] each 10 sleep ; : ( -- gadget ) ""