gusucode.com > demos工具箱matlab源码程序 > demos/cmdlnwin.m
function cmdlnwin(labelList,nameList,figureFlagList) %CMDLNWIN A demo gateway routine for playing command line demos. % CMDLNWIN(LabelList,NameList,FigureFlagList) % creates a "Command Line Demos" window which % allows you to launch demos that operate from % the command window, as opposed to those that % have their own graphic user interface. % % LabelList contains the descriptive names % of the demos that will be % displayed in the "Command Line % Demos" window. % % NameList contains the actual function names % of the demos. % % FigureFlagList indicates whether the demo requires % a separate figure window. % % This allows users of The MATLAB Demos to % have access to a number of demos that, for % one reason or another, do not specifically % use the GUI tools. % % Remember that these demos will send output % to and accept input from the MATLAB % command window, so you must make sure % that the command window does not get hidden % behind any other windows. % Ned Gulley, 6-21-93, jae Roh 10-15-96 % Copyright 1984-2014 The MathWorks, Inc. % labelList contains the descriptive names of the demos % nameList contains the actual function names of the demos % windowFlagList contains a flag variable that indicates whether % or not a window is required for the demo % oldFigNumber = watchon; % If no figureFlagList is supplied, assume every demo needs a % figure window if nargin<3, figureFlagList = ones(size(labelList,1),1); end % Now initialize the whole figure... figNumber = figure( ... 'Name','Command Line Demos', ... 'IntegerHandle','off', ... 'NumberTitle','off'); % 'NextPlot','New', ... axes('Visible','off','HandleVisibility','callback') % 'NextPlot','new') % =================================== % Set up the Comment Window top = 0.30; left = 0.05; right = 0.75; bottom = 0.05; labelHt = 0.05; spacing = 0.005; promptStr = ... [' The buttons in this window will launch "Command Line ' ' Demos". These are demos that use the MATLAB ' ' Command Window for input and output. Make sure the ' ' command window is visible before you run these demos.']; % First, the Comment 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.50 0.50 0.50]); % Then the text label labelPos = [left top-labelHt (right-left) labelHt]; uicontrol( ... 'Style','text', ... 'Units','normalized', ... 'Position',labelPos, ... 'BackgroundColor',[0.50 0.50 0.50], ... 'ForegroundColor',[1 1 1], ... 'String','Comment Window'); % Then the editable text field txtPos = [left bottom (right-left) top-bottom-labelHt-spacing]; txtHndl = uicontrol( ... 'Style','edit', ... 'HorizontalAlignment','left', ... 'Units','normalized', ... 'Max',10, ... 'BackgroundColor',[1 1 1], ... 'Position',txtPos, ... 'String',promptStr); % ==================================== % Information for all buttons labelColor = [0.8 0.8 0.8]; yInitPos = 0.90; 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.04; % ==================================== % The CONSOLE frame frmBorder = 0.02; yPos = 0.05-frmBorder; frmPos = [left-frmBorder yPos btnWid+2*frmBorder 0.9+2*frmBorder]; h = uicontrol( ... 'Style','frame', ... 'Units','normalized', ... 'Position',frmPos, ... 'BackgroundColor',[0.5 0.5 0.5]); % ==================================== % The INFO button labelStr = getString(message('MATLAB:demos:shared:LabelInfo')); callbackStr = ['helpwin ' mfilename]; infoHndl = uicontrol( ... 'Style','pushbutton', ... 'Units','normalized', ... 'Position',[left bottom+btnHt+spacing btnWid btnHt], ... 'String',labelStr, ... 'Callback',callbackStr); % ==================================== % The CLOSE button labelStr = getString(message('MATLAB:demos:shared:LabelClose')); callbackStr = 'close(gcbf)'; closeHndl = uicontrol( ... 'Style','pushbutton', ... 'Units','normalized', ... 'Position',[left bottom btnWid btnHt], ... 'String',labelStr, ... 'Callback',callbackStr); % ==================================== % Information for demo buttons labelColor = [0.8 0.8 0.8]; btnWid = 0.32; btnHt = 0.08; top = 0.95; bottom = 0.35; right = 0.75; leftCol1 = 0.05; leftCol2 = right-btnWid; % Spacing between the buttons spacing = 0.02; % spacing = (top-bottom-4*btnHt)/3; % ==================================== % Bring the command window forward on demo launch. showCommandWindow = 'commandwindow();'; numButtons = size(labelList,1); col1Count = fix(numButtons/2)+rem(numButtons,2); col2Count = fix(numButtons/2); % Lay out the buttons in two columns for count = 1:col1Count, btnNumber = count; yPos = top-(btnNumber-1)*(btnHt+spacing); labelStr = deblank(labelList(count,:)); % callbackStr = 'eval(get(gco,''UserData''));'; cmdStr = [showCommandWindow ... 'figureNeededFlag = ',num2str(figureFlagList(count)),'; ', ... 'cmdlnbgn; ' nameList(count,:) '; cmdlnend;']; % Generic button information btnPos = [leftCol1 yPos-btnHt btnWid btnHt]; startHndl = uicontrol( ... 'Style','pushbutton', ... 'Units','normalized', ... 'Position',btnPos, ... 'String',labelStr, ... 'Callback',cmdStr); % 'UserData',cmdStr, ... % 'Callback',callbackStr); end; for count = 1:col2Count, btnNumber = count; yPos = top-(btnNumber-1)*(btnHt+spacing); labelStr = deblank(labelList(count+col1Count,:)); % callbackStr = 'eval(get(gco,''UserData''));'; cmdStr = [showCommandWindow ... 'figureNeededFlag = ',num2str(figureFlagList(count+col1Count)),'; ', ... 'cmdlnbgn; ' nameList(count+col1Count,:) '; cmdlnend;']; % Generic button information btnPos = [leftCol2 yPos-btnHt btnWid btnHt]; startHndl = uicontrol( ... 'Style','pushbutton', ... 'Units','normalized', ... 'Position',btnPos, ... 'String',labelStr, ... 'Callback',cmdStr); % 'UserData',cmdStr, ... % 'Callback',callbackStr); end; % watchoff(oldFigNumber); set(figNumber,'HandleVisibility','off');