File Exchange

image thumbnail

toggleToolbox

version 1.1.0.1 (6.07 KB) by Rody Oldenhuis
Toggle MATLAB toolboxes on or off

8 Downloads

Updated 16 Oct 2018

GitHub view license on GitHub

Utility to enable/disable MATLAB toolboxes.
S = TOGGLETOOLBOX()
S = TOGGLETOOLBOX('')
S = TOGGLETOOLBOX('all') queries the on/off states of all installed
toolboxes.

M = TOGGLETOOLBOX('names') returns the full names / directory names map
[M] applicable to the current MATLAB installation.

S = TOGGLETOOLBOX(toolbox, state) queries or sets the on/off state of the
MATLAB toolbox [toolbox] to [state]. The string or cellstring [toolbox] may
be equal to the toolbox' installation directory name (the same as used by
ver()), or the toolbox' full name. The string [state] may be one of 'on',
'off' or 'query'. The return argument [S] is a structure containing the
toolbox name(s) as fields, with the on/off state represented as true/false.

S = TOGGLETOOLBOX(..., permanency) for string [permanency] equal to
'permanent' will attempt to make the change persist between different
MATLAB sessions. For [permanency] equal to 'temporary' (the default), the
change will only last for the remainder of the current session.

TOGGLETOOLBOX(S0) will reset the on/off states of all toolboxes to the
states contained in [S0], where [S0] is a structure previously returned by
TOGGLETOOLBOX() as outlined above.

Disabling a toolbox is done by removing the relevant directories from the
MATLAB path. Since the order of the path is important for name resolution,
TOGGLETOOLBOX() attempts to keep the order of all paths as close to MATLAB's
startup path as possible. Calling TOGGLETOOLBOX() multiple times for different
toolboxes and arbitrary on/off states should not affect the overall path
order -- calling TOGGLETOOLBOX('all', 'on') afterwards results in a path
identical to the startup path.

Note that TOGGLETOOLBOX() generates a MAT file for both performance and
persistence between MATLAB sessions. Please make sure that
TOGGLETOOLBOX() is located in a directory where it has write access.

EXAMPLE SESSION:

>> M = toggleToolbox('names')%
M =
'aero' 'Aerospace Toolbox'
'aeroblks' 'Aerospace Blockset'
'bioinfo' 'Bioinformatics Toolbox'
'comm' 'Communications Toolbox'
...

>> S = toggleToolbox({'Aerospace Toolbox' 'Wavelet Toolbox'}, 'query')
S =
aero: 1
wavelet: 1

>> w = ver('wavelet')
w =
Name: 'Wavelet Toolbox'
Version: '4.5'
Release: '(R2010a)'
Date: '25-Jan-2010'

>> S = toggleToolbox({'Aerospace Toolbox' 'Wavelet Toolbox'}, 'off');
>> toggleToolbox({'Aerospace Toolbox' 'Wavelet Toolbox'}, 'query')
ans =
aero: 0
wavelet: 0

>> w = ver('wavelet')
w =
0x0 struct array with fields:
Name
Version
Release
Date

>> toggleToolbox(S);
>> toggleToolbox({'Aerospace Toolbox' 'Wavelet Toolbox'}, 'query')
ans =
aero: 1
wavelet: 1

>> % Cross-platform developer mode:
>> S = toggleToolbox('all', 'off');

If you find this work useful, please consider a donation:
https://www.paypal.me/RodyO/3.5

Cite As

Rody Oldenhuis (2019). toggleToolbox (https://www.github.com/rodyo/FEX-toggleToolbox), GitHub. Retrieved .

Comments and Ratings (4)

This toolbox is a nice idea but it didn't work for me on MATLAB 2018b as I have the 5g toolbox installed and '5g' is not a valid field name, as required by the current implementation of toggleToolbox. A change to the implementation should be able to sort this out, but that might be a bit of work.

Rik

To remove the requirement of the function being in a write-access folder, you could replace save and load with setpref and getpref. Since that also seems to store something to a drive location it is about as slow as using a mat file, but this will actually also persist over different paths where you store this function file.

I will definitely look into this as an alternative to my current work flow.

Very useful and works like a charm

Updates

1.1.0.1

No code changes; just updated the FEX page title

1.1.0.0

No code change; just added the PayPal link

1.1.0.0

Added somewhat more intuitive state names 'enable' and 'disable', rather than just 'on' and 'off'.

MATLAB Release Compatibility
Created with R2010a
Compatible with any release
Platform Compatibility
Windows macOS Linux