packages feed

hledger-ui 1.0.2 → 1.0.3

raw patch · 9 files changed

+123/−107 lines, 9 filesdep ~brick

Dependency ranges changed: brick

Files

CHANGES view
@@ -2,6 +2,11 @@ See also the hledger and project change logs.  +# 1.0.3 (2016/10/31)++- use brick 0.12++ # 1.0.2 (2016/10/27)  - use latest brick 0.11
Hledger/UI/AccountsScreen.hs view
@@ -247,7 +247,7 @@         sel | selected  = (<> "selected")             | otherwise = id -asHandle :: UIState -> Event -> EventM Name (Next UIState)+asHandle :: UIState -> BrickEvent Name Event -> EventM Name (Next UIState) asHandle ui0@UIState{    aScreen=scr@AccountsScreen{..}   ,aopts=UIOpts{cliopts_=copts}@@ -269,55 +269,58 @@   case mode of     Minibuffer ed ->       case ev of-        EvKey KEsc   [] -> continue $ closeMinibuffer ui-        EvKey KEnter [] -> continue $ regenerateScreens j d $ setFilter s $ closeMinibuffer ui+        VtyEvent (EvKey KEsc   []) -> continue $ closeMinibuffer ui+        VtyEvent (EvKey KEnter []) -> continue $ regenerateScreens j d $ setFilter s $ closeMinibuffer ui                             where s = chomp $ unlines $ map strip $ getEditContents ed-        ev              -> do ed' <- handleEditorEvent ev ed-                              continue $ ui{aMode=Minibuffer ed'}+        VtyEvent ev        -> do ed' <- handleEditorEvent ev ed+                                 continue $ ui{aMode=Minibuffer ed'}+        AppEvent _        -> continue ui+        MouseDown _ _ _ _ -> continue ui+        MouseUp _ _ _     -> continue ui      Help ->       case ev of-        EvKey (KChar 'q') [] -> halt ui+        VtyEvent (EvKey (KChar 'q') []) -> halt ui         _                    -> helpHandle ui ev      Normal ->       case ev of-        EvKey (KChar 'q') [] -> halt ui+        VtyEvent (EvKey (KChar 'q') []) -> halt ui         -- EvKey (KChar 'l') [MCtrl] -> do-        EvKey KEsc        [] -> continue $ resetScreens d ui-        EvKey (KChar c)   [] | c `elem` ['?'] -> continue $ setMode Help ui-        EvKey (KChar 'g') [] -> liftIO (uiReloadJournalIfChanged copts d j ui) >>= continue-        EvKey (KChar 'I') [] -> continue $ uiCheckBalanceAssertions d (toggleIgnoreBalanceAssertions ui)-        EvKey (KChar 'a') [] -> suspendAndResume $ clearScreen >> setCursorPosition 0 0 >> add copts j >> uiReloadJournalIfChanged copts d j ui-        EvKey (KChar 'E') [] -> suspendAndResume $ void (runEditor endPos (journalFilePath j)) >> uiReloadJournalIfChanged copts d j ui-        EvKey (KChar '0') [] -> continue $ regenerateScreens j d $ setDepth (Just 0) ui-        EvKey (KChar '1') [] -> continue $ regenerateScreens j d $ setDepth (Just 1) ui-        EvKey (KChar '2') [] -> continue $ regenerateScreens j d $ setDepth (Just 2) ui-        EvKey (KChar '3') [] -> continue $ regenerateScreens j d $ setDepth (Just 3) ui-        EvKey (KChar '4') [] -> continue $ regenerateScreens j d $ setDepth (Just 4) ui-        EvKey (KChar '5') [] -> continue $ regenerateScreens j d $ setDepth (Just 5) ui-        EvKey (KChar '6') [] -> continue $ regenerateScreens j d $ setDepth (Just 6) ui-        EvKey (KChar '7') [] -> continue $ regenerateScreens j d $ setDepth (Just 7) ui-        EvKey (KChar '8') [] -> continue $ regenerateScreens j d $ setDepth (Just 8) ui-        EvKey (KChar '9') [] -> continue $ regenerateScreens j d $ setDepth (Just 9) ui-        EvKey (KChar '-') [] -> continue $ regenerateScreens j d $ decDepth ui-        EvKey (KChar '_') [] -> continue $ regenerateScreens j d $ decDepth ui-        EvKey (KChar c)   [] | c `elem` ['+','='] -> continue $ regenerateScreens j d $ incDepth ui-        EvKey (KChar 't') []    -> continue $ regenerateScreens j d $ setReportPeriod (DayPeriod d) ui-        EvKey (KChar 'H') [] -> continue $ regenerateScreens j d $ toggleHistorical ui-        EvKey (KChar 'F') [] -> continue $ regenerateScreens j d $ toggleFlat ui-        EvKey (KChar 'Z') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleEmpty ui)-        EvKey (KChar 'C') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleCleared ui)-        EvKey (KChar 'U') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleUncleared ui)-        EvKey (KChar 'R') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleReal ui)-        EvKey (KDown)     [MShift] -> continue $ regenerateScreens j d $ shrinkReportPeriod d ui-        EvKey (KUp)       [MShift] -> continue $ regenerateScreens j d $ growReportPeriod d ui-        EvKey (KRight)    [MShift] -> continue $ regenerateScreens j d $ nextReportPeriod journalspan ui-        EvKey (KLeft)     [MShift] -> continue $ regenerateScreens j d $ previousReportPeriod journalspan ui-        EvKey (KChar '/') [] -> continue $ regenerateScreens j d $ showMinibuffer ui-        EvKey k           [] | k `elem` [KBS, KDel] -> (continue $ regenerateScreens j d $ resetFilter ui)-        EvKey k           [] | k `elem` [KLeft, KChar 'h']  -> continue $ popScreen ui-        EvKey k           [] | k `elem` [KRight, KChar 'l'] -> scrollTopRegister >> continue (screenEnter d scr ui)+        VtyEvent (EvKey KEsc        []) -> continue $ resetScreens d ui+        VtyEvent (EvKey (KChar c)   []) | c `elem` ['?'] -> continue $ setMode Help ui+        VtyEvent (EvKey (KChar 'g') []) -> liftIO (uiReloadJournalIfChanged copts d j ui) >>= continue+        VtyEvent (EvKey (KChar 'I') []) -> continue $ uiCheckBalanceAssertions d (toggleIgnoreBalanceAssertions ui)+        VtyEvent (EvKey (KChar 'a') []) -> suspendAndResume $ clearScreen >> setCursorPosition 0 0 >> add copts j >> uiReloadJournalIfChanged copts d j ui+        VtyEvent (EvKey (KChar 'E') []) -> suspendAndResume $ void (runEditor endPos (journalFilePath j)) >> uiReloadJournalIfChanged copts d j ui+        VtyEvent (EvKey (KChar '0') []) -> continue $ regenerateScreens j d $ setDepth (Just 0) ui+        VtyEvent (EvKey (KChar '1') []) -> continue $ regenerateScreens j d $ setDepth (Just 1) ui+        VtyEvent (EvKey (KChar '2') []) -> continue $ regenerateScreens j d $ setDepth (Just 2) ui+        VtyEvent (EvKey (KChar '3') []) -> continue $ regenerateScreens j d $ setDepth (Just 3) ui+        VtyEvent (EvKey (KChar '4') []) -> continue $ regenerateScreens j d $ setDepth (Just 4) ui+        VtyEvent (EvKey (KChar '5') []) -> continue $ regenerateScreens j d $ setDepth (Just 5) ui+        VtyEvent (EvKey (KChar '6') []) -> continue $ regenerateScreens j d $ setDepth (Just 6) ui+        VtyEvent (EvKey (KChar '7') []) -> continue $ regenerateScreens j d $ setDepth (Just 7) ui+        VtyEvent (EvKey (KChar '8') []) -> continue $ regenerateScreens j d $ setDepth (Just 8) ui+        VtyEvent (EvKey (KChar '9') []) -> continue $ regenerateScreens j d $ setDepth (Just 9) ui+        VtyEvent (EvKey (KChar '-') []) -> continue $ regenerateScreens j d $ decDepth ui+        VtyEvent (EvKey (KChar '_') []) -> continue $ regenerateScreens j d $ decDepth ui+        VtyEvent (EvKey (KChar c)   []) | c `elem` ['+','='] -> continue $ regenerateScreens j d $ incDepth ui+        VtyEvent (EvKey (KChar 't') [])    -> continue $ regenerateScreens j d $ setReportPeriod (DayPeriod d) ui+        VtyEvent (EvKey (KChar 'H') []) -> continue $ regenerateScreens j d $ toggleHistorical ui+        VtyEvent (EvKey (KChar 'F') []) -> continue $ regenerateScreens j d $ toggleFlat ui+        VtyEvent (EvKey (KChar 'Z') []) -> scrollTop >> (continue $ regenerateScreens j d $ toggleEmpty ui)+        VtyEvent (EvKey (KChar 'C') []) -> scrollTop >> (continue $ regenerateScreens j d $ toggleCleared ui)+        VtyEvent (EvKey (KChar 'U') []) -> scrollTop >> (continue $ regenerateScreens j d $ toggleUncleared ui)+        VtyEvent (EvKey (KChar 'R') []) -> scrollTop >> (continue $ regenerateScreens j d $ toggleReal ui)+        VtyEvent (EvKey (KDown)     [MShift]) -> continue $ regenerateScreens j d $ shrinkReportPeriod d ui+        VtyEvent (EvKey (KUp)       [MShift]) -> continue $ regenerateScreens j d $ growReportPeriod d ui+        VtyEvent (EvKey (KRight)    [MShift]) -> continue $ regenerateScreens j d $ nextReportPeriod journalspan ui+        VtyEvent (EvKey (KLeft)     [MShift]) -> continue $ regenerateScreens j d $ previousReportPeriod journalspan ui+        VtyEvent (EvKey (KChar '/') []) -> continue $ regenerateScreens j d $ showMinibuffer ui+        VtyEvent (EvKey k           []) | k `elem` [KBS, KDel] -> (continue $ regenerateScreens j d $ resetFilter ui)+        VtyEvent (EvKey k           []) | k `elem` [KLeft, KChar 'h']  -> continue $ popScreen ui+        VtyEvent (EvKey k           []) | k `elem` [KRight, KChar 'l'] -> scrollTopRegister >> continue (screenEnter d scr ui)           where             scr = rsSetAccount selacct isdepthclipped registerScreen             isdepthclipped = case getDepth ui of@@ -325,7 +328,8 @@                                 Nothing -> False          -- fall through to the list's event handler (handles up/down)-        ev -> do+        VtyEvent ev ->+              do                 let ev' = case ev of                             EvKey (KChar 'k') [] -> EvKey (KUp) []                             EvKey (KChar 'j') [] -> EvKey (KDown) []@@ -335,6 +339,9 @@                                           & asSelectedAccount .~ selacct                                           }                 -- continue =<< handleEventLensed ui someLens ev+        AppEvent _        -> continue ui+        MouseDown _ _ _ _ -> continue ui+        MouseUp _ _ _     -> continue ui    where     -- Encourage a more stable scroll position when toggling list items.
Hledger/UI/ErrorScreen.hs view
@@ -68,7 +68,7 @@  esDraw _ = error "draw function called with wrong screen type, should not happen" -esHandle :: UIState -> Event -> EventM Name (Next UIState)+esHandle :: UIState -> BrickEvent Name Event -> EventM Name (Next UIState) esHandle ui@UIState{    aScreen=ErrorScreen{..}   ,aopts=UIOpts{cliopts_=copts}@@ -78,26 +78,26 @@   case mode of     Help ->       case ev of-        EvKey (KChar 'q') [] -> halt ui+        VtyEvent (EvKey (KChar 'q') []) -> halt ui         _                    -> helpHandle ui ev      _ -> do       d <- liftIO getCurrentDay       case ev of-        EvKey (KChar 'q') [] -> halt ui-        EvKey KEsc        [] -> continue $ uiCheckBalanceAssertions d $ resetScreens d ui-        EvKey (KChar c)   [] | c `elem` ['h','?'] -> continue $ setMode Help ui-        EvKey (KChar 'E') [] -> suspendAndResume $ void (runEditor pos f) >> uiReloadJournalIfChanged copts d j (popScreen ui)+        VtyEvent (EvKey (KChar 'q') []) -> halt ui+        VtyEvent (EvKey KEsc        []) -> continue $ uiCheckBalanceAssertions d $ resetScreens d ui+        VtyEvent (EvKey (KChar c)   []) | c `elem` ['h','?'] -> continue $ setMode Help ui+        VtyEvent (EvKey (KChar 'E') []) -> suspendAndResume $ void (runEditor pos f) >> uiReloadJournalIfChanged copts d j (popScreen ui)           where             (pos,f) = case parsewithString hledgerparseerrorpositionp esError of                         Right (f,l,c) -> (Just (l, Just c),f)                         Left  _       -> (endPos, journalFilePath j)-        EvKey (KChar 'g') [] -> liftIO (uiReloadJournalIfChanged copts d j (popScreen ui)) >>= continue . uiCheckBalanceAssertions d+        VtyEvent (EvKey (KChar 'g') []) -> liftIO (uiReloadJournalIfChanged copts d j (popScreen ui)) >>= continue . uiCheckBalanceAssertions d --           (ej, _) <- liftIO $ journalReloadIfChanged copts d j --           case ej of --             Left err -> continue ui{aScreen=s{esError=err}} -- show latest parse error --             Right j' -> continue $ regenerateScreens j' d $ popScreen ui  -- return to previous screen, and reload it-        EvKey (KChar 'I') [] -> continue $ uiCheckBalanceAssertions d (popScreen $ toggleIgnoreBalanceAssertions ui)+        VtyEvent (EvKey (KChar 'I') []) -> continue $ uiCheckBalanceAssertions d (popScreen $ toggleIgnoreBalanceAssertions ui)         _ -> continue ui  esHandle _ _ = error "event handler called with wrong screen type, should not happen"
Hledger/UI/Main.hs view
@@ -137,8 +137,7 @@      brickapp :: App (UIState) V.Event Name     brickapp = App {-        appLiftVtyEvent = id-      , appStartEvent   = return+        appStartEvent   = return       , appAttrMap      = const theme       , appChooseCursor = showFirstCursor       , appHandleEvent  = \ui ev -> sHandle (aScreen ui) ui ev
Hledger/UI/RegisterScreen.hs view
@@ -236,7 +236,7 @@     sel | selected  = (<> "selected")         | otherwise = id -rsHandle :: UIState -> Event -> EventM Name (Next UIState)+rsHandle :: UIState -> BrickEvent Name Event -> EventM Name (Next UIState) rsHandle ui@UIState{    aScreen=s@RegisterScreen{..}   ,aopts=UIOpts{cliopts_=copts}@@ -248,45 +248,48 @@   case mode of     Minibuffer ed ->       case ev of-        EvKey KEsc   [] -> continue $ closeMinibuffer ui-        EvKey KEnter [] -> continue $ regenerateScreens j d $ setFilter s $ closeMinibuffer ui+        VtyEvent (EvKey KEsc   []) -> continue $ closeMinibuffer ui+        VtyEvent (EvKey KEnter []) -> continue $ regenerateScreens j d $ setFilter s $ closeMinibuffer ui                             where s = chomp $ unlines $ map strip $ getEditContents ed-        ev              -> do ed' <- handleEditorEvent ev ed-                              continue $ ui{aMode=Minibuffer ed'}+        VtyEvent ev              -> do ed' <- handleEditorEvent ev ed+                                       continue $ ui{aMode=Minibuffer ed'}+        AppEvent _        -> continue ui+        MouseDown _ _ _ _ -> continue ui+        MouseUp _ _ _     -> continue ui      Help ->       case ev of-        EvKey (KChar 'q') [] -> halt ui+        VtyEvent (EvKey (KChar 'q') []) -> halt ui         _                    -> helpHandle ui ev      Normal ->       case ev of-        EvKey (KChar 'q') [] -> halt ui-        EvKey KEsc        [] -> continue $ resetScreens d ui-        EvKey (KChar c)   [] | c `elem` ['?'] -> continue $ setMode Help ui-        EvKey (KChar 'g') [] -> liftIO (uiReloadJournalIfChanged copts d j ui) >>= continue-        EvKey (KChar 'I') [] -> continue $ uiCheckBalanceAssertions d (toggleIgnoreBalanceAssertions ui)-        EvKey (KChar 'a') [] -> suspendAndResume $ clearScreen >> setCursorPosition 0 0 >> add copts j >> uiReloadJournalIfChanged copts d j ui-        EvKey (KChar 't') []    -> continue $ regenerateScreens j d $ setReportPeriod (DayPeriod d) ui-        EvKey (KChar 'E') [] -> suspendAndResume $ void (runEditor pos f) >> uiReloadJournalIfChanged copts d j ui+        VtyEvent (EvKey (KChar 'q') []) -> halt ui+        VtyEvent (EvKey KEsc        []) -> continue $ resetScreens d ui+        VtyEvent (EvKey (KChar c)   []) | c `elem` ['?'] -> continue $ setMode Help ui+        VtyEvent (EvKey (KChar 'g') []) -> liftIO (uiReloadJournalIfChanged copts d j ui) >>= continue+        VtyEvent (EvKey (KChar 'I') []) -> continue $ uiCheckBalanceAssertions d (toggleIgnoreBalanceAssertions ui)+        VtyEvent (EvKey (KChar 'a') []) -> suspendAndResume $ clearScreen >> setCursorPosition 0 0 >> add copts j >> uiReloadJournalIfChanged copts d j ui+        VtyEvent (EvKey (KChar 't') [])    -> continue $ regenerateScreens j d $ setReportPeriod (DayPeriod d) ui+        VtyEvent (EvKey (KChar 'E') []) -> suspendAndResume $ void (runEditor pos f) >> uiReloadJournalIfChanged copts d j ui           where             (pos,f) = case listSelectedElement rsList of                         Nothing -> (endPos, journalFilePath j)                         Just (_, RegisterScreenItem{rsItemTransaction=Transaction{tsourcepos=GenericSourcePos f l c}}) -> (Just (l, Just c),f)-        EvKey (KChar 'H') [] -> continue $ regenerateScreens j d $ toggleHistorical ui-        EvKey (KChar 'F') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleFlat ui)-        EvKey (KChar 'Z') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleEmpty ui)-        EvKey (KChar 'C') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleCleared ui)-        EvKey (KChar 'U') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleUncleared ui)-        EvKey (KChar 'R') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleReal ui)-        EvKey (KChar '/') [] -> (continue $ regenerateScreens j d $ showMinibuffer ui)-        EvKey (KDown)     [MShift] -> continue $ regenerateScreens j d $ shrinkReportPeriod d ui-        EvKey (KUp)       [MShift] -> continue $ regenerateScreens j d $ growReportPeriod d ui-        EvKey (KRight)    [MShift] -> continue $ regenerateScreens j d $ nextReportPeriod journalspan ui-        EvKey (KLeft)     [MShift] -> continue $ regenerateScreens j d $ previousReportPeriod journalspan ui-        EvKey k           [] | k `elem` [KBS, KDel] -> (continue $ regenerateScreens j d $ resetFilter ui)-        EvKey k           [] | k `elem` [KLeft, KChar 'h']  -> continue $ popScreen ui-        EvKey k           [] | k `elem` [KRight, KChar 'l'] -> do+        VtyEvent (EvKey (KChar 'H') []) -> continue $ regenerateScreens j d $ toggleHistorical ui+        VtyEvent (EvKey (KChar 'F') []) -> scrollTop >> (continue $ regenerateScreens j d $ toggleFlat ui)+        VtyEvent (EvKey (KChar 'Z') []) -> scrollTop >> (continue $ regenerateScreens j d $ toggleEmpty ui)+        VtyEvent (EvKey (KChar 'C') []) -> scrollTop >> (continue $ regenerateScreens j d $ toggleCleared ui)+        VtyEvent (EvKey (KChar 'U') []) -> scrollTop >> (continue $ regenerateScreens j d $ toggleUncleared ui)+        VtyEvent (EvKey (KChar 'R') []) -> scrollTop >> (continue $ regenerateScreens j d $ toggleReal ui)+        VtyEvent (EvKey (KChar '/') []) -> (continue $ regenerateScreens j d $ showMinibuffer ui)+        VtyEvent (EvKey (KDown)     [MShift]) -> continue $ regenerateScreens j d $ shrinkReportPeriod d ui+        VtyEvent (EvKey (KUp)       [MShift]) -> continue $ regenerateScreens j d $ growReportPeriod d ui+        VtyEvent (EvKey (KRight)    [MShift]) -> continue $ regenerateScreens j d $ nextReportPeriod journalspan ui+        VtyEvent (EvKey (KLeft)     [MShift]) -> continue $ regenerateScreens j d $ previousReportPeriod journalspan ui+        VtyEvent (EvKey k           []) | k `elem` [KBS, KDel] -> (continue $ regenerateScreens j d $ resetFilter ui)+        VtyEvent (EvKey k           []) | k `elem` [KLeft, KChar 'h']  -> continue $ popScreen ui+        VtyEvent (EvKey k           []) | k `elem` [KRight, KChar 'l'] -> do           case listSelectedElement rsList of             Just (_, RegisterScreenItem{rsItemTransaction=t}) ->               let@@ -299,7 +302,7 @@                                                           ,tsAccount=rsAccount} ui             Nothing -> continue ui         -- fall through to the list's event handler (handles [pg]up/down)-        ev -> do+        VtyEvent ev -> do                 let ev' = case ev of                             EvKey (KChar 'k') [] -> EvKey (KUp) []                             EvKey (KChar 'j') [] -> EvKey (KDown) []@@ -307,6 +310,9 @@                 newitems <- handleListEvent ev' rsList                 continue ui{aScreen=s{rsList=newitems}}                 -- continue =<< handleEventLensed ui someLens ev+        AppEvent _        -> continue ui+        MouseDown _ _ _ _ -> continue ui+        MouseUp _ _ _     -> continue ui       where         -- Encourage a more stable scroll position when toggling list items (cf AccountsScreen.hs)         scrollTop = vScrollToBeginning $ viewportScroll RegisterViewport
Hledger/UI/TransactionScreen.hs view
@@ -102,7 +102,7 @@  tsDraw _ = error "draw function called with wrong screen type, should not happen" -tsHandle :: UIState -> Event -> EventM Name (Next UIState)+tsHandle :: UIState -> BrickEvent Name Event -> EventM Name (Next UIState) tsHandle ui@UIState{aScreen=s@TransactionScreen{tsTransaction=(i,t)                                                 ,tsTransactions=nts                                                 ,tsAccount=acct}@@ -114,7 +114,7 @@   case mode of     Help ->       case ev of-        EvKey (KChar 'q') [] -> halt ui+        VtyEvent (EvKey (KChar 'q') []) -> halt ui         _                    -> helpHandle ui ev      _ -> do@@ -123,13 +123,13 @@         (iprev,tprev) = maybe (i,t) ((i-1),) $ lookup (i-1) nts         (inext,tnext) = maybe (i,t) ((i+1),) $ lookup (i+1) nts       case ev of-        EvKey (KChar 'q') [] -> halt ui-        EvKey KEsc        [] -> continue $ resetScreens d ui-        EvKey (KChar c)   [] | c `elem` ['?'] -> continue $ setMode Help ui-        EvKey (KChar 'E') [] -> suspendAndResume $ void (runEditor pos f) >> uiReloadJournalIfChanged copts d j ui+        VtyEvent (EvKey (KChar 'q') []) -> halt ui+        VtyEvent (EvKey KEsc        []) -> continue $ resetScreens d ui+        VtyEvent (EvKey (KChar c)   []) | c `elem` ['?'] -> continue $ setMode Help ui+        VtyEvent (EvKey (KChar 'E') []) -> suspendAndResume $ void (runEditor pos f) >> uiReloadJournalIfChanged copts d j ui           where             (pos,f) = let GenericSourcePos f l c = tsourcepos t in (Just (l, Just c),f)-        EvKey (KChar 'g') [] -> do+        VtyEvent (EvKey (KChar 'g') []) -> do           d <- liftIO getCurrentDay           (ej, _) <- liftIO $ journalReloadIfChanged copts d j           case ej of@@ -157,14 +157,14 @@                                   ,tsTransactions=numberedts                                   ,tsAccount=acct}}               continue $ regenerateScreens j' d ui'-        EvKey (KChar 'I') [] -> continue $ uiCheckBalanceAssertions d (toggleIgnoreBalanceAssertions ui)+        VtyEvent (EvKey (KChar 'I') []) -> continue $ uiCheckBalanceAssertions d (toggleIgnoreBalanceAssertions ui)         -- if allowing toggling here, we should refresh the txn list from the parent register screen         -- EvKey (KChar 'E') [] -> continue $ regenerateScreens j d $ stToggleEmpty ui         -- EvKey (KChar 'C') [] -> continue $ regenerateScreens j d $ stToggleCleared ui         -- EvKey (KChar 'R') [] -> continue $ regenerateScreens j d $ stToggleReal ui-        EvKey k           [] | k `elem` [KUp, KChar 'k']   -> continue $ regenerateScreens j d ui{aScreen=s{tsTransaction=(iprev,tprev)}}-        EvKey k           [] | k `elem` [KDown, KChar 'j'] -> continue $ regenerateScreens j d ui{aScreen=s{tsTransaction=(inext,tnext)}}-        EvKey k           [] | k `elem` [KLeft, KChar 'h'] -> continue ui''+        VtyEvent (EvKey k           []) | k `elem` [KUp, KChar 'k']   -> continue $ regenerateScreens j d ui{aScreen=s{tsTransaction=(iprev,tprev)}}+        VtyEvent (EvKey k           []) | k `elem` [KDown, KChar 'j'] -> continue $ regenerateScreens j d ui{aScreen=s{tsTransaction=(inext,tnext)}}+        VtyEvent (EvKey k           []) | k `elem` [KLeft, KChar 'h'] -> continue ui''           where             ui'@UIState{aScreen=scr} = popScreen ui             ui'' = ui'{aScreen=rsSelect (fromIntegral i) scr}
Hledger/UI/UITypes.hs view
@@ -50,9 +50,6 @@ import Hledger import Hledger.UI.UIOptions -instance Show (List n e) where show _ = "<List>"-instance Show (Editor l n) where show _ = "<Editor>"- -- | hledger-ui's application state. This holds one or more stateful screens. -- As you navigate through screens, the old ones are saved in a stack. -- The app can be in one of several modes: normal screen operation,@@ -95,7 +92,7 @@     AccountsScreen {        sInit   :: Day -> Bool -> UIState -> UIState              -- ^ function to initialise or update this screen's state       ,sDraw   :: UIState -> [Widget Name]                             -- ^ brick renderer for this screen-      ,sHandle :: UIState -> Event -> EventM Name (Next UIState)  -- ^ brick event handler for this screen+      ,sHandle :: UIState -> BrickEvent Name Event -> EventM Name (Next UIState)  -- ^ brick event handler for this screen       -- state fields.These ones have lenses:       ,_asList            :: List Name AccountsScreenItem  -- ^ list widget showing account names & balances       ,_asSelectedAccount :: AccountName              -- ^ a backup of the account name from the list widget's selected item (or "")@@ -103,7 +100,7 @@   | RegisterScreen {        sInit   :: Day -> Bool -> UIState -> UIState       ,sDraw   :: UIState -> [Widget Name]-      ,sHandle :: UIState -> Event -> EventM Name (Next UIState)+      ,sHandle :: UIState -> BrickEvent Name Event -> EventM Name (Next UIState)       --       ,rsList    :: List Name RegisterScreenItem      -- ^ list widget showing transactions affecting this account       ,rsAccount :: AccountName                       -- ^ the account this register is for@@ -114,7 +111,7 @@   | TransactionScreen {        sInit   :: Day -> Bool -> UIState -> UIState       ,sDraw   :: UIState -> [Widget Name]-      ,sHandle :: UIState -> Event -> EventM Name (Next UIState)+      ,sHandle :: UIState -> BrickEvent Name Event -> EventM Name (Next UIState)       --       ,tsTransaction  :: NumberedTransaction          -- ^ the transaction we are currently viewing, and its position in the list       ,tsTransactions :: [NumberedTransaction]        -- ^ list of transactions we can step through@@ -123,7 +120,7 @@   | ErrorScreen {        sInit   :: Day -> Bool -> UIState -> UIState       ,sDraw   :: UIState -> [Widget Name]-      ,sHandle :: UIState -> Event -> EventM Name (Next UIState)+      ,sHandle :: UIState -> BrickEvent Name Event -> EventM Name (Next UIState)       --       ,esError :: String                              -- ^ error message to show     }@@ -136,6 +133,7 @@   ,asItemDisplayAccountName :: AccountName  -- ^ full or short account name to display   ,asItemRenderedAmounts    :: [String]     -- ^ rendered amounts   }+  deriving (Show)  -- | An item in the register screen's list of transactions in the current account. data RegisterScreenItem = RegisterScreenItem {@@ -146,6 +144,7 @@   ,rsItemBalanceAmount  :: String           -- ^ the balance or running total after this transaction   ,rsItemTransaction    :: Transaction      -- ^ the full transaction   }+  deriving (Show)  type NumberedTransaction = (Integer, Transaction) 
Hledger/UI/UIUtils.hs view
@@ -110,13 +110,13 @@     renderKey (key,desc) = withAttr (borderAttr <> "keys") (str key) <+> str " " <+> str desc  -- | Event handler used when help mode is active.-helpHandle :: UIState -> Event -> EventM Name (Next UIState)+helpHandle :: UIState -> BrickEvent Name Event -> EventM Name (Next UIState) helpHandle ui ev =   case ev of-    EvKey k [] | k `elem` [KEsc, KLeft, KChar 'h', KChar '?'] -> continue $ setMode Normal ui-    EvKey (KChar 't') [] -> suspendAndResume $ runHelp >> return ui'-    EvKey (KChar 'm') [] -> suspendAndResume $ runMan  >> return ui'-    EvKey (KChar 'i') [] -> suspendAndResume $ runInfo >> return ui'+    VtyEvent (EvKey k []) | k `elem` [KEsc, KLeft, KChar 'h', KChar '?'] -> continue $ setMode Normal ui+    VtyEvent (EvKey (KChar 't') []) -> suspendAndResume $ runHelp >> return ui'+    VtyEvent (EvKey (KChar 'm') []) -> suspendAndResume $ runMan  >> return ui'+    VtyEvent (EvKey (KChar 'i') []) -> suspendAndResume $ runInfo >> return ui'     _ -> continue ui   where     ui' = setMode Normal ui
hledger-ui.cabal view
@@ -3,7 +3,7 @@ -- see: https://github.com/sol/hpack  name:           hledger-ui-version:        1.0.2+version:        1.0.3 stability:      beta category:       Finance, Console synopsis:       Curses-style user interface for the hledger accounting tool@@ -55,7 +55,7 @@   hs-source-dirs:       .   ghc-options: -Wall -fno-warn-unused-do-bind -fno-warn-name-shadowing -fno-warn-missing-signatures -fno-warn-type-defaults -fno-warn-orphans-  cpp-options: -DVERSION="1.0.2"+  cpp-options: -DVERSION="1.0.3"   build-depends:       hledger >= 1.0.1 && < 1.1     , hledger-lib >= 1.0.1 && < 1.1@@ -82,7 +82,7 @@     buildable: False   else     build-depends:-        brick >= 0.11 && < 0.12+        brick >= 0.12 && < 0.13       , vty >= 5.5 && < 5.12   if flag(threaded)     ghc-options: -threaded