Provided by: libgtk3-perl_0.038-3_all bug

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.  The principles underlying the mapping
       from C to Perl are explained in the documentation of Glib::Object::Introspection, on which "Gtk3" is
       based.

       Glib::Object::Introspection also comes with the "perli11ndoc" program which displays the API reference
       documentation of all installed libraries organized in accordance with these principles.

   Wrapped libraries
       "Gtk3" automatically sets up the following correspondence between C libraries and Perl packages:

         Library       | Package
         --------------+----------
         Gtk-3.0       | Gtk3
         Gdk-3.0       | Gtk3::Gdk
         GdkPixbuf-2.0 | Gtk3::Gdk
         GdkPixdata-2.0| Gtk3::Gdk
         Pango-1.0     | Pango

   Import arguments
       When importing "Gtk3", you can pass "-init" as in "use Gtk3 -init;" to have "Gtk3::init" automatically
       called.  You can also pass a version number to require a certain version of "Gtk3".

   Customizations and overrides
       In order to make things more Perlish or to make porting from "Gtk2" to "Gtk3" easier, "Gtk3" customizes
       the API generated by Glib::Object::Introspection in a few spots:

       •   The array ref normally returned by the following functions is flattened into a list:

           Gtk3::ActionGroup::list_actions
           Gtk3::Builder::get_objects
           Gtk3::CellLayout::get_cells
           Gtk3::Container::get_children
           Gtk3::SizeGroup::get_widgets
           Gtk3::TreePath::get_indices
           Gtk3::TreeView::get_columns
           Gtk3::UIManager::get_action_groups
           Gtk3::UIManager::get_toplevels
           Gtk3::Window::list_toplevels
           Gtk3::stock_list_ids
           Gtk3::Gdk::Pixbuf::get_formats
       •   The  following  functions  normally  return a boolean and additional out arguments, where the boolean
           indicates whether the out arguments are valid.  They are altered such that when the boolean is  true,
           only  the  additional  out  arguments  are  returned, and when the boolean is false, an empty list is
           returned.

           Gtk3::TextBuffer::get_selection_bounds
           Gtk3::TreeModel::get_iter
           Gtk3::TreeModel::get_iter_first
           Gtk3::TreeModel::get_iter_from_string
           Gtk3::TreeModel::iter_children
           Gtk3::TreeModel::iter_nth_child
           Gtk3::TreeModel::iter_parent
           Gtk3::TreeModelFilter::convert_child_iter_to_iter
           Gtk3::TreeModelSort::convert_child_iter_to_iter
           Gtk3::TreeSelection::get_selected
           Gtk3::TreeView::get_dest_row_at_pos
           Gtk3::TreeView::get_path_at_pos
           Gtk3::TreeView::get_tooltip_context
           Gtk3::TreeView::get_visible_range
           Gtk3::TreeViewColumn::cell_get_position
           Gtk3::stock_lookup
           Gtk3::Gdk::Event::get_axis
           Gtk3::Gdk::Event::get_button
           Gtk3::Gdk::Event::get_click_count
           Gtk3::Gdk::Event::get_coords
           Gtk3::Gdk::Event::get_keycode
           Gtk3::Gdk::Event::get_keyval
           Gtk3::Gdk::Event::get_scroll_direction
           Gtk3::Gdk::Event::get_scroll_deltas
           Gtk3::Gdk::Event::get_state
           Gtk3::Gdk::Event::get_root_coords
           Gtk3::Gdk::Window::get_origin
       •   Values of type Gtk3::ResponseType are converted to and from  nick  names  if  possible,  while  still
           allowing raw IDs, in the following places:

           - For Gtk3::Dialog and Gtk3::InfoBar: the signal "response" as well as the methods
           "add_action_widget", "add_button", "add_buttons", "response", "set_default_response" and
           "set_response_sensitive".
           - For Gtk3::Dialog: the methods "get_response_for_widget", "get_widget_for_response", "run" and
           "set_alternative_button_order".
       •   Values  of type Gtk3::IconSize are converted to and from nick names if possible, while still allowing
           raw IDs, in the following places:

           - Gtk3::Image: the constructors new_from_stock, new_from_icon_set, new_from_icon_name and
           new_from_gicon, the getters get_stock, get_icon_set, get_icon_name and get_gicon and the setters
           set_from_stock, set_from_icon_set, set_from_icon_name, set_from_gicon.
           - Gtk3::Widget: the method render_icon.
       •   The constants "Gtk3::EVENT_PROPAGATE" and "Gtk3::EVENT_STOP"  can  be  used  in  handlers  for  event
           signals  like  "key-press-event"  to  indicate  whether  or not the event should continue propagating
           through the widget hierarchy.

       •   The records corresponding to the various Gtk3::Gdk::Event types, like "expose" or "key-release",  are
           represented  as  objects  blessed  into  specific  Perl  packages,  like  "Gtk3::Gdk::EventExpose" or
           "Gtk3::Gdk::EventKey", that all inherit from  "Gtk3::Gdk::Event".   This  allows  you  to  seemlessly
           access type-specific fields as well as common fields, as in "$event->window" or "$event->keyval".

       •   Gtk3::Gdk::Atom  has  overloads  for  the  "=="  and  "!="  operators  that check for equality of the
           underlying atoms.

       •   For backwards compatibility, the functions "Gtk3::get_version_info" and "Gtk3::GET_VERSION_INFO"  are
           provided,    and    the   functions   "Gtk3::CHECK_VERSION",   "Gtk3::check_version",   "Gtk3::init",
           "Gtk3::init_check", "Gtk3::main", "Gtk3::main_level" and "Gtk3::main_quit" can be  called  as  class-
           static  or  as  normal  functions:  for  example,  "Gtk3->main_quit"  and  "Gtk3::main_quit" are both
           supported.  Additionally,  "Gtk3::init"  and  "Gtk3::init_check"  automatically  handle  passing  and
           updating @ARGV as appropriate.

       •   A Perl reimplementation of "Gtk3::show_about_dialog" is provided.

       •   Perl     reimplementations     of     "Gtk3::ActionGroup::add_actions",    "add_radio_actions"    and
           "add_toggle_actions" are provided.

       •   "Gtk3::Builder::add_objects_from_file" and "add_objects_from_string" also accept a  list  of  objects
           instead of an array ref.

       •   "Gtk3::Builder::add_objects_from_string"  and  "add_from_string" don't take length arguments, as they
           are computed automatically.

       •   A Perl reimplementation of "Gtk3::Builder::connect_signals" is provided.

       •   The   default   "new"   constructors   of   Gtk3::Button,    Gtk3::CheckButton,    Gtk3::ColorButton,
           Gtk3::FontButton and Gtk3::ToggleButton reroute to "new_with_mnemonic" if given an extra argument.

       •   The  default  "new"  constructor  of  Gtk3::CheckMenuItem reroutes to "new_with_mnemonic" if given an
           extra argument.

       •   The "length" argument of "Gtk3::Clipboard::set_text" is optional.

       •   Perl reimplementations of  "Gtk3::Container::add_with_properties",  "Gtk3::Container::child_get"  and
           "Gtk3::Container::child_set" are provided.

       •   "Gtk3::Container::find_child_property"  and "Gtk3::Container::list_child_properties" are forwarded to
           the corresponding functions in "Gtk3::ContainerClass".

       •   "Gtk3::Container::get_focus_chain" returns a list of widgets, or an empty list.

       •   "Gtk3::Container::set_focus_chain" also accepts a list of widgets.

       •   "Gtk3::CssProvider::load_from_data" also accepts a string.

       •   For Gtk3::Dialog and Gtk3::InfoBar, a Perl implementation of "add_buttons" is provided.

       •   "Gtk3::Dialog::new" can optionally be called as "Gtk3::Dialog->new (TITLE, PARENT, FLAGS, ...)" where
           "..." is a series of button text and response id pairs.

       •   A Perl implementation of "Gtk3::Dialog::new_with_buttons" is provided.

       •   The "length" argument of "Gtk3::Editable::insert_text" is optional.

       •   A Perl implementation of "Gtk3::FileChooserDialog::new" is provided.

       •   "Gtk3::HBox::new" uses the defaults homogeneous = FALSE and spacing = 5.

       •   The default "new" constructor of Gtk3::ImageMenuItem reroutes  to  "new_with_mnemonic"  if  given  an
           extra argument.

       •   "Gtk3::InfoBar::new"  can  optionally be called as "Gtk3::InfoBar->new (...)" where "..." is a series
           of button text and response id pairs.

       •   A Perl reimplementation of "Gtk3::InfoBar::new_with_buttons" is provided.

       •   The default "new" constructor of Gtk3::LinkButton reroutes to  "new_with_label"  if  given  an  extra
           argument.

       •   "Gtk3::ListStore::new" also accepts a list of type names.

       •   Gtk3::ListStore has a "get" method that calls "Gtk3::TreeModel::get" instead of "Glib::Object::get".

       •   "Gtk3::ListStore::insert_with_values"  also accepts a list of "column => value" pairs and reroutes to
           "insert_with_valuesv".

       •   "Gtk3::ListStore::set" also accepts a list of "column => value" pairs.

       •   "Gtk3::Menu::popup" reroutes to "popup_for_device" for better callback handling.

       •   "Gtk3::Menu::popup_for_device"  allows  the  given  menu  position  func  to  return  only  x  and  y
           coordinates, defaulting "push_in" to FALSE.

       •   The  default  "new"  constructor  of Gtk3::MenuItem reroutes to "new_with_mnemonic" if given an extra
           argument.

       •   A Perl reimplementation of "Gtk3::MessageDialog::new" is provided.

       •   A Perl reimplementation of "Gtk3::MessageDialog::new_with_markup" is provided.

       •   A      Perl      reimplementation      of      "Gtk3::MessageDialog::format_secondary_text"       and
           "Gtk3::MessageDialog::format_secondary_markup" is provided

       •   The  group  handling  in  the  constructors  and  accessors  of Gtk3::RadioAction, Gtk3::RadioButton,
           Gtk3::RadioMenuItem and Gtk3::RadioToolButton is amended to work correctly when given array  refs  of
           group members or single group members.

       •   Perl reimplementations of "Gtk3::RecentChooserDialog::new" and "new_for_manager" are provided.

       •   Redirects   are  provided  from  "Gtk3::Stock::[function]"  to  "Gtk3::stock_[function]"  for  "add",
           "add_static", "list_ids", "lookup" and "set_translate_func".

       •   A Perl reimplementation of "Gtk3::StyleContext::get" is provided.

       •   An override for "Gtk3::TargetEntry::new" is provided that automatically handles the conversion of the
           "flags" argument.

       •   A Perl reimplementation of "Gtk3::TextBuffer::create_tag" is provided.

       •   The  "length"  arguments  of  "Gtk3::TextBuffer::insert",  "insert_at_cursor",  "insert_interactive",
           "insert_interactive_at_cursor", "insert_markup" and "set_text" are optional.

       •   Perl  reimplementations  of  "Gtk3::TextBuffer::insert_with_tags"  and "insert_with_tags_by_name" are
           provided which do not require a "length" argument.

       •   A Perl reimplementation of "Gtk3::TreeModel::get" is provided.

       •   A redirect is  added  from  "Gtk3::TreeModelFilter::new"  to  <Gtk3::TreeModel::filter_new>  so  that
           Gtk3::TreeModelFilter objects can be constructed normally.

       •   Gtk3::TreeModelFilter   has   a   "get"   method   that   calls   "Gtk3::TreeModel::get"  instead  of
           "Glib::Object::get".

       •   Prior  to  gtk+  3.24.14,  a  redirect  is  added   from   "Gtk3::TreeModelSort::new_with_model"   to
           <Gtk3::TreeModel::sort_new_with_model>   so  that  Gtk3::TreeModelSort  objects  can  be  constructed
           normally.

       •   Gtk3::TreeModelSort   has   a   "get"   method   that   calls   "Gtk3::TreeModel::get"   instead   of
           "Glib::Object::get".

       •   "Gtk3::TreePath::new" redirects to "new_from_string" if an additional argument is given.

       •   A Perl reimplementation of "Gtk3::TreePath::new_from_indices" is provided.

       •   "Gtk3::TreeStore::new" also accepts a list of type names.

       •   Gtk3::TreeStore has a "get" method that calls "Gtk3::TreeModel::get" instead of "Glib::Object::get".

       •   "Gtk3::TreeStore::insert_with_values" also accepts a list of "column => value" pairs.

       •   "Gtk3::TreeStore::set" also accepts a list of "column => value" pairs.

       •   "Gtk3::TreeView::new" redirects to "new_with_model" if an additional argument is given.

       •   A Perl reimplementation of "Gtk3::TreeView::insert_column_with_attributes" is provided.

       •   A Perl reimplementation of "Gtk3::TreeViewColumn::new_with_attributes" is provided.

       •   Perl          reimplementations         of         "Gtk3::TreeViewColumn::set_attributes"         and
           "Gtk3::CellLayout::set_attributes" are provided.

       •   "Gtk3::UIManager::add_ui_from_string" takes no "length" argument.

       •   "Gtk3::VBox::new" uses the defaults homogeneous = FALSE and spacing = 5.

       •   "Gtk3::Widget::add_events" and "Gtk3::Widget::set_events" also accept strings, array  references  and
           "Gtk3::Gdk::EventMask" objects for the "events" parameter.

       •   "Gtk3::Widget::get_events"  returns  a  "Gtk3::Gdk::EventMask"  object  that  can also be compared to
           numeric values with "==" and ">=".

       •   "Gtk3::Widget::find_style_property" and "Gtk3::Widget::list_style_properties" are  forwarded  to  the
           corresponding functions in "Gtk3::WidgetClass".

       •   A Perl reimplementation of "Gtk3::Widget::style_get" is provided.

       •   "Gtk3::Window::new" uses the default type = 'toplevel'.

       •   A  constructor  "Gtk3::Gdk::RGBA::new" is provided that can be called as "Gtk3::Gdk::RGBA->new (r, g,
           b, a)".

       •   "Gtk3::Gdk::RGBA::parse"  can  be  called  as  a  function  returning  a  new  instance   ("$rgba   =
           Gtk3::Gdk::RGBA::parse ($spec)") or as a method ("$rgba->parse ($spec)").

       •   "Gtk3::Gdk::Window::new" optionally computes the "attr_mask" automatically from the given "attr".

       •   "Gtk3::Gdk::Pixbuf::get_pixels" returns a byte string.

       •   "Gtk3::Gdk::Pixbuf::new_from_data"  is reimplemented in terms of "new_from_bytes" (with gdk-pixbuf >=
           2.32) or "new_from_inline" (with gtk-pixbuf < 2.32) for correct memory management.   No  "destroy_fn"
           and "destroy_fn_data" arguments are needed.

       •   "Gtk3::Gdk::Pixbuf::new_from_inline"  does  not  take  a "copy_pixels" argument.  It is always set to
           TRUE for correct memory management.

       •   "Gtk3::Gdk::Pixbuf::new_from_xpm_data" also accepts a list of XPM lines.

       •   "Gtk3::Gdk::Pixbuf::save", "save_to_buffer" and "save_to_callback" also accept "key =>  value"  pairs
           and invoke the correct C function as appropriate for the current gdk-pixbuf version.

       •   The "length" arguments of "Pango::Layout::set_text" and "set_markup" are optional.

   Perl compatibility
       As  of  5.20.0,  perl  does not automatically re-check the locale environment for changes.  If a function
       thus changes the locale behind perl's back, problems might arise  whenever  numbers  are  formatted,  for
       example  when  checking  versions.   To  ensure  perl's  assumption  about the locale are up-to-date, the
       functions "Gtk3::init", "init_check", "init_with_args" and "parse_args" are amended to let perl  know  of
       any changes.

   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: In gtk+ < 3.16, the position callback  passed  to  popup()  does  not  receive  x  and  y
           parameters.

       •   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::Widget:    grab_add()    and    grab_remove()    are    methods    now:    "$widget->grab_add",
           "$widget->grab_remove".

       •   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

       •   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>.

       •   Glib

       •   Glib::Object::Introspection

AUTHORS

       Torsten Schönfeld <kaffeetisch@gmx.de>

COPYRIGHT AND LICENSE

       Copyright (C) 2011-2015 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.

perl v5.36.0                                       2022-11-19                                          Gtk3(3pm)