www.gusucode.com > mbcdata 工具箱 matlab 源码程序 > mbcdata/@cgpreclookupfix/generateEditorPages.m
function hInfo = generateEditorPages(obj, hPageGroup) %#ok<INUSL> %GENERATEEDITORPAGES Generate a set of dialog pages for precision editing % % HINFO = GENERATEEDITORPAGES(OBJ, HPAGEGROUP) returns an array of % DialogPageInfo objects that describe a set a of panels for editing the % precision object. % Copyright 2006-2015 The MathWorks, Inc. hInfo = mbcgui.dialog.PageInfo( ... 'PageGroup', hPageGroup, ... 'Name', 'General', ... 'PreferredWidth', 380, ... 'PreferredHeight', 420, ... 'HelpHandler', 'cghelptool', ... 'HelpCode', 'CGTABLEPROPSPRECISION', ... 'CreateCallback', @i_createlyt); function i_createlyt(hInfo, ~) hParent = hInfo.Parent; hGroup = hInfo.PageGroup; SC = xregGui.SystemColorsDbl; TableFrame = mbcgui.container.layoutpanel('Parent', hParent, ... 'BorderType', 'etchedin', ... 'Title', 'Look-up table data', ... 'LayoutBorder', [10 0 10 5]); ud.hPhysData = uicontrol('Parent', TableFrame, ... 'Style', 'edit', ... 'BackgroundColor', SC.WINDOW_BG, ... 'HorizontalAlignment', 'right', ... 'Callback', {@i_editphys, hInfo}); ud.hHWData = uicontrol('Parent', TableFrame, ... 'Style', 'edit', ... 'BackgroundColor', SC.WINDOW_BG, ... 'HorizontalAlignment', 'right', ... 'Callback', {@i_edithw, hInfo}); ud.hPhysLabel = xregGui.labelcontrol('Parent', TableFrame, ... 'String', 'Physical data:', ... 'LabelSizeMode', 'absolute', ... 'ControlSizeMode', 'relative', ... 'LabelSize', 130, ... 'ControlSize', 1, ... 'Control', ud.hPhysData); ud.hHWLabel = xregGui.labelcontrol('Parent', TableFrame, ... 'String', 'Hardware data:', ... 'LabelSizeMode', 'absolute', ... 'ControlSizeMode', 'relative', ... 'LabelSize', 130, ... 'ControlSize', 1, ... 'Control', ud.hHWData); TableLyt = xreggridbaglayout(TableFrame, ... 'dimension', [2 1], ... 'rowsizes', [20 20], ... 'gap', 5, ... 'elements', {ud.hPhysLabel, ud.hHWLabel}); set(TableFrame, 'LayoutComponent', {TableLyt}); BitFrame = pCreateFixedPointEditor(hInfo.getObject, hInfo); DisplayLyt = pCreateResolutionDisplay(hInfo.getObject, hInfo); lyt = xreggridbaglayout(hParent, ... 'dimension', [3 1], ... 'rowsizes', [-1 78 158], ... 'gap', 10, ... 'elements', {DisplayLyt, TableFrame, BitFrame}); ud.ObjList = event.listener(hGroup, 'ObjectChanged', @(h,evt) i_update(hInfo)); hInfo.UserData = ud; i_update(hInfo); hInfo.setUI(lyt); function i_update(hInfo) obj = hInfo.getObject; ud = hInfo.UserData; set(ud.hPhysData, 'String', num2str(get(obj, 'TablePhysData'))); set(ud.hHWData, 'String', num2str(get(obj, 'TableHWData'))); i_updatewritable(hInfo); function i_updatewritable(hInfo) obj = hInfo.getObject; ud = hInfo.UserData; if get(obj, 'writable') en = 'on'; else en = 'off'; end ud.hPhysLabel.Enable = en; ud.hHWLabel.Enable = en; function i_editphys(src, ~, hInfo) obj = hInfo.getObject; ud = hInfo.UserData; S = get(src, 'String'); [C, OK] = i_convertcoeffs(S); if OK obj = set(obj, 'TablePhysdata', C); obj = i_fixdatalen(obj, 'TableHWData', length(C)); end set(src, 'String', num2str(get(obj, 'TablePhysdata'))); set(ud.hHWData, 'String', num2str(get(obj, 'TableHWData'))); i_quietupdate(hInfo, obj) function i_edithw(src, ~, hInfo) obj = hInfo.getObject; ud = hInfo.UserData; S = get(src, 'String'); [C, OK] = i_convertcoeffs(S); if OK obj = set(obj, 'TableHWData', C); obj = i_fixdatalen(obj, 'TablePhysdata', length(C)); end set(src, 'String', num2str(get(obj, 'TableHWData'))); set(ud.hPhysData, 'String', num2str(get(obj, 'TablePhysData'))); i_quietupdate(hInfo, obj) function obj = i_fixdatalen(obj, prop, N) Data = get(obj, prop); if length(Data)<N Data = [Data Data(end)+(1:N-length(Data))]; elseif length(Data)>N Data = Data(1:N); end obj = set(obj, prop, Data); function [C, OK] = i_convertcoeffs(S) C = str2num(S); %#ok<ST2NM> OK = ~isempty(C) && size(C,1)==1 && ndims(C)<3; %#ok<ISMAT> function i_quietupdate(hInfo, obj) ud = hInfo.UserData; ud.ObjList.Enabled = false; hInfo.updateObject(obj); ud.ObjList.Enabled = true;