ui: refactor: events, imports cleanup
This commit is contained in:
parent
47a8eb53c8
commit
bdb36b8480
@ -10,32 +10,25 @@ module Hledger.UI.AccountsScreen
|
|||||||
)
|
)
|
||||||
where
|
where
|
||||||
|
|
||||||
-- import Control.Monad
|
|
||||||
import Control.Monad.IO.Class (liftIO)
|
|
||||||
-- import Data.Default
|
|
||||||
import Data.List
|
|
||||||
import Data.Maybe
|
|
||||||
import Data.Monoid
|
|
||||||
-- import Data.Text (Text)
|
|
||||||
import qualified Data.Text as T
|
|
||||||
import Data.Time.Calendar (Day)
|
|
||||||
import System.FilePath (takeFileName)
|
|
||||||
import qualified Data.Vector as V
|
|
||||||
import Graphics.Vty
|
|
||||||
import Brick
|
import Brick
|
||||||
-- import Brick.Widgets.Center
|
|
||||||
import Brick.Widgets.List
|
import Brick.Widgets.List
|
||||||
import Brick.Widgets.Edit
|
import Brick.Widgets.Edit
|
||||||
import Brick.Widgets.Border (borderAttr)
|
import Brick.Widgets.Border (borderAttr)
|
||||||
-- import Brick.Widgets.Center
|
import Control.Monad.IO.Class (liftIO)
|
||||||
|
import Data.List
|
||||||
|
import Data.Maybe
|
||||||
|
import Data.Monoid
|
||||||
|
import qualified Data.Text as T
|
||||||
|
import Data.Time.Calendar (Day)
|
||||||
|
import qualified Data.Vector as V
|
||||||
|
import Graphics.Vty
|
||||||
import Lens.Micro.Platform
|
import Lens.Micro.Platform
|
||||||
import System.Console.ANSI
|
import System.Console.ANSI
|
||||||
|
import System.FilePath (takeFileName)
|
||||||
|
|
||||||
import Hledger
|
import Hledger
|
||||||
import Hledger.Cli hiding (progname,prognameandversion,green)
|
import Hledger.Cli hiding (progname,prognameandversion,green)
|
||||||
-- import Hledger.Cli.CliOptions (defaultBalanceLineFormat)
|
|
||||||
import Hledger.UI.UIOptions
|
import Hledger.UI.UIOptions
|
||||||
-- import Hledger.UI.Theme
|
|
||||||
import Hledger.UI.UITypes
|
import Hledger.UI.UITypes
|
||||||
import Hledger.UI.UIState
|
import Hledger.UI.UIState
|
||||||
import Hledger.UI.UIUtils
|
import Hledger.UI.UIUtils
|
||||||
@ -269,7 +262,7 @@ asHandle ui0@UIState{
|
|||||||
EvKey (KChar 'q') [] -> halt ui
|
EvKey (KChar 'q') [] -> halt ui
|
||||||
-- EvKey (KChar 'l') [MCtrl] -> do
|
-- EvKey (KChar 'l') [MCtrl] -> do
|
||||||
EvKey KEsc [] -> continue $ resetScreens d ui
|
EvKey KEsc [] -> continue $ resetScreens d ui
|
||||||
EvKey k [] | k `elem` [KChar 'h', KChar '?'] -> continue $ setMode Help ui
|
EvKey (KChar c) [] | c `elem` ['h','?'] -> continue $ setMode Help ui
|
||||||
EvKey (KChar 'g') [] -> liftIO (uiReloadJournalIfChanged copts d j ui) >>= continue
|
EvKey (KChar 'g') [] -> liftIO (uiReloadJournalIfChanged copts d j ui) >>= continue
|
||||||
EvKey (KChar 'a') [] -> suspendAndResume $ clearScreen >> setCursorPosition 0 0 >> add copts j >> uiReloadJournalIfChanged copts d j ui
|
EvKey (KChar 'a') [] -> suspendAndResume $ clearScreen >> setCursorPosition 0 0 >> add copts j >> uiReloadJournalIfChanged copts d j ui
|
||||||
EvKey (KChar '0') [] -> continue $ regenerateScreens j d $ setDepth (Just 0) ui
|
EvKey (KChar '0') [] -> continue $ regenerateScreens j d $ setDepth (Just 0) ui
|
||||||
@ -284,16 +277,16 @@ asHandle ui0@UIState{
|
|||||||
EvKey (KChar '9') [] -> continue $ regenerateScreens j d $ setDepth (Just 9) 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 '_') [] -> continue $ regenerateScreens j d $ decDepth ui
|
EvKey (KChar '_') [] -> continue $ regenerateScreens j d $ decDepth ui
|
||||||
EvKey k [] | k `elem` [KChar '+', KChar '='] -> continue $ regenerateScreens j d $ incDepth ui
|
EvKey (KChar c) [] | c `elem` ['+','='] -> continue $ regenerateScreens j d $ incDepth ui
|
||||||
EvKey (KChar 'F') [] -> continue $ regenerateScreens j d $ toggleFlat ui
|
EvKey (KChar 'F') [] -> continue $ regenerateScreens j d $ toggleFlat ui
|
||||||
EvKey (KChar 'E') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleEmpty ui)
|
EvKey (KChar 'E') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleEmpty ui)
|
||||||
EvKey (KChar 'C') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleCleared ui)
|
EvKey (KChar 'C') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleCleared ui)
|
||||||
EvKey (KChar 'U') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleUncleared ui)
|
EvKey (KChar 'U') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleUncleared ui)
|
||||||
EvKey (KChar 'R') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleReal ui)
|
EvKey (KChar 'R') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleReal ui)
|
||||||
EvKey k [] | k `elem` [KChar '/'] -> continue $ regenerateScreens j d $ showMinibuffer 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` [KBS, KDel] -> (continue $ regenerateScreens j d $ resetFilter ui)
|
||||||
EvKey (KLeft) [] -> continue $ popScreen ui
|
EvKey (KLeft) [] -> continue $ popScreen ui
|
||||||
EvKey (k) [] | k `elem` [KRight, KEnter] -> scrollTopRegister >> continue (screenEnter d scr ui)
|
EvKey k [] | k `elem` [KRight, KEnter] -> scrollTopRegister >> continue (screenEnter d scr ui)
|
||||||
where
|
where
|
||||||
scr = rsSetAccount selacct registerScreen
|
scr = rsSetAccount selacct registerScreen
|
||||||
|
|
||||||
|
|||||||
@ -8,23 +8,14 @@ module Hledger.UI.ErrorScreen
|
|||||||
)
|
)
|
||||||
where
|
where
|
||||||
|
|
||||||
-- import Lens.Micro.Platform ((^.))
|
|
||||||
import Control.Monad.IO.Class (liftIO)
|
import Control.Monad.IO.Class (liftIO)
|
||||||
import Data.Monoid
|
import Data.Monoid
|
||||||
-- import Data.Maybe
|
|
||||||
import Data.Time.Calendar (Day)
|
import Data.Time.Calendar (Day)
|
||||||
import Graphics.Vty
|
import Graphics.Vty
|
||||||
import Brick
|
import Brick
|
||||||
-- import Brick.Widgets.List
|
|
||||||
-- import Brick.Widgets.Border
|
|
||||||
-- import Brick.Widgets.Border.Style
|
|
||||||
-- import Brick.Widgets.Center
|
|
||||||
-- import Text.Printf
|
|
||||||
|
|
||||||
-- import Hledger
|
|
||||||
import Hledger.Cli hiding (progname,prognameandversion,green)
|
import Hledger.Cli hiding (progname,prognameandversion,green)
|
||||||
import Hledger.UI.UIOptions
|
import Hledger.UI.UIOptions
|
||||||
-- import Hledger.UI.Theme
|
|
||||||
import Hledger.UI.UITypes
|
import Hledger.UI.UITypes
|
||||||
import Hledger.UI.UIState
|
import Hledger.UI.UIState
|
||||||
import Hledger.UI.UIUtils
|
import Hledger.UI.UIUtils
|
||||||
@ -84,19 +75,14 @@ esHandle ui@UIState{
|
|||||||
case ev of
|
case ev of
|
||||||
EvKey (KChar 'q') [] -> halt ui
|
EvKey (KChar 'q') [] -> halt ui
|
||||||
EvKey KEsc [] -> continue $ resetScreens d ui
|
EvKey KEsc [] -> continue $ resetScreens d ui
|
||||||
EvKey k [] | k `elem` [KChar 'h', KChar '?'] -> continue $ setMode Help ui
|
EvKey (KChar c) [] | c `elem` ['h','?'] -> continue $ setMode Help ui
|
||||||
EvKey (KChar 'g') [] -> do
|
EvKey (KChar 'g') [] -> do
|
||||||
(ej, _) <- liftIO $ journalReloadIfChanged copts d j
|
(ej, _) <- liftIO $ journalReloadIfChanged copts d j
|
||||||
case ej of
|
case ej of
|
||||||
Left err -> continue ui{aScreen=s{esError=err}} -- show latest parse error
|
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
|
Right j' -> continue $ regenerateScreens j' d $ popScreen ui -- return to previous screen, and reload it
|
||||||
-- EvKey (KLeft) [] -> continue $ popScreen ui
|
_ -> continue ui
|
||||||
-- EvKey (KRight) [] -> error (show curItem) where curItem = listSelectedElement is
|
|
||||||
-- fall through to the list's event handler (handles [pg]up/down)
|
|
||||||
_ -> do continue ui
|
|
||||||
-- is' <- handleEvent ev is
|
|
||||||
-- continue ui{aScreen=s{rsState=is'}}
|
|
||||||
-- continue =<< handleEventLensed ui someLens e
|
|
||||||
esHandle _ _ = error "event handler called with wrong screen type, should not happen"
|
esHandle _ _ = error "event handler called with wrong screen type, should not happen"
|
||||||
|
|
||||||
-- If journal file(s) have changed, reload the journal and regenerate all screens.
|
-- If journal file(s) have changed, reload the journal and regenerate all screens.
|
||||||
|
|||||||
@ -14,7 +14,6 @@ import Data.List
|
|||||||
import Data.List.Split (splitOn)
|
import Data.List.Split (splitOn)
|
||||||
import Data.Monoid
|
import Data.Monoid
|
||||||
import Data.Maybe
|
import Data.Maybe
|
||||||
-- import Data.Text (Text)
|
|
||||||
import qualified Data.Text as T
|
import qualified Data.Text as T
|
||||||
import Data.Time.Calendar (Day)
|
import Data.Time.Calendar (Day)
|
||||||
import qualified Data.Vector as V
|
import qualified Data.Vector as V
|
||||||
@ -23,9 +22,7 @@ import Brick
|
|||||||
import Brick.Widgets.List
|
import Brick.Widgets.List
|
||||||
import Brick.Widgets.Edit
|
import Brick.Widgets.Edit
|
||||||
import Brick.Widgets.Border (borderAttr)
|
import Brick.Widgets.Border (borderAttr)
|
||||||
-- import Brick.Widgets.Center
|
|
||||||
import System.Console.ANSI
|
import System.Console.ANSI
|
||||||
-- import Text.Printf
|
|
||||||
|
|
||||||
|
|
||||||
import Hledger
|
import Hledger
|
||||||
@ -247,18 +244,17 @@ rsHandle ui@UIState{
|
|||||||
case ev of
|
case ev of
|
||||||
EvKey (KChar 'q') [] -> halt ui
|
EvKey (KChar 'q') [] -> halt ui
|
||||||
EvKey KEsc [] -> continue $ resetScreens d ui
|
EvKey KEsc [] -> continue $ resetScreens d ui
|
||||||
EvKey k [] | k `elem` [KChar 'h', KChar '?'] -> continue $ setMode Help ui
|
EvKey (KChar c) [] | c `elem` ['h','?'] -> continue $ setMode Help ui
|
||||||
EvKey (KChar 'g') [] -> liftIO (uiReloadJournalIfChanged copts d j ui) >>= continue
|
EvKey (KChar 'g') [] -> liftIO (uiReloadJournalIfChanged copts d j ui) >>= continue
|
||||||
EvKey (KChar 'a') [] -> suspendAndResume $ clearScreen >> setCursorPosition 0 0 >> add copts j >> uiReloadJournalIfChanged copts d j ui
|
EvKey (KChar 'a') [] -> suspendAndResume $ clearScreen >> setCursorPosition 0 0 >> add copts j >> uiReloadJournalIfChanged copts d j ui
|
||||||
EvKey (KChar 'E') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleEmpty ui)
|
EvKey (KChar 'E') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleEmpty ui)
|
||||||
EvKey (KChar 'C') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleCleared ui)
|
EvKey (KChar 'C') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleCleared ui)
|
||||||
EvKey (KChar 'U') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleUncleared ui)
|
EvKey (KChar 'U') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleUncleared ui)
|
||||||
EvKey (KChar 'R') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleReal ui)
|
EvKey (KChar 'R') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleReal ui)
|
||||||
EvKey k [] | k `elem` [KChar '/'] -> (continue $ regenerateScreens j d $ showMinibuffer 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` [KBS, KDel] -> (continue $ regenerateScreens j d $ resetFilter ui)
|
||||||
EvKey (KLeft) [] -> continue $ popScreen ui
|
EvKey (KLeft) [] -> continue $ popScreen ui
|
||||||
|
EvKey k [] | k `elem` [KRight, KEnter] -> do
|
||||||
EvKey (k) [] | k `elem` [KRight, KEnter] -> do
|
|
||||||
case listSelectedElement rsList of
|
case listSelectedElement rsList of
|
||||||
Just (_, RegisterScreenItem{rsItemTransaction=t}) ->
|
Just (_, RegisterScreenItem{rsItemTransaction=t}) ->
|
||||||
let
|
let
|
||||||
@ -270,12 +266,10 @@ rsHandle ui@UIState{
|
|||||||
,tsTransactions=numberedts
|
,tsTransactions=numberedts
|
||||||
,tsAccount=rsAccount} ui
|
,tsAccount=rsAccount} ui
|
||||||
Nothing -> continue ui
|
Nothing -> continue ui
|
||||||
|
|
||||||
-- fall through to the list's event handler (handles [pg]up/down)
|
-- fall through to the list's event handler (handles [pg]up/down)
|
||||||
ev -> do newitems <- handleEvent ev rsList
|
ev -> do newitems <- handleEvent ev rsList
|
||||||
continue ui{aScreen=s{rsList=newitems}}
|
continue ui{aScreen=s{rsList=newitems}}
|
||||||
-- continue =<< handleEventLensed ui someLens ev
|
-- continue =<< handleEventLensed ui someLens ev
|
||||||
|
|
||||||
where
|
where
|
||||||
-- Encourage a more stable scroll position when toggling list items (cf AccountsScreen.hs)
|
-- Encourage a more stable scroll position when toggling list items (cf AccountsScreen.hs)
|
||||||
scrollTop = vScrollToBeginning $ viewportScroll "register"
|
scrollTop = vScrollToBeginning $ viewportScroll "register"
|
||||||
|
|||||||
@ -8,25 +8,15 @@ module Hledger.UI.TransactionScreen
|
|||||||
)
|
)
|
||||||
where
|
where
|
||||||
|
|
||||||
-- import Lens.Micro.Platform ((^.))
|
|
||||||
import Control.Monad.IO.Class (liftIO)
|
import Control.Monad.IO.Class (liftIO)
|
||||||
import Data.List
|
import Data.List
|
||||||
-- import Data.List.Split (splitOn)
|
|
||||||
-- import Data.Ord
|
|
||||||
import Data.Monoid
|
import Data.Monoid
|
||||||
-- import Data.Maybe
|
|
||||||
-- import Data.Text (Text)
|
|
||||||
import qualified Data.Text as T
|
import qualified Data.Text as T
|
||||||
import Data.Time.Calendar (Day)
|
import Data.Time.Calendar (Day)
|
||||||
-- import qualified Data.Vector as V
|
|
||||||
import Graphics.Vty
|
import Graphics.Vty
|
||||||
-- import Safe (headDef, lastDef)
|
|
||||||
import Brick
|
import Brick
|
||||||
import Brick.Widgets.List (listMoveTo)
|
import Brick.Widgets.List (listMoveTo)
|
||||||
import Brick.Widgets.Border (borderAttr)
|
import Brick.Widgets.Border (borderAttr)
|
||||||
-- import Brick.Widgets.Border.Style
|
|
||||||
-- import Brick.Widgets.Center
|
|
||||||
-- import Text.Printf
|
|
||||||
|
|
||||||
import Hledger
|
import Hledger
|
||||||
import Hledger.Cli hiding (progname,prognameandversion,green)
|
import Hledger.Cli hiding (progname,prognameandversion,green)
|
||||||
@ -131,7 +121,7 @@ tsHandle ui@UIState{aScreen=s@TransactionScreen{tsTransaction=(i,t)
|
|||||||
case ev of
|
case ev of
|
||||||
EvKey (KChar 'q') [] -> halt ui
|
EvKey (KChar 'q') [] -> halt ui
|
||||||
EvKey KEsc [] -> continue $ resetScreens d ui
|
EvKey KEsc [] -> continue $ resetScreens d ui
|
||||||
EvKey k [] | k `elem` [KChar 'h', KChar '?'] -> continue $ setMode Help ui
|
EvKey (KChar c) [] | c `elem` ['h','?'] -> continue $ setMode Help ui
|
||||||
EvKey (KChar 'g') [] -> do
|
EvKey (KChar 'g') [] -> do
|
||||||
d <- liftIO getCurrentDay
|
d <- liftIO getCurrentDay
|
||||||
(ej, _) <- liftIO $ journalReloadIfChanged copts d j
|
(ej, _) <- liftIO $ journalReloadIfChanged copts d j
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user