#!/usr/bin/perl use strict; use warnings; use Tk; use Data::Dumper qw/Dumper/; use WWW::Leo; my $input = 'noname.pl'; # Hauptfenster my $nw = MainWindow->new(); # Titel des Hauptfensters $nw->title ('Man Machine Interfaces II - UE - BSP 2'); # Text-Widget my $In = $nw->Text (-wrap => 'none')->grid(-column => 0, -row => 0); my $Out = $nw->Text (-wrap => 'none')->grid(-column => 1, -row => 0); # Menü my $mbar = $nw->Menu(); $nw->configure (-menu => $mbar); my $file = $mbar->cascade (-label => "File", -underline => 0, -tearoff => 0); $file->command (-label => "New", -command => [\&neu, "new"], -accelerator => 'Crtl-N', -underline => 0); $file->command (-label => "Open", -command => [\&open, "open"], -accelerator => 'Crtl-O', -underline => 0); $file->command (-label => "Save", -command => [\&save, "save"], -accelerator => 'Crtl-S', -underline => 0); $file->separator(); $file->command (-label => "Exit", -command => [$nw => 'destroy'], -accelerator => 'Crtl-B', -underline => 0); my $do = $mbar->cascade (-label => "Do", -underline => 0, -tearoff => 0); $do->command (-label => "Translation", -command => sub {translate($In, $Out)}, -accelerator => 'Crtl-T', -underline => 0); # Dictionary-Listbox my $Dict = $nw->Listbox()->grid(-column => 0, -row => 1, -columnspan => 2, -sticky => 'we'); $Dict->insert("end", "the - das"); $Dict->insert("end", "sea - meer"); $Dict->insert("end", "is - ist"); $Dict->insert("end", "blue - blau"); MainLoop(); sub file { } # sub file sub neu {   my $tw = $nw->Toplevel(-title => 'New');   $tw->Label(-text => "Name of the File: ")->pack();   my $in = $tw->Entry(-textvariable => \$input)->pack();   $in->bind('', [\&create, $tw]); } # sub neu # Erzeugen einer neuen Datei sub create {   CORE::open (IFILE, ">> $input") or die "can't create '$input':$!\n";   close IFILE;   $_[1]->destroy();  #Fenster wieder löschen } # sub create sub open {   my $tw = $nw->Toplevel(-title => 'Open');   $tw->Label(-text => "Open which File: ")->pack();   my $in = $tw->Entry(-textvariable => \$input)->pack();   $in->bind('', [ \&read, $tw ]); } # sub open # Datei zum Lesen und Schreiben Öffnen sub read {   CORE::open (IFILE, "< $input") or die "can't open '$input':$!\n";   while () {       $In->insert("end", $_);   }   close IFILE;   $_[1]->destroy();  #Fenster wieder löschen } # sub read sub save {   my $tw = $nw->Toplevel(-title => 'Save');   $tw->Label(-text => "Save : $input")->pack();   my $in=$tw->Entry(-textvariable => \$input)->pack();   print $input , "\n";   $in->bind('', [\&write, $tw]); } # sub save #Speichern der Eingabe sub write {   CORE::open (IFILE, "+< $input") or die "can't open '$input':$!\n";   print IFILE $In->get('1.0', 'end');;   close IFILE or die $!;   $_[1]->destroy(); #Fenster löschen } # sub write sub perl {   system("/usr/bin/perl $input"); } # sub perl sub translate {   my $text = $In->getSelected();   my $leo = WWW::LEO->new();   $leo->query();   if ($leo->num_results) {   print Dumper $leo->de_en();   }else{   print "Sorry, your query for '%s'gave no results.\n", $leo->query;}   $Out->query('end',$leo); }