Define graphical layout of the parameter menu.
annotation(Dialog(enable = true, tab = "General", group = "Parameters", showStartAttribute = false, colorSelector = false, groupImage = "modelica://MyPackage/Resources/Images/image.png", connectorSizing = false));
The annotations tab
and group
define the placement of the component or of variables in a dialog with optional tab and group specification. If enable = false
, the input field may be disabled [and no input can be given]. If showStartAttribute = true
the dialog should allow the user to set the start-value and the fixed attribute for the variable instead of the value-attribute [this is primarily intended for non-parameter values and avoids introducing a separate parameter for the start-value of the variable].
If colorSelector=true
, it indicates that an rgb-value selector can be presented for a vector of three elements and generate values 0..255
(the annotation should be usable both for vectors of Integers and Reals).
The annotation groupImage
references an image using an Modelica URI, and the image is intended to be shown together with the parameter-group (only one image per group is supported). Disabling the input field will not disable the image.
The value of the connectorSizing
annotation must be a literal false or true value [since if the value is an expression, the connectorSizing
functionality is conditional and this will then lead easily to wrong models]. If connectorSizing = false
, this annotation has no effect. If connectorSizing = true
, the corresponding variable must be declared with the parameter prefix, must be a subtype of a scalar Integer and must have a literal default value of zero [since this annotation is designed for a parameter that is used as vector dimension and the dimension of the vector should be zero when the component is dragged or redeclared; furthermore, when a tool does not support the connectorSizing annotation, dragging will still result in a correct model].
If connectorSizing = true
, a tool may set the parameter value in a modifier automatically, if used as dimension size of a vector of connectors. [The connectorSizing
annotation is used in cases where connections to a vector of connectors shall be made and a new connection requires to resize the vector and to connect to the new index (unary connections). The annotation allows a tool to perform these two actions in many cases automatically. This is, e.g., very useful for state machines and for certain components of fluid libraries.]
Annotation "Dialog" is defined as:
record Dialog parameter String tab = "General"; parameter String group = "Parameters"; parameter String groupImage = ""; parameter Boolean enable = true; parameter Boolean showStartAttribute = false; parameter Boolean connectorSizing = false; parameter Boolean colorSelector = false; parameter Selector loadSelector; parameter Selector saveSelector; end Dialog; record Selector parameter String filter=""; parameter String caption=""; end Selector;
A parameter dialog is a sequence of tabs with a sequence of groups inside them.
A Selector
displays a file dialog to select a file: Parameter filter
only shows files that fulfill the given pattern defined by "text1 (*.ext1);;text2 (*.ext2);
" to show only files with file extension *.ext1
or *.ext2
and displaying a description text "text1
" and "text2
", respectively. Parameter caption is the text displayed in the dialog menu. Parameter loadSelector
is used to select an existing file for reading, whereas parameter saveSelector
is used to define a file for writing.
model DialogDemo parameter Boolean b = true "Boolean parameter"; parameter Modelica.Units.SI.Length length "Real parameter with unit"; parameter Integer nInports=0 annotation(Dialog(connectorSizing=true)); parameter Real r1 "Real parameter in Group 1" annotation(Dialog(group="Group 1")); parameter Real r2 "Disabled Real parameter in group 1" annotation(Dialog(group="Group 1", enable = not b)); parameter Real r3 "Real parameter in Tab 1" annotation(Dialog(tab="Tab 1")); parameter Real r4 "Real parameter in Tab 1 and Group 2" annotation(Dialog(tab="Tab 1", group="Group 2")); StepIn stepIn[nInports]; ... end DialogDemo;