ui: 0 now limits depth to 0 instead of resetting it
This commit is contained in:
parent
dc6f39a859
commit
8b9f5e1cdf
@ -192,7 +192,7 @@ asDraw AppState{aopts=UIOpts{cliopts_=CliOpts{reportopts_=ropts}}
|
||||
("h", "help")
|
||||
,("right", "register")
|
||||
,("F", "flat?")
|
||||
,("-+=1234567890", "depth")
|
||||
,("-+0123456789", "depth")
|
||||
--,("/", "filter")
|
||||
--,("DEL", "unfilter")
|
||||
--,("ESC", "cancel/top")
|
||||
@ -271,19 +271,19 @@ asHandle st'@AppState{
|
||||
Vty.EvKey k [] | k `elem` [Vty.KChar 'h', Vty.KChar '?'] -> continue $ setMode Help st
|
||||
Vty.EvKey (Vty.KChar 'g') [] -> liftIO (stReloadJournalIfChanged copts d j st) >>= continue
|
||||
Vty.EvKey (Vty.KChar 'a') [] -> suspendAndResume $ clearScreen >> setCursorPosition 0 0 >> add copts j >> stReloadJournalIfChanged copts d j st
|
||||
Vty.EvKey (Vty.KChar '0') [] -> continue $ regenerateScreens j d $ setDepth (Just 0) st
|
||||
Vty.EvKey (Vty.KChar '1') [] -> continue $ regenerateScreens j d $ setDepth (Just 1) st
|
||||
Vty.EvKey (Vty.KChar '2') [] -> continue $ regenerateScreens j d $ setDepth (Just 2) st
|
||||
Vty.EvKey (Vty.KChar '3') [] -> continue $ regenerateScreens j d $ setDepth (Just 3) st
|
||||
Vty.EvKey (Vty.KChar '4') [] -> continue $ regenerateScreens j d $ setDepth (Just 4) st
|
||||
Vty.EvKey (Vty.KChar '5') [] -> continue $ regenerateScreens j d $ setDepth (Just 5) st
|
||||
Vty.EvKey (Vty.KChar '6') [] -> continue $ regenerateScreens j d $ setDepth (Just 6) st
|
||||
Vty.EvKey (Vty.KChar '7') [] -> continue $ regenerateScreens j d $ setDepth (Just 7) st
|
||||
Vty.EvKey (Vty.KChar '8') [] -> continue $ regenerateScreens j d $ setDepth (Just 8) st
|
||||
Vty.EvKey (Vty.KChar '9') [] -> continue $ regenerateScreens j d $ setDepth (Just 9) st
|
||||
Vty.EvKey (Vty.KChar '-') [] -> continue $ regenerateScreens j d $ decDepth st
|
||||
Vty.EvKey (Vty.KChar '+') [] -> continue $ regenerateScreens j d $ incDepth st
|
||||
Vty.EvKey (Vty.KChar '=') [] -> continue $ regenerateScreens j d $ incDepth st
|
||||
Vty.EvKey (Vty.KChar '1') [] -> continue $ regenerateScreens j d $ setDepth 1 st
|
||||
Vty.EvKey (Vty.KChar '2') [] -> continue $ regenerateScreens j d $ setDepth 2 st
|
||||
Vty.EvKey (Vty.KChar '3') [] -> continue $ regenerateScreens j d $ setDepth 3 st
|
||||
Vty.EvKey (Vty.KChar '4') [] -> continue $ regenerateScreens j d $ setDepth 4 st
|
||||
Vty.EvKey (Vty.KChar '5') [] -> continue $ regenerateScreens j d $ setDepth 5 st
|
||||
Vty.EvKey (Vty.KChar '6') [] -> continue $ regenerateScreens j d $ setDepth 6 st
|
||||
Vty.EvKey (Vty.KChar '7') [] -> continue $ regenerateScreens j d $ setDepth 7 st
|
||||
Vty.EvKey (Vty.KChar '8') [] -> continue $ regenerateScreens j d $ setDepth 8 st
|
||||
Vty.EvKey (Vty.KChar '9') [] -> continue $ regenerateScreens j d $ setDepth 9 st
|
||||
Vty.EvKey (Vty.KChar '0') [] -> continue $ regenerateScreens j d $ setDepth 0 st
|
||||
Vty.EvKey (Vty.KChar '_') [] -> continue $ regenerateScreens j d $ decDepth st
|
||||
Vty.EvKey k [] | k `elem` [Vty.KChar '+', Vty.KChar '='] -> continue $ regenerateScreens j d $ incDepth st
|
||||
Vty.EvKey (Vty.KChar 'F') [] -> continue $ regenerateScreens j d $ stToggleFlat st
|
||||
Vty.EvKey (Vty.KChar 'E') [] -> scrollTop >> (continue $ regenerateScreens j d $ stToggleEmpty st)
|
||||
Vty.EvKey (Vty.KChar 'C') [] -> scrollTop >> (continue $ regenerateScreens j d $ stToggleCleared st)
|
||||
|
||||
@ -113,8 +113,8 @@ stResetFilter st@AppState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportopts_=
|
||||
,query_=""
|
||||
}}}}
|
||||
|
||||
stResetDepth :: AppState -> AppState
|
||||
stResetDepth st@AppState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportopts_=ropts}}} =
|
||||
resetDepth :: AppState -> AppState
|
||||
resetDepth st@AppState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportopts_=ropts}}} =
|
||||
st{aopts=uopts{cliopts_=copts{reportopts_=ropts{depth_=Nothing}}}}
|
||||
|
||||
-- | Get the maximum account depth in the current journal.
|
||||
@ -139,20 +139,19 @@ incDepth st@AppState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportopts_=ropts
|
||||
inc (Just d) | d < (maxDepth st - 1) = Just $ d+1
|
||||
inc _ = Nothing
|
||||
|
||||
-- | Set the current depth limit to the specified depth, which should
|
||||
-- be a positive number. If it is zero, or equal to or greater than the
|
||||
-- current maximum account depth, the depth limit will be removed.
|
||||
-- (Slight inconsistency here: zero is currently a valid display depth
|
||||
-- which can be reached using the - key. But we need a key to remove
|
||||
-- the depth limit, and 0 is it.)
|
||||
setDepth :: Int -> AppState -> AppState
|
||||
setDepth depth st@AppState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportopts_=ropts}}}
|
||||
-- | Set the current depth limit to the specified depth, or remove the depth limit.
|
||||
-- Also remove the depth limit if the specified depth is greater than the current
|
||||
-- maximum account depth. If the specified depth is negative, reset the depth limit
|
||||
-- to whatever was specified at startup.
|
||||
setDepth :: Maybe Int -> AppState -> AppState
|
||||
setDepth mdepth st@AppState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportopts_=ropts}}}
|
||||
= st{aopts=uopts{cliopts_=copts{reportopts_=ropts{depth_=mdepth'}}}}
|
||||
where
|
||||
mdepth' | depth < 0 = depth_ ropts
|
||||
| depth == 0 = Nothing
|
||||
| depth >= maxDepth st = Nothing
|
||||
| otherwise = Just depth
|
||||
mdepth' = case mdepth of
|
||||
Nothing -> Nothing
|
||||
Just d | d < 0 -> depth_ ropts
|
||||
| d >= maxDepth st -> Nothing
|
||||
| otherwise -> mdepth
|
||||
|
||||
-- | Open the minibuffer, setting its content to the current query with the cursor at the end.
|
||||
stShowMinibuffer st = setMode (Minibuffer e) st
|
||||
@ -192,7 +191,7 @@ popScreen st = st
|
||||
|
||||
resetScreens :: Day -> AppState -> AppState
|
||||
resetScreens d st@AppState{aScreen=s,aPrevScreens=ss} =
|
||||
(sInit topscreen) d True $ stResetDepth $ stResetFilter $ stCloseMinibuffer st{aScreen=topscreen, aPrevScreens=[]}
|
||||
(sInit topscreen) d True $ resetDepth $ stResetFilter $ stCloseMinibuffer st{aScreen=topscreen, aPrevScreens=[]}
|
||||
where
|
||||
topscreen = case ss of _:_ -> last ss
|
||||
[] -> s
|
||||
@ -243,8 +242,8 @@ helpDialog =
|
||||
,str " "
|
||||
,str "accounts screen:"
|
||||
,renderKey ("F", "toggle flat mode")
|
||||
,renderKey ("-+=1234567890", "")
|
||||
,str " adjust/set/remove depth limit"
|
||||
,renderKey ("-+0123456789", "")
|
||||
,str " adjust/set depth limit"
|
||||
]
|
||||
)
|
||||
]
|
||||
|
||||
@ -267,9 +267,10 @@ When not in flat mode, indentation indicates the account hierarchy.
|
||||
By default, all subaccounts are displayed.
|
||||
To see less detail, set a depth limit by pressing a number key,
|
||||
\f[C]1\f[] to \f[C]9\f[].
|
||||
Or, adjust the depth limit by pressing \f[C]\-\f[] or \f[C]+\f[]
|
||||
(\f[C]=\f[] also works).
|
||||
\f[C]0\f[] removes the depth limit.
|
||||
\f[C]0\f[] shows even less detail, collapsing all accounts to a single
|
||||
total.
|
||||
\f[C]\-\f[] and \f[C]+\f[] decrease and increase the depth limit.
|
||||
To remove the depth limit press \f[C]=\f[], or just keep increasing it.
|
||||
.PP
|
||||
\f[C]C\f[] toggles cleared mode, in which uncleared transactions and
|
||||
postings are not shown.
|
||||
|
||||
@ -212,9 +212,10 @@ matched transactions.
|
||||
`F' toggles flat mode on and off.
|
||||
|
||||
By default, all subaccounts are displayed. To see less detail, set a
|
||||
depth limit by pressing a number key, `1' to `9'. Or, adjust the depth
|
||||
limit by pressing `-' or `+' (`=' also works). `0' removes the depth
|
||||
limit.
|
||||
depth limit by pressing a number key, `1' to `9'. `0' shows even less
|
||||
detail, collapsing all accounts to a single total. `-' and `+'
|
||||
decrease and increase the depth limit. To remove the depth limit press
|
||||
`=', or just keep increasing it.
|
||||
|
||||
`C' toggles cleared mode, in which uncleared transactions and
|
||||
postings are not shown. `U' toggles uncleared mode, in which only
|
||||
@ -330,11 +331,11 @@ Node: SCREENS5098
|
||||
Ref: #screens5185
|
||||
Node: Accounts screen5275
|
||||
Ref: #accounts-screen5405
|
||||
Node: Register screen6509
|
||||
Ref: #register-screen6666
|
||||
Node: Transaction screen8419
|
||||
Ref: #transaction-screen8579
|
||||
Node: Error screen9446
|
||||
Ref: #error-screen9570
|
||||
Node: Register screen6599
|
||||
Ref: #register-screen6756
|
||||
Node: Transaction screen8509
|
||||
Ref: #transaction-screen8669
|
||||
Node: Error screen9536
|
||||
Ref: #error-screen9660
|
||||
|
||||
End Tag Table
|
||||
|
||||
@ -118,8 +118,9 @@ When not in flat mode, indentation indicates the account hierarchy. `F` toggles
|
||||
|
||||
By default, all subaccounts are displayed.
|
||||
To see less detail, set a depth limit by pressing a number key, `1` to `9`.
|
||||
Or, adjust the depth limit by pressing `-` or `+` (`=` also works).
|
||||
`0` removes the depth limit.
|
||||
`0` shows even less detail, collapsing all accounts to a single total.
|
||||
`-` and `+` (or `=`) decrease and increase the depth limit.
|
||||
To remove the depth limit, set it higher than the maximum account depth, or press `ESCAPE`.
|
||||
|
||||
`C` toggles cleared mode, in which
|
||||
[uncleared transactions and postings](/journal.html#transactions) are
|
||||
|
||||
@ -183,8 +183,10 @@ SSCCRREEEENNSS
|
||||
toggles flat mode on and off.
|
||||
|
||||
By default, all subaccounts are displayed. To see less detail, set a
|
||||
depth limit by pressing a number key, 1 to 9. Or, adjust the depth
|
||||
limit by pressing - or + (= also works). 0 removes the depth limit.
|
||||
depth limit by pressing a number key, 1 to 9. 0 shows even less
|
||||
detail, collapsing all accounts to a single total. - and + decrease
|
||||
and increase the depth limit. To remove the depth limit press =, or
|
||||
just keep increasing it.
|
||||
|
||||
C toggles cleared mode, in which uncleared transactions and postings
|
||||
are not shown. U toggles uncleared mode, in which only uncleared
|
||||
|
||||
Loading…
Reference in New Issue
Block a user