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 | ||||
| @ -269,7 +262,7 @@ asHandle ui0@UIState{ | ||||
|         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 (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 (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 (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,12 +266,10 @@ 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" | ||||
|  | ||||
| @ -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