Mercurial > octave
view scripts/plot/util/openfig.m @ 32002:939e5d952675
Use upper/lower in preference to toupper/tolower to match Matlab.
* mappers.cc (Fupper, Flower): Functions renamed from toupper/tolower and now
use "DEFUN" macro. Change DEFALIAS to correctly map toXXX to XXX. Update all
BIST tests.
* func.txi, strings.txi: Update manual.
* cellfun.cc, utils.cc, Map.m, idivide.m, integral.m, integral2.m,
integral3.m, interp1.m, quad2d.m, quadgk.m, rng.m, griddata.m, griddatan.m,
listdlg.m, movegui.m, __file_filter__.m, uigetfile.m, uisetfont.m,
__unimplemented__.m, colormap.m, imformats.m, imshow.m, __imread__.m,
__imwrite__.m, rgbplot.m, javaclasspath.m, genvarname.m, edit.m, inputParser.m,
license.m, open.m, parseparams.m, unpack.m, validateattributes.m,
__all_opts__.m, get_description.m, get_forge_pkg.m, camorbit.m, daspect.m,
datetick.m, pbaspect.m, __tickangle__.m, rticks.m, thetaticks.m, xticks.m,
yticks.m, zticks.m, camlight.m, colorbar.m, isocaps.m, isosurface.m,
__add_datasource__.m, __patch__.m, __scatter__.m, reducepatch.m, smooth3.m,
surfl.m, hgload.m, hold.m, openfig.m, __add_default_menu__.m,
__print_parse_opts__.m, refreshdata.m, saveas.m, struct2hdl.m, movfun.m,
stft.m, eigs.m, ichol.m, ilu.m, gammainc.m, gallery.m, corrcoef.m, iqr.m,
normalize.m, base2dec.m, index.m, regexptranslate.m, strsplit.m, datestr.m,
mk-sparse-tst.sh: Replace toupper/tolower with upper/lower in Octave code.
author | Rik <rik@octave.org> |
---|---|
date | Wed, 12 Apr 2023 15:34:43 -0700 |
parents | 597f3ee61a48 |
children | 2e484f9f1f18 |
line wrap: on
line source
######################################################################## ## ## Copyright (C) 2018-2023 The Octave Project Developers ## ## See the file COPYRIGHT.md in the top-level directory of this ## distribution or <https://octave.org/copyright/>. ## ## This filename is part of Octave. ## ## Octave is free software: you can redistribute it and/or modify it ## under the terms of the GNU General Public License as published by ## the Free Software Foundation, either version 3 of the License, or ## (at your option) any later version. ## your option) any later version. ## ## Octave is distributed in the hope that it will be useful, but ## WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with Octave; see the filename COPYING. If not, see ## <https://www.gnu.org/licenses/>. ## ######################################################################## ## -*- texinfo -*- ## @deftypefn {} {} openfig ## @deftypefnx {} {} openfig (@var{filename}) ## @deftypefnx {} {} openfig (@dots{}, @var{copies}) ## @deftypefnx {} {} openfig (@dots{}, @var{visibility}) ## @deftypefnx {} {@var{h} =} openfig (@dots{}) ## Read saved figure window(s) from @var{filename} and return graphics ## handle(s) @var{h}. ## ## By default, @var{filename} is @qcode{"Untitled.fig"}. If a full path is not ## specified, the file opened will be the first one encountered in the load ## path. If @var{filename} is not found and does not have an extension, a ## search will take place for the first file in the load path with extension ## @qcode{".fig"} or @qcode{".ofig"}, in that order. ## ## @var{copies} is an optional input indicating whether a new figure should ## be created (@qcode{"new"}) or whether an existing figure may be reused ## (@qcode{"reuse"}). An existing figure may be reused if the ## @qcode{"FileName"} property matches the specified input @var{filename}. ## When a figure is reused it becomes the active figure and is shown on top ## of other figures. If the figure was offscreen, it is re-positioned to be ## onscreen. The default value for @var{copies} is @qcode{"new"}. ## ## @var{visibility} is an optional input indicating whether to show the figure ## (@qcode{"visible"}) or not (@qcode{"invisible"}). When @var{visibility} is ## specified as an input to @code{openfig} it overrides the visibility setting ## stored in @var{filename}. ## ## @seealso{open, hgload, savefig, struct2hdl} ## @end deftypefn function h = openfig (filename = "Untitled.fig", varargin) if (nargin > 3) print_usage (); endif ## Check input filename if (isempty (file_in_loadpath (filename))) [d,n,ext] = fileparts (filename); if (isempty (ext)) filename = fullfile (d, [n ".fig"]); if (isempty (file_in_loadpath (filename))) filename = fullfile (d, [n ".ofig"]); if (isempty (file_in_loadpath (filename))) error ("openfig: cannot find file '%s'", filename); endif endif else error ("openfig: cannot find file '%s'", filename); endif endif filename = file_in_loadpath (filename); ## Process optional arguments copies = true; visibility = {}; for i = 1:numel (varargin) if (! ischar (varargin{i})) error ("openfig: input argument %d must be a string", i+1); endif switch (lower (varargin{i})) case "reuse" copies = false; case "new" copies = true; case "visible" visibility = {"visible", "on"}; case "invisible" visibility = {"visible", "off"}; otherwise error ("openfig: unknown option '%s'", varargin{i}); endswitch endfor ## Reuse an existing figure? if (! copies) htmp = findobj (allchild (0), "type", "figure", "FileName", filename); if (! isempty (htmp)) htmp = htmp(end); if (! isempty (visibility)) set (htmp, visibility{:}); endif movegui (htmp, "onscreen"); if (nargout > 0) h = htmp; endif return; endif endif ## Load graphics objects from file prop_struct = cell2struct (visibility(2:2:end), visibility(1:2:end), 2); htmp = hgload (filename, prop_struct); set (htmp, "FileName", filename); if (nargout > 0) h = htmp; endif endfunction %!test %! unwind_protect %! h1 = figure ("visible", "off"); %! ftmp = [tempname() ".ofig"]; %! hgsave (h1, ftmp); %! close (h1); %! h2 = openfig (ftmp, "new", "invisible"); %! h3 = openfig (ftmp, "reuse"); %! assert (h2 == h3); %! close (h2); %! unwind_protect_cleanup %! unlink (ftmp); %! try, close (h1); end_try_catch %! try, close (h2); end_try_catch %! try, close (h3); end_try_catch %! end_unwind_protect %!error openfig (1, 2, 3, 4) %!error <cannot find file> openfig ("%%_A_REALLY_UNLIKELY_FILENAME_%%") %!error <cannot find file> openfig ("%%_A_REALLY_UNLIKELY_FILENAME_%%.fig") %!error <input argument 3 must be a string> %! unwind_protect %! h = figure ("visible", "off"); %! ftmp = [tempname() ".ofig"]; %! hgsave (h, ftmp); %! openfig (ftmp, "new", [1, 2, 3]); %! unwind_protect_cleanup %! unlink (ftmp); %! close (h); %! end_unwind_protect %!error <unknown option 'foobar'> %! unwind_protect %! h = figure ("visible", "off"); %! ftmp = [tempname() ".ofig"]; %! hgsave (h, ftmp); %! openfig (ftmp, "foobar"); %! unwind_protect_cleanup %! unlink (ftmp); %! close (h); %! end_unwind_protect