Mercurial > octave
annotate libinterp/corefcn/graphics-toolkit.cc @ 27335:50216d7a2f6b
eliminate static wrapper functions in gh_manager class
This is a large but straightforward change to eliminate the remains of
the singleton pattern that was used for the gh_manager class. All
static functions in the gh_manager class that previously used the
"instance" function to access the gh_manager object stored in the
global interpreter object and then called the corresponding "do_"
functions have been eliminated. The "do_" prefix has been removed
from the normal member functions and all uses of the static functions
(calls of the form gh_manager::X) have been replaced with a call to the
member function. The gh_manager object is accessed through the
interpreter object and there is a new __get_gh_manager__ convenience
function defined in the intepreter-private.cc file.
Additionally, instead of using the gh_manager::auto_lock class, we
access the mutex variable associated with the gh_manager object and
pass it to the octave::autolock constructor to manage scoped locks for
the gh_manager class.
The following interpreter functions are now "methods" and require the
interpreter as the first argument: F__calc_dimensions__,
F__fltk_check__, F__get__, F__get_frame__, F__go_axes__,
F__go_delete__, F__go_execute_callback__, F__go_figure__,
F__go_figure_handles__, F__go_handles__, F__go_hggroup__,
F__go_image__, F__go_light__, F__go_line__, F__go_patch__,
F__go_post_callback__, F__go_surface__, F__go_text__,
F__go_uibuttongroup__, F__go_uicontextmenu__, F__go_uicontrol__,
F__go_uimenu__, F__go_uipanel__, F__go_uipushtool__, F__go_uitable__,
F__go_uitoggletool__, F__go_uitoolbar__, F__image_pixel_size__,
F__show_figure__, F__shutdown_qt__, F__update_normals__, F__zoom__,
Faddlistener, Faddproperty, Fdellistener, Fdrawnow, Fget, Fishghandle,
Fkbhit, Fpause, Freset, Fset, and Fwaitfor.
Files affected:
BaseControl.cc, ButtonControl.cc, ButtonGroup.cc, Canvas.cc,
Container.cc, ContextMenu.cc, Figure.cc, GLCanvas.cc, Object.cc,
Panel.cc, QtHandlesUtils.h, SliderControl.cc, Table.cc,
__init_qt__.cc, qt-graphics-toolkit.cc, main-window.cc, gl-render.cc,
gl-render.h, gl2ps-print.cc, graphics-toolkit.cc, graphics.cc,
graphics.in.h, input.cc, interpreter.cc, sysdep.cc, utils.cc,
__init_fltk__.cc.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Fri, 09 Aug 2019 10:36:08 -0400 |
parents | 00f796120a6d |
children | a9780be9ecbc |
rev | line source |
---|---|
23774
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
1 /* |
41795b504a8b
don't use singleton for gtk_manager
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:
25054
diff
changeset
|
3 Copyright (C) 2007-2019 John W. Eaton |
23774
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
4 |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
5 This file is part of Octave. |
41795b504a8b
don't use singleton for gtk_manager
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 |
23774
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
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 |
23774
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
10 (at your option) any later version. |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
11 |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
12 Octave is distributed in the hope that it will be useful, but |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
13 WITHOUT ANY WARRANTY; without even the implied warranty of |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
15 GNU General Public License for more details. |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
16 |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
17 You should have received a copy of the GNU General Public License |
41795b504a8b
don't use singleton for gtk_manager
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/>. |
23774
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
20 |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
21 */ |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
22 |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
23 #if defined (HAVE_CONFIG_H) |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
24 # include "config.h" |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
25 #endif |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
26 |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
27 #include "graphics.h" |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
28 #include "gtk-manager.h" |
27335
50216d7a2f6b
eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
29 #include "interpreter-private.h" |
23774
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 void |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
32 base_graphics_toolkit::update (const graphics_handle& h, int id) |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
33 { |
27335
50216d7a2f6b
eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
34 gh_manager& gh_mgr |
50216d7a2f6b
eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
35 = octave::__get_gh_manager__ ("base_graphics_toolkit::update"); |
50216d7a2f6b
eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
36 |
50216d7a2f6b
eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
37 graphics_object go = gh_mgr.get_object (h); |
23774
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
38 |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
39 update (go, id); |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
40 } |
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 bool |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
43 base_graphics_toolkit::initialize (const graphics_handle& h) |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
44 { |
27335
50216d7a2f6b
eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
45 gh_manager& gh_mgr |
50216d7a2f6b
eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
46 = octave::__get_gh_manager__ ("base_graphics_toolkit::initialize"); |
50216d7a2f6b
eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
47 |
50216d7a2f6b
eliminate static wrapper functions in gh_manager class
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
48 graphics_object go = gh_mgr.get_object (h); |
23774
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 return initialize (go); |
41795b504a8b
don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
51 } |