On Wed, Nov 15, 2006 at 23:10:44 +0100, Eric Y. Kow wrote: > I've attached your example as a small .lhs file and makefile. For > Debian Linux, uncomment the -lwx_gtk2u_gl-2.6 line or otherwise, > modify to taste.
Here are the files, really attached this time. -- Eric Kow http://www.loria.fr/~kow PGP Key ID: 08AC04F9 Merci de corriger mon français.
Dear all, The following code doesn't seem to work properly. Either the main entry (m1/mp1) or it's sub menu entry (ms1/mps1) do not seem to propagate the event when pressed. It is possible to make it working by uncomments the lines where the menu commands are registered in the frame. I have the following two questions: 1. Why doesn't the plain code work. Am I missing something or doing something wrong? 2. Doesn't registering eventhandlers in the frame introduce a memory/resource leak, especially in the case of popups? Any suggestions or comments appreciated. Thanks. Kind regards, Maarten > module Main where > import Graphics.UI.WX > main :: IO () > main = start gui > gui :: IO () > gui = do > f <- frame [ text := "Hello world!" ] > > m <- menuPane [ text := "&Menu" ] > m1 <- menuItem m [ text := "Menu m1" > , on command := putStrLn "menu m1"] > -- set f [ on (menu m1) := putStrLn "menu m1" ] > menuLine m > sub <- menuPane [text := "Sub menu"] > ms1 <- menuItem sub [ text := "submenu ms1" > , on command := putStrLn "submenu ms1" ] > -- set f [ on (menu ms1) := putStrLn "submenu ms1" ] > menuSub m sub [ text := "Sub" ] > menuItem m [text := "E&xit", on command := close f] > > set f [menuBar := [m], on mouse := mouseEvent f, clientSize := sz 200 200 ] > return () > > mouseEvent f eventMouse = do > case eventMouse of > MouseRightDown mousePoint _ -> doPopup f mousePoint > _ -> return () > > doPopup f mousePoint = do > m <- makePopupMenu f "&Popup" "Doesnt' work..." > menuPopup m mousePoint f > objectDelete m > > makePopupMenu f c t = do > mp <- menuPane [ text := c ] > mp1 <- menuItem mp [ text := "Popup mp1" > , on command := putStrLn "popup mp1"] > -- set f [ on (menu mp1) := putStrLn "popup mp1" ] > menuLine mp > sub <- menuPane [text := "more text"] > mps1 <- menuItem sub [ text := "Popup mps1" > , on command := putStrLn "popup mps1"] > menuSub mp sub [ text := "Sub" ] > -- set f [ on (menu mps1) := putStrLn "popup mps1" ] > return mp
COMPILE=ghc -package wx #COMPILE+=-lwx_gtk2u_gl-2.6 ifeq ($(shell uname),Darwin) PREP=macosx-app else PREP=\# endif APPS= MenuProblems\ .PHONY: clean all: $(APPS) %: %.lhs $(COMPILE) -o $@ $< $(PREP) $@ clean: rm -rf $(APPS) *.o *.hi *.app
pgpEw1kdUHxM2.pgp
Description: PGP signature
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe