Simulink® includes a customization API that allows you to disable and hide controls (also referred to as widgets), such as text fields and buttons, on most dialog boxes. The customization API allows you to disable or hide controls on an entire class of dialog boxes, for example, parameter dialog boxes, by way of a single method call.
Before you customize a Simulink dialog box or class of dialog boxes, first make sure that the dialog box or class of dialog boxes is customizable. Any dialog box that appears in the dialog pane of Model Explorer is customizable. In addition, any dialog box that has dialog and widget IDs is customizable. To determine whether a dialog box is customizable, open the dialog box, enable dialog and widget ID display (see Widget IDs), and hover over a widget. If a widget ID appears, you can customize the dialog box.
Once you have determined that a dialog box or class of dialog boxes is customizable, write MATLAB® code to customize the dialog boxes. This entails writing callback functions that disable or hide controls for a specific dialog box or class of dialog boxes (see Write Control Customization Callback Functions) and registering the callback functions using the customization manager (see Register Control Customization Callback Functions). Simulink invokes the callback functions to disable or hide the controls whenever you open the dialog boxes.
This sl_customization.m
file disables the Browse button
on the Code Generation pane of the Configuration
Parameters dialog box for any model whose name contains engine
.
function sl_customization(cm) % Disable for standalone Configuration Parameters dialog box configset.dialog.Customizer.addCustomization(@disableRTWBrowseButton,cm); end function disableRTWBrowseButton(dialogH) hSrc = dialogH.getSource; % Simulink.RTWCC hModel = hSrc.getModel; modelName = get_param(hModel,'Name'); if ~isempty(strfind(modelName,'engine')) % Takes a cell array of widget Factory ID. dialogH.disableWidgets({'STF_Browser'}) end end
To test this customization:
Save the sl_customization.m
file
on the MATLAB path.
Refresh the customizations by entering sl_refresh_customizations
at
the command line or by restarting MATLAB (see Registering Customizations).
Open the sldemo_engine
model, for
example, by entering the command sldemo_engine
at
the command prompt.
Open the Configuration Parameters dialog box and look at the Code Generation pane to see if the Browse button is disabled.
A callback function for disabling or hiding controls on a dialog box accepts one argument: a handle to the dialog box object that contains the controls you want to disable or hide. The dialog box object provides methods that the callback function can use to disable or hide the controls that the dialog box contains.
The dialog box object also provides access to objects containing
information about the current model. Your callback function can use
these objects to determine whether to disable or hide controls. For
example, this callback function uses these objects to disable the Browse button
on the Code Generation pane of the Configuration
Parameters dialog box for any model whose name contains engine
.
function disableRTWBrowseButton(dialogH) hSrc = dialogH.getSource; % Simulink.RTWCC hModel = hSrc.getModel; modelName = get_param(hModel,'Name'); if ~isempty(strfind(modelName,'engine')) % Takes a cell array of widget Factory ID. dialogH.disableWidgets({'STF_Browser'}) end
Dialog box objects provide these methods for enabling, disabling, and hiding controls:
disableWidgets(widgetIDs)
hideWidgets(widgetIDs)
widgetIDs
is a cell array of widget identifiers
(see Widget IDs)
that specify the widgets to disable or hide.
Widget IDs identify a control on a Simulink dialog box. To determine the widget ID for a particular control, execute the following code at the command line:
cm = sl_customization_manager; cm.showWidgetIdAsToolTip = true
Open the dialog box that contains the control and hover over the control to display a tooltip
listing the widget ID. For example, hovering over the Start time field
on the Solver pane of the Configuration Parameters dialog box shows
that the widget ID for the Start time field is
StartTime
.
Note
The tooltip displays not customizable
for
controls that are not customizable.
To register control customization callback functions for an installation of Simulink, include code in the installation sl_customization.m
file
(see Registering Customizations) that invokes the
configset.dialog.Customizer.addCustomization
method on the
callbacks.
This method takes as an argument a pointer to the callback function to register. Invoking this method causes the registered function to be invoked before the dialog box is opened.
This example registers a callback that disables the Browse button on the Code Generation pane of the Configuration Parameters dialog box (see Write Control Customization Callback Functions).
function sl_customization(cm) % Disable for standalone Configuration Parameters dialog box configset.dialog.Customizer.addCustomization(@disableRTWBrowseButton,cm); end
Note
Registering a customization callback causes Simulink to invoke the callback for every instance of the class of dialog boxes specified by the method dialog box ID argument. You can therefore use a single callback to disable or hide a control for an entire class of dialog boxes. In particular, you can use a single callback to disable or hide the control for a parameter that is common to most built-in blocks. Most built-in block dialog boxes are instances of the same dialog box super class.