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/README

NAME
    Gtk2::Ex::FormFactory - Makes building complex GUI's easy

SYNOPSIS
      #-- Refer to http://www.exit1.org/ for 
      #-- a comprehensive online documentation.

      #-- Read Gtk2::Ex::FormFactory::Intro

      use Gtk2::Ex::FormFactory;

      my $context  = Gtk2::Ex::FormFactory::Context->new;
  
      $context->add_object (
        name   => "worksheet",
        object => My::Worksheet->new,
      );
  
      # derived from Gtk2::Ex::FormFactory::Layout
      my $layouter = My::Layout->new;

      # derived from Gtk2::Ex::FormFactory::Rules
      my $rule_checker = My::Rules->new;

      my $ff = Gtk2::Ex::FormFactory->new (
        context      => $context,
        layouter     => $layouter,
        rule_checker => $rule_checker,
        content      => [
          Gtk2::Ex::FormFactory::Window->new (
            title   => "Worksheet Editor",
            content => [
              Gtk2::Ex::FormFactory::Form->new (
                title   => "Main data",
                content => [
                  Gtk2::Ex::FormFactory::Entry->new (
                    label => "Worksheet title",
                    attr  => "worksheet.title",
                    tip   => "Title of this worksheet",
                  ),
                  #-- More widgets...
                ],
              ),
              Gtk2::Ex::FormFactory->DialogButtons->new,
            ],
          ),
        ],
      );

      $ff->open;
      $ff->update;
  
      Gtk2->main;

ABSTRACT
    With Gtk2::Ex::FormFactory you can build a GUI which consistently
    represents the data of your application.

DESCRIPTION
    This is a framework which tries to make building complex GUI's easy, by
    offering these two main features:

      * Consistent looking GUI without the need to code resp. tune
        each widget by hand. Instead you declare the structure of your
        GUI, connect it to the data of your program (which should be
        a well defined set of objects) and control how this structure
        is transformed into a specific layout in a very generic way.

      * Automatically keep widget and object states in sync (in both
        directions), even with complex data structures with a lot of
        internal dependencies, object nesting etc.

    This manpage describes the facilities of Gtk2::Ex::FormFactory objects
    which are only a small part of the whole framework. To get a full
    introduction and overview of how this framework works refer to
    Gtk2::Ex::FormFactory::Intro.

AUTHORS
     Jörn Reder <joern at zyn dot de>

COPYRIGHT AND LICENSE
    Copyright 2004-2006 by Jörn Reder.

    This library is free software; you can redistribute it and/or modify it
    under the terms of the GNU Library General Public License as published
    by the Free Software Foundation; either version 2.1 of the License, or
    (at your option) any later version.

    This library is distributed in the hope that it will be useful, but
    WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library
    General Public License for more details.

    You should have received a copy of the GNU Library General Public
    License along with this library; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307
    USA.