#!/usr/bin/perl -w
#
# This is the (re)generated UI construction class.
#
# DO NOT EDIT THIS FILE, ANY CHANGES THAT YOU MAKE WILL BE LOST WHEN
# THIS FILE WILL BE OVERWRITTEN BY THE NEXT RUN OF Glade::PerlGenerate
#
#==============================================================================
#=== This is the 'alert_window' class                              
#==============================================================================
package alert_window;
require 5.000; use strict 'vars', 'refs', 'subs';
# UI class 'alert_window' (version 0.01)
# 
# Copyright (c) Date Fri Nov 19 16:11:39 CST 2004
# Author Danil Lim <danil@brian.cs.wisc.edu>
#
# Unspecified copying policy, please contact the author
# Danil Lim <danil@brian.cs.wisc.edu>
#
#==============================================================================
# This perl source file was automatically generated by 
# Glade::PerlGenerate version 0.61 - Sun Nov 17 03:21:11 GMT 2002
# Copyright (c) Author Dermot Musgrove <dermot.musgrove@virgin.net>
#
# from Glade file /afs/cs.wisc.edu/u/d/a/danil/cvsstuff/library4/library.glade
# Fri Jun 24 15:14:44 CDT 2005
#==============================================================================

BEGIN {
    # Run-time utilities and vars
    use Glade::PerlRun; 
    # Existing signal handler modules
    use vars qw( 
                 @ISA
                 %fields
                 %stubs
                 $PACKAGE
                 $VERSION
                 $AUTHOR
                 $DATE
                 $AUTOLOAD
                 $permitted_fields
             );
    # Tell interpreter who we are inheriting from
    @ISA     = qw( Glade::PerlRun );
    $PACKAGE = 'Library';
    $VERSION = '0.01';
    $AUTHOR  = 'Danil Lim <danil@brian.cs.wisc.edu>';
    $DATE    = 'Fri Nov 19 16:11:39 CST 2004';
    $permitted_fields = '_permitted_fields';             
} # End of sub BEGIN

    $Glade::PerlRun::pixmaps_directory ||= '/afs/cs.wisc.edu/u/d/a/danil/cvsstuff/library4/pixmaps';

%fields = (
    # These are the data fields that you can set/get using the dynamic
    # calls provided by AUTOLOAD (and their initial values).
    # eg $class->FORM($new_value);      sets the value of FORM
    #    $current_value = $class->FORM; gets the current value of FORM
    TOPLEVEL => undef,
    FORM     => undef,
    PACKAGE  => 'Library',
    VERSION  => '0.01',
    AUTHOR   => 'Danil Lim <danil@brian.cs.wisc.edu>',
    DATE     => 'Fri Nov 19 16:11:39 CST 2004',
    INSTANCE => 'main_window',
    CLASS_HIERARCHY => undef,
    WIDGET_HIERARCHY => undef,
);

%stubs = (
    # These are signal handlers that will cause a message_box to be
    # displayed by AUTOLOAD if there is not already a sub of that name
    # in any module specified in 'use_modules'.

    'do_close' => undef,
);

sub AUTOLOAD {
    my $self = shift;
    my $type = ref($self)
        or die "$self is not an object so we cannot '$AUTOLOAD'\n",
            "We were called from ".join(", ", caller)."\n\n";
    my $name = $AUTOLOAD;
    $name =~ s/.*://;       # strip fully-qualified portion

    if (exists $self->{$permitted_fields}{$name} ) {
        # This allows dynamic data methods - see hash fields above
        # eg $class->UI('new_value');
        # or $current_value = $class->UI;
        if (@_) {
            return $self->{$name} = shift;
        } else {
            return $self->{$name};
        }

    } elsif (exists $stubs{$name} ) {
        # This shows dynamic signal handler stub message_box - see hash stubs above
        __PACKAGE__->show_skeleton_message(
            $AUTOLOAD."\n ("._("AUTOLOADED by")." ".__PACKAGE__.")", 
            [$self, @_], 
            __PACKAGE__, 
            'Logo.xpm');
        
    } else {
        die "Can't access method `$name' in class $type\n".
            "We were called from ".join(", ", caller)."\n\n";

    }
} # End of sub AUTOLOAD

sub run {
    my ($class) = @_;
    $class->load_translations('Library');
    # You can use the line below to load a test .mo file before it is installed in 
    # the normal place (eg /usr/local/share/locale/en_US.UTF-8/LC_MESSAGES/Library.mo)
#    $class->load_translations('Library', 'test', undef, '/afs/cs.wisc.edu/u/d/a/danil/cvsstuff/library4/ppo/Library.mo');
    Gtk->init;
    my $window = $class->new;
    $window->TOPLEVEL->show;
    Gtk->main;
} # End of sub run

sub DESTROY {
    # This sub will be called on object destruction
} # End of sub DESTROY

sub new {
#
# This sub will create the UI window
    my $that  = shift;
    my $class = ref($that) || $that;
    my $self  = {
        $permitted_fields   => \%fields, %fields,
        _permitted_stubs    => \%stubs,  %stubs,
    };
    my ($forms, $widgets, $data, $work);
    my $instance = 1;
    # Get a unique toplevel widget structure
    while (defined $__PACKAGE__::all_forms->{"alert_window-$instance"}) {$instance++;}


    #
    # Construct a GtkWindow 'alert_window'
    $widgets->{'alert_window'} = new Gtk::Window;
    $widgets->{'alert_window'}->set_title(_('Alert') );
    $widgets->{'alert_window'}->set_position('none' );
    $widgets->{'alert_window'}->set_policy(0, 1, 0 );
    $widgets->{'alert_window'}->set_modal(0 );
    $widgets->{'alert_window'}->realize;
    $forms->{'alert_window'}{'tooltips'} = new Gtk::Tooltips;
    $forms->{'alert_window'}{'accelgroup'} = new Gtk::AccelGroup;
    $forms->{'alert_window'}{'accelgroup'}->attach($widgets->{'alert_window'} );
    $forms->{'alert_window'}{'alert_window'} = $widgets->{'alert_window'};
	#
	# Construct a GtkVBox 'vbox4'
	$widgets->{'vbox4'} = new Gtk::VBox(0, 5 );
	$forms->{'alert_window'}{'alert_window'}->add($widgets->{'vbox4'} );
	$widgets->{'vbox4'}->show;
	$forms->{'alert_window'}{'vbox4'} = $widgets->{'vbox4'};
	    #
	    # Construct a GtkFrame 'frame1'
	    $widgets->{'frame1'} = new Gtk::Frame(_('Alert:'));
	    $widgets->{'frame1'}->set_label_align(0, 0 );
	    $widgets->{'frame1'}->set_shadow_type('etched_in' );
	    $forms->{'alert_window'}{'vbox4'}->add($widgets->{'frame1'} );
	    $widgets->{'frame1'}->show;
	    $forms->{'alert_window'}{'frame1'} = $widgets->{'frame1'};
		#
		# Construct a GtkLabel 'reason_label'
		$widgets->{'reason_label'} = new Gtk::Label(_('label13'));
		$widgets->{'reason_label'}->set_justify('center' );
		$widgets->{'reason_label'}->set_line_wrap(0 );
		$forms->{'alert_window'}{'frame1'}->add($widgets->{'reason_label'} );
		$widgets->{'reason_label'}->show;
		$forms->{'alert_window'}{'reason_label'} = $widgets->{'reason_label'};
		$forms->{'alert_window'}{'reason_label'}->set_alignment(0.5, 0.5 );
	    $forms->{'alert_window'}{'vbox4'}->set_child_packing($forms->{'alert_window'}{'frame1'}, 0, 0, 0, 'start' );
	    #
	    # Construct a GtkHButtonBox 'hbuttonbox2'
	    $widgets->{'hbuttonbox2'} = new Gtk::HButtonBox;
	    $forms->{'alert_window'}{'vbox4'}->add($widgets->{'hbuttonbox2'} );
	    $widgets->{'hbuttonbox2'}->show;
	    $forms->{'alert_window'}{'hbuttonbox2'} = $widgets->{'hbuttonbox2'};
	    $forms->{'alert_window'}{'hbuttonbox2'}->set_layout('default_style' );
	    $forms->{'alert_window'}{'hbuttonbox2'}->set_spacing(30 );
	    $forms->{'alert_window'}{'hbuttonbox2'}->set_child_size(85, 27 );
	    $forms->{'alert_window'}{'hbuttonbox2'}->set_child_ipadding(7, 0 );
		#
		# Construct a GtkButton 'ok_button'
		$widgets->{'ok_button'} = new Gtk::Button(_('Ok'));
		$forms->{'alert_window'}{'hbuttonbox2'}->add($widgets->{'ok_button'} );
		$widgets->{'ok_button'}->show;
		$forms->{'alert_window'}{'ok_button'} = $widgets->{'ok_button'};
		$forms->{'alert_window'}{'ok_button'}->can_default(1 );
		$forms->{'alert_window'}{'ok_button'}->can_focus(1 );
		$forms->{'alert_window'}{'ok_button'}->has_default(1 );
		$forms->{'alert_window'}{'ok_button'}->grab_default;
		$forms->{'alert_window'}{'ok_button'}->has_focus(1 );
	    $forms->{'alert_window'}{'vbox4'}->set_child_packing($forms->{'alert_window'}{'hbuttonbox2'}, 0, 0, 0, 'start' );
    #
    # Connect all signals now that widgets are constructed
    $forms->{'alert_window'}{'ok_button'}->signal_connect('clicked', "$class\::do_close", '', 'ok_button', "alert_window-$instance" );


    #
    # Return the constructed UI
    bless $self, $class;
    $self->FORM($forms->{'alert_window'});
    $self->TOPLEVEL($self->FORM->{'alert_window'});
    $self->FORM->{'TOPLEVEL'} = ($self->TOPLEVEL);
    $self->FORM->{'OBJECT'} = ($self);
    $self->INSTANCE("alert_window-$instance");
    $self->CLASS_HIERARCHY($self->FORM->{'__CH'});
    $self->WIDGET_HIERARCHY($self->FORM->{'__WH'});
    $__PACKAGE__::all_forms->{$self->INSTANCE} = $self->FORM;
    
    return $self;
} # End of sub new









#==============================================================================
#=== This is the 'user_window' class                              
#==============================================================================
package user_window;
require 5.000; use strict 'vars', 'refs', 'subs';
# UI class 'user_window' (version 0.01)
# 
# Copyright (c) Date Fri Nov 19 16:11:39 CST 2004
# Author Danil Lim <danil@brian.cs.wisc.edu>
#
# Unspecified copying policy, please contact the author
# Danil Lim <danil@brian.cs.wisc.edu>
#
#==============================================================================
# This perl source file was automatically generated by 
# Glade::PerlGenerate version 0.61 - Sun Nov 17 03:21:11 GMT 2002
# Copyright (c) Author Dermot Musgrove <dermot.musgrove@virgin.net>
#
# from Glade file /afs/cs.wisc.edu/u/d/a/danil/cvsstuff/library4/library.glade
# Fri Jun 24 15:14:44 CDT 2005
#==============================================================================

BEGIN {
    # Run-time utilities and vars
    use Glade::PerlRun; 
    # Existing signal handler modules
    use vars qw( 
                 @ISA
                 %fields
                 %stubs
                 $PACKAGE
                 $VERSION
                 $AUTHOR
                 $DATE
                 $AUTOLOAD
                 $permitted_fields
             );
    # Tell interpreter who we are inheriting from
    @ISA     = qw( Glade::PerlRun );
    $PACKAGE = 'Library';
    $VERSION = '0.01';
    $AUTHOR  = 'Danil Lim <danil@brian.cs.wisc.edu>';
    $DATE    = 'Fri Nov 19 16:11:39 CST 2004';
    $permitted_fields = '_permitted_fields';             
} # End of sub BEGIN

    $Glade::PerlRun::pixmaps_directory ||= '/afs/cs.wisc.edu/u/d/a/danil/cvsstuff/library4/pixmaps';

%fields = (
    # These are the data fields that you can set/get using the dynamic
    # calls provided by AUTOLOAD (and their initial values).
    # eg $class->FORM($new_value);      sets the value of FORM
    #    $current_value = $class->FORM; gets the current value of FORM
    TOPLEVEL => undef,
    FORM     => undef,
    PACKAGE  => 'Library',
    VERSION  => '0.01',
    AUTHOR   => 'Danil Lim <danil@brian.cs.wisc.edu>',
    DATE     => 'Fri Nov 19 16:11:39 CST 2004',
    INSTANCE => 'main_window',
    CLASS_HIERARCHY => undef,
    WIDGET_HIERARCHY => undef,
);

%stubs = (
    # These are signal handlers that will cause a message_box to be
    # displayed by AUTOLOAD if there is not already a sub of that name
    # in any module specified in 'use_modules'.

    'do_user' => undef,
);

sub AUTOLOAD {
    my $self = shift;
    my $type = ref($self)
        or die "$self is not an object so we cannot '$AUTOLOAD'\n",
            "We were called from ".join(", ", caller)."\n\n";
    my $name = $AUTOLOAD;
    $name =~ s/.*://;       # strip fully-qualified portion

    if (exists $self->{$permitted_fields}{$name} ) {
        # This allows dynamic data methods - see hash fields above
        # eg $class->UI('new_value');
        # or $current_value = $class->UI;
        if (@_) {
            return $self->{$name} = shift;
        } else {
            return $self->{$name};
        }

    } elsif (exists $stubs{$name} ) {
        # This shows dynamic signal handler stub message_box - see hash stubs above
        __PACKAGE__->show_skeleton_message(
            $AUTOLOAD."\n ("._("AUTOLOADED by")." ".__PACKAGE__.")", 
            [$self, @_], 
            __PACKAGE__, 
            'Logo.xpm');
        
    } else {
        die "Can't access method `$name' in class $type\n".
            "We were called from ".join(", ", caller)."\n\n";

    }
} # End of sub AUTOLOAD

sub run {
    my ($class) = @_;
    $class->load_translations('Library');
    # You can use the line below to load a test .mo file before it is installed in 
    # the normal place (eg /usr/local/share/locale/en_US.UTF-8/LC_MESSAGES/Library.mo)
#    $class->load_translations('Library', 'test', undef, '/afs/cs.wisc.edu/u/d/a/danil/cvsstuff/library4/ppo/Library.mo');
    Gtk->init;
    my $window = $class->new;
    $window->TOPLEVEL->show;
    Gtk->main;
} # End of sub run

sub DESTROY {
    # This sub will be called on object destruction
} # End of sub DESTROY

sub new {
#
# This sub will create the UI window
    my $that  = shift;
    my $class = ref($that) || $that;
    my $self  = {
        $permitted_fields   => \%fields, %fields,
        _permitted_stubs    => \%stubs,  %stubs,
    };
    my ($forms, $widgets, $data, $work);
    my $instance = 1;
    # Get a unique toplevel widget structure
    while (defined $__PACKAGE__::all_forms->{"user_window-$instance"}) {$instance++;}


    #
    # Construct a GtkWindow 'user_window'
    $widgets->{'user_window'} = new Gtk::Window;
    $widgets->{'user_window'}->set_title(_('User') );
    $widgets->{'user_window'}->set_position('none' );
    $widgets->{'user_window'}->set_policy(0, 1, 0 );
    $widgets->{'user_window'}->set_modal(0 );
    $widgets->{'user_window'}->realize;
    $forms->{'user_window'}{'tooltips'} = new Gtk::Tooltips;
    $forms->{'user_window'}{'accelgroup'} = new Gtk::AccelGroup;
    $forms->{'user_window'}{'accelgroup'}->attach($widgets->{'user_window'} );
    $forms->{'user_window'}{'user_window'} = $widgets->{'user_window'};
	#
	# Construct a GtkVBox 'vbox2'
	$widgets->{'vbox2'} = new Gtk::VBox(0, 10 );
	$forms->{'user_window'}{'user_window'}->add($widgets->{'vbox2'} );
	$widgets->{'vbox2'}->show;
	$forms->{'user_window'}{'vbox2'} = $widgets->{'vbox2'};
	    #
	    # Construct a GtkLabel 'prompt_label'
	    $widgets->{'prompt_label'} = new Gtk::Label(_('Check out to:'));
	    $widgets->{'prompt_label'}->set_justify('center' );
	    $widgets->{'prompt_label'}->set_line_wrap(0 );
	    $forms->{'user_window'}{'vbox2'}->add($widgets->{'prompt_label'} );
	    $widgets->{'prompt_label'}->show;
	    $forms->{'user_window'}{'prompt_label'} = $widgets->{'prompt_label'};
	    $forms->{'user_window'}{'prompt_label'}->set_alignment(0.5, 0.5 );
	    $forms->{'user_window'}{'vbox2'}->set_child_packing($forms->{'user_window'}{'prompt_label'}, 0, 0, 0, 'start' );
	    #
	    # Construct a GtkEntry 'user_entry'
	    $widgets->{'user_entry'} = new Gtk::Entry;
	    $forms->{'user_window'}{'vbox2'}->add($widgets->{'user_entry'} );
	    $widgets->{'user_entry'}->show;
	    $forms->{'user_window'}{'user_entry'} = $widgets->{'user_entry'};
	    $forms->{'user_window'}{'user_entry'}->can_default(1 );
	    $forms->{'user_window'}{'user_entry'}->can_focus(1 );
	    $forms->{'user_window'}{'user_entry'}->set_text(_('') );
	    $forms->{'user_window'}{'user_entry'}->set_max_length(0 );
	    $forms->{'user_window'}{'user_entry'}->set_visibility(1 );
	    $forms->{'user_window'}{'user_entry'}->set_editable(1 );
	    $forms->{'user_window'}{'vbox2'}->set_child_packing($forms->{'user_window'}{'user_entry'}, 0, 0, 0, 'start' );
	    #
	    # Construct a GtkHButtonBox 'hbuttonbox3'
	    $widgets->{'hbuttonbox3'} = new Gtk::HButtonBox;
	    $forms->{'user_window'}{'vbox2'}->add($widgets->{'hbuttonbox3'} );
	    $widgets->{'hbuttonbox3'}->show;
	    $forms->{'user_window'}{'hbuttonbox3'} = $widgets->{'hbuttonbox3'};
	    $forms->{'user_window'}{'hbuttonbox3'}->set_layout('default_style' );
	    $forms->{'user_window'}{'hbuttonbox3'}->set_spacing(30 );
	    $forms->{'user_window'}{'hbuttonbox3'}->set_child_size(85, 27 );
	    $forms->{'user_window'}{'hbuttonbox3'}->set_child_ipadding(7, 0 );
		#
		# Construct a GtkButton 'ok_button'
		$widgets->{'ok_button'} = new Gtk::Button(_('Ok'));
		$forms->{'user_window'}{'hbuttonbox3'}->add($widgets->{'ok_button'} );
		$widgets->{'ok_button'}->show;
		$forms->{'user_window'}{'ok_button'} = $widgets->{'ok_button'};
		$forms->{'user_window'}{'ok_button'}->can_default(1 );
		$forms->{'user_window'}{'ok_button'}->can_focus(1 );
		$forms->{'user_window'}{'ok_button'}->has_default(1 );
		$forms->{'user_window'}{'ok_button'}->grab_default;
		$forms->{'user_window'}{'ok_button'}->has_focus(1 );
	    $forms->{'user_window'}{'vbox2'}->set_child_packing($forms->{'user_window'}{'hbuttonbox3'}, 0, 0, 0, 'start' );
    #
    # Connect all signals now that widgets are constructed
    $forms->{'user_window'}{'ok_button'}->signal_connect('clicked', "$class\::do_user", '', 'ok_button', "user_window-$instance" );


    #
    # Return the constructed UI
    bless $self, $class;
    $self->FORM($forms->{'user_window'});
    $self->TOPLEVEL($self->FORM->{'user_window'});
    $self->FORM->{'TOPLEVEL'} = ($self->TOPLEVEL);
    $self->FORM->{'OBJECT'} = ($self);
    $self->INSTANCE("user_window-$instance");
    $self->CLASS_HIERARCHY($self->FORM->{'__CH'});
    $self->WIDGET_HIERARCHY($self->FORM->{'__WH'});
    $__PACKAGE__::all_forms->{$self->INSTANCE} = $self->FORM;
    
    return $self;
} # End of sub new









#==============================================================================
#=== This is the 'add_window' class                              
#==============================================================================
package add_window;
require 5.000; use strict 'vars', 'refs', 'subs';
# UI class 'add_window' (version 0.01)
# 
# Copyright (c) Date Fri Nov 19 16:11:39 CST 2004
# Author Danil Lim <danil@brian.cs.wisc.edu>
#
# Unspecified copying policy, please contact the author
# Danil Lim <danil@brian.cs.wisc.edu>
#
#==============================================================================
# This perl source file was automatically generated by 
# Glade::PerlGenerate version 0.61 - Sun Nov 17 03:21:11 GMT 2002
# Copyright (c) Author Dermot Musgrove <dermot.musgrove@virgin.net>
#
# from Glade file /afs/cs.wisc.edu/u/d/a/danil/cvsstuff/library4/library.glade
# Fri Jun 24 15:14:44 CDT 2005
#==============================================================================

BEGIN {
    # Run-time utilities and vars
    use Glade::PerlRun; 
    # Existing signal handler modules
    use vars qw( 
                 @ISA
                 %fields
                 %stubs
                 $PACKAGE
                 $VERSION
                 $AUTHOR
                 $DATE
                 $AUTOLOAD
                 $permitted_fields
             );
    # Tell interpreter who we are inheriting from
    @ISA     = qw( Glade::PerlRun );
    $PACKAGE = 'Library';
    $VERSION = '0.01';
    $AUTHOR  = 'Danil Lim <danil@brian.cs.wisc.edu>';
    $DATE    = 'Fri Nov 19 16:11:39 CST 2004';
    $permitted_fields = '_permitted_fields';             
} # End of sub BEGIN

    $Glade::PerlRun::pixmaps_directory ||= '/afs/cs.wisc.edu/u/d/a/danil/cvsstuff/library4/pixmaps';

%fields = (
    # These are the data fields that you can set/get using the dynamic
    # calls provided by AUTOLOAD (and their initial values).
    # eg $class->FORM($new_value);      sets the value of FORM
    #    $current_value = $class->FORM; gets the current value of FORM
    TOPLEVEL => undef,
    FORM     => undef,
    PACKAGE  => 'Library',
    VERSION  => '0.01',
    AUTHOR   => 'Danil Lim <danil@brian.cs.wisc.edu>',
    DATE     => 'Fri Nov 19 16:11:39 CST 2004',
    INSTANCE => 'main_window',
    CLASS_HIERARCHY => undef,
    WIDGET_HIERARCHY => undef,
);

%stubs = (
    # These are signal handlers that will cause a message_box to be
    # displayed by AUTOLOAD if there is not already a sub of that name
    # in any module specified in 'use_modules'.

    'do_add' => undef,
    'do_cancel' => undef,
);

sub AUTOLOAD {
    my $self = shift;
    my $type = ref($self)
        or die "$self is not an object so we cannot '$AUTOLOAD'\n",
            "We were called from ".join(", ", caller)."\n\n";
    my $name = $AUTOLOAD;
    $name =~ s/.*://;       # strip fully-qualified portion

    if (exists $self->{$permitted_fields}{$name} ) {
        # This allows dynamic data methods - see hash fields above
        # eg $class->UI('new_value');
        # or $current_value = $class->UI;
        if (@_) {
            return $self->{$name} = shift;
        } else {
            return $self->{$name};
        }

    } elsif (exists $stubs{$name} ) {
        # This shows dynamic signal handler stub message_box - see hash stubs above
        __PACKAGE__->show_skeleton_message(
            $AUTOLOAD."\n ("._("AUTOLOADED by")." ".__PACKAGE__.")", 
            [$self, @_], 
            __PACKAGE__, 
            'Logo.xpm');
        
    } else {
        die "Can't access method `$name' in class $type\n".
            "We were called from ".join(", ", caller)."\n\n";

    }
} # End of sub AUTOLOAD

sub run {
    my ($class) = @_;
    $class->load_translations('Library');
    # You can use the line below to load a test .mo file before it is installed in 
    # the normal place (eg /usr/local/share/locale/en_US.UTF-8/LC_MESSAGES/Library.mo)
#    $class->load_translations('Library', 'test', undef, '/afs/cs.wisc.edu/u/d/a/danil/cvsstuff/library4/ppo/Library.mo');
    Gtk->init;
    my $window = $class->new;
    $window->TOPLEVEL->show;
    Gtk->main;
} # End of sub run

sub DESTROY {
    # This sub will be called on object destruction
} # End of sub DESTROY

sub new {
#
# This sub will create the UI window
    my $that  = shift;
    my $class = ref($that) || $that;
    my $self  = {
        $permitted_fields   => \%fields, %fields,
        _permitted_stubs    => \%stubs,  %stubs,
    };
    my ($forms, $widgets, $data, $work);
    my $instance = 1;
    # Get a unique toplevel widget structure
    while (defined $__PACKAGE__::all_forms->{"add_window-$instance"}) {$instance++;}


    #
    # Construct a GtkWindow 'add_window'
    $widgets->{'add_window'} = new Gtk::Window;
    $widgets->{'add_window'}->set_title(_('Add Book') );
    $widgets->{'add_window'}->set_position('none' );
    $widgets->{'add_window'}->set_policy(0, 1, 0 );
    $widgets->{'add_window'}->set_modal(0 );
    $widgets->{'add_window'}->realize;
    $forms->{'add_window'}{'tooltips'} = new Gtk::Tooltips;
    $forms->{'add_window'}{'accelgroup'} = new Gtk::AccelGroup;
    $forms->{'add_window'}{'accelgroup'}->attach($widgets->{'add_window'} );
    $forms->{'add_window'}{'add_window'} = $widgets->{'add_window'};
	#
	# Construct a GtkVBox 'vbox3'
	$widgets->{'vbox3'} = new Gtk::VBox(0, 0 );
	$forms->{'add_window'}{'add_window'}->add($widgets->{'vbox3'} );
	$widgets->{'vbox3'}->show;
	$forms->{'add_window'}{'vbox3'} = $widgets->{'vbox3'};
	    #
	    # Construct a GtkTable 'table1'
	    $widgets->{'table1'} = new Gtk::Table(4, 2, 0 );
	    $widgets->{'table1'}->set_row_spacings(5 );
	    $widgets->{'table1'}->set_col_spacings(2 );
	    $forms->{'add_window'}{'vbox3'}->add($widgets->{'table1'} );
	    $widgets->{'table1'}->show;
	    $forms->{'add_window'}{'table1'} = $widgets->{'table1'};
	    $forms->{'add_window'}{'table1'}->border_width(2 );
		#
		# Construct a GtkLabel 'label8'
		$widgets->{'label8'} = new Gtk::Label(_('ISBN: '));
		$widgets->{'label8'}->set_justify('center' );
		$widgets->{'label8'}->set_line_wrap(0 );
		$forms->{'add_window'}{'table1'}->attach($widgets->{'label8'}, 0, 1, 0, 1, [], [], 0, 0 );
		$widgets->{'label8'}->show;
		$forms->{'add_window'}{'label8'} = $widgets->{'label8'};
		$forms->{'add_window'}{'label8'}->set_alignment(0.5, 0.5 );
		#
		# Construct a GtkLabel 'label10'
		$widgets->{'label10'} = new Gtk::Label(_('Author: '));
		$widgets->{'label10'}->set_justify('center' );
		$widgets->{'label10'}->set_line_wrap(0 );
		$forms->{'add_window'}{'table1'}->attach($widgets->{'label10'}, 0, 1, 2, 3, [], [], 0, 0 );
		$widgets->{'label10'}->show;
		$forms->{'add_window'}{'label10'} = $widgets->{'label10'};
		$forms->{'add_window'}{'label10'}->set_alignment(0.5, 0.5 );
		#
		# Construct a GtkEntry 'isbn_entry'
		$widgets->{'isbn_entry'} = new Gtk::Entry;
		$forms->{'add_window'}{'table1'}->attach($widgets->{'isbn_entry'}, 1, 2, 0, 1, ['expand', 'fill'], [], 0, 0 );
		$widgets->{'isbn_entry'}->show;
		$forms->{'add_window'}{'isbn_entry'} = $widgets->{'isbn_entry'};
		$forms->{'add_window'}{'isbn_entry'}->can_focus(1 );
		$forms->{'add_window'}{'isbn_entry'}->set_text(_('') );
		$forms->{'add_window'}{'isbn_entry'}->set_max_length(0 );
		$forms->{'add_window'}{'isbn_entry'}->set_visibility(1 );
		$forms->{'add_window'}{'isbn_entry'}->set_editable(1 );
		#
		# Construct a GtkEntry 'author_entry'
		$widgets->{'author_entry'} = new Gtk::Entry;
		$forms->{'add_window'}{'table1'}->attach($widgets->{'author_entry'}, 1, 2, 2, 3, ['expand', 'fill'], [], 0, 0 );
		$widgets->{'author_entry'}->show;
		$forms->{'add_window'}{'author_entry'} = $widgets->{'author_entry'};
		$forms->{'add_window'}{'author_entry'}->can_focus(1 );
		$forms->{'add_window'}{'author_entry'}->set_text(_('') );
		$forms->{'add_window'}{'author_entry'}->set_max_length(0 );
		$forms->{'add_window'}{'author_entry'}->set_visibility(1 );
		$forms->{'add_window'}{'author_entry'}->set_editable(1 );
		#
		# Construct a GtkEntry 'title_entry'
		$widgets->{'title_entry'} = new Gtk::Entry;
		$forms->{'add_window'}{'table1'}->attach($widgets->{'title_entry'}, 1, 2, 3, 4, ['expand', 'fill'], [], 0, 0 );
		$widgets->{'title_entry'}->show;
		$forms->{'add_window'}{'title_entry'} = $widgets->{'title_entry'};
		$forms->{'add_window'}{'title_entry'}->can_focus(1 );
		$forms->{'add_window'}{'title_entry'}->set_text(_('') );
		$forms->{'add_window'}{'title_entry'}->set_max_length(0 );
		$forms->{'add_window'}{'title_entry'}->set_visibility(1 );
		$forms->{'add_window'}{'title_entry'}->set_editable(1 );
		#
		# Construct a GtkLabel 'label9'
		$widgets->{'label9'} = new Gtk::Label(_('Title: '));
		$widgets->{'label9'}->set_justify('center' );
		$widgets->{'label9'}->set_line_wrap(0 );
		$forms->{'add_window'}{'table1'}->attach($widgets->{'label9'}, 0, 1, 3, 4, ['fill'], [], 0, 0 );
		$widgets->{'label9'}->show;
		$forms->{'add_window'}{'label9'} = $widgets->{'label9'};
		$forms->{'add_window'}{'label9'}->set_alignment(0.5, 0.5 );
		#
		# Construct a GtkLabel 'label31'
		$widgets->{'label31'} = new Gtk::Label(_('Category'));
		$widgets->{'label31'}->set_justify('center' );
		$widgets->{'label31'}->set_line_wrap(0 );
		$forms->{'add_window'}{'table1'}->attach($widgets->{'label31'}, 0, 1, 1, 2, ['fill'], [], 0, 0 );
		$widgets->{'label31'}->show;
		$forms->{'add_window'}{'label31'} = $widgets->{'label31'};
		$forms->{'add_window'}{'label31'}->set_alignment(0, 0.5 );
		#
		# Construct a GtkOptionMenu 'category_menu'
		$widgets->{'category_menu'} = new Gtk::OptionMenu;
		$forms->{'add_window'}{'table1'}->attach($widgets->{'category_menu'}, 1, 2, 1, 2, ['fill'], [], 0, 0 );
		$widgets->{'category_menu'}->show;
		$forms->{'add_window'}{'category_menu'} = $widgets->{'category_menu'};
		$forms->{'add_window'}{'category_menu'}->can_focus(1 );
		$widgets->{'category_menu_menu'} = new Gtk::Menu;
		$forms->{'add_window'}{'category_menu'}->set_menu($widgets->{'category_menu_menu'} );
		$forms->{'add_window'}{'category_menu_menu'} = $widgets->{'category_menu_menu'};
		$widgets->{'category_menu_item0'} = new Gtk::MenuItem('book' );
		    $forms->{'add_window'}{'category_menu_menu'}->append($widgets->{'category_menu_item0'} );
		    $widgets->{'category_menu_item0'}->show;
		    $forms->{'add_window'}{'category_menu_item0'} = $widgets->{'category_menu_item0'};
		$forms->{'add_window'}{'category_menu_item0'}->activate;
		$widgets->{'category_menu_item1'} = new Gtk::MenuItem('cd' );
		    $forms->{'add_window'}{'category_menu_menu'}->append($widgets->{'category_menu_item1'} );
		    $widgets->{'category_menu_item1'}->show;
		    $forms->{'add_window'}{'category_menu_item1'} = $widgets->{'category_menu_item1'};
		$widgets->{'category_menu_item2'} = new Gtk::MenuItem('laptop' );
		    $forms->{'add_window'}{'category_menu_menu'}->append($widgets->{'category_menu_item2'} );
		    $widgets->{'category_menu_item2'}->show;
		    $forms->{'add_window'}{'category_menu_item2'} = $widgets->{'category_menu_item2'};
		$forms->{'add_window'}{'category_menu'}->set_history( 0 );
	    $forms->{'add_window'}{'vbox3'}->set_child_packing($forms->{'add_window'}{'table1'}, 1, 1, 0, 'start' );
	    #
	    # Construct a GtkHButtonBox 'hbuttonbox1'
	    $widgets->{'hbuttonbox1'} = new Gtk::HButtonBox;
	    $forms->{'add_window'}{'vbox3'}->add($widgets->{'hbuttonbox1'} );
	    $widgets->{'hbuttonbox1'}->show;
	    $forms->{'add_window'}{'hbuttonbox1'} = $widgets->{'hbuttonbox1'};
	    $forms->{'add_window'}{'hbuttonbox1'}->set_layout('spread' );
	    $forms->{'add_window'}{'hbuttonbox1'}->set_spacing(30 );
	    $forms->{'add_window'}{'hbuttonbox1'}->set_child_size(85, 27 );
	    $forms->{'add_window'}{'hbuttonbox1'}->set_child_ipadding(7, 0 );
		#
		# Construct a GtkButton 'ok_button'
		$widgets->{'ok_button'} = new Gtk::Button(_('Ok'));
		$forms->{'add_window'}{'hbuttonbox1'}->add($widgets->{'ok_button'} );
		$widgets->{'ok_button'}->show;
		$forms->{'add_window'}{'ok_button'} = $widgets->{'ok_button'};
		$forms->{'add_window'}{'ok_button'}->can_default(1 );
		$forms->{'add_window'}{'ok_button'}->can_focus(1 );
		$forms->{'add_window'}{'ok_button'}->has_default(1 );
		$forms->{'add_window'}{'ok_button'}->grab_default;
		#
		# Construct a GtkButton 'cancel_button'
		$widgets->{'cancel_button'} = new Gtk::Button(_('Cancel'));
		$forms->{'add_window'}{'hbuttonbox1'}->add($widgets->{'cancel_button'} );
		$widgets->{'cancel_button'}->show;
		$forms->{'add_window'}{'cancel_button'} = $widgets->{'cancel_button'};
		$forms->{'add_window'}{'cancel_button'}->can_default(1 );
		$forms->{'add_window'}{'cancel_button'}->can_focus(1 );
	    $forms->{'add_window'}{'vbox3'}->set_child_packing($forms->{'add_window'}{'hbuttonbox1'}, 0, 0, 0, 'start' );
    #
    # Connect all signals now that widgets are constructed
    $forms->{'add_window'}{'ok_button'}->signal_connect('clicked', "$class\::do_add", '', 'ok_button', "add_window-$instance" );
    $forms->{'add_window'}{'cancel_button'}->signal_connect('clicked', "$class\::do_cancel", '', 'cancel_button', "add_window-$instance" );


    #
    # Return the constructed UI
    bless $self, $class;
    $self->FORM($forms->{'add_window'});
    $self->TOPLEVEL($self->FORM->{'add_window'});
    $self->FORM->{'TOPLEVEL'} = ($self->TOPLEVEL);
    $self->FORM->{'OBJECT'} = ($self);
    $self->INSTANCE("add_window-$instance");
    $self->CLASS_HIERARCHY($self->FORM->{'__CH'});
    $self->WIDGET_HIERARCHY($self->FORM->{'__WH'});
    $__PACKAGE__::all_forms->{$self->INSTANCE} = $self->FORM;
    
    return $self;
} # End of sub new









#==============================================================================
#=== This is the 'edit_window' class                              
#==============================================================================
package edit_window;
require 5.000; use strict 'vars', 'refs', 'subs';
# UI class 'edit_window' (version 0.01)
# 
# Copyright (c) Date Fri Nov 19 16:11:39 CST 2004
# Author Danil Lim <danil@brian.cs.wisc.edu>
#
# Unspecified copying policy, please contact the author
# Danil Lim <danil@brian.cs.wisc.edu>
#
#==============================================================================
# This perl source file was automatically generated by 
# Glade::PerlGenerate version 0.61 - Sun Nov 17 03:21:11 GMT 2002
# Copyright (c) Author Dermot Musgrove <dermot.musgrove@virgin.net>
#
# from Glade file /afs/cs.wisc.edu/u/d/a/danil/cvsstuff/library4/library.glade
# Fri Jun 24 15:14:44 CDT 2005
#==============================================================================

BEGIN {
    # Run-time utilities and vars
    use Glade::PerlRun; 
    # Existing signal handler modules
    use vars qw( 
                 @ISA
                 %fields
                 %stubs
                 $PACKAGE
                 $VERSION
                 $AUTHOR
                 $DATE
                 $AUTOLOAD
                 $permitted_fields
             );
    # Tell interpreter who we are inheriting from
    @ISA     = qw( Glade::PerlRun );
    $PACKAGE = 'Library';
    $VERSION = '0.01';
    $AUTHOR  = 'Danil Lim <danil@brian.cs.wisc.edu>';
    $DATE    = 'Fri Nov 19 16:11:39 CST 2004';
    $permitted_fields = '_permitted_fields';             
} # End of sub BEGIN

    $Glade::PerlRun::pixmaps_directory ||= '/afs/cs.wisc.edu/u/d/a/danil/cvsstuff/library4/pixmaps';

%fields = (
    # These are the data fields that you can set/get using the dynamic
    # calls provided by AUTOLOAD (and their initial values).
    # eg $class->FORM($new_value);      sets the value of FORM
    #    $current_value = $class->FORM; gets the current value of FORM
    TOPLEVEL => undef,
    FORM     => undef,
    PACKAGE  => 'Library',
    VERSION  => '0.01',
    AUTHOR   => 'Danil Lim <danil@brian.cs.wisc.edu>',
    DATE     => 'Fri Nov 19 16:11:39 CST 2004',
    INSTANCE => 'main_window',
    CLASS_HIERARCHY => undef,
    WIDGET_HIERARCHY => undef,
);

%stubs = (
    # These are signal handlers that will cause a message_box to be
    # displayed by AUTOLOAD if there is not already a sub of that name
    # in any module specified in 'use_modules'.

    'do_edit' => undef,
);

sub AUTOLOAD {
    my $self = shift;
    my $type = ref($self)
        or die "$self is not an object so we cannot '$AUTOLOAD'\n",
            "We were called from ".join(", ", caller)."\n\n";
    my $name = $AUTOLOAD;
    $name =~ s/.*://;       # strip fully-qualified portion

    if (exists $self->{$permitted_fields}{$name} ) {
        # This allows dynamic data methods - see hash fields above
        # eg $class->UI('new_value');
        # or $current_value = $class->UI;
        if (@_) {
            return $self->{$name} = shift;
        } else {
            return $self->{$name};
        }

    } elsif (exists $stubs{$name} ) {
        # This shows dynamic signal handler stub message_box - see hash stubs above
        __PACKAGE__->show_skeleton_message(
            $AUTOLOAD."\n ("._("AUTOLOADED by")." ".__PACKAGE__.")", 
            [$self, @_], 
            __PACKAGE__, 
            'Logo.xpm');
        
    } else {
        die "Can't access method `$name' in class $type\n".
            "We were called from ".join(", ", caller)."\n\n";

    }
} # End of sub AUTOLOAD

sub run {
    my ($class) = @_;
    $class->load_translations('Library');
    # You can use the line below to load a test .mo file before it is installed in 
    # the normal place (eg /usr/local/share/locale/en_US.UTF-8/LC_MESSAGES/Library.mo)
#    $class->load_translations('Library', 'test', undef, '/afs/cs.wisc.edu/u/d/a/danil/cvsstuff/library4/ppo/Library.mo');
    Gtk->init;
    my $window = $class->new;
    $window->TOPLEVEL->show;
    Gtk->main;
} # End of sub run

sub DESTROY {
    # This sub will be called on object destruction
} # End of sub DESTROY

sub new {
#
# This sub will create the UI window
    my $that  = shift;
    my $class = ref($that) || $that;
    my $self  = {
        $permitted_fields   => \%fields, %fields,
        _permitted_stubs    => \%stubs,  %stubs,
    };
    my ($forms, $widgets, $data, $work);
    my $instance = 1;
    # Get a unique toplevel widget structure
    while (defined $__PACKAGE__::all_forms->{"edit_window-$instance"}) {$instance++;}


    #
    # Construct a GtkWindow 'edit_window'
    $widgets->{'edit_window'} = new Gtk::Window;
    $widgets->{'edit_window'}->set_title(_('Edit book entry') );
    $widgets->{'edit_window'}->set_position('none' );
    $widgets->{'edit_window'}->set_policy(0, 1, 0 );
    $widgets->{'edit_window'}->set_modal(0 );
    $widgets->{'edit_window'}->realize;
    $forms->{'edit_window'}{'tooltips'} = new Gtk::Tooltips;
    $forms->{'edit_window'}{'accelgroup'} = new Gtk::AccelGroup;
    $forms->{'edit_window'}{'accelgroup'}->attach($widgets->{'edit_window'} );
    $forms->{'edit_window'}{'edit_window'} = $widgets->{'edit_window'};
	#
	# Construct a GtkTable 'table5'
	$widgets->{'table5'} = new Gtk::Table(7, 3, 0 );
	$widgets->{'table5'}->set_row_spacings(0 );
	$widgets->{'table5'}->set_col_spacings(0 );
	$forms->{'edit_window'}{'edit_window'}->add($widgets->{'table5'} );
	$widgets->{'table5'}->show;
	$forms->{'edit_window'}{'table5'} = $widgets->{'table5'};
	    #
	    # Construct a GtkLabel 'label46'
	    $widgets->{'label46'} = new Gtk::Label(_('Category'));
	    $widgets->{'label46'}->set_justify('center' );
	    $widgets->{'label46'}->set_line_wrap(0 );
	    $forms->{'edit_window'}{'table5'}->attach($widgets->{'label46'}, 0, 1, 1, 2, ['fill'], [], 0, 0 );
	    $widgets->{'label46'}->show;
	    $forms->{'edit_window'}{'label46'} = $widgets->{'label46'};
	    $forms->{'edit_window'}{'label46'}->set_alignment(0, 0.5 );
	    #
	    # Construct a GtkLabel 'label47'
	    $widgets->{'label47'} = new Gtk::Label(_('ISBN'));
	    $widgets->{'label47'}->set_justify('center' );
	    $widgets->{'label47'}->set_line_wrap(0 );
	    $forms->{'edit_window'}{'table5'}->attach($widgets->{'label47'}, 0, 1, 2, 3, ['fill'], [], 0, 0 );
	    $widgets->{'label47'}->show;
	    $forms->{'edit_window'}{'label47'} = $widgets->{'label47'};
	    $forms->{'edit_window'}{'label47'}->set_alignment(0, 0.5 );
	    #
	    # Construct a GtkLabel 'label48'
	    $widgets->{'label48'} = new Gtk::Label(_('Author'));
	    $widgets->{'label48'}->set_justify('center' );
	    $widgets->{'label48'}->set_line_wrap(0 );
	    $forms->{'edit_window'}{'table5'}->attach($widgets->{'label48'}, 0, 1, 3, 4, ['fill'], [], 0, 0 );
	    $widgets->{'label48'}->show;
	    $forms->{'edit_window'}{'label48'} = $widgets->{'label48'};
	    $forms->{'edit_window'}{'label48'}->set_alignment(0, 0.5 );
	    #
	    # Construct a GtkLabel 'label50'
	    $widgets->{'label50'} = new Gtk::Label(_('Title'));
	    $widgets->{'label50'}->set_justify('center' );
	    $widgets->{'label50'}->set_line_wrap(0 );
	    $forms->{'edit_window'}{'table5'}->attach($widgets->{'label50'}, 0, 1, 4, 5, ['fill'], [], 0, 0 );
	    $widgets->{'label50'}->show;
	    $forms->{'edit_window'}{'label50'} = $widgets->{'label50'};
	    $forms->{'edit_window'}{'label50'}->set_alignment(0, 0.5 );
	    #
	    # Construct a GtkEntry 'isbn_entry'
	    $widgets->{'isbn_entry'} = new Gtk::Entry;
	    $forms->{'edit_window'}{'table5'}->attach($widgets->{'isbn_entry'}, 2, 3, 2, 3, ['expand', 'fill'], [], 0, 0 );
	    $widgets->{'isbn_entry'}->show;
	    $forms->{'edit_window'}{'isbn_entry'} = $widgets->{'isbn_entry'};
	    $forms->{'edit_window'}{'isbn_entry'}->can_focus(1 );
	    $forms->{'edit_window'}{'isbn_entry'}->set_text(_('') );
	    $forms->{'edit_window'}{'isbn_entry'}->set_max_length(0 );
	    $forms->{'edit_window'}{'isbn_entry'}->set_visibility(1 );
	    $forms->{'edit_window'}{'isbn_entry'}->set_editable(1 );
	    #
	    # Construct a GtkEntry 'author_entry'
	    $widgets->{'author_entry'} = new Gtk::Entry;
	    $forms->{'edit_window'}{'table5'}->attach($widgets->{'author_entry'}, 2, 3, 3, 4, ['expand', 'fill'], [], 0, 0 );
	    $widgets->{'author_entry'}->show;
	    $forms->{'edit_window'}{'author_entry'} = $widgets->{'author_entry'};
	    $forms->{'edit_window'}{'author_entry'}->can_focus(1 );
	    $forms->{'edit_window'}{'author_entry'}->set_text(_('') );
	    $forms->{'edit_window'}{'author_entry'}->set_max_length(0 );
	    $forms->{'edit_window'}{'author_entry'}->set_visibility(1 );
	    $forms->{'edit_window'}{'author_entry'}->set_editable(1 );
	    #
	    # Construct a GtkEntry 'title_entry'
	    $widgets->{'title_entry'} = new Gtk::Entry;
	    $forms->{'edit_window'}{'table5'}->attach($widgets->{'title_entry'}, 2, 3, 4, 5, ['expand', 'fill'], [], 0, 0 );
	    $widgets->{'title_entry'}->show;
	    $forms->{'edit_window'}{'title_entry'} = $widgets->{'title_entry'};
	    $forms->{'edit_window'}{'title_entry'}->can_focus(1 );
	    $forms->{'edit_window'}{'title_entry'}->set_text(_('') );
	    $forms->{'edit_window'}{'title_entry'}->set_max_length(0 );
	    $forms->{'edit_window'}{'title_entry'}->set_visibility(1 );
	    $forms->{'edit_window'}{'title_entry'}->set_editable(1 );
	    #
	    # Construct a GtkOptionMenu 'category_menu'
	    $widgets->{'category_menu'} = new Gtk::OptionMenu;
	    $forms->{'edit_window'}{'table5'}->attach($widgets->{'category_menu'}, 2, 3, 1, 2, ['fill'], [], 0, 0 );
	    $widgets->{'category_menu'}->show;
	    $forms->{'edit_window'}{'category_menu'} = $widgets->{'category_menu'};
	    $forms->{'edit_window'}{'category_menu'}->can_focus(1 );
	    $widgets->{'category_menu_menu'} = new Gtk::Menu;
	    $forms->{'edit_window'}{'category_menu'}->set_menu($widgets->{'category_menu_menu'} );
	    $forms->{'edit_window'}{'category_menu_menu'} = $widgets->{'category_menu_menu'};
	    $widgets->{'category_menu_item0'} = new Gtk::MenuItem('book' );
		$forms->{'edit_window'}{'category_menu_menu'}->append($widgets->{'category_menu_item0'} );
		$widgets->{'category_menu_item0'}->show;
		$forms->{'edit_window'}{'category_menu_item0'} = $widgets->{'category_menu_item0'};
	    $forms->{'edit_window'}{'category_menu_item0'}->activate;
	    $widgets->{'category_menu_item1'} = new Gtk::MenuItem('cd' );
		$forms->{'edit_window'}{'category_menu_menu'}->append($widgets->{'category_menu_item1'} );
		$widgets->{'category_menu_item1'}->show;
		$forms->{'edit_window'}{'category_menu_item1'} = $widgets->{'category_menu_item1'};
	    $widgets->{'category_menu_item2'} = new Gtk::MenuItem('laptop' );
		$forms->{'edit_window'}{'category_menu_menu'}->append($widgets->{'category_menu_item2'} );
		$widgets->{'category_menu_item2'}->show;
		$forms->{'edit_window'}{'category_menu_item2'} = $widgets->{'category_menu_item2'};
	    $forms->{'edit_window'}{'category_menu'}->set_history( 0 );
	    #
	    # Construct a GtkLabel 'label52'
	    $widgets->{'label52'} = new Gtk::Label(_('New'));
	    $widgets->{'label52'}->set_justify('center' );
	    $widgets->{'label52'}->set_line_wrap(0 );
	    $forms->{'edit_window'}{'table5'}->attach($widgets->{'label52'}, 2, 3, 0, 1, ['fill'], [], 0, 0 );
	    $forms->{'edit_window'}{'label52'} = $widgets->{'label52'};
	    $forms->{'edit_window'}{'label52'}->set_sensitive(0);
	    $forms->{'edit_window'}{'label52'}->set_alignment(0, 0.5 );
	    #
	    # Construct a GtkEntry 'old_isbn_entry'
	    $widgets->{'old_isbn_entry'} = new Gtk::Entry;
	    $forms->{'edit_window'}{'table5'}->attach($widgets->{'old_isbn_entry'}, 1, 2, 2, 3, ['expand', 'fill'], [], 0, 0 );
	    $forms->{'edit_window'}{'old_isbn_entry'} = $widgets->{'old_isbn_entry'};
	    $forms->{'edit_window'}{'old_isbn_entry'}->set_sensitive(0);
	    $forms->{'edit_window'}{'old_isbn_entry'}->set_text(_('') );
	    $forms->{'edit_window'}{'old_isbn_entry'}->set_max_length(0 );
	    $forms->{'edit_window'}{'old_isbn_entry'}->set_visibility(1 );
	    $forms->{'edit_window'}{'old_isbn_entry'}->set_editable(0 );
	    #
	    # Construct a GtkLabel 'label53'
	    $widgets->{'label53'} = new Gtk::Label(_('Old'));
	    $widgets->{'label53'}->set_justify('center' );
	    $widgets->{'label53'}->set_line_wrap(0 );
	    $forms->{'edit_window'}{'table5'}->attach($widgets->{'label53'}, 1, 2, 0, 1, ['fill'], [], 0, 0 );
	    $forms->{'edit_window'}{'label53'} = $widgets->{'label53'};
	    $forms->{'edit_window'}{'label53'}->set_sensitive(0);
	    $forms->{'edit_window'}{'label53'}->set_alignment(0, 0.5 );
	    #
	    # Construct a GtkButton 'ok_button'
	    $widgets->{'ok_button'} = new Gtk::Button(_('Ok'));
	    $forms->{'edit_window'}{'table5'}->attach($widgets->{'ok_button'}, 2, 3, 6, 7, ['fill'], [], 0, 0 );
	    $widgets->{'ok_button'}->show;
	    $forms->{'edit_window'}{'ok_button'} = $widgets->{'ok_button'};
	    $forms->{'edit_window'}{'ok_button'}->can_focus(1 );
	    #
	    # Construct a GtkEntry 'copy_entry'
	    $widgets->{'copy_entry'} = new Gtk::Entry;
	    $forms->{'edit_window'}{'table5'}->attach($widgets->{'copy_entry'}, 2, 3, 5, 6, ['expand', 'fill'], [], 0, 0 );
	    $widgets->{'copy_entry'}->show;
	    $forms->{'edit_window'}{'copy_entry'} = $widgets->{'copy_entry'};
	    $forms->{'edit_window'}{'copy_entry'}->can_focus(1 );
	    $forms->{'edit_window'}{'copy_entry'}->set_text(_('') );
	    $forms->{'edit_window'}{'copy_entry'}->set_max_length(0 );
	    $forms->{'edit_window'}{'copy_entry'}->set_visibility(1 );
	    $forms->{'edit_window'}{'copy_entry'}->set_editable(1 );
	    #
	    # Construct a GtkLabel 'label54'
	    $widgets->{'label54'} = new Gtk::Label(_('Copy'));
	    $widgets->{'label54'}->set_justify('center' );
	    $widgets->{'label54'}->set_line_wrap(0 );
	    $forms->{'edit_window'}{'table5'}->attach($widgets->{'label54'}, 0, 1, 5, 6, ['fill'], [], 0, 0 );
	    $widgets->{'label54'}->show;
	    $forms->{'edit_window'}{'label54'} = $widgets->{'label54'};
	    $forms->{'edit_window'}{'label54'}->set_alignment(0, 0.5 );
    #
    # Connect all signals now that widgets are constructed
    $forms->{'edit_window'}{'ok_button'}->signal_connect('clicked', "$class\::do_edit", '', 'ok_button', "edit_window-$instance" );


    #
    # Return the constructed UI
    bless $self, $class;
    $self->FORM($forms->{'edit_window'});
    $self->TOPLEVEL($self->FORM->{'edit_window'});
    $self->FORM->{'TOPLEVEL'} = ($self->TOPLEVEL);
    $self->FORM->{'OBJECT'} = ($self);
    $self->INSTANCE("edit_window-$instance");
    $self->CLASS_HIERARCHY($self->FORM->{'__CH'});
    $self->WIDGET_HIERARCHY($self->FORM->{'__WH'});
    $__PACKAGE__::all_forms->{$self->INSTANCE} = $self->FORM;
    
    return $self;
} # End of sub new









#==============================================================================
#=== This is the 'main_window' class                              
#==============================================================================
package main_window;
require 5.000; use strict 'vars', 'refs', 'subs';
# UI class 'main_window' (version 0.01)
# 
# Copyright (c) Date Fri Nov 19 16:11:39 CST 2004
# Author Danil Lim <danil@brian.cs.wisc.edu>
#
# Unspecified copying policy, please contact the author
# Danil Lim <danil@brian.cs.wisc.edu>
#
#==============================================================================
# This perl source file was automatically generated by 
# Glade::PerlGenerate version 0.61 - Sun Nov 17 03:21:11 GMT 2002
# Copyright (c) Author Dermot Musgrove <dermot.musgrove@virgin.net>
#
# from Glade file /afs/cs.wisc.edu/u/d/a/danil/cvsstuff/library4/library.glade
# Fri Jun 24 15:14:44 CDT 2005
#==============================================================================

BEGIN {
    # Run-time utilities and vars
    use Glade::PerlRun; 
    # Existing signal handler modules
    use vars qw( 
                 @ISA
                 %fields
                 %stubs
                 $PACKAGE
                 $VERSION
                 $AUTHOR
                 $DATE
                 $AUTOLOAD
                 $permitted_fields
             );
    # Tell interpreter who we are inheriting from
    @ISA     = qw( Glade::PerlRun );
    $PACKAGE = 'Library';
    $VERSION = '0.01';
    $AUTHOR  = 'Danil Lim <danil@brian.cs.wisc.edu>';
    $DATE    = 'Fri Nov 19 16:11:39 CST 2004';
    $permitted_fields = '_permitted_fields';             
} # End of sub BEGIN

    $Glade::PerlRun::pixmaps_directory ||= '/afs/cs.wisc.edu/u/d/a/danil/cvsstuff/library4/pixmaps';

%fields = (
    # These are the data fields that you can set/get using the dynamic
    # calls provided by AUTOLOAD (and their initial values).
    # eg $class->FORM($new_value);      sets the value of FORM
    #    $current_value = $class->FORM; gets the current value of FORM
    TOPLEVEL => undef,
    FORM     => undef,
    PACKAGE  => 'Library',
    VERSION  => '0.01',
    AUTHOR   => 'Danil Lim <danil@brian.cs.wisc.edu>',
    DATE     => 'Fri Nov 19 16:11:39 CST 2004',
    INSTANCE => 'main_window',
    CLASS_HIERARCHY => undef,
    WIDGET_HIERARCHY => undef,
);

%stubs = (
    # These are signal handlers that will cause a message_box to be
    # displayed by AUTOLOAD if there is not already a sub of that name
    # in any module specified in 'use_modules'.

    'do_add' => undef,
    'do_admonish' => undef,
    'do_checkin' => undef,
    'do_checkout' => undef,
    'do_edit' => undef,
    'do_recall' => undef,
    'do_remove' => undef,
    'do_renew' => undef,
    'do_reserve' => undef,
    'do_select' => undef,
    'do_sort' => undef,
    'do_unadmonish' => undef,
    'on_book_label_button_press_event' => undef,
    'on_category_menu_clicked' => undef,
    'on_cd_label_button_press_event' => undef,
    'on_laptop_label_button_press_event' => undef,
    'on_search_button_clicked' => undef,
    'on_search_query_key_press_event' => undef,
    'on_show_all_button_clicked' => undef,
    'quit' => undef,
);

sub AUTOLOAD {
    my $self = shift;
    my $type = ref($self)
        or die "$self is not an object so we cannot '$AUTOLOAD'\n",
            "We were called from ".join(", ", caller)."\n\n";
    my $name = $AUTOLOAD;
    $name =~ s/.*://;       # strip fully-qualified portion

    if (exists $self->{$permitted_fields}{$name} ) {
        # This allows dynamic data methods - see hash fields above
        # eg $class->UI('new_value');
        # or $current_value = $class->UI;
        if (@_) {
            return $self->{$name} = shift;
        } else {
            return $self->{$name};
        }

    } elsif (exists $stubs{$name} ) {
        # This shows dynamic signal handler stub message_box - see hash stubs above
        __PACKAGE__->show_skeleton_message(
            $AUTOLOAD."\n ("._("AUTOLOADED by")." ".__PACKAGE__.")", 
            [$self, @_], 
            __PACKAGE__, 
            'Logo.xpm');
        
    } else {
        die "Can't access method `$name' in class $type\n".
            "We were called from ".join(", ", caller)."\n\n";

    }
} # End of sub AUTOLOAD

sub run {
    my ($class) = @_;
    $class->load_translations('Library');
    # You can use the line below to load a test .mo file before it is installed in 
    # the normal place (eg /usr/local/share/locale/en_US.UTF-8/LC_MESSAGES/Library.mo)
#    $class->load_translations('Library', 'test', undef, '/afs/cs.wisc.edu/u/d/a/danil/cvsstuff/library4/ppo/Library.mo');
    Gtk->init;
    my $window = $class->new;
    $window->TOPLEVEL->show;
    Gtk->main;
} # End of sub run

sub DESTROY {
    # This sub will be called on object destruction
} # End of sub DESTROY

sub new {
#
# This sub will create the UI window
    my $that  = shift;
    my $class = ref($that) || $that;
    my $self  = {
        $permitted_fields   => \%fields, %fields,
        _permitted_stubs    => \%stubs,  %stubs,
    };
    my ($forms, $widgets, $data, $work);
    my $instance = 1;
    # Get a unique toplevel widget structure
    while (defined $__PACKAGE__::all_forms->{"main_window-$instance"}) {$instance++;}


    #
    # Construct a GtkWindow 'main_window'
    $widgets->{'main_window'} = new Gtk::Window;
    $widgets->{'main_window'}->set_title(_('Library') );
    $widgets->{'main_window'}->set_position('none' );
    $widgets->{'main_window'}->set_policy(0, 1, 0 );
    $widgets->{'main_window'}->set_modal(0 );
    $widgets->{'main_window'}->set_usize(900, 250 );
    $widgets->{'main_window'}->realize;
    $forms->{'main_window'}{'tooltips'} = new Gtk::Tooltips;
    $forms->{'main_window'}{'accelgroup'} = new Gtk::AccelGroup;
    $forms->{'main_window'}{'accelgroup'}->attach($widgets->{'main_window'} );
    $forms->{'main_window'}{'main_window'} = $widgets->{'main_window'};
	#
	# Construct a GtkVBox 'vbox1'
	$widgets->{'vbox1'} = new Gtk::VBox(0, 5 );
	$forms->{'main_window'}{'main_window'}->add($widgets->{'vbox1'} );
	$widgets->{'vbox1'}->show;
	$forms->{'main_window'}{'vbox1'} = $widgets->{'vbox1'};
	    #
	    # Construct a GtkHandleBox 'handlebox1'
	    $widgets->{'handlebox1'} = new Gtk::HandleBox;
	    $widgets->{'handlebox1'}->set_handle_position('left' );
	    $widgets->{'handlebox1'}->set_shadow_type('out' );
	    $widgets->{'handlebox1'}->set_snap_edge('top' );
	    $forms->{'main_window'}{'vbox1'}->add($widgets->{'handlebox1'} );
	    $widgets->{'handlebox1'}->show;
	    $forms->{'main_window'}{'handlebox1'} = $widgets->{'handlebox1'};
	    $forms->{'main_window'}{'handlebox1'}->set_usize(0, 30 );
		#
		# Construct a GtkToolbar 'toolbar1'
		$widgets->{'toolbar1'} = new Gtk::Toolbar('horizontal', 'both' );
		$widgets->{'toolbar1'}->set_space_size(5 );
		$widgets->{'toolbar1'}->set_space_style('line' );
		$widgets->{'toolbar1'}->set_button_relief('none' );
		$widgets->{'toolbar1'}->set_tooltips(1 );
		$forms->{'main_window'}{'handlebox1'}->add($widgets->{'toolbar1'} );
		$widgets->{'toolbar1'}->show;
		$forms->{'main_window'}{'toolbar1'} = $widgets->{'toolbar1'};
		    #
		    # Construct a GtkButton 'checkout_button'
		    $widgets->{'checkout_button'} = $forms->{'main_window'}{'toolbar1'}->append_element('button', undef, _('Checkout'), _('Check out a book'), '', undef );
		    $widgets->{'checkout_button'}->show;
		    $forms->{'main_window'}{'checkout_button'} = $widgets->{'checkout_button'};
		    #
		    # Construct a GtkButton 'reserve_button'
		    $widgets->{'reserve_button'} = $forms->{'main_window'}{'toolbar1'}->append_element('button', undef, _('Reserve'), _('Reserve a book for the lab'), '', undef );
		    $widgets->{'reserve_button'}->show;
		    $forms->{'main_window'}{'reserve_button'} = $widgets->{'reserve_button'};
		    #
		    # Construct a GtkButton 'recall_button'
		    $widgets->{'recall_button'} = $forms->{'main_window'}{'toolbar1'}->append_element('button', undef, _('Recall'), _('Recall a book'), '', undef );
		    $widgets->{'recall_button'}->show;
		    $forms->{'main_window'}{'recall_button'} = $widgets->{'recall_button'};
		    #
		    # Construct a GtkButton 'renew_button'
		    $widgets->{'renew_button'} = $forms->{'main_window'}{'toolbar1'}->append_element('button', undef, _('Renew'), _('Renew a book'), '', undef );
		    $widgets->{'renew_button'}->show;
		    $forms->{'main_window'}{'renew_button'} = $widgets->{'renew_button'};
		    #
		    # Construct a GtkButton 'checkin_button'
		    $widgets->{'checkin_button'} = $forms->{'main_window'}{'toolbar1'}->append_element('button', undef, _('Checkin'), _('Check in a book'), '', undef );
		    $widgets->{'checkin_button'}->show;
		    $forms->{'main_window'}{'checkin_button'} = $widgets->{'checkin_button'};
		    #
		    # Construct a GtkButton 'add_button'
		    $forms->{'main_window'}{'toolbar1'}->append_space;
		    $widgets->{'add_button'} = $forms->{'main_window'}{'toolbar1'}->append_element('button', undef, _('Add Book'), _('Add a book'), '', undef );
		    $widgets->{'add_button'}->show;
		    $forms->{'main_window'}{'add_button'} = $widgets->{'add_button'};
		    #
		    # Construct a GtkButton 'remove_button'
		    $widgets->{'remove_button'} = $forms->{'main_window'}{'toolbar1'}->append_element('button', undef, _('Remove Book'), _('Remove a book'), '', undef );
		    $widgets->{'remove_button'}->show;
		    $forms->{'main_window'}{'remove_button'} = $widgets->{'remove_button'};
		    #
		    # Construct a GtkButton 'edit_button'
		    $widgets->{'edit_button'} = $forms->{'main_window'}{'toolbar1'}->append_element('button', undef, _('Edit Book'), _(''), '', undef );
		    $widgets->{'edit_button'}->show;
		    $forms->{'main_window'}{'edit_button'} = $widgets->{'edit_button'};
		    #
		    # Construct a GtkButton 'admonish_button'
		    $forms->{'main_window'}{'toolbar1'}->append_space;
		    $widgets->{'admonish_button'} = $forms->{'main_window'}{'toolbar1'}->append_element('button', undef, _('Admonish'), _('Admonish a user'), '', undef );
		    $widgets->{'admonish_button'}->show;
		    $forms->{'main_window'}{'admonish_button'} = $widgets->{'admonish_button'};
		    #
		    # Construct a GtkButton 'unadmonish_button'
		    $widgets->{'unadmonish_button'} = $forms->{'main_window'}{'toolbar1'}->append_element('button', undef, _('Unadmonish'), _('Unadmonish a user'), '', undef );
		    $widgets->{'unadmonish_button'}->show;
		    $forms->{'main_window'}{'unadmonish_button'} = $widgets->{'unadmonish_button'};
	    $forms->{'main_window'}{'vbox1'}->set_child_packing($forms->{'main_window'}{'handlebox1'}, 0, 0, 0, 'start' );
	    #
	    # Construct a GtkHBox 'hbox1'
	    $widgets->{'hbox1'} = new Gtk::HBox(0, 0 );
	    $forms->{'main_window'}{'vbox1'}->add($widgets->{'hbox1'} );
	    $widgets->{'hbox1'}->show;
	    $forms->{'main_window'}{'hbox1'} = $widgets->{'hbox1'};
		#
		# Construct a GtkVBox 'vbox6'
		$widgets->{'vbox6'} = new Gtk::VBox(0, 0 );
		$forms->{'main_window'}{'hbox1'}->add($widgets->{'vbox6'} );
		$widgets->{'vbox6'}->show;
		$forms->{'main_window'}{'vbox6'} = $widgets->{'vbox6'};
		    #
		    # Construct a GtkLabel 'label13'
		    $widgets->{'label13'} = new Gtk::Label(_('Search by'));
		    $widgets->{'label13'}->set_justify('center' );
		    $widgets->{'label13'}->set_line_wrap(0 );
		    $forms->{'main_window'}{'vbox6'}->add($widgets->{'label13'} );
		    $widgets->{'label13'}->show;
		    $forms->{'main_window'}{'label13'} = $widgets->{'label13'};
		    $forms->{'main_window'}{'label13'}->set_alignment(0.5, 0.5 );
		    $forms->{'main_window'}{'vbox6'}->set_child_packing($forms->{'main_window'}{'label13'}, 0, 0, 0, 'start' );
		    #
		    # Construct a GtkOptionMenu 'category_menu'
		    $widgets->{'category_menu'} = new Gtk::OptionMenu;
		    $forms->{'main_window'}{'vbox6'}->add($widgets->{'category_menu'} );
		    $widgets->{'category_menu'}->show;
		    $forms->{'main_window'}{'category_menu'} = $widgets->{'category_menu'};
		    $forms->{'main_window'}{'category_menu'}->can_focus(1 );
		    $widgets->{'category_menu_menu'} = new Gtk::Menu;
		    $forms->{'main_window'}{'category_menu'}->set_menu($widgets->{'category_menu_menu'} );
		    $forms->{'main_window'}{'category_menu_menu'} = $widgets->{'category_menu_menu'};
		    $widgets->{'category_menu_item0'} = new Gtk::MenuItem('ISBN' );
			$forms->{'main_window'}{'category_menu_menu'}->append($widgets->{'category_menu_item0'} );
			$widgets->{'category_menu_item0'}->show;
			$forms->{'main_window'}{'category_menu_item0'} = $widgets->{'category_menu_item0'};
		    $forms->{'main_window'}{'category_menu_item0'}->activate;
		    $widgets->{'category_menu_item1'} = new Gtk::MenuItem('Title' );
			$forms->{'main_window'}{'category_menu_menu'}->append($widgets->{'category_menu_item1'} );
			$widgets->{'category_menu_item1'}->show;
			$forms->{'main_window'}{'category_menu_item1'} = $widgets->{'category_menu_item1'};
		    $widgets->{'category_menu_item2'} = new Gtk::MenuItem('Author' );
			$forms->{'main_window'}{'category_menu_menu'}->append($widgets->{'category_menu_item2'} );
			$widgets->{'category_menu_item2'}->show;
			$forms->{'main_window'}{'category_menu_item2'} = $widgets->{'category_menu_item2'};
		    $widgets->{'category_menu_item3'} = new Gtk::MenuItem('Usr' );
			$forms->{'main_window'}{'category_menu_menu'}->append($widgets->{'category_menu_item3'} );
			$widgets->{'category_menu_item3'}->show;
			$forms->{'main_window'}{'category_menu_item3'} = $widgets->{'category_menu_item3'};
		    $forms->{'main_window'}{'category_menu'}->set_history( 0 );
		    $forms->{'main_window'}{'vbox6'}->set_child_packing($forms->{'main_window'}{'category_menu'}, 0, 0, 0, 'start' );
		    #
		    # Construct a GtkLabel 'label14'
		    $widgets->{'label14'} = new Gtk::Label(_('Search terms'));
		    $widgets->{'label14'}->set_justify('center' );
		    $widgets->{'label14'}->set_line_wrap(0 );
		    $forms->{'main_window'}{'vbox6'}->add($widgets->{'label14'} );
		    $widgets->{'label14'}->show;
		    $forms->{'main_window'}{'label14'} = $widgets->{'label14'};
		    $forms->{'main_window'}{'label14'}->set_alignment(0.5, 0.5 );
		    $forms->{'main_window'}{'vbox6'}->set_child_packing($forms->{'main_window'}{'label14'}, 0, 0, 0, 'start' );
		    #
		    # Construct a GtkEntry 'search_query'
		    $widgets->{'search_query'} = new Gtk::Entry;
		    $forms->{'main_window'}{'vbox6'}->add($widgets->{'search_query'} );
		    $widgets->{'search_query'}->show;
		    $forms->{'main_window'}{'search_query'} = $widgets->{'search_query'};
		    $forms->{'main_window'}{'search_query'}->can_focus(1 );
		    $forms->{'main_window'}{'search_query'}->set_text(_('') );
		    $forms->{'main_window'}{'search_query'}->set_max_length(0 );
		    $forms->{'main_window'}{'search_query'}->set_visibility(1 );
		    $forms->{'main_window'}{'search_query'}->set_editable(1 );
		    $forms->{'main_window'}{'vbox6'}->set_child_packing($forms->{'main_window'}{'search_query'}, 0, 0, 0, 'start' );
		    #
		    # Construct a GtkButton 'search_button'
		    $widgets->{'search_button'} = new Gtk::Button(_('Search'));
		    $forms->{'main_window'}{'vbox6'}->add($widgets->{'search_button'} );
		    $widgets->{'search_button'}->show;
		    $forms->{'main_window'}{'search_button'} = $widgets->{'search_button'};
		    $forms->{'main_window'}{'search_button'}->can_focus(1 );
		    $forms->{'main_window'}{'vbox6'}->set_child_packing($forms->{'main_window'}{'search_button'}, 0, 0, 0, 'start' );
		    #
		    # Construct a GtkButton 'show_all_button'
		    $widgets->{'show_all_button'} = new Gtk::Button(_('Show All'));
		    $forms->{'main_window'}{'vbox6'}->add($widgets->{'show_all_button'} );
		    $widgets->{'show_all_button'}->show;
		    $forms->{'main_window'}{'show_all_button'} = $widgets->{'show_all_button'};
		    $forms->{'main_window'}{'show_all_button'}->can_focus(1 );
		    $forms->{'main_window'}{'vbox6'}->set_child_packing($forms->{'main_window'}{'show_all_button'}, 0, 0, 0, 'start' );
		$forms->{'main_window'}{'hbox1'}->set_child_packing($forms->{'main_window'}{'vbox6'}, 0, 1, 0, 'start' );
		#
		# Construct a GtkNotebook 'notebook1'
		$widgets->{'notebook1'} = new Gtk::Notebook;
		$forms->{'main_window'}{'hbox1'}->add($widgets->{'notebook1'} );
		$widgets->{'notebook1'}->show;
		$forms->{'main_window'}{'notebook1'} = $widgets->{'notebook1'};
		$forms->{'main_window'}{'notebook1'}->can_focus(1 );
		$forms->{'main_window'}{'notebook1'}->set_tab_pos('top' );
		$forms->{'main_window'}{'notebook1'}->set_show_tabs(1 );
		$forms->{'main_window'}{'notebook1'}->set_show_border(1 );
		$forms->{'main_window'}{'notebook1'}->set_scrollable(0 );
		$forms->{'main_window'}{'notebook1'}->set_tab_hborder(2 );
		$forms->{'main_window'}{'notebook1'}->set_tab_vborder(2 );
		    #
		    # Construct a GtkScrolledWindow 'scrolledwindow1'
		    $widgets->{'scrolledwindow1'} = new Gtk::ScrolledWindow( undef, undef);
		    $widgets->{'scrolledwindow1'}->set_policy('automatic', 'always' );
		    $widgets->{'scrolledwindow1'}->border_width(0 );
		    $widgets->{'scrolledwindow1'}->hscrollbar->set_update_policy('continuous' );
		    $widgets->{'scrolledwindow1'}->vscrollbar->set_update_policy('continuous' );
		    $widgets->{'scrolledwindow1'}->show;
		    $forms->{'main_window'}{'scrolledwindow1'} = $widgets->{'scrolledwindow1'};
			#
			# Construct a GtkViewport 'viewport1'
			$widgets->{'viewport1'} = new Gtk::Viewport(new Gtk::Adjustment( 0.0, 0.0, 101.0, 0.1, 1.0, 1.0), new Gtk::Adjustment( 0.0, 0.0, 101.0, 0.1, 1.0, 1.0) );
			$widgets->{'viewport1'}->set_shadow_type('in' );
			$forms->{'main_window'}{'scrolledwindow1'}->add_with_viewport($widgets->{'viewport1'} );
			$widgets->{'viewport1'}->show;
			$forms->{'main_window'}{'viewport1'} = $widgets->{'viewport1'};
			    #
			    # Construct a GtkCList 'book_list'
			    $widgets->{'book_list'} = new Gtk::CList(6 );
			    $widgets->{'book_list'}->set_selection_mode('single' );
			    $widgets->{'book_list'}->set_border('in' );
			    $widgets->{'book_list'}->column_titles_show;
			    $widgets->{'book_list'}->set_column_width(0, 106 );
			    $widgets->{'book_list'}->set_column_width(1, 183 );
			    $widgets->{'book_list'}->set_column_width(2, 131 );
			    $widgets->{'book_list'}->set_column_width(3, 80 );
			    $widgets->{'book_list'}->set_column_width(4, 69 );
			    $widgets->{'book_list'}->set_column_width(5, 81 );
			    $forms->{'main_window'}{'viewport1'}->add($widgets->{'book_list'} );
			    $widgets->{'book_list'}->show;
			    $forms->{'main_window'}{'book_list'} = $widgets->{'book_list'};
			    $forms->{'main_window'}{'book_list'}->can_focus(1 );
				#
				# Construct a GtkLabel 'label1'
				$widgets->{'label1'} = new Gtk::Label(_('ISBN'));
				$widgets->{'label1'}->set_justify('center' );
				$widgets->{'label1'}->set_line_wrap(0 );
				$forms->{'main_window'}{'book_list'}->set_column_widget(0, $widgets->{'label1'} );
				$widgets->{'label1'}->show;
				$forms->{'main_window'}{'label1'} = $widgets->{'label1'};
				$forms->{'main_window'}{'label1'}->set_alignment(0.5, 0.5 );
				#
				# Construct a GtkLabel 'label2'
				$widgets->{'label2'} = new Gtk::Label(_('Title'));
				$widgets->{'label2'}->set_justify('center' );
				$widgets->{'label2'}->set_line_wrap(0 );
				$forms->{'main_window'}{'book_list'}->set_column_widget(1, $widgets->{'label2'} );
				$widgets->{'label2'}->show;
				$forms->{'main_window'}{'label2'} = $widgets->{'label2'};
				$forms->{'main_window'}{'label2'}->set_alignment(0.5, 0.5 );
				#
				# Construct a GtkLabel 'label3'
				$widgets->{'label3'} = new Gtk::Label(_('Author'));
				$widgets->{'label3'}->set_justify('center' );
				$widgets->{'label3'}->set_line_wrap(0 );
				$forms->{'main_window'}{'book_list'}->set_column_widget(2, $widgets->{'label3'} );
				$widgets->{'label3'}->show;
				$forms->{'main_window'}{'label3'} = $widgets->{'label3'};
				$forms->{'main_window'}{'label3'}->set_alignment(0.5, 0.5 );
				#
				# Construct a GtkLabel 'label4'
				$widgets->{'label4'} = new Gtk::Label(_('Status'));
				$widgets->{'label4'}->set_justify('center' );
				$widgets->{'label4'}->set_line_wrap(0 );
				$forms->{'main_window'}{'book_list'}->set_column_widget(3, $widgets->{'label4'} );
				$widgets->{'label4'}->show;
				$forms->{'main_window'}{'label4'} = $widgets->{'label4'};
				$forms->{'main_window'}{'label4'}->set_alignment(0.5, 0.5 );
				#
				# Construct a GtkLabel 'label5'
				$widgets->{'label5'} = new Gtk::Label(_('User'));
				$widgets->{'label5'}->set_justify('center' );
				$widgets->{'label5'}->set_line_wrap(0 );
				$forms->{'main_window'}{'book_list'}->set_column_widget(4, $widgets->{'label5'} );
				$widgets->{'label5'}->show;
				$forms->{'main_window'}{'label5'} = $widgets->{'label5'};
				$forms->{'main_window'}{'label5'}->set_alignment(0.5, 0.5 );
				#
				# Construct a GtkLabel 'label6'
				$widgets->{'label6'} = new Gtk::Label(_('Due'));
				$widgets->{'label6'}->set_justify('center' );
				$widgets->{'label6'}->set_line_wrap(0 );
				$forms->{'main_window'}{'book_list'}->set_column_widget(5, $widgets->{'label6'} );
				$widgets->{'label6'}->show;
				$forms->{'main_window'}{'label6'} = $widgets->{'label6'};
				$forms->{'main_window'}{'label6'}->set_alignment(0.5, 0.5 );
		    #
		    # Construct a GtkLabel 'book_label'
		    $widgets->{'book_label'} = new Gtk::Label(_('book'));
		    $widgets->{'book_label'}->set_justify('center' );
		    $widgets->{'book_label'}->set_line_wrap(0 );
		    $forms->{'main_window'}{'notebook1'}->append_page($forms->{'main_window'}{'scrolledwindow1'}, $widgets->{'book_label'} );
		    $widgets->{'book_label'}->show;
		    $forms->{'main_window'}{'book_label'} = $widgets->{'book_label'};
		    $forms->{'main_window'}{'book_label'}->set_alignment(0.5, 0.5 );
		    #
		    # Construct a GtkScrolledWindow 'scrolledwindow2'
		    $widgets->{'scrolledwindow2'} = new Gtk::ScrolledWindow( undef, undef);
		    $widgets->{'scrolledwindow2'}->set_policy('automatic', 'always' );
		    $widgets->{'scrolledwindow2'}->border_width(0 );
		    $widgets->{'scrolledwindow2'}->hscrollbar->set_update_policy('continuous' );
		    $widgets->{'scrolledwindow2'}->vscrollbar->set_update_policy('continuous' );
		    $widgets->{'scrolledwindow2'}->show;
		    $forms->{'main_window'}{'scrolledwindow2'} = $widgets->{'scrolledwindow2'};
			#
			# Construct a GtkViewport 'viewport2'
			$widgets->{'viewport2'} = new Gtk::Viewport(new Gtk::Adjustment( 0.0, 0.0, 101.0, 0.1, 1.0, 1.0), new Gtk::Adjustment( 0.0, 0.0, 101.0, 0.1, 1.0, 1.0) );
			$widgets->{'viewport2'}->set_shadow_type('in' );
			$forms->{'main_window'}{'scrolledwindow2'}->add_with_viewport($widgets->{'viewport2'} );
			$widgets->{'viewport2'}->show;
			$forms->{'main_window'}{'viewport2'} = $widgets->{'viewport2'};
			    #
			    # Construct a GtkCList 'cd_list'
			    $widgets->{'cd_list'} = new Gtk::CList(6 );
			    $widgets->{'cd_list'}->set_selection_mode('single' );
			    $widgets->{'cd_list'}->set_border('in' );
			    $widgets->{'cd_list'}->column_titles_show;
			    $widgets->{'cd_list'}->set_column_width(0, 106 );
			    $widgets->{'cd_list'}->set_column_width(1, 183 );
			    $widgets->{'cd_list'}->set_column_width(2, 131 );
			    $widgets->{'cd_list'}->set_column_width(3, 80 );
			    $widgets->{'cd_list'}->set_column_width(4, 71 );
			    $widgets->{'cd_list'}->set_column_width(5, 81 );
			    $forms->{'main_window'}{'viewport2'}->add($widgets->{'cd_list'} );
			    $widgets->{'cd_list'}->show;
			    $forms->{'main_window'}{'cd_list'} = $widgets->{'cd_list'};
			    $forms->{'main_window'}{'cd_list'}->can_focus(1 );
				#
				# Construct a GtkLabel 'label19'
				$widgets->{'label19'} = new Gtk::Label(_('ISBN'));
				$widgets->{'label19'}->set_justify('center' );
				$widgets->{'label19'}->set_line_wrap(0 );
				$forms->{'main_window'}{'cd_list'}->set_column_widget(0, $widgets->{'label19'} );
				$widgets->{'label19'}->show;
				$forms->{'main_window'}{'label19'} = $widgets->{'label19'};
				$forms->{'main_window'}{'label19'}->set_alignment(0.5, 0.5 );
				#
				# Construct a GtkLabel 'label20'
				$widgets->{'label20'} = new Gtk::Label(_('Title'));
				$widgets->{'label20'}->set_justify('center' );
				$widgets->{'label20'}->set_line_wrap(0 );
				$forms->{'main_window'}{'cd_list'}->set_column_widget(1, $widgets->{'label20'} );
				$widgets->{'label20'}->show;
				$forms->{'main_window'}{'label20'} = $widgets->{'label20'};
				$forms->{'main_window'}{'label20'}->set_alignment(0.5, 0.5 );
				#
				# Construct a GtkLabel 'label21'
				$widgets->{'label21'} = new Gtk::Label(_('Author'));
				$widgets->{'label21'}->set_justify('center' );
				$widgets->{'label21'}->set_line_wrap(0 );
				$forms->{'main_window'}{'cd_list'}->set_column_widget(2, $widgets->{'label21'} );
				$widgets->{'label21'}->show;
				$forms->{'main_window'}{'label21'} = $widgets->{'label21'};
				$forms->{'main_window'}{'label21'}->set_alignment(0.5, 0.5 );
				#
				# Construct a GtkLabel 'label22'
				$widgets->{'label22'} = new Gtk::Label(_('Status'));
				$widgets->{'label22'}->set_justify('center' );
				$widgets->{'label22'}->set_line_wrap(0 );
				$forms->{'main_window'}{'cd_list'}->set_column_widget(3, $widgets->{'label22'} );
				$widgets->{'label22'}->show;
				$forms->{'main_window'}{'label22'} = $widgets->{'label22'};
				$forms->{'main_window'}{'label22'}->set_alignment(0.5, 0.5 );
				#
				# Construct a GtkLabel 'label23'
				$widgets->{'label23'} = new Gtk::Label(_('User'));
				$widgets->{'label23'}->set_justify('center' );
				$widgets->{'label23'}->set_line_wrap(0 );
				$forms->{'main_window'}{'cd_list'}->set_column_widget(4, $widgets->{'label23'} );
				$widgets->{'label23'}->show;
				$forms->{'main_window'}{'label23'} = $widgets->{'label23'};
				$forms->{'main_window'}{'label23'}->set_alignment(0.5, 0.5 );
				#
				# Construct a GtkLabel 'label24'
				$widgets->{'label24'} = new Gtk::Label(_('Due'));
				$widgets->{'label24'}->set_justify('center' );
				$widgets->{'label24'}->set_line_wrap(0 );
				$forms->{'main_window'}{'cd_list'}->set_column_widget(5, $widgets->{'label24'} );
				$widgets->{'label24'}->show;
				$forms->{'main_window'}{'label24'} = $widgets->{'label24'};
				$forms->{'main_window'}{'label24'}->set_alignment(0.5, 0.5 );
		    #
		    # Construct a GtkLabel 'cd_label'
		    $widgets->{'cd_label'} = new Gtk::Label(_('cd'));
		    $widgets->{'cd_label'}->set_justify('center' );
		    $widgets->{'cd_label'}->set_line_wrap(0 );
		    $forms->{'main_window'}{'notebook1'}->append_page($forms->{'main_window'}{'scrolledwindow2'}, $widgets->{'cd_label'} );
		    $widgets->{'cd_label'}->show;
		    $forms->{'main_window'}{'cd_label'} = $widgets->{'cd_label'};
		    $forms->{'main_window'}{'cd_label'}->set_alignment(0.5, 0.5 );
		    #
		    # Construct a GtkScrolledWindow 'scrolledwindow3'
		    $widgets->{'scrolledwindow3'} = new Gtk::ScrolledWindow( undef, undef);
		    $widgets->{'scrolledwindow3'}->set_policy('automatic', 'always' );
		    $widgets->{'scrolledwindow3'}->border_width(0 );
		    $widgets->{'scrolledwindow3'}->hscrollbar->set_update_policy('continuous' );
		    $widgets->{'scrolledwindow3'}->vscrollbar->set_update_policy('continuous' );
		    $widgets->{'scrolledwindow3'}->show;
		    $forms->{'main_window'}{'scrolledwindow3'} = $widgets->{'scrolledwindow3'};
			#
			# Construct a GtkViewport 'viewport3'
			$widgets->{'viewport3'} = new Gtk::Viewport(new Gtk::Adjustment( 0.0, 0.0, 101.0, 0.1, 1.0, 1.0), new Gtk::Adjustment( 0.0, 0.0, 101.0, 0.1, 1.0, 1.0) );
			$widgets->{'viewport3'}->set_shadow_type('in' );
			$forms->{'main_window'}{'scrolledwindow3'}->add_with_viewport($widgets->{'viewport3'} );
			$widgets->{'viewport3'}->show;
			$forms->{'main_window'}{'viewport3'} = $widgets->{'viewport3'};
			    #
			    # Construct a GtkCList 'laptop_list'
			    $widgets->{'laptop_list'} = new Gtk::CList(6 );
			    $widgets->{'laptop_list'}->set_selection_mode('single' );
			    $widgets->{'laptop_list'}->set_border('in' );
			    $widgets->{'laptop_list'}->column_titles_show;
			    $widgets->{'laptop_list'}->set_column_width(0, 106 );
			    $widgets->{'laptop_list'}->set_column_width(1, 183 );
			    $widgets->{'laptop_list'}->set_column_width(2, 131 );
			    $widgets->{'laptop_list'}->set_column_width(3, 80 );
			    $widgets->{'laptop_list'}->set_column_width(4, 71 );
			    $widgets->{'laptop_list'}->set_column_width(5, 81 );
			    $forms->{'main_window'}{'viewport3'}->add($widgets->{'laptop_list'} );
			    $widgets->{'laptop_list'}->show;
			    $forms->{'main_window'}{'laptop_list'} = $widgets->{'laptop_list'};
			    $forms->{'main_window'}{'laptop_list'}->can_focus(1 );
				#
				# Construct a GtkLabel 'label25'
				$widgets->{'label25'} = new Gtk::Label(_('ISBN'));
				$widgets->{'label25'}->set_justify('center' );
				$widgets->{'label25'}->set_line_wrap(0 );
				$forms->{'main_window'}{'laptop_list'}->set_column_widget(0, $widgets->{'label25'} );
				$widgets->{'label25'}->show;
				$forms->{'main_window'}{'label25'} = $widgets->{'label25'};
				$forms->{'main_window'}{'label25'}->set_alignment(0.5, 0.5 );
				#
				# Construct a GtkLabel 'label26'
				$widgets->{'label26'} = new Gtk::Label(_('Title'));
				$widgets->{'label26'}->set_justify('center' );
				$widgets->{'label26'}->set_line_wrap(0 );
				$forms->{'main_window'}{'laptop_list'}->set_column_widget(1, $widgets->{'label26'} );
				$widgets->{'label26'}->show;
				$forms->{'main_window'}{'label26'} = $widgets->{'label26'};
				$forms->{'main_window'}{'label26'}->set_alignment(0.5, 0.5 );
				#
				# Construct a GtkLabel 'label27'
				$widgets->{'label27'} = new Gtk::Label(_('Author'));
				$widgets->{'label27'}->set_justify('center' );
				$widgets->{'label27'}->set_line_wrap(0 );
				$forms->{'main_window'}{'laptop_list'}->set_column_widget(2, $widgets->{'label27'} );
				$widgets->{'label27'}->show;
				$forms->{'main_window'}{'label27'} = $widgets->{'label27'};
				$forms->{'main_window'}{'label27'}->set_alignment(0.5, 0.5 );
				#
				# Construct a GtkLabel 'label28'
				$widgets->{'label28'} = new Gtk::Label(_('Status'));
				$widgets->{'label28'}->set_justify('center' );
				$widgets->{'label28'}->set_line_wrap(0 );
				$forms->{'main_window'}{'laptop_list'}->set_column_widget(3, $widgets->{'label28'} );
				$widgets->{'label28'}->show;
				$forms->{'main_window'}{'label28'} = $widgets->{'label28'};
				$forms->{'main_window'}{'label28'}->set_alignment(0.5, 0.5 );
				#
				# Construct a GtkLabel 'label29'
				$widgets->{'label29'} = new Gtk::Label(_('User'));
				$widgets->{'label29'}->set_justify('center' );
				$widgets->{'label29'}->set_line_wrap(0 );
				$forms->{'main_window'}{'laptop_list'}->set_column_widget(4, $widgets->{'label29'} );
				$widgets->{'label29'}->show;
				$forms->{'main_window'}{'label29'} = $widgets->{'label29'};
				$forms->{'main_window'}{'label29'}->set_alignment(0.5, 0.5 );
				#
				# Construct a GtkLabel 'label30'
				$widgets->{'label30'} = new Gtk::Label(_('Due'));
				$widgets->{'label30'}->set_justify('center' );
				$widgets->{'label30'}->set_line_wrap(0 );
				$forms->{'main_window'}{'laptop_list'}->set_column_widget(5, $widgets->{'label30'} );
				$widgets->{'label30'}->show;
				$forms->{'main_window'}{'label30'} = $widgets->{'label30'};
				$forms->{'main_window'}{'label30'}->set_alignment(0.5, 0.5 );
		    #
		    # Construct a GtkLabel 'laptop_label'
		    $widgets->{'laptop_label'} = new Gtk::Label(_('laptop'));
		    $widgets->{'laptop_label'}->set_justify('center' );
		    $widgets->{'laptop_label'}->set_line_wrap(0 );
		    $forms->{'main_window'}{'notebook1'}->append_page($forms->{'main_window'}{'scrolledwindow3'}, $widgets->{'laptop_label'} );
		    $widgets->{'laptop_label'}->show;
		    $forms->{'main_window'}{'laptop_label'} = $widgets->{'laptop_label'};
		    $forms->{'main_window'}{'laptop_label'}->set_alignment(0.5, 0.5 );
		$forms->{'main_window'}{'hbox1'}->set_child_packing($forms->{'main_window'}{'notebook1'}, 1, 1, 0, 'start' );
	    $forms->{'main_window'}{'vbox1'}->set_child_packing($forms->{'main_window'}{'hbox1'}, 1, 1, 0, 'start' );
	    #
	    # Construct a GtkHButtonBox 'hbuttonbox4'
	    $widgets->{'hbuttonbox4'} = new Gtk::HButtonBox;
	    $forms->{'main_window'}{'vbox1'}->add($widgets->{'hbuttonbox4'} );
	    $widgets->{'hbuttonbox4'}->show;
	    $forms->{'main_window'}{'hbuttonbox4'} = $widgets->{'hbuttonbox4'};
	    $forms->{'main_window'}{'hbuttonbox4'}->set_layout('default_style' );
	    $forms->{'main_window'}{'hbuttonbox4'}->set_spacing(30 );
	    $forms->{'main_window'}{'hbuttonbox4'}->set_child_size(85, 27 );
	    $forms->{'main_window'}{'hbuttonbox4'}->set_child_ipadding(7, 0 );
		#
		# Construct a GtkButton 'quit_button'
		$widgets->{'quit_button'} = new Gtk::Button(_('Quit'));
		$forms->{'main_window'}{'hbuttonbox4'}->add($widgets->{'quit_button'} );
		$widgets->{'quit_button'}->show;
		$forms->{'main_window'}{'quit_button'} = $widgets->{'quit_button'};
		$forms->{'main_window'}{'quit_button'}->can_default(1 );
		$forms->{'main_window'}{'quit_button'}->can_focus(1 );
	    $forms->{'main_window'}{'vbox1'}->set_child_packing($forms->{'main_window'}{'hbuttonbox4'}, 0, 0, 0, 'start' );
    #
    # Connect all signals now that widgets are constructed
    $forms->{'main_window'}{'main_window'}->signal_connect('destroy', "$class\::quit", '', 'main_window', "main_window-$instance" );
    $forms->{'main_window'}{'checkout_button'}->signal_connect('clicked', "$class\::do_checkout", '', 'checkout_button', "main_window-$instance" );
    $forms->{'main_window'}{'reserve_button'}->signal_connect('clicked', "$class\::do_reserve", '', 'reserve_button', "main_window-$instance" );
    $forms->{'main_window'}{'recall_button'}->signal_connect('clicked', "$class\::do_recall", '', 'recall_button', "main_window-$instance" );
    $forms->{'main_window'}{'renew_button'}->signal_connect('clicked', "$class\::do_renew", '', 'renew_button', "main_window-$instance" );
    $forms->{'main_window'}{'checkin_button'}->signal_connect('clicked', "$class\::do_checkin", '', 'checkin_button', "main_window-$instance" );
    $forms->{'main_window'}{'add_button'}->signal_connect('clicked', "$class\::do_add", '', 'add_button', "main_window-$instance" );
    $forms->{'main_window'}{'remove_button'}->signal_connect('clicked', "$class\::do_remove", '', 'remove_button', "main_window-$instance" );
    $forms->{'main_window'}{'edit_button'}->signal_connect('clicked', "$class\::do_edit", '', 'edit_button', "main_window-$instance" );
    $forms->{'main_window'}{'admonish_button'}->signal_connect('clicked', "$class\::do_admonish", '', 'admonish_button', "main_window-$instance" );
    $forms->{'main_window'}{'unadmonish_button'}->signal_connect('clicked', "$class\::do_unadmonish", '', 'unadmonish_button', "main_window-$instance" );
    $forms->{'main_window'}{'category_menu'}->signal_connect('clicked', "$class\::on_category_menu_clicked", '', 'category_menu', "main_window-$instance" );
    $forms->{'main_window'}{'search_query'}->signal_connect('key_press_event', "$class\::on_search_query_key_press_event", '', 'search_query', "main_window-$instance" );
    $forms->{'main_window'}{'search_button'}->signal_connect('clicked', "$class\::on_search_button_clicked", '', 'search_button', "main_window-$instance" );
    $forms->{'main_window'}{'show_all_button'}->signal_connect('clicked', "$class\::on_show_all_button_clicked", '', 'show_all_button', "main_window-$instance" );
    $forms->{'main_window'}{'book_list'}->signal_connect('click_column', "$class\::do_sort", '', 'book_list', "main_window-$instance" );
    $forms->{'main_window'}{'book_list'}->signal_connect('select_row', "$class\::do_select", '', 'book_list', "main_window-$instance" );
    $forms->{'main_window'}{'book_label'}->signal_connect('button_press_event', "$class\::on_book_label_button_press_event", '', 'book_label', "main_window-$instance" );
    $forms->{'main_window'}{'cd_list'}->signal_connect('click_column', "$class\::do_sort", '', 'cd_list', "main_window-$instance" );
    $forms->{'main_window'}{'cd_list'}->signal_connect('select_row', "$class\::do_select", '', 'cd_list', "main_window-$instance" );
    $forms->{'main_window'}{'cd_label'}->signal_connect('button_press_event', "$class\::on_cd_label_button_press_event", '', 'cd_label', "main_window-$instance" );
    $forms->{'main_window'}{'laptop_list'}->signal_connect('click_column', "$class\::do_sort", '', 'laptop_list', "main_window-$instance" );
    $forms->{'main_window'}{'laptop_list'}->signal_connect('select_row', "$class\::do_select", '', 'laptop_list', "main_window-$instance" );
    $forms->{'main_window'}{'laptop_label'}->signal_connect('button_press_event', "$class\::on_laptop_label_button_press_event", '', 'laptop_label', "main_window-$instance" );
    $forms->{'main_window'}{'quit_button'}->signal_connect('clicked', "$class\::quit", '', 'quit_button', "main_window-$instance" );


    #
    # Return the constructed UI
    bless $self, $class;
    $self->FORM($forms->{'main_window'});
    $self->TOPLEVEL($self->FORM->{'main_window'});
    $self->FORM->{'TOPLEVEL'} = ($self->TOPLEVEL);
    $self->FORM->{'OBJECT'} = ($self);
    $self->INSTANCE("main_window-$instance");
    $self->CLASS_HIERARCHY($self->FORM->{'__CH'});
    $self->WIDGET_HIERARCHY($self->FORM->{'__WH'});
    $__PACKAGE__::all_forms->{$self->INSTANCE} = $self->FORM;
    
    return $self;
} # End of sub new










1;

__END__

#===============================================================================
#==== Documentation
#===============================================================================
=pod

=head1 NAME

Library - version 0.01 Fri Nov 19 16:11:39 CST 2004

No description

=head1 SYNOPSIS

 use Library;

 To construct the window object and show it call
 
 Gtk->init;
 my $window = main_window->new;
 $window->TOPLEVEL->show;
 Gtk->main;
 
 OR use the shorthand for the above calls
 
 main_window->app_run;

=head1 DESCRIPTION

Unfortunately, the author has not yet written any documentation :-(

=head1 AUTHOR

Danil Lim <danil@brian.cs.wisc.edu>

=cut
