So, liebe Gemeinde, wir kommen der Sache Stück für Stück näher. Ich habe die Vorschläge von renee und ptk berücksichtigt und das kleine Programm angepasst (sie nachstehenden Code).
Was passiert jetzt im Moment?
1. ich kann über den Button "Auswählen" ein Directory wählen (yep, nach wie vor selektiere ich eine Datei und schneide mir dann einfach den Pfad heraus).
2. Die LISTBOX wird mit den gefundenen *.PL-Dateien gefüllt. Hier habe ich jetzt das Problem, dass auch der
gesamte Pfad zur Datei noch mit dabei ist. Aber das lässt sich sicherlich noch lösen.
3. Ich wähle jetzt EINEN Eintrag aus der LISTBOX aus und drücke auf den Button "Ausgewählte Programme ausführen".
Und jetzt passiert folgendes:
3.1 Ich erhalte den Fehler "Ausgewaehlte Datei: 2. Can't open perl script "2": No such file or directory".
3.2 Ich erhalte also den INDEX der ausgewählten Datei und dieser Index beginnt wohl bei "0", da ich den DRITTEN Eintrag in der Listbox auswähle und mir dann aber "2" als ausgewählten Eintrag angezeigt wird.
3.3 FRAGE: wie kann ich jetzt den
EINTRAG auswählen, also den NAMEN des Perl Programmes, das ich ausgewählt habe? Ich möchte also dasjenige Perl Programm ausführen, das ich ausgewählt habe.
Hier ist der aktuelle Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#!/usr/bin/perl
use strict;
use Tk;
use Tk::LabFrame;
use File::Basename;
# *****************************************************************************
# ** Generiere HAUPTMENÜ ******************************************************
# *****************************************************************************
my $mw = MainWindow->new;
$mw->title("Ein TEST mit LISTBOX");
# *****************************************************************************
# ** Generiere Menü AUSWAHL DES DIRECTORIES ***********************************
# *****************************************************************************
my $laden = $mw->LabFrame(-label=>'[ 1--> Auswahl des Directories ]', -labelside=>'acrosstop')
->pack (-side =>'top', -expand=>1, -fill=>'x');
my $laden_button = $laden->Button(-text=>'Auswählen', -command=> \&Load_Path)
->pack (-side=>'left', -expand=>0, -fill=>'none');
my $laden_entry = $laden->Entry(-width=>100)
->pack (-side=>'left', -expand=>1, -fill=>'x');
# *****************************************************************************
# ** Generiere LISTBOX ********************************************************
# *****************************************************************************
my $listbox_frame = $mw->LabFrame(-label=>'[ 2--> Programme-Auswählen ]', -labelside=>'acrosstop')
->pack (-side =>'top', -expand=>1, -fill=>'x');
my $Auswahl_Liste = $listbox_frame->Listbox("width" => 70,
"height" => 5,
-selectmode => 'single')
->pack(-side=> 'left');
my $doit_btn = $listbox_frame->Button(-text=>'Ausgewählte Programme ausführen', -command=> \&Run_Perl_Prog)
->pack(-side=>'left', -expand=>0);
MainLoop();
# *****************************************************************************
# ** Sub LOAD PATH ************************************************************
# *****************************************************************************
sub Load_Path {
my $file_typ = [
['PERL Program', '.pl' ],
['All Files', '*' ],
];
my $dn = $mw->getOpenFile(-filetypes=>$file_typ);
my $file = $dn;
my $dn = dirname($file);
if (defined $dn and $dn ne '') {
$laden_entry->delete(0, 'end');
$laden_entry->insert('end', $dn);
my @files = glob($dn.'/*.pl');
$Auswahl_Liste->delete(0, 'end')
if(@files);
$Auswahl_Liste->insert('end', @files)
}
}
# *****************************************************************************
# ** Sub Run_Perl_Prog ********************************************************
# *****************************************************************************
sub Run_Perl_Prog {
my $DoIt_1 = $Auswahl_Liste->curselection(); #<-- Hole Eintrag aus LISTBOX ($Auswahl_Liste)
print "Ausgewaehlte Datei: $DoIt_1\n";
if(!$DoIt_1 || $DoIt_1 eq ''){
$mw->messageBox(-message=>" Zuerst ein Programm auswählen.",
-type=>"OK"),
return 1;
}
my $tmp_1 = system(qx($^X $DoIt_1));
}