function f = showinfowindow(hTsgGUI,msg,wtitle) % % SHOWINFOWINDOW creates a small dialog window which displays a user-defined message. It % is quite like MATLAB's msgbox but without an OK button. Although msgbox could be used % for the simple display of a message that informs the user about a process being % performed (and is not expected to last long, else a waitbar/timebar could be used but at % a cost of running time), the presence of the OK button that closes the window on press % could be annoying. SHOWINFOWINDOW resolves this problem by removing the button. % Additionally, if you wish to write a script or create a GUI where you do not wish the % user to accidenatlly hit the close button in the upper right corner of the window, you % can remove the comment on line 82 of the code concerning the 'CloseRequestFcn' property % of the dialog. However, if you do that you must assign a handle to showinfowindow so you % can change its 'CloseRequestFcn' property to 'closereq' when your process is done or % else you might end up with a non-closing window! If that happens, one way to resolve % this could be to use the findobj function: % % non_closing_window_handle = findobj('CloseRequestFcn',''); % set(non_closing_window_handle,'CloseRequestFcn','closereq') % close(non_closing_window_handle) % % Syntax: % % showinfowindow % h = showinfowindow % showinfowindow(msg) % h = showinfowindow(msg) % showinfowindow(msg,wtitle) % h = showinfowindow(msg,wtitle) % % showinfowindow and h = showinfowindow without any input arguments create an example. % % showinfowindow(msg) and h = showinfowindow(msg) display the user-defined message msg % which should be a character string or a cell array of strings. % % showinfowindow(msg,wtitle) and h = showinfowindow(msg,wtitle) display the user-defined % message msg which should be a character string or a cell array of strings. This time the % window has the title wtitle % % Although this script was created for something trivial, I found it useful especially in % my GUIs where I wanted to briefly display some information in a very simple way and % especially when I wanted to avoid someone causing such windows to close when running a % process within a GUI, probably resulting in errors. % % Examples % % h1 = showinfowindow('Running - Please wait...'); % % h2 = showinfowindow({'This is a long message for a long process.',... % 'It is displayed in two lines.'},'Long message'); % %========================================================== % % Author : Panagiotis Moulos (pmoulos@eie.gr) % First created : May 7, 2007 % Last modified : June 11, 2007 % Added J.Grelet: Dec 05, 2018, tsg.fontsize % Check input arguments if nargin<1 msg='Example of showinfowindow.m'; wtitle='Example'; elseif nargin<2 wtitle='Info'; end if ~iscell(msg) msg={msg}; end % Retrieve named application data % ------------------------------- tsg = getappdata( hTsgGUI, 'tsg_data'); fontSize = tsg.fontSize -1; % Set default sizes DefFigPos=get(0,'DefaultFigurePosition'); MsgOff=7; FigWidth = 125 * tsg.fontSize/8; FigHeight = 50 * tsg.fontSize/8; DefFigPos(3:4)=[FigWidth FigHeight]; MsgTxtWidth=FigWidth-2*MsgOff; MsgTxtHeight=FigHeight-2*MsgOff; % Initialize dialog window f=dialog('Name',wtitle,'Units','points','WindowStyle','normal','Toolbar','none',... 'DockControls','off','MenuBar','none','Resize','off','ToolBar','none',... 'NumberTitle','off');%,'CloseRequestFcn',''); % Initialize message msgPos=[MsgOff MsgOff MsgTxtWidth MsgTxtHeight]; msgH=uicontrol(f,'Style','text','Units','points','Position',msgPos,'String',' ',... 'Tag','MessageBox','HorizontalAlignment','left','FontSize',fontSize); [WrapString,NewMsgTxtPos]=textwrap(msgH,msg,75); set(msgH,'String',WrapString) delete(msgH); % Fix final message positions MsgTxtWidth=max(MsgTxtWidth,NewMsgTxtPos(3)); MsgTxtHeight=min(MsgTxtHeight,NewMsgTxtPos(4)); MsgTxtXOffset=MsgOff; MsgTxtYOffset=MsgOff; FigWidth=MsgTxtWidth+2*MsgOff; FigHeight=MsgTxtYOffset+MsgTxtHeight+MsgOff; DefFigPos(3:4)=[FigWidth FigHeight]; set(f,'Position',DefFigPos); % Create the message AxesHandle=axes('Parent',f,'Position',[0 0 1 1],'Visible','off'); txtPos=[MsgTxtXOffset MsgTxtYOffset 0]; text('Parent',AxesHandle,'Units','points','HorizontalAlignment','left',... 'VerticalAlignment','bottom','Position',txtPos,'String',WrapString,... 'FontSize',fontSize,'Tag','MessageBox'); % Move the window to the center of the screen set(f,'Units','pixels') screensize=get(0,'screensize'); winsize=get(f,'Position'); winwidth=winsize(3); winheight=winsize(4); screenwidth=screensize(3); screenheight=screensize(4); winpos=[0.5*(screenwidth-winwidth),0.5*(screenheight-winheight),winwidth,winheight]; set(f,'Position',winpos); % Give priority to displaying this message drawnow