123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- % Imbed a file menu to any figure. If file menu exist, it will append
- % to the existing file menu. This file menu includes: Copy to clipboard,
- % print, save, close etc.
- %
- % Usage: rri_file_menu(fig);
- %
- % rri_file_menu(fig,0) means no 'Close' menu.
- %
- % - Jimmy Shen (jimmy@rotman-baycrest.on.ca)
- %
- %--------------------------------------------------------------------
- function rri_file_menu(action, varargin)
- if isnumeric(action)
- fig = action;
- action = 'init';
- end
- % clear the message line,
- %
- h = findobj(gcf,'Tag','MessageLine');
- set(h,'String','');
- if ~strcmp(action, 'init')
- set(gcbf, 'InvertHardcopy','off');
- % set(gcbf, 'PaperPositionMode','auto');
- end
- switch action
- case {'init'}
- if nargin > 1
- init(fig, 1); % no 'close' menu
- else
- init(fig, 0);
- end
- case {'print_fig'}
- printdlg(gcbf);
- case {'copy_fig'}
- copy_fig;
- case {'export_fig'}
- export_fig;
- end
- return % rri_file_menu
- %------------------------------------------------
- %
- % Create (or append) File menu
- %
- function init(fig, no_close)
- % search for file menu
- %
- h_file = [];
- menuitems = findobj(fig, 'type', 'uimenu');
- for i=1:length(menuitems)
- filelabel = get(menuitems(i),'label');
- if strcmpi(strrep(filelabel, '&', ''), 'file')
- h_file = menuitems(i);
- break;
- end
- end
- set(fig, 'menubar', 'none');
- if isempty(h_file)
- if isempty(menuitems)
- h_file = uimenu('parent', fig, 'label', 'File');
- else
- h_file = uimenu('parent', fig, 'label', 'Copy Figure');
- end
- h1 = uimenu('parent', h_file, ...
- 'callback','rri_file_menu(''copy_fig'');', ...
- 'label','Copy to Clipboard');
- else
- h1 = uimenu('parent', h_file, ...
- 'callback','rri_file_menu(''copy_fig'');', ...
- 'separator','on', ...
- 'label','Copy to Clipboard');
- end
- h2 = uimenu(h_file, ...
- 'callback','pagesetupdlg(gcbf);', ...
- 'label','Page Setup...');
- h2 = uimenu(h_file, ...
- 'callback','printpreview(gcbf);', ...
- 'label','Print Preview...');
- h2 = uimenu('parent', h_file, ...
- 'callback','printdlg(gcbf);', ...
- 'label','Print Figure ...');
- h2 = uimenu('parent', h_file, ...
- 'callback','rri_file_menu(''export_fig'');', ...
- 'label','Save Figure ...');
- arch = computer;
- if ~strcmpi(arch(1:2),'PC')
- set(h1, 'enable', 'off');
- end
- if ~no_close
- h1 = uimenu('parent', h_file, ...
- 'callback','close(gcbf);', ...
- 'separator','on', ...
- 'label','Close');
- end
- return; % init
- %------------------------------------------------
- %
- % Copy to clipboard
- %
- function copy_fig
- arch = computer;
- if(~strcmpi(arch(1:2),'PC'))
- error('copy to clipboard can only be used under MS Windows');
- return;
- end
- print -noui -dbitmap;
- return % copy_fig
- %------------------------------------------------
- %
- % Save as an image file
- %
- function export_fig
- curr = pwd;
- if isempty(curr)
- curr = filesep;
- end
- [selected_file, selected_path] = rri_select_file(curr,'Save As');
- if isempty(selected_file) | isempty(selected_path)
- return;
- end
- filename = [selected_path selected_file];
- if(exist(filename,'file')==2) % file exist
- dlg_title = 'Confirm File Overwrite';
- msg = ['File ',filename,' exist. Are you sure you want to overwrite it?'];
- response = questdlg(msg,dlg_title,'Yes','No','Yes');
- if(strcmp(response,'No'))
- return;
- end
- end
- old_pointer = get(gcbf,'pointer');
- set(gcbf,'pointer','watch');
- try
- saveas(gcbf,filename);
- catch
- msg = 'ERROR: Cannot save file';
- set(findobj(gcf,'Tag','MessageLine'),'String',msg);
- end
- set(gcbf,'pointer',old_pointer);
- return; % export_fig
|