www.gusucode.com > sigtools 工具箱matlab源码程序 > sigtools/private/fdatool_dspfwiz.m

    function hF = fdatool_dspfwiz(hSB)
%FDATOOL_DSPFWIZ   FDATool to DSPFWIZ link.

%   Author(s): J. Schickler
%   Copyright 1988-2006 The MathWorks, Inc.

hFig = get(hSB, 'FigureHandle');
hFDA = getfdasessionhandle(hFig);

status(hFDA, getString(message('signal:sigtools:private:LoadingFilterRealization')));

hF   = siggui.dspfwiz(getfilter(hFDA));
sz   = fdatool_gui_sizes(hFDA);

status(hFDA, [getString(message('signal:sigtools:private:LoadingFilterRealization')) ' ...']);

render(hF, hFig, sz.defaultpanel-[-5 -5 10 10]*sz.pixf);
resizefcn(hF, [sz.fig_w sz.fig_h] * sz.pixf);

addlistener(hFDA, 'FilterUpdated', {@filter_listener, hF});
l = handle.listener(hF, hF.findprop('Filter'), 'PropertyPostSet', ...
    {@fwiz_filter_listener, hF});
set(l, 'CallbackTarget', hFDA);
sigsetappdata(hFDA, 'plugins', 'dspfwiz', 'listeners', l);

status(hFDA, [getString(message('signal:sigtools:private:LoadingFilterRealization')) ...
              ' ... ' getString(message('signal:sigtools:private:Done'))]);

% --------------------------------------------------------------------
function filter_listener(hFDA, eventData, hF)

% Sync the filter wizard with FDATool.
hF.Filter = getfilter(hFDA);

% --------------------------------------------------------------------
function fwiz_filter_listener(hFDA, eventData, hF)

% If the filterwizard filter changed underneath FDATool, we need to reverse
% sync it.  This can happen when loading an old dspfwiz session.
dspfilt = get(hF, 'Filter');
fdafilt = getfilter(hFDA);
opts.update = 0;

if ~isequal(dspfilt, fdafilt),
    hFDA.setfilter(dspfilt, opts);
end

% [EOF]