Revision: 7166
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7166&view=rev
Author: efiring
Date: 2009-06-01 17:16:06 +0000 (Mon, 01 Jun 2009)
Log Message:
-----------
Removed support for gtk < 2.4
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 2009-05-29
21:45:55 UTC (rev 7165)
+++ trunk/matplotlib/lib/matplotlib/backends/backend_gtk.py 2009-06-01
17:16:06 UTC (rev 7166)
@@ -10,7 +10,7 @@
except ImportError:
raise ImportError("Gtk* backend requires pygtk to be installed.")
-pygtk_version_required = (2,2,0)
+pygtk_version_required = (2,4,0)
if gtk.pygtk_version < pygtk_version_required:
raise ImportError ("PyGTK %d.%d.%d is installed\n"
"PyGTK %d.%d.%d or later is required"
@@ -606,37 +606,9 @@
def _init_toolbar(self):
self.set_style(gtk.TOOLBAR_ICONS)
+ self._init_toolbar2_4()
- if gtk.pygtk_version >= (2,4,0):
- self._init_toolbar2_4()
- else:
- self._init_toolbar2_2()
-
- def _init_toolbar2_2(self):
- basedir = os.path.join(matplotlib.rcParams['datapath'],'images')
-
- for text, tooltip_text, image_file, callback in self.toolitems:
- if text is None:
- self.append_space()
- continue
-
- fname = os.path.join(basedir, image_file)
- image = gtk.Image()
- image.set_from_file(fname)
- w = self.append_item(text,
- tooltip_text,
- 'Private',
- image,
- getattr(self, callback)
- )
-
- self.append_space()
-
- self.message = gtk.Label()
- self.append_widget(self.message, None, None)
- self.message.show()
-
def _init_toolbar2_4(self):
basedir = os.path.join(matplotlib.rcParams['datapath'],'images')
self.tooltips = gtk.Tooltips()
@@ -668,15 +640,11 @@
self.show_all()
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,)
+ return FileChooserDialog(
+ title='Save the figure',
+ parent=self.win,
+ filetypes=self.canvas.get_supported_filetypes(),
+ default_filetype=self.canvas.get_default_filetype())
def save_figure(self, button):
fname, format = self.get_filechooser().get_filename_from_user()
@@ -768,19 +736,13 @@
self.set_style(gtk.TOOLBAR_ICONS)
- if gtk.pygtk_version >= (2,4,0):
- self._create_toolitems_2_4()
- self.update = self._update_2_4
- self.fileselect = FileChooserDialog(
- title='Save the figure',
- parent=self.win,
- filetypes=self.canvas.get_supported_filetypes(),
- default_filetype=self.canvas.get_default_filetype())
- else:
- self._create_toolitems_2_2()
- self.update = self._update_2_2
- self.fileselect = FileSelection(title='Save the figure',
- parent=self.win)
+ self._create_toolitems_2_4()
+ self.update = self._update_2_4
+ self.fileselect = FileChooserDialog(
+ title='Save the figure',
+ parent=self.win,
+ filetypes=self.canvas.get_supported_filetypes(),
+ default_filetype=self.canvas.get_default_filetype())
self.show_all()
self.update()
@@ -860,46 +822,6 @@
self.set_active(range(len(self._axes)))
- def _create_toolitems_2_2(self):
- # use the GTK+ 2.2 (and lower) GtkToolbar API
- iconSize = gtk.ICON_SIZE_SMALL_TOOLBAR
-
- for text, tooltip_text, image_num, callback, callback_arg, scroll \
- in self.toolitems:
- if text is None:
- self.append_space()
- continue
- image = gtk.Image()
- image.set_from_stock(image_num, iconSize)
- item = self.append_item(text, tooltip_text, 'Private', image,
- getattr(self, callback), callback_arg)
- if scroll:
- item.connect("scroll_event", getattr(self, callback))
-
- self.omenu = gtk.OptionMenu()
- self.omenu.set_border_width(3)
- self.insert_widget(
- self.omenu,
- 'Select axes that controls affect',
- 'Private', 0)
-
-
- def _update_2_2(self):
- # for GTK+ 2.2 and lower
- # called by __init__() and FigureManagerGTK
-
- self._axes = self.canvas.figure.axes
-
- if len(self._axes) >= 2:
- # set up the axis menu
- self.omenu.set_menu( self._make_axis_menu() )
- self.omenu.show_all()
- else:
- self.omenu.hide()
-
- self.set_active(range(len(self._axes)))
-
-
def _make_axis_menu(self):
# called by self._update*()
@@ -969,15 +891,11 @@
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)
+ return FileChooserDialog(
+ title='Save the figure',
+ parent=self.win,
+ filetypes=self.canvas.get_supported_filetypes(),
+ default_filetype=self.canvas.get_default_filetype())
def save_figure(self, button):
fname, format = self.get_filechooser().get_filename_from_user()
@@ -988,112 +906,81 @@
error_msg_gtk(str(e), parent=self)
-if gtk.pygtk_version >= (2,4,0):
- class FileChooserDialog(gtk.FileChooserDialog):
- """GTK+ 2.4 file selector which remembers the last file/directory
- selected and presents the user with a menu of supported image formats
- """
- def __init__ (self,
- title = 'Save file',
- parent = None,
- action = gtk.FILE_CHOOSER_ACTION_SAVE,
- buttons = (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
- gtk.STOCK_SAVE, gtk.RESPONSE_OK),
- path = None,
- filetypes = [],
- default_filetype = None
- ):
- super (FileChooserDialog, self).__init__ (title, parent, action,
- buttons)
- self.set_default_response (gtk.RESPONSE_OK)
+class FileChooserDialog(gtk.FileChooserDialog):
+ """GTK+ 2.4 file selector which remembers the last file/directory
+ selected and presents the user with a menu of supported image formats
+ """
+ def __init__ (self,
+ title = 'Save file',
+ parent = None,
+ action = gtk.FILE_CHOOSER_ACTION_SAVE,
+ buttons = (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
+ gtk.STOCK_SAVE, gtk.RESPONSE_OK),
+ path = None,
+ filetypes = [],
+ default_filetype = None
+ ):
+ super (FileChooserDialog, self).__init__ (title, parent, action,
+ buttons)
+ self.set_default_response (gtk.RESPONSE_OK)
- if not path: path = os.getcwd() + os.sep
+ if not path: path = os.getcwd() + os.sep
- # create an extra widget to list supported image formats
- self.set_current_folder (path)
- self.set_current_name ('image.' + default_filetype)
+ # create an extra widget to list supported image formats
+ self.set_current_folder (path)
+ self.set_current_name ('image.' + default_filetype)
- hbox = gtk.HBox (spacing=10)
- hbox.pack_start (gtk.Label ("File Format:"), expand=False)
+ hbox = gtk.HBox (spacing=10)
+ hbox.pack_start (gtk.Label ("File Format:"), expand=False)
- liststore = gtk.ListStore(gobject.TYPE_STRING)
- cbox = gtk.ComboBox(liststore)
- cell = gtk.CellRendererText()
- cbox.pack_start(cell, True)
- cbox.add_attribute(cell, 'text', 0)
- hbox.pack_start (cbox)
+ liststore = gtk.ListStore(gobject.TYPE_STRING)
+ cbox = gtk.ComboBox(liststore)
+ cell = gtk.CellRendererText()
+ cbox.pack_start(cell, True)
+ cbox.add_attribute(cell, 'text', 0)
+ hbox.pack_start (cbox)
- self.filetypes = filetypes
- self.sorted_filetypes = filetypes.items()
- self.sorted_filetypes.sort()
- default = 0
- for i, (ext, name) in enumerate(self.sorted_filetypes):
- cbox.append_text ("%s (*.%s)" % (name, ext))
- if ext == default_filetype:
- default = i
- cbox.set_active(default)
- self.ext = default_filetype
+ self.filetypes = filetypes
+ self.sorted_filetypes = filetypes.items()
+ self.sorted_filetypes.sort()
+ default = 0
+ for i, (ext, name) in enumerate(self.sorted_filetypes):
+ cbox.append_text ("%s (*.%s)" % (name, ext))
+ if ext == default_filetype:
+ default = i
+ cbox.set_active(default)
+ self.ext = default_filetype
- def cb_cbox_changed (cbox, data=None):
- """File extension changed"""
- head, filename = os.path.split(self.get_filename())
- root, ext = os.path.splitext(filename)
- ext = ext[1:]
- new_ext = self.sorted_filetypes[cbox.get_active()][0]
- self.ext = new_ext
+ def cb_cbox_changed (cbox, data=None):
+ """File extension changed"""
+ head, filename = os.path.split(self.get_filename())
+ root, ext = os.path.splitext(filename)
+ ext = ext[1:]
+ new_ext = self.sorted_filetypes[cbox.get_active()][0]
+ self.ext = new_ext
- if ext in self.filetypes:
- filename = root + '.' + new_ext
- elif ext == '':
- filename = filename.rstrip('.') + '.' + new_ext
+ if ext in self.filetypes:
+ filename = root + '.' + new_ext
+ elif ext == '':
+ filename = filename.rstrip('.') + '.' + new_ext
- self.set_current_name (filename)
- cbox.connect ("changed", cb_cbox_changed)
+ self.set_current_name (filename)
+ cbox.connect ("changed", cb_cbox_changed)
- hbox.show_all()
- self.set_extra_widget(hbox)
+ hbox.show_all()
+ self.set_extra_widget(hbox)
- def get_filename_from_user (self):
- while True:
- filename = None
- if self.run() != int(gtk.RESPONSE_OK):
- break
- filename = self.get_filename()
+ def get_filename_from_user (self):
+ while True:
+ filename = None
+ if self.run() != int(gtk.RESPONSE_OK):
break
+ filename = self.get_filename()
+ break
- self.hide()
- return filename, self.ext
-else:
- class FileSelection(gtk.FileSelection):
- """GTK+ 2.2 and lower file selector which remembers the last
- file/directory selected
- """
- def __init__(self, path=None, title='Select a file', parent=None):
- super(FileSelection, self).__init__(title)
+ self.hide()
+ return filename, self.ext
- if path: self.path = path
- else: self.path = os.getcwd() + os.sep
-
- if parent: self.set_transient_for(parent)
-
- def get_filename_from_user(self, path=None, title=None):
- if path: self.path = path
- if title: self.set_title(title)
- self.set_filename(self.path)
-
- filename = None
- if self.run() == int(gtk.RESPONSE_OK):
- self.path = filename = self.get_filename()
- self.hide()
-
- ext = None
- if filename is not None:
- ext = os.path.splitext(filename)[1]
- if ext.startswith('.'):
- ext = ext[1:]
- return filename, ext
-
-
class DialogLineprops:
"""
A GUI dialog for controlling lineprops
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
is a gathering of tech-side developers & brand creativity professionals. Meet
the minds behind Google Creative Lab, Visual Complexity, Processing, &
iPhoneDevCamp as they present alongside digital heavyweights like Barbarian
Group, R/GA, & Big Spaceship. http://p.sf.net/sfu/creativitycat-com
_______________________________________________
Matplotlib-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins