ui: refactor, try to clarify toggles' help

Consistent ordering with most-used toggles first, more intuitive wording
This commit is contained in:
Simon Michael 2018-11-04 13:27:50 -08:00
parent 1e7760a2c7
commit 12d3ba6fc0
3 changed files with 30 additions and 42 deletions

View File

@ -216,23 +216,13 @@ asDraw UIState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportopts_=ropts}}
Minibuffer ed -> minibuffer ed Minibuffer ed -> minibuffer ed
_ -> quickhelp _ -> quickhelp
where where
selectedstr = withAttr ("border" <> "selected") . str
quickhelp = borderKeysStr' [ quickhelp = borderKeysStr' [
("?", str "help") ("?", str "help")
,("RIGHT", str "register") -- ,("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")
,("-+", str "depth") ,("-+", str "depth")
,("T", renderToggle (tree_ ropts) "flat" "tree")
,("H", renderToggle (not ishistorical) "end-bals" "changes")
,("F", renderToggle (presentorfuture_ uopts == PFFuture) "present" "future")
--,("/", "filter") --,("/", "filter")
--,("DEL", "unfilter") --,("DEL", "unfilter")
--,("ESC", "cancel/top") --,("ESC", "cancel/top")

View File

@ -225,24 +225,13 @@ rsDraw UIState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportopts_=ropts}}
Minibuffer ed -> minibuffer ed Minibuffer ed -> minibuffer ed
_ -> quickhelp _ -> quickhelp
where where
selectedstr = withAttr ("border" <> "query") . str
quickhelp = borderKeysStr' [ quickhelp = borderKeysStr' [
("?", str "help") ("?", str "help")
,("LEFT", str "back") ,("LEFT", str "back")
,("RIGHT", str "transaction") -- ,("RIGHT", str "transaction")
,("H" ,("T", renderToggle (tree_ ropts) "flat(-subs)" "tree(+subs)") -- rsForceInclusive may override, but use tree_ to ensure a visible toggle effect
,if ishistorical ,("H", renderToggle (not ishistorical) "historical" "period")
then selectedstr "historical" <+> str "/period" ,("F", renderToggle (presentorfuture_ uopts == PFFuture) "present" "future")
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")
-- ,("a", "add") -- ,("a", "add")
-- ,("g", "reload") -- ,("g", "reload")
-- ,("q", "quit") -- ,("q", "quit")

View File

@ -18,6 +18,7 @@ module Hledger.UI.UIUtils (
,moveRightEvents ,moveRightEvents
,moveUpEvents ,moveUpEvents
,normaliseMovementKeys ,normaliseMovementKeys
,renderToggle
,replaceHiddenAccountsNameWith ,replaceHiddenAccountsNameWith
,scrollSelectionToMiddle ,scrollSelectionToMiddle
) )
@ -48,6 +49,15 @@ import Hledger.UI.UIState
-- ui -- 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. -- | Draw the help dialog, called when help mode is active.
helpDialog :: CliOpts -> Widget Name helpDialog :: CliOpts -> Widget Name
helpDialog _copts = helpDialog _copts =
@ -64,7 +74,7 @@ helpDialog _copts =
withAttr ("help" <> "heading") $ str "Navigation" withAttr ("help" <> "heading") $ str "Navigation"
,renderKey ("UP/DOWN/PUP/PDN/HOME/END/emacs/vi keys", "") ,renderKey ("UP/DOWN/PUP/PDN/HOME/END/emacs/vi keys", "")
,str " move selection" ,str " move selection"
,renderKey ("RIGHT", "show more detail") ,renderKey ("RIGHT", "show account txns, txn detail")
,renderKey ("LEFT ", "go back") ,renderKey ("LEFT ", "go back")
,renderKey ("ESC ", "cancel or reset") ,renderKey ("ESC ", "cancel or reset")
,str " " ,str " "
@ -76,11 +86,11 @@ helpDialog _copts =
,withAttr ("help" <> "heading") $ str "Accounts screen" ,withAttr ("help" <> "heading") $ str "Accounts screen"
,renderKey ("-+0123456789 ", "set depth limit") ,renderKey ("-+0123456789 ", "set depth limit")
,renderKey ("T ", "toggle tree/flat mode") ,renderKey ("T ", "toggle tree/flat mode")
,renderKey ("H ", "period change/historical end balance") ,renderKey ("H ", "historical end balance/period change")
,str " " ,str " "
,withAttr ("help" <> "heading") $ str "Register screen" ,withAttr ("help" <> "heading") $ str "Register screen"
,renderKey ("T ", "toggle subaccount txns\n(and accounts screen tree/flat mode)") ,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 " " ,str " "
] ]
,padLeft (Pad 1) $ padRight (Pad 0) $ ,padLeft (Pad 1) $ padRight (Pad 0) $
@ -95,7 +105,7 @@ helpDialog _copts =
,str " " ,str " "
,withAttr ("help" <> "heading") $ str "Help" ,withAttr ("help" <> "heading") $ str "Help"
,renderKey ("? ", "toggle this 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 " " ,str " "
,withAttr ("help" <> "heading") $ str "Other" ,withAttr ("help" <> "heading") $ str "Other"
,renderKey ("a ", "add transaction (hledger add)") ,renderKey ("a ", "add transaction (hledger add)")
@ -149,15 +159,6 @@ minibuffer ed =
[txt "filter: ", renderEditor True ed] [txt "filter: ", renderEditor True ed]
#endif #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 :: String -> Widget Name
borderQueryStr "" = str "" borderQueryStr "" = str ""
borderQueryStr qry = str " matching " <+> withAttr ("border" <> "query") (str qry) borderQueryStr qry = str " matching " <+> withAttr ("border" <> "query") (str qry)
@ -182,6 +183,14 @@ borderKeysStr' keydescs =
-- sep = str " | " -- sep = str " | "
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: -- temporary shenanigans:
-- | Convert the special account name "*" (from balance report with depth limit 0) to something clearer. -- | Convert the special account name "*" (from balance report with depth limit 0) to something clearer.