Mercurial > octave
annotate libinterp/corefcn/gtk-manager.h @ 31225:3eab70385569
sparse-xpow.cc: Use faster multiplication technique, this time for complex
author | Arun Giridhar <arungiridhar@gmail.com> |
---|---|
date | Sun, 11 Sep 2022 13:53:38 -0400 |
parents | 796f54d4ddbf |
children | e88a07dec498 |
rev | line source |
---|---|
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
1 //////////////////////////////////////////////////////////////////////// |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
2 // |
30564
796f54d4ddbf
update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents:
30116
diff
changeset
|
3 // Copyright (C) 2007-2022 The Octave Project Developers |
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
4 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
5 // See the file COPYRIGHT.md in the top-level directory of this |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
6 // distribution or <https://octave.org/copyright/>. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
7 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
8 // This file is part of Octave. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
9 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
10 // Octave is free software: you can redistribute it and/or modify it |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
11 // under the terms of the GNU General Public License as published by |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
12 // the Free Software Foundation, either version 3 of the License, or |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
13 // (at your option) any later version. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
14 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
15 // Octave is distributed in the hope that it will be useful, but |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
16 // WITHOUT ANY WARRANTY; without even the implied warranty of |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
18 // GNU General Public License for more details. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
19 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
20 // You should have received a copy of the GNU General Public License |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
21 // along with Octave; see the file COPYING. If not, see |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
22 // <https://www.gnu.org/licenses/>. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
23 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
24 //////////////////////////////////////////////////////////////////////// |
23774
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
25 |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
26 #if ! defined (octave_gtk_manager_h) |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
27 #define octave_gtk_manager_h 1 |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
28 |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
29 #include "octave-config.h" |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
30 |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
31 #include <map> |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
32 #include <set> |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
33 #include <string> |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
34 |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
35 #include "Cell.h" |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
36 #include "graphics-toolkit.h" |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
37 |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
38 namespace octave |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
39 { |
29233
665c9ed14c97
Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
27923
diff
changeset
|
40 class OCTINTERP_API gtk_manager |
23774
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
41 { |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
42 public: |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
43 |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
44 gtk_manager (void) { } |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
45 |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
46 ~gtk_manager (void) |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
47 { |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
48 unload_all_toolkits (); |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
49 } |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
50 |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
51 graphics_toolkit get_toolkit (void) const; |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
52 |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
53 void register_toolkit (const std::string& name); |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
54 |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
55 void unregister_toolkit (const std::string& name); |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
56 |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
57 void load_toolkit (const graphics_toolkit& tk) |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
58 { |
30116
815b5b7bb672
maint: use "m_" prefix for member variables in class gtk_manager.
Rik <rik@octave.org>
parents:
29359
diff
changeset
|
59 m_loaded_toolkits[tk.get_name ()] = tk; |
23774
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
60 } |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
61 |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
62 void unload_toolkit (const std::string& name) |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
63 { |
30116
815b5b7bb672
maint: use "m_" prefix for member variables in class gtk_manager.
Rik <rik@octave.org>
parents:
29359
diff
changeset
|
64 m_loaded_toolkits.erase (name); |
23774
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
65 } |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
66 |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
67 graphics_toolkit find_toolkit (const std::string& name) const |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
68 { |
30116
815b5b7bb672
maint: use "m_" prefix for member variables in class gtk_manager.
Rik <rik@octave.org>
parents:
29359
diff
changeset
|
69 auto p = m_loaded_toolkits.find (name); |
23774
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
70 |
30116
815b5b7bb672
maint: use "m_" prefix for member variables in class gtk_manager.
Rik <rik@octave.org>
parents:
29359
diff
changeset
|
71 if (p != m_loaded_toolkits.end ()) |
23774
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
72 return p->second; |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
73 else |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
74 return graphics_toolkit (); |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
75 } |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
76 |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
77 Cell available_toolkits_list (void) const |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
78 { |
30116
815b5b7bb672
maint: use "m_" prefix for member variables in class gtk_manager.
Rik <rik@octave.org>
parents:
29359
diff
changeset
|
79 Cell m (1, m_available_toolkits.size ()); |
23774
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
80 |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
81 octave_idx_type i = 0; |
30116
815b5b7bb672
maint: use "m_" prefix for member variables in class gtk_manager.
Rik <rik@octave.org>
parents:
29359
diff
changeset
|
82 for (const auto& tkit : m_available_toolkits) |
23774
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
83 m(i++) = tkit; |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
84 |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
85 return m; |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
86 } |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
87 |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
88 Cell loaded_toolkits_list (void) const |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
89 { |
30116
815b5b7bb672
maint: use "m_" prefix for member variables in class gtk_manager.
Rik <rik@octave.org>
parents:
29359
diff
changeset
|
90 Cell m (1, m_loaded_toolkits.size ()); |
23774
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
91 |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
92 octave_idx_type i = 0; |
30116
815b5b7bb672
maint: use "m_" prefix for member variables in class gtk_manager.
Rik <rik@octave.org>
parents:
29359
diff
changeset
|
93 for (const auto& nm_tkit_p : m_loaded_toolkits) |
23774
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
94 m(i++) = nm_tkit_p.first; |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
95 |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
96 return m; |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
97 } |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
98 |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
99 void unload_all_toolkits (void) |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
100 { |
30116
815b5b7bb672
maint: use "m_" prefix for member variables in class gtk_manager.
Rik <rik@octave.org>
parents:
29359
diff
changeset
|
101 while (! m_loaded_toolkits.empty ()) |
23774
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
102 { |
30116
815b5b7bb672
maint: use "m_" prefix for member variables in class gtk_manager.
Rik <rik@octave.org>
parents:
29359
diff
changeset
|
103 auto p = m_loaded_toolkits.begin (); |
23774
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
104 |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
105 std::string name = p->first; |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
106 |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
107 p->second.close (); |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
108 |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
109 // The toolkit may have unloaded itself. If not, we'll do it here. |
30116
815b5b7bb672
maint: use "m_" prefix for member variables in class gtk_manager.
Rik <rik@octave.org>
parents:
29359
diff
changeset
|
110 if (m_loaded_toolkits.find (name) != m_loaded_toolkits.end ()) |
23774
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
111 unload_toolkit (name); |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
112 } |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
113 } |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
114 |
30116
815b5b7bb672
maint: use "m_" prefix for member variables in class gtk_manager.
Rik <rik@octave.org>
parents:
29359
diff
changeset
|
115 std::string default_toolkit (void) const { return m_dtk; } |
23774
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
116 |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
117 private: |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
118 |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
119 // The name of the default toolkit. |
30116
815b5b7bb672
maint: use "m_" prefix for member variables in class gtk_manager.
Rik <rik@octave.org>
parents:
29359
diff
changeset
|
120 std::string m_dtk; |
23774
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
121 |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
122 // The list of toolkits that we know about. |
30116
815b5b7bb672
maint: use "m_" prefix for member variables in class gtk_manager.
Rik <rik@octave.org>
parents:
29359
diff
changeset
|
123 std::set<std::string> m_available_toolkits; |
23774
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
124 |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
125 // The list of toolkits we have actually loaded. |
30116
815b5b7bb672
maint: use "m_" prefix for member variables in class gtk_manager.
Rik <rik@octave.org>
parents:
29359
diff
changeset
|
126 std::map<std::string, graphics_toolkit> m_loaded_toolkits; |
23774
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
127 }; |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
128 } |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
129 |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
130 #endif |