use warnings;
use strict;
use Tk;

my ($info, $filename);

# Das mw erzeugen
my $mw = MainWindow->new();

# Rahmen erzeugen
my $frame = $mw->Frame->pack(-side => 'top', -fill => 'x');

# benoetigte Widgets im Frame erzeugen
# Dateinameneingabe:
$frame->Label(-text => "Dateinamen eingeben: ")
          ->pack(-side => 'left', -anchor => 'w');
$frame->Entry(-textvariable => \$filename)
          ->pack(-side => 'left', -anchor => 'w', 
                 -fill => 'x',    -expand => 1);
# Exit-Button                 
$frame->Button(-text => "   Exit   ", -command => sub { exit; } )
          ->pack(-side => 'right');

# "Save"-Button
$frame->Button(-text => "Speichern", -command => \&save_file)
          ->pack(-side => 'right', -anchor => 'e');

# "Load"-Button          
$frame->Button(-text => "  Laden   ", -command => \&load_file)
          ->pack(-side => 'right', -anchor => 'e');

# Widgets unter dem Frame: Info-Feld          
$mw->Label(-textvariable => \$info, -relief => 'ridge')
          ->pack(-side => 'bottom', -fill => 'x');

# Das Text-Widget
my $text = $mw->Scrolled("Text")
          ->pack(-side => 'bottom', -fill => 'both', -expand => 1);

MainLoop;

# Dateilade-Funktion
sub load_file 
  {
  # Info ausgeben
  $info = "Lade Datei $filename ...";
  $text->delete('1.0', 'end');
  # Datei oeffenen und einlesen
  if (!open(FH, "$filename")) 
    {
    $text->insert('end', "Oops: $!\n"); 
    return; 
    }
  while (<FH>) 
    { $text->insert('end', $_); }
  close (FH);
  # Info ausgeben
  $info = "Datei '$filename' geladen";
  }

# Datei speichern
sub save_file 
  {
  # Info ausgeben
  $info = "Speichere $filename";
  open (FH, ">", $filename);
  print FH $text->get('1.0', 'end');
  close(FH);
  $info = "Datei $filename gespeichert";
  }
