GUI Programming 
with Perl / GTK
Anuradha Weeraman
anu@taprobane.org
http://www.linux.lk/~anu/
23 May 2006
 
Contents
●
 Overview 
●
 GUI Toolkits
●
 Hello World
●
 Layout
●
 C ­> Perl
●
 GUI Builders
●
 CPAN
Overview
●
 What's a widget?
●
 What's a GUI?
●
 What's a GUI toolkit?
●
 What's GTK?
●
 What's GTK­Perl?
●
 How is GUI pr...
GUI Toolkits
●
 Athena Widget Library
●
 OSF Motif
●
 Xforms
●
 FLTK
●
 the GIMP Toolkit
●
 Qt Toolkit
●
 LessTif
Hello World
#!/usr/bin/perl
use Gtk2 '-init';
$window = Gtk2::Window->new;
$label = Gtk2::Label->new ("Hello World");
$win...
Hello World – Part 2
#!/usr/bin/perl
use Gtk2 '-init';
$window = Gtk2::Window->new;
$window->signal_connect(
destroy => su...
Hello World – Part 3
#!/usr/bin/perl
use Gtk2 '-init';
$window = Gtk2::Window->new;
$window->set_title("Hello");
$window->...
Hello World – Part 4
#!/usr/bin/perl
use Gtk2 '-init';
sub quit_program {
Gtk2->main_quit;
print "Program has stopped.n";
...
Layout ­ HBox
$window = Gtk2::Window->new;
$hbox = Gtk2::HBox->new;
$button_1 = Gtk2::Button->new ("Button 1");
$button_2 ...
Layout ­ VBox
$window = Gtk2::Window->new;
$vbox = Gtk2::VBox->new;
$button_1 = Gtk2::Button->new ("Button 1");
$button_2 ...
C ­> Perl
●
 Consistent naming
●
 One­to­one mapping
●
 Object­oriented
●
 Transparently handles type­casting, reference 
...
Function Name Translation
g_ -> Glib
gtk_ -> Gtk2
gdk_ -> Gtk2::Gdk
gdk_pixbuf_ -> Gtk2::Gdk::Pixbuf
pango_ -> Gtk2::Pango
Function Name Translation
gtk_window_ -> Gtk2::Window
gtk_button_ -> Gtk2::Button
gtk_window_new -> Gtk2::Window->new
gtk_...
Function Parameters
gtk_window_set_title
(GtkWindow *window, gchar string)
becomes
$window->set_title ($string)
Function Parameters
GList replaced by variable number of arguments:
gtk_window_set_icon_list (GtkWindow * window, GList * ...
Return Values
gtk_window_get_size (GtkWindow *window, gint *width,
gint *height)
($width, $height) = $window->get_size
gtk...
GUI Builders ­ Glade
Installing Modules
Download foo­module.tar.gz
$ tar zxvf foo­module.tar.gz
$ cd foo­module
$ perl Configure.PL
$ make
$ ma...
CPAN
●
 CPAN.org
●
 Comprehensive Perl Archive Network
●
 Mirrors all over the world
●
 Command line shell
●
 Bundled with...
CPAN
perl ­MCPAN ­e shell
cpan> install Term::ReadKey
cpan> install Term::ReadLine
cpan> install Bundle::CPAN
cpan> h or ?
 Thank You!
For more information, visit:
http://www.gtk.org
http://www.gtk2­perl.sourceforge.net
You can download this pre...
Upcoming SlideShare
Loading in …5
×

GUI Programming with Perl / GTK

1,101
-1

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,101
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
14
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

GUI Programming with Perl / GTK

  1. 1. GUI Programming  with Perl / GTK Anuradha Weeraman anu@taprobane.org http://www.linux.lk/~anu/ 23 May 2006  
  2. 2. Contents ●  Overview  ●  GUI Toolkits ●  Hello World ●  Layout ●  C ­> Perl ●  GUI Builders ●  CPAN
  3. 3. Overview ●  What's a widget? ●  What's a GUI? ●  What's a GUI toolkit? ●  What's GTK? ●  What's GTK­Perl? ●  How is GUI programming different?
  4. 4. GUI Toolkits ●  Athena Widget Library ●  OSF Motif ●  Xforms ●  FLTK ●  the GIMP Toolkit ●  Qt Toolkit ●  LessTif
  5. 5. Hello World #!/usr/bin/perl use Gtk2 '-init'; $window = Gtk2::Window->new; $label = Gtk2::Label->new ("Hello World"); $window->add ($label); $window->show_all; Gtk2->main;
  6. 6. Hello World – Part 2 #!/usr/bin/perl use Gtk2 '-init'; $window = Gtk2::Window->new; $window->signal_connect( destroy => sub { Gtk2->main_quit } ); $label = Gtk2::Label->new ("Hello World"); $window->add ($label); $window->show_all; Gtk2->main;
  7. 7. Hello World – Part 3 #!/usr/bin/perl use Gtk2 '-init'; $window = Gtk2::Window->new; $window->set_title("Hello"); $window->signal_connect(destroy => sub { Gtk2->main_quit }); $button = Gtk2::Button->new ("Greetings Earthling"); $button->signal_connect(clicked => sub { Gtk2->main_quit }); $window->add ($button); $window->show_all; Gtk2->main;
  8. 8. Hello World – Part 4 #!/usr/bin/perl use Gtk2 '-init'; sub quit_program { Gtk2->main_quit; print "Program has stopped.n"; } $window = Gtk2::Window->new; $window->set_title("Hello"); $window->signal_connect(destroy => &quit_program); $button = Gtk2::Button->new ("Greetings Earthling"); $button->signal_connect(clicked => &quit_program); $window->add ($button); $window->show_all; Gtk2->main;
  9. 9. Layout ­ HBox $window = Gtk2::Window->new; $hbox = Gtk2::HBox->new; $button_1 = Gtk2::Button->new ("Button 1"); $button_2 = Gtk2::Button->new ("Button 2"); $hbox->pack_start ($button_1, 0, 0, 0); $hbox->pack_start ($button_2, 0, 0, 0); $window->add ($hbox);
  10. 10. Layout ­ VBox $window = Gtk2::Window->new; $vbox = Gtk2::VBox->new; $button_1 = Gtk2::Button->new ("Button 1"); $button_2 = Gtk2::Button->new ("Button 2"); $vbox->pack_start ($button_1, 0, 0, 0); $vbox->pack_start ($button_2, 0, 0, 0); $window->add ($vbox);
  11. 11. C ­> Perl ●  Consistent naming ●  One­to­one mapping ●  Object­oriented ●  Transparently handles type­casting, reference  counting etc. ●  Exceptions allowed where Perl capabilities  afford a cleaner API – multiple return values,  string / array function parameters
  12. 12. Function Name Translation g_ -> Glib gtk_ -> Gtk2 gdk_ -> Gtk2::Gdk gdk_pixbuf_ -> Gtk2::Gdk::Pixbuf pango_ -> Gtk2::Pango
  13. 13. Function Name Translation gtk_window_ -> Gtk2::Window gtk_button_ -> Gtk2::Button gtk_window_new -> Gtk2::Window->new gtk_button_new -> Gtk2::Button->new
  14. 14. Function Parameters gtk_window_set_title (GtkWindow *window, gchar string) becomes $window->set_title ($string)
  15. 15. Function Parameters GList replaced by variable number of arguments: gtk_window_set_icon_list (GtkWindow * window, GList * list) $window->set_icon_list (@icons) Same with the array moved to the end of the parameter list: gtk_list_insert_items (GtkList *list, GList *items, gint position) $list->insert_items ($position, @items)    Array parameter and integer with the size of that array, replaced by variable number  of arguments: gtk_curve_set_vector (GtkCurve *curve, int veclen, gfloat vector[]) $curve->set_vector (@vector) Same with the array moved to the end of parameter list: gtk_item_factory_create_items (GtkItemFactory * ifactory, guint n_entries, GtkItemFactoryEntry * entries, gpointer callback_data) $itemfactory->create_items ($callback_data, @entries)
  16. 16. Return Values gtk_window_get_size (GtkWindow *window, gint *width, gint *height) ($width, $height) = $window->get_size gtk_calendar_get_date (GtkCalendar * calendar, guint year, guint month, guint day) ($year, $month, $day) = $calendar->get_date
  17. 17. GUI Builders ­ Glade
  18. 18. Installing Modules Download foo­module.tar.gz $ tar zxvf foo­module.tar.gz $ cd foo­module $ perl Configure.PL $ make $ make test # make install            OR use CPAN.
  19. 19. CPAN ●  CPAN.org ●  Comprehensive Perl Archive Network ●  Mirrors all over the world ●  Command line shell ●  Bundled with standard Perl distribution ●  Intuitive module management
  20. 20. CPAN perl ­MCPAN ­e shell cpan> install Term::ReadKey cpan> install Term::ReadLine cpan> install Bundle::CPAN cpan> h or ?
  21. 21.  Thank You! For more information, visit: http://www.gtk.org http://www.gtk2­perl.sourceforge.net You can download this presentation  from http://www.linux.lk/~anu
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×