Monomer hello world
This commit is contained in:
parent
381ffaf8c6
commit
2f1489aebb
56
app/Main.hs
56
app/Main.hs
@ -1,11 +1,65 @@
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Main (main) where
|
||||
|
||||
import Control.Lens
|
||||
|
||||
import Monomer
|
||||
import TextShow
|
||||
|
||||
import Lib
|
||||
|
||||
newtype AppModel = AppModel {
|
||||
_clickCount :: Int
|
||||
} deriving (Eq, Show)
|
||||
|
||||
data AppEvent = AppInit | AppIncrease deriving (Show, Eq)
|
||||
|
||||
makeLenses 'AppModel
|
||||
|
||||
buildUI
|
||||
:: WidgetEnv AppModel AppEvent
|
||||
-> AppModel
|
||||
-> WidgetNode AppModel AppEvent
|
||||
buildUI wenv model = widgetTree where
|
||||
widgetTree = vstack [
|
||||
label "Hello world",
|
||||
spacer,
|
||||
hstack [
|
||||
label $ "Click count: " <> showt (model ^. clickCount),
|
||||
spacer,
|
||||
button "Increase count" AppIncrease
|
||||
]
|
||||
] `styleBasic` [padding 10]
|
||||
|
||||
handleEvent
|
||||
:: WidgetEnv AppModel AppEvent
|
||||
-> WidgetNode AppModel AppEvent
|
||||
-> AppModel
|
||||
-> AppEvent
|
||||
-> [AppEventResponse AppModel AppEvent]
|
||||
handleEvent wenv node model evt = case evt of
|
||||
AppInit -> []
|
||||
AppIncrease -> [Model (model & clickCount +~ 1)]
|
||||
|
||||
|
||||
main :: IO ()
|
||||
main = do
|
||||
putStrLn "haskell-clock"
|
||||
t <- curTimeString
|
||||
putStrLn t
|
||||
guiMain
|
||||
|
||||
|
||||
guiMain :: IO ()
|
||||
guiMain = do
|
||||
startApp model handleEvent buildUI config
|
||||
where
|
||||
config = [
|
||||
appWindowTitle "Haskell Clock",
|
||||
--appWindowIcon "./assets/images/icon.png",
|
||||
appTheme darkTheme,
|
||||
appFontDef "Regular" "/usr/share/fonts/TTF/FiraCode-Regular.ttf",
|
||||
appInitEvent AppInit
|
||||
]
|
||||
model = AppModel 0
|
||||
|
@ -33,6 +33,9 @@ library
|
||||
ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-export-lists -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints
|
||||
build-depends:
|
||||
base >=4.7 && <5
|
||||
, lens
|
||||
, monomer
|
||||
, text-show
|
||||
, time
|
||||
default-language: Haskell2010
|
||||
|
||||
@ -46,6 +49,9 @@ executable haskell-clock-exe
|
||||
build-depends:
|
||||
base >=4.7 && <5
|
||||
, haskell-clock
|
||||
, lens
|
||||
, monomer
|
||||
, text-show
|
||||
, time
|
||||
default-language: Haskell2010
|
||||
|
||||
@ -60,5 +66,8 @@ test-suite haskell-clock-test
|
||||
build-depends:
|
||||
base >=4.7 && <5
|
||||
, haskell-clock
|
||||
, lens
|
||||
, monomer
|
||||
, text-show
|
||||
, time
|
||||
default-language: Haskell2010
|
||||
|
@ -22,6 +22,9 @@ description: Please see the README on GitHub at <https://github.com/gith
|
||||
dependencies:
|
||||
- base >= 4.7 && < 5
|
||||
- time
|
||||
- monomer
|
||||
- lens
|
||||
- text-show
|
||||
|
||||
ghc-options:
|
||||
- -Wall
|
||||
|
Loading…
Reference in New Issue
Block a user