Skip to content

Commit

Permalink
ui: refactor, try to clarify toggles' help
Browse files Browse the repository at this point in the history
Consistent ordering with most-used toggles first, more intuitive wording
  • Loading branch information
simonmichael committed Nov 4, 2018
1 parent 1e7760a commit 12d3ba6
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 42 deletions.
18 changes: 4 additions & 14 deletions hledger-ui/Hledger/UI/AccountsScreen.hs
Expand Up @@ -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")
Expand Down
19 changes: 4 additions & 15 deletions hledger-ui/Hledger/UI/RegisterScreen.hs
Expand Up @@ -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")
Expand Down
35 changes: 22 additions & 13 deletions hledger-ui/Hledger/UI/UIUtils.hs
Expand Up @@ -18,6 +18,7 @@ module Hledger.UI.UIUtils (
,moveRightEvents ,moveRightEvents
,moveUpEvents ,moveUpEvents
,normaliseMovementKeys ,normaliseMovementKeys
,renderToggle
,replaceHiddenAccountsNameWith ,replaceHiddenAccountsNameWith
,scrollSelectionToMiddle ,scrollSelectionToMiddle
) )
Expand Down Expand Up @@ -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 =
Expand All @@ -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 " "
Expand All @@ -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) $
Expand All @@ -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)")
Expand Down Expand Up @@ -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)
Expand All @@ -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.
Expand Down

0 comments on commit 12d3ba6

Please sign in to comment.