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

    function whelpdem(titleStr,helpStr1,helpStr2,helpStr3)
%WHELPDEM Utility function for displaying help text conveniently.

%   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 12-Mar-96.
%   Last Revision: 23-May-2012.
%   Copyright 1995-2012 The MathWorks, Inc.

numPages = nargin-1;
if nargin<4 , helpStr3 = ' '; end;
if nargin<3 , helpStr2 = ' '; end;

% First turn on the watch pointer in the old figure
oldFigNumber=watchon;

% If the Help Window has already been created, bring it to the front
figtitle = getWavMSG('Wavelet:wavedemoMSGRF:WTBX_DEMO_INFO');
fig = findobj('Type','figure','Name',figtitle);
newHelpWindowFlag = isempty(fig);
if ~newHelpWindowFlag , figure(fig); end
if newHelpWindowFlag,
    position=get(0,'DefaultFigurePosition');
    position(3:4)=[450 380];
    [Def_DefColor,Def_FigColor] = ...
        mextglob('get','Def_DefColor','Def_FigColor');
    figNumber = colordef('new',Def_DefColor);
    set(figNumber,				...
        'MenuBar','none',			...
        'Name',figtitle,			...
        'NumberTitle','off',			...
        'Visible','off',			...
        'Position',position,			...
        'Color',Def_FigColor,			...
        'DefaultUicontrolFontWeight','bold',	...
        'DefaultAxesFontWeight','bold',		...
        'DefaultTextFontWeight','bold'		...
        );
    
    %===================================
    % Set up the Help Window
    top=0.95;
    left=0.05;
    right=0.75;
    bottom=0.05;
    labelHt=0.05;
    spacing=0.005;
    
    % First, the Text Window frame
    frmBorder=0.02;
    frmPos=[left-frmBorder bottom-frmBorder ...
        (right-left)+2*frmBorder (top-bottom)+2*frmBorder];
    uicontrol( ...
        'Style','frame', ...
        'Units','normalized', ...
        'Position',frmPos, ...
        'BackgroundColor',[0.5 0.5 0.5]);
    % Then the text label
    labelPos=[left top-labelHt (right-left) labelHt];
    ttlHndl=uicontrol( ...
        'Style','text', ...
        'Units','normalized', ...
        'Position',labelPos, ...
        'BackgroundColor',[0.5 0.5 0.5], ...
        'ForegroundColor',[1 1 1], ...
        'String',titleStr);
    % Then the editable text field (of which there are three)
    % Store the text field's handle two places: once in the figure
    % UserData and once in the button's UserData.
    txtHndlList = zeros(1,3);
    for count=1:3,
        helpStr=eval(['helpStr',num2str(count)]);
        txtPos=[left bottom (right-left) top-bottom-labelHt-spacing];
        txtHndlList(count) = uicontrol( ...
            'Style','edit', ...
            'Units','normalized', ...
            'Max',20, ...
            'String',helpStr, ...
            'BackgroundColor',[1 1 1], ...
            'Visible','off', ...
            'Position',txtPos, ...
            'HorizontalAlignment','left');
    end;
    set(txtHndlList(1),'Visible','on');
    
    %====================================
    % Information for all buttons
    top=0.95;
    bottom=0.05;
    left=0.80;
    btnWid=0.15;
    btnHt=0.10;
    % Spacing between the button and the next command's label
    spacing=0.05;
    
    %====================================
    % The CONSOLE frame
    frmBorder=0.02;
    yPos=bottom-frmBorder;
    frmPos=[left-frmBorder yPos btnWid+2*frmBorder 0.9+2*frmBorder];
    uicontrol( ...
        'Style','frame', ...
        'Units','normalized', ...
        'Position',frmPos, ...
        'BackgroundColor',[0.5 0.5 0.5]);
    
    %====================================
    % All required BUTTONS
    btnHndlList = zeros(1,3);
    for count=1:3
        % The PAGE button
        labelStr = getWavMSG('Wavelet:wavedemoMSGRF:Str_Page',count);
        % The callback will turn off ALL text fields and then turn on
        % only the one referred to by the button.
        strfig = int2str(figNumber);
        callbackStr= ...
            [...
            'set(' strfig ',''HandleVisibility '',''on'');' ...
            'txtHndl=get(gco,''UserData'');' ...
            'hndlList=get(' strfig ',''UserData'');' ...
            'set(hndlList(2:4),''Visible'',''off'');' ...
            'set(txtHndl,''Visible'',''on'');'	...
            'set(' strfig ',''HandleVisibility '',''off'');' ...
            ];
        btnHndlList(count)=uicontrol( ...
            'Style','pushbutton', ...
            'Units','normalized', ...
            'Position',[left top-btnHt-(count-1)*(btnHt+spacing) btnWid btnHt], ...
            'String',labelStr, ...
            'UserData',txtHndlList(count), ...
            'Visible','off', ...
            'Callback',callbackStr);
    end;
    
    %====================================
    % The CLOSE button
    callbackStr= ['delete(' int2str(figNumber) ');'];
    uicontrol( ...
        'Style','pushbutton', ...
        'Units','normalized', ...
        'Position',[left 0.05 btnWid 0.10], ...
        'String',getWavMSG('Wavelet:commongui:Str_Close'), ...
        'Callback',callbackStr);
    
    hndlList=[ttlHndl txtHndlList btnHndlList];
    
    set(figNumber,'UserData',hndlList)
    
end;

set(figNumber,'HandleVisibility','on');
% Now that we've determined the figure number, we can install the
% Desired strings.
hndlList=get(figNumber,'UserData');
ttlHndl=hndlList(1);
txtHndlList=hndlList(2:4);
btnHndlList=hndlList(5:7);
set(ttlHndl,'String',titleStr);
set(txtHndlList(2:3),'Visible','off');
set(txtHndlList(1),'Visible','on');
set(txtHndlList(1),'String',helpStr1);
set(txtHndlList(2),'String',helpStr2);
set(txtHndlList(3),'String',helpStr3);

if numPages==1,
    set(btnHndlList,'Visible','off');
elseif numPages==2,
    set(btnHndlList,'Visible','off');
    set(btnHndlList(1:2),'Visible','on');
elseif numPages==3,
    set(btnHndlList(1:3),'Visible','on');
end;

set(figNumber,'Visible','on');
% Turn off the watch pointer in the old figure
watchoff(oldFigNumber);
figure(figNumber);
set(figNumber,'HandleVisibility','off');