module Glue where import Brick import States import StateManagement import qualified Graphics.Vty as V import qualified UI.MainMenu as MM import qualified UI.Settings as S import qualified UI.Info as I import qualified UI.CardSelector as CS import qualified UI.FileBrowser as FB import qualified UI.Cards as C import qualified UI.Parameter as P globalApp :: App GlobalState Event Name globalApp = App { appDraw = drawUI , appChooseCursor = showFirstCursor , appHandleEvent = handleEvent , appStartEvent = return , appAttrMap = handleAttrMap } drawUI :: GlobalState -> [Widget Name] drawUI gs = case getState gs of MainMenuState s -> MM.drawUI s SettingsState s -> S.drawUI s InfoState s -> I.drawUI s CardSelectorState s -> CS.drawUI gs s FileBrowserState s -> FB.drawUI s CardsState s -> C.drawUI s ParameterState s -> P.drawUI s handleEvent :: GlobalState -> BrickEvent Name Event -> EventM Name (Next GlobalState) handleEvent gs ev = if ev == VtyEvent (V.EvKey (V.KChar 'c') [V.MCtrl]) then halt gs else case getState gs of MainMenuState s -> MM.handleEvent gs s ev SettingsState s -> S.handleEvent gs s ev InfoState s -> I.handleEvent gs s ev CardSelectorState s -> CS.handleEvent gs s ev FileBrowserState s -> FB.handleEvent gs s ev CardsState s -> C.handleEvent gs s ev ParameterState s -> P.handleEvent gs s ev handleAttrMap :: GlobalState -> AttrMap handleAttrMap gs = case getState gs of MainMenuState _ -> MM.theMap SettingsState _ -> S.theMap InfoState _ -> I.theMap CardSelectorState _ -> CS.theMap FileBrowserState _ -> FB.theMap CardsState _ -> C.theMap ParameterState _ -> P.theMap