mirror of
https://github.com/simonmichael/hledger.git
synced 2024-11-09 21:22:26 +03:00
ui: register: left click enters transaction screen
This commit is contained in:
parent
35402fb472
commit
96a80fca70
@ -19,10 +19,10 @@ import Data.Maybe
|
||||
import qualified Data.Text as T
|
||||
import Data.Time.Calendar
|
||||
import qualified Data.Vector as V
|
||||
import Graphics.Vty (Event(..),Key(..),Modifier(..))
|
||||
import Graphics.Vty (Event(..),Key(..),Modifier(..), Button (BLeft))
|
||||
import Brick
|
||||
import Brick.Widgets.List
|
||||
(handleListEvent, list, listElementsL, listMoveDown, listMoveTo, listNameL, listSelectedElement, listSelectedL, renderList)
|
||||
(handleListEvent, list, listElementsL, listMoveDown, listMoveTo, listNameL, listSelectedElement, listSelectedL, renderList, listElements)
|
||||
import Brick.Widgets.Edit
|
||||
import Lens.Micro.Platform
|
||||
import Safe
|
||||
@ -39,6 +39,7 @@ import Hledger.UI.UIUtils
|
||||
import Hledger.UI.Editor
|
||||
import Hledger.UI.TransactionScreen
|
||||
import Hledger.UI.ErrorScreen
|
||||
import Data.Vector ((!?))
|
||||
|
||||
registerScreen :: Screen
|
||||
registerScreen = RegisterScreen{
|
||||
@ -357,6 +358,15 @@ rsHandle ui@UIState{
|
||||
Just _ -> continue $ screenEnter d transactionScreen{tsAccount=rsAccount} ui
|
||||
Nothing -> continue ui
|
||||
|
||||
-- or clicked transaction
|
||||
MouseDown _n BLeft _mods Location{loc=(_x,y)} | not $ (=="") clickeddate -> do
|
||||
let
|
||||
list' = listMoveTo y rsList
|
||||
ui' = ui{aScreen=s{rsList=list'}}
|
||||
continue $ screenEnter d transactionScreen{tsAccount=rsAccount} ui'
|
||||
where
|
||||
clickeddate = maybe "" rsItemDate $ listElements rsList !? y
|
||||
|
||||
-- prevent moving down over blank padding items;
|
||||
-- instead scroll down by one, until maximally scrolled - shows the end has been reached
|
||||
VtyEvent e | e `elem` moveDownEvents, isBlankElement mnextelement -> do
|
||||
@ -382,9 +392,9 @@ rsHandle ui@UIState{
|
||||
newitems <- handleListEvent ev' rsList
|
||||
continue ui{aScreen=s{rsList=newitems}}
|
||||
|
||||
AppEvent _ -> continue ui
|
||||
MouseDown{} -> continue ui
|
||||
MouseUp{} -> continue ui
|
||||
AppEvent _ -> continue ui
|
||||
|
||||
rsHandle _ _ = error "event handler called with wrong screen type, should not happen" -- PARTIAL:
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user