⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 maindialog.hs

📁 HTK系列的
💻 HS
字号:
-- --------------------------------------------------------------------------- $Source: /repository/uni/htk/examples/toolkit/Maindialog.hs,v $---- HTk - a GUI toolkit for Haskell  -  (c) Universitaet Bremen---- $Revision: 1.6 $ from $Date: 2003/08/11 15:09:20 $  -- Last modification by $Author: cxl $---- -----------------------------------------------------------------------module Main(main) whereimport HTkimport ModalDialogimport DialogWinimport MarkupTextimport InputWinimport InputFormimport TextDisplaydata Test = Test {ent1 :: String, ent2 :: String, enu1 :: Int, ent3 :: Int, chck1 :: Bool} deriving Showmain :: IO ()main = do  htk <- initHTk[text "main window"]  but1 <- newButton htk [text "Modal Dialogs"]  but4 <- newButton htk [text "Non-modal dialogs"]  but5 <- newButton htk [text "Alerts"]  but6 <- newButton htk [text "Errors"]  but7 <- newButton htk [text "Warnings"]  but8 <- newButton htk [text "Confirmation"]  but8a <- newButton htk [text "Information"]   but9 <- newButton htk [text "Input window"]   but2 <- newButton htk [text " Quit example "]  but35 <- newButton htk [text "Simple text display"]  pack but1 []  pack but4 []  pack but35 []  pack but5 []    pack but6 []    pack but7 []    pack but8 []    pack but8a []    pack but9 []    pack but2 []  clickedbut1 <- clicked but1  spawnEvent (forever (clickedbut1 >>>    (do tp <- createToplevel [text "ModalDialog"]        but3 <- newButton tp [text "Ok"]        pack but3 []            clickedbut3 <- clicked but3        test <- modalDialog tp True (clickedbut3 >> 	                             (always (return "ModalDialogOk")))	putStrLn test)))  clickedbut35 <- clicked but35  spawnEvent (forever (clickedbut35 >>>    (do f  <- readFile "/etc/passwd"        createTextDisplay "Display /etc/passwd" f [size (50,10)] )))	  clickedbut4 <- clicked but4  spawnEvent (forever (clickedbut4 >>>    (do tp <- createToplevel [text "nonModalDialog"]        but3 <- newButton tp [text "Ok"]        pack but3 []            clickedbut3 <- clicked but3        test <- modalDialog tp False (clickedbut3 >>> 	                               (return "nonModalDialogOk"))        putStrLn test)))   clickedbut5 <- clicked but5  spawnEvent (forever (clickedbut5 >>>     createAlertWin "Your printer is on fire!" []))   clickedbut6 <- clicked but6  spawnEvent (forever (clickedbut6 >>>    createErrorWin "Segmentation violation.\nCore dumped." []))   clickedbut7 <- clicked but7  spawnEvent (forever (clickedbut7 >>>    createWarningWin "Please extinguish all cigarettes and switch offall mobile phones." []))   clickedbut8 <- clicked but8  spawnEvent (forever (clickedbut8 >>>    (do res <- createConfirmWin "Really delete all files?" []          putStrLn ("Result of confirmation: "++ show res))))					         clickedbut8a <- clicked but8a  spawnEvent (forever (clickedbut8a >>>    createMessageWin "This message will self-destruct in 10 seconds." []))  clickedbut9 <- clicked but9  spawnEvent (forever (clickedbut9 >>>     (do -- one adt to store the entered information and         -- the initial field values        let def = Test{ent1="HALLO WELT!", ent2="TEST", enu1=5, ent3=42, 		       chck1=True}	-- create the InputForm (as a function so there is no parent)	-- give as value (Just a) or Nothing	let iform p = newInputForm p (Just def) []	-- create the InputWindow with the formfunction	-- returns the InputWindow and the InputForm (which can be filled now)        (iwin,form) <- createInputWin "Please enter all relevant data below." iform []        -- add various fields here to the InputForm	newTextField form [size (5,5), selector ent1, text "Editor String",	                   modifier (\ old val -> old {ent1=val})]                                          :: IO (TextField Test String)        l<- newLabel form [text "This is some explanatory text."]        pack l [PadX (mm 5), Side AtLeft]        newEntryField form [text "Entry Int", selector ent3,                             modifier (\ old val -> (old {ent3=val}))]                                          :: IO (EntryField Test Int)        newEnumField form [0,1,2,3,4,5]           [text "Option Int", selector enu1,            modifier (\ old val -> old {enu1=val})] :: IO (EnumField Test Int)        newCheckboxField form True [text "The above is true: ",				    selector chck1, modifier (\o v-> o{chck1= v})]        -- wait for user input        res <- wait iwin True        case res of           Nothing -> putStrLn "Cancelled!"           Just val -> putStrLn("Result: "++ show val))))   clickedbut2 <- clicked but2  spawnEvent (forever (clickedbut2 >>> destroy htk)) -- game over.  finishHTk

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -