Mercurial > octave
annotate libinterp/dldfcn/__init_gnuplot__.cc @ 27862:813f76932ab6
* __init_gnuplot__.cc: Eliminate static variable "toolkit_loaded".
author | Markus Mützel <markus.muetzel@gmx.de> |
---|---|
date | Sun, 22 Dec 2019 17:06:19 +0100 |
parents | a9780be9ecbc |
children | b442ec6dda5c |
rev | line source |
---|---|
21604
d7a268e68e69
maint: Strip trailing whitespace from source files.
John W. Eaton <jwe@octave.org>
parents:
21575
diff
changeset
|
1 /* |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
2 |
26376
00f796120a6d
maint: Update copyright dates in all source files.
John W. Eaton <jwe@octave.org>
parents:
26072
diff
changeset
|
3 Copyright (C) 2007-2019 John W. Eaton |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
4 |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
5 This file is part of Octave. |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
6 |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
23774
diff
changeset
|
7 Octave is free software: you can redistribute it and/or modify it |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22417
diff
changeset
|
8 under the terms of the GNU General Public License as published by |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
23774
diff
changeset
|
9 the Free Software Foundation, either version 3 of the License, or |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22417
diff
changeset
|
10 (at your option) any later version. |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
11 |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22417
diff
changeset
|
12 Octave is distributed in the hope that it will be useful, but |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22417
diff
changeset
|
13 WITHOUT ANY WARRANTY; without even the implied warranty of |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22417
diff
changeset
|
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22417
diff
changeset
|
15 GNU General Public License for more details. |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
16 |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
17 You should have received a copy of the GNU General Public License |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
18 along with Octave; see the file COPYING. If not, see |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
23774
diff
changeset
|
19 <https://www.gnu.org/licenses/>. |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
20 |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
21 */ |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
22 |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
23 /* |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
24 |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
25 To initialize: |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
26 |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
27 graphics_toolkit ("gnuplot"); |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
28 plot (randn (1e3, 1)); |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
29 |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
30 */ |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
31 |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21699
diff
changeset
|
32 #if defined (HAVE_CONFIG_H) |
21301
40de9f8f23a6
Use '#include "config.h"' rather than <config.h>.
Rik <rik@octave.org>
parents:
21220
diff
changeset
|
33 # include "config.h" |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
34 #endif |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
35 |
23024
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
36 #include <string> |
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
37 |
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
38 #include "dMatrix.h" |
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
39 #include "file-stat.h" |
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
40 #include "oct-env.h" |
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
41 |
21220
d78e45987d6a
rename octave::build_env namespace from octave::config
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
42 #include "build-env.h" |
22097
5ad67277b007
include builtin-defun-decls.h as needed
John W. Eaton <jwe@octave.org>
parents:
22096
diff
changeset
|
43 #include "builtin-defun-decls.h" |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
44 #include "defun-dld.h" |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
45 #include "error.h" |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
46 #include "graphics.h" |
23024
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
47 #include "ov.h" |
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
48 #include "ovl.h" |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
49 #include "parse.h" |
19646
408361a8c72f
Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents:
17787
diff
changeset
|
50 #include "utils.h" |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
51 #include "variables.h" |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
52 |
19646
408361a8c72f
Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents:
17787
diff
changeset
|
53 // PKG_ADD: if (__have_gnuplot__ ()) register_graphics_toolkit ("gnuplot"); endif |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
54 |
27734
a9780be9ecbc
move graphics_toolkit class inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
27277
diff
changeset
|
55 class gnuplot_graphics_toolkit : public octave::base_graphics_toolkit |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
56 { |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
57 public: |
23703
6eb5f6199a5a
move mlock, munlock, and mislocked to interpreter class
John W. Eaton <jwe@octave.org>
parents:
23577
diff
changeset
|
58 gnuplot_graphics_toolkit (octave::interpreter& interp) |
27734
a9780be9ecbc
move graphics_toolkit class inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
27277
diff
changeset
|
59 : octave::base_graphics_toolkit ("gnuplot"), m_interpreter (interp) { } |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
60 |
22868
87e3163f6c87
use c++11 "= default" syntax for declaration of trivial destructors
John W. Eaton <jwe@octave.org>
parents:
22755
diff
changeset
|
61 ~gnuplot_graphics_toolkit (void) = default; |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
62 |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
63 bool is_valid (void) const { return true; } |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
64 |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
65 bool initialize (const graphics_object& go) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
66 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
67 return go.isa ("figure"); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
68 } |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
69 |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
70 void finalize (const graphics_object& go) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
71 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
72 if (go.isa ("figure")) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
73 { |
27277
db687716fed6
style fixes: generally aim to break long lines before operators, not after
John W. Eaton <jwe@octave.org>
parents:
26636
diff
changeset
|
74 const figure::properties& props |
db687716fed6
style fixes: generally aim to break long lines before operators, not after
John W. Eaton <jwe@octave.org>
parents:
26636
diff
changeset
|
75 = dynamic_cast<const figure::properties&> (go.get_properties ()); |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
76 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
77 send_quit (props.get___plot_stream__ ()); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
78 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
79 } |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
80 |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
81 void update (const graphics_object& go, int id) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
82 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
83 if (go.isa ("figure")) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
84 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
85 graphics_object obj (go); |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
86 |
27277
db687716fed6
style fixes: generally aim to break long lines before operators, not after
John W. Eaton <jwe@octave.org>
parents:
26636
diff
changeset
|
87 figure::properties& props |
db687716fed6
style fixes: generally aim to break long lines before operators, not after
John W. Eaton <jwe@octave.org>
parents:
26636
diff
changeset
|
88 = dynamic_cast<figure::properties&> (obj.get_properties ()); |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
89 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
90 switch (id) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
91 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
92 case base_properties::ID_VISIBLE: |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
93 if (! props.is_visible ()) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
94 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
95 send_quit (props.get___plot_stream__ ()); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
96 props.set___plot_stream__ (Matrix ()); |
21948
241d39c66e8f
Update graphics properties for figure object.
Rik <rik@octave.org>
parents:
21878
diff
changeset
|
97 props.set_graphicssmoothing (false); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
98 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
99 break; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
100 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
101 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
102 } |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
103 |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
104 void redraw_figure (const graphics_object& go) const |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
105 { |
26636
803006651db5
Disallow recursion in drawnow for gnuplot toolkit (bug #55528)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26376
diff
changeset
|
106 static bool drawnow_executing = false; |
803006651db5
Disallow recursion in drawnow for gnuplot toolkit (bug #55528)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26376
diff
changeset
|
107 |
803006651db5
Disallow recursion in drawnow for gnuplot toolkit (bug #55528)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26376
diff
changeset
|
108 // Prevent recursion |
803006651db5
Disallow recursion in drawnow for gnuplot toolkit (bug #55528)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26376
diff
changeset
|
109 if (! drawnow_executing) |
803006651db5
Disallow recursion in drawnow for gnuplot toolkit (bug #55528)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26376
diff
changeset
|
110 { |
803006651db5
Disallow recursion in drawnow for gnuplot toolkit (bug #55528)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26376
diff
changeset
|
111 octave::unwind_protect frame; |
803006651db5
Disallow recursion in drawnow for gnuplot toolkit (bug #55528)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26376
diff
changeset
|
112 frame.protect_var (drawnow_executing); |
803006651db5
Disallow recursion in drawnow for gnuplot toolkit (bug #55528)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26376
diff
changeset
|
113 |
803006651db5
Disallow recursion in drawnow for gnuplot toolkit (bug #55528)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26376
diff
changeset
|
114 drawnow_executing = true; |
803006651db5
Disallow recursion in drawnow for gnuplot toolkit (bug #55528)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26376
diff
changeset
|
115 octave_value_list args; |
803006651db5
Disallow recursion in drawnow for gnuplot toolkit (bug #55528)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26376
diff
changeset
|
116 args(0) = go.get_handle ().as_octave_value (); |
803006651db5
Disallow recursion in drawnow for gnuplot toolkit (bug #55528)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26376
diff
changeset
|
117 octave::feval ("__gnuplot_drawnow__", args); |
803006651db5
Disallow recursion in drawnow for gnuplot toolkit (bug #55528)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26376
diff
changeset
|
118 } |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
119 } |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
120 |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
121 void print_figure (const graphics_object& go, const std::string& term, |
21699
21fdab18f857
Remove reference to drawnow 'mono' throughout scripts and code, update args test
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
21634
diff
changeset
|
122 const std::string& file, |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
123 const std::string& debug_file) const |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
124 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
125 octave_value_list args; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
126 if (! debug_file.empty ()) |
21699
21fdab18f857
Remove reference to drawnow 'mono' throughout scripts and code, update args test
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
21634
diff
changeset
|
127 args(3) = debug_file; |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
128 args(2) = file; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
129 args(1) = term; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
130 args(0) = go.get_handle ().as_octave_value (); |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23024
diff
changeset
|
131 octave::feval ("__gnuplot_drawnow__", args); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
132 } |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
133 |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
134 Matrix get_canvas_size (const graphics_handle&) const |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
135 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
136 Matrix sz (1, 2, 0.0); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
137 return sz; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
138 } |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
139 |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
140 double get_screen_resolution (void) const |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
141 { return 72.0; } |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
142 |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
143 Matrix get_screen_size (void) const |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
144 { return Matrix (1, 2, 0.0); } |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
145 |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
146 void close (void) |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
147 { |
27862
813f76932ab6
* __init_gnuplot__.cc: Eliminate static variable "toolkit_loaded".
Markus Mützel <markus.muetzel@gmx.de>
parents:
27734
diff
changeset
|
148 if (m_interpreter.mislocked ("__init_gnuplot__")) |
813f76932ab6
* __init_gnuplot__.cc: Eliminate static variable "toolkit_loaded".
Markus Mützel <markus.muetzel@gmx.de>
parents:
27734
diff
changeset
|
149 m_interpreter.munlock ("__init_gnuplot__"); |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
150 } |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
151 |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
152 private: |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
153 |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
154 void send_quit (const octave_value& pstream) const |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
155 { |
23577
80c42f4cca13
maint: Deprecate is_empty and replace with isempty.
Rik <rik@octave.org>
parents:
23220
diff
changeset
|
156 if (! pstream.isempty ()) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
157 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
158 octave_value_list args; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
159 Matrix fids = pstream.matrix_value (); |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
160 |
23738
8acd390d16c9
don't use singleton for stream_list object
John W. Eaton <jwe@octave.org>
parents:
23703
diff
changeset
|
161 Ffputs (m_interpreter, ovl (fids(0), "\nquit;\n")); |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
162 |
23738
8acd390d16c9
don't use singleton for stream_list object
John W. Eaton <jwe@octave.org>
parents:
23703
diff
changeset
|
163 Ffflush (m_interpreter, ovl (fids(0))); |
8acd390d16c9
don't use singleton for stream_list object
John W. Eaton <jwe@octave.org>
parents:
23703
diff
changeset
|
164 Fpclose (m_interpreter, ovl (fids(0))); |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
165 |
20555
f90c8372b7ba
eliminate many more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
166 if (fids.numel () > 1) |
f90c8372b7ba
eliminate many more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
167 { |
23738
8acd390d16c9
don't use singleton for stream_list object
John W. Eaton <jwe@octave.org>
parents:
23703
diff
changeset
|
168 Fpclose (m_interpreter, ovl (fids(1))); |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
169 |
20555
f90c8372b7ba
eliminate many more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
170 if (fids.numel () > 2) |
f90c8372b7ba
eliminate many more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
19697
diff
changeset
|
171 Fwaitpid (ovl (fids(2))); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
172 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
173 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
174 } |
23703
6eb5f6199a5a
move mlock, munlock, and mislocked to interpreter class
John W. Eaton <jwe@octave.org>
parents:
23577
diff
changeset
|
175 |
6eb5f6199a5a
move mlock, munlock, and mislocked to interpreter class
John W. Eaton <jwe@octave.org>
parents:
23577
diff
changeset
|
176 octave::interpreter& m_interpreter; |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
177 }; |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
178 |
19646
408361a8c72f
Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents:
17787
diff
changeset
|
179 static bool |
408361a8c72f
Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents:
17787
diff
changeset
|
180 have_gnuplot_binary (void) |
408361a8c72f
Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents:
17787
diff
changeset
|
181 { |
21220
d78e45987d6a
rename octave::build_env namespace from octave::config
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
182 const std::string exeext = octave::build_env::EXEEXT; |
21732
6a1eded90355
use namespace for system env class
John W. Eaton <jwe@octave.org>
parents:
21724
diff
changeset
|
183 const std::string path = octave::sys::env::getenv ("PATH"); |
21878
67e51c889f34
Silence errors from __have_gnuplot__ when gnuplot_binary is not found
Mike Miller <mtmiller@octave.org>
parents:
21736
diff
changeset
|
184 bool retval = false; |
19649
830c8457295a
Check for gnuplot binary with executable file extension if needed
Mike Miller <mtmiller@ieee.org>
parents:
19646
diff
changeset
|
185 |
21878
67e51c889f34
Silence errors from __have_gnuplot__ when gnuplot_binary is not found
Mike Miller <mtmiller@octave.org>
parents:
21736
diff
changeset
|
186 try |
67e51c889f34
Silence errors from __have_gnuplot__ when gnuplot_binary is not found
Mike Miller <mtmiller@octave.org>
parents:
21736
diff
changeset
|
187 { |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23024
diff
changeset
|
188 octave_value_list tmp |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23024
diff
changeset
|
189 = octave::feval ("gnuplot_binary", octave_value_list ()); |
19646
408361a8c72f
Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents:
17787
diff
changeset
|
190 |
26071
658153e1976d
Fix failing BIST tests and oddities when gnuplot is not present (bug #55023).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
191 if (tmp(0).is_string () && ! tmp(0).isempty ()) |
21878
67e51c889f34
Silence errors from __have_gnuplot__ when gnuplot_binary is not found
Mike Miller <mtmiller@octave.org>
parents:
21736
diff
changeset
|
192 { |
67e51c889f34
Silence errors from __have_gnuplot__ when gnuplot_binary is not found
Mike Miller <mtmiller@octave.org>
parents:
21736
diff
changeset
|
193 std::string gnuplot_binary = tmp(0).string_value (); |
67e51c889f34
Silence errors from __have_gnuplot__ when gnuplot_binary is not found
Mike Miller <mtmiller@octave.org>
parents:
21736
diff
changeset
|
194 |
67e51c889f34
Silence errors from __have_gnuplot__ when gnuplot_binary is not found
Mike Miller <mtmiller@octave.org>
parents:
21736
diff
changeset
|
195 string_vector args (gnuplot_binary); |
25646
4d565baa475e
move libinterp/utils functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
25054
diff
changeset
|
196 std::string gnuplot_path = octave::search_path_for_file (path, args); |
21878
67e51c889f34
Silence errors from __have_gnuplot__ when gnuplot_binary is not found
Mike Miller <mtmiller@octave.org>
parents:
21736
diff
changeset
|
197 |
67e51c889f34
Silence errors from __have_gnuplot__ when gnuplot_binary is not found
Mike Miller <mtmiller@octave.org>
parents:
21736
diff
changeset
|
198 octave::sys::file_stat fs (gnuplot_path); |
19646
408361a8c72f
Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents:
17787
diff
changeset
|
199 |
21878
67e51c889f34
Silence errors from __have_gnuplot__ when gnuplot_binary is not found
Mike Miller <mtmiller@octave.org>
parents:
21736
diff
changeset
|
200 if (! fs.exists () && ! exeext.empty ()) |
67e51c889f34
Silence errors from __have_gnuplot__ when gnuplot_binary is not found
Mike Miller <mtmiller@octave.org>
parents:
21736
diff
changeset
|
201 { |
67e51c889f34
Silence errors from __have_gnuplot__ when gnuplot_binary is not found
Mike Miller <mtmiller@octave.org>
parents:
21736
diff
changeset
|
202 args[0] += exeext; |
67e51c889f34
Silence errors from __have_gnuplot__ when gnuplot_binary is not found
Mike Miller <mtmiller@octave.org>
parents:
21736
diff
changeset
|
203 |
25646
4d565baa475e
move libinterp/utils functions inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
25054
diff
changeset
|
204 gnuplot_path = octave::search_path_for_file (path, args); |
19646
408361a8c72f
Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents:
17787
diff
changeset
|
205 |
21878
67e51c889f34
Silence errors from __have_gnuplot__ when gnuplot_binary is not found
Mike Miller <mtmiller@octave.org>
parents:
21736
diff
changeset
|
206 fs = octave::sys::file_stat (gnuplot_path); |
67e51c889f34
Silence errors from __have_gnuplot__ when gnuplot_binary is not found
Mike Miller <mtmiller@octave.org>
parents:
21736
diff
changeset
|
207 } |
67e51c889f34
Silence errors from __have_gnuplot__ when gnuplot_binary is not found
Mike Miller <mtmiller@octave.org>
parents:
21736
diff
changeset
|
208 |
67e51c889f34
Silence errors from __have_gnuplot__ when gnuplot_binary is not found
Mike Miller <mtmiller@octave.org>
parents:
21736
diff
changeset
|
209 retval = fs.exists (); |
67e51c889f34
Silence errors from __have_gnuplot__ when gnuplot_binary is not found
Mike Miller <mtmiller@octave.org>
parents:
21736
diff
changeset
|
210 } |
67e51c889f34
Silence errors from __have_gnuplot__ when gnuplot_binary is not found
Mike Miller <mtmiller@octave.org>
parents:
21736
diff
changeset
|
211 } |
22327
d0562b3159c7
move more classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22323
diff
changeset
|
212 catch (octave::execution_exception&) |
22417
48c00363dc74
maint: Use '{ }' for empty function bodies in C++.
Rik <rik@octave.org>
parents:
22407
diff
changeset
|
213 { } |
19649
830c8457295a
Check for gnuplot binary with executable file extension if needed
Mike Miller <mtmiller@ieee.org>
parents:
19646
diff
changeset
|
214 |
21878
67e51c889f34
Silence errors from __have_gnuplot__ when gnuplot_binary is not found
Mike Miller <mtmiller@octave.org>
parents:
21736
diff
changeset
|
215 return retval; |
19646
408361a8c72f
Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents:
17787
diff
changeset
|
216 } |
408361a8c72f
Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents:
17787
diff
changeset
|
217 |
408361a8c72f
Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents:
17787
diff
changeset
|
218 // Initialize the gnuplot graphics toolkit. |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
219 |
23703
6eb5f6199a5a
move mlock, munlock, and mislocked to interpreter class
John W. Eaton <jwe@octave.org>
parents:
23577
diff
changeset
|
220 DEFMETHOD_DLD (__init_gnuplot__, interp, , , |
6eb5f6199a5a
move mlock, munlock, and mislocked to interpreter class
John W. Eaton <jwe@octave.org>
parents:
23577
diff
changeset
|
221 doc: /* -*- texinfo -*- |
22299
9fc91bb2aec3
doc: grammarcheck documentation for 4.2 release.
Rik <rik@octave.org>
parents:
22097
diff
changeset
|
222 @deftypefn {} {} __init_gnuplot__ () |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21948
diff
changeset
|
223 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21948
diff
changeset
|
224 @end deftypefn */) |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
225 { |
19646
408361a8c72f
Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents:
17787
diff
changeset
|
226 if (! have_gnuplot_binary ()) |
408361a8c72f
Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents:
17787
diff
changeset
|
227 error ("__init_gnuplot__: the gnuplot program is not available, see 'gnuplot_binary'"); |
27862
813f76932ab6
* __init_gnuplot__.cc: Eliminate static variable "toolkit_loaded".
Markus Mützel <markus.muetzel@gmx.de>
parents:
27734
diff
changeset
|
228 else if (! interp.mislocked ("__init_gnuplot__")) |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
229 { |
23774
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
23738
diff
changeset
|
230 octave::gtk_manager& gtk_mgr = interp.get_gtk_manager (); |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
23738
diff
changeset
|
231 |
27734
a9780be9ecbc
move graphics_toolkit class inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
27277
diff
changeset
|
232 octave::graphics_toolkit tk (new gnuplot_graphics_toolkit (interp)); |
23774
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
23738
diff
changeset
|
233 gtk_mgr.load_toolkit (tk); |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
234 |
27862
813f76932ab6
* __init_gnuplot__.cc: Eliminate static variable "toolkit_loaded".
Markus Mützel <markus.muetzel@gmx.de>
parents:
27734
diff
changeset
|
235 interp.mlock (); |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
236 } |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
237 |
23024
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
238 return octave_value_list (); |
14021
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
239 } |
e3bed294b117
refactor graphics_toolkit class (bug #31583)
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
240 |
19646
408361a8c72f
Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents:
17787
diff
changeset
|
241 DEFUN_DLD (__have_gnuplot__, , , |
21966
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21948
diff
changeset
|
242 doc: /* -*- texinfo -*- |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21948
diff
changeset
|
243 @deftypefn {} {@var{gnuplot_available} =} __have_gnuplot__ () |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21948
diff
changeset
|
244 Undocumented internal function. |
112b20240c87
move docstrings in C++ files out of C strings and into comments
John W. Eaton <jwe@octave.org>
parents:
21948
diff
changeset
|
245 @end deftypefn */) |
19646
408361a8c72f
Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents:
17787
diff
changeset
|
246 { |
23024
a6a7b054e4ba
Rationalize #includes in libinterp/dldfcn directory.
Rik <rik@octave.org>
parents:
22868
diff
changeset
|
247 return ovl (have_gnuplot_binary ()); |
19646
408361a8c72f
Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents:
17787
diff
changeset
|
248 } |
408361a8c72f
Don't register gnuplot toolkit if gnuplot is not available (bug #35391)
Mike Miller <mtmiller@ieee.org>
parents:
17787
diff
changeset
|
249 |
21575
bc9aa534bc29
maint: Clean up BIST tests so they don't produce warnings.
Rik <rik@octave.org>
parents:
21301
diff
changeset
|
250 /* |
bc9aa534bc29
maint: Clean up BIST tests so they don't produce warnings.
Rik <rik@octave.org>
parents:
21301
diff
changeset
|
251 ## No test needed for internal helper function. |
bc9aa534bc29
maint: Clean up BIST tests so they don't produce warnings.
Rik <rik@octave.org>
parents:
21301
diff
changeset
|
252 %!assert (1) |
bc9aa534bc29
maint: Clean up BIST tests so they don't produce warnings.
Rik <rik@octave.org>
parents:
21301
diff
changeset
|
253 */ |