annotate scripts/miscellaneous/setappdata.m @ 20039:eba80000fa0d rc-4-0-0-2

maint: Bump version number for 4.0.0-rc2.
author John W. Eaton <jwe@octave.org>
date Fri, 20 Mar 2015 16:19:38 -0400
parents 4197fc428c7d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
19731
4197fc428c7d maint: Update copyright notices for 2015.
John W. Eaton <jwe@octave.org>
parents: 19298
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: 11563
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: 11563
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: 11563
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 -*-
19298
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
20 ## @deftypefn {Function File} {} setappdata (@var{h}, @var{name}, @var{value})
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
21 ## @deftypefnx {Function File} {} setappdata (@var{h}, @var{name1}, @var{value1}, @var{name2}, @var{value3}, @dots{})
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
22 ## Set the application data @var{name} to @var{value} for the graphics object
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
23 ## with handle @var{h}.
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
24 ##
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
25 ## @var{h} may also be a vector of graphics handles. If the application data
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
26 ## with the specified @var{name} does not exist, it is created. Multiple
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
27 ## @var{name}/@var{value} pairs can be specified at a time.
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
28 ##
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
29 ## @seealso{getappdata, 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
1a26199cb212 Add new appdata functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
35 function setappdata (h, varargin)
1a26199cb212 Add new appdata functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
36
19298
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
37 h = h(:).';
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
38 if (! all (ishandle (h)))
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
39 error ("setappdata: H must be a scalar or vector of graphic handles");
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
40 elseif (mod (numel (varargin), 2) != 0)
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
41 error ("setappdata: NAME/VALUE arguments must occur in pairs");
11180
1a26199cb212 Add new appdata functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
42 endif
1a26199cb212 Add new appdata functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
43
19298
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
44 for hg = h
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
45 try
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
46 appdata = get (hg, "__appdata__");
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
47 catch
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
48 appdata = struct ();
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
49 addproperty ("__appdata__", hg, "any", appdata);
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
50 end_try_catch
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
51
14868
5d3a684236b0 maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents: 14363
diff changeset
52 for narg = 1:2:numel (varargin)
19298
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
53 if (ischar (varargin{narg}))
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
54 appdata.(varargin{narg}) = varargin{narg+1};
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
55 elseif (iscellstr (varargin{narg}))
11180
1a26199cb212 Add new appdata functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
56 ## Handle cell arrays like set() does.
19298
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
57 set (hg, "__appdata__", appdata);
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
58 setappdata (hg, vertcat (varargin{narg}', varargin{narg+1}'){:});
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
59 appdata = get (hg, "__appdata__");
11180
1a26199cb212 Add new appdata functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
60 else
19298
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
61 error ("setappdata: NAME must be a string or cellstr");
11180
1a26199cb212 Add new appdata functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
62 endif
1a26199cb212 Add new appdata functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
63 endfor
19298
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
64
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
65 set (hg, "__appdata__", appdata);
11180
1a26199cb212 Add new appdata functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
66 endfor
1a26199cb212 Add new appdata functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
67
1a26199cb212 Add new appdata functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
68 endfunction
1a26199cb212 Add new appdata functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
69
14363
f3d52523cde1 Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
70
11180
1a26199cb212 Add new appdata functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
71 %!test
19298
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
72 %! unwind_protect
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
73 %! setappdata (0, "%hello%", "world");
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
74 %! assert (isappdata (0, "%hello%"), true);
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
75 %! assert (getappdata (0, "%hello%"), "world");
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
76 %! unwind_protect_cleanup
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
77 %! rmappdata (0, "%hello%");
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
78 %! end_unwind_protect
11180
1a26199cb212 Add new appdata functions.
Ben Abbott <bpabbott@mac.com>
parents:
diff changeset
79
19298
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
80 %!test
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
81 %! unwind_protect
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
82 %! setappdata (0, "%data1%", ones (3), "%data2%", "hello world");
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
83 %! assert (getappdata (0, "%data1%"), ones (3));
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
84 %! assert (getappdata (0, "%data2%"), "hello world");
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
85 %! setappdata (0, "%data1%", zeros (3));
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
86 %! assert (getappdata (0, "%data1%"), zeros (3));
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
87 %! unwind_protect_cleanup
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
88 %! rmappdata (0, "%data1%", "%data2%");
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
89 %! end_unwind_protect
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
90
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
91 ## Test input validation
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
92 %!error <H must be a scalar .* graphic handle> rmappdata (-1, "hello")
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
93 %!error <NAME must be a string> setappdata (0, 1, 2)
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
94 %!error <NAME/VALUE arguments must occur in pairs> setappdata (0, "1")
f0dcb44826f6 Overhaul appdata family of functions (getappdata, isappdata, rmappdata, setappdata).
Rik <rik@octave.org>
parents: 17795
diff changeset
95