Mercurial > hg > octave-lyh
annotate scripts/plot/graphics_toolkit.m @ 14021:e3bed294b117
refactor graphics_toolkit class (bug #31583)
* graphics_toolkit.m: Call loaded_graphics_toolkits to check whether
the given toolkit was correctly loaded.
* graphics.cc (gnuplot_toolkit): Move to separate file.
* __init_gnuplot__.cc: New file, split from graphics.cc.
* DLD-FUNCTIONS/module-files: Include __init_gnuplot__.cc in the list.
* graphics.h.in, graphics.cc (gtk_manager): New class, extracted from
graphics_toolkit, to manage the available and loaded
graphics_toolkits. Change all uses of moved functions.
* __init_fltk__.cc: Add PKG_ADD line to register toolkit.
(toolkit_loaded): Rename from toolkit_registered.
* graphics.cc (Fregister_graphics_toolkit, Floaded_graphics_toolkits):
New functions.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Fri, 09 Dec 2011 11:12:50 -0500 |
parents | 08ae07e40d4f |
children | c3fab3891460 |
rev | line source |
---|---|
11523 | 1 ## Copyright (C) 2008-2011 Michael Goffioul |
8060
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
2 ## |
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
3 ## This file is part of Octave. |
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
4 ## |
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
5 ## Octave is free software; you can redistribute it and/or modify it |
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
6 ## under the terms of the GNU General Public License as published by |
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
7 ## the Free Software Foundation; either version 3 of the License, or (at |
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
8 ## your option) any later version. |
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
9 ## |
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
10 ## Octave is distributed in the hope that it will be useful, but |
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of |
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
13 ## General Public License for more details. |
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
14 ## |
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
15 ## You should have received a copy of the GNU General Public License |
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
16 ## along with Octave; see the file COPYING. If not, see |
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
17 ## <http://www.gnu.org/licenses/>. |
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
18 |
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
19 ## -*- texinfo -*- |
13976
fb5955171b0b
graphics_toolkit.m: Update function to return current toolkit when no arg given.
Rik <octave@nomad.inbox5.com>
parents:
12344
diff
changeset
|
20 ## @deftypefn {Function File} {@var{name} =} graphics_toolkit () |
13977
08ae07e40d4f
Only run uimenu tests if FLTK toolkit is available (Bug #34908)
Rik <octave@nomad.inbox5.com>
parents:
13976
diff
changeset
|
21 ## @deftypefnx {Function File} {@var{old_name} =} graphics_toolkit (@var{name}) |
11576
8ac9687dbe9f
rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
22 ## @deftypefnx {Function File} {} graphics_toolkit (@var{hlist}, @var{name}) |
13976
fb5955171b0b
graphics_toolkit.m: Update function to return current toolkit when no arg given.
Rik <octave@nomad.inbox5.com>
parents:
12344
diff
changeset
|
23 ## Query or set the default graphics toolkit to @var{name}. If the |
11576
8ac9687dbe9f
rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
24 ## toolkit is not already loaded, it is first initialized by calling the |
8ac9687dbe9f
rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
25 ## function @code{__init_@var{name}__}. |
8060
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
26 ## |
11576
8ac9687dbe9f
rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
27 ## When called with a list of figure handles, @var{hlist}, the graphics |
8ac9687dbe9f
rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
28 ## toolkit is changed only for the listed figures. |
8ac9687dbe9f
rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
29 ## @seealso{available_graphics_toolkits} |
8060
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
30 ## @end deftypefn |
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
31 |
13976
fb5955171b0b
graphics_toolkit.m: Update function to return current toolkit when no arg given.
Rik <octave@nomad.inbox5.com>
parents:
12344
diff
changeset
|
32 function retval = graphics_toolkit (name, hlist = []) |
8060
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
33 |
13976
fb5955171b0b
graphics_toolkit.m: Update function to return current toolkit when no arg given.
Rik <octave@nomad.inbox5.com>
parents:
12344
diff
changeset
|
34 if (nargin > 2) |
fb5955171b0b
graphics_toolkit.m: Update function to return current toolkit when no arg given.
Rik <octave@nomad.inbox5.com>
parents:
12344
diff
changeset
|
35 print_usage (); |
fb5955171b0b
graphics_toolkit.m: Update function to return current toolkit when no arg given.
Rik <octave@nomad.inbox5.com>
parents:
12344
diff
changeset
|
36 endif |
8060
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
37 |
13976
fb5955171b0b
graphics_toolkit.m: Update function to return current toolkit when no arg given.
Rik <octave@nomad.inbox5.com>
parents:
12344
diff
changeset
|
38 if (nargin == 0) |
fb5955171b0b
graphics_toolkit.m: Update function to return current toolkit when no arg given.
Rik <octave@nomad.inbox5.com>
parents:
12344
diff
changeset
|
39 retval = get (0, "defaultfigure__graphics_toolkit__"); |
fb5955171b0b
graphics_toolkit.m: Update function to return current toolkit when no arg given.
Rik <octave@nomad.inbox5.com>
parents:
12344
diff
changeset
|
40 return; |
fb5955171b0b
graphics_toolkit.m: Update function to return current toolkit when no arg given.
Rik <octave@nomad.inbox5.com>
parents:
12344
diff
changeset
|
41 elseif (nargin == 1) |
fb5955171b0b
graphics_toolkit.m: Update function to return current toolkit when no arg given.
Rik <octave@nomad.inbox5.com>
parents:
12344
diff
changeset
|
42 if (! ischar (name)) |
11576
8ac9687dbe9f
rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
43 error ("graphics_toolkit: invalid graphics toolkit NAME"); |
8060
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
44 endif |
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
45 elseif (nargin == 2) |
13976
fb5955171b0b
graphics_toolkit.m: Update function to return current toolkit when no arg given.
Rik <octave@nomad.inbox5.com>
parents:
12344
diff
changeset
|
46 ## Swap input arguments |
fb5955171b0b
graphics_toolkit.m: Update function to return current toolkit when no arg given.
Rik <octave@nomad.inbox5.com>
parents:
12344
diff
changeset
|
47 [hlist, name] = deal (name, hlist); |
fb5955171b0b
graphics_toolkit.m: Update function to return current toolkit when no arg given.
Rik <octave@nomad.inbox5.com>
parents:
12344
diff
changeset
|
48 if (! all (isfigure (hlist))) |
fb5955171b0b
graphics_toolkit.m: Update function to return current toolkit when no arg given.
Rik <octave@nomad.inbox5.com>
parents:
12344
diff
changeset
|
49 error ("graphics_toolkit: invalid figure handle list HLIST"); |
fb5955171b0b
graphics_toolkit.m: Update function to return current toolkit when no arg given.
Rik <octave@nomad.inbox5.com>
parents:
12344
diff
changeset
|
50 elseif (! ischar (name)) |
11576
8ac9687dbe9f
rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
51 error ("graphics_toolkit: invalid graphics toolkit NAME"); |
8060
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
52 endif |
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
53 endif |
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
54 |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
13977
diff
changeset
|
55 if (! any (strcmp (loaded_graphics_toolkits (), name))) |
8060
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
56 feval (["__init_", name, "__"]); |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
13977
diff
changeset
|
57 if (! any (strcmp (loaded_graphics_toolkits (), name))) |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
13977
diff
changeset
|
58 error ("graphics_toolkit: %s toolkit was not correctly loaded", name); |
8060
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
59 endif |
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
60 endif |
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
61 |
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
62 if (isempty (hlist)) |
11576
8ac9687dbe9f
rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
63 set (0, "defaultfigure__graphics_toolkit__", name); |
8060
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
64 else |
13976
fb5955171b0b
graphics_toolkit.m: Update function to return current toolkit when no arg given.
Rik <octave@nomad.inbox5.com>
parents:
12344
diff
changeset
|
65 set (hlist, "__graphics_toolkit__", name); |
fb5955171b0b
graphics_toolkit.m: Update function to return current toolkit when no arg given.
Rik <octave@nomad.inbox5.com>
parents:
12344
diff
changeset
|
66 endif |
fb5955171b0b
graphics_toolkit.m: Update function to return current toolkit when no arg given.
Rik <octave@nomad.inbox5.com>
parents:
12344
diff
changeset
|
67 |
fb5955171b0b
graphics_toolkit.m: Update function to return current toolkit when no arg given.
Rik <octave@nomad.inbox5.com>
parents:
12344
diff
changeset
|
68 if (isargout (1)) |
fb5955171b0b
graphics_toolkit.m: Update function to return current toolkit when no arg given.
Rik <octave@nomad.inbox5.com>
parents:
12344
diff
changeset
|
69 retval = name; |
8060
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
70 endif |
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
71 |
09f32aac8fbc
Interface for backend switch/initialization
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
72 endfunction |
13976
fb5955171b0b
graphics_toolkit.m: Update function to return current toolkit when no arg given.
Rik <octave@nomad.inbox5.com>
parents:
12344
diff
changeset
|
73 |
fb5955171b0b
graphics_toolkit.m: Update function to return current toolkit when no arg given.
Rik <octave@nomad.inbox5.com>
parents:
12344
diff
changeset
|
74 |
fb5955171b0b
graphics_toolkit.m: Update function to return current toolkit when no arg given.
Rik <octave@nomad.inbox5.com>
parents:
12344
diff
changeset
|
75 %!testif HAVE_FLTK |
fb5955171b0b
graphics_toolkit.m: Update function to return current toolkit when no arg given.
Rik <octave@nomad.inbox5.com>
parents:
12344
diff
changeset
|
76 %! unwind_protect |
fb5955171b0b
graphics_toolkit.m: Update function to return current toolkit when no arg given.
Rik <octave@nomad.inbox5.com>
parents:
12344
diff
changeset
|
77 %! hf = figure ("visible", "off"); |
fb5955171b0b
graphics_toolkit.m: Update function to return current toolkit when no arg given.
Rik <octave@nomad.inbox5.com>
parents:
12344
diff
changeset
|
78 %! toolkit = graphics_toolkit (); |
fb5955171b0b
graphics_toolkit.m: Update function to return current toolkit when no arg given.
Rik <octave@nomad.inbox5.com>
parents:
12344
diff
changeset
|
79 %! assert (get (0, "defaultfigure__graphics_toolkit__"), toolkit); |
fb5955171b0b
graphics_toolkit.m: Update function to return current toolkit when no arg given.
Rik <octave@nomad.inbox5.com>
parents:
12344
diff
changeset
|
80 %! graphics_toolkit (hf, "fltk"); |
fb5955171b0b
graphics_toolkit.m: Update function to return current toolkit when no arg given.
Rik <octave@nomad.inbox5.com>
parents:
12344
diff
changeset
|
81 %! assert (get (hf, "__graphics_toolkit__"), "fltk"); |
fb5955171b0b
graphics_toolkit.m: Update function to return current toolkit when no arg given.
Rik <octave@nomad.inbox5.com>
parents:
12344
diff
changeset
|
82 %! unwind_protect_cleanup |
fb5955171b0b
graphics_toolkit.m: Update function to return current toolkit when no arg given.
Rik <octave@nomad.inbox5.com>
parents:
12344
diff
changeset
|
83 %! close (hf); |
fb5955171b0b
graphics_toolkit.m: Update function to return current toolkit when no arg given.
Rik <octave@nomad.inbox5.com>
parents:
12344
diff
changeset
|
84 %! end_unwind_protect |
fb5955171b0b
graphics_toolkit.m: Update function to return current toolkit when no arg given.
Rik <octave@nomad.inbox5.com>
parents:
12344
diff
changeset
|
85 |