Ian Ward
Fri, 07 Nov 2008 20:46:50 -0800
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
- [Urwid] Download of urwid0.9.8 is broken Joern Koerner
- Re: [Urwid] Download of urwid0.9.8 is broken Ian Ward
- [Urwid] Installing 0.9.8.3 with Python 2.6 fails Joern Koerner
- Re: [Urwid] Installing 0.9.8.3 with Python 2.6 fails Friedrich Weber
Re: [Urwid] Installing 0.9.8.3 with Python 2.6 fails Ian Ward- Re: [Urwid] Installing 0.9.8.3 with Python 2.6 fails Ian Ward