#!/usr/bin/perl
#
# Bedienprogramm fr den Kopiererdienst.

use strict;
use warnings;

use Tk;

our $MainWindow = MainWindow->new;
$MainWindow->title("Kopierer");
$MainWindow->resizable(0,0);

# Jederzeitiger Abbruch.
$MainWindow->bind('<Alt-x>', sub { $MainWindow->destroy });


# Dialogelemente erzeugen.
my $Anzahl = 1;
my $ScAnzahl = $MainWindow->Scale(-from => 1,
				  -to   => 20,
				  -orient => 'horizontal',
				  -label => 'Anzahl der Kopien',
				  -length => '200',
				  -variable => \$Anzahl)
  ->pack;

my $Schwelle = 70;
my $ScSchwelle = $MainWindow->Scale(-from => 0,
				    -to   => 100,
				    -orient => 'horizontal',
				    -label => 'Schwarz-Wei-Schwelle in %',
				    -length => '200',
				    -variable => \$Schwelle)
  ->pack;

my $FrRahmen = $MainWindow->Frame->pack;

my $BuKopieren = $FrRahmen->Button(-text => 'Kopieren',
				  -command => sub { Kopiere($Anzahl, $Schwelle) })
  ->pack(-side => 'left');
$BuKopieren->focus;

my $BuAbbrechen = $FrRahmen->Button(-text => 'Abbrechen',
				   -command => sub { $MainWindow->destroy })
  ->pack(-side => 'right');


MainLoop;

# Kopieren ausfhren.
# Parameter: Anzahl, Schwelle.
# Rckgabe:  keine.
sub Kopiere($$) {
  my $Anzahl = shift;
  my $Schwelle = shift;

  use IO::Socket;
  my $socket = new IO::Socket::INET (PeerAddr => 'copyserver', # Name des Servers.
				     PeerPort => 'kopierer',
				     Proto    => 'tcp');
  unless ($socket) {
    use Tk::Dialog;
    my $DiFehler = $MainWindow->Dialog(-title => 'Verbindungsfehler',
				       -text  => "Fehler: $!",
				       -bitmap => 'error',
				       -default_button => 'Ok',
				       -buttons => ['Ok']);
    my $Antwort = $DiFehler->Show;
    return;
  } else {
    print $socket "Anzahl=$Anzahl\nSchwelle=$Schwelle\n.\n";
    my $Rueckmeldung = <$socket>;
    if ($Rueckmeldung) {
      use Tk::Dialog;
      my $DiFehler = $MainWindow->Dialog(-title => 'Scan-Fehler',
					 -text  => "Fehler: $Rueckmeldung",
					 -bitmap => 'error',
					 -default_button => 'Ok',
					 -buttons => ['Ok']);
      my $Antwort = $DiFehler->Show;
      return;
    }
  }
}
