NAME¶
Gtk3 - Perl interface to the 3.x series of the gtk+ toolkit
SYNOPSIS¶
use Gtk3 -init;
my $window = Gtk3::Window->new ('toplevel');
my $button = Gtk3::Button->new ('Quit');
$button->signal_connect (clicked => sub { Gtk3::main_quit });
$window->add ($button);
$window->show_all;
Gtk3::main;
ABSTRACT¶
Perl bindings to the 3.x series of the gtk+ toolkit. This module allows you to
write graphical user interfaces in a Perlish and object-oriented way, freeing
you from the casting and memory management in C, yet remaining very close in
spirit to original API.
DESCRIPTION¶
The Gtk3 module allows a Perl developer to use the gtk+ graphical user interface
library. Find out more about gtk+ at <
http://www.gtk.org>.
The gtk+ reference manual is also a handy companion when writing Gtk3 programs
in Perl: <
http://developer.gnome.org/gtk3/stable/>. The Perl bindings
follow the C API very closely, and the C reference documentation should be
considered the canonical source.
To discuss Gtk3 and ask questions join gtk-perl-list@gnome.org at
<
http://mail.gnome.org/mailman/listinfo/gtk-perl-list>.
Also have a look at the gtk2-perl website and sourceforge project page,
<
http://gtk2-perl.sourceforge.net>.
Porting from Gtk2 to Gtk3¶
The majority of the API has not changed, so as a first approximation you can run
"s/Gtk2/Gtk3/" on your application. A big exception to this rule is
APIs that were deprecated in gtk+ 2.x -- these were all removed from gtk+ 3.0
and thus from Gtk3. The migration guide at
<
http://developer.gnome.org/gtk3/stable/migrating.html> describes what
to use instead. Apart from this, here is a list of some other incompatible
differences between Gtk2 and Gtk3:
- •
- The call syntax for class-static methods is now always
"Gtk3::Stock::lookup" instead of
"Gtk3::Stock->lookup".
- •
- The %Gtk2::Gdk::Keysyms hash is gone; instead of
"Gtk2::Gdk::Keysyms{XYZ}", use
"Gtk3::Gdk::KEY_XYZ".
- •
- The Gtk2::Pango compatibility wrapper was not carried over; simply use the
namespace "Pango" everywhere. It gets set up automatically when
loading Gtk3.
- •
- The types Gtk3::Allocation and Gtk3::Gdk::Rectangle are now aliases for
Cairo::RectangleInt, and as such they are represented as plain hashes with
keys 'width', 'height', 'x' and 'y'.
- •
- Gtk3::Editable: Callbacks connected to the "insert-text" signal
do not have as many options anymore as they had in Gtk2. Changes to
arguments will not be propagated to the next signal handler, and only the
updated position can and must be returned.
- •
- Gtk3::Menu: The position callback passed to popup() does not
receive x and y parameters anymore.
- •
- Gtk3::RadioAction: The constructor now follows the C API.
- •
- Gtk3::TreeModel: iter_next() is now a method that is modifying the
iter directly, instead of returning a new one. rows_reordered() and
the "rows-reordered" signal are currently unusable.
- •
- Gtk3::TreeSelection: get_selected_rows() now returns two values: an
array ref containing the selected paths, and the model.
get_user_data() is not available currently.
- •
- Gtk3::TreeSortable: get_sort_column_id() has an additional boolean
return value.
- •
- Gtk3::TreeStore, Gtk3::ListStore: reorder() is currently
unusable.
- •
- Gtk3::Gdk::Atom: The constructor new() is not provided anymore, and
the class function intern() must now be called as
"Gtk3::Gdk::Atom::intern (name, only_if_exists)".
- •
- Implementations of Gtk3::TreeModel: Gtk3::TreeIter now has a constructor
called new() expecting "key => value" pairs;
new_from_arrayref() does not exist anymore. To access the contents
of Gtk3::TreeIter, use stamp(), user_data(),
user_data2() and user_data3(); to_arrayref() does not
exist anymore. GET_ITER(), ITER_CHILDREN(),
ITER_NTH_CHILD() and ITER_PARENT() must return an additional
boolean value. ITER_NEXT() must modify the iter and return a
boolean rather than return a new iter. GET_VALUE() must return the
value wrapped with
"Glib::Object::Introspection::GValueWrapper->new".
- •
- Implementations of Gtk3::CellLayout: GET_CELLS() now needs to
return an array ref instead of a list.
Note also that Gtk3::CHECK_VERSION will always fail when passed 2.y.z, so if you
have any existing version checks in your code, you will most likely need to
remove them.
SEE ALSO¶
- Glib
- Glib::Object::Introspection
AUTHORS¶
- Torsten Schoenfeld <kaffeetisch@gmx.de>
COPYRIGHT AND LICENSE¶
Copyright (C) 2011-2013 by Torsten Schoenfeld <kaffeetisch@gmx.de>
This library is free software; you can redistribute it and/or modify it under
the terms of the GNU Library General Public License as published by the Free
Software Foundation; either version 2.1 of the License, or (at your option)
any later version.