# ControlsRendering and operating systems

Controls, such as those appearing in Manipulate constructs, are by default rendered depending on the operating system. Wrapping everything in Style[..., ControlsRendering->"Generic"] makes sure that the controls' appearance is independent of the operating system (right?).

My question now is split into three parts:

1. Does the rendering depend on the version of Mathematica es well? Specifically, is there a difference between versions 7, 8 and 9?

2. Is there a way to estimate how the controls will be rendered for another operating system? I.e. can I get a rough idea (I'm using Windows 7) how my Manipulate will look like on a machine with, e.g., Mac OS X 10.7? It would be enough for me to find out if any of the sizes of things like Slider2D or SetterBar objects change drastically. Does the ImageSize option for Slider2D ensure a consistent size even on different operating systems?

3. Can one define a function that makes sure that the default rendering is used on machines with windows, and the "Generic" style is used for non-Windows computers?

-

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 will make sure that this will not be evaluated only once when you create the control, but will stay "inlined" in the notebook and will be re-run every time you open it. (To avoid confusion, note that the syntax option -> Dynamic[...] will only work in a few places, and only in expressions which are handled by the front end, such as graphics, styling and controls. It won't work in a kernel function like FindRoot which is executed/*evaluated* as opposed to being just displayed like Style is.) - add comment 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 covers #2 as well.

For #3. @Szabolcs has answered this.

-
So the things accessible with FrontEndResource are all in the .tr files? –  Szabolcs Dec 18 '12 at 20:36
Yes -- lots of interesting things in there, but be careful making changes. I'm sure Wolfram would say never make changes. –  Mike Honeychurch Dec 18 '12 at 20:39