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

    function [out1,out2] = whelpfun(option,in2,in3,in4)
%WHELPFUN Help function.
%   [OUT1,OUT2] = WHELPFUN(OPTION,IN2,IN3,IN4)

%   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 01-May-96.
%   Last Revision: 10-Jun-2013.
%   Copyright 1995-2013 The MathWorks, Inc.
% $Revision: 1.18.4.8 $

% Tag property of objects.
%------------------------
tag_fig_info = 'Whelpfig';
dy0 = 18;

switch option
    case {'movsli','movtxt','page_ud'} , fighelp = in2;
    otherwise
      fighelp = wfindobj('figure','Tag',tag_fig_info);
end

if ~isempty(fighelp)
    fra    = findobj(fighelp,'Style','frame');
    usr    = get(fra,'UserData');
    txt    = usr(1:end-6);
    usr    = usr(end-5:end);
    btn_cl = usr(1);
    btn_p1 = usr(2);
    btn_p2 = usr(3);
    btn_p3 = usr(4);
    sli    = usr(5);
    axe    = usr(6);
end


switch option
    case 'movsli'
        val = round(get(sli,'Value'));
        usr = get(sli,'UserData');
        if val==usr , return; end
        set(sli,'Value',val,'UserData',val);
        dy  = -(val-usr)*dy0;
        whelpfun('movtxt',fighelp,dy);

    case 'movtxt'
        dy      = in3;
        old_u   = get(axe,'Units');
        set([axe txt],'Units','pixels');
        p_axe   = get(axe,'Position');
        dim     = length(txt);
        nbt_vis = floor(p_axe(4)/dy0)-1;
        ena1 = 'off'; ena2 = 'off'; ena3 = 'off';
        for k = 1:dim
            p  = get(txt(k),'Position');
            p2 = p(2)+dy;
            p3 = p2+dy0;
            if (p2<dy0/2) || (p3>p_axe(4))
                vis = 'off';
                if k<=nbt_vis
                    ena1 = 'on';
                elseif (nbt_vis<k) && (k<=2*nbt_vis)
                    ena2 = 'on';
                else
                    ena3 = 'on';
                end
            else
                vis = 'on'; 
            end
            set(txt(k),'Position',[p(1) p2],'Visible',vis);
        end
        set(btn_p1,'Enable',ena1);
        set(btn_p2,'Enable',ena2);
        set(btn_p3,'Enable',ena3);    
        set([axe txt],'Units',old_u);

    case 'page_ud'
        nump  = in3;
        old_u = get(axe,'Units');
        set([axe txt(1)],'Units','pixels');
        p_axe = get(axe,'Position');
        p_txt = get(txt(1),'Position');
        set([axe txt(1)],'Units',old_u);
        switch nump
          case 1
            dy      = p_axe(4)-dy0-p_txt(2);
            vals    = get(sli,'Max');
          case 2
            nbt_vis = floor(p_axe(4)/dy0)-1;
            dy      = p_axe(4)-dy0-p_txt(2)+dy0*nbt_vis;
            vals    = get(sli,'Max')-nbt_vis;
          case 3
            nbt_vis = floor(p_axe(4)/dy0)-1;
            dy      = p_axe(4)-dy0-p_txt(2)+2*dy0*nbt_vis;
            vals    = get(sli,'Min');
        end
        set(sli,'Value',vals,'UserData',vals);
        whelpfun('movtxt',fighelp,dy);

    case 'create'
        % Get Globals.
        %-------------
        [...
        ShiftTop_Fig,Def_Btn_Height,Def_Btn_Width,~, ...
        ~,Def_FraBkColor,Def_Edi_InActBkColor] = ...
            mextglob('get',...
                'ShiftTop_Fig',                                     ...
                'Def_Btn_Height','Def_Btn_Width','Y_Spacing',       ...
                'Def_TxtBkColor','Def_FraBkColor','Def_Edi_InActBkColor' ...
                );

        Deffontsize = get(0,'DefaultAxesFontSize');
        if nargin<3
            fname   = '';  
            fontsize = Deffontsize;
        elseif nargin<4
            fname = in3;
            fontsize = Deffontsize;
        else
            fname = in3;
            fontsize = in4;
        end
        fighelp = wfindobj('figure','Tag',tag_fig_info);
        if isempty(fighelp)
            win_units   = 'pixels';
            Screen_Size = getMonitorSize;
            [~,~,win_height] = wfigmngr('figsizes');
            btn_width = 3*Def_Btn_Width/4;
            cmd_width = 2*btn_width;
            win_width = round(cmd_width/(1-0.85));
            pos_win   = [ Screen_Size(3)-5-win_width, ...
                          Screen_Size(4)-win_height-ShiftTop_Fig, ...
                          win_width, ...
                          win_height ...
                          ];
            axe_col = Def_Edi_InActBkColor;
            fighelp = colordef('new','none');
            set(fighelp, ...
                  'MenuBar','none',...
                  'Name',getWavMSG('Wavelet:divGUIRF:Str_InfoWin'),...
                  'Visible','off',...
                  'Units',win_units,...
                  'Position',pos_win,...
                  'Color',axe_col,...
                  'DefaultAxesXColor',axe_col,...
                  'DefaultAxesYColor',axe_col,...
                  'DefaultAxesZColor',axe_col,...
                  'NumberTitle','off',...
                  'Tag',tag_fig_info...
                  );
			wfigmngr('extfig',fighelp,'ExtFig_WH');

            x_fra   = pos_win(3)-cmd_width+1;
            w_fra   = cmd_width;
            pos_fra = [x_fra , 0 , w_fra , pos_win(4)+5];

            ypos       = pos_fra(2)+pos_fra(4)-5*Def_Btn_Height;
            pos_close  = [ x_fra+btn_width/4 ,...
                           ypos                 ,...
                           3*btn_width/2        ,...
                           2*Def_Btn_Height     ];

            ypos       = ypos-pos_close(4)-2*Def_Btn_Height;
            pos_btn_p1 = pos_close;  pos_btn_p1(2) = ypos;
            ypos       = ypos-pos_close(4)-2*Def_Btn_Height;
            pos_btn_p2 = pos_close;  pos_btn_p2(2) = ypos;
            ypos       = ypos-pos_close(4)-2*Def_Btn_Height;
            pos_btn_p3 = pos_close;  pos_btn_p3(2) = ypos;

            str_close  = getWavMSG('Wavelet:commongui:Str_Close');
            str_btn_p1 = getWavMSG('Wavelet:divGUIRF:Str_PageX',1);
            str_btn_p2 = getWavMSG('Wavelet:divGUIRF:Str_PageX',2);
            str_btn_p3 = getWavMSG('Wavelet:divGUIRF:Str_PageX',3);
            cba_close  = [mfilename '(''close'',gcbf);'];
            cba_btn_p1 = [mfilename '(''page_ud'',gcbf ,1);'];
            cba_btn_p2 = [mfilename '(''page_ud'',gcbf ,2);'];
            cba_btn_p3 = [mfilename '(''page_ud'',gcbf ,3);'];

            fra  = uicontrol(...
                             'Parent',fighelp,   ...
                             'Style','frame',    ...
                             'Visible','off',    ...
                             'Units',win_units,   ...
                             'Position',pos_fra, ...
                             'BackgroundColor',Def_FraBkColor...
                            );

            btn_cl = uicontrol(...
                               'Parent',fighelp,     ...
                               'Style','pushbutton', ...
                               'Units',win_units,     ...
                               'Visible','off',      ...
                               'Position',pos_close, ...
                               'String',str_close,   ...
                               'Interruptible','on', ...
                               'Tag','Pus_Close_Win',...
                               'Callback',cba_close  ...
                               );
            set(fighelp,'CloseRequestFcn',cba_close)

            btn_p1 = uicontrol(...
                               'Parent',fighelp,     ...
                               'Style','pushbutton', ...
                               'Units',win_units,     ...
                               'Visible','off',      ...
                               'Position',pos_btn_p1,...
                               'String',str_btn_p1,  ...
                               'Interruptible','on', ...
                               'Tag','Page1',        ...
                               'Callback',cba_btn_p1 ...
                               );

            btn_p2 = uicontrol(...
                               'Parent',fighelp,     ...
                               'Style','pushbutton', ...
                               'Units',win_units,     ...
                               'Visible','off',      ...
                               'Position',pos_btn_p2,...
                               'String',str_btn_p2,  ...
                               'Interruptible','on', ...
                               'Tag','Page2',        ...                               
                               'Callback',cba_btn_p2 ...
                               );

            btn_p3 = uicontrol(...
                               'Parent',fighelp,     ...
                               'Style','pushbutton', ...
                               'Units',win_units,     ...
                               'Visible','off',      ...
                               'Position',pos_btn_p3,...
                               'String',str_btn_p3,  ...
                               'Interruptible','on', ...
                               'Tag','Page3',        ...
                               'Callback',cba_btn_p3 ...
                               );

            p_axe  = [0 0 win_width-cmd_width win_height];
            axe    = axes(...
                          'Parent',fighelp,               ...
                          'Visible','off',                ...
                          'Units','pixels',               ...
                          'Position',p_axe,               ...
                          'XTickLabelMode','manual',      ...
                          'YTickLabelMode','manual',      ...
                          'XTickLabel',[],'YTickLabel',[],...
                          'Box','On',                     ...
                          'XGrid','off','YGrid','off',    ...
                          'Color',axe_col                 ...
                         );
            pos_sli = [p_axe(1)+p_axe(3)-15 p_axe(2) 15 p_axe(4)];
            cba_sli = [mfilename '(''movsli'',gcbf);'];
            sli     = uicontrol(...
                                'Parent',fighelp,   ...
                                'Style','slider',   ...
                                'Units','pixels',   ...
                                'Position',pos_sli, ...
                                'Visible','off',    ...
                                'Min',0,            ...
                                'Max',150,          ...
                                'Value',150,        ...
                                'Callback',cba_sli  ...
                                 );
            set([fighelp,fra,btn_cl,btn_p1,btn_p2,btn_p3,sli,axe], ...
                                    'Units','normalized');
                                
            set([fighelp,fra,btn_cl,axe,sli],'Visible','on');
            drawnow
        else
            old_name = get(btn_cl,'UserData');
            if ~isempty(old_name) && strcmp(old_name,fname) , return; end
            delete(txt);
            set([sli,btn_p1,btn_p2,btn_p3],'Visible','off');
            if ~isequal(get(0,'CurrentFigure'),fighelp) , figure(fighelp); end
        end
        set(fighelp,'Name', ...
            getWavMSG('Wavelet:divGUIRF:Str_InfoWinN',in2(1,:)));
        set(fra,'UserData',[btn_cl,btn_p1,btn_p2,btn_p3,sli,axe]);
        set(btn_cl,'UserData',fname);
        dim     = size(in2,1);
        old_u   = get(axe,'Units');
        set(axe,'Units','pixels');
        txt_col = [0 0 0];
        p_axe   = get(axe,'Position');
        dy      = dy0;
        dx      = 20;
        y1      = p_axe(4);
        nbt_vis = floor(y1/dy0)-1;
        nb_page = ceil(dim/nbt_vis);
        invis   = 0;
        txt     = zeros(1,dim);

        I124 = find(in2=='|');
        car = '!';
        in2(I124) = car(ones(size(I124)));
        
        fontName = 'FixedWidth';                
        if ismac
            lang = get(0,'lang');
            if isequal(lang(1),'j')
                fontName =  get(0,'DefaultTextFontName');
                fontsize = 11;
            end
        end

        for k = 1:dim
            y1 = y1-dy;
            if y1<dy0/2 , invis = invis+1; end
            txt(k) = text(dx,y1,in2(k,:),       ...
                          'Units','pixels',     ...
                          'fontname',fontName,  ...
                          'FontSize',fontsize,  ...
                          'FontWeight','bold',  ...
                          'Color',txt_col,      ...
                          'Visible','off',      ...
                          'UserData',k,         ...
                          'Parent',axe          ...
                          );
        end
        if dim-invis>0 , set(txt(1:dim-invis),'Visible','on'); end
     
        set(axe,'Units',old_u);
        if nb_page>1
            set(btn_p1,'Visible','on','Enable','off');
            set(btn_p2,'Visible','on','Enable','on');
            if nb_page>2, set(btn_p3,'Visible','on','Enable','on'); end
            val = (nb_page-1)*nbt_vis;
            set(sli,...
                  'Units','pixels',             ...
                  'Max',val,'Value',val,        ...
                  'UserData',val,'Visible','on' ...
                  );
        else
            set(sli,'Visible','off')
        end
        set([txt sli],'Units','normalized');
        set(fra,'UserData',[txt get(fra,'UserData')]);
                
% Set colors and fontes for the figure.
%---------------------------------------
wfigmngr('set_FigATTRB',fighelp,mfilename);
        

    case 'getflag'
        out1 = [];
        out2 = fighelp;
        if isempty(fighelp) , return; end
        out1 = get(btn_cl,'UserData');

    case 'close'
        delete(in2)
end