Re: DynamicModule Wormholes
- To: mathgroup at smc.vnet.net
- Subject: [mg99396] Re: [mg99371] DynamicModule Wormholes
- From: John Fultz <jfultz at wolfram.com>
- Date: Tue, 5 May 2009 05:38:46 -0400 (EDT)
- Reply-to: jfultz at wolfram.com
There is no documented way to get the associated integer, and the integer value
is only valid per session and for as long as DynamicModule exists. I.e., even
closing and re-opening the notebook, or cutting and pasting the cell with the
DynamicModule would change it.
I can think of two ways to get this information. One is to create a temporary
wormhole using InheritScope (say, to a newly created notebook with
Visible->False), read it down (e.g. with NotebookGet) and pull the number from
there. The second is to use the completely undocumented and experimental (which
means we reserve the right to change it in the future!) function shown here...
DynamicModule[{a},
Dynamic[FE`Evaluate[FEPrivate`ParentDynamicModule[]]]]
But all of this begs the question...why couldn't you have just used InheritScope
in the first place? It is documented, fully supported, does not depend upon
implementational details which might change, and so will continue to be
supported in future versions of Mathematica.
I can't think of an instance where you couldn't use InheritScope. The most
complex case I can conceive of is where you want to spawn a new wormholed
DynamicModule from outside the existing DynamicModule...but in that case, you
can use a Dynamic trigger to just cause that DynamicModule to which you want to
connect to do the work for you. E.g., something like...
Column[{
DynamicModule[{a = 5},
Dynamic[
If[trigger === True,
DynamicModule[{}, CreatePalette[Button["+", a++]]];
trigger = False];
a], Initialization -> (trigger = False)],
Button["create palette", trigger = True]
}]
Sincerely,
John Fultz
jfultz at wolfram.com
User Interface Group
Wolfram Research, Inc.
On Mon, 4 May 2009 05:59:56 -0400 (EDT), Michael wrote:
> Can anybody give me some hints on how to create a DynamicModule wormhole?
>
> The documentation gets me interested, then ends by saying:
> "By using DynamicModuleParent explicitly, it is possible to link up
> arbitrary existing DynamicModules, but doing so is tricky, and beyond
> the scope of this document."
>
> Apparently it is beyond the scope of actually doing at all, because I
> haven't been able to find anything else about it anywhere! I would
> think even if it was tricky, the trickiness could be encapsulated
> somehow?
>
> I did a bit of experimenting (basically by opening the palette example
> and examining the notebook) and found that DynamicModuleParent[]
> appears to expect an integer argument, perhaps a handle of some kind?
> However when I tried to replicate the wormhole using the same value
> for the working wormhole I did not have success.
>
> --Michael