Mercurial > hg > octave-lyh
annotate scripts/plot/figure.m @ 17140:e4968b4613a5
Overhaul default menubar (still not perfect).
* scripts/plot/figure.m: Always call __add_default_menu__.
* scripts/plot/private/__add_default_menu__.m: Check that toolkit is FLTK
before proceeding. Don't do redundant check that input is figure handle.
Don't turn off handlevisibility for submenus, they are already hidden
from above. Restrict findall() search to a depth of 1. Add __default_menu__
tags to Edit and Help menus so they can be identified. Don't call drawnow
unnecessarily in callback routines. Use gcbf() so that Save filename is
stored on a per figure basis rather than globally. Eliminate assigning
to unused variables. Add HACK to turn off menubar if property is set to
"none" on figure.
author | Rik <rik@octave.org> |
---|---|
date | Thu, 01 Aug 2013 10:18:54 -0700 |
parents | eaab03308c0b |
children | 603ce503babd |
rev | line source |
---|---|
14138
72c96de7a403
maint: update copyright notices for 2012
John W. Eaton <jwe@octave.org>
parents:
13325
diff
changeset
|
1 ## Copyright (C) 1996-2012 John W. Eaton |
2313 | 2 ## |
3 ## This file is part of Octave. | |
4 ## | |
5 ## Octave is free software; you can redistribute it and/or modify it | |
6 ## under the terms of the GNU General Public License as published by | |
7016 | 7 ## the Free Software Foundation; either version 3 of the License, or (at |
8 ## your option) any later version. | |
2313 | 9 ## |
10 ## Octave is distributed in the hope that it will be useful, but | |
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 ## General Public License for more details. | |
14 ## | |
15 ## You should have received a copy of the GNU General Public License | |
7016 | 16 ## along with Octave; see the file COPYING. If not, see |
17 ## <http://www.gnu.org/licenses/>. | |
2290 | 18 |
3368 | 19 ## -*- texinfo -*- |
14366
b76f0740940e
doc: Periodic grammar check of documentation.
Rik <octave@nomad.inbox5.com>
parents:
14363
diff
changeset
|
20 ## @deftypefn {Command} {} figure |
b76f0740940e
doc: Periodic grammar check of documentation.
Rik <octave@nomad.inbox5.com>
parents:
14363
diff
changeset
|
21 ## @deftypefnx {Command} {} figure @var{n} |
14276
6b4bd6a86bdd
figure.m: Extend to accepting command form "figure N"
Rik <octave@nomad.inbox5.com>
parents:
14226
diff
changeset
|
22 ## @deftypefnx {Function File} {} figure (@var{n}) |
17126
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
14846
diff
changeset
|
23 ## @deftypefnx {Function File} {} figure (@dots{}, "@var{property}", @var{value}, @dots{}) |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
14846
diff
changeset
|
24 ## @deftypefnx {Function File} {@var{h} =} figure (@var{dots}) |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
14846
diff
changeset
|
25 ## Create a new figure window for plotting. |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
14846
diff
changeset
|
26 ## |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
14846
diff
changeset
|
27 ## If no arguments are specified, a new figure with the next available number |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
14846
diff
changeset
|
28 ## is created. |
6895 | 29 ## |
17126
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
14846
diff
changeset
|
30 ## If called with an integer @var{n}, and no such numbered figure exists, then |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
14846
diff
changeset
|
31 ## a new figure with the specified number is created. If the figure already |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
14846
diff
changeset
|
32 ## exists then it is made visible and becomes the current figure for plotting. |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
14846
diff
changeset
|
33 ## |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
14846
diff
changeset
|
34 ## Multiple property-value pairs may be specified for the figure object, but |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
14846
diff
changeset
|
35 ## they must appear in pairs. |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
14846
diff
changeset
|
36 ## |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
14846
diff
changeset
|
37 ## The optional return value @var{h} is a graphics handle to the created figure |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
14846
diff
changeset
|
38 ## object. |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
14846
diff
changeset
|
39 ## @seealso{axes, gcf, clf, close} |
3368 | 40 ## @end deftypefn |
2290 | 41 |
6257 | 42 ## Author: jwe, Bill Denney |
2314 | 43 |
6257 | 44 function h = figure (varargin) |
3263 | 45 |
6257 | 46 nargs = nargin; |
5406 | 47 |
6405 | 48 f = NaN; |
6283 | 49 |
6293 | 50 init_new_figure = false; |
6283 | 51 if (mod (nargs, 2) == 1) |
6257 | 52 tmp = varargin{1}; |
14276
6b4bd6a86bdd
figure.m: Extend to accepting command form "figure N"
Rik <octave@nomad.inbox5.com>
parents:
14226
diff
changeset
|
53 if (ischar (tmp)) |
6b4bd6a86bdd
figure.m: Extend to accepting command form "figure N"
Rik <octave@nomad.inbox5.com>
parents:
14226
diff
changeset
|
54 tmp = str2double (tmp); |
6b4bd6a86bdd
figure.m: Extend to accepting command form "figure N"
Rik <octave@nomad.inbox5.com>
parents:
14226
diff
changeset
|
55 endif |
14226
d580d7179f85
Use isfigure() to simplify some plot functions.
Rik <octave@nomad.inbox5.com>
parents:
14183
diff
changeset
|
56 if (isfigure (tmp)) |
6257 | 57 f = tmp; |
58 varargin(1) = []; | |
59 nargs--; | |
13279
984359717d71
Use common code idiom for checking whether a double value is an integer.
Rik <octave@nomad.inbox5.com>
parents:
13204
diff
changeset
|
60 elseif (isnumeric (tmp) && tmp > 0 && tmp == fix (tmp)) |
6257 | 61 f = tmp; |
6293 | 62 init_new_figure = true; |
6257 | 63 varargin(1) = []; |
64 nargs--; | |
65 else | |
66 error ("figure: expecting figure handle or figure number"); | |
67 endif | |
3263 | 68 endif |
69 | |
6293 | 70 ## Check to see if we already have a figure on the screen. If we do, |
71 ## then update it if it is different from the figure we are creating | |
72 ## or switching to. | |
14846
460a3c6d8bf1
maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents:
14366
diff
changeset
|
73 cf = get (0, "currentfigure"); # Can't use gcf () because it calls figure () |
6293 | 74 if (! isempty (cf) && cf != 0) |
6405 | 75 if (isnan (f) || cf != f) |
6293 | 76 drawnow (); |
77 endif | |
78 endif | |
79 | |
6257 | 80 if (rem (nargs, 2) == 0) |
6405 | 81 if (isnan (f) || init_new_figure) |
14183
9e6ec5f55827
When creating an fltk (aqua) figure on MacOS, make sure one drawnow() occurs
Ben Abbott <bpabbott@mac.com>
parents:
14138
diff
changeset
|
82 if (ismac () && strcmp (graphics_toolkit (), "fltk")) |
14276
6b4bd6a86bdd
figure.m: Extend to accepting command form "figure N"
Rik <octave@nomad.inbox5.com>
parents:
14226
diff
changeset
|
83 ## FIXME - Hack for fltk-aqua to work around bug #31931 |
14183
9e6ec5f55827
When creating an fltk (aqua) figure on MacOS, make sure one drawnow() occurs
Ben Abbott <bpabbott@mac.com>
parents:
14138
diff
changeset
|
84 f = __go_figure__ (f); |
9e6ec5f55827
When creating an fltk (aqua) figure on MacOS, make sure one drawnow() occurs
Ben Abbott <bpabbott@mac.com>
parents:
14138
diff
changeset
|
85 drawnow (); |
9e6ec5f55827
When creating an fltk (aqua) figure on MacOS, make sure one drawnow() occurs
Ben Abbott <bpabbott@mac.com>
parents:
14138
diff
changeset
|
86 if (! isempty (varargin)) |
9e6ec5f55827
When creating an fltk (aqua) figure on MacOS, make sure one drawnow() occurs
Ben Abbott <bpabbott@mac.com>
parents:
14138
diff
changeset
|
87 set (f, varargin{:}); |
9e6ec5f55827
When creating an fltk (aqua) figure on MacOS, make sure one drawnow() occurs
Ben Abbott <bpabbott@mac.com>
parents:
14138
diff
changeset
|
88 endif |
9e6ec5f55827
When creating an fltk (aqua) figure on MacOS, make sure one drawnow() occurs
Ben Abbott <bpabbott@mac.com>
parents:
14138
diff
changeset
|
89 else |
9e6ec5f55827
When creating an fltk (aqua) figure on MacOS, make sure one drawnow() occurs
Ben Abbott <bpabbott@mac.com>
parents:
14138
diff
changeset
|
90 f = __go_figure__ (f, varargin{:}); |
9e6ec5f55827
When creating an fltk (aqua) figure on MacOS, make sure one drawnow() occurs
Ben Abbott <bpabbott@mac.com>
parents:
14138
diff
changeset
|
91 endif |
6780 | 92 elseif (nargs > 0) |
6257 | 93 set (f, varargin{:}); |
2290 | 94 endif |
6257 | 95 set (0, "currentfigure", f); |
2290 | 96 else |
6046 | 97 print_usage (); |
2290 | 98 endif |
3263 | 99 |
17140
e4968b4613a5
Overhaul default menubar (still not perfect).
Rik <rik@octave.org>
parents:
17126
diff
changeset
|
100 __add_default_menu__ (f); |
11349
4a3258b1448f
Add default menu for fltk backend figures
Kai Habel <kai.habel@gmx.de>
parents:
10793
diff
changeset
|
101 |
6283 | 102 if (nargout > 0) |
103 h = f; | |
104 endif | |
105 | |
2290 | 106 endfunction |
13204 | 107 |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14276
diff
changeset
|
108 |
13204 | 109 %!test |
110 %! hf = figure ("visible", "off"); | |
111 %! unwind_protect | |
112 %! assert (gcf, hf); | |
113 %! assert (isfigure (hf)); | |
114 %! unwind_protect_cleanup | |
115 %! close (hf); | |
13279
984359717d71
Use common code idiom for checking whether a double value is an integer.
Rik <octave@nomad.inbox5.com>
parents:
13204
diff
changeset
|
116 %! end_unwind_protect |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14276
diff
changeset
|
117 |