www.gusucode.com > mbcdata 工具箱 matlab 源码程序 > mbcdata/@cgprecpolyfix/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; PolyFrame = mbcgui.container.layoutpanel('Parent', hParent, ... 'BorderType', 'etchedin', ... 'Title', 'Polynomial mapping', ... 'LayoutBorder', [10 0 10 5]); ud.hNumerator = uicontrol('Parent', PolyFrame, ... 'Style', 'edit', ... 'BackgroundColor', SC.WINDOW_BG, ... 'HorizontalAlignment', 'right', ... 'Callback', {@i_editnum, hInfo}); ud.hDenominator = uicontrol('Parent', PolyFrame, ... 'Style', 'edit', ... 'BackgroundColor', SC.WINDOW_BG, ... 'HorizontalAlignment', 'right', ... 'Callback', {@i_editden, hInfo}); ud.hNumLabel = xregGui.labelcontrol('Parent', PolyFrame, ... 'String', 'Numerator coefficients:', ... 'LabelSizeMode', 'absolute', ... 'ControlSizeMode', 'absolute', ... 'LabelSize', 130, ... 'ControlSize', 100, ... 'Control', ud.hNumerator); ud.hDenLabel = xregGui.labelcontrol('Parent', PolyFrame, ... 'String', 'Denominator coefficients:', ... 'LabelSizeMode', 'absolute', ... 'ControlSizeMode', 'absolute', ... 'LabelSize', 130, ... 'ControlSize', 100, ... 'Control', ud.hDenominator); PolyLyt = xreggridbaglayout(PolyFrame, ... 'dimension', [2 1], ... 'rowsizes', [20 20], ... 'gap', 5, ... 'elements', {ud.hNumLabel, ud.hDenLabel}); set(PolyFrame, 'LayoutComponent', {PolyLyt}); BitFrame = pCreateFixedPointEditor(hInfo.getObject, hInfo); DisplayLyt = pCreateResolutionDisplay(hInfo.getObject, hInfo); lyt = xreggridbaglayout(hParent, ... 'dimension', [3 1], ... 'rowsizes', [-1 78 158], ... 'gap', 10, ... 'elements', {DisplayLyt, PolyFrame, 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.hNumerator, 'String', num2str(get(obj, 'NumCoeff'))); set(ud.hDenominator, 'String', num2str(get(obj, 'DenCoeff'))); i_updatewritable(hInfo); function i_updatewritable(hInfo) obj = hInfo.getObject; ud = hInfo.UserData; if get(obj, 'writable') en = 'on'; else en = 'off'; end ud.hNumLabel.Enable = en; ud.hDenLabel.Enable = en; function i_editnum(src, ~, hInfo) obj = hInfo.getObject; S = get(src, 'String'); [C, OK] = i_convertcoeffs(S); if OK obj = set(obj, 'NumCoeff', C); end set(src, 'String', num2str(get(obj, 'NumCoeff'))); i_quietupdate(hInfo, obj) function i_editden(src, ~, hInfo) obj = hInfo.getObject; S = get(src, 'String'); [C, OK] = i_convertcoeffs(S); if OK obj = set(obj, 'DenCoeff', C); end set(src, 'String', num2str(get(obj, 'DenCoeff'))); i_quietupdate(hInfo, obj) 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;