Gtk2::Ex::FormFactory::Intro

Gtk2::Ex::FormFactory::Widget
+-Gtk2::Ex::FormFactory::Container
|  +-Gtk2::Ex::FormFactory
|  +-Gtk2::Ex::FormFactory::Expander
|  +-Gtk2::Ex::FormFactory::Form
|  +-Gtk2::Ex::FormFactory::HBox
|  +-Gtk2::Ex::FormFactory::Notebook
|  +-Gtk2::Ex::FormFactory::Table
|  +-Gtk2::Ex::FormFactory::VBox
|  +-Gtk2::Ex::FormFactory::Window
+-Gtk2::Ex::FormFactory::Button
+-Gtk2::Ex::FormFactory::CheckButton
+-Gtk2::Ex::FormFactory::CheckButtonGroup
+-Gtk2::Ex::FormFactory::Combo
+-Gtk2::Ex::FormFactory::DialogButtons
+-Gtk2::Ex::FormFactory::Entry
+-Gtk2::Ex::FormFactory::Expander
+-Gtk2::Ex::FormFactory::ExecFlow
+-Gtk2::Ex::FormFactory::GtkWidget
+-Gtk2::Ex::FormFactory::HPaned
+-Gtk2::Ex::FormFactory::HSeparator
+-Gtk2::Ex::FormFactory::Image
+-Gtk2::Ex::FormFactory::Label
+-Gtk2::Ex::FormFactory::List
+-Gtk2::Ex::FormFactory::Menu
+-Gtk2::Ex::FormFactory::Popup
+-Gtk2::Ex::FormFactory::ProgressBar
+-Gtk2::Ex::FormFactory::RadioButton
+-Gtk2::Ex::FormFactory::TextView
+-Gtk2::Ex::FormFactory::Timestamp
+-Gtk2::Ex::FormFactory::ToggleButton
+-Gtk2::Ex::FormFactory::VPaned
+-Gtk2::Ex::FormFactory::VSeparator
+-Gtk2::Ex::FormFactory::YesNo

Gtk2::Ex::FormFactory::Layout
Gtk2::Ex::FormFactory::Rules
Gtk2::Ex::FormFactory::Context
Gtk2::Ex::FormFactory::Proxy
+-Gtk2::Ex::FormFactory::ProxyBuffered

Tutorial

Ok, promised too much. There is no tutorial yet, but the application it will deal with is finished and part of the Gtk2::Ex::FormFactory distribution.

Click on the screenshot thumbnail on the right to see what it's about: a simple but fully functional music database. It makes use of Class::DBI for the data model implementation and, of course, uses Gtk2::Ex::FormFactory for the GUI.

I'm planning a step by step tutorial based on this application, which is a good example to learn how Gtk2::Ex::FormFactory based applications may look like.

For now you can browse the source files and read a plain copy of the tutorial/README file, which explains the requirements and how to use the program.


Browse tutorial source files

tutorial/music.pl GUI program using Gtk2::Ex::FormFactory
tutorial/model.pm Data model implemention using Class::DBI
tutorial/music.sql MySQL DDL script to create the neccessary tables
tutorial/config.pm Tiny module managing the database configuration data
tutorial/import.pl Script to populate the database from ogg/mp3 tags


tutorial/README

$Id: README,v 1.7 2005/07/11 15:58:08 joern Exp $

Gtk2::Ex::FormFactory tutorial program
======================================

The tutorial isn't written yet, but the corrsponding example
program is ;)

You need the following bits in order to get the program to work:

  * A running MySQL database server and a user with
    "create database" privileges

  * A bunch of Perl modules:
    - Gtk2 and Gtk2::Ex::FormFactory (of course ;)
    - DBI, DBD::mysql and Class::DBI
    - Optionally: MP3::Info, Ogg::Vorbis::Header for
      the import.pl program

Just change into the "tutorial" subdirectory and start the
music.pl program:

  % cd tutorial
  % perl music.pl

On first startup the program checks for a valid database connection -
without success. This triggers a preferences dialog asking for the
MySQL connection settings. Enter username and password here and
hit the "Test settings button". It should report a missing "gtk2ff"
database, but no "Access denied message" or something like this.
Check username and password you entered if that happens.

Then hit the "Create database" button. This will create the "gtk2ff"
database and tables by executing the SQL commands listed in the
file "music.sql". You should get a success dialog, or an error dialog
with a detailed error message.

If the database was created successfully you may hit the "Fill database"
button. This will add some example entries, so you have something to
play with and don't need to bootstrap with your own data. Alternatively
you may use the import.pl command line program to import the tags of
an existent mp3/ogg collection into the database.

Now close the preferences dialog and play around with the application.
Create, modify and delete artists, albums and songs. The GUI has always
a consistent state (e.g. the "Add album" button is greyed out until
you selected an artist). If you find bugs please report, I tried hard
avoiding them ;)

Overview of the files
=====================

  README        The document you're reading
  music.pl      GUI program using Gtk2::Ex::FormFactory
  music.sql     MySQL DDL script to create the neccessary tables
  model.pm      Data model implementation using Class::DBI
  music.conf    Created by music.pl; contains configuration data
  config.pm     Tiny module managing the database configuration data
  import.pl     Script to populate the database from ogg/mp3 tags

The program has no documentation yet, but is a good example of
how less code is needed to build complex GUI's with Gtk2::Ex::FormFactory
(about 1000 lines, including code for test data generation) and of
course Class::DBI, which made implementing the whole data model in
about 30 lines possible ;).

Have fun.

Jörn Reder <joern AT zyn.de>