[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
Re: Is it possible to stop a signal callback?
- From: zentara <zentara1 sbcglobal net>
- To: gtk-perl-list gnome org
- Subject: Re: Is it possible to stop a signal callback?
- Date: Sun, 5 Aug 2007 13:35:41 -0400
On Sun, 05 Aug 2007 23:35:24 +0800
"Ye Wenbin" <wenbinye gmail com> wrote:
>Hi,
>In my application, there is a callback which may take a long time to
>finish.
>Is it possible to return from the callback when user really need? For
>example,
>code as following, can I press the button 'cancel' to stop the counting?
>Is there any document about thread in Gtk2?
Have you looked at
http://forgeftp.novell.com/gtk2-perl-study/download/
it will answer alot of questions.
>$but = Gtk2::Button->new('start');
>$but->signal_connect(
> 'clicked' => sub {
> my $i = 0;
Don't use while(1) or sleep in a gui script, they cause malfunctions.
> while ($i < 10) {
> sleep( 1 );
> $i++;
> print "I'm working\n";
> }
> return FALSE;
> }
>);
Try this:
#!/usr/bin/perl
use warnings;
use strict;
use Gtk2 '-init';
use Glib qw(TRUE FALSE);
my $cancel = 0;
my $window = Gtk2::Window->new('toplevel');
$window->signal_connect('delete_event' => sub { Gtk2->main_quit; });
my $hbox= Gtk2::HBox->new(FALSE, 0);
my $but;
$but = Gtk2::Button->new('start');
$but->signal_connect(
'clicked' => sub {
my $i = 0;
# while ($i < 1000) {
# # sleep( 1 );
# $i++;
# print "I'm working $i\n";
my $id = Glib::Timeout->add (1000, sub{
$i++;
if($i > 1000){print "done\n";$cancel = 0; return FALSE;}
if($cancel==1){print "done\n";$cancel = 0; return FALSE;}
print "I'm working $i\n";
});
#}
return FALSE;
}
);
$hbox->pack_start($but, TRUE, TRUE, 5);
$but = Gtk2::Button->new('Cancel');
$but->signal_connect(
'clicked' => sub {
$cancel = 1;
warn "Stop it\n";
}
);
$hbox->pack_start($but, TRUE, TRUE, 5);
$window->add($hbox);
$window->show_all();
Gtk2->main;
__END__
zentara
--
I'm not really a human, but I play one on earth.
http://zentara.net/japh.html
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]