CHANGELOG

Version 1.3, released 20-Sep-2005
    
    Dialog question asking user whether to apply if window is closed with unapplied changes to recordset
    Fixed setting of calculated field if result of calculation is 0
    Fixed dialog description of DBI error message if apply fails
    Fixed bug in trying to block non-existant signal when setting a primary key retrieved from an insert
    Replaced remaining 0s and 1s to FALSEs and TRUEs
    
Version 1.2, released 15-Aug-2005
    
    Set default values from database field definitions when inserting a new record ( ie onscreen )
    Create a key in our records hash for each field when inserting a new record ( avoids Perl warnings about uninitialised values )
    Removed set_defaults() - incorporated into assemble_new_record()
    Added more eval{} stuff around DB interaction, with Gtk2::Ex::Dialog::ErrorMsg warnings when things fail
    Gtk2::Ex::DBI->new() returns FALSE if initial query fails
    
Version 1.1, released 02-Aug-2005
    
    Ask user if they want to apply changes to current record before requerying ( ie don't simply apply without asking )
    Add $sth->finish commands throughout to make things more SQLServer friendly when using DBD::ODBC with FreeTDS
    INCOMPATIBLE CHANGE: Automatically move to a new position when the record spinner is clicked
    Add missing $self->paint_calculated call at the end of $self->paint
    Added debug key to dump some info to the terminal
    Added calculator dialog to right-click menu of Gtk2::Entry widgets
    Withdrew claim that we work with SQL Server ( see man page )
    Removed unnecessary documentation of internal functions
    Removed support for Gnome2::DateEdit, which is not suitable for database use due to it's handling of NULL values
	See http://bugzilla.gnome.org/show_bug.cgi?id=169787
    
Version 1.0, released 10-Jun-2005
    
    Removed broken last_insert_id code - everything now uses select @@IDENTITY
    Cache the fieldlist array in $self->{fieldlist} so we don't have to query the DB every time we need a field list
    
Version 0.9, released 11-May-2005
    
    Add checks to get rid of ( some ) warnings about 'Use of uninitialized value' in various places
    Moved set_active_iter_for_broken_combo_box to run on 'changed' signal of combo's child instead of 'focus_out_event'
    Removed $widget->get_child->set_text("") from set_active_iter_for_broken_combo_box ... WTF was that for?
    Fixed a bug in 'delete' method that was deleting the wrong record from the *in-memory* recordset ( DB data was OK )
    Add insertion marker to primary key of *in-memory* recordset if there are no records ( otherwise users must first insert() before entering data )
    Updated TODO

Version 0.8, released 10-Mar-2005
    
    INCOMPATIBLE CHANGE: don't call on_current while we're constructing ourself - external code won't be able to 'see' us yet
	Added constructor_done flag to indicate whether we have been returned to the calling code yet
	You should manually call the on_current code immediately *after* the object constructor ... when your Gtk2::Ex::DBI object will be available
    Added method of running external code before applying changes to the current record ( on_apply - similar to on_current )
    Apply changes to the current record before requerying ( query method )
    Properly handle empty recordsets in count method
    Append primary key to sql_select if necessary in fetch_new_slice method
    Added 'quiet' flag to silence warnings such as missing widgets
    Added 'use strict' directive and fixed up issues this raised
    Added demo application - a dream database ( distributed separately - see download page on website )
    Use 'make dist' to create distributable package instead of manually creating archive - thanks Ofey
    Updated website to make better use of space - also thanks to Ofey for suggestion to clean it up
    
Version 0.7, released 10-Feb-2005
    
    Rewrote 'insert into' syntax in 'apply' method to be more DB-neutral
    Completed support for MS SQL server ( and most likely Sybase ... maybe even others ) via DBD::ODBC

Version 0.6, released 18-Jan-2005

    MAJOR CHANGE: Implemented selecting of partial recordsets ( slices ) instead of simply selecting the whole recordset at once
        Dramatically improves performance on low-memory machines, and in cases of large recordsets
    INCOMPATIBLE CHANGE: The min / max values that are passed to the record spinner are now the recordset position PLUS ONE
        ( ie starts at 1 now instead of 0 )
    Update the range of the record spinner when inserting / deleting
    Added workaround for http://bugzilla.gnome.org/show_bug.cgi?id=156017
    Added support for default values. TODO: Support for fetching default values from DB Server
    Added support for Gtk2::CheckButton
    Broke out last_insert_id functionality into it's own method
    Fixed logic problem in 'move' method if there are no records ( don't try to move to position -1 )
    Added ( dodgy ) workaround for http://bugzilla.gnome.org/show_bug.cgi?id=52372 - we bail out :)
    Documentation additions / cleanups
    Got website back online at http://entropy.homelinux.org after a large outage
	( I was in Cambodia for a month, and someone stole my hostname after it expired )
    
Version 0.5, released 22-Nov-2004

    Reformatted all indentation & removed a lot of whitespace ( big change, I know ). Now looks outstanding in ActiveState's Komodo :)
    Removed attempted locking of fields if 'read_only' is set.
	Only worked for a few widgets, and I don't see much point anyway - 'apply' method still honours 'read_only' status
    Fixed support for Gtk2::TextView - now we connect to TextBuffer's 'changed' signal
    Added support for DBI's last_insert_id() method. This brings us one step closer to supporting DB servers other than MySQL.
	Still requires some *very* small additions ( eg last_insert_id() on Postgres requires some arguments to be passed )
	Volunteers? I don't use Postgres
    Added POD documentation - some formatting issues, not enough time to figure out what's up
    
Version 0.4, released 22-Oct-2004
    
    Fixed 2 *nasty* bugs in apply method that were preventing the fieldlist from being processed and applied to DB Server or in-memory recordset
    Added 'delete' method
    
Version 0.3, released 14-Oct-2004
    
    Added DATE-ONLY support for Gnome2::DateEdit ( only tested with MySQL's yyyy-mm-dd format ... BEWARE !!! )
    Added 'order by' support
    'revert' method now deletes the current record from the *in-memory* recordset if we are currently inserting a new record
    *** Added dependancy*** : Gtk2::Ex::Dialogs - used instead of my own ( admittedly dodgy ) msgbox() function
    Added 'fieldlist' method, which returns a list of fields ( taken from the DB server )
    'apply' and 'paint' methods now use $self->fieldlist which is far more robust than looking at the current position's fieldlist
	( in some cases will only contain the primary key )
    Removed dependance on 'stuff.pm'. Moved date_from_GtkCalendar and date_to_GtkCalendar functionality back into Gtk2::Ex::DBI ( maybe should be another package? )
    Added ExtUtils::MakeMaker support for installation
    
Version 0.2, released 06-Sep-2004

    Renamed from gtk2-gladexml_DBI_helper to Gtk2::Ex::DBI
    Added support for Gtk2::TextView
    Added missing event support for Gtk2::Calendar
    More comments and documentation
    Remove fieldlist requirement from 'new' method. Fieldlist is assembled on-the-fly
    Fixed error if no on_current sub defined
    Deal with NULL date values when painting form
    Fixed bug where fields weren't getting their respective 'changed' signal connected if the initial query returned no results
    Added initial support for calculated fields
    Better handling of zero values ( don't use undef just because a zero is encountered )

Version 0.1, released 04-Jul-2004

    First Version :)
    Basic querying
    Form painting
    Database updating
    External callbacks
