Re: Test for dialog existence

*To*: mathgroup at smc.vnet.net*Subject*: [mg112739] Re: Test for dialog existence*From*: Chris Degnen <degnen at cwgsy.net>*Date*: Wed, 29 Sep 2010 04:12:02 -0400 (EDT)*References*: <i7seje$pl6$1@smc.vnet.net> <i7shar$rmf$1@smc.vnet.net>

On 28 Sep, 11:51, Albert Retey <a... at gmx-topmail.de> wrote: > Hi, > > > > > > > Hi. Can anyone suggest how to test for the existence of a dialog? > > > In the example below a dialog is created containing a plot which can > > be modified. However it seems to be difficult to test whether the > > dialog has been closed. > > > This creates the dialog: > > > BeginPackage["TestExample`TestDialog`"]; > > CreateTestDialog::usage = "CreateTestDialog[] creates a test dialog"; > > Begin["`Private`"]; > > CreateTestDialog[] := > > Module[{}, n = 4; > > CreateDialog[ > > plot = Dynamic[ > > ParametricPlot[{Sin[t], Sin[n t]}, {t, 0, 2 Pi}, Ticks -> N= one, > > ImageSize -> 100]]]]; > > End[]; > > EndPackage[]; > > > CreateTestDialog[]; > > > And the plot can be modified by various means: > > > TestExample`TestDialog`Private`n = 8; > > > TestExample`TestDialog`Private`n = 2; > > > But how can I tell if the dialog has been closed? The dynamic plot > > object still shows as existing afterwards: > > > NameQ["TestExample`TestDialog`Private`plot"] > > Here is one possibility, instead of the WindowTitle you could also use a > certain value in the TaggingRules where you could "hide" the additional > information which would identify the dialog, but it would mean some > extra bits of code: > > BeginPackage["TestExample`TestDialog`"]; > CreateTestDialog::usage="CreateTestDialog[] creates a test dialog"; > Begin["`Private`"]; > CreateTestDialog[]:=Module[{},n=4; > CreateDialog[plot=Dynamic[ParametricPlot[{Sin[t],Sin[n t]},{t,0,2 > Pi},Ticks->None,ImageSize->100]],WindowTitle->"TestDialog"] > ]; > End[]; > EndPackage[]; > CreateTestDialog[]; > > (*this will check whether there is an open dialog: *) > Length[Select[Notebooks[],CurrentValue[#,WindowTitle]==="TestDialog= "&]]>0 > > on the other hand, I have a feeling that you might implement something > too complicated for what you really want to achieve. Maybe you would get > some useful tips if you try to give us a bigger picture of what you are > trying to do... > > hth, > > albert Thanks Albert. That will come in very hand for maintaining single instances of dialogs. Also I see, if a dialog exists and it is called again I can raise the existing one: If[Length[Select[Notebooks[], CurrentValue[#, WindowTitle] === "TestDialog" &]] > 0, SetSelectedNotebook[Part[Notebooks[], First[First[Position[ Map[CurrentValue[#, WindowTitle] &, Notebooks[]], "TestDialog"]]]]]];