www.gusucode.com > wavelet工具箱matlab源码程序 > wavelet/wavelet/wmp1dcbpop.m

    function wmp1dcbpop(option,actif_OBJ,caller)
%WMP1DCBPOP GUI utility for srting edition.

%   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 22-Apr-2011.
%   Last Revision: 02-Jul-2012.
%   Copyright 1995-2012 The MathWorks, Inc.

[hObj,hFig] = gcbo;
switch option
    case 'edi'
        val  = str2double(get(actif_OBJ,'String'));
        if isnan(val)
            strOBJ = ''; err = 1;
        else
            if val<0 || val>100
                strOBJ = ''; err = 1;
            else
                 err = 0;
                 strOBJ = num2str(val);
            end
        end
        if err , end;
        set(actif_OBJ,'String',strOBJ);
        
    case 'defString'
        parHDL = get(actif_OBJ,'Parent');
        lst  = deblankl(get(actif_OBJ,'String'));
        val  = get(actif_OBJ,'Value');
        tag_POP = get(actif_OBJ,'Tag');
        ActSTR = deblankl(lst{val});
        item = deblankl(ActSTR);
        if ~strcmp(item,'**') , return; end
        pos = get(actif_OBJ,'Position');
        uni = get(actif_OBJ,'Units');
        set(actif_OBJ,'Visible','off');
        edi_num = uicontrol(...
            'Parent',parHDL,        ...
            'Style','edit',         ...
            'Units',uni,            ...
            'Position',pos,         ...
            'BackgroundColor','w',  ...
            'Interruptible','Off',  ...
            'Visible','on',         ...
            'Userdata',val,         ...
            'String',[]             ...
            );
        cb = [mfilename '(''ok_num'',''' tag_POP ''',''' caller ''');'];
        set(edi_num,'Callback',cb);
        txt = wfindobj(parHDL,'Tag','Txt_ITER');
        to_Ena_OFF_Edi_Num = wfindobj(hFig,'Enable','on');
        to_Ena_OFF_Edi_Num = setdiff(to_Ena_OFF_Edi_Num,[edi_num;txt]);
        wtbxappdata('set',hFig,'to_Ena_OFF_Edi_Num',to_Ena_OFF_Edi_Num);
        set(to_Ena_OFF_Edi_Num,'Enable','off');
        
    case 'ok_num'
        actif_OBJ = findobj(hFig,'Style','popupmenu','Tag',actif_OBJ);
        edi = hObj;
        rmax = 16;
        item = deblankl(get(edi,'String'));
        item(item==',') = '_';
        % Test the input value.
        err = 0; ok = 1; val = 0;
        switch caller
            case 'par'
                inputVal = str2double(item);
                if isnan(inputVal) || (inputVal<=0) || isinf(inputVal)
                    err = 1;
                    errMSG = getWavMSG('Wavelet:wmp1dRF:PopErrMsg');
                    errTIT = getWavMSG('Wavelet:wmp1dRF:PopErrTit');
                end
        end
        if err
            ok = 0; val = 10;
            wwarndlg(errMSG,errTIT ,'modal');
        end        
        if ~err
            lst  = deblankl(get(actif_OBJ,'String'));
            r = size(lst,1);
            k = find(strcmp(item,lst));
            if ~isempty(k)
                ok  = 0;
                val = k;
            else
                ok  = 1;
                val = r;
                if r==rmax
                    r = r-1;
                    lst = [lst(1:r-1);item;lst(end)]; 
                elseif r>rmax
                    r = r-2;
                    lst = [lst(1:r-1);item;lst(end)]; 
                end
            end
        end
        if ok
            % To sort the string.
            %--------------------
            [~,idx] = sort(str2double(lst));
            lst = lst(idx);
            lst{end} = '**';
            val = find(idx==r);
            set(actif_OBJ,'String',lst,'Value',val,'Visible','on');
        else
            set(actif_OBJ,'Value',val,'Visible','on');
        end
        delete(edi)
        to_Ena_OFF_Edi_Num = wtbxappdata('get',hFig,'to_Ena_OFF_Edi_Num');
        set(to_Ena_OFF_Edi_Num,'Enable','On');
end