1Gtk3(3)               User Contributed Perl Documentation              Gtk3(3)
2
3
4

NAME

6       Gtk3 - Perl interface to the 3.x series of the gtk+ toolkit
7

SYNOPSIS

9         use Gtk3 -init;
10         my $window = Gtk3::Window->new ('toplevel');
11         my $button = Gtk3::Button->new ('Quit');
12         $button->signal_connect (clicked => sub { Gtk3::main_quit });
13         $window->add ($button);
14         $window->show_all;
15         Gtk3::main;
16

ABSTRACT

18       Perl bindings to the 3.x series of the gtk+ toolkit.  This module
19       allows you to write graphical user interfaces in a Perlish and object-
20       oriented way, freeing you from the casting and memory management in C,
21       yet remaining very close in spirit to original API.
22

DESCRIPTION

24       The "Gtk3" module allows a Perl developer to use the gtk+ graphical
25       user interface library.  Find out more about gtk+ at
26       <http://www.gtk.org>.
27
28       The gtk+ reference manual is also a handy companion when writing "Gtk3"
29       programs in Perl: <http://developer.gnome.org/gtk3/stable/>.  The Perl
30       bindings follow the C API very closely, and the C reference
31       documentation should be considered the canonical source.  The
32       principles underlying the mapping from C to Perl are explained in the
33       documentation of Glib::Object::Introspection, on which "Gtk3" is based.
34
35       Glib::Object::Introspection also comes with the "perli11ndoc" program
36       which displays the API reference documentation of all installed
37       libraries organized in accordance with these principles.
38
39   Wrapped libraries
40       "Gtk3" automatically sets up the following correspondence between C
41       libraries and Perl packages:
42
43         Library       | Package
44         --------------+----------
45         Gtk-3.0       | Gtk3
46         Gdk-3.0       | Gtk3::Gdk
47         GdkPixbuf-2.0 | Gtk3::Gdk
48         Pango-1.0     | Pango
49
50   Import arguments
51       When importing "Gtk3", you can pass "-init" as in "use Gtk3 -init;" to
52       have "Gtk3::init" automatically called.  You can also pass a version
53       number to require a certain version of "Gtk3".
54
55   Customizations and overrides
56       In order to make things more Perlish or to make porting from "Gtk2" to
57       "Gtk3" easier, "Gtk3" customizes the API generated by
58       Glib::Object::Introspection in a few spots:
59
60       ·   The array ref normally returned by the following functions is
61           flattened into a list:
62
63           Gtk3::ActionGroup::list_actions
64           Gtk3::Builder::get_objects
65           Gtk3::CellLayout::get_cells
66           Gtk3::Container::get_children
67           Gtk3::SizeGroup::get_widgets
68           Gtk3::TreePath::get_indices
69           Gtk3::TreeView::get_columns
70           Gtk3::UIManager::get_action_groups
71           Gtk3::UIManager::get_toplevels
72           Gtk3::Window::list_toplevels
73           Gtk3::stock_list_ids
74           Gtk3::Gdk::Pixbuf::get_formats
75       ·   The following functions normally return a boolean and additional
76           out arguments, where the boolean indicates whether the out
77           arguments are valid.  They are altered such that when the boolean
78           is true, only the additional out arguments are returned, and when
79           the boolean is false, an empty list is returned.
80
81           Gtk3::TextBuffer::get_selection_bounds
82           Gtk3::TreeModel::get_iter
83           Gtk3::TreeModel::get_iter_first
84           Gtk3::TreeModel::get_iter_from_string
85           Gtk3::TreeModel::iter_children
86           Gtk3::TreeModel::iter_nth_child
87           Gtk3::TreeModel::iter_parent
88           Gtk3::TreeModelFilter::convert_child_iter_to_iter
89           Gtk3::TreeModelSort::convert_child_iter_to_iter
90           Gtk3::TreeSelection::get_selected
91           Gtk3::TreeView::get_dest_row_at_pos
92           Gtk3::TreeView::get_path_at_pos
93           Gtk3::TreeView::get_tooltip_context
94           Gtk3::TreeView::get_visible_range
95           Gtk3::TreeViewColumn::cell_get_position
96           Gtk3::stock_lookup
97           Gtk3::Gdk::Event::get_axis
98           Gtk3::Gdk::Event::get_button
99           Gtk3::Gdk::Event::get_click_count
100           Gtk3::Gdk::Event::get_coords
101           Gtk3::Gdk::Event::get_keycode
102           Gtk3::Gdk::Event::get_keyval
103           Gtk3::Gdk::Event::get_scroll_direction
104           Gtk3::Gdk::Event::get_scroll_deltas
105           Gtk3::Gdk::Event::get_state
106           Gtk3::Gdk::Event::get_root_coords
107           Gtk3::Gdk::Window::get_origin
108       ·   Values of type Gtk3::ResponseType are converted to and from nick
109           names if possible, while still allowing raw IDs, in the following
110           places:
111
112           - For Gtk3::Dialog and Gtk3::InfoBar: the signal "response" as well
113           as the methods "add_action_widget", "add_button", "add_buttons",
114           "response", "set_default_response" and "set_response_sensitive".
115           - For Gtk3::Dialog: the methods "get_response_for_widget",
116           "get_widget_for_response", "run" and
117           "set_alternative_button_order".
118       ·   Values of type Gtk3::IconSize are converted to and from nick names
119           if possible, while still allowing raw IDs, in the following places:
120
121           - Gtk3::Image: the constructors new_from_stock, new_from_icon_set,
122           new_from_icon_name and new_from_gicon, the getters get_stock,
123           get_icon_set, get_icon_name and get_gicon and the setters
124           set_from_stock, set_from_icon_set, set_from_icon_name,
125           set_from_gicon.
126           - Gtk3::Widget: the method render_icon.
127       ·   The constants "Gtk3::EVENT_PROPAGATE" and "Gtk3::EVENT_STOP" can be
128           used in handlers for event signals like "key-press-event" to
129           indicate whether or not the event should continue propagating
130           through the widget hierarchy.
131
132       ·   The records corresponding to the various Gtk3::Gdk::Event types,
133           like "expose" or "key-release", are represented as objects blessed
134           into specific Perl packages, like "Gtk3::Gdk::EventExpose" or
135           "Gtk3::Gdk::EventKey", that all inherit from "Gtk3::Gdk::Event".
136           This allows you to seemlessly access type-specific fields as well
137           as common fields, as in "$event->window" or "$event->keyval".
138
139       ·   Gtk3::Gdk::Atom has overloads for the "==" and "!=" operators that
140           check for equality of the underlying atoms.
141
142       ·   For backwards compatibility, the functions "Gtk3::get_version_info"
143           and "Gtk3::GET_VERSION_INFO" are provided, and the functions
144           "Gtk3::CHECK_VERSION", "Gtk3::check_version", "Gtk3::init",
145           "Gtk3::init_check", "Gtk3::main", "Gtk3::main_level" and
146           "Gtk3::main_quit" can be called as class-static or as normal
147           functions: for example, "Gtk3->main_quit" and "Gtk3::main_quit" are
148           both supported.  Additionally, "Gtk3::init" and "Gtk3::init_check"
149           automatically handle passing and updating @ARGV as appropriate.
150
151       ·   A Perl reimplementation of "Gtk3::show_about_dialog" is provided.
152
153       ·   Perl reimplementations of "Gtk3::ActionGroup::add_actions",
154           "add_radio_actions" and "add_toggle_actions" are provided.
155
156       ·   "Gtk3::Builder::add_objects_from_file" and
157           "add_objects_from_string" also accept a list of objects instead of
158           an array ref.
159
160       ·   "Gtk3::Builder::add_objects_from_string" and "add_from_string"
161           don't take length arguments, as they are computed automatically.
162
163       ·   A Perl reimplementation of "Gtk3::Builder::connect_signals" is
164           provided.
165
166       ·   The default "new" constructors of Gtk3::Button, Gtk3::CheckButton,
167           Gtk3::ColorButton, Gtk3::FontButton and Gtk3::ToggleButton reroute
168           to "new_with_mnemonic" if given an extra argument.
169
170       ·   The default "new" constructor of Gtk3::CheckMenuItem reroutes to
171           "new_with_mnemonic" if given an extra argument.
172
173       ·   The "length" argument of "Gtk3::Clipboard::set_text" is optional.
174
175       ·   Perl reimplementations of "Gtk3::Container::add_with_properties",
176           "Gtk3::Container::child_get" and "Gtk3::Container::child_set" are
177           provided.
178
179       ·   "Gtk3::Container::find_child_property" and
180           "Gtk3::Container::list_child_properties" are forwarded to the
181           corresponding functions in "Gtk3::ContainerClass".
182
183       ·   "Gtk3::Container::get_focus_chain" returns a list of widgets, or an
184           empty list.
185
186       ·   "Gtk3::Container::set_focus_chain" also accepts a list of widgets.
187
188       ·   "Gtk3::CssProvider::load_from_data" also accepts a string.
189
190       ·   For Gtk3::Dialog and Gtk3::InfoBar, a Perl implementation of
191           "add_buttons" is provided.
192
193       ·   "Gtk3::Dialog::new" can optionally be called as "Gtk3::Dialog->new
194           (TITLE, PARENT, FLAGS, ...)" where "..." is a series of button text
195           and response id pairs.
196
197       ·   A Perl implementation of "Gtk3::Dialog::new_with_buttons" is
198           provided.
199
200       ·   The "length" argument of "Gtk3::Editable::insert_text" is optional.
201
202       ·   A Perl implementation of "Gtk3::FileChooserDialog::new" is
203           provided.
204
205       ·   "Gtk3::HBox::new" uses the defaults homogeneous = FALSE and spacing
206           = 5.
207
208       ·   The default "new" constructor of Gtk3::ImageMenuItem reroutes to
209           "new_with_mnemonic" if given an extra argument.
210
211       ·   "Gtk3::InfoBar::new" can optionally be called as
212           "Gtk3::InfoBar->new (...)" where "..." is a series of button text
213           and response id pairs.
214
215       ·   A Perl reimplementation of "Gtk3::InfoBar::new_with_buttons" is
216           provided.
217
218       ·   The default "new" constructor of Gtk3::LinkButton reroutes to
219           "new_with_label" if given an extra argument.
220
221       ·   "Gtk3::ListStore::new" also accepts a list of type names.
222
223       ·   Gtk3::ListStore has a "get" method that calls
224           "Gtk3::TreeModel::get" instead of "Glib::Object::get".
225
226       ·   "Gtk3::ListStore::insert_with_values" also accepts a list of
227           "column => value" pairs and reroutes to "insert_with_valuesv".
228
229       ·   "Gtk3::ListStore::set" also accepts a list of "column => value"
230           pairs.
231
232       ·   "Gtk3::Menu::popup" reroutes to "popup_for_device" for better
233           callback handling.
234
235       ·   "Gtk3::Menu::popup_for_device" allows the given menu position func
236           to return only x and y coordinates, defaulting "push_in" to FALSE.
237
238       ·   The default "new" constructor of Gtk3::MenuItem reroutes to
239           "new_with_mnemonic" if given an extra argument.
240
241       ·   A Perl reimplementation of "Gtk3::MessageDialog::new" is provided.
242
243       ·   The group handling in the constructors and accessors of
244           Gtk3::RadioAction, Gtk3::RadioButton, Gtk3::RadioMenuItem and
245           Gtk3::RadioToolButton is amended to work correctly when given array
246           refs of group members or single group members.
247
248       ·   Perl reimplementations of "Gtk3::RecentChooserDialog::new" and
249           "new_for_manager" are provided.
250
251       ·   Redirects are provided from "Gtk3::Stock::[function]" to
252           "Gtk3::stock_[function]" for "add", "add_static", "list_ids",
253           "lookup" and "set_translate_func".
254
255       ·   A Perl reimplementation of "Gtk3::StyleContext::get" is provided.
256
257       ·   An override for "Gtk3::TargetEntry::new" is provided that
258           automatically handles the conversion of the "flags" argument.
259
260       ·   A Perl reimplementation of "Gtk3::TextBuffer::create_tag" is
261           provided.
262
263       ·   The "length" arguments of "Gtk3::TextBuffer::insert",
264           "insert_at_cursor", "insert_interactive",
265           "insert_interactive_at_cursor", "insert_markup" and "set_text" are
266           optional.
267
268       ·   Perl reimplementations of "Gtk3::TextBuffer::insert_with_tags" and
269           "insert_with_tags_by_name" are provided which do not require a
270           "length" argument.
271
272       ·   A Perl reimplementation of "Gtk3::TreeModel::get" is provided.
273
274       ·   A redirect is added from "Gtk3::TreeModelFilter::new" to
275           <Gtk3::TreeModel::filter_new> so that Gtk3::TreeModelFilter objects
276           can be constructed normally.
277
278       ·   Gtk3::TreeModelFilter has a "get" method that calls
279           "Gtk3::TreeModel::get" instead of "Glib::Object::get".
280
281       ·   A redirect is added from "Gtk3::TreeModelSort::new_with_model" to
282           <Gtk3::TreeModel::sort_new_with_model> so that Gtk3::TreeModelSort
283           objects can be constructed normally.
284
285       ·   Gtk3::TreeModelSort has a "get" method that calls
286           "Gtk3::TreeModel::get" instead of "Glib::Object::get".
287
288       ·   "Gtk3::TreePath::new" redirects to "new_from_string" if an
289           additional argument is given.
290
291       ·   A Perl reimplementation of "Gtk3::TreePath::new_from_indices" is
292           provided.
293
294       ·   "Gtk3::TreeStore::new" also accepts a list of type names.
295
296       ·   Gtk3::TreeStore has a "get" method that calls
297           "Gtk3::TreeModel::get" instead of "Glib::Object::get".
298
299       ·   "Gtk3::TreeStore::insert_with_values" also accepts a list of
300           "column => value" pairs.
301
302       ·   "Gtk3::TreeStore::set" also accepts a list of "column => value"
303           pairs.
304
305       ·   "Gtk3::TreeView::new" redirects to "new_with_model" if an
306           additional argument is given.
307
308       ·   A Perl reimplementation of
309           "Gtk3::TreeView::insert_column_with_attributes" is provided.
310
311       ·   A Perl reimplementation of
312           "Gtk3::TreeViewColumn::new_with_attributes" is provided.
313
314       ·   Perl reimplementations of "Gtk3::TreeViewColumn::set_attributes"
315           and "Gtk3::CellLayout::set_attributes" are provided.
316
317       ·   "Gtk3::UIManager::add_ui_from_string" takes no "length" argument.
318
319       ·   "Gtk3::VBox::new" uses the defaults homogeneous = FALSE and spacing
320           = 5.
321
322       ·   "Gtk3::Widget::add_events" and "Gtk3::Widget::set_events" also
323           accept strings, array references and "Gtk3::Gdk::EventMask" objects
324           for the "events" parameter.
325
326       ·   "Gtk3::Widget::get_events" returns a "Gtk3::Gdk::EventMask" object
327           that can also be compared to numeric values with "==" and ">=".
328
329       ·   "Gtk3::Widget::find_style_property" and
330           "Gtk3::Widget::list_style_properties" are forwarded to the
331           corresponding functions in "Gtk3::WidgetClass".
332
333       ·   A Perl reimplementation of "Gtk3::Widget::style_get" is provided.
334
335       ·   "Gtk3::Window::new" uses the default type = 'toplevel'.
336
337       ·   A constructor "Gtk3::Gdk::RGBA::new" is provided that can be called
338           as "Gtk3::Gdk::RGBA->new (r, g, b, a)".
339
340       ·   "Gtk3::Gdk::RGBA::parse" can be called as a function returning a
341           new instance ("$rgba = Gtk3::Gdk::RGBA::parse ($spec)") or as a
342           method ("$rgba->parse ($spec)").
343
344       ·   "Gtk3::Gdk::Window::new" optionally computes the "attr_mask"
345           automatically from the given "attr".
346
347       ·   "Gtk3::Gdk::Pixbuf::get_pixels" returns a byte string.
348
349       ·   "Gtk3::Gdk::Pixbuf::new_from_data" is reimplemented in terms of
350           "new_from_inline" for correct memory management.  No "destroy_fn"
351           and "destroy_fn_data" arguments are needed.
352
353       ·   "Gtk3::Gdk::Pixbuf::new_from_inline" does not take a "copy_pixels"
354           argument.  It is always set to TRUE for correct memory management.
355
356       ·   "Gtk3::Gdk::Pixbuf::new_from_xpm_data" also accepts a list of XPM
357           lines.
358
359       ·   "Gtk3::Gdk::Pixbuf::save", "save_to_buffer" and "save_to_callback"
360           also accept "key => value" pairs and invoke the correct C function
361           as appropriate for the current gdk-pixbuf version.
362
363       ·   The "length" arguments of "Pango::Layout::set_text" and
364           "set_markup" are optional.
365
366   Perl compatibility
367       As of 5.20.0, perl does not automatically re-check the locale
368       environment for changes.  If a function thus changes the locale behind
369       perl's back, problems might arise whenever numbers are formatted, for
370       example when checking versions.  To ensure perl's assumption about the
371       locale are up-to-date, the functions "Gtk3::init", "init_check",
372       "init_with_args" and "parse_args" are amended to let perl know of any
373       changes.
374
375   Porting from Gtk2 to Gtk3
376       The majority of the API has not changed, so as a first approximation
377       you can run "s/Gtk2/Gtk3/" on your application.  A big exception to
378       this rule is APIs that were deprecated in gtk+ 2.x -- these were all
379       removed from gtk+ 3.0 and thus from Gtk3.  The migration guide at
380       <http://developer.gnome.org/gtk3/stable/migrating.html> describes what
381       to use instead.  Apart from this, here is a list of some other
382       incompatible differences between Gtk2 and Gtk3:
383
384       ·   The call syntax for class-static methods is now always
385           "Gtk3::Stock::lookup" instead of "Gtk3::Stock->lookup".
386
387       ·   The %Gtk2::Gdk::Keysyms hash is gone; instead of
388           "Gtk2::Gdk::Keysyms{XYZ}", use "Gtk3::Gdk::KEY_XYZ".
389
390       ·   The Gtk2::Pango compatibility wrapper was not carried over; simply
391           use the namespace "Pango" everywhere.  It gets set up automatically
392           when loading Gtk3.
393
394       ·   The types Gtk3::Allocation and Gtk3::Gdk::Rectangle are now aliases
395           for Cairo::RectangleInt, and as such they are represented as plain
396           hashes with keys 'width', 'height', 'x' and 'y'.
397
398       ·   Gtk3::Editable: Callbacks connected to the "insert-text" signal do
399           not have as many options anymore as they had in Gtk2.  Changes to
400           arguments will not be propagated to the next signal handler, and
401           only the updated position can and must be returned.
402
403       ·   Gtk3::Menu: In gtk+ < 3.16, the position callback passed to popup()
404           does not receive x and y parameters.
405
406       ·   Gtk3::RadioAction: The constructor now follows the C API.
407
408       ·   Gtk3::TreeModel: iter_next() is now a method that is modifying the
409           iter directly, instead of returning a new one.  rows_reordered()
410           and the "rows-reordered" signal are currently unusable.
411
412       ·   Gtk3::TreeSelection: get_selected_rows() now returns two values: an
413           array ref containing the selected paths, and the model.
414           get_user_data() is not available currently.
415
416       ·   Gtk3::TreeSortable: get_sort_column_id() has an additional boolean
417           return value.
418
419       ·   Gtk3::TreeStore, Gtk3::ListStore: reorder() is currently unusable.
420
421       ·   Gtk3::Widget: grab_add() and grab_remove() are methods now:
422           "$widget->grab_add", "$widget->grab_remove".
423
424       ·   Gtk3::Gdk::Atom: The constructor new() is not provided anymore, and
425           the class function intern() must now be called as
426           "Gtk3::Gdk::Atom::intern (name, only_if_exists)".
427
428       ·   Implementations of Gtk3::TreeModel: Gtk3::TreeIter now has a
429           constructor called new() expecting "key => value" pairs;
430           new_from_arrayref() does not exist anymore.  To access the contents
431           of Gtk3::TreeIter, use stamp(), user_data(), user_data2() and
432           user_data3(); to_arrayref() does not exist anymore.  GET_ITER(),
433           ITER_CHILDREN(), ITER_NTH_CHILD() and ITER_PARENT() must return an
434           additional boolean value.  ITER_NEXT() must modify the iter and
435           return a boolean rather than return a new iter.  GET_VALUE() must
436           return the value wrapped with
437           "Glib::Object::Introspection::GValueWrapper->new".
438
439       ·   Implementations of Gtk3::CellLayout: GET_CELLS() now needs to
440           return an array ref instead of a list.
441
442       Note also that Gtk3::CHECK_VERSION will always fail when passed 2.y.z,
443       so if you have any existing version checks in your code, you will most
444       likely need to remove them.
445

SEE ALSO

447       ·   To discuss Gtk3 and ask questions join gtk-perl-list@gnome.org at
448           <http://mail.gnome.org/mailman/listinfo/gtk-perl-list>.
449
450       ·   Also have a look at the gtk2-perl website and sourceforge project
451           page, <http://gtk2-perl.sourceforge.net>.
452
453       ·   Glib
454
455       ·   Glib::Object::Introspection
456

AUTHORS

458       Torsten Schönfeld <kaffeetisch@gmx.de>
459
461       Copyright (C) 2011-2015 by Torsten Schoenfeld <kaffeetisch@gmx.de>
462
463       This library is free software; you can redistribute it and/or modify it
464       under the terms of the GNU Library General Public License as published
465       by the Free Software Foundation; either version 2.1 of the License, or
466       (at your option) any later version.
467
468
469
470perl v5.28.0                      2018-05-22                           Gtk3(3)
Impressum