On 22/12/2007, muppet <[EMAIL PROTECTED]> wrote: > interactive.pl: a quick transliteration of gtkimageview/tests/ > interactive.c. Note that the way this program uses the GtkImageTransp > values in the UI manager actions doesn't really play nicely with perl > syntax for enums, so there's a terrible, evil, horrible hack in its > place. If you golf this down to more perlish code, using closures and > such, you can sidestep the problem.
Do you mind my including this in an examples directory, attributing you? I was getting: No anim! Can't call method "set_sensitive" on an undefined value at ./examples/interactive.pl line 74. *** unhandled exception in callback: *** FATAL: invalid enum GtkImageTransp value 1, expecting: color / GTK_IMAGE_TRANSP_COLOR, background / GTK_IMAGE_TRANSP_BACKGROUND, grid / GTK_IMAGE_TRANSP_GRID at ./examples/interactive.pl line 206. *** ignoring at ./examples/interactive.pl line 602. which the attached patch fixes. But I don't see how to do it differently with a closure. I'd appreciate a hint. I attempted to clean up the namespace with the second patch, but now the tests fail: t/animview.............NOK 3# Failed test 'The object isa Gtk2::ImageView::Anim' # in t/animview.t at line 23. # The object isn't a 'Gtk2::ImageView::Anim' it's a 'Gtk2::ImageView' t/imagescrollwin.......ok 1/3Usage: Gtk2::Table::new(class, rows, columns, homogeneous=FALSE) at /usr/lib/perl5/Glib.pm line 211. t/imagetooldragger.....ok t/imagetoolselector....ok 1/4Can't locate object method "get_selection" via package "Gtk2::ImageView::Tool::Selector" at t/imagetoolselector.t line 29. I must have done something right, as t/imagetooldragger is OK, but t/imagescrollwin is particularly strange. Thanks for any clue. Jeff
Index: examples/interactive.pl =================================================================== --- examples/interactive.pl (revision 447) +++ examples/interactive.pl (working copy) @@ -83,12 +100,16 @@ sprintf "(%d, %d)-[%d, %d]", $r->x, $r->y, $r->width, $r->height; } +sub get_enum_nick { + my ($package, $value) = @_; + my @v = Glib::Type->list_values ($package); + return $v[$value]{nick}; +} + sub get_enum_value { my ($package, $string) = @_; my @v = Glib::Type->list_values ($package); for (my $i = 0 ; $i < @v ; $i++) { use Data::Dumper; print Dumper($v[$i]); return $i if $v[$i]{name} eq $string or $v[$i]{nick} eq $string; } } @@ -199,11 +220,11 @@ sub change_transp_type_cb { my ($action, $current) = @_; my $color = 0; my $transp = $current->get_current_value (); if ($transp == GTK_IMAGE_TRANSP_COLOR) { $color = 0x000000; } - $view->set_transp ($transp, $color); + $view->set_transp (get_enum_nick('Gtk2::ImageTransp', $transp), $color); } sub menu_item_select_cb { @@ -495,7 +516,7 @@ $uimanager->insert_action_group ($image_group, 0); # Transform group - my $transform_group = Gtk2::ActionGroup->new ("transform"); + $transform_group = Gtk2::ActionGroup->new ("transform"); if ($transform_group) { $transform_group->add_actions ([EMAIL PROTECTED]); $transform_group->set_sensitive (FALSE);
Index: ImageNav.xs =================================================================== --- ImageNav.xs (revision 441) +++ ImageNav.xs (working copy) @@ -1,7 +1,7 @@ #include "gtkimageviewperl.h" -MODULE = Gtk2::ImageNav PACKAGE = Gtk2::ImageNav PREFIX = gtk_image_nav_ +MODULE = Gtk2::ImageView::Nav PACKAGE = Gtk2::ImageView::Nav PREFIX = gtk_image_nav_ GtkWidget * Index: IImageTool.xs =================================================================== --- IImageTool.xs (revision 441) +++ IImageTool.xs (working copy) @@ -79,7 +79,7 @@ } -MODULE = Gtk2::IImageTool PACKAGE = Gtk2::IImageTool PREFIX = gtk_iimage_tool_ +MODULE = Gtk2::ImageView::Tool PACKAGE = Gtk2::ImageView::Tool PREFIX = gtk_iimage_tool_ gboolean Index: ImageToolPainter.xs =================================================================== --- ImageToolPainter.xs (revision 441) +++ ImageToolPainter.xs (working copy) @@ -1,7 +1,7 @@ #include "gtkimageviewperl.h" -MODULE = Gtk2::ImageToolPainter PACKAGE = Gtk2::ImageToolPainter PREFIX = gtk_image_tool_painter_ +MODULE = Gtk2::ImageView::Tool::Painter PACKAGE = Gtk2::ImageView::Tool::Painter PREFIX = gtk_image_tool_painter_ GtkIImageTool * Index: maps =================================================================== --- maps (revision 443) +++ maps (working copy) @@ -1,9 +1,10 @@ GTK_TYPE_IMAGE_VIEW GtkImageView GObject Gtk2::ImageView -GTK_TYPE_ANIM_VIEW GtkAnimView GObject Gtk2::AnimView -GTK_TYPE_IIMAGE_TOOL GtkIImageTool GObject Gtk2::IImageTool -GTK_TYPE_IMAGE_NAV GtkImageNav GObject Gtk2::ImageNav -GTK_TYPE_IMAGE_SCROLL_WIN GtkImageScrollWin GObject Gtk2::ImageScrollWin -GTK_TYPE_IMAGE_TOOL_DRAGGER GtkImageToolDragger GObject Gtk2::ImageToolDragger -GTK_TYPE_IMAGE_TOOL_SELECTOR GtkImageToolSelector GObject Gtk2::ImageToolSelector -GTKIMAGEVIEWPERL_TYPE_GTK_IMAGE_TRANSP GtkImageTransp GEnum Gtk2::ImageTransp -GDK_TYPE_PIXBUF_DRAW_METHOD GdkPixbufDrawMethod GEnum Gtk2::IImageTool +GTK_TYPE_ANIM_VIEW GtkAnimView GObject Gtk2::ImageView::Anim +GTK_TYPE_IMAGE_NAV GtkImageNav GObject Gtk2::ImageView::Nav +GTK_TYPE_IMAGE_SCROLL_WIN GtkImageScrollWin GObject Gtk2::ImageView::ScrollWin +GTK_TYPE_IIMAGE_TOOL GtkIImageTool GObject Gtk2::ImageView::Tool +GTK_TYPE_IMAGE_TOOL_DRAGGER GtkImageToolDragger GObject Gtk2::ImageView::Tool::Dragger +GTK_TYPE_IMAGE_TOOL_PAINTER GtkImageToolPainter GObject Gtk2::ImageView::Tool::Painter +GTK_TYPE_IMAGE_TOOL_SELECTOR GtkImageToolSelector GObject Gtk2::ImageView::Tool::Selector +GTKIMAGEVIEWPERL_TYPE_GTK_IMAGE_TRANSP GtkImageTransp GEnum Gtk2::ImageView::Transp +GDK_TYPE_PIXBUF_DRAW_METHOD GdkPixbufDrawMethod GEnum Gdk::Pixbuf::Draw::Method Index: t/animview.t =================================================================== --- t/animview.t (revision 441) +++ t/animview.t (working copy) @@ -18,9 +18,9 @@ # Insert your test code below, the Test::More module is use()ed here so read # its man page ( perldoc Test::More ) for help writing this test script. -my $animview = Gtk2::AnimView->new; +my $animview = Gtk2::ImageView::Anim->new; ok(defined $animview, 'new() works'); -isa_ok($animview, 'Gtk2::AnimView'); +isa_ok($animview, 'Gtk2::ImageView::Anim'); ok(defined $animview->get_is_playing, 'get_is_playing() works'); Index: t/imagescrollwin.t =================================================================== --- t/imagescrollwin.t (revision 440) +++ t/imagescrollwin.t (working copy) @@ -22,7 +22,7 @@ $imageview->set_pixbuf(Gtk2::Gdk::Pixbuf->new_from_file ('t/gnome_logo.jpg'), TRUE); -my $imagescrollwin = Gtk2::ImageScrollWin->new($imageview); +my $imagescrollwin = Gtk2::ImageView::ScrollWin->new($imageview); ok(defined $imagescrollwin, 'new() works'); -isa_ok($imagescrollwin, 'Gtk2::ImageScrollWin'); +isa_ok($imagescrollwin, 'Gtk2::ImageView::ScrollWin'); Index: t/imagetoolselector.t =================================================================== --- t/imagetoolselector.t (revision 440) +++ t/imagetoolselector.t (working copy) @@ -22,9 +22,9 @@ $imageview->set_pixbuf(Gtk2::Gdk::Pixbuf->new_from_file ('t/gnome_logo.jpg'), TRUE); -my $selector = Gtk2::ImageToolSelector->new($imageview); +my $selector = Gtk2::ImageView::Tool::Selector->new($imageview); ok(defined $selector, 'new() works'); -isa_ok($selector, 'Gtk2::ImageToolSelector'); +isa_ok($selector, 'Gtk2::ImageView::Tool::Selector'); my $rectangle = $selector->get_selection; ok(defined $rectangle, 'get_selection() works'); Index: t/imagetooldragger.t =================================================================== --- t/imagetooldragger.t (revision 440) +++ t/imagetooldragger.t (working copy) @@ -22,7 +22,7 @@ $imageview->set_pixbuf(Gtk2::Gdk::Pixbuf->new_from_file ('t/gnome_logo.jpg'), TRUE); -my $iimagetool = Gtk2::ImageToolDragger->new($imageview); +my $iimagetool = Gtk2::ImageView::Tool::Dragger->new($imageview); ok(defined $iimagetool, 'new() works'); -isa_ok($iimagetool, 'Gtk2::ImageToolDragger'); +isa_ok($iimagetool, 'Gtk2::ImageView::Tool::Dragger'); Index: ImageToolDragger.xs =================================================================== --- ImageToolDragger.xs (revision 441) +++ ImageToolDragger.xs (working copy) @@ -1,7 +1,7 @@ #include "gtkimageviewperl.h" -MODULE = Gtk2::ImageToolDragger PACKAGE = Gtk2::ImageToolDragger PREFIX = gtk_image_tool_dragger_ +MODULE = Gtk2::ImageView::Tool::Dragger PACKAGE = Gtk2::ImageView::Tool::Dragger PREFIX = gtk_image_tool_dragger_ GtkIImageTool * Index: AnimView.xs =================================================================== --- AnimView.xs (revision 441) +++ AnimView.xs (working copy) @@ -1,7 +1,7 @@ #include "gtkimageviewperl.h" -MODULE = Gtk2::AnimView PACKAGE = Gtk2::AnimView PREFIX = gtk_anim_view_ +MODULE = Gtk2::ImageView::Anim PACKAGE = Gtk2::ImageView::Anim PREFIX = gtk_anim_view_ ## call as $widget = Gtk2::AnimView->new GtkWidget_ornull * Index: ImageScrollWin.xs =================================================================== --- ImageScrollWin.xs (revision 441) +++ ImageScrollWin.xs (working copy) @@ -1,7 +1,7 @@ #include "gtkimageviewperl.h" -MODULE = Gtk2::ImageScrollWin PACKAGE = Gtk2::ImageScrollWin PREFIX = gtk_image_scroll_win_ +MODULE = Gtk2::ImageView::ScrollWin PACKAGE = Gtk2::ImageView::ScrollWin PREFIX = gtk_image_scroll_win_ GtkWidget_ornull * Index: ImageToolSelector.xs =================================================================== --- ImageToolSelector.xs (revision 441) +++ ImageToolSelector.xs (working copy) @@ -1,7 +1,7 @@ #include "gtkimageviewperl.h" -MODULE = Gtk2::ImageToolSelector PACKAGE = Gtk2::ImageToolSelector PREFIX = gtk_image_tool_selector_ +MODULE = Gtk2::ImageView::Tool::Selector PACKAGE = Gtk2::ImageView::Tool::Selector PREFIX = gtk_image_tool_selector_ GtkIImageTool *
_______________________________________________ gtk-perl-list mailing list gtk-perl-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-perl-list