#!/usr/bin/perl # ****************************************************************************** # ** Funktion:                                                                ** # ** 1. LOKALISIERE ein PERL Programm über einen FILE OPEN Dialog.            ** # ** 2. Zeige den PFAD zum PERL-Programm sowie den Namen des PERL Programmes  ** # **    in einem ENTRY FIELD an.                                              ** # ** 3. Bei drücken der "AUSFÜHREN"-Taste soll das PERL-Programm ausgeführt   ** # **    werden. Der normalerweise im DOS-Fenster angezeigte OUTPUT soll       ** # **    umgeleitet und in einem AUSGABE-FENSTER angezeigt werden.             ** # ****************************************************************************** use Tk;                                               # Use TK. use Tk::LabFrame;                                     # Use "Label Frame". # ***************************************************************************** # ** Generiere das HAUPTFENSTER *********************************************** # ***************************************************************************** my $mw = MainWindow->new;                             # Das "Hauptfenster". $mw->title("Programm laden und Ausführen");           # Der TITEL von "Hauptfenster". # ***************************************************************************** # ** Generiere DATEI Menü ***************************************************** # ***************************************************************************** $ErstesMenuBar     = $mw->Frame(-relief=>'groove', -borderwidth=>3)->pack(-side=>'top',-fill=>'x'); # Das Rahmenwerk. $MeinErstesMenuBar = $ErstesMenuBar->Menubutton(-text=>'Datei')->pack(-side =>'left');              # Der Button "Datei". $MeinErstesMenuBar->command(-label=>'Ende', -command=>sub{$mw->destroy});                           # Der Button "Ende". # ***************************************************************************** # ** Generiere DATEI LADEN Menü (Laden des Programmes) ************************ # ** - Zuerst zeichne ich ein FRAME um die ganze Einheit ********************** # ** - Danach kommt der LADEN BUTTON ****************************************** # ** - Abschließend kommt das ENTRY Feld ************************************** # ***************************************************************************** my $laden        = $mw->LabFrame(-label=>'[ 1--> Lade Programm zur Ausführung ]', -labelside=>'acrosstop')->pack                       (-side =>'top', -expand=>1, -fill=>'x');                                # my $laden_button = $laden->Button(-text=>'Programm laden', -command=> \&Lade_Programm)->pack # Pack                     (-side=>'left', -expand=>0, -fill=>'none');                             # my $laden_entry  = $laden->Entry(-width=>50)->pack                                           # Pack                     (-side=>'left', -expand=>1, -fill=>'x');                                # # ***************************************************************************** # ** Generiere DATEI AUSFÜHREN Menü (ausführen der Aktion) ******************** # ** - Zuerst zeichne ich ein FRAME um die ganze Einheit ********************** # ** - Danach kommt der AUSFÜHREN BUTTON ************************************** # ** - Abschließend kommt der ENDE BUTTON ************************************* # ***************************************************************************** my $button   = $mw->LabFrame(-label=>'[ 2--> Führe Programm aus ]', -labelside => 'acrosstop') # Definition des RAHMENS.                  ->pack (-side=>'top',            -expand=>1, -fill=>'x');          # Pack ... my $doit_btn = $button->Button(-text=>'Ausführen', -command=> \&Programm_Ausfuehren) # Rufe Unterprogramm.                      ->pack(-side=>'left',            -expand=>0);                      # EXPAND 0: button so groß wie Text. my $exit_btn = $button->Button(-text=>'Ende',      -command =>sub { $mw->destroy() })# Der Button "SCHLIEßEN".                  ->pack(-side=>'left',            -expand=>0);                      # Pack ... # ***************************************************************************** # ** Generiere AUSGABE-FENSTER für Ausgabe des Protokolles ******************** # ***************************************************************************** my $protokoll = $mw->Scrolled("Text",                 # Ein TEXT widget.               -scrollbars => 'osoe',                 # Optional SOUTH, Optional EAST.               -background => '#ffffff',              # Hintergrundfarbe des Fensters.               -foreground => 'black',                # Textfarbe               -width      => 90,                     # Fensterbreite               -height     => 20,                     # Fensterhöhe               -relief     => 'sunken',               # SUNKEN               -font       => '{verdana} 10 {normal}',# FONT und FONT SIZE               -wrap       => 'none')                 #               ->pack(-side=>'top', -expand=>1, -fill=>'both');  # PACK ... # ***************************************************************************** # ** Das abschließende TEXT LABEL ********************************************* # ***************************************************************************** my $MyLabel = $mw->Label(-text=>"© XYZ", -relief=>'groove')->pack(); MainLoop; # ***************************************************************************** # ** Sub LADE PROGRAMM  ******************************************************* # ***************************************************************************** sub Lade_Programm {                                   # Start der Unterroutine "Lade Programm".       my $file_typ = [                                 # Definition der zu öffnenden Dateitypen.                    ['PERL Programm', '.pl' ],        # Erster Eintrag  = ".pl".                    ['Alle Dateien',  '*'   ],        # Zweiter Eintrag = "*".                    ];                                # Ende der Definition.     my $dn = $mw->getOpenFile(-filetypes=>$file_typ);# ???     if (defined $dn and $dn ne '') {                 # ???        $laden_entry->delete(0, 'end');               # ???        $laden_entry->insert('end', $dn);             # ???     }                                                # Ende der Schleife. }                                                     # Ende der Unterroutine "Lade Programm". # ***************************************************************************** # ** Sub Programm_Ausfuehren ************************************************** # ***************************************************************************** sub Programm_Ausfuehren { #    system($^X, "C:/TEST/a.pl");                      # Führe dieses PERL-Programm aus. }