1""" 2GTK+ Matplotlib interface using cairo (not GDK) drawing operations. 3Author: Steve Chaplin 4""" 5from __future__ import (absolute_import, division, print_function, 6 unicode_literals) 7 8import six 9 10import gtk 11if gtk.pygtk_version < (2, 7, 0): 12 import cairo.gtk 13 14from matplotlib import cbook 15from matplotlib.backends import backend_cairo 16from matplotlib.backends.backend_gtk import * 17from matplotlib.backends.backend_gtk import _BackendGTK 18 19backend_version = ('PyGTK(%d.%d.%d) ' % gtk.pygtk_version 20 + 'Pycairo(%s)' % backend_cairo.backend_version) 21 22 23class RendererGTKCairo (backend_cairo.RendererCairo): 24 if gtk.pygtk_version >= (2,7,0): 25 def set_pixmap (self, pixmap): 26 self.gc.ctx = pixmap.cairo_create() 27 else: 28 def set_pixmap (self, pixmap): 29 self.gc.ctx = cairo.gtk.gdk_cairo_create (pixmap) 30 31 32class FigureCanvasGTKCairo(backend_cairo.FigureCanvasCairo, FigureCanvasGTK): 33 filetypes = FigureCanvasGTK.filetypes.copy() 34 filetypes.update(backend_cairo.FigureCanvasCairo.filetypes) 35 36 def __init__(self, *args, **kwargs): 37 warn_deprecated('2.2', 38 message=('The GTKCairo backend is deprecated. It is ' 39 'untested and will be removed in Matplotlib ' 40 '3.0. Use the GTK3Cairo backend instead. See ' 41 'Matplotlib usage FAQ for more info on ' 42 'backends.'), 43 alternative='GTK3Cairo') 44 super(FigureCanvasGTKCairo, self).__init__(*args, **kwargs) 45 46 def _renderer_init(self): 47 """Override to use cairo (rather than GDK) renderer""" 48 self._renderer = RendererGTKCairo(self.figure.dpi) 49 50 51# This class has been unused for a while at least. 52@cbook.deprecated("2.1") 53class FigureManagerGTKCairo(FigureManagerGTK): 54 def _get_toolbar(self, canvas): 55 # must be inited after the window, drawingArea and figure 56 # attrs are set 57 if matplotlib.rcParams['toolbar']=='toolbar2': 58 toolbar = NavigationToolbar2GTKCairo (canvas, self.window) 59 else: 60 toolbar = None 61 return toolbar 62 63 64# This class has been unused for a while at least. 65@cbook.deprecated("2.1") 66class NavigationToolbar2Cairo(NavigationToolbar2GTK): 67 def _get_canvas(self, fig): 68 return FigureCanvasGTKCairo(fig) 69 70 71@_BackendGTK.export 72class _BackendGTKCairo(_BackendGTK): 73 FigureCanvas = FigureCanvasGTKCairo 74 FigureManager = FigureManagerGTK 75