@@ -5,8 +5,6 @@ def fn_name(): return sys._getframe(1).f_code.co_name
55
66try :
77 from gi .repository import Gtk , Gdk , GObject
8- from gi .repository import Pango
9- import cairo
108except ImportError :
119 raise ImportError ("GTK3 backend requires pygobject to be installed." )
1210
@@ -15,7 +13,6 @@ def fn_name(): return sys._getframe(1).f_code.co_name
1513from matplotlib .backend_bases import RendererBase , GraphicsContextBase , \
1614 FigureManagerBase , FigureCanvasBase , NavigationToolbar2 , cursors , TimerBase
1715from matplotlib .backend_bases import ShowBase
18- from matplotlib .backends import backend_cairo
1916
2017from matplotlib .cbook import is_string_like , is_writable_file_like
2118from matplotlib .colors import colorConverter
@@ -60,16 +57,6 @@ def mainloop(self):
6057
6158show = Show ()
6259
63- def new_figure_manager (num , * args , ** kwargs ):
64- """
65- Create a new figure manager instance
66- """
67- FigureClass = kwargs .pop ('FigureClass' , Figure )
68- thisFig = FigureClass (* args , ** kwargs )
69- canvas = FigureCanvasGTK3 (thisFig )
70- manager = FigureManagerGTK3 (canvas , num )
71- return manager
72-
7360
7461class TimerGTK3 (TimerBase ):
7562 '''
@@ -112,11 +99,7 @@ def _on_timer(self):
11299 self ._timer = None
113100 return False
114101
115- class RendererGTK3Cairo (backend_cairo .RendererCairo ):
116- def set_context (self , ctx ):
117- self .gc .ctx = ctx
118-
119- class FigureCanvasGTK3 (Gtk .DrawingArea , backend_cairo .FigureCanvasCairo ):
102+ class FigureCanvasGTK3 (Gtk .DrawingArea , FigureCanvasBase ):
120103 keyvald = {65507 : 'control' ,
121104 65505 : 'shift' ,
122105 65513 : 'alt' ,
@@ -202,7 +185,7 @@ def __init__(self, figure):
202185
203186 self .set_events (self .__class__ .event_mask )
204187
205- self .set_double_buffered (False )
188+ self .set_double_buffered (True )
206189 self .set_can_focus (True )
207190 self ._renderer_init ()
208191 self ._idle_event_id = GObject .idle_add (self .idle_event )
@@ -319,30 +302,6 @@ def idle_draw(*args):
319302 if self ._idle_draw_id == 0 :
320303 self ._idle_draw_id = GObject .idle_add (idle_draw )
321304
322- def _renderer_init (self ):
323- """use cairo renderer"""
324- if _debug : print '%s.%s()' % (self .__class__ .__name__ , fn_name ())
325- self ._renderer = RendererGTK3Cairo (self .figure .dpi )
326-
327- def _render_figure (self , width , height ):
328- """use cairo renderer"""
329- self ._renderer .set_width_height (width , height )
330- self .figure .draw (self ._renderer )
331-
332- def on_draw_event (self , widget , ctx ):
333- """ GtkDrawable draw event, like expose_event in GTK 2.X
334- """
335- if _debug : print 'FigureCanvasGTK3.%s' % fn_name ()
336-
337- if self ._need_redraw :
338- self ._renderer .set_context (ctx )
339- allocation = self .get_allocation ()
340- x , y , w , h = allocation .x , allocation .y , allocation .width , allocation .height
341- self ._render_figure (w , h )
342- self ._need_redraw = False
343-
344- return False # finish event propagation?
345-
346305 def get_default_filetype (self ):
347306 return 'png'
348307
@@ -561,7 +520,7 @@ def _init_toolbar(self):
561520 fname = os .path .join (basedir , image_file )
562521 image = Gtk .Image ()
563522 image .set_from_file (fname )
564- tbutton = Gtk .ToolButton ()
523+ tbutton = Gtk .ToolButton ()
565524 tbutton .set_label (text )
566525 tbutton .set_icon_widget (image )
567526 self .insert (tbutton , - 1 )
@@ -624,7 +583,7 @@ def configure_subplots(self, button):
624583 window .show ()
625584
626585 def _get_canvas (self , fig ):
627- return FigureCanvasGTK3 (fig )
586+ return self . canvas . __class__ (fig )
628587
629588
630589class NavigationToolbar (Gtk .Toolbar ):
@@ -702,7 +661,7 @@ def _create_toolitems(self):
702661 continue
703662 image = Gtk .Image ()
704663 image .set_from_stock (image_num , iconSize )
705- tbutton = Gtk .ToolButton ()
664+ tbutton = Gtk .ToolButton ()
706665 tbutton .set_label (text )
707666 tbutton .set_icon_widget (image )
708667 self .insert (tbutton , - 1 )
@@ -736,7 +695,7 @@ def position_menu (menu):
736695 x0 , y0 = self .window .get_origin ()
737696 x1 , y1 , m = self .window .get_pointer ()
738697 x2 , y2 = self .menubutton .get_pointer ()
739- sc_h = self .get_screen ().get_height ()
698+ sc_h = self .get_screen ().get_height ()
740699 w , h = menu .size_request ()
741700
742701 x = x0 + x1 - x2
@@ -1116,6 +1075,3 @@ def error_msg_gtk(msg, parent=None):
11161075 message_format = msg )
11171076 dialog .run ()
11181077 dialog .destroy ()
1119-
1120-
1121- FigureManager = FigureManagerGTK3
0 commit comments