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
|
module Main (main) where
|
||||||
|
|
||||||
|
import Control.Lens
|
||||||
|
|
||||||
|
import Monomer
|
||||||
|
import TextShow
|
||||||
|
|
||||||
import Lib
|
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 :: IO ()
|
||||||
main = do
|
main = do
|
||||||
putStrLn "haskell-clock"
|
putStrLn "haskell-clock"
|
||||||
t <- curTimeString
|
t <- curTimeString
|
||||||
putStrLn t
|
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
|
ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-export-lists -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints
|
||||||
build-depends:
|
build-depends:
|
||||||
base >=4.7 && <5
|
base >=4.7 && <5
|
||||||
|
, lens
|
||||||
|
, monomer
|
||||||
|
, text-show
|
||||||
, time
|
, time
|
||||||
default-language: Haskell2010
|
default-language: Haskell2010
|
||||||
|
|
||||||
@ -46,6 +49,9 @@ executable haskell-clock-exe
|
|||||||
build-depends:
|
build-depends:
|
||||||
base >=4.7 && <5
|
base >=4.7 && <5
|
||||||
, haskell-clock
|
, haskell-clock
|
||||||
|
, lens
|
||||||
|
, monomer
|
||||||
|
, text-show
|
||||||
, time
|
, time
|
||||||
default-language: Haskell2010
|
default-language: Haskell2010
|
||||||
|
|
||||||
@ -60,5 +66,8 @@ test-suite haskell-clock-test
|
|||||||
build-depends:
|
build-depends:
|
||||||
base >=4.7 && <5
|
base >=4.7 && <5
|
||||||
, haskell-clock
|
, haskell-clock
|
||||||
|
, lens
|
||||||
|
, monomer
|
||||||
|
, text-show
|
||||||
, time
|
, time
|
||||||
default-language: Haskell2010
|
default-language: Haskell2010
|
||||||
|
@ -22,6 +22,9 @@ description: Please see the README on GitHub at <https://github.com/gith
|
|||||||
dependencies:
|
dependencies:
|
||||||
- base >= 4.7 && < 5
|
- base >= 4.7 && < 5
|
||||||
- time
|
- time
|
||||||
|
- monomer
|
||||||
|
- lens
|
||||||
|
- text-show
|
||||||
|
|
||||||
ghc-options:
|
ghc-options:
|
||||||
- -Wall
|
- -Wall
|
||||||
|
Loading…
Reference in New Issue
Block a user