X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=filepicker%2Ftest.icl;h=a306d2c0295769897bee98cd35f7064c5de0892a;hb=bcac28800fcf7a1da9f3a6dbb85bce08e991ae5b;hp=4ae8838c402910d27a2e971e50e64a6b50bdfd0b;hpb=0b364491c5e0bf5a97e6f7dd5c52932c835f43c8;p=clean-tests.git diff --git a/filepicker/test.icl b/filepicker/test.icl index 4ae8838..a306d2c 100644 --- a/filepicker/test.icl +++ b/filepicker/test.icl @@ -1,55 +1,8 @@ module test -from iTasks.UI.Editor.Controls import :: ChoiceNode{..} -import StdEnv -import Data.List -import Data.Func -import Data.Functor -import Data.Tuple -import Data.Tree -import Data.Maybe -import Data.Error -import Control.Applicative -import Control.Monad -import Control.Monad.State -import Control.Monad.Identity -import System.FilePath -import System.File -import System.Directory +import iTasks.Extensions.Files -import Text.GenPrint -import iTasks => qualified >>=, >>|, forever, sequence, return - -derive class iTask RTree, ChoiceNode, FileInfo, Tm - -Start w = startEngine (selectFile "/opt/clean/lib/StdLib" () False) w - -selectFile :: FilePath d Bool -> Task [FilePath] | toPrompt d -selectFile root p m = tbind - (accWorldOSError (appFst (fmap numberTree) o recurseDirectory root "")) - \tree->editSelection p m (SelectInTree (pure o toChoiceNode fp2cn) fromTree) tree [] -where - numberTree :: ((RTree a) -> RTree (Int, a)) - numberTree = flip evalState zero o foldTree \a cs-> - (\lvs i->RNode (i, a) lvs) <$> sequence cs <*> getState <* modify ((+)one) - - toChoiceNode :: (Int a -> ChoiceNode) -> ((RTree (Int, a)) -> ChoiceNode) - toChoiceNode tfun = foldTree \a cs->{ChoiceNode | uncurry tfun a & children=cs} - - fp2cn :: Int (FilePath, FileInfo) -> ChoiceNode - fp2cn i (fp, fi) = {id =if fi.directory (~i) i,label=dropDirectory fp,icon=Nothing,expanded=False,children=[]} - - fromTree :: (RTree (Int, (FilePath, a))) [Int] -> [FilePath] - fromTree tree sel = [f\\(i, (f, _))<-leafs tree | isMember i sel] - -recurseDirectory :: !FilePath !FilePath !*World -> *(MaybeOSError (RTree (FilePath, FileInfo)), !*World) -recurseDirectory acc fp w - # fp = acc fp - # (mfi, w) = getFileInfo fp w - | isError mfi = (liftError mfi, w) - # (Ok fi) = mfi - | not fi.directory = (Ok $ RNode (fp, fi) [], w) - # (mcs, w) = readDirectory fp w - | isError mfi = (liftError mcs, w) - # (cs, w) = appFst sequence $ mapSt (recurseDirectory fp) (filter (\c->not (elem c [".", ".."])) (fromOk mcs)) w - = (RNode (fp, fi) <$> cs, w) +Start w = startEngine ( + selectFileTreeLazy "select a file" False "/opt/clean" + -&&- selectFileTree False "select a file" False "/opt/clean"[] + >&> viewSharedInformation "selection" []) w