CHANGELOG

Version 2.1, released 01-Jul-2007

Fixed blocking of insert / delete / apply operations when open in read_only mode Imported setup_combo() from Gtk2::Ex::DBI - setup & requery a combo Added on_row_select key to run external code when a row is selected Fixed text of error message when closing a windows that had an 'un-applied' datasheet Don't include identity columns in insert / update SQL ( fixes SQL Server updates ) Added support for setting individual fields read_only Renamed column_value() to get_column_value() and added alias Added set_column_value()
Renamed column_from_name() to column_from_sql_name ( and add legacy support ) Don't append a primary key column if one is already defined Fixed warnings when hiding the status column ( don't set width to 0 ) Fixed warnings when searching for a primary key ( uninitialised value ) Renamed packages for custom cell renderers from MOFO:: to Gtk2::Ex::Datasheet::DBI::

Documentation updates

Patches from DLB:

        Add support for Postgres:
            Set search path in constructor when Postgres driver detected
            Added support for Postgres in last_insert_id()
        Added detection of primary key columns
    Other patches and suggestions merged
        Simplified primary key detection
        Allow 'faked' column_info hash to be passed into constructor

Version 2.0, released 16-Jan-2006

Overhaul SQL clause handling - now all SQL-related stuff is in the 'sql' hash Added support for placeholders in where clause Added detection of primary key from column_info() ( MySQL & SQL Server only at present ) Added destroy method, which destroys all signal handlers we've created, then destroys itself

( not working yet )
Renamed $model_setup->{table} to $model_setup->{from} in dynamic models Added legacy mode to support 1.x requests Process dynamic models out of order when querying - no need to queue them for later Added method revert(), which is a synonym of undo() Added graceful handling of failure of $dbh->column_info ( warn to console what's happened ) Warn to console if $dbh->column_info fails AND we don't have a primary_key definition Only ask to apply changes if not read_only Addded missing schema request to self

Version 1.0, ( not released )

Added dump_on_error flag to dump SQL on a DBI error Converted more 0s to FALSEs

Version 0.9, released 16-Sep-2005

Add some logic to MOFO::CellRendererDate so that popup calendar gets placed completely on-screen Added MOFO::CellRendererTime and use when a Time column is encountered Dialog question asking user whether to apply if window is closed with unapplied changes to recordset Add missing code to process sql_order_by Renamed readonly flag to read_only ( for consistency ) and hide status column when read_only

Version 0.8, released 15-Aug-2005

Refresh dynamic combos when a toggle that they depend on is edited Automatically choose a renderer type based on the database field type of each field ( can be overriden ) Automatically choose a default value for each column based on the database field definition ( can be overriden ) Removed more Perl warnings re: uninitialised use of ... Choose string / numeric comparison based on database field type for combo renderers Rename 'none' renderer to 'hidden' ( and still support old 'none' renderers ) Use text renderer for hidden columns ... so we can point dynamic combos at them and catch changes

Version 0.7, released 02-Aug-2005

Added support for dynamic combos - ie combos whose options depend on the current row Disabled MOFO::CellRendererSpinButton ... not exactly working properly yet Add support for CellRendererCombos with a string ID ( previously only supported int IDs ) Added undo() method - convenience function that basically does $self->query( undef, TRUE ); Added MOFO::CellRendererDate - copied and pasted from Torsten Schoenfeld's example in the Gtk2 distribution Separated demo app from main package

Version 0.6, released 10-Jun-2005

Switched standard CellRendererText with a custom renderer that has better focus policy after editing Added custom CellRendererSpinButton ( with improved focus policy ) for numeric values Fixed segfault on exit of example app

Version 0.5, released 08-Jun-2005

Fixed make test so module actually installs via cpan

Version 0.4, released 27-May-2005

Changed calculation of primary key column to use $self->fieldlist Added renderer type 'none' for hidden fields Insert method accepts a list of column / value pairs to set initial values Added column_from_name function to convert a column name into it's number in the model Added column_value to look up a value in the selected row Added question dialog to ask whether to apply current datasheet before querying ( override with 'dont_apply' ) Cache the fieldlist array in $self->{fieldlist} so we don't have to query the DB every time we need a field list Remove requirement of field definitions - will use fieldnames from the database if none are given ( CellRendererText for everything ) Added POD documentation

Version 0.3, released 24-May-2005

Worked around 'Use of uninitialized value' warnings Added support for CellRendererCombo - thanks muppet :) Fixed bug where only the 1st updated row was applied Added support for CellRendererToggle Added dynamic column sizing, with mix of percentage and absolute values Added 'multi_select' property which sets 'multiple' selection mode ( only really affects deleting )

Version 0.2, released 19-May-2005

Ported to Gtk2::ListStore / Gtk2::TreeView

( only supports text cell renderers currently ) Renamed sql_fields to sql_select and changes requirement back to and SQL select statement Don't use the '!' special character for inserts - instead use record status indicator ( column 0 ) All SQL operations occur in the 'apply' method as a batch Added constants for status indicators Added pixbuf column to display record status Added field validation plugin functionality Added intelligent detection of record status - don't consider non-changing 'row-changed' events a 'change' Added ReadOnly flag: prevents edits, inserts and deletes if set Put some actual data into the sql dump in the example application Cleaned up error dialogs and added more of them Removed all ComboBox stuff from example app for now

Version 0.1, released 16-May-2005

First Version :)
Querying database and dumping records into a Gtk2::Ex::Simple::List Detecting changes
Updating affected records in the data as a batch Inserting records
Deleting records