ui: distinguish regenerateScreens from journal reloading
This commit is contained in:
parent
4c18923c09
commit
1e93feeff3
@ -263,26 +263,26 @@ handleAccountsScreen st@AppState{
|
|||||||
Right j' -> continue $ reload j' d st'
|
Right j' -> continue $ reload j' d st'
|
||||||
Left err -> continue $ screenEnter d ES.screen{esState=err} st'
|
Left err -> continue $ screenEnter d ES.screen{esState=err} st'
|
||||||
|
|
||||||
Vty.EvKey (Vty.KChar '-') [] -> continue $ reload j d $ decDepth st'
|
Vty.EvKey (Vty.KChar '-') [] -> continue $ regenerateScreens j d $ decDepth st'
|
||||||
Vty.EvKey (Vty.KChar '+') [] -> continue $ reload j d $ incDepth st'
|
Vty.EvKey (Vty.KChar '+') [] -> continue $ regenerateScreens j d $ incDepth st'
|
||||||
Vty.EvKey (Vty.KChar '=') [] -> continue $ reload j d $ incDepth st'
|
Vty.EvKey (Vty.KChar '=') [] -> continue $ regenerateScreens j d $ incDepth st'
|
||||||
Vty.EvKey (Vty.KChar '1') [] -> continue $ reload j d $ setDepth 1 st'
|
Vty.EvKey (Vty.KChar '1') [] -> continue $ regenerateScreens j d $ setDepth 1 st'
|
||||||
Vty.EvKey (Vty.KChar '2') [] -> continue $ reload j d $ setDepth 2 st'
|
Vty.EvKey (Vty.KChar '2') [] -> continue $ regenerateScreens j d $ setDepth 2 st'
|
||||||
Vty.EvKey (Vty.KChar '3') [] -> continue $ reload j d $ setDepth 3 st'
|
Vty.EvKey (Vty.KChar '3') [] -> continue $ regenerateScreens j d $ setDepth 3 st'
|
||||||
Vty.EvKey (Vty.KChar '4') [] -> continue $ reload j d $ setDepth 4 st'
|
Vty.EvKey (Vty.KChar '4') [] -> continue $ regenerateScreens j d $ setDepth 4 st'
|
||||||
Vty.EvKey (Vty.KChar '5') [] -> continue $ reload j d $ setDepth 5 st'
|
Vty.EvKey (Vty.KChar '5') [] -> continue $ regenerateScreens j d $ setDepth 5 st'
|
||||||
Vty.EvKey (Vty.KChar '6') [] -> continue $ reload j d $ setDepth 6 st'
|
Vty.EvKey (Vty.KChar '6') [] -> continue $ regenerateScreens j d $ setDepth 6 st'
|
||||||
Vty.EvKey (Vty.KChar '7') [] -> continue $ reload j d $ setDepth 7 st'
|
Vty.EvKey (Vty.KChar '7') [] -> continue $ regenerateScreens j d $ setDepth 7 st'
|
||||||
Vty.EvKey (Vty.KChar '8') [] -> continue $ reload j d $ setDepth 8 st'
|
Vty.EvKey (Vty.KChar '8') [] -> continue $ regenerateScreens j d $ setDepth 8 st'
|
||||||
Vty.EvKey (Vty.KChar '9') [] -> continue $ reload j d $ setDepth 9 st'
|
Vty.EvKey (Vty.KChar '9') [] -> continue $ regenerateScreens j d $ setDepth 9 st'
|
||||||
Vty.EvKey (Vty.KChar '0') [] -> continue $ reload j d $ setDepth 0 st'
|
Vty.EvKey (Vty.KChar '0') [] -> continue $ regenerateScreens j d $ setDepth 0 st'
|
||||||
Vty.EvKey (Vty.KChar 'F') [] -> continue $ reload j d $ stToggleFlat st'
|
Vty.EvKey (Vty.KChar 'F') [] -> continue $ regenerateScreens j d $ stToggleFlat st'
|
||||||
Vty.EvKey (Vty.KChar 'E') [] -> scrollTop >> (continue $ reload j d $ stToggleEmpty st')
|
Vty.EvKey (Vty.KChar 'E') [] -> scrollTop >> (continue $ regenerateScreens j d $ stToggleEmpty st')
|
||||||
Vty.EvKey (Vty.KChar 'C') [] -> scrollTop >> (continue $ reload j d $ stToggleCleared st')
|
Vty.EvKey (Vty.KChar 'C') [] -> scrollTop >> (continue $ regenerateScreens j d $ stToggleCleared st')
|
||||||
Vty.EvKey (Vty.KChar 'U') [] -> scrollTop >> (continue $ reload j d $ stToggleUncleared st')
|
Vty.EvKey (Vty.KChar 'U') [] -> scrollTop >> (continue $ regenerateScreens j d $ stToggleUncleared st')
|
||||||
Vty.EvKey (Vty.KChar 'R') [] -> scrollTop >> (continue $ reload j d $ stToggleReal st')
|
Vty.EvKey (Vty.KChar 'R') [] -> scrollTop >> (continue $ regenerateScreens j d $ stToggleReal st')
|
||||||
Vty.EvKey k [] | k `elem` [Vty.KChar '/'] -> continue $ reload j d $ stShowMinibuffer st'
|
Vty.EvKey k [] | k `elem` [Vty.KChar '/'] -> continue $ regenerateScreens j d $ stShowMinibuffer st'
|
||||||
Vty.EvKey k [] | k `elem` [Vty.KBS, Vty.KDel] -> (continue $ reload j d $ stResetFilter st')
|
Vty.EvKey k [] | k `elem` [Vty.KBS, Vty.KDel] -> (continue $ regenerateScreens j d $ stResetFilter st')
|
||||||
Vty.EvKey (Vty.KLeft) [] -> continue $ popScreen st'
|
Vty.EvKey (Vty.KLeft) [] -> continue $ popScreen st'
|
||||||
Vty.EvKey (k) [] | k `elem` [Vty.KRight, Vty.KEnter] -> do
|
Vty.EvKey (k) [] | k `elem` [Vty.KRight, Vty.KEnter] -> do
|
||||||
let
|
let
|
||||||
@ -300,7 +300,7 @@ handleAccountsScreen st@AppState{
|
|||||||
Just ed ->
|
Just ed ->
|
||||||
case ev of
|
case ev of
|
||||||
Vty.EvKey Vty.KEsc [] -> continue $ stHideMinibuffer st'
|
Vty.EvKey Vty.KEsc [] -> continue $ stHideMinibuffer st'
|
||||||
Vty.EvKey Vty.KEnter [] -> continue $ reload j d $ stFilter s $ stHideMinibuffer st'
|
Vty.EvKey Vty.KEnter [] -> continue $ regenerateScreens j d $ stFilter s $ stHideMinibuffer st'
|
||||||
where s = chomp $ unlines $ getEditContents ed
|
where s = chomp $ unlines $ getEditContents ed
|
||||||
ev -> do ed' <- handleEvent ev ed
|
ev -> do ed' <- handleEvent ev ed
|
||||||
continue $ st'{aMinibuffer=Just ed'}
|
continue $ st'{aMinibuffer=Just ed'}
|
||||||
|
|||||||
@ -112,7 +112,7 @@ handleErrorScreen st@AppState{
|
|||||||
(ej, _) <- liftIO $ journalReloadIfChanged copts d j
|
(ej, _) <- liftIO $ journalReloadIfChanged copts d j
|
||||||
case ej of
|
case ej of
|
||||||
Left err -> continue st{aScreen=s{esState=err}} -- show latest parse error
|
Left err -> continue st{aScreen=s{esState=err}} -- show latest parse error
|
||||||
Right j' -> continue $ reload j' d $ popScreen st -- return to previous screen, and reload it
|
Right j' -> continue $ regenerateScreens j' d $ popScreen st -- return to previous screen, and reload it
|
||||||
|
|
||||||
-- Vty.EvKey (Vty.KLeft) [] -> continue $ popScreen st
|
-- Vty.EvKey (Vty.KLeft) [] -> continue $ popScreen st
|
||||||
-- Vty.EvKey (Vty.KRight) [] -> error (show curItem) where curItem = listSelectedElement is
|
-- Vty.EvKey (Vty.KRight) [] -> error (show curItem) where curItem = listSelectedElement is
|
||||||
|
|||||||
@ -235,15 +235,15 @@ handleRegisterScreen st@AppState{
|
|||||||
Vty.EvKey (Vty.KChar 'g') [] -> do
|
Vty.EvKey (Vty.KChar 'g') [] -> do
|
||||||
(ej, _) <- liftIO $ journalReloadIfChanged copts d j
|
(ej, _) <- liftIO $ journalReloadIfChanged copts d j
|
||||||
case ej of
|
case ej of
|
||||||
Right j' -> continue $ reload j' d st
|
Right j' -> continue $ regenerateScreens j' d st
|
||||||
Left err -> continue $ screenEnter d ES.screen{esState=err} st
|
Left err -> continue $ screenEnter d ES.screen{esState=err} st
|
||||||
|
|
||||||
Vty.EvKey (Vty.KChar 'E') [] -> scrollTop >> (continue $ reload j d $ stToggleEmpty st)
|
Vty.EvKey (Vty.KChar 'E') [] -> scrollTop >> (continue $ regenerateScreens j d $ stToggleEmpty st)
|
||||||
Vty.EvKey (Vty.KChar 'C') [] -> scrollTop >> (continue $ reload j d $ stToggleCleared st)
|
Vty.EvKey (Vty.KChar 'C') [] -> scrollTop >> (continue $ regenerateScreens j d $ stToggleCleared st)
|
||||||
Vty.EvKey (Vty.KChar 'U') [] -> scrollTop >> (continue $ reload j d $ stToggleUncleared st)
|
Vty.EvKey (Vty.KChar 'U') [] -> scrollTop >> (continue $ regenerateScreens j d $ stToggleUncleared st)
|
||||||
Vty.EvKey (Vty.KChar 'R') [] -> scrollTop >> (continue $ reload j d $ stToggleReal st)
|
Vty.EvKey (Vty.KChar 'R') [] -> scrollTop >> (continue $ regenerateScreens j d $ stToggleReal st)
|
||||||
Vty.EvKey k [] | k `elem` [Vty.KChar '/'] -> (continue $ reload j d $ stShowMinibuffer st)
|
Vty.EvKey k [] | k `elem` [Vty.KChar '/'] -> (continue $ regenerateScreens j d $ stShowMinibuffer st)
|
||||||
Vty.EvKey k [] | k `elem` [Vty.KBS, Vty.KDel] -> (continue $ reload j d $ stResetFilter st)
|
Vty.EvKey k [] | k `elem` [Vty.KBS, Vty.KDel] -> (continue $ regenerateScreens j d $ stResetFilter st)
|
||||||
Vty.EvKey (Vty.KLeft) [] -> continue $ popScreen st
|
Vty.EvKey (Vty.KLeft) [] -> continue $ popScreen st
|
||||||
|
|
||||||
Vty.EvKey (k) [] | k `elem` [Vty.KRight, Vty.KEnter] -> do
|
Vty.EvKey (k) [] | k `elem` [Vty.KRight, Vty.KEnter] -> do
|
||||||
@ -266,7 +266,7 @@ handleRegisterScreen st@AppState{
|
|||||||
Just ed ->
|
Just ed ->
|
||||||
case ev of
|
case ev of
|
||||||
Vty.EvKey Vty.KEsc [] -> continue $ stHideMinibuffer st
|
Vty.EvKey Vty.KEsc [] -> continue $ stHideMinibuffer st
|
||||||
Vty.EvKey Vty.KEnter [] -> continue $ reload j d $ stFilter s $ stHideMinibuffer st
|
Vty.EvKey Vty.KEnter [] -> continue $ regenerateScreens j d $ stFilter s $ stHideMinibuffer st
|
||||||
where s = chomp $ unlines $ getEditContents ed
|
where s = chomp $ unlines $ getEditContents ed
|
||||||
ev -> do ed' <- handleEvent ev ed
|
ev -> do ed' <- handleEvent ev ed
|
||||||
continue $ st{aMinibuffer=Just ed'}
|
continue $ st{aMinibuffer=Just ed'}
|
||||||
|
|||||||
@ -131,17 +131,17 @@ handleTransactionScreen st@AppState{
|
|||||||
| i > fst (last numberedts) -> last numberedts
|
| i > fst (last numberedts) -> last numberedts
|
||||||
| otherwise -> head numberedts
|
| otherwise -> head numberedts
|
||||||
st' = st{aScreen=s{tsState=((i',t'),numberedts,acct)}}
|
st' = st{aScreen=s{tsState=((i',t'),numberedts,acct)}}
|
||||||
continue $ reload j' d st'
|
continue $ regenerateScreens j' d st'
|
||||||
|
|
||||||
Left err -> continue $ screenEnter d ES.screen{esState=err} st
|
Left err -> continue $ screenEnter d ES.screen{esState=err} st
|
||||||
|
|
||||||
-- if allowing toggling here, we should refresh the txn list from the parent register screen
|
-- if allowing toggling here, we should refresh the txn list from the parent register screen
|
||||||
-- Vty.EvKey (Vty.KChar 'E') [] -> continue $ reload j d $ stToggleEmpty st
|
-- Vty.EvKey (Vty.KChar 'E') [] -> continue $ regenerateScreens j d $ stToggleEmpty st
|
||||||
-- Vty.EvKey (Vty.KChar 'C') [] -> continue $ reload j d $ stToggleCleared st
|
-- Vty.EvKey (Vty.KChar 'C') [] -> continue $ regenerateScreens j d $ stToggleCleared st
|
||||||
-- Vty.EvKey (Vty.KChar 'R') [] -> continue $ reload j d $ stToggleReal st
|
-- Vty.EvKey (Vty.KChar 'R') [] -> continue $ regenerateScreens j d $ stToggleReal st
|
||||||
|
|
||||||
Vty.EvKey (Vty.KUp) [] -> continue $ reload j d st{aScreen=s{tsState=((iprev,tprev),nts,acct)}}
|
Vty.EvKey (Vty.KUp) [] -> continue $ regenerateScreens j d st{aScreen=s{tsState=((iprev,tprev),nts,acct)}}
|
||||||
Vty.EvKey (Vty.KDown) [] -> continue $ reload j d st{aScreen=s{tsState=((inext,tnext),nts,acct)}}
|
Vty.EvKey (Vty.KDown) [] -> continue $ regenerateScreens j d st{aScreen=s{tsState=((inext,tnext),nts,acct)}}
|
||||||
|
|
||||||
Vty.EvKey (Vty.KLeft) [] -> continue st''
|
Vty.EvKey (Vty.KLeft) [] -> continue st''
|
||||||
where
|
where
|
||||||
|
|||||||
@ -5,7 +5,7 @@ module Hledger.UI.UIUtils (
|
|||||||
,popScreen
|
,popScreen
|
||||||
,resetScreens
|
,resetScreens
|
||||||
,screenEnter
|
,screenEnter
|
||||||
,reload
|
,regenerateScreens
|
||||||
,getViewportSize
|
,getViewportSize
|
||||||
-- ,margin
|
-- ,margin
|
||||||
,withBorderAttr
|
,withBorderAttr
|
||||||
@ -126,8 +126,8 @@ stShowMinibuffer st = st{aMinibuffer=Just e}
|
|||||||
stHideMinibuffer st = st{aMinibuffer=Nothing}
|
stHideMinibuffer st = st{aMinibuffer=Nothing}
|
||||||
|
|
||||||
-- | Regenerate the content for the current and previous screens, from a new journal and current date.
|
-- | Regenerate the content for the current and previous screens, from a new journal and current date.
|
||||||
reload :: Journal -> Day -> AppState -> AppState
|
regenerateScreens :: Journal -> Day -> AppState -> AppState
|
||||||
reload j d st@AppState{aScreen=s,aPrevScreens=ss} =
|
regenerateScreens j d st@AppState{aScreen=s,aPrevScreens=ss} =
|
||||||
-- XXX clumsy due to entanglement of AppState and Screen.
|
-- XXX clumsy due to entanglement of AppState and Screen.
|
||||||
-- sInitFn operates only on an appstate's current screen, so
|
-- sInitFn operates only on an appstate's current screen, so
|
||||||
-- remove all the screens from the appstate and then add them back
|
-- remove all the screens from the appstate and then add them back
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user