Autocomplete of properties for hgsetget derived class

3 views (last 30 days)
DESIRED BEHAVIOUR
If you create:
h = uicontrol('style','edit');
Then if you type
h.<tab>
and then select 'HorizontalAlignment', you can again < tab > to get a list of alignment options.
Alternatively, with
set(h, 'HorizontalAlignment', ' <tab> ...
ATTEMPT TO REPRODUCE IT
I am wondering if there is a way to take advantage of this behaviour for user defined classes of the type hgsetget
I tried
classdef foo < hgsetget
properties
HorizontalAlignment
end
end
Then in a separate folder, i.e. .\+foo\, I created and enumerator
classdef HorizontalAlignment
enumeration
left
center
right
end
end
but to no avail.
I tried several things, like defining a set.HorizontalAlignment(obj,val) mnethod which then calls the foo.HorizontalAlignment class, still no way to get the autocomplete.
Anybody has hints?

Accepted Answer

Oleg Komarov
Oleg Komarov on 9 Jul 2014
Edited: Oleg Komarov on 9 Jul 2014
I've been fiddling around and by mistake I found that the matlab.system.StringSet class of the matlab.System package allows exactly the < TAB > complete behaviour.
Note : the doc links are under symulink, however the package is under:
fullfile(matlabroot, 'toolbox\matlab\system')
and therefore, does not require Symulink to be installed.
A barebone example :
classdef foo < matlab.System
properties
Coordinates
end
properties(Hidden,Transient)
CoordinatesSet = matlab.system.StringSet({'north','south','east','west'});
end
end
usage :
obj = foo
obj =
System: foo
Properties:
Coordinates: []
set(obj,'Coordinates','<TAB>
.
  2 Comments
James
James on 2 Oct 2014
Note that this only works for classes derived from matlab.System.

Sign in to comment.

More Answers (0)

Categories

Find more on Create System Objects in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!