diff --git a/lib/Gtk3.pm b/lib/Gtk3.pm index a6bb17e..127d4f3 100644 --- a/lib/Gtk3.pm +++ b/lib/Gtk3.pm @@ -94,6 +94,43 @@ sub Gtk3::Dialog::_gtk3_perl_response_converter { return ($dialog, $_GTK_RESPONSE_ID_TO_NICK->($id)); } +my $_GTK_ICON_SIZE_ID_TO_NICK = sub { + my ($id) = @_; + { + local $@; + my $nick = eval { Glib::Object::Introspection->convert_enum_to_sv ( + 'Gtk3::IconSize', $id) }; + if (defined $nick) { + return $nick; + } + } + { + my $nick = Gtk3::IconSize::get_name ($id); + if (defined $nick) { + return $nick; + } + } + return $id; +}; +my $_GTK_ICON_SIZE_NICK_TO_ID = sub { + my ($nick) = @_; + { + local $@; + my $id = eval { Glib::Object::Introspection->convert_sv_to_enum ( + 'Gtk3::IconSize', $nick) }; + if (defined $id) { + return $id; + } + } + { + my $id = Gtk3::IconSize::from_name ($nick); + if ($id) { # if it's not zero + return $id; + } + } + return $nick; +}; + # - gdk customization ------------------------------------------------------- # my @_GDK_HANDLE_SENTINEL_BOOLEAN_FOR = qw/ @@ -774,6 +811,12 @@ sub Gtk3::HBox::new { $_GTK_BASENAME, 'HBox', 'new', $class, $homogeneous, $spacing); } +sub Gtk3::Image::new_from_stock { + return Glib::Object::Introspection->invoke ( + $_GTK_BASENAME, 'Image', 'new_from_stock', + $_[0], $_[1], $_GTK_ICON_SIZE_NICK_TO_ID->($_[2])); +} + sub Gtk3::ImageMenuItem::new { my ($class, $mnemonic) = @_; if (defined $mnemonic) {