diff --git a/extra/closures/closures.factor b/extra/closures/closures.factor index 1411fa96c0..7fd08db998 100644 --- a/extra/closures/closures.factor +++ b/extra/closures/closures.factor @@ -1,4 +1,7 @@ -USING: fry namespaces kernel sequences parser ; +USING: assocs io.pathnames fry namespaces kernel sequences parser ; IN: closures -: delayed-bind ( quot -- quot' ) '[ namestack [ set-namestack @ ] curry ] ; -SYNTAX: C[ parse-quotation delayed-bind over push-all ; +SYMBOL: | +: delayed-bind-with ( vars quot -- quot' ) '[ _ dup [ get ] map zip [ _ bind ] curry ] ; +SYNTAX: C[ | parse-until parse-quotation delayed-bind-with over push-all ; +! Common ones +SYNTAX: DIR[ parse-quotation { current-directory } swap delayed-bind-with over push-all ; \ No newline at end of file diff --git a/extra/darcs-ui b/extra/darcs-ui new file mode 160000 index 0000000000..54edac761a --- /dev/null +++ b/extra/darcs-ui @@ -0,0 +1 @@ +Subproject commit 54edac761ab48bee66f8db0210c27d52b72a94ef diff --git a/extra/darcs-ui-demo/commands/commands.factor b/extra/darcs-ui-demo/commands/commands.factor deleted file mode 100644 index a8148d3b6c..0000000000 --- a/extra/darcs-ui-demo/commands/commands.factor +++ /dev/null @@ -1,34 +0,0 @@ -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 deleted file mode 100644 index 739254b6c8..0000000000 --- a/extra/darcs-ui-demo/darcs-ui-demo.factor +++ /dev/null @@ -1,73 +0,0 @@ -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.gadgets ui.frp.layout -ui.frp.signals ui.frp.instances 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 deleted file mode 100644 index c17d99617b..0000000000 Binary files a/extra/darcs-ui-demo/icons/add.tiff and /dev/null differ diff --git a/extra/darcs-ui-demo/icons/app.tiff b/extra/darcs-ui-demo/icons/app.tiff deleted file mode 100644 index e823240eac..0000000000 Binary files a/extra/darcs-ui-demo/icons/app.tiff and /dev/null differ diff --git a/extra/darcs-ui-demo/icons/pull.tiff b/extra/darcs-ui-demo/icons/pull.tiff deleted file mode 100644 index b89d6339f1..0000000000 Binary files a/extra/darcs-ui-demo/icons/pull.tiff and /dev/null differ diff --git a/extra/darcs-ui-demo/icons/push.tiff b/extra/darcs-ui-demo/icons/push.tiff deleted file mode 100644 index 56513ebb32..0000000000 Binary files a/extra/darcs-ui-demo/icons/push.tiff and /dev/null differ diff --git a/extra/darcs-ui-demo/icons/rec.tiff b/extra/darcs-ui-demo/icons/rec.tiff deleted file mode 100644 index 06dc4c9e21..0000000000 Binary files a/extra/darcs-ui-demo/icons/rec.tiff and /dev/null differ diff --git a/extra/darcs-ui-demo/icons/rem.tiff b/extra/darcs-ui-demo/icons/rem.tiff deleted file mode 100644 index 14d6a66efe..0000000000 Binary files a/extra/darcs-ui-demo/icons/rem.tiff and /dev/null differ diff --git a/extra/darcs-ui-demo/icons/send.tiff b/extra/darcs-ui-demo/icons/send.tiff deleted file mode 100644 index 3d9b1f5e71..0000000000 Binary files a/extra/darcs-ui-demo/icons/send.tiff and /dev/null differ diff --git a/extra/ui/frp/functors/authors.txt b/extra/ui/frp/functors/authors.txt new file mode 100644 index 0000000000..2300f69f11 --- /dev/null +++ b/extra/ui/frp/functors/authors.txt @@ -0,0 +1 @@ +Sam Anklesaria diff --git a/extra/ui/frp/gadgets/authors.txt b/extra/ui/frp/gadgets/authors.txt new file mode 100644 index 0000000000..2300f69f11 --- /dev/null +++ b/extra/ui/frp/gadgets/authors.txt @@ -0,0 +1 @@ +Sam Anklesaria diff --git a/extra/ui/frp/instances/authors.txt b/extra/ui/frp/instances/authors.txt new file mode 100644 index 0000000000..2300f69f11 --- /dev/null +++ b/extra/ui/frp/instances/authors.txt @@ -0,0 +1 @@ +Sam Anklesaria diff --git a/extra/ui/frp/instances/instances-docs.factor b/extra/ui/frp/instances/instances-docs.factor index 12d5fdbe21..8b26d208ad 100644 --- a/extra/ui/frp/instances/instances-docs.factor +++ b/extra/ui/frp/instances/instances-docs.factor @@ -5,5 +5,5 @@ 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." ; +"Examples of these instances can be seen in the " { $vocab-link "darcs-ui" } " vocabulary." ; ABOUT: { "ui.frp.instances" "explanation" } \ No newline at end of file diff --git a/extra/ui/frp/layout/authors.txt b/extra/ui/frp/layout/authors.txt new file mode 100644 index 0000000000..2300f69f11 --- /dev/null +++ b/extra/ui/frp/layout/authors.txt @@ -0,0 +1 @@ +Sam Anklesaria diff --git a/extra/ui/frp/signals/authors.txt b/extra/ui/frp/signals/authors.txt new file mode 100644 index 0000000000..2300f69f11 --- /dev/null +++ b/extra/ui/frp/signals/authors.txt @@ -0,0 +1 @@ +Sam Anklesaria