MathGroup Archive 2009

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

Search the Archive

Re: Re: Manipulate: How to correctly adjust one

  • To: mathgroup at smc.vnet.net
  • Subject: [mg103071] Re: [mg103064] Re: [mg103049] Manipulate: How to correctly adjust one
  • From: Syd Geraghty <sydgeraghty at me.com>
  • Date: Mon, 7 Sep 2009 02:34:21 -0400 (EDT)
  • References: <200909061138.HAA01277@smc.vnet.net>

Hi Bob et al,

Two inputs.

1)


Based on Bob's input I have modified his code to make it a little bit  
easier to see what is happening.


Manipulate[
  Manipulate[
   Column[{"x     = " Text[x], "xmin  = " Text[xmin],
     "xmax  = " Text[xmax], "xstep = " Text[xstep]}], {{x,
     If[choice == 1, 5, 15], "x ="},
    xmin = If[choice == 1, 0, 10],
    xmax = If[choice == 1, 10, 20],
    xstep = If[choice == 1, .1, .5]}
                          ](*1st nested Manipulate*),
     {{choice, 1, "Select Range Choice"}, {1 -> "Low Range, 0-10",
    2 -> "High Range, 10-20"},
   ControlType -> SetterBar}
                         ](* Outer Manipulate*)


I am still struggling to understand the syntax of the SetterBar  
structure.

Bob used:      {{choice, 1, "select choice"}, {1 -> "UP", -1 ->  
"DOWN"},  ControlType -> SetterBar}

I was somewhat surprised that for the second choice of button that the  
value  "-1"  worked OK but I could not use != 1 (not equal 1).


Syntax::sntxb : Expression cannot begin with " != 1 -> High range,  
10-20".


I also note that:

{{choice, 1, "Select Range Choice"}, {1 -> "Low Range, 0-10", 2 ->  
"High Range, 10-20"},  ControlType -> SetterBar}

and

{{choice, 1, "Select Range Choice"}, {1 -> "Low Range, 0-10", "High  
Range, 10-20"},  ControlType -> SetterBar}

both work fine!

So what is the way to understand the relation between "choice" and the  
SetterBar list?

The Manipulate documentation does not help me in trying to understand  
this point, perhaps someone could explain it.

2)

In running some tests above I had a lot of Dynamic evaluations and  
several times I had to abort Mathematica because the kernel was "not  
responding to Dynamic".

Has any one recently upgraded to Snow Leopard and seen the same thing?  
I never ran in to this before on my Mac with any other version of OS X.

Thanks ... Syd




Syd Geraghty B.Sc, M.Sc.

sydgeraghty at mac.com

Mathematica 7.0.1 for Mac OS X x86 (64 - bit) (18th February 2009)
MacOS X V 10.6 Snow LeopardMacBook Pro 2.33 GHz Intel Core 2 Duo  2GB  
RAM



On Sep 6, 2009, at 4:38 AM, Bob Hanlon wrote:

>
> You can nest Manipulate
>
> Manipulate[
> Manipulate[
>  Text[x],
>  {{x, 1, "x ="},
>   If[choice == 1, 0, 1],
>   If[choice == 1, 10, 20],
>   0.1}],
> {{choice, 1, "select choice"},
>  {1 -> "UP", -1 -> "DOWN"},
>  ControlType -> SetterBar}]
>
>
> Bob Hanlon
>
> ---- Nasser Abbasi <nma at 12000.org> wrote:
>
> =============
> Hello.
>
> This is Mathematica 7.
>
> I have Manipulate control (a slider) which I want to dynamically  
> adjust its
> initial value and maximum value based on what one selects as a  
> choice from
> another control (SetterBar) and also change the position of the  
> slider (i.e.
> the current value of the slider) based on the choice selected.
>
> The following code below seems to work initially. Using 'If'  
> statement, I
> check the current choice, and set the initial and maximum value of the
> slider.
>
> The problem though is that the current value of the slider (i.e. the  
> current
> position of the slider) remains at whatever value it was before the  
> user
> changed the choice, and this could result in the current value of  
> the slider
> being larger than the maximum being set for the new choice.
>
> What I want is the following: When the user selects a new choice  
> (from the
> SetterBar), I want to reset the current position on the slider as  
> well the
> initial and the maximum value.
>
> Here is the code to help explain:
>
> Manipulate[Text[x],
>
>  {{x, 1, "x="}, If[choice == 1, 0, 1],    If[choice == 1, 10, 20],  
> 0.1},
>
>  {{choice, 1, "select choice"},  {1 -> "UP", -1 -> "DOWN"},  
> ControlType ->
> SetterBar}
>
> ]
>
> So, when one selects UP, I change the initial slider value to start  
> at 1
> instead of at 0, and made the maximum slider to be 10 instead of 20.
> However, the value of 'x' itself could be at say 12 at this time  
> (becuase
> the user was moving it), and so it overflows now.
>
> How can I also update 'x' to start at some specific value each time  
> the user
> changes the choice from UP to DOWN or from DOWN to UP?  Putting  
> another If
> statement does NOT work:
>
> Manipulate[Text[x],
>
> {{x, If[choice == 1, 3, 5], "x="},   If[choice == 1, 0, 1], If 
> [choice == 1,
> 10, 20], 0.1},
>
>  {{choice, 1, "select choice"}, {1 -> "UP", -1 -> "DOWN"},
>   ControlType -> SetterBar}
>
> ]
>
> I know I need to use Dynamic[] somewhere, but I not sure where and  
> how to
> force current slider value to rest each time the setterbar is  
> clicked. I
> need some sort of action associated with SetterBar which I can use  
> each time
> its value changes, but SetterBar has no such option.
>
> any help is appreciated.
>
> --Nasser
>
>
>


  • Prev by Date: Re: How reliable are mathematica's special functions? (Hypergeometric
  • Next by Date: Re: Re: Manipulate: How to correctly adjust one
  • Previous by thread: Re: Manipulate: How to correctly adjust one control
  • Next by thread: Ukkonen's Suffix Tree Algorithm in Mathematica