mirror of
https://github.com/simonmichael/hledger.git
synced 2024-09-20 02:37:12 +03:00
ui: refactor: events, imports cleanup
This commit is contained in:
parent
47a8eb53c8
commit
bdb36b8480
@ -10,32 +10,25 @@ module Hledger.UI.AccountsScreen
|
||||
)
|
||||
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.Widgets.Center
|
||||
import Brick.Widgets.List
|
||||
import Brick.Widgets.Edit
|
||||
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 System.Console.ANSI
|
||||
import System.FilePath (takeFileName)
|
||||
|
||||
import Hledger
|
||||
import Hledger.Cli hiding (progname,prognameandversion,green)
|
||||
-- import Hledger.Cli.CliOptions (defaultBalanceLineFormat)
|
||||
import Hledger.UI.UIOptions
|
||||
-- import Hledger.UI.Theme
|
||||
import Hledger.UI.UITypes
|
||||
import Hledger.UI.UIState
|
||||
import Hledger.UI.UIUtils
|
||||
@ -268,8 +261,8 @@ asHandle ui0@UIState{
|
||||
case ev of
|
||||
EvKey (KChar 'q') [] -> halt ui
|
||||
-- EvKey (KChar 'l') [MCtrl] -> do
|
||||
EvKey KEsc [] -> continue $ resetScreens d ui
|
||||
EvKey k [] | k `elem` [KChar 'h', KChar '?'] -> continue $ setMode Help ui
|
||||
EvKey KEsc [] -> continue $ resetScreens d ui
|
||||
EvKey (KChar c) [] | c `elem` ['h','?'] -> continue $ setMode Help ui
|
||||
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 '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 '-') [] -> 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 'E') [] -> 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 k [] | k `elem` [KChar '/'] -> continue $ regenerateScreens j d $ showMinibuffer ui
|
||||
EvKey k [] | k `elem` [KBS, KDel] -> (continue $ regenerateScreens j d $ resetFilter ui)
|
||||
EvKey (KChar '/') [] -> continue $ regenerateScreens j d $ showMinibuffer ui
|
||||
EvKey k [] | k `elem` [KBS, KDel] -> (continue $ regenerateScreens j d $ resetFilter 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
|
||||
scr = rsSetAccount selacct registerScreen
|
||||
|
||||
|
@ -8,23 +8,14 @@ module Hledger.UI.ErrorScreen
|
||||
)
|
||||
where
|
||||
|
||||
-- import Lens.Micro.Platform ((^.))
|
||||
import Control.Monad.IO.Class (liftIO)
|
||||
import Data.Monoid
|
||||
-- import Data.Maybe
|
||||
import Data.Time.Calendar (Day)
|
||||
import Graphics.Vty
|
||||
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.UI.UIOptions
|
||||
-- import Hledger.UI.Theme
|
||||
import Hledger.UI.UITypes
|
||||
import Hledger.UI.UIState
|
||||
import Hledger.UI.UIUtils
|
||||
@ -84,19 +75,14 @@ esHandle ui@UIState{
|
||||
case ev of
|
||||
EvKey (KChar 'q') [] -> halt 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
|
||||
(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 (KLeft) [] -> continue $ popScreen 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
|
||||
_ -> continue ui
|
||||
|
||||
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.
|
||||
|
@ -14,7 +14,6 @@ import Data.List
|
||||
import Data.List.Split (splitOn)
|
||||
import Data.Monoid
|
||||
import Data.Maybe
|
||||
-- import Data.Text (Text)
|
||||
import qualified Data.Text as T
|
||||
import Data.Time.Calendar (Day)
|
||||
import qualified Data.Vector as V
|
||||
@ -23,9 +22,7 @@ import Brick
|
||||
import Brick.Widgets.List
|
||||
import Brick.Widgets.Edit
|
||||
import Brick.Widgets.Border (borderAttr)
|
||||
-- import Brick.Widgets.Center
|
||||
import System.Console.ANSI
|
||||
-- import Text.Printf
|
||||
|
||||
|
||||
import Hledger
|
||||
@ -247,18 +244,17 @@ rsHandle ui@UIState{
|
||||
case ev of
|
||||
EvKey (KChar 'q') [] -> halt 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 '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 '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 k [] | k `elem` [KChar '/'] -> (continue $ regenerateScreens j d $ showMinibuffer ui)
|
||||
EvKey k [] | k `elem` [KBS, KDel] -> (continue $ regenerateScreens j d $ resetFilter ui)
|
||||
EvKey (KChar '/') [] -> (continue $ regenerateScreens j d $ showMinibuffer ui)
|
||||
EvKey k [] | k `elem` [KBS, KDel] -> (continue $ regenerateScreens j d $ resetFilter ui)
|
||||
EvKey (KLeft) [] -> continue $ popScreen ui
|
||||
|
||||
EvKey (k) [] | k `elem` [KRight, KEnter] -> do
|
||||
EvKey k [] | k `elem` [KRight, KEnter] -> do
|
||||
case listSelectedElement rsList of
|
||||
Just (_, RegisterScreenItem{rsItemTransaction=t}) ->
|
||||
let
|
||||
@ -270,14 +266,12 @@ rsHandle ui@UIState{
|
||||
,tsTransactions=numberedts
|
||||
,tsAccount=rsAccount} ui
|
||||
Nothing -> continue ui
|
||||
|
||||
-- fall through to the list's event handler (handles [pg]up/down)
|
||||
ev -> do newitems <- handleEvent ev rsList
|
||||
continue ui{aScreen=s{rsList=newitems}}
|
||||
-- continue =<< handleEventLensed ui someLens ev
|
||||
|
||||
where
|
||||
-- Encourage a more stable scroll position when toggling list items (cf AccountsScreen.hs)
|
||||
scrollTop = vScrollToBeginning $ viewportScroll "register"
|
||||
where
|
||||
-- Encourage a more stable scroll position when toggling list items (cf AccountsScreen.hs)
|
||||
scrollTop = vScrollToBeginning $ viewportScroll "register"
|
||||
|
||||
rsHandle _ _ = error "event handler called with wrong screen type, should not happen"
|
||||
|
@ -8,25 +8,15 @@ module Hledger.UI.TransactionScreen
|
||||
)
|
||||
where
|
||||
|
||||
-- import Lens.Micro.Platform ((^.))
|
||||
import Control.Monad.IO.Class (liftIO)
|
||||
import Data.List
|
||||
-- import Data.List.Split (splitOn)
|
||||
-- import Data.Ord
|
||||
import Data.Monoid
|
||||
-- import Data.Maybe
|
||||
-- import Data.Text (Text)
|
||||
import qualified Data.Text as T
|
||||
import Data.Time.Calendar (Day)
|
||||
-- import qualified Data.Vector as V
|
||||
import Graphics.Vty
|
||||
-- import Safe (headDef, lastDef)
|
||||
import Brick
|
||||
import Brick.Widgets.List (listMoveTo)
|
||||
import Brick.Widgets.Border (borderAttr)
|
||||
-- import Brick.Widgets.Border.Style
|
||||
-- import Brick.Widgets.Center
|
||||
-- import Text.Printf
|
||||
|
||||
import Hledger
|
||||
import Hledger.Cli hiding (progname,prognameandversion,green)
|
||||
@ -131,7 +121,7 @@ tsHandle ui@UIState{aScreen=s@TransactionScreen{tsTransaction=(i,t)
|
||||
case ev of
|
||||
EvKey (KChar 'q') [] -> halt 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
|
||||
d <- liftIO getCurrentDay
|
||||
(ej, _) <- liftIO $ journalReloadIfChanged copts d j
|
||||
|
Loading…
Reference in New Issue
Block a user