split mainLoop up into eventHandler and draw functions
This commit is contained in:
parent
72f9d51977
commit
3fab328e17
@ -22,6 +22,7 @@ description: Please see the README on GitHub at <https://github.com/jlam
|
||||
dependencies:
|
||||
- base >= 4.7 && < 5
|
||||
- aeson >= 1.4.4.0 && < 1.5
|
||||
- extra >= 1.6.17 && < 1.7
|
||||
- microlens-th >= 0.4.2.3 && < 0.5
|
||||
- ncurses >= 0.2.16 && < 0.3
|
||||
- raw-strings-qq >= 1.1 && < 1.2
|
||||
|
@ -21,10 +21,15 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
module Mtlstats (initState, mainLoop) where
|
||||
|
||||
import Control.Monad.Trans.State (StateT)
|
||||
import Control.Monad.Extra (whenM)
|
||||
import Control.Monad.Trans.Class (lift)
|
||||
import Control.Monad.Trans.State (StateT, get)
|
||||
import Data.Maybe (fromJust)
|
||||
import qualified UI.NCurses as C
|
||||
|
||||
import Mtlstats.Events
|
||||
import Mtlstats.Types
|
||||
import Mtlstats.UI
|
||||
|
||||
-- | Initializes the progran
|
||||
initState :: C.Curses ProgState
|
||||
@ -32,4 +37,8 @@ initState = return newProgState
|
||||
|
||||
-- | Main program loop
|
||||
mainLoop :: StateT ProgState C.Curses ()
|
||||
mainLoop = return ()
|
||||
mainLoop = do
|
||||
get >>= lift . draw
|
||||
w <- lift C.defaultWindow
|
||||
whenM (lift (fromJust <$> C.getEvent w Nothing) >>= handleEvent)
|
||||
mainLoop
|
||||
|
34
src/Mtlstats/Events.hs
Normal file
34
src/Mtlstats/Events.hs
Normal file
@ -0,0 +1,34 @@
|
||||
{- |
|
||||
|
||||
mtlstats
|
||||
Copyright (C) 2019 Rhéal Lamothe
|
||||
<rheal.lamothe@gmail.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or (at
|
||||
your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
-}
|
||||
|
||||
module Mtlstats.Events (handleEvent) where
|
||||
|
||||
import Control.Monad.Trans.State (StateT)
|
||||
import qualified UI.NCurses as C
|
||||
|
||||
import Mtlstats.Types
|
||||
|
||||
-- | Event handler
|
||||
handleEvent
|
||||
:: C.Event
|
||||
-- ^ The even being handled
|
||||
-> StateT ProgState C.Curses Bool
|
||||
handleEvent _ = return False
|
30
src/Mtlstats/UI.hs
Normal file
30
src/Mtlstats/UI.hs
Normal file
@ -0,0 +1,30 @@
|
||||
{- |
|
||||
|
||||
mtlstats
|
||||
Copyright (C) 2019 Rhéal Lamothe
|
||||
<rheal.lamothe@gmail.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or (at
|
||||
your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
-}
|
||||
|
||||
module Mtlstats.UI (draw) where
|
||||
|
||||
import qualified UI.NCurses as C
|
||||
|
||||
import Mtlstats.Types
|
||||
|
||||
-- | Drawing function
|
||||
draw :: ProgState -> C.Curses ()
|
||||
draw _ = return ()
|
Loading…
x
Reference in New Issue
Block a user