haddock description ------------------- XTC: eXtended & Typed Controls for wxHaskell
The XTC library provides a typed interface to several wxHaskell controls.
* radio view (typed radio box)
* single-selection list view (typed single-selection list box)
* muliple-selection list view (typed multiple-selection list box)
* choice view (typed choice box)
* value entry (typed text entry)
XTC controls keep track of typed values and items, rather than being string
based. Selections in XTC controls consist of actual values instead of indices.
my comments
-----------
The XTC library was developed in Utrecht University, and has been used
in a large wxhaskell appplication called Dazzle. You can read more
about XTC and Dazzle in their Haskell Workshop paper from 2005
http://www.cs.uu.nl/dazzle/f08-schrage.pdf
I attach a small screenshot and sample code (the sample code is
slightly updated from the hackage version to better convey the
possible usefulness of XTC)
--
Eric Kow <http://www.nltg.brighton.ac.uk/home/Eric.Kow>
PGP Key ID: 08AC04F9
import Graphics.UI.WX
import Graphics.UI.XTC
data Fruit = Apple | Banana | Orange deriving Show
instance Labeled Fruit where
toLabel = show
instance Labeled Float where
toLabel = show
main :: IO ()
main = start $
do {
; f <- frame []
; counterV <- mkValueEntry f [ typedValue := Just 1 ]
; listV <- mkListView f [ typedItems := ["abc", "def"]
, enabled := True
]
; radioV <- mkRadioView f Vertical [ 2.17, 3.14 :: Float ] []
; choiceV <- mkChoiceView f [ typedItems := [ Apple, Banana, Orange ]
, enabled := True
]
-- ; comboV <- mkComboView f [ typedItems := ["sdfsdf", "fdssd"]
-- , enabled := True
-- ]
; t <- textCtrl f []
; ve <- mkValueEntry f [ typedValue := Just True ]
-- ; set t [ on (change counterV) := \i -> set t [ text := show i ] ]
; bUp <- button f [ text := "increase"
, on command := set counterV [ typedValue :~ fmap (+1)
] ]
; bDown <- button f [ text := "decrease"
, on command := set counterV [ typedValue :~ fmap (+
(-1::Int)) ]]
; let refreshT =
do { -- s1 <- get comboV typedSelection
; s1 <- get radioV typedSelection
; s2 <- get listV typedMaybeSelection
; s3 <- get counterV typedValue
; s4 <- get choiceV typedMaybeSelection
; set t [ text := unlines [ "radio: " ++ show s1
, "list: " ++ show s2
, "counter: " ++ show s3
, "choice: " ++ show s4 ] ]
}
; set bUp [ on command :~ (>> refreshT) ]
; set bDown [ on command :~ (>> refreshT) ]
; set listV [ on select :~ (>> refreshT) ]
; set radioV [ on select :~ (>> refreshT) ]
; set choiceV [ on select :~ (>> refreshT) ]
-- ; bChangeHandler <- button f [ text := "change handler"
-- , on command := set t [ on (change counterV)
:= \i -> set t [text := "<<"++show i++">>"] ]]
; set f [ layout := column 5 [ row 5 [ Graphics.UI.WX.label "Counter
value:", widget counterV ]
, hfloatCenter $ row 5 [ widget bUp, widget
bDown ]
--, hfloatCenter $ widget bChangeHandler
, widget listV
, widget radioV
, widget choiceV
-- , widget comboV
, widget ve
, glue
, hfill $ widget t
]
]
}
<<attachment: xtc-example.png>>
pgpCpwQOcqH3A.pgp
Description: PGP signature
------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________ wxhaskell-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/wxhaskell-users
