добавлено авторазмещение параметров по колву элементов в строке
сделана инициализация таблицы по необходимости (деинициализированные колонки)
This commit is contained in:
parent
7c2fb99908
commit
0145ec818e
@ -8,13 +8,17 @@ classdef customtable
|
||||
tableControl = mask.getDialogControl(table_name);
|
||||
tableParameter = mask.getParameter(table_name);
|
||||
nCols = tableControl.getNumberOfColumns;
|
||||
% if nCols > 0
|
||||
% for i = 1:nCols
|
||||
% tableControl.removeColumn(1);
|
||||
% end
|
||||
% end
|
||||
% column = tableControl.addColumn(Name='Title', Type='edit');
|
||||
% tableControl.Sortable = 'on';
|
||||
% инициализация колонок если они пустые
|
||||
% такое случается при removeParameter
|
||||
if isempty(tableControl.Columns)
|
||||
if nCols > 0
|
||||
for i = 1:nCols
|
||||
tableControl.removeColumn(1);
|
||||
end
|
||||
end
|
||||
column = tableControl.addColumn(Name='Title', Type='edit');
|
||||
tableControl.Sortable = 'on';
|
||||
end
|
||||
column.Name = tableParameter.Alias;
|
||||
end
|
||||
|
||||
|
@ -10,8 +10,9 @@ classdef periphConfig
|
||||
|
||||
tableNames = {'incTable', 'srcTable'};
|
||||
columns_backup = customtable.save_all_tables(tableNames);
|
||||
|
||||
try
|
||||
rowWidth = str2double(get_param(blockPath, 'rowWidth'));
|
||||
|
||||
containerName = 'configTabAll';
|
||||
periphConfig.clear_all_from_container(mask, containerName);
|
||||
|
||||
@ -42,12 +43,13 @@ classdef periphConfig
|
||||
tabCtrl = container.addDialogControl('tab', periph);
|
||||
tabCtrl.Prompt = [periph ' Config'];
|
||||
|
||||
rowCountMap = containers.Map();
|
||||
for j = 1:numel(defNames)
|
||||
defPrompt = defNames{j};
|
||||
def = defines.(defPrompt);
|
||||
|
||||
% Вызов функции добавления одного параметра
|
||||
periphConfig.addConfig(mask, containerName, periph, defPrompt, def);
|
||||
periphConfig.addConfig(mask, containerName, periph, defPrompt, def, rowCountMap, rowWidth);
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -492,13 +494,26 @@ classdef periphConfig
|
||||
end
|
||||
end
|
||||
|
||||
function addConfig(mask, containerName, periphName, defPrompt, def)
|
||||
function addConfig(mask, containerName, periphName, defPrompt, def, rowCountMap, rowWidth)
|
||||
% mask — объект маски Simulink.Mask.get(blockPath)
|
||||
% containerName — имя контейнера, в который добавляем параметр (например, 'configTabAll')
|
||||
% periphName — имя вкладки / контейнера для текущего периферийного блока (например, 'ADC')
|
||||
% defPrompt — имя параметра в Defines (например, 'shift_enable')
|
||||
% def — структура с описанием параметра (Prompt, Def, Type, Default, NewRow и т.п.)
|
||||
|
||||
if ~isKey(rowCountMap, periphName)
|
||||
rowCountMap(periphName) = 0;
|
||||
end
|
||||
rowCount = rowCountMap(periphName) + 1;
|
||||
|
||||
% Устанавливаем NewRow, если он не задан
|
||||
if ~isfield(def, 'NewRow')
|
||||
def.NewRow = mod(rowCount - 1, rowWidth) == 0;
|
||||
elseif def.NewRow == true
|
||||
rowCount = 0;
|
||||
end
|
||||
rowCountMap(periphName) = rowCount;
|
||||
|
||||
% Найдем контейнер с таким именем
|
||||
container = mask.getDialogControl(containerName);
|
||||
if isempty(container)
|
||||
|
Loading…
Reference in New Issue
Block a user