Announcing Urwid 1.1.0 ----------------------
Urwid home page: http://excess.org/urwid/
About this release: ===================
This is a major feature release for Urwid.
The first focus for this release has been on improving the usability of container widgets by building a common API that works on all containers. This API allows reading and updating the focus, contents and options across most containers. Urwid's container widgets have grown organically over the years and many lack an API for updating their contents at all. These changes deprecate a number of existing methods and attributes, but continue to support them. Read about the new API here:
The second focus has been improving Urwid's documentation. Urwid's Tutorial, Manual and Reference have been converted from HTML and wiki pages to Sphinx reStructured text. The tutorial has been largely rewritten. It now covers many more aspects of the library including common patterns and the new container API. The Manual has been heavily edited and most of the class and function docstrings have been updated to look their best in the new Reference. The new documentation is available here:
See "New in 1.1.0" below for other changes.
Planned changes: ================
Urwid currently supports Python versions 2.4, 2.5, 2.6, 2.7, 3.2 and 3.3. That's just too many versions. I plan to drop support for Python 2.4 and 2.5 in the 1.2.x series to clean up some of the Python 3 compatibility code and start taking advantage of the futuristic language features from the year 2008.
I will make a greater effort than usual to back port fixes to the 1.1.x series to support users that choose to continue using old versions of Python.
New in 1.1.0: =============
* New common container API: focus, focus_position, contents, options(), get_focus_path(), set_focus_path(), __getitem__, __iter__(), __reversed__() implemented across all included container widgets
A full description doesn't fit here, see the Container Widgets section in the manual for details
* New Sphinx-based documentation now included in source: Tutorial rewritten, manual revised and new reference based on updated docstrings (by Marco Giusti, Patrick Totzke)
* New list walker SimpleFocusListWalker like SimpleListWalker but updates focus position as items are inserted or removed
* New decoration widget WidgetDisable to disable interaction with the widgets it wraps
* SelectableIcon selectable text widget used by button widgets is now documented (available since 0.9.9)
* Columns widget now tries to keep column in focus visible, hiding columns on the left when necessary
* Padding widget now defaults to ('relative', 100) instead of 'pack' so that left and right parameters are more useful and more child widgets are supported
* New list walker "API Version 2" that is simpler for many list walker uses; "API Version 1" will still continue to be supported
* List walkers may now allow iteration from the absolute top or bottom of the list if they provide a positions() method
* raw_display now erases to the end of the line with EL escape sequence to improve copy+paste behavior for some terminals
* Filler now has top and bottom parameters like Padding's left and right parameters and accepts 'pack' instead of None as a height value for widgets that calculate their own number of rows
* Pile and Columns now accepts 'pack' instead of 'flow' for widgets that calculate their own number of rows or columns
* Pile and Columns now accept 'given' instead of 'fixed' for cases where the number of rows or columns are specified by the container options
* Pile and Columns widgets now accept any iterable to their __init__() methods
* Widget now has a default focus_position property that raises an IndexError when read to be consistent with new common container API
* GridFlow now supports multiple cell widths within the same widget
* BoxWidget, FlowWidget and FixedWidget are deprecated, instead use the sizing() function or _sizing attribute to specify the supported sizing modes for your custom widgets
* Some new shift+arrow and numpad input sequences from RXVT and xterm are now recognized
* Fix for alarms when used with a screen event loop (e.g. curses_display)
* Fix for raw_display when terminal width is 1 column
* Fixes for a Columns.get_cursor_coords() regression and a SelectableIcon.get_cursor_coords() bug
* Fixes for incorrect handling of box columns in a number of Columns methods when that column is selectable
* Fix for Terminal widget input handling with Python 3
About Urwid ===========
Urwid is a console UI library for Python. It features fluid interface resizing, Unicode support, multiple text layouts, simple attribute markup, powerful scrolling list boxes and flexible interface design.
Urwid is released under the GNU LGPL.