From 7a4c45aa4aa7001ef0328e023d118e3ff740f546 Mon Sep 17 00:00:00 2001 From: Simon Michael Date: Mon, 20 Jun 2016 11:09:12 -0700 Subject: [PATCH] ui: basic manual integration --- hledger-ui/Hledger/UI/UIUtils.hs | 89 ++++++++++++++++++++------------ 1 file changed, 56 insertions(+), 33 deletions(-) diff --git a/hledger-ui/Hledger/UI/UIUtils.hs b/hledger-ui/Hledger/UI/UIUtils.hs index ca1a5dcd1..9b41efae7 100644 --- a/hledger-ui/Hledger/UI/UIUtils.hs +++ b/hledger-ui/Hledger/UI/UIUtils.hs @@ -8,17 +8,24 @@ where import Brick import Brick.Widgets.Border import Brick.Widgets.Border.Style +import Brick.Widgets.Center import Brick.Widgets.Dialog import Brick.Widgets.Edit import Data.List import Data.Monoid import Graphics.Vty import Lens.Micro.Platform +import System.Process import Hledger import Hledger.UI.UITypes import Hledger.UI.UIState + +runInfo = runCommand "hledger-ui --info" >>= waitForProcess +runMan = runCommand "hledger-ui --man" >>= waitForProcess +runHelp = runCommand "hledger-ui --help | less" >>= waitForProcess + -- ui -- | Draw the help dialog, called when help mode is active. @@ -29,39 +36,52 @@ helpDialog = render $ renderDialog (dialog "help" (Just "Help (h/ESC to close)") Nothing (c^.availWidthL - 2)) $ -- (Just (0,[("ok",())])) padTopBottom 1 $ padLeftRight 1 $ - hBox [ - (padLeftRight 1 $ - vBox [ - str "MISC" - ,renderKey ("h", "toggle help") - ,renderKey ("a", "add transaction") - ,renderKey ("E", "open editor") - ,renderKey ("g", "reload data") - ,renderKey ("q", "quit") - ,str " " - ,str "NAVIGATION" - ,renderKey ("UP/DOWN/PGUP/PGDN/HOME/END", "") - ,str " move selection" - ,renderKey ("RIGHT/ENTER", "drill down") - ,renderKey ("LEFT", "previous screen") - ,renderKey ("ESC", "cancel / reset") + vBox [ + hBox [ + padLeftRight 1 $ + vBox [ + str "MISC" + ,renderKey ("h", "toggle help") + ,renderKey ("a", "add transaction") + ,renderKey ("E", "open editor") + ,renderKey ("g", "reload data") + ,renderKey ("q", "quit") + ,str " " + ,str "NAVIGATION" + ,renderKey ("UP/DOWN/PGUP/PGDN/HOME/END", "") + ,str " move selection" + ,renderKey ("RIGHT/ENTER", "drill down") + ,renderKey ("LEFT", "previous screen") + ,renderKey ("ESC", "cancel / reset") + ] + ,padLeftRight 1 $ + vBox [ + str "FILTERING" + ,renderKey ("/", "set a filter query") + ,renderKey ("C", "toggle cleared filter") + ,renderKey ("U", "toggle uncleared filter") + ,renderKey ("R", "toggle real filter") + ,renderKey ("Z", "toggle nonzero filter") + ,renderKey ("F", "toggle flat/exclusive mode") + ,renderKey ("DEL/BS", "remove filters") + ,str "accounts screen:" + ,renderKey ("-+0123456789", "set depth limit") + ] + ] + ,vBox [ + str " " + ,hCenter $ padLeftRight 1 $ + hCenter (str "MANUAL") + <=> + hCenter (hBox [ + renderKey ("t", "text") + ,str " " + ,renderKey ("m", "man page") + ,str " " + ,renderKey ("i", "info") + ]) ] - ) - ,(padLeftRight 1 $ - vBox [ - str "FILTERING" - ,renderKey ("/", "set a filter query") - ,renderKey ("C", "toggle cleared filter") - ,renderKey ("U", "toggle uncleared filter") - ,renderKey ("R", "toggle real filter") - ,renderKey ("Z", "toggle nonzero filter") - ,renderKey ("F", "toggle flat/exclusive mode") - ,renderKey ("DEL/BS", "remove filters") - ,str "accounts screen:" - ,renderKey ("-+0123456789", "set depth limit") - ] - ) - ] + ] where renderKey (key,desc) = withAttr (borderAttr <> "keys") (str key) <+> str " " <+> str desc @@ -69,7 +89,10 @@ helpDialog = helpHandle :: UIState -> Event -> EventM (Next UIState) helpHandle ui ev = case ev of - EvKey k [] | k `elem` [KEsc, KChar 'h'] -> continue $ setMode Normal ui + EvKey k [] | k `elem` [KEsc, KChar 'h', KChar '?'] -> continue $ setMode Normal ui + EvKey (KChar 't') [] -> suspendAndResume $ runHelp >> return (setMode Normal ui) + EvKey (KChar 'm') [] -> suspendAndResume $ runMan >> return (setMode Normal ui) + EvKey (KChar 'i') [] -> suspendAndResume $ runInfo >> return (setMode Normal ui) _ -> continue ui -- | Draw the minibuffer.