From: <md...@us...> - 2008-11-17 19:34:30
|
Revision: 6411 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=6411&view=rev Author: mdboom Date: 2008-11-17 19:34:28 +0000 (Mon, 17 Nov 2008) Log Message: ----------- Fixed all Gtk memory leaks exercised by D2Hitman's recent thread. Modified Paths: -------------- trunk/matplotlib/lib/matplotlib/backends/backend_gtk.py Modified: trunk/matplotlib/lib/matplotlib/backends/backend_gtk.py =================================================================== --- trunk/matplotlib/lib/matplotlib/backends/backend_gtk.py 2008-11-17 15:20:06 UTC (rev 6410) +++ trunk/matplotlib/lib/matplotlib/backends/backend_gtk.py 2008-11-17 19:34:28 UTC (rev 6411) @@ -538,16 +538,6 @@ NavigationToolbar2.__init__(self, canvas) self._idle_draw_id = 0 - self.connect("destroy", self.destroy) - - def destroy(self, *args): - gtk.Toolbar.destroy(self) - self.fileselect.destroy() - self.tooltips.destroy() - self.canvas.destroy() - if self._idle_draw_id != 0: - gobject.remove_source(self._idle_draw_id) - def set_message(self, s): if self._idle_draw_id == 0: self.message.set_label(s) @@ -635,11 +625,6 @@ self.append_widget(self.message, None, None) self.message.show() - self.fileselect = FileSelection(title='Save the figure', - parent=self.win,) - - - def _init_toolbar2_4(self): basedir = os.path.join(matplotlib.rcParams['datapath'],'images') self.tooltips = gtk.Tooltips() @@ -670,15 +655,19 @@ self.show_all() - self.fileselect = FileChooserDialog( - title='Save the figure', - parent=self.win, - filetypes=self.canvas.get_supported_filetypes(), - default_filetype=self.canvas.get_default_filetype()) + def get_filechooser(self): + if gtk.pygtk_version >= (2,4,0): + return FileChooserDialog( + title='Save the figure', + parent=self.win, + filetypes=self.canvas.get_supported_filetypes(), + default_filetype=self.canvas.get_default_filetype()) + else: + return FileSelection(title='Save the figure', + parent=self.win,) - def save_figure(self, button): - fname, format = self.fileselect.get_filename_from_user() + fname, format = self.get_filechooser().get_filename_from_user() if fname: try: self.canvas.print_figure(fname, format=format) @@ -781,11 +770,6 @@ self.show_all() self.update() - def destroy(*args): - self.fileselect.destroy() - del self.fileselect - self.connect("destroy", destroy) - def _create_toolitems_2_4(self): # use the GTK+ 2.4 GtkToolbar API iconSize = gtk.ICON_SIZE_SMALL_TOOLBAR @@ -970,9 +954,19 @@ self.canvas.draw() return True + def get_filechooser(self): + if gtk.pygtk_version >= (2,4,0): + return FileChooserDialog( + title='Save the figure', + parent=self.win, + filetypes=self.canvas.get_supported_filetypes(), + default_filetype=self.canvas.get_default_filetype()) + else: + return FileSelection(title='Save the figure', + parent=self.win) def save_figure(self, button): - fname, format = self.fileselect.get_filename_from_user() + fname, format = self.get_filechooser().get_filename_from_user() if fname: try: self.canvas.print_figure(fname, format=format) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |