Gtk2-GladeXML-Simple-0.32/ 0000755 0007641 0000144 00000000000 10270361115 014567 5 ustar amnesiac users Gtk2-GladeXML-Simple-0.32/examples/ 0000755 0007641 0000144 00000000000 10270361115 016405 5 ustar amnesiac users Gtk2-GladeXML-Simple-0.32/examples/sample/ 0000755 0007641 0000144 00000000000 10270361115 017666 5 ustar amnesiac users Gtk2-GladeXML-Simple-0.32/examples/sample/sample.glade 0000644 0007641 0000144 00000010061 10261573563 022157 0 ustar amnesiac users
True
window1
GTK_WINDOW_TOPLEVEL
GTK_WIN_POS_NONE
False
True
False
True
False
False
GDK_WINDOW_TYPE_HINT_NORMAL
GDK_GRAVITY_NORTH_WEST
True
False
0
True
True
GTK_POLICY_ALWAYS
GTK_POLICY_ALWAYS
GTK_SHADOW_IN
GTK_CORNER_TOP_LEFT
True
True
True
False
True
GTK_JUSTIFY_LEFT
GTK_WRAP_NONE
True
0
0
0
0
0
0
0
True
True
True
GTK_BUTTONBOX_DEFAULT_STYLE
0
True
True
True
button1
True
GTK_RELIEF_NORMAL
True
True
True
True
button2
True
GTK_RELIEF_NORMAL
True
0
False
False
Gtk2-GladeXML-Simple-0.32/examples/sample/sample.gladep 0000644 0007641 0000144 00000000421 10261573563 022336 0 ustar amnesiac users
Sample
sample
FALSE
Gtk2-GladeXML-Simple-0.32/examples/sample/Sample.pl 0000644 0007641 0000144 00000001022 10267653151 021451 0 ustar amnesiac users package Sample;
use strict;
use warnings;
use Gtk2 '-init';
use Gtk2::GladeXML::Simple;
use base qw( Gtk2::GladeXML::Simple );
sub new {
my $class = shift;
my $self = $class->SUPER::new( 'sample.glade' );
return $self;
}
sub on_button1_clicked {
my $self = shift;
my $buffer = $self->{textview1}->get_buffer;
print $buffer->get_text( $buffer->get_start_iter, $buffer->get_end_iter, 0 );
}
sub on_button2_clicked {
my $self = shift;
Gtk2->main_quit;
}
1;
package main;
Sample->new->run;
1;
Gtk2-GladeXML-Simple-0.32/examples/mozembed/ 0000755 0007641 0000144 00000000000 10270361115 020207 5 ustar amnesiac users Gtk2-GladeXML-Simple-0.32/examples/mozembed/MozEmbed.pl 0000644 0007641 0000144 00000001355 10267653130 022261 0 ustar amnesiac users package MozEmbed;
use strict;
use warnings;
use Gtk2 '-init';
use Gtk2::GladeXML::Simple;
use Gtk2::MozEmbed;
use base qw( Gtk2::GladeXML::Simple );
sub new { shift->SUPER::new( 'mozembed.glade' ) }
sub on_back_clicked { shift->{mozembed}->go_back }
sub on_forward_clicked { shift->{mozembed}->go_forward }
sub on_url_entry_activate { $_[0]->{mozembed}->load_url(
$_[0]->{url_entry}->get_text
) }
sub on_mozembed_location { $_[0]->{url_entry}->set_text(
$_[0]->{mozembed}->get_location
) }
sub gtk_main_quit { Gtk2->main_quit }
sub gtk_mozembed_new {
my $self = shift;
my $mozembed = Gtk2::MozEmbed->new;
$mozembed->show_all;
return $mozembed;
}
1;
package main;
MozEmbed->new->run;
1;
Gtk2-GladeXML-Simple-0.32/examples/mozembed/mozembed.glade 0000644 0007641 0000144 00000011116 10261573563 023023 0 ustar amnesiac users
640
480
True
window1
GTK_WINDOW_TOPLEVEL
GTK_WIN_POS_NONE
False
True
False
True
False
False
GDK_WINDOW_TYPE_HINT_NORMAL
GDK_GRAVITY_NORTH_WEST
3
True
False
4
True
False
5
True
GTK_BUTTONBOX_DEFAULT_STYLE
0
True
True
True
gtk-go-back
True
GTK_RELIEF_NORMAL
True
True
True
True
gtk-media-forward
True
GTK_RELIEF_NORMAL
True
0
False
True
True
True
True
True
0
True
*
False
0
True
True
0
False
True
True
gtk_mozembed_new
0
0
Tue, 21 Jun 2005 22:35:30 GMT
0
True
True
Gtk2-GladeXML-Simple-0.32/examples/mozembed/mozembed.gladep 0000644 0007641 0000144 00000000425 10261573563 023204 0 ustar amnesiac users
Mozembed
mozembed
FALSE
Gtk2-GladeXML-Simple-0.32/examples/yahoo/ 0000755 0007641 0000144 00000000000 10270361115 017524 5 ustar amnesiac users Gtk2-GladeXML-Simple-0.32/examples/yahoo/yahoo.gladep 0000644 0007641 0000144 00000000422 10261573563 022033 0 ustar amnesiac users
YahooApp
yahoo
FALSE
Gtk2-GladeXML-Simple-0.32/examples/yahoo/YahooApp.pl 0000644 0007641 0000144 00000004426 10267653173 021625 0 ustar amnesiac users package YahooApp;
use strict;
use warnings;
use Gtk2 '-init';
use Gtk2::Html2;
use Gtk2::GladeXML::Simple;
use WWW::Search;
use base qw( Gtk2::GladeXML::Simple );
my $header =<
};
}
$buf .= $footer;
$self->{buf} = $buf;
}
sub on_Clear_clicked {
my $self = shift;
my $html = $self->{custom1};
$html->{document}->clear;
my $statusbar = $self->{statusbar1};
$statusbar->pop( $statusbar->get_context_id( "Yahoo" ) );
}
sub on_Search_clicked {
my $self = shift;
my $text_entry = $self->{entry1};
my $text = $text_entry->get_text;
return unless $text ne '';
my $statusbar = $self->{statusbar1};
$statusbar->push( $statusbar->get_context_id( "Yahoo" ), "Searching for: $text" );
$self->do_search( $text );
my $html = $self->{custom1};
$html->{document}->clear;
$html->{document}->open_stream( "text/html" );
$html->{document}->write_stream( $self->{buf} );
$html->{document}->close_stream;
}
sub create_htmlview {
my $self = shift;
my $view = Gtk2::Html2::View->new;
my $document = Gtk2::Html2::Document->new;
$view->set_document( $document );
$view->{document} = $document;
$view->show_all;
return $view;
}
sub gtk_main_quit { Gtk2->main_quit }
1;
package main;
YahooApp->new->run;
1;
Gtk2-GladeXML-Simple-0.32/examples/yahoo/yahoo.glade 0000644 0007641 0000144 00000014275 10261573563 021666 0 ustar amnesiac users
640
500
True
YahooApp
GTK_WINDOW_TOPLEVEL
GTK_WIN_POS_CENTER
False
True
True
True
False
False
GDK_WINDOW_TYPE_HINT_NORMAL
GDK_GRAVITY_NORTH_WEST
3
250
True
False
0
True
False
5
True
Search for:
False
False
GTK_JUSTIFY_LEFT
False
False
0.5
0.5
0
0
0
False
False
300
True
True
True
True
100
True
*
False
0
True
True
True
GTK_BUTTONBOX_DEFAULT_STYLE
3
True
True
True
gtk-find
True
GTK_RELIEF_NORMAL
True
True
True
True
gtk-clear
True
GTK_RELIEF_NORMAL
True
0
False
False
0
False
False
1
250
True
True
GTK_POLICY_AUTOMATIC
GTK_POLICY_AUTOMATIC
GTK_SHADOW_ETCHED_IN
GTK_CORNER_TOP_LEFT
500
True
create_htmlview
0
0
Wed, 15 Jun 2005 01:27:11 GMT
0
True
True
True
True
0
False
False
Gtk2-GladeXML-Simple-0.32/Changes 0000644 0007641 0000144 00000002176 10270360377 016101 0 ustar amnesiac users Revision history for Perl extension Gtk2::GladeXML::Simple.
0.032 Sat Jul 23 01:16:49 CDT 2005
- Added gpsketcher V0.4
0.031 Thu Jul 21 02:03:12 2005
- gpsketcher is now installed with the module, under perl's binary directory
- Added _peek() to gpsketcher, this methods examines the last value in the stack.
- Examples updated to the latest module API
- Added _get_widgets() private method
- fixed get_wigets() method
- gpsketcher version 0.3, fixes some creation functions issues when generating code
0.03 Mon Jul 18 10:35:40 CDT 2005
- More POD fixes
- Added get_widgets() method
- run() method is now part of the module
- Added gpsketcher, a simple glade-perl code sketcher
0.022 Wed Jun 22 12:48:12 CDT 2005
- Fixed POD errors and added some comments to the code.
0.02 Mon Jun 20 02:20:24 CDT 2005
- Replaced signal_autoconnect_from_package with a custom autoconnect helper method and
g_signal_connect()/g_signal_connect_after() from glib's API.
- No longer use for AUTOLOAD.
0.01 Mon Jun 13 01:32:12 CDT 2005
Gtk2::Glade::XML was born.
Gtk2-GladeXML-Simple-0.32/lib/ 0000755 0007641 0000144 00000000000 10270361115 015335 5 ustar amnesiac users Gtk2-GladeXML-Simple-0.32/lib/Gtk2/ 0000755 0007641 0000144 00000000000 10270361115 016144 5 ustar amnesiac users Gtk2-GladeXML-Simple-0.32/lib/Gtk2/GladeXML/ 0000755 0007641 0000144 00000000000 10270361115 017541 5 ustar amnesiac users Gtk2-GladeXML-Simple-0.32/lib/Gtk2/GladeXML/Simple.pm 0000644 0007641 0000144 00000021000 10270360724 021326 0 ustar amnesiac users package Gtk2::GladeXML::Simple;
use 5.008;
use strict;
use warnings;
use Carp;
use Gtk2;
use Gtk2::GladeXML;
our $VERSION = '0.32';
sub new {
my ( $caller, $gladefile, $root, $domain ) = @_;
croak "You need to specify a glade file first" unless $gladefile;
my $self = bless {}, ref( $caller ) || $caller;
Gtk2::Glade->set_custom_handler( sub{ $self->_custom_handler( @_ ) } );
$self->{xml} = Gtk2::GladeXML->new( $gladefile, $root, $domain );
$self->_signal_autoconnect_simple;
$self->_get_widgets;
return $self;
}
sub glade_object {
my ( $self ) = @_;
return $self->{xml};
}
sub get_widget {
my ( $self, $widget ) = @_;
return $self->{$widget};
}
sub get_widgets {
my ( $self ) = @_;
return $self->glade_object->get_widget_prefix( '' );
}
sub run {
my ( $self ) = @_;
Gtk2->main;
}
sub _get_widgets {
my ( $self ) = @_;
$self->{ $_->get_widget_name } = $_ foreach $self->get_widgets;
}
sub _custom_handler {
my ( $self, $xml, $func_name, $name, $str1, $str2, $int1, $int2 ) = @_;
$self->$func_name( $str1, $str2, $int1, $int2 );
}
sub _signal_autoconnect_simple {
my ( $self ) = @_;
$self->glade_object->signal_autoconnect( \&_autoconnect_helper, $self );
}
sub _autoconnect_helper {
my ( $handler_name, $object, $signal_name, $signal_data,
$connect_object, $is_after, $self ) = @_;
my $connect_func = $is_after ? 'signal_connect_after' : 'signal_connect';
$object->$connect_func( $signal_name,
sub { $self->$handler_name( @_ ) },
$signal_data );
}
1;
__END__
=head1 NAME
Gtk2::GladeXML::Simple - A clean object-oriented interface to Gtk2::GladeXML
=head1 SYNOPSIS
package MyApp;
use base qw( Gtk2::GladeXML::Simple );
sub new {
my $class = shift;
my $self = $class->SUPER::new( $gladefile );
return $self;
}
...
# Signal handlers are methods of your class
sub on_button_clicked {
my $self = shift;
# You have access to your widgets directly
# or using $self->get_widget( widget_name )
my $button = $self->{button1};
}
=head1 DESCRIPTION
Gtk2::GladeXML::Simple is a module that provides a clean and easy interface
for Gnome/Gtk2 and Glade applications using an object-oriented syntax. You just
make Gtk2::GladeXML::Simple your application's base class, have your C call
C, and the module will do the tedious and dirty work for you.
Gtk2::GladeXML::Simple offers:
=over
=item *
Signal handler callbacks as methods of your class.
sub on_button1_clicked {
my $self = shift; # $self always received as first parameter
...
# do anything you want in a OO fashioned way
}
=item *
Autoconnection of signal handlers.
=item *
Autocalling of creation functions for custom widgets.
=item *
Access to the widgets as instance attributes.
my $btn = $self->{button1}; # fetch widgets as instance attributes by their names
my $window = $self->{main_window};
my $custom = $self->{custom_widget};
=back
=head1 METHODS
This class provides the following public methods:
=over
=item new( $gladefile I<[, $root, $domain ]> );
This method creates a new object of your subclass of Gtk2::GladeXML::Simple.
The C<$gladefile> parameter is the name of the file created by the Glade Visual Editor.
The C<$root> is an optional parameter that tells C the name of the widget
to start building from. The optional C<$domain> parameter that specifies the translation
domain for the glade xml file ( undef by default ).
=item glade_object
This method returns the Gtk2::GladeXML object in play.
=item get_widget( $widget_name )
Returns the widget with given name. Same as calling $self->{$widget_name}.
=item get_widgets
Returns a list with all the widgets in the glade file.
=item run
Call this method in order to run your application. If you need another event loop
rather than the Gtk one, override I in your class with your event loop (for
example the GStreamer event loop).
=back
=head1 EXTENDED EXAMPLE
This example shows the usage of the module by creating a small Yahoo search
engine using WWW::Search::Yahoo.
package YahooApp;
use strict;
use warnings;
use Gtk2 '-init';
use Gtk2::Html2; #not part of the Gtk2 core widgets
use Gtk2::GladeXML::Simple;
use WWW::Search;
use base qw( Gtk2::GladeXML::Simple );
my $header =<