summaryrefslogtreecommitdiffstats
path: root/app/Main.hs
blob: 403b78ffc191152c0a11c5b6b2fc57e20ea53a84 (about) (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
module Main where

import Brick.AttrMap qualified as A
import Brick.Main qualified as M
import Brick.Types
  ( BrickEvent (..),
    Widget,
  )
import Brick.Types qualified as T
import Brick.Util (bg, on)
import Brick.Widgets.Center qualified as C
import Brick.Widgets.Core
  ( padAll,
    str,
  )
import Brick.Widgets.Dialog qualified as D
import Graphics.Vty qualified as V
import Import.Ing.SavingsAccountCsv qualified
import Import.Ing.CurrentAccountCsv qualified
import System.IO (IOMode (ReadMode), withFile)
import Text.Pretty.Simple (pPrint)

-- data AccountType = Asset | Equity | Liability | Expense | Income
--
-- data TxAction = Inc | Dec
--
-- txAopp :: TxAction -> TxAction
-- txaOpp Inc = Dec
-- txaOpp Dec = Inc
--
-- onDebit :: AccountType -> TxAction
-- onDebit Asset = Inc
-- onDebit Equity = Dec
-- onDebit Liability = Dec
-- onDebit Expense = Inc
-- onDebit Income = Dec
--
-- onCredit :: AccountType -> TxAction
-- onCredit = txaOpp . onDebit
--
-- data Tx = Tx { txDebit :: [(Account, Decimal)], txCredit :: [(Account, Decimal)] } deriving Show
data Choice = Red | Blue | Green
  deriving (Show)

data Name
  = RedButton
  | BlueButton
  | GreenButton
  deriving (Show, Eq, Ord)

drawUI :: D.Dialog Choice Name -> [Widget Name]
drawUI d = [ui]
  where
    ui = D.renderDialog d $ C.hCenter $ padAll 1 $ str "This is the dialog body."

appEvent :: BrickEvent Name e -> T.EventM Name (D.Dialog Choice Name) ()
appEvent (VtyEvent ev) =
  case ev of
    V.EvKey V.KEsc [] -> M.halt
    V.EvKey V.KEnter [] -> M.halt
    _ -> D.handleDialogEvent ev
appEvent _ = return ()

initialState :: D.Dialog Choice Name
initialState = D.dialog (Just $ str "Title") (Just (RedButton, choices)) 50
  where
    choices =
      [ ("Red", RedButton, Red),
        ("Blue", BlueButton, Blue),
        ("Green", GreenButton, Green)
      ]

theMap :: A.AttrMap
theMap =
  A.attrMap
    V.defAttr
    [ (D.dialogAttr, V.white `on` V.blue),
      (D.buttonAttr, V.black `on` V.white),
      (D.buttonSelectedAttr, bg V.yellow)
    ]

theApp :: M.App (D.Dialog Choice Name) e Name
theApp =
  M.App
    { M.appDraw = drawUI,
      M.appChooseCursor = M.showFirstCursor,
      M.appHandleEvent = appEvent,
      M.appStartEvent = return (),
      M.appAttrMap = const theMap
    }

main :: IO ()
main = do
  let filename = "/home/rutgerbrf/Code/P/wayligmative/test.csv"
  putStrLn $ "Reading " ++ filename
  withFile filename ReadMode $ \h -> do
    entries <- Import.Ing.CurrentAccountCsv.readFile h
    pPrint entries

--  d <- M.defaultMain theApp initialState
--  putStrLn $ "You chose: " <> show (D.dialogSelection d)