package My::Gui; ########################################################### # USES ########################################################### use strict; use warnings; use base 'Exporter'; use Tk; use My::ThreadManager; ########################################################### # EXPORT ########################################################### our @EXPORT = qw(createMyGui); ########################################################### # VARIABLES ########################################################### my %gui; my %thread_data = ( 'number' => 7 ); ########################################################### # PUBLIC FUNCTIONS ########################################################### sub createMyGui { $gui{'mw'} = new MainWindow; $gui{'mw'}->title("Thread Example"); $gui{'mw'}->protocol('WM_DELETE_WINDOW' => sub { evWorkCancel() unless isWorkFinished(); killMyThread(); }); fillMainWindow($gui{'mw'}); } ########################################################### # PRIVATE FUNCTIONS ########################################################### sub fillMainWindow { my $mw = $_[0]; $mw->{'start_b'} = $mw->Button('-relief' => 'raised', '-text' => 'START', '-command' => sub { evWorkStart(\%thread_data); }); $mw->{'cancel_b'} = $mw->Button('-relief' => 'raised', '-text' => 'CANCEL', '-command' => sub { evWorkCancel(); }); $mw->{'start_b'}->pack(); $mw->{'cancel_b'}->pack(); } 1;