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

Gtk2-Ex-FormFactory/tutorial/model.pm

# $Id: model.pm,v 1.2 2005/07/04 15:35:30 joern Exp $

package Music::DBI;
use base 'Class::DBI';
Music::DBI->connection($Music::Config::instance->get_connection_data);
sub accessor_name { "get_$_[1]" }
sub mutator_name  { "set_$_[1]" }
sub autoupdate	  { 1 }

package Music::Artist;
use base 'Music::DBI';
Music::Artist->table('artist');
Music::Artist->columns(All => qw/id name notes/);
Music::Artist->has_many(albums => 'Music::Album', { order_by => 'title' } );

package Music::Genre;
use base 'Music::DBI';
Music::Genre->table('genre');
Music::Genre->columns(All => qw/id name/);

package Music::Album;
use base 'Music::DBI';
Music::Album->table('album');
Music::Album->columns(All => qw/id artist genre title year notes/);
Music::Album->has_a(artist => 'Music::Artist');
Music::Album->has_a(genre  => 'Music::Genre');
Music::Album->has_many(songs => 'Music::Song', { order_by => 'nr' } );

package Music::Song;
use base 'Music::DBI';
Music::Song->table('song');
Music::Song->columns(All => qw/id album title nr/);
Music::Song->has_a(album => 'Music::Album');

1;