www.gusucode.com > mbclayouts 工具箱 matlab 源码程序 > mbclayouts/@xregtablayout2/cb_tabsel.m

    function cb_tabsel(obj,ind)
%CB_TABSEL  Tab callback
%
%   CB_TABSEL(OBJ,IND)
%

%  Copyright 2000-2011 The MathWorks, Inc. and Ford Global Technologies, Inc.


ud=get(obj.whiteline,'UserData');
if ud.enabled(ind)
    indnow=get(obj.xregcardlayout,'currentcard');
    if indnow~=ind
        PR=xregGui.PointerRepository;
        ptrID=PR.stackSetPointer(get(obj.axes,'Parent'),'watch');
        i_firecb(obj,'beforecallback', ind);
        set(obj.xregcardlayout,'currentcard',ind);
        pr_draw3D(obj);
        pr_drawlabels(obj,[indnow get(obj.xregcardlayout,'currentcard')])

        % activate callback
        i_firecb(obj,'callback', ind);
        PR.stackRemovePointer(get(obj.axes,'Parent'),ptrID);
    end
end




function i_firecb(obj,cb, ind)

ud=get(obj.whiteline,'UserData');
cbstr= ud.(cb);

if ~isempty(cbstr)
    if ischar(cbstr)
        % parse for %CURRENTCARD% and %OBJECT%

        pcs=strfind(cbstr,'%');

        go=1;
        needobj=0;
        needval=0;
        while (go<=(length(pcs)-1))
            cmp=cbstr(pcs(go)+1:pcs(go+1)-1);
            if strcmp(cmp,'CARD')
                needval=1;
                cbstr=[cbstr(1:pcs(go)-1) 'XX_CARD_XX' cbstr(pcs(go+1)+1:end)];
                go=go+2;
                pcs=pcs+4;
            elseif strcmp(cmp,'OBJECT')
                needobj=1;
                cbstr=[cbstr(1:pcs(go)-1) 'XX_OBJECT_XX' cbstr(pcs(go+1)+1:end)];
                go=go+2;
                pcs=pcs+4;
            else
                go=go+1;
            end
        end

        if needobj
            assignin('base','XX_OBJECT_XX',obj);
        end
        if needval
            assignin('base','XX_CARD_XX',ind);
        end
        evalin('base',cbstr);

        % clear up base workspace
        evalin('base','clear(''XX_OBJECT_XX'',''XX_CARD_XX'');');
    else
        evt.NewCard = ind;
        xregcallback(cbstr, obj, evt);
    end
end