]> gitweb.factorcode.org Git - factor.git/commitdiff
ui.gadgets.layout: add-gadget-at refactored
authorSam Anklesaria <sam@Tintin.local>
Wed, 5 Aug 2009 13:44:14 +0000 (08:44 -0500)
committerSam Anklesaria <sam@Tintin.local>
Wed, 5 Aug 2009 13:44:14 +0000 (08:44 -0500)
extra/recipes/recipes.factor
extra/ui/gadgets/layout/layout.factor

index a99e65cf5c14b07be0bded31bcf5ac830d4e50f8..7fd7dc559c096d30c2a053547264e379102cb315 100644 (file)
@@ -11,7 +11,7 @@ STORED-TUPLE: recipe { title { VARCHAR 100 } } { votes INTEGER } { txt TEXT } {
 "recipes.db" temp-file <sqlite-db> recipe define-db
 : top-recipes ( offset search -- recipes ) <query> T{ recipe } rot >>title >>tuple
     "votes" >>order 30 >>limit swap >>offset get-tuples ;
-: top-genres ( -- genres ) f f top-recipes [ genre>> ] map prune 4 (head-slice) ;
+: top-genres ( -- genres ) f f top-recipes [ genre>> ] map prune 4 short head-slice ;
 
 : interface ( -- book ) [ 
      [
index 309c86c5f664633a99f85fed82dad970726eaaca..3949ba6ee426839e1d1a94a1458a8fea6b4ff2df 100644 (file)
@@ -35,7 +35,7 @@ M: model -> dup , ;
 
 : <spacer> ( -- ) <gadget> 1 <layout> , ;
 
-: add-layout ( track layout -- track ) [ gadget>> ] [ size>> ] bi track-add ; inline
+: add-layout ( track layout -- track ) [ gadget>> ] [ size>> ] bi track-add ;
 : layouts ( sized? gadgets -- layouts ) [ [ gadget? ] [ layout? ] bi or ] filter swap
    [ [ dup layout? [ f <layout> ] unless ] map ]
    [ [ dup gadget? [ gadget>> ] unless ] map ] if ;
@@ -61,10 +61,16 @@ SYNTAX: $ CREATE-WORD dup
 : insert-size ( number parent size -- ) -rot [ but-last insert-nth ] change-sizes drop ;
 : insertion-point ( placeholder -- number parent ) dup parent>> [ children>> index ] keep ;
 
+GENERIC: >layout ( gadget -- layout )
+M: gadget >layout f <layout> ;
+M: layout >layout ;
+
+GENERIC# (add-gadget-at) 2 ( parent item n -- )
+M: gadget (add-gadget-at) -rot [ add-gadget ] keep insert-gadget ;
+M: track (add-gadget-at) -rot >layout [ add-layout ] keep [ gadget>> insert-gadget ] [ size>> insert-size ] 3bi ;
+
 GENERIC# add-gadget-at 1 ( item location -- )
-M: gadget add-gadget-at dup parent>> track? [ [ f <layout> ] dip add-gadget-at ]
-    [ insertion-point rot [ add-gadget ] keep insert-gadget ] if ;
-M: layout add-gadget-at insertion-point rot [ add-layout ] keep [ gadget>> insert-gadget ] [ size>> insert-size ] 3bi ;
+M: object add-gadget-at insertion-point -rot (add-gadget-at) ;
 M: model add-gadget-at parent>> dup book:book? [ "No models in books" throw ]
    [ dup model>> dup collection? [ nip swap add-connection ] [ drop [ 1array <collection> ] dip (>>model) ] if ] if ;
 : track-add-at ( item location size -- ) swap [ <layout> ] dip add-gadget-at ;