diff options
Diffstat (limited to 'main.hs')
| -rw-r--r-- | main.hs | 34 |
1 files changed, 34 insertions, 0 deletions
@@ -0,0 +1,34 @@ +{-# LANGUAGE OverloadedStrings #-} + +import Graphics.UI.Gtk +import qualified Control.Monad.IO.Class as Cl +import qualified RealCalc + +main :: IO () +main = do _ <- initGUI + w <- windowNew + windowSetKeepAbove w True + set w [ windowDecorated := False, windowTypeHint := WindowTypeHintDock, windowResizable := False ] + grid <- gridNew + input <- entryNew + output <- labelNew (Nothing :: Maybe String) + gridAttach grid input 0 0 1 1 + gridAttach grid output 0 1 1 1 + containerAdd w grid + _ <- w `on` deleteEvent $ do + Cl.liftIO mainQuit + return False + _ <- input `on` keyReleaseEvent $ do + k <- eventKeyName + let quit = Cl.liftIO mainQuit + case k of + "Escape" -> quit + "Return" -> quit + _ -> return () + s <- Cl.liftIO $ entryGetText input + case RealCalc.calculate s of + Nothing -> return () + Just r -> Cl.liftIO $ labelSetText output r + return False + widgetShowAll w + mainGUI |
