annotate scripts/miscellaneous/getappdata.m @ 19865:e9f89866074c

maint: Cleanup some .m files to follow Octave coding conventions. * accumarray.m, validateattributes.m, iscolormap.m, __imread__.m, __imwrite__.m, imwrite_filename.m, strread.m, getappdata.m, appearance/annotation.m, shrinkfaces.m, rundemos.m, runtests.m, datenum.m, datestr.m: Break long lines before && and ||.
author John W. Eaton <jwe@octave.org>
date Thu, 26 Feb 2015 13:13:40 -0500
parents 4197fc428c7d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
19697
4197fc428c7d maint: Update copyright notices for 2015.
John W. Eaton <jwe@octave.org>
parents: 19636
diff changeset
1 ## Copyright (C) 2010-2015 Ben Abbott
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
2 ##
17795
0a8c35ae5ce1 maint: Fix various problems with GPL copyright statements.
Rik <rik@octave.org>
parents: 17744
diff changeset
3 ## This file is part of Octave.
0a8c35ae5ce1 maint: Fix various problems with GPL copyright statements.
Rik <rik@octave.org>
parents: 17744
diff changeset
4 ##
0a8c35ae5ce1 maint: Fix various problems with GPL copyright statements.
Rik <rik@octave.org>
parents: 17744
diff changeset
5 ## Octave is free software; you can redistribute it and/or modify it
0a8c35ae5ce1 maint: Fix various problems with GPL copyright statements.
Rik <rik@octave.org>
parents: 17744
diff changeset
6 ## under the terms of the GNU General Public License as published by
0a8c35ae5ce1 maint: Fix various problems with GPL copyright statements.
Rik <rik@octave.org>
parents: 17744
diff changeset
7 ## the Free Software Foundation; either version 3 of the License, or
11180
1a26199cb212 Add new appdata functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
8 ## (at your option) any later version.
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
9 ##
17795
0a8c35ae5ce1 maint: Fix various problems with GPL copyright statements.
Rik <rik@octave.org>
parents: 17744
diff changeset
10 ## Octave is distributed in the hope that it will be useful,
11180
1a26199cb212 Add new appdata functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
11 ## but WITHOUT ANY WARRANTY; without even the implied warranty of
1a26199cb212 Add new appdata functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1a26199cb212 Add new appdata functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
13 ## GNU General Public License for more details.
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
14 ##
11180
1a26199cb212 Add new appdata functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
15 ## You should have received a copy of the GNU General Public License
1a26199cb212 Add new appdata functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
16 ## along with Octave; see the file COPYING. If not, see
1a26199cb212 Add new appdata functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
17 ## <http://www.gnu.org/licenses/>.
1a26199cb212 Add new appdata functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
18
1a26199cb212 Add new appdata functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
19 ## -*- texinfo -*-
16491
b10a23fe80bb doc: Tweak docstrings of functions changed for Texinfo 5.0 compatibility.
Rik <rik@octave.org>
parents: 16489
diff changeset
20 ## @deftypefn {Function File} {@var{value} =} getappdata (@var{h}, @var{name})
16489
36dba9be680b doc: Make documentation compatible with Texinfo 5.0 (bug #38392)
Amod Mulay <amodmulay1@gmail.com>
parents: 14868
diff changeset
21 ## @deftypefnx {Function File} {@var{appdata} =} getappdata (@var{h})
19264
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
22 ## Return the @var{value} of the application data @var{name} for the graphics
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
23 ## object with handle @var{h}.
19593
446c46af4b42 strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 17795
diff changeset
24 ##
19264
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
25 ## @var{h} may also be a vector of graphics handles. If no second argument
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
26 ## @var{name} is given then @code{getappdata} returns a structure,
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
27 ## @var{appdata}, whose fields correspond to the appdata properties.
17122
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 16491
diff changeset
28 ##
19264
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
29 ## @seealso{setappdata, isappdata, rmappdata, guidata, get, set, getpref, setpref}
11180
1a26199cb212 Add new appdata functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
30 ## @end deftypefn
1a26199cb212 Add new appdata functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
31
1a26199cb212 Add new appdata functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
32 ## Author: Ben Abbott <bpabbott@mac.com>
1a26199cb212 Add new appdata functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
33 ## Created: 2010-07-15
1a26199cb212 Add new appdata functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
34
19264
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
35 function value = getappdata (h, name)
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
36
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
37 if (nargin < 1 || nargin > 2)
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
38 print_usage ();
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
39 endif
11180
1a26199cb212 Add new appdata functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
40
19264
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
41 if (! all (ishandle (h(:))))
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
42 error ("getappdata: H must be a scalar or vector of graphic handles");
19597
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19596
diff changeset
43 endif
19264
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
44
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
45 if (nargin == 2)
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
46 if (! ischar (name))
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
47 error ("getappdata: NAME must be a string");
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
48 endif
19597
db92e7e28e1f strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19596
diff changeset
49
19264
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
50 value = cell (numel (h), 1);
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
51 appdata = struct ();
19264
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
52 for i = 1:numel (h)
19636
3da4b083e0b8 getappdata.m: fix output for multiple handles (bug #44097)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19597
diff changeset
53 value{i} = [];
3da4b083e0b8 getappdata.m: fix output for multiple handles (bug #44097)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19597
diff changeset
54 pval = get (h(i));
19865
e9f89866074c maint: Cleanup some .m files to follow Octave coding conventions.
John W. Eaton <jwe@octave.org>
parents: 19697
diff changeset
55 if (isfield (pval, "__appdata__") && isfield (pval.__appdata__, name))
19636
3da4b083e0b8 getappdata.m: fix output for multiple handles (bug #44097)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 19597
diff changeset
56 value{i} = pval.__appdata__.(name);
13243
f9aec0bcf826 getappdata: return empty matrix for nonexistent property names
John W. Eaton <jwe@octave.org>
parents: 13174
diff changeset
57 endif
13174
bd2cd4fd3edf maint: use specific endif, endfor tokens instead of simple end
John W. Eaton <jwe@octave.org>
parents: 12642
diff changeset
58 endfor
19264
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
59
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
60 if (i == 1)
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
61 value = value{1};
12597
e12a7c0a1fc5 getappdata.m: If no property name is provided, return a structure representing the appdata.
Ben Abbott <bpabbott@mac.com>
parents: 12590
diff changeset
62 endif
19264
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
63
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
64 else # nargin == 1
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
65 if (numel (h) != 1)
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
66 error ("getappdata: Only one handle H may be used when fetching appdata");
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
67 endif
12597
e12a7c0a1fc5 getappdata.m: If no property name is provided, return a structure representing the appdata.
Ben Abbott <bpabbott@mac.com>
parents: 12590
diff changeset
68 try
19264
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
69 value = get (h, "__appdata__");
12597
e12a7c0a1fc5 getappdata.m: If no property name is provided, return a structure representing the appdata.
Ben Abbott <bpabbott@mac.com>
parents: 12590
diff changeset
70 catch
19264
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
71 value = struct ();
12597
e12a7c0a1fc5 getappdata.m: If no property name is provided, return a structure representing the appdata.
Ben Abbott <bpabbott@mac.com>
parents: 12590
diff changeset
72 end_try_catch
11180
1a26199cb212 Add new appdata functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
73 endif
1a26199cb212 Add new appdata functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
74
1a26199cb212 Add new appdata functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
75 endfunction
1a26199cb212 Add new appdata functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
76
19264
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
77
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
78 %!test
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
79 %! unwind_protect
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
80 %! setappdata (0, "%data1%", ones (3), "%data2%", "hello world");
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
81 %! assert (getappdata (0, "%data1%"), ones (3));
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
82 %! assert (getappdata (0, "%data2%"), "hello world");
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
83 %! appdata = getappdata (0);
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
84 %! name1 = "%data1%"; name2 = "%data2%";
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
85 %! assert (appdata.(name1), ones (3));
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
86 %! assert (appdata.(name2), "hello world");
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
87 %! unwind_protect_cleanup
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
88 %! rmappdata (0, "%data1%", "%data2%");
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
89 %! end_unwind_protect
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
90
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
91 ## Test input validation
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
92 %!error getappdata ()
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
93 %!error getappdata (1,2,3)
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
94 %!error <H must be a scalar .* graphic handle> getappdata (-1, "hello")
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
95 %!error <NAME must be a string> getappdata (0, 1)
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
96 %!error <Only one handle H may be used when fetching appdata> getappdata ([0 0])
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 18857
diff changeset
97