use strict;
use warnings;
use Tk;
use Win32::Sound;

# Musikdatei aus der Kommandozeile
my $sound = $ARGV[0];

# Delay-Zeit Timer im ms
my $delaytime = 5000;

my $timer_id;

# GUI-Fenster erzeugen
my $mw = new MainWindow();

# Buttonzs auf dem GUI-Fenster platzieren
my %row1 = (-side=>'left',  -pady=>10, -padx=>10);
my %row2 = (-side=>'bottom',-pady=>10, -padx=>10);

my $b5=$mw->Button(-text => "EXIT", 
                   -command => sub {exit})->pack(%row2);
my $b1=$mw->Button(-text => "play", 
                   -command => \&start_sound)->pack(%row1);
my $b2=$mw->Button(-text => "stop", 
                   -command => \&stop_sound)->pack(%row1);
my $b3=$mw->Button(-text => "start timer", 
                   -command => \&timer_on)->pack(%row1);
my $b4=$mw->Button(-text => "stop timer", 
                   -command => \&timer_off)->pack(%row1);
MainLoop();

# Callback zum Abspielen der Sounddatei
sub start_sound()
  {
  Win32::Sound::Volume('100%');
  Win32::Sound::Play($sound,SND_ASYNC);
  }

# Callback macht "wuff"
sub wuff()
  {
  Win32::Sound::Volume('100%');
  Win32::Sound::Play("dog.wav", SND_ASYNC);
  }

# Ton aus
sub stop_sound()
  {  Win32::Sound::Stop(); }
  
# Timer starten  
sub timer_on()
  {
  if (! defined $timer_id)
    { $timer_id = $mw->repeat($delaytime, \&wuff); }
  }

# Timer beenden
sub timer_off()
  {
  if (defined $timer_id)
    {
    $timer_id->cancel;
    undef($timer_id);
    }
  }