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

Reply via email to