Autocomplete of properties for hgsetget derived class

조회 수: 3 (최근 30일)
Oleg Komarov
Oleg Komarov 2014년 6월 28일
댓글: James 2014년 10월 2일
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?

채택된 답변

Oleg Komarov
Oleg Komarov 2014년 7월 9일
편집: Oleg Komarov 2014년 7월 9일
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
Yair Altman
Yair Altman 2014년 8월 12일
Nice one, Oleg.
I added your discovery to my recent post on class property tab-completion .
James
James 2014년 10월 2일
Note that this only works for classes derived from matlab.System.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Create System Objects에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by