Monomer hello world

This commit is contained in:
Greg Shuflin 2023-03-01 00:07:42 -08:00
parent 381ffaf8c6
commit 2f1489aebb
3 changed files with 67 additions and 1 deletions

View File

@ -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

View File

@ -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

View File

@ -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