3.1 --- Enhancements: - GridView: - click_cell() only called for clicks on valid cells (within num_rows() and num_cols()) - event passed to click_cell() has a 'cell_local' attribute Bug fixes: - More fixes for Python 3. 3.0 --- Updated for Python 3. Bug fixes: - No longer redraws continuously when frame timer is not set. 2.3 --- Enhancements: - Labels can now specify vertical alignment as well as horizontal. - Button text is now centered vertically by default. 2.2 --- New features: - Multichoice controls. - New, more powerful Ref object supersedes AttrRef and ItemRef. - Theme.add_theme() method. - Events have a 'time' field. Enhancements: - Added equalize option to Row and Column. - Adaptor to turn a Ref into a callable object. - Added add_anchor() and remove_anchor() methods to Widget. Modifications: - Root and Screen now have a timer_event() method taking the event as a parameter. This supersedes the begin_frame() method. - The update_every_event flag has been removed and replaced with a defer_drawing() method that is delegated to the current Screen. - Default resource dir may be named either "Resources" or "resources". - Now using time.sleep() for frame timing instead of pygame timer, for better timing accuracy. - The 'expand' argument to Row and Column no longer defaults to the last item. - Grid now honours the margin attribute. Bug fixes: - OpenGL widgets did not work in single-buffered mode. - Improved handling of timer events to give smoother degradation of frame rate when rendering time exceeds frame time. - Fixed a compatibility problem with PyOpenGL 3.0.1. - 2-dimensional ImageArray with 1 row was treated as 1-dimensional. - Mentioning a 2D image array in a boolean context did not work. Cacheing of 2D image arrays did not work as a consequence. - Improved error message for attempting to use len() on a 2D image array. - Row and Column crashed if given an empty item list. - Removed call to obsolete reset() method of level objects. Documentation: - Added links to GL widgets to the contents page. - Documented the new Ref system for linking controls to values. 2.1.1 ----- Bug fixes: - Menu bar with more than one menu did not work properly. - get_cursor() was broken. 2.1 --- New features: - Menu and MenuBar classes for pop-up and drop-down menus. - OpenGL facilities. - Music facilities. Enhancements: - Label attributes 'text' and 'align' are now overridable properties. - Widgets can have a background image. Bug fixes: - Various problems with request_new_filename dialog fixed. - TextEditor now passes key events with cmd or alt modifier. - Can no longer set the directory of a file chooser box to a non-existent pathname. 2.0 --- New features: - Control, AttrRef, ItemRef classes - ButtonBase, CheckControl, RadioControl classes mixable with Label, Image, CheckWidget - ValueDisplay widget - Field, TextField, IntField, FloatField widgets - CheckBox, RadioButton widgets - Grid layout widget - TabPanel widget - TableView widget - attention_lost() mechanism - Tabbing between text fields - Mechanism for subwidget re-layout on parent size change (anchor attribute, resized() and parent_resized() methods) Improvements: - Added aliases for rect attributes to Widget. - Rect passed into Widget constructor is copied. - Added __len__, get_rect() to ImageArray. - Added get_focus() method to Widget. - Before dismissing a modal widget, attention_lost() is broadcast to the focus chain. - Widget.add() recursively traverses a sequence arg. - Widget.visible overridable using get_visible(). - Label.align attribute. - Root.confirm_quit() method. - New utils functions: blit_in_rect(), align_rect() - Widget.local_to_global() method. - Widget.present() has centered parameter, default True. - Widget.inherited(attribute) method. - PaletteView: scroll_to_item() method, 'reverse' highlight style, highlight_style is a theme property. - Modal mixin for default responses on enter/escape. - Row and Column: expand can be an index or a widget. - Label: margin property is honoured, 'c' alignment supported. - Dialog: ok() and cancel() methods, click_outside_response. - ValueField, IntField, FloatField reimplemented based on ValueEditor - 'event in widget' operation. - Image widget: image is an overridable property. - TextField.allow_char() method. - Cursor width automatically padded to multiple of 8. - Mouse position and modifiers now passed to Widget.get_cursor() when it is called as a result of a key event. Modifications: - Screen.center() method renamed to add_centered() and moved to Widget. - Widget: call_handler() returns the handler's return value, or 'pass' if there is no handler. - PaletteView.draw_prehighlight_with() method added. - Moved to module layout: Row, Column, Frame - Former TextField widget renamed to TextEditor - Moved to module screen: Screen - Moved to module text_screen: TextScreen Bug fixes: - Action of disabled button was invoked when clicked. - Tabbing caused infinite recursion when there was no widget present with tab_stop true. - The resource.get_cursor() function now looks for images in the "cursors" subdirectory as documented, rather than "images".