Gtk3::Ex::DBI – Database RAD tools

Welcome to my largest open-source project. Gtk3::Ex::DBI is a set of Perl classes that provide ‘form’ and ‘datasheet’ functionality, binding tables in a DBI-connected database to Gtk3 widgets. Combined with Glade, these provide developers with a powerful set of database RAD tools for creating cross-platform GUI applications.

Desktop or Web application

Most Perl applications are web applications, running in mod_perl, or a framework like Catalyst. In contrast, my software is designed to be used to develop desktop applications, along the lines of MS Access apps. However, to make things more interesting, Gtk3 has a number of rendering backends, including HTML5. This means developers can deploy their desktop application as a web application, without changing a single line of code. I’ve been developing and testing extensively with this already, and it truly lives up to its promise. Apps even work on Android and iOS ( using Chrome – the default Android browser doesn’t support websockets yet ). All this makes it, in my opinion, by far the easiest way of developing complex web applications. In particular, the learning curve for new developers is very gentle. You don’t need any HTML knowledge, and you don’t need to learn a complex framework like Catalyst. The only components to learn are Gtk3 ( which is a very nice toolkit ), and Gtk3::Ex::DBI ( which I’ve gone to great lengths to make a joy to use ).


The following features are common to both Form and Datasheet classes

  • Complete abstraction of the database backend – just point at a table, and all selects, inserts, update, and deletes are generated … and all protected from SQL injection attacks
  • Hooks for all recordset events, eg on_current, before_apply, on_changed, etc make it easy to add custom logic to a particular form / datasheet
  • Easy setup of combo boxes based on SQL ( eg select id, text from table )
  • Convenience methods for extracting values back from all supported widgets & cells
  • User-friendly dialog boxes on errors, or when input is required
  • Robust primary key support: detection of primary keys, support for auto-incrementing primary keys, and multi-column primary keys
  • XML definition support for both form and datasheet constructors makes it possible to create a GUI manager of forms and datasheets ( which is in the works )
  • Detection of default values from database
  • Debug mode dumps a wealth of information

Supported Databases

  • Oracle
  • SQL Server / Sybase ( via DBD::ODBC ==> UnixODBC ==> FreeTDS )
  • Netezza ( a data warehouse appliance from IBM )
  • Teradata ( an old-school data warehouse appliance )
  • Postgres
  • MySQL
  • SQLite

I’m not done Yet …

I’ve just recently ( July 2014 ) fired up WordPress, after a long break from having my own site. I’ll be updating these pages, and blogging HOWTOs for my software, and other stuff, as time permits.

Leave a Reply