Hot answers tagged controls
10
I want to give an answer using SyntaxQ and SyntaxLength. SyntaxQ takes a string and returns True, when the string has correct Mathematica syntax. On the other hand SyntaxLength returns an integer which shows up to what character the string is correct syntax. If the integer is larger than the length of the input string it indicates, that more input is needed. ...
9
The answer is that yes, you can affect the appearance of components of a control but the problem in this case is that your list of appearances
appearances = {"DialogBox", "Palette", "FramedPalette", "Frameless"};
are only valid Button appearances and that is why they have no effect of ButtonBar or TabView. When you use valid appearances it works fine:
...
8
I am not sure why you can't just use Grid?
Manipulate[Plot[Sin[x], {x, -lim, lim}],
Grid[{
{Control[{{lim, Pi, "limit"}, Pi/10, 2 Pi, Pi/10,
ImageSize -> Tiny}], Button["A", ImageSize -> 100]},
{Button["B", ImageSize -> 100], Button["C", ImageSize -> 100]},
{Button["D", ImageSize -> 100], Button["E", ImageSize -> 100]}
...
8
You have to study the documentation carefully, but I agree that help-pages like the one of Manipulate are very densely packed with information. In the Details and Options section you find how to set options for controls:
{{u,...},...,opts} control with particular options
The non-obvious part is, that you have to set the ControlType as well to make ...
7
If you look at underlying code:
ListAnimate[Table[Plot[Sin[n x], {x, 0, 10}], {n, 25}]] // InputForm
at the end you'll find:
which leads to a trick:
ListAnimate[Table[Plot[Sin[n x], {x, 0, 10}], {n, 25}]] /.
HoldPattern[AppearanceElements -> _] -> (AppearanceElements -> None)
In the spirit of @Mr.Wizard comment you can also do something ...
7
You can always create your own custom controls. This is a lot of work, but it also gives you unlimited flexibility. You can even create completely new kinds of control.
Scroll down to the last section here to see an example.
If you're aiming for a custom TabView-like control, I'd start with PaneSelector.
Here's a primitive example (just a start, not ...
6
One way to achieve this would be to define a "clipping" function that applies the constraints to the points:
clip[pts_] :=
ReplacePart[pts /. {x_, y_} /; y > x :> {x, x}, {-1, 1} -> 1]
We can then invoke that function whenever the set of points is changed. To use this strategy, it is convenient to use a single locator control for all points:
...
6
If I use the option Method->"Queued" within Button, this works
Button["Export",
Export[SystemDialogInput["FileSave"], Plot[Cos[x], {x, 0, Pi}],
"PDF"], Method -> "Queued"]
Otherwise, "Preemptive" will be the default, making it possible that not enough time is allocated for the Button action to complete. See the reference docs on ...
6
DynamicModule[{n = 3,
prefTable = ConstantArray[0, {3, 20, 7}],
lastName = ConstantArray["", {3}],
firstName = ConstantArray["", {3}],
ws = ConstantArray[0, {3}],
wsAmount = ConstantArray[Null, {3}],
wkndPref = ConstantArray[Null, {3}],
tabLabel = Array["Worker " <> ToString[#] &, {3}],
hours = DateString[DatePlus[{2012, 1, 1, 7, ...
6
You can use the Style setting ControlRendering to display controls in their generic form:
Rotate[Style[Button["Toto", Null], ControlsRendering -> "Generic"], 0]
If you don't see the bottom line you need to set the Buttons ImageMargins:
Rotate[Style[Button["Toto", Null, ImageMargins -> 1],
ControlsRendering -> "Generic"], 0.0]
5
I think HorizontalGauge is just buggy. It shouldn't trigger a dynamic update when you change its state but it does. Simplest case:
HorizontalGauge[Dynamic[x]] // Dynamic
I would try using this "fixed" version
horizontalGauge = Refresh[HorizontalGauge[##], None] &
By the way, you could stick this into the built-in symbol's definition, and perhaps if ...
5
Computing Processes are the number of main kernels you can use at the same time. Therefore, you can have on the same computer two Mathematica sessions running and while one computation is running, you can use the other one to do something else. It has nothing to do with your license which is valid for only one computer.
The probably easiest method if you ...
4
One can set variables equal to the controller values like below. They can then be used in a computation. Here I just scaled them by a.
Manipulate[
{x0, y0, z0} = ControllerState[{"X", "Y", "Z"}, ControllerPath -> {"Sudden Motion Sensor"}];
a {x0, y0, z0},
{a, 1, 100}
]
Controlling the view point of 3D graphics could be fun, except that it's ...
4
The problem is that Dynamic is preventing ToExpression from evaluating to a symbol. When you drag the slider it's trying to evaluate:
ToExpression[ToString[h] <> ToString[1] = 0.1
and you get a message about not being able to set the value of ToExpression.
I would use With to create the symbols and insert them into the Dynamic:
w = ...
4
This will work. The only change is that I removed the option ControlType and added a "slider function" at the end of the control for v. Note that Pinguin Dirks suggestion in the comments also works, is more convenient and he beat me to it :). Still I guess this code shows how you can have even more control over your slider.
Manipulate[
With[{ar = 1/(2*Pi), ...
3
Adding the option TrackedSymbols :> {LowerLimit, UpperLimit} to the Dynamic[..] that holds HorizontalGauge fixes the issue:
DynamicModule[{y = 1, LowerLimit = 1, UpperLimit = 10},
Column[{Row[{PopupMenu[Dynamic[LowerLimit], {1, 2, 3, 4}],
PopupMenu[Dynamic[UpperLimit], {5, 6, 7, 8, 9, 10}]}],
Dynamic[HorizontalGauge[Dynamic[y], {LowerLimit, ...
3
The 2 CONTROLLING processes effectively means you can run 2 front-ends at the same time. This might be, say, Mathematica 8 and Mathematica 9 on the same machine at the same time, or one copy of Mma 9 on your desktop and another on your laptop (if your License allows same: check with Wolfram).
The COMPUTING processes (8) are the number of slaves / cores you ...
3
This is only a partial answer -- maybe only a fraction of a partial answer.
You define only one grid,week, which appears on all three panels. This means each of your workers is entering his/her choices into the same checkboxes, effectively undoing each other's choices. You really need a function that will return a new copy of your grid each time it is ...
3
The problem seems to be a bug in Button that occurs (at least) in Mathematica 8.0.4 running on Apple OS X. Here is what I determined. The following expression fails
Button["Export",
Export[SystemDialogInput["FileSave", "untitled.pdf"],
"******", "PDF"]]
while the following two expression work
Export[SystemDialogInput["FileSave", ...
3
A natural solution is something like this:
Manipulate[x, {x, 0, 1}, {{x, 0, ""}, 0, 1, Trigger,
AppearanceElements -> "PlayPauseButton"}]
or like this:
Manipulate[x, {x, 0, 1, Animator, AppearanceElements ->
{"ProgressSlider", "PlayPauseButton"}, AnimationRunning -> False}]
where AppearanceElements control what type of ...
3
Maybe something like this:
Rotate[Framed[
Button["Toto", Null, Appearance -> "Frameless",
BaseStyle -> {"GenericButton", 16, Bold}], RoundingRadius -> 5,
Background -> GrayLevel[.95]], 0]
Rotate[Framed[
Button["Toto", Null, Appearance -> "Frameless",
BaseStyle -> {"GenericButton", 16, Bold}], RoundingRadius -> 5,
...
3
I read an answer to another question that made use of Clock and the proverbial light bulb lit up in my head -- so now I can answer my own question, at least in the part that asks "suggest a way to fix it".
Manipulate[
If[Clock[{False, True}, 3, 1],
content = {Black, Circle[], Red, Disk[{0., 0.}, r]}; bool = True];
Graphics[{content}, ...
3
Depending on what you're going to do next, this might be useful:
x = {.1, .2, .3, .4, .5};
Outer[Slider[Dynamic[x[[#1]]], {0, 1}] &, Range[Length[x]]]
This creates a collection of sliders, one for each element of x. The values of x provide the initialization, and when you move a slider, the corresponding element of x changes. You can see this ...
3
I was just working along the lines of @Rojo's comment:
DynamicModule[{i = 0, state = False},
Dynamic[If[ControllerState["Button 1"],
If[state, i = i + 1; state = False], If[! state, state = True]]; i]
]
Sometimes it appears that the mouse action is intercepted by Mathematica. You may find that unnacceptable.
2
Since
ListAnimate generates a Manipulate object containing an Animator (docs)
With explicit lists as input, say,
list = Table[Plot[Sin[x + n], {x, 0, 3 Pi}], {n, 0, 2 Pi, Pi/20}];
the animation produced by ListAnimate[list...] can also be produced using Manipulate or Animator specifying the Animator option settings directly (instead of ...
2
I don't know how to do that. Perhaps you are open to an alternative?
animate[list_List, rate_?Positive] := DynamicModule[{x = list},
Dynamic[First[x = RotateLeft@x], UpdateInterval -> 1/rate, TrackedSymbols -> {}]]
list = Table[Plot[Sin[x + n], {x, 0, 3 Pi}], {n, 0, 2 Pi, Pi/20}];
animate[list, 15]
2
For #1. The appearance of the controls is set by the code in the file
FileNameJoin[{$InstallationDirectory, "SystemFiles", "FrontEnd", "TextResources", "Controls.tr"}]
So if you have V7, 8, 9 make copies of that file and then cut and paste the code into a notebook and evaluate and see what the graphics look like.
For #2. I think the answer for #1 ...
2
For 1. and 2., all I can say is that I did not notice any change (the generic style is used when exporting to Flash or PDF) and that I don't think you can find out what a control will look like without trying it on a different OS.
For 3., you can use
ControlsRendering -> Dynamic@If[$OperatingSystem === "Windows", Automatic, "Generic"]
The Dynamic ...
2
After reading some of the comments, I thought I'd post this solution I had done some years ago. It does not work through the Bookmarks. As noted, that requires converting things like FE`a$$712 to $CellContext`a$$ -- someone may know how to do that easily. I suspect it could be done.
The code below accomplishes the same intention as the OP. It saves the ...
2
Here is a prof of principles that saves the bookmarks (Typeset`bookmarkList$$) to a string (it could equally well be a file).
But it only works if LocalizeVariables -> False is used, which is quite a limitation.
Manipulate[
Plot[Fun[2 Pi freq x], {x, 0, 2}, Axes -> showAxes,
PlotLabel -> If[showPlotLabel, plotLabel, ""]], {Fun, {Sin, Cos}}, ...
Only top voted, non community-wiki answers of a minimum length are eligible

