module FilePickF(oldFilePickF,smallPickListF) where import List2(sort) import MoreF(pickListF)--,PickListRequest(..) import ListRequest(replaceAll) import CompOps --import Defaults(menuFont) import FilePaths import IoF(ioF) import HaskellIO(hIOerr) import Fudget import NullF(startupF,getK,putK)--F,K, --import FudgetIO import ReadFileF(readDirF) --import Geometry(Point(..)) import LayoutDir(Orientation(..)) import LayoutOps --import Spacer(layoutModifierF) import Loops(loopLeftF) import SerCompF(bypassF) import InputMsg(stripInputMsg)--InputMsg(..), import InputSP(inputLeaveDoneSP)--,inputDoneSP import InputF(inputThroughF)--,InF(..) import DStringF(stringF) import EitherUtils(stripEither) --import Message(Message(..)) import DialogueIO hiding (IOError) dirF = aFilePath >^=< bypassF (inputLeaveDoneSP >^^=< stringF) -- startpath ?!!! shownameF = inputThroughF stringF startpath = "." lsF = paths>^==^ (map (extendPath sdir) . sort . filter (/=".")) files --Left err -> [show err, filePath sdir] Left err -> [aFilePath "Error", sdir] where sdir = aFilePath dir smallPickListF f = {-layoutModifierF lf-} (snd.stripInputMsg>^==^^=< filePickListF) >==< lsF) filePickListF = smallPickListF pathTail routeK = getK $ \ msg -> case msg of High p -> let s = filePath p cont r = putK (High (r s)) routeK fileCont = cont Right dirCont = cont Left checkCont (Str ('d':_)) = dirCont checkCont _ = fileCont in hIOerr (StatusFile s) (const fileCont) checkCont f1 >=#=< f2 = (f1,Below) >#==< f2 in shownameF >=#=< loopLeftF (((ioF routeK >==< showdirF) >=#=< dirF) >=^< stripEither)