Add GUIDE-compatible simulator shell
Agent-Logs-Url: https://github.com/kk14222/3D_EDFM_SIM-X/sessions/a128ab7f-6b94-4048-a847-f2dc37bbe0ab Co-authored-by: kk14222 <217880052+kk14222@users.noreply.github.com>
This commit is contained in:
co-authored by
kk14222
parent
771d57e7d0
commit
dd42a8f138
@@ -0,0 +1,299 @@
|
||||
classdef EDFMGuideComponent < handle
|
||||
%EDFMGUIDECOMPONENT Compatibility adapter from GUIDE/uicontrol to App Designer-style properties.
|
||||
|
||||
properties (SetAccess = private)
|
||||
Handle
|
||||
end
|
||||
|
||||
properties (Dependent)
|
||||
Value
|
||||
Items
|
||||
Text
|
||||
Position
|
||||
Visible
|
||||
Enable
|
||||
Editable
|
||||
Data
|
||||
ColumnName
|
||||
RowName
|
||||
ColumnEditable
|
||||
ValueChangedFcn
|
||||
ButtonPushedFcn
|
||||
CellSelectionCallback
|
||||
Limits
|
||||
MajorTicks
|
||||
MinorTicks
|
||||
UserData
|
||||
end
|
||||
|
||||
properties (Access = private)
|
||||
StoredMajorTicks = []
|
||||
StoredMinorTicks = []
|
||||
end
|
||||
|
||||
methods
|
||||
function obj = EDFMGuideComponent(handleObj)
|
||||
obj.Handle = handleObj;
|
||||
end
|
||||
|
||||
function value = get.Value(obj)
|
||||
if isa(obj.Handle, 'matlab.ui.control.Table')
|
||||
value = get(obj.Handle, 'Data');
|
||||
return;
|
||||
end
|
||||
style = obj.getStyle();
|
||||
switch style
|
||||
case 'popupmenu'
|
||||
items = obj.Items;
|
||||
idx = get(obj.Handle, 'Value');
|
||||
if isempty(items)
|
||||
value = '';
|
||||
else
|
||||
idx = min(max(1, idx), numel(items));
|
||||
value = items{idx};
|
||||
end
|
||||
case 'slider'
|
||||
value = get(obj.Handle, 'Value');
|
||||
case 'edit'
|
||||
userData = get(obj.Handle, 'UserData');
|
||||
if isstruct(userData) && isfield(userData, 'Type') && strcmp(userData.Type, 'numeric')
|
||||
value = str2double(string(get(obj.Handle, 'String')));
|
||||
if isnan(value)
|
||||
value = [];
|
||||
end
|
||||
else
|
||||
raw = get(obj.Handle, 'String');
|
||||
if ischar(raw)
|
||||
value = cellstr(raw);
|
||||
else
|
||||
value = raw;
|
||||
end
|
||||
end
|
||||
otherwise
|
||||
value = get(obj.Handle, 'Value');
|
||||
end
|
||||
end
|
||||
|
||||
function set.Value(obj, value)
|
||||
if isa(obj.Handle, 'matlab.ui.control.Table')
|
||||
set(obj.Handle, 'Data', value);
|
||||
return;
|
||||
end
|
||||
style = obj.getStyle();
|
||||
switch style
|
||||
case 'popupmenu'
|
||||
items = obj.Items;
|
||||
textValue = char(string(value));
|
||||
idx = find(strcmp(items, textValue), 1);
|
||||
if isempty(idx)
|
||||
items{end + 1} = textValue;
|
||||
obj.Items = items;
|
||||
idx = numel(items);
|
||||
end
|
||||
set(obj.Handle, 'Value', idx);
|
||||
case 'slider'
|
||||
set(obj.Handle, 'Value', double(value));
|
||||
case 'edit'
|
||||
userData = get(obj.Handle, 'UserData');
|
||||
if isstruct(userData) && isfield(userData, 'Type') && strcmp(userData.Type, 'numeric')
|
||||
if isempty(value)
|
||||
set(obj.Handle, 'String', '');
|
||||
else
|
||||
set(obj.Handle, 'String', num2str(double(value)));
|
||||
end
|
||||
else
|
||||
if isstring(value)
|
||||
value = cellstr(value);
|
||||
end
|
||||
set(obj.Handle, 'String', value);
|
||||
end
|
||||
otherwise
|
||||
set(obj.Handle, 'Value', value);
|
||||
end
|
||||
end
|
||||
|
||||
function value = get.Items(obj)
|
||||
raw = get(obj.Handle, 'String');
|
||||
if ischar(raw)
|
||||
value = cellstr(raw);
|
||||
else
|
||||
value = raw;
|
||||
end
|
||||
end
|
||||
|
||||
function set.Items(obj, value)
|
||||
if isstring(value)
|
||||
value = cellstr(value);
|
||||
end
|
||||
if isempty(value)
|
||||
value = {''};
|
||||
end
|
||||
set(obj.Handle, 'String', value, 'Value', min(get(obj.Handle, 'Value'), numel(value)));
|
||||
end
|
||||
|
||||
function value = get.Text(obj)
|
||||
value = get(obj.Handle, 'String');
|
||||
end
|
||||
|
||||
function set.Text(obj, value)
|
||||
set(obj.Handle, 'String', char(string(value)));
|
||||
end
|
||||
|
||||
function value = get.Position(obj)
|
||||
value = get(obj.Handle, 'Position');
|
||||
end
|
||||
|
||||
function set.Position(obj, value)
|
||||
set(obj.Handle, 'Position', value);
|
||||
end
|
||||
|
||||
function value = get.Visible(obj)
|
||||
value = get(obj.Handle, 'Visible');
|
||||
end
|
||||
|
||||
function set.Visible(obj, value)
|
||||
set(obj.Handle, 'Visible', obj.onOff(value));
|
||||
end
|
||||
|
||||
function value = get.Enable(obj)
|
||||
value = get(obj.Handle, 'Enable');
|
||||
end
|
||||
|
||||
function set.Enable(obj, value)
|
||||
set(obj.Handle, 'Enable', obj.onOff(value));
|
||||
end
|
||||
|
||||
function value = get.Editable(obj)
|
||||
if isprop(obj.Handle, 'Editable')
|
||||
value = get(obj.Handle, 'Editable');
|
||||
else
|
||||
value = strcmp(get(obj.Handle, 'Enable'), 'on');
|
||||
end
|
||||
end
|
||||
|
||||
function set.Editable(obj, value)
|
||||
if isprop(obj.Handle, 'Editable')
|
||||
set(obj.Handle, 'Editable', obj.onOff(value));
|
||||
else
|
||||
set(obj.Handle, 'Enable', obj.onOff(value));
|
||||
end
|
||||
end
|
||||
|
||||
function value = get.Data(obj)
|
||||
value = get(obj.Handle, 'Data');
|
||||
end
|
||||
|
||||
function set.Data(obj, value)
|
||||
set(obj.Handle, 'Data', value);
|
||||
end
|
||||
|
||||
function value = get.ColumnName(obj)
|
||||
value = get(obj.Handle, 'ColumnName');
|
||||
end
|
||||
|
||||
function set.ColumnName(obj, value)
|
||||
set(obj.Handle, 'ColumnName', value);
|
||||
end
|
||||
|
||||
function value = get.RowName(obj)
|
||||
value = get(obj.Handle, 'RowName');
|
||||
end
|
||||
|
||||
function set.RowName(obj, value)
|
||||
set(obj.Handle, 'RowName', value);
|
||||
end
|
||||
|
||||
function value = get.ColumnEditable(obj)
|
||||
value = get(obj.Handle, 'ColumnEditable');
|
||||
end
|
||||
|
||||
function set.ColumnEditable(obj, value)
|
||||
set(obj.Handle, 'ColumnEditable', value);
|
||||
end
|
||||
|
||||
function value = get.ValueChangedFcn(obj)
|
||||
value = get(obj.Handle, 'Callback');
|
||||
end
|
||||
|
||||
function set.ValueChangedFcn(obj, value)
|
||||
set(obj.Handle, 'Callback', value);
|
||||
end
|
||||
|
||||
function value = get.ButtonPushedFcn(obj)
|
||||
value = get(obj.Handle, 'Callback');
|
||||
end
|
||||
|
||||
function set.ButtonPushedFcn(obj, value)
|
||||
set(obj.Handle, 'Callback', value);
|
||||
end
|
||||
|
||||
function value = get.CellSelectionCallback(obj)
|
||||
value = get(obj.Handle, 'CellSelectionCallback');
|
||||
end
|
||||
|
||||
function set.CellSelectionCallback(obj, value)
|
||||
set(obj.Handle, 'CellSelectionCallback', value);
|
||||
end
|
||||
|
||||
function value = get.Limits(obj)
|
||||
value = [get(obj.Handle, 'Min'), get(obj.Handle, 'Max')];
|
||||
end
|
||||
|
||||
function set.Limits(obj, value)
|
||||
set(obj.Handle, 'Min', value(1), 'Max', value(2));
|
||||
end
|
||||
|
||||
function value = get.UserData(obj)
|
||||
value = get(obj.Handle, 'UserData');
|
||||
end
|
||||
|
||||
function set.UserData(obj, value)
|
||||
set(obj.Handle, 'UserData', value);
|
||||
end
|
||||
|
||||
function value = get.MajorTicks(obj)
|
||||
value = obj.StoredMajorTicks;
|
||||
end
|
||||
|
||||
function set.MajorTicks(obj, value)
|
||||
obj.StoredMajorTicks = value;
|
||||
end
|
||||
|
||||
function value = get.MinorTicks(obj)
|
||||
value = obj.StoredMinorTicks;
|
||||
end
|
||||
|
||||
function set.MinorTicks(obj, value)
|
||||
obj.StoredMinorTicks = value;
|
||||
end
|
||||
end
|
||||
|
||||
methods (Access = private)
|
||||
function style = getStyle(obj)
|
||||
if isprop(obj.Handle, 'Style')
|
||||
style = get(obj.Handle, 'Style');
|
||||
else
|
||||
style = '';
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
methods (Static, Access = private)
|
||||
function value = onOff(input)
|
||||
if islogical(input)
|
||||
if input
|
||||
value = 'on';
|
||||
else
|
||||
value = 'off';
|
||||
end
|
||||
else
|
||||
value = char(string(input));
|
||||
if strcmpi(value, 'true')
|
||||
value = 'on';
|
||||
elseif strcmpi(value, 'false')
|
||||
value = 'off';
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user