How to use gs:menu() as a pop-up inside a frame/canvas?
Gunilla Arendt
gunilla@REDACTED
Mon Jan 28 09:49:33 CET 2002
Hi,
A popup menu can have a menubutton, window or frame as parent, but not
a canvas. Below is a simple example of using a popup menu inside a
frame.
/ Gunilla
-module(gsmenu).
-export([start/0, init/0]).
start() -> spawn(?MODULE, init, []).
init() ->
GS = gs:start(),
Win = gs:window(GS, [{width,200}, {height,100}, {buttonpress,true},
{map,true}]),
Frm = gs:frame(Win, [{x,0}, {y,0}, {width,200}, {height,100}]),
Menu = gs:menu(Frm),
gs:menuitem(Menu, [{label,{text,"Item 1"}}]),
gs:menuitem(Menu, [{label,{text,"Item 2"}}]),
gs:menuitem(Menu, [{label,{text,"Item 3"}}]),
loop(Menu).
loop(Menu) ->
receive
{gs, _Obj, buttonpress, _Data, [_Button,X,Y|_]} ->
gs:config(Menu, {post_at, {X,Y}}),
loop(Menu);
_ ->
loop(Menu)
end.
Ed Landa wrote:
>
> I've been trying to come up with the solution to this problem all day.
> Unfortunately, the docs only seem to hint at this feature being available and I
> can't find any similar contributed code anywhere.
>
> How can I create a pop-up menu inside of a frame? I have a canvas with several
> items on it, and I would like to bring up a menu when a user right-clicks on an
> item. I can build the menu just fine, but it never displays. I've tried
> config'ing the object with {map, true}, {active,true} and {post_at,{X,Y}} in
> all different combinations, but nothing happens.
>
> While looking thru the gs source, I noticed some comments about comments about
> some config options being "not implemented". Could it be that the pop-up stuff
> was never quite completed?
>
> Any assistance would be greatly appreciated. I can provide my test code if
> needed.
>
> Thanks,
> Ed
More information about the erlang-questions
mailing list