Re: Dynamic popupmenu AND dynamic variables
- To: mathgroup at smc.vnet.net
- Subject: [mg98608] Re: [mg98584] Dynamic popupmenu AND dynamic variables
- From: John Fultz <jfultz at wolfram.com>
- Date: Tue, 14 Apr 2009 06:16:26 -0400 (EDT)
- Reply-to: jfultz at wolfram.com
On Mon, 13 Apr 2009 03:35:22 -0400 (EDT), meitnik wrote:
> Hi,
>
> Ok, I finally got a working parts I needed, however, to work smart, I
> really hate to hardwire the creation of each group of popupmenus with
> unique variable names (I have a hundred to go!). Is there any way to
> create a rule, function etc so I can pass data for the menus and
> generate unique variable names within. I tried using module but it
> fails to work. Is this doable?
>
> use this code for showing me:
>
> mainMenu = {"hey", "you", "now"}
> stuff = {{"a", "1", "r"}, {"b", "ee", "23"}, {eg,rt,yy}};
>
> f[e_] := Switch[e, "hey", 1, "you", 2, "now", 3];
> CreatePalette[
> {
> Labeled[
> Row[
> {
> PopupMenu[Dynamic[x], mainMenu, Appearance -> "Palette"],
> Dynamic[y = stuff[[f[x], 1]];
> PopupMenu[Dynamic[y], stuff[[f[x]]], Appearance -> "Palette"]],
> ActionMenu[
> "", {
> "Insert" :> NotebookWrite[InputNotebook[], y],
> "Wrap" :> NotebookApply[InputNotebook[],
> RowBox[{y, "[", "\[SelectionPlaceholder]", "]"}]]
> }, ImageSize -> {4, 10}, FrameMargins -> 0
> ]
> }
> ]
> , lbl, Left]
> }
> ]
>
> I want to create parameters for mainmenu and stuff; somehow uniquely
> named variables for x and y on the fly in a sub routine thingy. Thank
> you.
Yeah, this isn't so good because you're using the values of the global variables
'x' and 'y'. You should use DynamicModule[] to define your variables. If you
put each set of constructs which isn't interdependent in a separate
DynamicModule[], then you can use the same variable names repeatedly without
worrying about conflicts.
E.g.,
Column[{
DynamicModule[{x, y}, Row[{...}]],
DynamicModule[{x, y}, Row[{...}]],
...}]
Sincerely,
John Fultz
jfultz at wolfram.com
User Interface Group
Wolfram Research, Inc.