[dev-python/pmw] fork portage ebuild to make it depend on our split python-tk. This package is needed for sci-chemistry/pymol
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
Source: http://github.com/nanotube/pmw_fixes/commit/5e6dcbdaef2bb6c40037b922dd0efa081f1575ab (Daniel Folkinshteyn)
|
||||
|
||||
fix bug in OptionMenu.setitems, introduced with the fixing of this python
|
||||
bug:
|
||||
http://bugs.python.org/issue1342811
|
||||
|
||||
versions of python 2.5.4 and newer now automatically delete commands when
|
||||
items are deleted
|
||||
however, that causes error if the command is deleted manually beforehand.
|
||||
old versions, on the contrary, require manual command deletion to free up
|
||||
the objects.
|
||||
|
||||
so we put in a python version check to see if we need to manually delete
|
||||
commands.
|
||||
|
||||
fixes the Pmw bug referred to here:
|
||||
http://sourceforge.net/forum/forum.php?thread_id=3283195&forum_id=33675
|
||||
and here:
|
||||
http://sourceforge.net/tracker/?func=detail&aid=2795731&group_id=10743&ati
|
||||
d=110743
|
||||
|
||||
--- a/src/Pmw/Pmw_1_3/lib/PmwOptionMenu.py
|
||||
+++ b/src/Pmw/Pmw_1_3/lib/PmwOptionMenu.py
|
||||
@@ -1,6 +1,7 @@
|
||||
import types
|
||||
import Tkinter
|
||||
import Pmw
|
||||
+import sys
|
||||
|
||||
class OptionMenu(Pmw.MegaWidget):
|
||||
|
||||
@@ -59,11 +60,17 @@ class OptionMenu(Pmw.MegaWidget):
|
||||
|
||||
def setitems(self, items, index = None):
|
||||
|
||||
- # Clean up old items and callback commands.
|
||||
- for oldIndex in range(len(self._itemList)):
|
||||
- tclCommandName = str(self._menu.entrycget(oldIndex, 'command'))
|
||||
- if tclCommandName != '':
|
||||
- self._menu.deletecommand(tclCommandName)
|
||||
+ # python version check
|
||||
+ # python versions >= 2.5.4 automatically clean commands
|
||||
+ # and manually cleaning them causes errors when deleting items
|
||||
+
|
||||
+ if sys.version_info[0] * 100 + sys.version_info[1] * 10 + \
|
||||
+ sys.version_info[2] < 254:
|
||||
+ # Clean up old items and callback commands.
|
||||
+ for oldIndex in range(len(self._itemList)):
|
||||
+ tclCommandName = str(self._menu.entrycget(oldIndex, 'command'))
|
||||
+ if tclCommandName != '':
|
||||
+ self._menu.deletecommand(tclCommandName)
|
||||
self._menu.delete(0, 'end')
|
||||
self._itemList = list(items)
|
||||
|
||||
Reference in New Issue
Block a user