Re: Signal handler args
- From: "Rudy Albachten" <rudy albachten amd com>
- To: goran kirra net
- Cc: "Dermot Musgrove" <dermot glade perl connectfree co uk>, "gtk-perl-list gnome org" <gtk-perl-list gnome org>, gc mandrakesoft com
- Subject: Re: Signal handler args
- Date: Tue, 22 Oct 2002 11:38:04 -0500
If I'm not positive something is an object, instead of:
if (defined $arg2 and $arg2->isa("Gtk2::Gdk::Event")) {
}
I use:
if (UNIVERSAL::isa($arg2, "Gtk2::Gdk::Event")) {
}
This returns false if $arg2 is undefined or isn't a reference.
The first example fails if $arg2 = 10 (any scalar value) or
if $arg2 = \10 (an unblessed reference).
If I made the object and it was never out of my code (kind of like
luggage never being out of my control), I the first, if the user
(other programmer) handed me the object or had a chance to manipulate
it, I use the latter.
On Tue, Oct 22, 2002 at 09:38:04AM +0200, goran kirra net wrote:
Dermot,
I not too happy about the syntax myself,
but the behavior is consistent with how it is done in C
and probably in old gtk-perl(?)
The reason probably is that these signalhandlers are
most often different kind of beast.
You should be able to test the second arggument with
something like (untested code follows):
if (defined $arg2 and $arg2->isa("Gtk2::Gdk::Event"))
{
...
}
I am willing to change this in line with your
suggestion if we can reach consensus.
/g?ran
On Tue, Oct 22, 2002 at 04:11:32AM +0100, Dermot Musgrove wrote:
Hi all,
Following a previous thread, I tried to connect a signal handler to
'button_press_event' and was delighted that it worked - however ...
In the event handler, 'print Dumper(\ _)' produces:
(I passed {'data'=>'test data'} to the data arg of signal_connect)
$VAR1 = [
bless( do{\(my $o = 137040016)}, 'Gtk2::Button' ),
bless( do{\(my $o = 137239944)}, 'Gtk2::Gdk::Event' ),
{
'data' => 'test data'
}
];
Please can we have the args to the signal handlers delivered as:
my ($widgetref, $dataref) = @_;
or for an event handler
my ($widgetref, $dataref, $eventref) = @_;
At least this way, it is possible to write generic handlers that do
not need to know whether the handler is connected to a signal or an
event in order to work. It also makes it possible to auto-generate
simple signal handlers for programmers to edit (Glade-Perl-Two will
do this so I have an interest :-)
I don't know if it is simple to translate the Gtk2::Gdk::Event into
an anonymous hash and pass that to the handler as Gtk-Perl does but
IMO that is any easier thing to use and understand.
Regards, Dermot
_______________________________________________
gtk-perl-list mailing list
gtk-perl-list gnome org
http://mail.gnome.org/mailman/listinfo/gtk-perl-list
--
G?ran Thyni
Senior Technical Consultant
SchlumbergerSema
Lule?, Sweden
_______________________________________________
gtk-perl-list mailing list
gtk-perl-list gnome org
http://mail.gnome.org/mailman/listinfo/gtk-perl-list
--
Rudy Albachten
Advanced Micro Devices
Athlon Design Team
Texas Microprocessor Division
Austin, Texas
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]