]> gitweb.factorcode.org Git - factor.git/commitdiff
cfdg: Click in the window to regenerate model
authorEduardo Cavazos <dharmatech@finkelstein.stackeffects.info>
Tue, 5 Aug 2008 02:44:01 +0000 (21:44 -0500)
committerEduardo Cavazos <dharmatech@finkelstein.stackeffects.info>
Tue, 5 Aug 2008 02:44:01 +0000 (21:44 -0500)
extra/cfdg/cfdg.factor

index 866400c9bc018488a4d473abe1f8a42de76790e4..6cbbc51786115f7ab0d98d42d72199ea59f1be38 100644 (file)
@@ -4,7 +4,8 @@ USING: kernel alien.c-types combinators namespaces arrays
        math math.functions math.vectors math.trig
        opengl.gl opengl.glu opengl ui ui.gadgets.slate
        vars colors self self.slots
-       random-weighted colors.hsv cfdg.gl accessors ;
+       random-weighted colors.hsv cfdg.gl accessors
+       ui.gadgets.handler ui.gestures assocs ui.gadgets ;
 
 IN: cfdg
 
@@ -201,20 +202,32 @@ SYMBOL: dlist
 
 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
+: delete-dlist ( -- ) dlist get [ dlist get 1 glDeleteLists dlist off ] when ;
+
 : cfdg-window* ( -- )
   C[ display ] <slate>
-    { 500 500 } >>pdim
-    C[ dlist get [ dlist get 1 glDeleteLists ] when ] >>ungraft
+    { 500 500 }       >>pdim
+    C[ delete-dlist ] >>ungraft
   dup "CFDG" open-window ;
 
 : cfdg-window ( -- ) [ cfdg-window* ] with-ui ;
 
 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
+SYMBOL: the-slate
+
+: rebuild ( -- ) delete-dlist the-slate get relayout-1 ;
+
 : <cfdg-gadget> ( -- slate )
   C[ display ] <slate>
+    dup the-slate set
     { 500 500 } >>pdim
-    C[ dlist get [ dlist get 1 glDeleteLists ] when ] >>ungraft ;
+    C[ dlist get [ dlist get 1 glDeleteLists ] when ] >>ungraft
+  <handler>
+    H{ } clone
+      T{ key-down f f "ENTER" } C[ drop rebuild ] swap pick set-at
+      T{ button-down }          C[ drop rebuild ] swap pick set-at
+    >>table ;
 
 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!