hpage 0.2.1 → 0.2.2
raw patch · 4 files changed
+75/−13 lines, 4 files
Files
- README +3/−0
- hpage.cabal +1/−1
- res/help/helpPage.hs +1/−0
- src/HPage/GUI/FreeTextWindow.hs +70/−12
README view
@@ -32,4 +32,7 @@ fact 20 ... you can ask for its value or type++Also, instead of just placing your cursor on a expression, you can mark an area and hpage will evaluate just that area+ That's just to start up... you can do some serious stuff with this application, just check out the different menues
hpage.cabal view
@@ -1,5 +1,5 @@ name: hpage-version: 0.2.1+version: 0.2.2 cabal-version: >=1.6 build-type: Custom license: BSD3
res/help/helpPage.hs view
@@ -25,5 +25,6 @@ fact 20 +-- If you don't want to use the whole page content in an evaluation, you can mark the exact page zone you want to evaluate -- That's just to start up... you can do some serious stuff with this application, just surf the different menues
src/HPage/GUI/FreeTextWindow.hs view
@@ -453,10 +453,66 @@ Right () -> refreshPage model guiCtx -runTxtHP :: HP.HPage (MVar (Either HP.InterpreterError String)) -> - HPS.ServerHandle -> GUIContext -> GUIResultRow -> IO ()-runTxtHP hpacc model guiCtx@GUICtx{guiWin = win,- guiStatus = status}+runTxtHP, runTxtHPPointer :: HP.HPage (MVar (Either HP.InterpreterError String)) -> + HPS.ServerHandle -> GUIContext -> GUIResultRow -> IO ()+runTxtHPSelection :: String -> HP.HPage (MVar (Either HP.InterpreterError String)) -> + HPS.ServerHandle -> GUIContext -> GUIResultRow -> IO ()+runTxtHP hpacc model guiCtx@GUICtx{guiCode = txtCode} guiRow =+ do+ sel <- textCtrlGetStringSelection txtCode+ let runner = case sel of+ "" -> runTxtHPPointer+ sl -> runTxtHPSelection sl+ runner hpacc model guiCtx guiRow++runTxtHPSelection s hpacc model guiCtx@GUICtx{guiWin = win,+ guiStatus = status}+ GUIRRow{grrButton = btn,+ grrText = txtBox} =+ do+ refreshExpr model guiCtx False+ debugIO ("evaluating selection", s)+ let newacc = do+ HP.addPage+ HP.setPageText s $ length s+ hpacc+ res <- tryIn' model newacc+ tryIn' model HP.closePage+ case res of+ Left err -> warningDialog win "Error" err+ Right var -> do+ cancelled <- varCreate False+ prevOnCmd <- get btn $ on command+ prevText <- get btn text+ let prevAttrs = [text := prevText,+ on command := prevOnCmd]+ revert = do+ varSet cancelled True+ tryIn' model HP.cancel+ set txtBox [enabled := True]+ set btn prevAttrs+ set status [text := "cancelled"]+ set btn [text := "Cancel", on command := revert]+ set txtBox [enabled := False]+ set status [text := "processing..."]+ spawn . liftIO $ do+ val <- readMVar var+ wasCancelled <- varGet cancelled+ if wasCancelled+ then+ return ()+ else+ do+ set status [text := "ready"]+ case val of+ Left err -> warningDialog win "Error" $ HP.prettyPrintError err+ Right txt -> set txtBox [text := txt]+ set txtBox [enabled := True]+ set btn prevAttrs+ return ()++runTxtHPPointer hpacc model guiCtx@GUICtx{guiWin = win,+ guiStatus = status} GUIRRow{grrButton = btn, grrText = txtBox} = do@@ -470,8 +526,13 @@ prevText <- get btn text let prevAttrs = [text := prevText, on command := prevOnCmd]- set btn [text := "Cancel",- on command := cancelHP model cancelled]+ revert = do+ varSet cancelled True+ tryIn' model HP.cancel+ set txtBox [enabled := True]+ set btn prevAttrs+ set status [text := "cancelled"]+ set btn [text := "Cancel", on command := revert] set txtBox [enabled := False] set status [text := "processing..."] spawn . liftIO $ do@@ -479,19 +540,16 @@ wasCancelled <- varGet cancelled if wasCancelled then- set status [text := "cancelled"]+ return () else do set status [text := "ready"] case val of Left err -> warningDialog win "Error" $ HP.prettyPrintError err Right txt -> set txtBox [text := txt]- set txtBox [enabled := True]- set btn prevAttrs+ set txtBox [enabled := True]+ set btn prevAttrs return ()--cancelHP :: HPS.ServerHandle -> Var Bool -> IO ()-cancelHP model cancelled = varSet cancelled True >> tryIn' model HP.cancel >> return () refreshExpr :: HPS.ServerHandle -> GUIContext -> Bool -> IO () refreshExpr model guiCtx@GUICtx{guiResults = GUIRes{resValue = grrValue,