import Graphics.UI.Gtk import Graphics.UI.Gtk.Gdk.GC --------------------------------------------------------------------------- main :: IO () -- choose the one you want! --main = main1 --main = main2 --main = main3 --main = main4 --main = main5 main = main6 --main = main7 --------------------------------------------------------------------------- -- window main1 :: IO () main1 = do initGUI win <- windowNew windowSetTitle win "My Title" win `onDestroy` mainQuit widgetShowAll win mainGUI --------------------------------------------------------------------------- -- button main2 :: IO () main2 = do initGUI win <- windowNew windowSetTitle win "My Title" win `onDestroy` mainQuit but <- buttonNewWithLabel "Click Me!" but `onClicked` putStrLn "someone clicked on me!" containerAdd win but widgetShowAll win mainGUI --------------------------------------------------------------------------- -- layout main3 :: IO () main3 = do initGUI win <- windowNew windowSetTitle win "My Title" win `onDestroy` mainQuit apa <- buttonNewWithLabel "Apa" bepa <- buttonNewWithLabel "Bepa" cepa <- buttonNewWithLabel "Cepa" row <- hBoxNew False 5 containerAdd row apa containerAdd row bepa containerAdd row cepa containerAdd win row widgetShowAll win mainGUI --------------------------------------------------------------------------- -- label main4 :: IO () main4 = do initGUI win <- windowNew windowSetTitle win "My Title" win `onDestroy` mainQuit lab <- labelNew Nothing labelSetText lab "Some other text" containerAdd win lab widgetShowAll win mainGUI --------------------------------------------------------------------------- -- entry main5 :: IO () main5 = do initGUI win <- windowNew windowSetTitle win "My Title" win `onDestroy` mainQuit ent <- entryNew entrySetText ent "(type here and press Return)" ent `onEntryActivate` do s <- entryGetText ent print s containerAdd win ent widgetShowAll win mainGUI --------------------------------------------------------------------------- -- canvas main6 :: IO () main6 = do initGUI win <- windowNew windowSetTitle win "My Title" win `onDestroy` mainQuit can <- drawingAreaNew can `onSizeRequest` return (Requisition 500 300) can `onExpose` drawCanvas1 can -- choose here! containerAdd win can widgetShowAll win mainGUI drawCanvas1 :: DrawingArea -> event -> IO Bool drawCanvas1 can _evt = do dw <- widgetGetDrawWindow can drawWindowClear dw gc <- gcNew dw drawLine dw gc (10,10) (100,100) return True -- everything is OK drawCanvas2 :: DrawingArea -> event -> IO Bool drawCanvas2 can _evt = do dw <- widgetGetDrawWindow can drawWindowClear dw redAndThick <- gcNewWithValues dw newGCValues{ foreground = red , lineWidth = 5 } drawLine dw redAndThick (10,10) (100,100) return True -- everything is OK where red = Color 65535 0 0 --------------------------------------------------------------------------- -- mouse main7 :: IO () main7 = do initGUI win <- windowNew windowSetTitle win "My Title" win `onDestroy` mainQuit can <- drawingAreaNew can `onSizeRequest` return (Requisition 500 300) can `onButtonPress` mouseClick can containerAdd win can widgetShowAll win mainGUI mouseClick :: DrawingArea -> event -> IO Bool mouseClick can _evt = do p <- widgetGetPointer can putStrLn ("clicked: " ++ show p) return True -- everything is OK ---------------------------------------------------------------------------