Main Content

ToggleTool

Toggle tool UI component

  • Toggle tool UI component

Description

A toggle tool UI component is a button in a toolbar that changes state when an app user presses it. Use the ToggleTool object to modify the appearance and behavior of a toggle tool after you create it.

Creation

Create a toggle tool in a figure using the uitoggletool function.

Properties

expand all

Toggle Tool

Toggle button state, specified as 'off' or 'on', or as numeric or logical 0 (false) or 1 (true). A value of 'on' is equivalent to true, and 'off' is equivalent to false. Thus, you can use the value of this property as a logical value. The value is stored as an on/off logical value of type matlab.lang.OnOffSwitchState.

When this property value is 'on', the toggle button appears in the down (depressed) position. When this property value is 'off', the toggle button appears in the up position. Changing the state causes the appropriate OnCallback or OffCallback function to execute.

Icon source or file, specified as a character vector, string scalar, or an m-by-n-by-3 truecolor image array. If you specify a character vector or string scalar, it can be an image file name on the MATLAB® path or a full path to an image file. If you plan to share your app with others, put the image file on the MATLAB path to facilitate app packaging. Supported image formats include JPEG, PNG, GIF, and SVG.

If you specify an m-by-n-by-3 array, it is interpreted as a truecolor image array. For more information about truecolor image arrays, see Working with Image Types in MATLAB.

If the image you specify is larger than 16-by-16 pixels, then the Icon property scales the image down so that the entire image fits within the tool. If the image you specify is smaller than 16-by-16 pixels, it is not scaled up to fit the available space.

The Icon property is supported only in App Designer and uifigure-based apps. If the Icon and CData properties are both set, then the CData property is ignored.

Example: 'icon.png' specifies an image file on the MATLAB path.

Example: 'C:\Documents\icon.png' specifies a full path to an image file.

Image array, specified as an m-by-n-by-3 truecolor image array. The values in the array can be:

  • Double-precision values between 0.0 and 1.0

  • uint8 values between 0 and 255

To prevent the image from appearing clipped or distorted, specify an array with m and n less than or equal to 16. If the image is clipped, then only the center 16-by-16 part of the array is used.

Note

For App Designer and uifigure-based apps, use the Icon property to specify push and toggle tool icons instead.

Separator line mode, specified as 'off' or 'on', or as numeric or logical 0 (false) or 1 (true). A value of 'on' is equivalent to true, and 'off' is equivalent to false. Thus, you can use the value of this property as a logical value. The value is stored as an on/off logical value of type matlab.lang.OnOffSwitchState.

Setting this property to 'on' draws a dividing line to the left of a tool in the toolbar.

Interactivity

State of visibility, specified as 'on' or 'off', or as numeric or logical 1 (true) or 0 (false). A value of 'on' is equivalent to true, and 'off' is equivalent to false. Thus, you can use the value of this property as a logical value. The value is stored as an on/off logical value of type matlab.lang.OnOffSwitchState.

  • 'on' — Display the object.

  • 'off' — Hide the object without deleting it. You still can access the properties of an invisible UI component.

To make your app start faster, set the Visible property to 'off' for all UI components that do not need to appear at startup.

Operational state, specified as 'on' or 'off', or as numeric or logical 1 (true) or 0 (false). A value of 'on' is equivalent to true, and 'off' is equivalent to false. Thus, you can use the value of this property as a logical value. The value is stored as an on/off logical value of type matlab.lang.OnOffSwitchState.

  • If you set this property to 'on', the app user can interact with the component.

  • If you set this property to 'off', the component appears dimmed, indicating that the app user cannot interact with it, and that it will not trigger a callback.

Tooltip, specified as a character vector, string scalar, or categorical array. Use this property to display a message when you hover over the component in the running app. The tooltip does not appear when the component is disabled. If you specify this property as a categorical array, MATLAB uses the values in the array, not the full set of categories.

In figures created with the uifigure function, push tools and toggle tools support multiline tooltips. To create a multiline tooltip, use the sprintf function to insert newline characters ('\n') in your text. For example:

txt = sprintf('Line 1\nLine 2');

Then set the Tooltip property to the value returned by sprintf.

In figures created with the figure function, push tools and toggle tools do not support multiline tooltips.

Setting this property has no effect on objects of this type.

Tooltip, specified as a character vector, string scalar, or categorical array. The tooltip appears when you hover over the component in the app. If you specify this property as a categorical array, MATLAB uses the values in the array, not the full set of categories.

Note

The TooltipString property is not recommended starting in R2018b. Use the Tooltip property instead.

Callbacks

Tool clicked callback, specified as one of these values:

  • A function handle.

  • A cell array in which the first element is a function handle. Subsequent elements in the cell array are the arguments to pass to the callback function.

  • A character vector containing a valid MATLAB expression (not recommended). MATLAB evaluates this expression in the base workspace.

For more information about specifying callback functions as function handles, cell arrays, or character vectors, see Specify a Callback Function.

Data Types: function_handle | cell | char

Toggle tool on callback, specified as one of these values:

  • A function handle.

  • A cell array in which the first element is a function handle. Subsequent elements in the cell array are the arguments to pass to the callback function.

  • A character vector containing a valid MATLAB expression (not recommended). MATLAB evaluates this expression in the base workspace.

This callback executes when a user turns the toggle tool on.

For more information about specifying callback functions as function handles, cell arrays, or character vectors, see Specify a Callback Function.

Data Types: function_handle | cell | char

Toggle tool off callback, specified as one of these values:

  • A function handle.

  • A cell array in which the first element is a function handle. Subsequent elements in the cell array are the arguments to pass to the callback function.

  • A character vector containing a valid MATLAB expression (not recommended). MATLAB evaluates this expression in the base workspace.

This callback executes when a user turns the toggle tool off.

For more information about specifying callback functions as function handles, cell arrays, or character vectors, see Specify a Callback Function.

Data Types: function_handle | cell | char

Component creation function, specified as one of these values:

  • A function handle.

  • A cell array in which the first element is a function handle. Subsequent elements in the cell array are the arguments to pass to the callback function.

  • A character vector containing a valid MATLAB expression (not recommended). MATLAB evaluates this expression in the base workspace.

For more information about specifying a callback property value as a function handle, cell array, or character vector, see Specify a Callback Function.

This property specifies a callback function to execute when MATLAB creates the component. MATLAB initializes all component property values before executing the CreateFcn callback. If you do not specify the CreateFcn property, then MATLAB executes a default creation function.

Use the gcbo function in your CreateFcn code to get the component object that is being created.

Setting the CreateFcn property on an existing component object has no effect.

Component deletion function, specified as one of these values:

  • A function handle.

  • A cell array in which the first element is a function handle. Subsequent elements in the cell array are the arguments to pass to the callback function.

  • A character vector containing a valid MATLAB expression (not recommended). MATLAB evaluates this expression in the base workspace.

For more information about specifying a callback property value as a function handle, cell array, or character vector, see Specify a Callback Function.

The DeleteFcn property specifies a callback function to execute when MATLAB deletes the component (for example, when the user closes the window). MATLAB executes the DeleteFcn callback before destroying the properties of the component object. If you do not specify the DeleteFcn property, then MATLAB executes a default deletion function.

Use the gcbo function in your DeleteFcn code to get the component object that is being deleted.

Callback Execution Control

Callback interruption, specified as 'on' or 'off', or as numeric or logical 1 (true) or 0 (false). A value of 'on' is equivalent to true, and 'off' is equivalent to false. Thus, you can use the value of this property as a logical value. The value is stored as an on/off logical value of type matlab.lang.OnOffSwitchState.

The Interruptible property determines if a running callback can be interrupted. There are two callback states to consider:

  • The running callback is the currently executing callback.

  • The interrupting callback is a callback that tries to interrupt the running callback.

Whenever MATLAB invokes a callback, that callback attempts to interrupt the running callback (if one exists). The Interruptible property of the object owning the running callback determines if interruption is allowed:

  • A value of 'on' allows other callbacks to interrupt the object's callbacks. The interruption occurs at the next point where MATLAB processes the queue, such as when there is a drawnow, figure, getframe, waitfor, or pause.

    • If the running callback contains one of these commands, then MATLAB stops the execution of the callback at this point and executes the interrupting callback. MATLAB resumes executing the running callback when the interrupting callback completes.

    • If the running callback does not contain one of these commands, then MATLAB finishes executing the callback without interruption.

  • A value of 'off' blocks all interruption attempts. The BusyAction property of the object owning the interrupting callback determines if the interrupting callback is discarded or put into a queue.

Note

Callback interruption and execution behave differently in these situations:

  • If the interrupting callback is a DeleteFcn, CloseRequestFcn, or SizeChangedFcn callback, then the interruption occurs regardless of the Interruptible property value.

  • If the running callback is currently executing the waitfor function, then the interruption occurs regardless of the Interruptible property value.

  • Timer objects execute according to schedule regardless of the Interruptible property value.

  • MATLAB does not save the state of properties or the display when an interruption occurs. For example, the object returned by the gca or gcf command might change when another callback executes.

See Interrupt Callback Execution for an example that shows how the Interruptible and BusyAction properties affect the behavior of a program.

Callback queuing specified as 'queue' (default) or 'cancel'. The BusyAction property determines how MATLAB handles the execution of interrupting callbacks. There are two callback states to consider:

  • The running callback is the currently executing callback.

  • The interrupting callback is a callback that tries to interrupt the running callback.

The BusyAction property of the source of the interrupting callback determines how MATLAB handles its execution. The BusyAction property has these values:

  • 'queue' — Put the interrupting callback in a queue to be processed after the running callback finishes execution.

  • 'cancel' — Do not execute the interrupting callback.

Whenever MATLAB invokes a callback, that callback always attempts to interrupt an executing callback. The Interruptible property of the object whose callback is running determines if interruption is allowed. If Interruptible is set to:

  • on — Interruption occurs at the next point where MATLAB processes the queue. This is the default.

  • off — The BusyAction property (of the object owning the interrupting callback) determines if MATLAB enqueues or ignores the interrupting callback.

See Interrupt Callback Execution for an example that shows how the BusyAction and Interruptible properties affect the behavior of a program.

This property is read-only.

Deletion status, returned as an on/off logical value of type matlab.lang.OnOffSwitchState.

MATLAB sets the BeingDeleted property to 'on' when the DeleteFcn callback begins execution. The BeingDeleted property remains set to 'on' until the component object no longer exists.

Check the value of the BeingDeleted property to verify that the object is not about to be deleted before querying or modifying it.

This property has no effect on objects of this type.

Parent/Child

Parent object, specified as a Toolbar object. Use this property to specify the parent tool bar when creating a tool or to move an existing tool to a different tool bar.

Visibility of object handle, specified as 'on', 'callback', or 'off'.

This property controls the visibility of the object in its parent's list of children. When an object is not visible in its parent's list of children, it is not returned by functions that obtain objects by searching the object hierarchy or querying properties. These functions include get, findobj, gca, gcf, gco, newplot, cla, clf, and close. The HandleVisibility property also controls the visibility of the object’s handle in the parent figure's CurrentObject property. Objects are valid even if they are not visible. If you can access an object, you can set and get its properties, and pass it to any function that operates on objects.

HandleVisibility ValueDescription
'on'The object handle is always visible.
'callback'The object handle is visible from within callbacks or functions invoked by callbacks, but not from within functions invoked from the command line. This option blocks access to the object at the command line, but allows callback functions to access it.
'off'The object handle is invisible at all times. This option is useful for preventing unintended changes to the UI by another function. Set the HandleVisibility to 'off' to temporarily hide the handle during the execution of that function.

Identifiers

This property is read-only.

Type of graphics object, returned as 'uitoggletool'.

Object identifier, specified as a character vector or string scalar. You can specify a unique Tag value to serve as an identifier for an object. When you need access to the object elsewhere in your code, you can use the findobj function to search for the object based on the Tag value.

User data, specified as any array. Specifying UserData can be useful for sharing data within apps. See Share Data Among Callbacks for more information.

Examples

collapse all

Create a toggle tool that changes its icon and the background color of a UI figure each time you click it.

First, create a program file called toggleColor.m. Within the program file:

  • Create a UI figure.

  • Create a toolbar in the UI figure.

  • Add a toggle tool to the toolbar.

  • Create a blue truecolor image array. Set the toggle tool Icon property value to it.

  • Set the ClickedCallback property to a function handle that references a callback function called toggleFigureColor.

  • Create a callback function called toggleFigureColor. In it, query the value of the State property for the toggle tool. If the state is 'on', change the background color of the figure to blue and make the toggle tool black. Similarly, if the state is 'off', then change the figure background color to black and the make the toggle tool blue.

function toggleColor
fig = uifigure;
tb = uitoolbar(fig);
tt = uitoggletool(tb);

ttImage = zeros(16,16,3);
ttImage(:,:,3) = ones(16);
tt.Icon = ttImage;
tt.ClickedCallback = @toggleFigureColor;

    function toggleFigureColor(src,event)
        state = src.State;
        
        if strcmp(state,'on')
            fig.Color = 'blue';
            tt.Icon = zeros(16,16,3);
        else
            fig.Color = 'black';
            tt.Icon = ttImage;
        end
        
    end

end

Run toggleColor. Click the toggle tool to change the background color of the figure.

toggleColor
UI figure that displays a toolbar and a toggle tool with a blue square icon.

Version History

Introduced before R2006a

expand all

See Also

Functions