Re: Test for dialog existence
- To: mathgroup at smc.vnet.net
- Subject: [mg112731] Re: Test for dialog existence
- From: Albert Retey <awnl at gmx-topmail.de>
- Date: Tue, 28 Sep 2010 06:50:36 -0400 (EDT)
- References: <i7seje$pl6$1@smc.vnet.net>
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 -> None, > 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