From 27623f3a48d5149a11f0c645d65135a42ed4c6fa Mon Sep 17 00:00:00 2001 From: Sam Anklesaria Date: Mon, 25 May 2009 15:29:44 -0500 Subject: [PATCH] ui.frp documentation added --- extra/darcs-ui-demo/commands/commands.factor | 34 +++++++++ extra/darcs-ui-demo/darcs-ui-demo.factor | 72 +++++++++++++++++++ extra/darcs-ui-demo/icons/add.tiff | Bin 0 -> 3012 bytes extra/darcs-ui-demo/icons/app.tiff | Bin 0 -> 3012 bytes extra/darcs-ui-demo/icons/pull.tiff | Bin 0 -> 3949 bytes extra/darcs-ui-demo/icons/push.tiff | Bin 0 -> 3985 bytes extra/darcs-ui-demo/icons/rec.tiff | Bin 0 -> 3952 bytes extra/darcs-ui-demo/icons/rem.tiff | Bin 0 -> 3012 bytes extra/darcs-ui-demo/icons/send.tiff | Bin 0 -> 3949 bytes extra/ui/frp/frp-docs.factor | 13 ++++ extra/ui/frp/functors/functors-docs.factor | 10 +++ extra/ui/frp/gadgets/gadgets-docs.factor | 31 ++++++++ extra/ui/frp/instances/instances-docs.factor | 9 +++ extra/ui/frp/layout/layout-docs.factor | 30 ++++++++ extra/ui/frp/signals/signals-docs.factor | 30 ++++++++ 15 files changed, 229 insertions(+) create mode 100644 extra/darcs-ui-demo/commands/commands.factor create mode 100644 extra/darcs-ui-demo/darcs-ui-demo.factor create mode 100644 extra/darcs-ui-demo/icons/add.tiff create mode 100644 extra/darcs-ui-demo/icons/app.tiff create mode 100644 extra/darcs-ui-demo/icons/pull.tiff create mode 100644 extra/darcs-ui-demo/icons/push.tiff create mode 100644 extra/darcs-ui-demo/icons/rec.tiff create mode 100644 extra/darcs-ui-demo/icons/rem.tiff create mode 100644 extra/darcs-ui-demo/icons/send.tiff create mode 100644 extra/ui/frp/frp-docs.factor create mode 100644 extra/ui/frp/functors/functors-docs.factor create mode 100644 extra/ui/frp/gadgets/gadgets-docs.factor create mode 100644 extra/ui/frp/instances/instances-docs.factor create mode 100644 extra/ui/frp/layout/layout-docs.factor create mode 100644 extra/ui/frp/signals/signals-docs.factor diff --git a/extra/darcs-ui-demo/commands/commands.factor b/extra/darcs-ui-demo/commands/commands.factor new file mode 100644 index 0000000000..a8148d3b6c --- /dev/null +++ b/extra/darcs-ui-demo/commands/commands.factor @@ -0,0 +1,34 @@ +USING: arrays closures continuations darcs-ui io.encodings.utf8 +io.launcher kernel regexp sequences fries xml xml.data xml.traversal +ui.gadgets.alerts ; +IN: darcs-ui-demo.commands + +: extract ( tag name -- string ) tag-named children>string ; +: prepare-patches ( changelog -- table-columns ) + string>xml "patch" tags-named + [ [ "name" extract ] + [ [ "author" attr ] [ "local_date" attr ] bi ] + bi 3array + ] map ; +: patches ( method search -- table-columns ) + [ drop "" ] [ i" --_ \"_\"" ] if-empty + i" darcs changes --xml-output _" run-desc prepare-patches ; + +: whatsnew ( -- matches ) "darcs whatsnew" run-desc R/ ^[^+-].*/m all-matching-subseqs ; + +: pull ( repo -- ) i" darcs pull -a _" [ try-process ] [ 2drop "Can't connect" alert* ] recover ; inline +: repo-push ( repo -- ) i{ "darcs" "push" "-a" _ } [ try-process ] [ 2drop "Push refused" alert* ] recover ; inline +: send ( repo -- ) i{ "darcs" "send" "-a" _ } [ try-process ] [ 2drop "Sending failed" alert* ] recover ; inline +: app ( file -- ) i{ "darcs" "apply" "-a" _ } [ try-process ] [ 2drop "Applying failed" alert* ] recover ; inline +: record ( quot name author -- ) i{ "darcs" "record" "--skip-long-comment" "-m" _ "--author" _ } + utf8 rot with-process-writer ; inline + +: cnts ( file patch -- result ) i" exact \"_\"" swap i{ "darcs" "show" "contents" "--match" _ _ } + [ run-desc ] [ 2drop "File doesn't exist for selected patch" ] recover ; +: files ( -- str ) "darcs show files" [ run-desc ] [ drop "Error showing files" alert* ] recover ; + +: init-repo ( -- ) "darcs init" try-process ; +: add-repo-file ( files -- ) { "darcs" "add" "-r" } prepend + [ try-process ] [ 2drop "File already exists in repository" alert* ] recover ; +: remove-repo-file ( files -- ) { "darcs" "remove" } prepend + [ try-process ] [ 2drop "File doesn't exist in repository" alert* ] recover ; \ No newline at end of file diff --git a/extra/darcs-ui-demo/darcs-ui-demo.factor b/extra/darcs-ui-demo/darcs-ui-demo.factor new file mode 100644 index 0000000000..ccbda7b4b2 --- /dev/null +++ b/extra/darcs-ui-demo/darcs-ui-demo.factor @@ -0,0 +1,72 @@ +USING: accessors arrays cocoa.dialogs closures continuations +darcs-ui.commands fry file-trees io io.files io.directories +io.encodings.utf8 kernel math models monads sequences +splitting ui ui.gadgets.alerts ui.frp ui.gadgets.comboboxes +ui.gadgets.labels ui.gadgets.scrollers ui.baseline-alignment +ui.images unicode.case ; +EXCLUDE: fries => _ ; +IN: darcs-ui-demo +: ( columns -- scroller ) + [ first ] >>val-quot + { "Patch" "Author" "Date" } >>column-titles + ; + +: ( {str} -- gadget ) t >>multiple-selection? indexed ; + +: answer ( length indices -- ) [ index [ "y" ] [ "n" ] if write ] curry each flush ; + +: patches-quot ( -- model-of-quot ) + [ whatsnew [ length ] keep + [ ->% 1 "okay" [ close-window ] >>hook + -> [ [ answer ] 2curry ] 2fmap-& + ] { 229 200 } >>pref-dim "select changes" open-window + ] [ drop [ ] "No changes!" alert f ] recover ; + +: ( str -- button ) i" vocab:darcs-ui-demo/icons/_.tiff" ; +: ( str -- model ) -> [ drop patches-quot ] bind ; + +: load-pref ( name file -- model ) "_darcs/prefs/" prepend dup exists? + [ utf8 [ readln ] with-file-reader nip ] + [ '[ dup _ utf8 set-file-contents ] swap ask-user swap fmap ] if ; + +: toolbar ( -- file-updates patch-updates ) + "add" -> [ drop open-dir-panel [ add-repo-file ] when* ] $> + "rem" -> [ drop open-panel [ remove-repo-file ] when* ] $> + 2array >behavior + "rec" dup [ drop "Patch Name:" ask-user ] bind dup + C[ drop "Your Name:" "author" load-pref ] bind C[ record ] 3$>-& + "push" -> [ "Push To:" "defaultrepo" load-pref ] bind* C[ repo-push ] $> , + "pull" -> [ "Pull From:" "defaultrepo" load-pref ] bind* C[ pull ] $> + "send" -> [ "Send To:" "defaultrepo" load-pref ] bind* C[ send ] $> , + "app" -> C[ open-dir-panel [ first app ] when* ] $> 3array >behavior ; + +: darcs-window ( -- ) [ + [ + toolbar + + { "PATCHES:" "MATCHES:" + "FROM-TAG:" "FROM-PATCH:" "FROM-MATCH:" + "TO-TAG:" "TO-MATCH:" "TO-PATCH:" + } -> [ but-last >lower ] fmap + { 100 10 } >>pref-dim ->% 1 + ] +baseline+ >>align , + [ + C[ rot drop patches ] 3fmap-| ->% .5 + [ C[ drop files "\n" split create-tree ] fmap ->% .5 + [ file? ] [ comment>> ] fmap + ] dip + ] ,% .5 + C[ cnts ] 2fmap-| "Select a patch and file to see its historical contents" + swap ,% .5 + ] "darcs" open-window ; + +DEFER: open-file +: create-repo ( -- ) "The selected folder is not a darcs repo. Would you like to create one?" { "yes" "no" } ask-buttons + [ C[ drop [ init-repo darcs-window ] [ drop "Can't write to folder" alert* ] recover ] $> activate-model ] + [ [ drop open-file ] $> activate-model ] bi* ; + +: open-file ( -- ) [ open-dir-panel + [ first [ "_darcs" exists? [ darcs-window ] [ create-repo ] if ] with-directory ] unless-empty + ] with-ui ; + +MAIN: open-file \ No newline at end of file diff --git a/extra/darcs-ui-demo/icons/add.tiff b/extra/darcs-ui-demo/icons/add.tiff new file mode 100644 index 0000000000000000000000000000000000000000..c17d99617bec62c056b63d24d675bda9bf589843 GIT binary patch literal 3012 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 literal 0 HcmV?d00001 diff --git a/extra/darcs-ui-demo/icons/push.tiff b/extra/darcs-ui-demo/icons/push.tiff new file mode 100644 index 0000000000000000000000000000000000000000..56513ebb3203d07b3542ceb28a540220c90003fc GIT binary patch literal 3985 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 literal 0 HcmV?d00001 diff --git a/extra/darcs-ui-demo/icons/rem.tiff b/extra/darcs-ui-demo/icons/rem.tiff new file mode 100644 index 0000000000000000000000000000000000000000..14d6a66efe989ecb258f10aa71849d0724121b3a GIT binary patch literal 3012 zcmeH`&2G~`5XX02Ky6Ot&_Y`dmN*z8;!RS4WGiV8AVicnK?R9i-NbDz*LLJsvWfC> z$V22|K;ps!@E}RZ$1xJij)_eqQrZKKgj8EUdv-kT`6 zv&Vj2ts0ukpK9m2l@q>y`XcapEhl_g7)2K={;rJ-)%f4AR zHCN?*^U`X_eojzp_NgW_8{9DGv1*${uaLBuB1|ZeB?~DgN}?{c22%z#H|?_s=T zb7+HY!`?%@5!e_G<9iF6WA^> z8Uj6mANC=B6_6AB(8u32uF?+ut8$0Fb!&t*#r1|+jYgwb0gdr^94nwPnM`5@G^W#O VtgK68Hk;8nfj-s&rL-F}y`LGZXK|5W!H4w{17$gJ;kPAsLfEQY& zq99eFSf~t@dIReNPDN1^omW6EB7zeTt;KS$OhHh(-`@8N;gY(w+q3@DkDTxQo%5da zJMTH~`{g5UZp<8pvE0Hi+!}^qCXI{}81`>Th*~P=d4{X?YF)Tm!*lVP&vOfwDO6Nv zgf=z{MdTy2@gJReKE8gumud*(%goQ2`HX$A zOs84m>FG+G8I@Wkr{nmmzn!9NQ#;yQ|@M*JnkT2ch@c|!feSj?S3vDAp)pja=DrFj__ zwI)uh2n*NqNQZ2A#wL2j>GX1?j<-T3Q)@M9ZLnS*LVS(uqfyMOMn~GQH*M|g7S3j^ z|Hm8M2P56%ciH}OUb{YO8%-pO(XJlWINbRR^IiHVNA@&^@z_sJ)X=DHK`O)SnaeP* zWQ^Kok%KZtz%b{s9TvrEf@P6%Jx?kRQ>YyIU!N)E^AsVD{P*5+vvJe7$io%Oq7;b?#yKBVj6?HM<~dnOZ4O_y}yRZ3HCI zBp#b;DLIr{g+{MXt9UeZuv8tRcjWUY@rIe?v5L_pjN_s+CN>_=fvO@Gb(C7`McOEL zvT+cYn+U1V%~KI8kMdcnP|8(0lG#bPVA$DwVtj<}zl#_%LFy9FLdFzEiZ$9uUrC1r zBU?t4kv*5I$VMB;jxtl3e=?Tj(6Ns_xtZ|m9L^ZbWh{sfotwt7U@?bAaDFn3xdgvz z^0&(4{9@QnA~>&^?9A(&Uz+g5OPpUZR>OHGaDF|4r*PgF!~f5 z|ED=q4CSC)l+%>Q%F61Mz`#I!^UV;3oy-!12H`(8WJ($YXV2|xQpTUc03^z-vWeSJOJI=b-Ax?&u< z@f;av2e9qb)9)qeB?H)B^&CD)rKoFaMN3Nye0_aExkq{x5P<&veth*+8{F5Q!v5-K zgu5R}g?&go+>H+owIN~Omm{))=!u{Au=CU>wWuGt*9YOh`5bERJV1Y6ALzQr_R8AY zI!mjKM(e{icq9~&9D_*t>(|(DuniHL&%j@ojg?X9tVkl$5U_eL*6wb`#{6z16+A}j z@h8|@F@RNDN>F?I9(L^54$3*USG2CWx;lLEpcQUwk6~}s0Jao%LjHaMBoW)7tf zoI9*+%xyqGOb+~_Gm(&cADfOm!q(&e!0z$^1Z+8j>iWBAZf?fPl`F^fit4?+kI;Pg z9vq_&W5?efA!6GVtO!a%T+Us>mj&;zWLARX_rs7`17CFpB9n@-@lZRd`4Mu;`tj%F z)2OU#B3!-j@$nhy746v%orCsl?%cUqp`oE@Y-)ys`Vc-U?SZ#87w;Jg;i1@xz%>O( z&TnO9nIsx9A74krrXtAKeU8Mu4kQ=$Ap2S$f|83-d9xAQw{HXG9J?Q4u^3fVm1t=A zJM5MFkxX)UsCL08z6dUUiBM-gfbx_3tk}87K(+H8yj7n<@nJEx7Ib2BK^L;FK7lml zB+6?V(AanfU(*n2942V2d!&R9FN&H!( z#Fb#F^b@@0x|*!xB&4Z#5SDQlu_rpQOuG-o=dYo*_68`Y={YCkWKRzdJbc)SvWf~U z4Eq%N;x4Q{@Br%%+=u+bEUNkWmH0!(}Li%MucQGLwlkFF65k? zEWOO;aCdW~ImnM7_TtQ*Jv%EXCb2V$`%yjxrx!q8Y%a<-9apMNmR9E4``O-&" ; +ABOUT: { "ui.frp.functors" "signal-collection" } \ No newline at end of file diff --git a/extra/ui/frp/gadgets/gadgets-docs.factor b/extra/ui/frp/gadgets/gadgets-docs.factor new file mode 100644 index 0000000000..208e87f4a3 --- /dev/null +++ b/extra/ui/frp/gadgets/gadgets-docs.factor @@ -0,0 +1,31 @@ +USING: help.markup help.syntax ui.gadgets.buttons +ui.gadgets.editors ui.frp.gadgets ; +IN: ui.frp.gadgets + +HELP: +{ $values { "gadget" "the button's label" } { "button" button } } +{ $description "Creates an button whose signal updates on clicks. " } ; + +HELP: +{ $values { "model" "values the table is to display" } { "table" frp-table } } +{ $description "Creates an " { $link frp-table } } ; + +HELP: +{ $values { "table" frp-table } } +{ $description "Creates an " { $link frp-table } " with no initial values to display" } ; + +HELP: +{ $values { "column-model" "values the table is to display" } { "table" frp-table } } +{ $description "Creates an " { $link frp-table } " with a val-quot that renders each element as its own row" } ; + +HELP: +{ $values { "table" frp-table } } +{ $description "Creates an frp-list with no initial values to display" } ; + +HELP: indexed +{ $values { "table" frp-table } } +{ $description "Sets the output model of an frp-table to the selected-index, rather than the selected-value" } ; + +HELP: +{ $values { "field" model-field } } +{ $description "Creates a field with an empty initial value" } ; \ No newline at end of file diff --git a/extra/ui/frp/instances/instances-docs.factor b/extra/ui/frp/instances/instances-docs.factor new file mode 100644 index 0000000000..12d5fdbe21 --- /dev/null +++ b/extra/ui/frp/instances/instances-docs.factor @@ -0,0 +1,9 @@ +USING: help.markup help.syntax monads ui.frp.signals ; +IN: ui.frp.instances +IN: ui.frp.instances +ARTICLE: { "ui.frp.instances" "explanation" } "FRP Instances" +"Signals are all functors, as " { $link fmap } " corresponds directly to " { $link } $nl +"Moduls also impliment monad functionalities. " { $link bind } "ing switches between two models. " $nl +"Also, a gadget is a monad. Binding recieves a model and adds the resulting gadget onto the parent. " $nl +"Examples of these instances can be seen in the " { $vocab-link "darcs-ui-demo" } " vocabulary." ; +ABOUT: { "ui.frp.instances" "explanation" } \ No newline at end of file diff --git a/extra/ui/frp/layout/layout-docs.factor b/extra/ui/frp/layout/layout-docs.factor new file mode 100644 index 0000000000..3679572669 --- /dev/null +++ b/extra/ui/frp/layout/layout-docs.factor @@ -0,0 +1,30 @@ +USING: help.markup help.syntax models ui.gadgets.tracks ui.frp.layout ; +IN: ui.frp.layout + +HELP: , +{ $values { "uiitem" "a gadget or model" } } +{ $description "Used in a series of gadgets created by a box, accumulating the gadget" } ; + +HELP: ,% +{ $syntax "gadget ,% width" } +{ $description "Like ',' but stretches the gadget to always fill a percent of the parent" } ; + +HELP: -> +{ $values { "uiitem" "a gadget or model" } { "model" model } } +{ $description "Like ',' but passes its model on for further use." } ; + +HELP: ->% +{ $syntax "gadget ,% width" } +{ $description "Like '->' but stretches the gadget to always fill a percent of the parent" } ; + +HELP: +{ $description "Grows to fill any empty space in a box" } ; + +HELP: +{ $values { "gadgets" "a list of gadgets" } { "track" track } } +{ $syntax "[ gadget , gadget , ... ] " } +{ $description "Creates an horizontal track containing the gadgets listed in the quotation" } ; +HELP: +{ $values { "gadgets" "a list of gadgets" } { "track" track } } +{ $syntax "[ gadget , gadget , ... ] " } +{ $description "Creates an vertical track containing the gadgets listed in the quotation" } ; \ No newline at end of file diff --git a/extra/ui/frp/signals/signals-docs.factor b/extra/ui/frp/signals/signals-docs.factor new file mode 100644 index 0000000000..2cc455c7ff --- /dev/null +++ b/extra/ui/frp/signals/signals-docs.factor @@ -0,0 +1,30 @@ +USING: help.markup help.syntax models models.arrow sequences ui.frp.signals ; +IN: ui.frp.signals + +HELP: +{ $values { "models" "a list of models" } { "signal" basic-model } } +{ $description "Creates a signal that merges the updates of others" } ; + +HELP: +{ $values { "model" model } { "quot" "quotation with stack effect ( a b -- c )" } { "filter-signal" filter-model } } +{ $description "Creates a signal that uses the updates of another model only when they satisfy a given predicate" } ; + +HELP: +{ $values { "oldval" "starting value" } { "quot" "applied to update and previous values" } { "model" model } { "signal" model } } +{ $description "Similar to " { $link reduce } " but works on models, applying a quotation to the previous and new values at each update" } ; + +HELP: +{ $values { "signal1" model } { "signal2" model } { "signal'" model } } +{ $description "Creates a signal that starts with the behavior of signal1 and switches to the behavior of signal2 on its update" } ; + +HELP: +{ $values { "model" model } { "quot" "applied to model's value on updates" } { "signal" model } } +{ $description "The signal version of an " { $link } } ; + +HELP: $> +{ $values { "model" model } { "quot" "applied to model's value on updates" } { "signal" model } } +{ $description "Like " { $link } ", but doesn't produce a new value" } ; + +HELP: <$ +{ $values { "model" model } { "quot" "applied to model's value on updates" } { "signal" model } } +{ $description "Opposite of " { $link <$ } "- gives output, but takes no input" } ; \ No newline at end of file