Re: Manipulate with Wrapping SetterBars
- To: mathgroup at smc.vnet.net
- Subject: [mg80385] Re: Manipulate with Wrapping SetterBars
- From: Albert <awnl at arcor.net>
- Date: Tue, 21 Aug 2007 04:57:59 -0400 (EDT)
- References: <fabgb6$i7i$1@smc.vnet.net>
Hi David,
> I always find that there is a disconnect in the documentation in specifying
> the operation of various ControlTypes in Manipulate. Various Control
> elements have options but it is never quite clear how these options are to
> be supplied to the Manipulate statement.
>
> So here is a simple case that has me stymied. I want to display a long
> SetterBar and I want it to wrap to the size of the displayed expression.
> But I can't make the SetterBar wrap even though, according to the
> documentation, there is a SetterBar option that is suppose to make it
> wrap - and does for one example.
>
> nvalues = Flatten[Table[{2, 3, 5, 7, 10} 10^i, {i, 0, 4}]];
> Manipulate[
> Row[{Text["The value of the parameter n used in this case is: "],
> n}],
> {{n, First[nvalues], "n: "}, nvalues, ControlType -> SetterBar,
> Appearance -> "Row"}]
>
> I don't think the Appearance->"Row" option is even being picked up.
>
> And even if it does get picked up, how can I control the wrapping
> width of
> the SetterBar?
I don't know whether this is possible without extra effort. The line
wrapping seems to be relativ to the CellOption PageWidth of the
containing Cell, which you can check by manually changing it. I don't
know if and how you can make the line wrapping depend on the displayed
expression directly. It should be possible to get something to work with
some clever usage of Dynamic and/or if the Manipulate is shown in an
extra Window, but since the documentation is not very verbose, it would
take some experimental effort to find out. The following lets you set
the PageWidth dynamically, so if you can extract the ImageSize of the
displayed expression, you can set the PageWidth correspondingly:
pw=700;
ExpressionCell[Manipulate[Row[{Text["The value of the parameter n used
in this case is: "],n}],{{n,First[nvalues],"n:
"},nvalues,ControlType->SetterBar,Appearance->"Row"}],PageWidth->Dynamic[pw]
]
now when changing e.g. pw=500 you will see the wrapping will change.
hth,
albert