Re: [Haskell-cafe] submenu doesn't seem to work properly in wxhaskell

2006-11-15 Thread Eric Y. Kow
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


Re: [Haskell-cafe] submenu doesn't seem to work properly in wxhaskell

2006-11-15 Thread Eric Y. Kow
Hi,

Let's transfer this to wxhaskell-users.

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.

> 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.

It seems to work fine on my Mac at least, unless I'm misunderstanding
something.  Selecting the menubar items m1 and ms1 both putStr their
respective strings, as do mp1 and mps1 (right click on the main frame).

On the other hand, under Linux, m1 does not putStr, whereas the others
do.  Is this the problem you are experiencing?

-- 
Eric Kow http://www.loria.fr/~kow
PGP Key ID: 08AC04F9 Merci de corriger mon français.


pgpXSpqpru5In.pgp
Description: PGP signature
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


[Haskell-cafe] submenu doesn't seem to work properly in wxhaskell

2006-10-03 Thread Maarten

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

Code:



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


___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe