diff --git a/hledger-ui/Hledger/UI/AccountsScreen.hs b/hledger-ui/Hledger/UI/AccountsScreen.hs index 616d0283963..f27efc919ab 100644 --- a/hledger-ui/Hledger/UI/AccountsScreen.hs +++ b/hledger-ui/Hledger/UI/AccountsScreen.hs @@ -216,23 +216,13 @@ asDraw UIState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportopts_=ropts}} Minibuffer ed -> minibuffer ed _ -> quickhelp where - selectedstr = withAttr ("border" <> "selected") . str quickhelp = borderKeysStr' [ ("?", str "help") - ,("RIGHT", str "register") - ,("H" - ,if ishistorical - then selectedstr "historical" <+> str "/period" - else str "historical/" <+> selectedstr "period") - ,("T" - ,if tree_ ropts - then str "flat/" <+> selectedstr "tree" - else selectedstr "flat" <+> str "/tree") - ,("F" - ,if presentorfuture_ uopts == PFFuture - then str "present/" <+> selectedstr "future" - else selectedstr "present" <+> str "/future") +-- ,("RIGHT", str "register") ,("-+", str "depth") + ,("T", renderToggle (tree_ ropts) "flat" "tree") + ,("H", renderToggle (not ishistorical) "end-bals" "changes") + ,("F", renderToggle (presentorfuture_ uopts == PFFuture) "present" "future") --,("/", "filter") --,("DEL", "unfilter") --,("ESC", "cancel/top") diff --git a/hledger-ui/Hledger/UI/RegisterScreen.hs b/hledger-ui/Hledger/UI/RegisterScreen.hs index 6881276f064..0b689e8b319 100644 --- a/hledger-ui/Hledger/UI/RegisterScreen.hs +++ b/hledger-ui/Hledger/UI/RegisterScreen.hs @@ -225,24 +225,13 @@ rsDraw UIState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportopts_=ropts}} Minibuffer ed -> minibuffer ed _ -> quickhelp where - selectedstr = withAttr ("border" <> "query") . str quickhelp = borderKeysStr' [ ("?", str "help") ,("LEFT", str "back") - ,("RIGHT", str "transaction") - ,("H" - ,if ishistorical - then selectedstr "historical" <+> str "/period" - else str "historical/" <+> selectedstr "period") - ,("T" - -- rsForceInclusive may override, but use tree_ here to ensure a visible toggle effect - ,if tree_ ropts - then str "flat/" <+> selectedstr "tree" - else selectedstr "flat" <+> str "/tree") - ,("F" - ,if presentorfuture_ uopts == PFFuture - then str "present/" <+> selectedstr "future" - else selectedstr "present" <+> str "/future") +-- ,("RIGHT", str "transaction") + ,("T", renderToggle (tree_ ropts) "flat(-subs)" "tree(+subs)") -- rsForceInclusive may override, but use tree_ to ensure a visible toggle effect + ,("H", renderToggle (not ishistorical) "historical" "period") + ,("F", renderToggle (presentorfuture_ uopts == PFFuture) "present" "future") -- ,("a", "add") -- ,("g", "reload") -- ,("q", "quit") diff --git a/hledger-ui/Hledger/UI/UIUtils.hs b/hledger-ui/Hledger/UI/UIUtils.hs index b862b063949..0d529c5b1ba 100644 --- a/hledger-ui/Hledger/UI/UIUtils.hs +++ b/hledger-ui/Hledger/UI/UIUtils.hs @@ -18,6 +18,7 @@ module Hledger.UI.UIUtils ( ,moveRightEvents ,moveUpEvents ,normaliseMovementKeys + ,renderToggle ,replaceHiddenAccountsNameWith ,scrollSelectionToMiddle ) @@ -48,6 +49,15 @@ import Hledger.UI.UIState -- ui +-- | Wrap a widget in the default hledger-ui screen layout. +defaultLayout :: Widget Name -> Widget Name -> Widget Name -> Widget Name +defaultLayout toplabel bottomlabel = + topBottomBorderWithLabels (str " "<+>toplabel<+>str " ") (str " "<+>bottomlabel<+>str " ") . + margin 1 0 Nothing + -- topBottomBorderWithLabel2 label . + -- padLeftRight 1 -- XXX should reduce inner widget's width by 2, but doesn't + -- "the layout adjusts... if you use the core combinators" + -- | Draw the help dialog, called when help mode is active. helpDialog :: CliOpts -> Widget Name helpDialog _copts = @@ -64,7 +74,7 @@ helpDialog _copts = withAttr ("help" <> "heading") $ str "Navigation" ,renderKey ("UP/DOWN/PUP/PDN/HOME/END/emacs/vi keys", "") ,str " move selection" - ,renderKey ("RIGHT", "show more detail") + ,renderKey ("RIGHT", "show account txns, txn detail") ,renderKey ("LEFT ", "go back") ,renderKey ("ESC ", "cancel or reset") ,str " " @@ -76,11 +86,11 @@ helpDialog _copts = ,withAttr ("help" <> "heading") $ str "Accounts screen" ,renderKey ("-+0123456789 ", "set depth limit") ,renderKey ("T ", "toggle tree/flat mode") - ,renderKey ("H ", "period change/historical end balance") + ,renderKey ("H ", "historical end balance/period change") ,str " " ,withAttr ("help" <> "heading") $ str "Register screen" ,renderKey ("T ", "toggle subaccount txns\n(and accounts screen tree/flat mode)") - ,renderKey ("H ", "show period total/historical total") + ,renderKey ("H ", "show historical total/period total") ,str " " ] ,padLeft (Pad 1) $ padRight (Pad 0) $ @@ -95,7 +105,7 @@ helpDialog _copts = ,str " " ,withAttr ("help" <> "heading") $ str "Help" ,renderKey ("? ", "toggle this help") - ,renderKey ("pmi ", "(with help showing)\nshow manual in pager/man/info") + ,renderKey ("pmi ", "(with this help open)\nshow manual in pager/man/info") ,str " " ,withAttr ("help" <> "heading") $ str "Other" ,renderKey ("a ", "add transaction (hledger add)") @@ -149,15 +159,6 @@ minibuffer ed = [txt "filter: ", renderEditor True ed] #endif --- | Wrap a widget in the default hledger-ui screen layout. -defaultLayout :: Widget Name -> Widget Name -> Widget Name -> Widget Name -defaultLayout toplabel bottomlabel = - topBottomBorderWithLabels (str " "<+>toplabel<+>str " ") (str " "<+>bottomlabel<+>str " ") . - margin 1 0 Nothing - -- topBottomBorderWithLabel2 label . - -- padLeftRight 1 -- XXX should reduce inner widget's width by 2, but doesn't - -- "the layout adjusts... if you use the core combinators" - borderQueryStr :: String -> Widget Name borderQueryStr "" = str "" borderQueryStr qry = str " matching " <+> withAttr ("border" <> "query") (str qry) @@ -182,6 +183,14 @@ borderKeysStr' keydescs = -- sep = str " | " sep = str " " +-- | Render the two states of a toggle, highlighting the active one. +renderToggle :: Bool -> String -> String -> Widget Name +renderToggle isright l r = + let bold = withAttr ("border" <> "selected") in + if isright + then str (l++"/") <+> bold (str r) + else bold (str l) <+> str ("/"++r) + -- temporary shenanigans: -- | Convert the special account name "*" (from balance report with depth limit 0) to something clearer.