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