From: John Benediktsson Date: Mon, 22 Jan 2018 22:18:22 +0000 (-0800) Subject: tabs: moved to ui.gadgets.tabs to match IN: declarations. X-Git-Url: https://gitweb.factorcode.org/gitweb.cgi?p=factor-unmaintained.git;a=commitdiff_plain;h=7ffb672e1d2baa964137dbe8efe95eda7e92a39b tabs: moved to ui.gadgets.tabs to match IN: declarations. --- diff --git a/tabs/authors.txt b/tabs/authors.txt deleted file mode 100644 index 9366723..0000000 --- a/tabs/authors.txt +++ /dev/null @@ -1 +0,0 @@ -William Schlieper diff --git a/tabs/summary.txt b/tabs/summary.txt deleted file mode 100644 index a55610b..0000000 --- a/tabs/summary.txt +++ /dev/null @@ -1 +0,0 @@ -Tabbed windows \ No newline at end of file diff --git a/tabs/tabs.factor b/tabs/tabs.factor deleted file mode 100644 index d05890c..0000000 --- a/tabs/tabs.factor +++ /dev/null @@ -1,62 +0,0 @@ -! Copyright (C) 2008 William Schlieper -! See http://factorcode.org/license.txt for BSD license. - -USING: accessors kernel fry math math.vectors sequences arrays vectors assocs - hashtables models models.range models.product combinators - ui ui.gadgets ui.gadgets.buttons ui.gadgets.frames ui.gadgets.packs - ui.gadgets.grids ui.gadgets.viewports ui.gadgets.books locals ; - -IN: ui.gadgets.tabs - -TUPLE: tabbed < frame names toggler content ; - -DEFER: (del-page) - -:: add-toggle ( n name model toggler -- ) - - n name toggler parent>> '[ drop _ _ _ (del-page) ] "X" swap - @right grid-add - n model name @center grid-add - toggler swap add-gadget drop ; - -: redo-toggler ( tabbed -- ) - [ names>> ] [ model>> ] [ toggler>> ] tri - [ clear-gadget ] keep - [ [ length ] keep ] 2dip - '[ _ _ add-toggle ] 2each ; - -: refresh-book ( tabbed -- ) - model>> [ ] change-model ; - -: (del-page) ( n name tabbed -- ) - { [ [ remove ] change-names redo-toggler ] - [ dupd [ names>> length ] [ model>> ] bi - [ [ = ] keep swap [ 1- ] when - [ < ] keep swap [ 1- ] when ] change-model ] - [ content>> nth-gadget unparent ] - [ refresh-book ] - } cleave ; - -: add-page ( page name tabbed -- ) - [ names>> push ] 2keep - [ [ names>> length 1 - swap ] - [ model>> ] - [ toggler>> ] tri add-toggle ] - [ content>> swap add-gadget drop ] - [ refresh-book ] tri ; - -: del-page ( name tabbed -- ) - [ names>> index ] 2keep (del-page) ; - -: new-tabbed ( assoc class -- tabbed ) - new-frame - 0 >>model - 1 >>fill >>toggler - dup toggler>> @left grid-add - swap - [ keys >vector >>names ] - [ values over model>> >>content dup content>> @center grid-add ] - bi - dup redo-toggler ; - -: ( assoc -- tabbed ) tabbed new-tabbed ; diff --git a/ui/gadgets/tabs/authors.txt b/ui/gadgets/tabs/authors.txt new file mode 100644 index 0000000..9366723 --- /dev/null +++ b/ui/gadgets/tabs/authors.txt @@ -0,0 +1 @@ +William Schlieper diff --git a/ui/gadgets/tabs/summary.txt b/ui/gadgets/tabs/summary.txt new file mode 100644 index 0000000..a55610b --- /dev/null +++ b/ui/gadgets/tabs/summary.txt @@ -0,0 +1 @@ +Tabbed windows \ No newline at end of file diff --git a/ui/gadgets/tabs/tabs.factor b/ui/gadgets/tabs/tabs.factor new file mode 100644 index 0000000..d05890c --- /dev/null +++ b/ui/gadgets/tabs/tabs.factor @@ -0,0 +1,62 @@ +! Copyright (C) 2008 William Schlieper +! See http://factorcode.org/license.txt for BSD license. + +USING: accessors kernel fry math math.vectors sequences arrays vectors assocs + hashtables models models.range models.product combinators + ui ui.gadgets ui.gadgets.buttons ui.gadgets.frames ui.gadgets.packs + ui.gadgets.grids ui.gadgets.viewports ui.gadgets.books locals ; + +IN: ui.gadgets.tabs + +TUPLE: tabbed < frame names toggler content ; + +DEFER: (del-page) + +:: add-toggle ( n name model toggler -- ) + + n name toggler parent>> '[ drop _ _ _ (del-page) ] "X" swap + @right grid-add + n model name @center grid-add + toggler swap add-gadget drop ; + +: redo-toggler ( tabbed -- ) + [ names>> ] [ model>> ] [ toggler>> ] tri + [ clear-gadget ] keep + [ [ length ] keep ] 2dip + '[ _ _ add-toggle ] 2each ; + +: refresh-book ( tabbed -- ) + model>> [ ] change-model ; + +: (del-page) ( n name tabbed -- ) + { [ [ remove ] change-names redo-toggler ] + [ dupd [ names>> length ] [ model>> ] bi + [ [ = ] keep swap [ 1- ] when + [ < ] keep swap [ 1- ] when ] change-model ] + [ content>> nth-gadget unparent ] + [ refresh-book ] + } cleave ; + +: add-page ( page name tabbed -- ) + [ names>> push ] 2keep + [ [ names>> length 1 - swap ] + [ model>> ] + [ toggler>> ] tri add-toggle ] + [ content>> swap add-gadget drop ] + [ refresh-book ] tri ; + +: del-page ( name tabbed -- ) + [ names>> index ] 2keep (del-page) ; + +: new-tabbed ( assoc class -- tabbed ) + new-frame + 0 >>model + 1 >>fill >>toggler + dup toggler>> @left grid-add + swap + [ keys >vector >>names ] + [ values over model>> >>content dup content>> @center grid-add ] + bi + dup redo-toggler ; + +: ( assoc -- tabbed ) tabbed new-tabbed ;