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 | ||||||
| @ -268,8 +261,8 @@ asHandle ui0@UIState{ | |||||||
|       case ev of |       case ev of | ||||||
|         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,14 +266,12 @@ 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" |  | ||||||
| 
 | 
 | ||||||
| rsHandle _ _ = error "event handler called with wrong screen type, should not happen" | rsHandle _ _ = error "event handler called with wrong screen type, should not happen" | ||||||
|  | |||||||
| @ -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