Ann: New Axis ( Gtk2::Ex::DBI, Gtk2::Ex::Datasheet::DBI, PDF::ReportWriter ) release
- From: Daniel Kasak <dan entropy homelinux org>
- To: gtk-perl-list gnome org
- Subject: Ann: New Axis ( Gtk2::Ex::DBI, Gtk2::Ex::Datasheet::DBI, PDF::ReportWriter ) release
- Date: Sun, 01 Jul 2007 10:10:25 +1000
Greetings.
After a very, very long time ( 18 months ), I've finally released new
versions of my Axis modules.
The Axis project aims to provide open-source, cross-platform modules for
quickly creating database applications with gtk2-perl. It includes:
Gtk2::Ex::DBI - a DBI recordset manager that binds to a Gtk2::GladeXML
form. This gives you 'forms' functionality.
Gtk2::Ex::Datasheet::DBI - a DBI recordset manager that binds to a
Gtk2::TreeView. This gives you 'datasheets' functionality.
PDF::ReportWriter - a reporting module that exports directly to PDF.
You can download all 3 modules either from my website (
http://entropy.homelinux.org/axis ... which has some screenshots of
production systems in action ), or from cpan. Frankly, I'd prefer people
download from my website, because it gives me some idea of how many
people are using things. cpan offers absolutely no information on
downloads to account holders ... but people have requested that I put my
stuff on cpan, so the option's there ...
Please email me with bug reports, suggestions, feature requests, etc.
Also note that I'm currently building a GUI to futher automate the
construction of Axis objects - see the 'future' link on my website, and
contact me if you're interested in helping ( I'm having one or two
problems ... )
As you can imagine, I've done quite a bit in 18 months. Here are the
respective changelogs:
Gtk2::Ex::Datasheet::DBI
Version 2.1, released 01-Jul-2007
Added debugging messages for signal connection / disconnection
Fixed bug in disconnecting signal from a textview's buffer
Check if a combo has a model before trying to get an iter; warn if no model present
Optimisation: don't keep calling $widget->get_model ... keep model around for re-use
Add primary key detection for SQL Server ( and re-enables SQL Server support which was completely broken )
Fixed bug in disconnecting signal from a ComboBoxEntry's child entry widget
Added setup_combo() for creating / refreshing combo models & setting up autocompletion
Added 'Find' right-click menu item for ComboBoxEntry's children
Added 'Refresh Combo' right-click menu item for ComboBoxEntry's children we have setup definitions for
Added get_widget_value method and use it in apply method ( remove code duplication )
Added set_widget_value method and use it in paint method ( remove code duplication )
Renamed 'readonly' option to 'read_only' ( and added legacy support with warning )
Added data-driven record locking ( via data_lock_field ), lock() and unlock() methods
'tab-forward' when an Enter key is pressed instead of leaving the focus in the current field
Fixed rare off-by-one error in fetch_new_slice() that was creating invalid SQL
Added record_status_label_set() to handle setting the record status label, and added some more colour
Fixed nuking of where object in constructor
Added reset_record_status() to reset 'changed' flag ( so Gtk2::Ex::DBI considers the record synchronised )
Added more error handling in constructor ( die with a descriptive error if we're missing something )
Removed duplicate set_record_spinner_range() in query()
Added support for pass_through queries that return a recordset ( including stored procedures ) - read_only
Added 'status_label' key to allow you to specify a label ( by name ) to use to indicate the record status
Don't include identity columns in insert / update SQL ( fixes SQL Server updates )
Added 'record_spinner' key to allow you to specify a SpinButton ( by name ) to use as the record spinner
Added ability to pass a new where object to setup_combo
Added 'widgets' hash, to store metadata about fields
Added support for using SQL aliases ( select field as alternative_field ) and binding to the alias
Suppress more non-fatal warnings when quiet mode is activated
Added support for custom 'before_apply' function, which can block the apply method
Dump $local_sql to console via warn() if query() fails and debug is set
Added support for using a set of SpinButtons to create 1 TimeSpinner ( experimental )
Replaced padding code with sprintf()
Added friendly_table_name key to override $self->{sql}->{from} in GUI errors
Added date_only input formatter
Added currency input formatter
Added date_dd-mm-yyyy input formatter
Added parser for SQL Server default definitions
INCOMPATIBLE CHANGE:
get_column_value() now returns an ARRAY if multi_select is turned on
Populate the widgets hash and the sql_to_widget_map hash with details of the primary key after detection
Added date_dd-mm-yyyy output formatter
Disable 'find' menu item in right-click menu of widgets for pass-through queries
Don't require a formname - if one isn't passed, get the 1st window title from the Glade XML object
Added currency output_formatter
Imported more robust primary key detection from Gtk2::Ex::Datasheet::DBI
Don't set the changed flag if we're in read_only mode
Added 'type' key to widgets hash and automatically set up input / output formatters based on type
Added sum_widgets()
Fixed bug in inserting a record when we're at the end of the keyset
Simplified apply() and improved debugging output
Strip dollar signs from values in formatter_number() - we add our own if requested
Added DBD::SQLite support
Added original_value()
Patches from DLB:
Add support for Postgres:
Set search path in constructor when Postgres driver detected
Add support for Postgres in last_insert_id()
Gtk2::Ex::Datasheet::DBI
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::
- even though the MOFOs still don't work :)
Queue iter deletion until the end of the apply() method ( otherwise can't move to next )
Added before_apply key to object constructor, to run external function before applying
- return 1 to allow update, return 0 to abort update ( and continue with next record )
Added 'no warnings' directive and commented out 'use warnings'. Switch around if you want warnings
Added 'align' key to field hash - use either a string or a decimal from 0 to 1
Default to right alignment for number fields
Added DOUBLE to the list of numeric fields
Added 'access_time' renderer to deal with weird MS Access formatted time values
( 1899-12-30 hh:mm:ss ) format - ie ALL times have 1899-12-30 prepended to them
Allow setup_treeview() to continue without a primary key, but force to READ-ONLY
More verbose and prettier warnings
Added missing documentation for foreground_colour key in fields hash
Fixed warnings when rendering a date cell with a NULL date
Added support for pass_through queries that return a recordset ( including stored procedures ) - read_only
Better detection of DATE column types from column_info ( use regex instead of exact match )
Optimisation: Use stock gtk2 text renderers where possible ( ie when read-only )
Added support for hard-coding a cell's background colour ( ie a field's background_colour key )
Added sum_column() function, which returns the total off all values in the given column
Added support for custom_cell_data_func - a user-defined function for formatting cell data
Added 'quiet' flag to supress non-fatal warnings
Added parser for SQL Server default definitions
Allow 'faked' column_info hash to be passed into constructor
Exclude the primary key column in updates for ALL databases
( also just use our $self->{primary_key} field to detect the primary key column )
Fixed failure in setup_treeview() when column_info() fails
Don't worry about detecting more than 1 primary key from column_info()
- it doesn't work on multi-table queries anyway
Added friendly_table_name key to constructor for use in dialogs ( imported from Gtk2::Ex::DBI )
Added support for setting up chains of functions to be attached to a cell's custom_cell_data_func
Added dd-mm-yyyy support to CellRendererDate
Fixed incompatibility between us, CellRendererDate and gtk+-2.8.18+
Re-implemented date_only renderer with a builtin_render_function
- this is to deal with SQL Server's combination datetime fields when we only want a date
Mark columns with a currency builtin render function
Strip out dollar signs and commas from currency columns when applying, in get_column_value, and in
sum_column
Attached $self->{columns} ( Gtk2::TreeViewColumns ) to $self->{fields} ( and removed $self->{columns} )
Store width of each column whatever in 'current_width' ( ie $self->{fields}[_field_no_]->{current_width} )
Rename size_allocate() to on_size_allocate()
Added support for using pango markup in the column heading, via a field's header_markup key
Store column name in the treeview_column hash so we can easily figure what what column someone's clicked in
Major reorganisation of $self->{fieldlist}, $self->{fields} and column handling to avoid off-by-one BS
with status column
Work-around for http://bugzilla.gnome.org/show_bug.cgi?id=317387! Woot!
Removed Number::Format dependancy - doesn't install well under Windows
Added count() function, with optional conditions ( similar to sum_column() )
Optimised column_from_column_name and setup_treeview
Fixed focus-out-event in custem CellRendererText not triggering the 'edited' signal. Finally. Thanks
Muppet :)
Fixed cell editable height problem in gtk-2.10.x. Thanks Torsten :)
Fixed setting up primary_key_column and primary key in field list if a primary key is passed ( ie if
column_info fails - very rare )
Ported data lock functionality from Gtk2::Ex::DBI, adding functions:
lock()
unlock()
Automatically scroll the treeview as the cursor changes
Copy a cell's font size to the editable when editing ( currently fixed at Arial though )
Update CellRendererDate to accept font sizes
Imported calculator from Gtk2::Ex::DBI ( and added ->calculator( column_name ) method )
Added GST removal and rounding to calculator
Added on_changed functionality ( gets passed { treepath => $treepath, iter => $iter } )
Pass model and iter to before_apply() and on_apply() functions
Added DBD::SQLite support
Added ( slightly buggy for some data, but hey ... ) initial column sorting support. Double-click in column
headers to sort
Fixed duplicate execution of validation code
Added support for ticking over gtk2 main loop while populating a treeview ( good for slow networks )
Fixed header alignment for datasheets that aren't visible when being constructed
Added support for custom dialogs when datasheets need applying
Added icons to all dialogs
Added footer support, with sum, max, average
Better currency formatting
Added max_column() function
Added average_column() function
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
PDF::ReportWriter
Version 1.4, released 01-Jul-2007
Patches from Cosimo Streppone <cosimo cpan org>:
Improved management of image files according to underlying PDF::API2
installed version. If you specify an image type that PDF::API2
can't handle, the image is skipped and a warning is produced.
Fixed and documented custom cell type mechanism, and added automatic
require of formatter classes.
Patches Patrik Eschle <patrik eschle spectraseis com>:
Added support for code39 barcodes
Fixed rendering of the character 0 by itself
Fixed setup of group footer definition if aggregate source is cell 0
Fixed bad calling of calculate_y_needed
( was passing 'fields' in the options hash instead of 'cells' )
Added support for multi-line text in data ( ie cells can expand vertically )
Fixed printing of data headers if there are no groups defined
Fixed x_pos of text in render_cell_text() for multiline text
Moved execution of custom render functions to happen before rendering all other cell types
Added return hash for custom render functions, with support for passing stuff back for traditional
rendering
Added fetch_group_results() function ( use this with custom_render_func )
Fixed splitting of columns inside a delimited group value for group headers ( sorry Bill )
Fixed printing of group headers if we have to reset them while we're calculating whether we need a new page
INCOMPATIBLE CHANGE:
colour_func() functions now get passed ( $value, $row ) instead of just $row
Removed dependancy on Number::Format
Fixed rendering of footers if reprinting_header is on
Fixed corruption of group aggregate values in some cases
Added text wrapping option to cells for text that is wider than the current width
Added option to cells to strip line breaks from text
Fixed bug in calculate_y_space for non-data cells ( eg where $cell->{text} is rendered )
Create a new page before the 1st invocation of calculate_y_space so we have a text object
Improved numeric and currency formatting - see the cell's new 'format' key
Fixed rendering of cell where text begins with a space ( bad optimisation )
Dan
[Date Prev][
Date Next] [Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]