Shlomi Fish-san from Moose mailing list gave me an answer for my last
question.
Thank you, Shlomi-san
tsuyoshi
-------- Original Message --------
Subject: Re: need your help for Gtk3 and Moose
Date: Tue, 13 May 2014 09:41:39 +0300
From: Shlomi Fish <shlo...@shlomifish.org>
CC: mo...@perl.org
Hi Tsuyoshi,
On Tue, 13 May 2014 15:02:18 +0900
tsuyoshi okita <825...@gmail.com> wrote:
Dear,
I am a newbie to Moose.
I have been trying to use Moose for Gtk3, and I do not think Moose is
happy with Builder.
After Moose load ui file, has 'root_window' tries to get main_window
object, and it seems this is where the problem gets generated.
I've attached a patch to fix the problem. With it, the program runs fine her.
Note that I removed some isa => ... specifiers because I thought they were the
problem, but I don't think they were necessary. The main change was adding
sanity checks (Which are also not necessary) and converting an attribute to
"lazy => 1" so it will be initialised in the right time.
Hope it works fine for you.
Regards,
Shlomi Fish
--
-----------------------------------------------------------------
Shlomi Fish http://www.shlomifish.org/
Optimising Code for Speed - http://shlom.in/optimise
Q: I’ll be about 6.5 milliard Terran years next September.
— http://www.shlomifish.org/humour/Star-Trek/We-the-Living-Dead/
Please reply to list if it's a mailing list post - http://shlom.in/reply .
diff -u -r ORIG/gtk3_moose_with_builder.pl NEW/gtk3_moose_with_builder.pl
--- ORIG/gtk3_moose_with_builder.pl 2014-05-13 09:33:48.941813572 +0300
+++ NEW/gtk3_moose_with_builder.pl 2014-05-13 09:38:19.203687439 +0300
@@ -38,9 +38,19 @@
);
has 'builder' => (
is => 'rw',
- isa => 'Gtk3::Builder',
+ lazy => 1,
+ # isa => 'Gtk3::Builder',
default => sub {
- return Gtk3::Builder->new;
+ my ( $self ) = @_;
+ my $ret = Gtk3::Builder->new;
+
+ if (!defined($ret)) {
+ die "Cannot init Gtk3::Builder";
+ }
+ $ret->add_from_file($self->ui_file);
+ $ret->connect_signals(undef);
+
+ return $ret;
},
trigger => sub {
my ( $self ) = @_;
@@ -53,7 +63,7 @@
#--------------------
# I believe this is causing the problem.
#--------------------
- isa => 'GObject',
+ # isa => 'GObject',
#isa => 'Gtk3::Object',
lazy_build => 1,
trigger => sub {
@@ -63,10 +73,17 @@
);
sub _build_root_window {
my ( $self ) = @_;
+
#--------------------
# I believe this is causing the problem.
#--------------------
- return $self->builder->get_object('toplevel');
+ my $ret = $self->builder->get_object('toplevel');
+
+ if (!defined($ret)) {
+ die "Could not get toplevel object.";
+ }
+
+ return $ret;
}
sub quit_app {
Gtk3->main_quit;
Only in NEW/: gtk3_moose_with_builder.pl~
_______________________________________________
gtk-perl-list mailing list
gtk-perl-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-perl-list