use strict;
use warnings;
use Tk;

my $mw = MainWindow->new();

# fuer die Menueleiste, es ginge auch ein Frame:
my $toplevel = $mw->toplevel;      

# Die Menueleiste wird in den Kopf des Fensters gehaengt
my $menubar = $toplevel->Menu(-type => 'menubar');
$toplevel->configure(-menu => $menubar);

# Nun bauen wir ein Datei-Menue
my $datei = $menubar->cascade(-label => 'Datei',
                              -tearoff => 0);

$datei->command(-label => 'New',  -command => [ \&zeige, 'New ' ]);
$datei->command(-label => 'Load', -command => [ \&zeige, 'Load' ]);
$datei->command(-label => 'Save', -command => [ \&zeige, 'Save' ]);
$datei->separator();
$datei->command(-label => 'Quit', -command => sub {exit;});

my $opt = $menubar->cascade(-label => 'Options',
                              -tearoff => 0);

$opt->command(-label => 'Zeige', -command => sub{zeige()});
$opt->command(-label => 'Boing', -command => [$mw => 'bell']);
$opt->separator();
$opt->command(-label => 'Quit',  -command => sub {exit;});

my $farbe = $menubar->cascade(-label => 'Farbe',
                              -tearoff => 0);

for my $col qw(red orange yellow green blue purple)
  {
  $farbe->radiobutton(-label => $col,
                      -command => sub{faerbe($col)},
                      -background => $col);
  }

my $entry = $mw->Entry()->pack(-side => 'left');

my $anzeige = $mw->Label(-text=>"", 
                         -relief => 'groove',
                         -width => 10)
                   ->pack(-side => 'bottom');

MainLoop;

sub zeige 
  {
  my $val;
  if ($_[0]) { $val = $_[0]; }
  else       { $val = $entry->get; }
  $anzeige->configure(-text=>$val);
  }

sub faerbe 
  { $entry->configure(-background => shift); }

