|
3 | 3 | """
|
4 | 4 | from __future__ import (absolute_import, division, print_function,
|
5 | 5 | unicode_literals)
|
6 |
| - |
7 | 6 | import six
|
8 | 7 |
|
9 |
| -import os |
10 |
| - |
11 |
| -import matplotlib |
12 |
| -from matplotlib.figure import Figure |
13 |
| -from matplotlib.backends.backend_agg import FigureCanvasAgg |
14 |
| -from matplotlib.backends.backend_gtk import (gtk, |
15 |
| - FigureManagerGTK, FigureCanvasGTK, |
16 |
| - show, draw_if_interactive, |
17 |
| - error_msg_gtk, PIXELS_PER_INCH, |
18 |
| - backend_version, |
19 |
| - NavigationToolbar2GTK) |
20 |
| -from matplotlib.backends._gtkagg import agg_to_gtk_drawable |
21 |
| - |
22 |
| - |
23 |
| -DEBUG = False |
24 |
| - |
25 |
| - |
26 |
| -class NavigationToolbar2GTKAgg(NavigationToolbar2GTK): |
27 |
| - def _get_canvas(self, fig): |
28 |
| - return FigureCanvasGTKAgg(fig) |
29 |
| - |
30 |
| - |
31 |
| -class FigureManagerGTKAgg(FigureManagerGTK): |
32 |
| - def _get_toolbar(self, canvas): |
33 |
| - # must be inited after the window, drawingArea and figure |
34 |
| - # attrs are set |
35 |
| - if matplotlib.rcParams['toolbar'] == 'toolbar2': |
36 |
| - toolbar = NavigationToolbar2GTKAgg(canvas, self.window) |
37 |
| - else: |
38 |
| - toolbar = None |
39 |
| - return toolbar |
40 |
| - |
41 |
| - |
42 |
| -def new_figure_manager(num, *args, **kwargs): |
43 |
| - """ |
44 |
| - Create a new figure manager instance |
45 |
| - """ |
46 |
| - if DEBUG: |
47 |
| - print('backend_gtkagg.new_figure_manager') |
48 |
| - FigureClass = kwargs.pop('FigureClass', Figure) |
49 |
| - thisFig = FigureClass(*args, **kwargs) |
50 |
| - return new_figure_manager_given_figure(num, thisFig) |
51 |
| - |
52 |
| - |
53 |
| -def new_figure_manager_given_figure(num, figure): |
54 |
| - """ |
55 |
| - Create a new figure manager instance for the given figure. |
56 |
| - """ |
57 |
| - canvas = FigureCanvasGTKAgg(figure) |
58 |
| - return FigureManagerGTKAgg(canvas, num) |
59 |
| - if DEBUG: |
60 |
| - print('backend_gtkagg.new_figure_manager done') |
| 8 | +from matplotlib._pylab_helpers import Gcf |
| 9 | +# import the Gcf free parts |
| 10 | +from ._backend_gtkagg import (gtk, |
| 11 | + FigureCanvasGTKAgg, |
| 12 | + FigureManagerGTKAgg, |
| 13 | + NavigationToolbar2GTKAgg, |
| 14 | + new_figure_manager, |
| 15 | + new_figure_manager_given_figure) |
61 | 16 |
|
62 |
| - |
63 |
| -class FigureCanvasGTKAgg(FigureCanvasGTK, FigureCanvasAgg): |
64 |
| - filetypes = FigureCanvasGTK.filetypes.copy() |
65 |
| - filetypes.update(FigureCanvasAgg.filetypes) |
66 |
| - |
67 |
| - def configure_event(self, widget, event=None): |
68 |
| - if DEBUG: |
69 |
| - print('FigureCanvasGTKAgg.configure_event') |
70 |
| - if widget.window is None: |
71 |
| - return |
72 |
| - try: |
73 |
| - del self.renderer |
74 |
| - except AttributeError: |
75 |
| - pass |
76 |
| - w, h = widget.window.get_size() |
77 |
| - if w == 1 or h == 1: |
78 |
| - return # empty fig |
79 |
| - |
80 |
| - # compute desired figure size in inches |
81 |
| - dpival = self.figure.dpi |
82 |
| - winch = w/dpival |
83 |
| - hinch = h/dpival |
84 |
| - self.figure.set_size_inches(winch, hinch) |
85 |
| - self._need_redraw = True |
86 |
| - self.resize_event() |
87 |
| - if DEBUG: |
88 |
| - print('FigureCanvasGTKAgg.configure_event end') |
89 |
| - return True |
90 |
| - |
91 |
| - def _render_figure(self, pixmap, width, height): |
92 |
| - if DEBUG: |
93 |
| - print('FigureCanvasGTKAgg.render_figure') |
94 |
| - FigureCanvasAgg.draw(self) |
95 |
| - if DEBUG: |
96 |
| - print('FigureCanvasGTKAgg.render_figure pixmap', pixmap) |
97 |
| - #agg_to_gtk_drawable(pixmap, self.renderer._renderer, None) |
98 |
| - |
99 |
| - buf = self.buffer_rgba() |
100 |
| - ren = self.get_renderer() |
101 |
| - w = int(ren.width) |
102 |
| - h = int(ren.height) |
103 |
| - |
104 |
| - pixbuf = gtk.gdk.pixbuf_new_from_data( |
105 |
| - buf, gtk.gdk.COLORSPACE_RGB, True, 8, w, h, w*4) |
106 |
| - pixmap.draw_pixbuf(pixmap.new_gc(), pixbuf, 0, 0, 0, 0, w, h, |
107 |
| - gtk.gdk.RGB_DITHER_NONE, 0, 0) |
108 |
| - if DEBUG: |
109 |
| - print('FigureCanvasGTKAgg.render_figure done') |
110 |
| - |
111 |
| - def blit(self, bbox=None): |
112 |
| - if DEBUG: |
113 |
| - print('FigureCanvasGTKAgg.blit', self._pixmap) |
114 |
| - agg_to_gtk_drawable(self._pixmap, self.renderer._renderer, bbox) |
115 |
| - |
116 |
| - x, y, w, h = self.allocation |
117 |
| - |
118 |
| - self.window.draw_drawable(self.style.fg_gc[self.state], self._pixmap, |
119 |
| - 0, 0, 0, 0, w, h) |
120 |
| - if DEBUG: |
121 |
| - print('FigureCanvasGTKAgg.done') |
122 |
| - |
123 |
| - def print_png(self, filename, *args, **kwargs): |
124 |
| - # Do this so we can save the resolution of figure in the PNG file |
125 |
| - agg = self.switch_backends(FigureCanvasAgg) |
126 |
| - return agg.print_png(filename, *args, **kwargs) |
| 17 | +# import the gcg contaminated parts |
| 18 | +from .backend_gtk import (show, |
| 19 | + draw_if_interactive, |
| 20 | + _gtk_cleanup, |
| 21 | + key_press_handler) |
127 | 22 |
|
128 | 23 |
|
129 | 24 | FigureCanvas = FigureCanvasGTKAgg
|
130 | 25 | FigureManager = FigureManagerGTKAgg
|
| 26 | + |
| 27 | +# set the call backs |
| 28 | +FigureManager._key_press_handler = staticmethod(key_press_handler) |
| 29 | +FigureManager._destroy_callback = staticmethod(Gcf.destroy) |
| 30 | +FigureManager._gtk_cleanup = staticmethod(_gtk_cleanup) |
0 commit comments