Friedrich Weber wrote:

Hi,
I had the same problem and fixed it by deriving MonitoredList from list, not
UserList. Additionally, I added some __hash__ methods.

All *seems* to work (did only test a few examples) and should also work with
python 2.5.

I've attached your patch to this email for posterity.

I'll try to find some time to make it work with python 2.3 and up and check it in.

Ian

diff -r a5f7fbadb6e8 urwid/listbox.py
--- a/urwid/listbox.py	Sun Sep 07 16:13:33 2008 -0400
+++ b/urwid/listbox.py	Fri Nov 07 09:56:14 2008 -0800
@@ -34,6 +34,8 @@
 	__metaclass__ = signals.MetaSignals
 	
 	signals = ["modified"]
+
+	def __hash__(self): return id(self)
 
 	def _modified(self):
 		signals.emit_signal(self, "modified")
@@ -95,6 +97,8 @@
 			raise ListWalkerError, "SimpleListWalker expecting list like object, got: "+`contents`
 		MonitoredList.__init__(self, contents)
 		self.focus = 0
+
+	def __hash__(self): return id(self)
 	
 	def _get_contents(self):
 		"""
diff -r a5f7fbadb6e8 urwid/monitored_list.py
--- a/urwid/monitored_list.py	Sun Sep 07 16:13:33 2008 -0400
+++ b/urwid/monitored_list.py	Fri Nov 07 09:56:14 2008 -0800
@@ -20,9 +20,6 @@
 # Urwid web site: http://excess.org/urwid/
 
 
-from UserList import UserList
-
-
 def _call_modified(fn):
 	def call_modified_wrapper(self, *args):
 		rval = fn(self, *args)
@@ -30,7 +27,7 @@
 		return rval
 	return call_modified_wrapper
 
-class MonitoredList(UserList):
+class MonitoredList(list):
 	def _modified(self):
 		pass
 	
@@ -40,20 +37,20 @@
 	def __repr__(self):
 		return "%s.%s(%s)" % (self.__class__.__module__,
 			self.__class__.__name__,
-			UserList.__repr__(self))
+			list.__repr__(self))
 
-	__add__ = _call_modified(UserList.__add__)
-	__delitem__ = _call_modified(UserList.__delitem__)
-	__delslice__ = _call_modified(UserList.__delslice__)
-	__iadd__ = _call_modified(UserList.__iadd__)
-	__imul__ = _call_modified(UserList.__imul__)
-	__rmul__ = _call_modified(UserList.__rmul__)
-	__setitem__ = _call_modified(UserList.__setitem__)
-	__setslice__ = _call_modified(UserList.__setslice__)
-	append = _call_modified(UserList.append)
-	extend = _call_modified(UserList.extend)
-	insert = _call_modified(UserList.insert)
-	pop = _call_modified(UserList.pop)
-	remove = _call_modified(UserList.remove)
-	reverse = _call_modified(UserList.reverse)
-	sort = _call_modified(UserList.sort)
+	__add__ = _call_modified(list.__add__)
+	__delitem__ = _call_modified(list.__delitem__)
+	__delslice__ = _call_modified(list.__delslice__)
+	__iadd__ = _call_modified(list.__iadd__)
+	__imul__ = _call_modified(list.__imul__)
+	__rmul__ = _call_modified(list.__rmul__)
+	__setitem__ = _call_modified(list.__setitem__)
+	__setslice__ = _call_modified(list.__setslice__)
+	append = _call_modified(list.append)
+	extend = _call_modified(list.extend)
+	insert = _call_modified(list.insert)
+	pop = _call_modified(list.pop)
+	remove = _call_modified(list.remove)
+	reverse = _call_modified(list.reverse)
+	sort = _call_modified(list.sort)
_______________________________________________
Urwid mailing list
Urwid@lists.excess.org
http://lists.excess.org/mailman/listinfo/urwid

Reply via email to