From 1e93feeff32c9165f347d8856047563b85ddd034 Mon Sep 17 00:00:00 2001 From: Simon Michael Date: Wed, 8 Jun 2016 10:42:11 -0700 Subject: [PATCH] ui: distinguish regenerateScreens from journal reloading --- hledger-ui/Hledger/UI/AccountsScreen.hs | 42 +++++++++++----------- hledger-ui/Hledger/UI/ErrorScreen.hs | 2 +- hledger-ui/Hledger/UI/RegisterScreen.hs | 16 ++++----- hledger-ui/Hledger/UI/TransactionScreen.hs | 12 +++---- hledger-ui/Hledger/UI/UIUtils.hs | 6 ++-- 5 files changed, 39 insertions(+), 39 deletions(-) diff --git a/hledger-ui/Hledger/UI/AccountsScreen.hs b/hledger-ui/Hledger/UI/AccountsScreen.hs index 1fab87ac0..a4be7530b 100644 --- a/hledger-ui/Hledger/UI/AccountsScreen.hs +++ b/hledger-ui/Hledger/UI/AccountsScreen.hs @@ -263,26 +263,26 @@ handleAccountsScreen st@AppState{ Right j' -> continue $ reload j' d 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 $ reload j d $ incDepth st' - Vty.EvKey (Vty.KChar '=') [] -> continue $ reload j d $ incDepth st' - Vty.EvKey (Vty.KChar '1') [] -> continue $ reload j d $ setDepth 1 st' - Vty.EvKey (Vty.KChar '2') [] -> continue $ reload j d $ setDepth 2 st' - Vty.EvKey (Vty.KChar '3') [] -> continue $ reload j d $ setDepth 3 st' - Vty.EvKey (Vty.KChar '4') [] -> continue $ reload j d $ setDepth 4 st' - Vty.EvKey (Vty.KChar '5') [] -> continue $ reload j d $ setDepth 5 st' - Vty.EvKey (Vty.KChar '6') [] -> continue $ reload j d $ setDepth 6 st' - Vty.EvKey (Vty.KChar '7') [] -> continue $ reload j d $ setDepth 7 st' - Vty.EvKey (Vty.KChar '8') [] -> continue $ reload j d $ setDepth 8 st' - Vty.EvKey (Vty.KChar '9') [] -> continue $ reload j d $ setDepth 9 st' - Vty.EvKey (Vty.KChar '0') [] -> continue $ reload j d $ setDepth 0 st' - Vty.EvKey (Vty.KChar 'F') [] -> continue $ reload j d $ stToggleFlat st' - Vty.EvKey (Vty.KChar 'E') [] -> scrollTop >> (continue $ reload j d $ stToggleEmpty st') - Vty.EvKey (Vty.KChar 'C') [] -> scrollTop >> (continue $ reload j d $ stToggleCleared st') - Vty.EvKey (Vty.KChar 'U') [] -> scrollTop >> (continue $ reload j d $ stToggleUncleared st') - Vty.EvKey (Vty.KChar 'R') [] -> scrollTop >> (continue $ reload j d $ stToggleReal st') - Vty.EvKey k [] | k `elem` [Vty.KChar '/'] -> continue $ reload j d $ stShowMinibuffer st' - Vty.EvKey k [] | k `elem` [Vty.KBS, Vty.KDel] -> (continue $ reload j d $ stResetFilter 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 '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') + Vty.EvKey (Vty.KChar 'U') [] -> scrollTop >> (continue $ regenerateScreens j d $ stToggleUncleared st') + Vty.EvKey (Vty.KChar 'R') [] -> scrollTop >> (continue $ regenerateScreens j d $ stToggleReal st') + Vty.EvKey k [] | k `elem` [Vty.KChar '/'] -> continue $ regenerateScreens j d $ stShowMinibuffer 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 (k) [] | k `elem` [Vty.KRight, Vty.KEnter] -> do let @@ -300,7 +300,7 @@ handleAccountsScreen st@AppState{ Just ed -> case ev of 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 ev -> do ed' <- handleEvent ev ed continue $ st'{aMinibuffer=Just ed'} diff --git a/hledger-ui/Hledger/UI/ErrorScreen.hs b/hledger-ui/Hledger/UI/ErrorScreen.hs index c5351c93a..216d2653b 100644 --- a/hledger-ui/Hledger/UI/ErrorScreen.hs +++ b/hledger-ui/Hledger/UI/ErrorScreen.hs @@ -112,7 +112,7 @@ handleErrorScreen st@AppState{ (ej, _) <- liftIO $ journalReloadIfChanged copts d j case ej of 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.KRight) [] -> error (show curItem) where curItem = listSelectedElement is diff --git a/hledger-ui/Hledger/UI/RegisterScreen.hs b/hledger-ui/Hledger/UI/RegisterScreen.hs index c67024def..f4953c20f 100644 --- a/hledger-ui/Hledger/UI/RegisterScreen.hs +++ b/hledger-ui/Hledger/UI/RegisterScreen.hs @@ -235,15 +235,15 @@ handleRegisterScreen st@AppState{ Vty.EvKey (Vty.KChar 'g') [] -> do (ej, _) <- liftIO $ journalReloadIfChanged copts d j 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 - Vty.EvKey (Vty.KChar 'E') [] -> scrollTop >> (continue $ reload j d $ stToggleEmpty st) - Vty.EvKey (Vty.KChar 'C') [] -> scrollTop >> (continue $ reload j d $ stToggleCleared st) - Vty.EvKey (Vty.KChar 'U') [] -> scrollTop >> (continue $ reload j d $ stToggleUncleared st) - Vty.EvKey (Vty.KChar 'R') [] -> scrollTop >> (continue $ reload j d $ stToggleReal st) - Vty.EvKey k [] | k `elem` [Vty.KChar '/'] -> (continue $ reload j d $ stShowMinibuffer st) - Vty.EvKey k [] | k `elem` [Vty.KBS, Vty.KDel] -> (continue $ reload j d $ stResetFilter 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) + Vty.EvKey (Vty.KChar 'U') [] -> scrollTop >> (continue $ regenerateScreens j d $ stToggleUncleared st) + Vty.EvKey (Vty.KChar 'R') [] -> scrollTop >> (continue $ regenerateScreens j d $ stToggleReal st) + Vty.EvKey k [] | k `elem` [Vty.KChar '/'] -> (continue $ regenerateScreens j d $ stShowMinibuffer 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 (k) [] | k `elem` [Vty.KRight, Vty.KEnter] -> do @@ -266,7 +266,7 @@ handleRegisterScreen st@AppState{ Just ed -> case ev of 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 ev -> do ed' <- handleEvent ev ed continue $ st{aMinibuffer=Just ed'} diff --git a/hledger-ui/Hledger/UI/TransactionScreen.hs b/hledger-ui/Hledger/UI/TransactionScreen.hs index 4b68bbf55..7a021d367 100644 --- a/hledger-ui/Hledger/UI/TransactionScreen.hs +++ b/hledger-ui/Hledger/UI/TransactionScreen.hs @@ -131,17 +131,17 @@ handleTransactionScreen st@AppState{ | i > fst (last numberedts) -> last numberedts | otherwise -> head numberedts 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 -- 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 'C') [] -> continue $ reload j d $ stToggleCleared st - -- Vty.EvKey (Vty.KChar 'R') [] -> continue $ reload j d $ stToggleReal st + -- Vty.EvKey (Vty.KChar 'E') [] -> continue $ regenerateScreens j d $ stToggleEmpty st + -- Vty.EvKey (Vty.KChar 'C') [] -> continue $ regenerateScreens j d $ stToggleCleared 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.KDown) [] -> continue $ reload j d st{aScreen=s{tsState=((inext,tnext),nts,acct)}} + Vty.EvKey (Vty.KUp) [] -> continue $ regenerateScreens j d st{aScreen=s{tsState=((iprev,tprev),nts,acct)}} + Vty.EvKey (Vty.KDown) [] -> continue $ regenerateScreens j d st{aScreen=s{tsState=((inext,tnext),nts,acct)}} Vty.EvKey (Vty.KLeft) [] -> continue st'' where diff --git a/hledger-ui/Hledger/UI/UIUtils.hs b/hledger-ui/Hledger/UI/UIUtils.hs index 2bc2e5918..1652c949c 100644 --- a/hledger-ui/Hledger/UI/UIUtils.hs +++ b/hledger-ui/Hledger/UI/UIUtils.hs @@ -5,7 +5,7 @@ module Hledger.UI.UIUtils ( ,popScreen ,resetScreens ,screenEnter - ,reload + ,regenerateScreens ,getViewportSize -- ,margin ,withBorderAttr @@ -126,8 +126,8 @@ stShowMinibuffer st = st{aMinibuffer=Just e} stHideMinibuffer st = st{aMinibuffer=Nothing} -- | Regenerate the content for the current and previous screens, from a new journal and current date. -reload :: Journal -> Day -> AppState -> AppState -reload j d st@AppState{aScreen=s,aPrevScreens=ss} = +regenerateScreens :: Journal -> Day -> AppState -> AppState +regenerateScreens j d st@AppState{aScreen=s,aPrevScreens=ss} = -- XXX clumsy due to entanglement of AppState and Screen. -- sInitFn operates only on an appstate's current screen, so -- remove all the screens from the appstate and then add them back