Mathematica 9 is now available
Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2010

[Date Index] [Thread Index] [Author Index]

Search the Archive

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"]]]]]];


  • Prev by Date: Re: Defining a function using common notation for absolute value (not Abs[x])
  • Next by Date: Re: Question on Solve
  • Previous by thread: Re: Test for dialog existence
  • Next by thread: Re: Test for dialog existence