Das Modul Tk::DirTree kann zur Darstellung von Verzeichnissen im Dateisystem verwendet werden. Mit der Option -browsecmd
kann ein Perl-Code definiert werden, der ausgeführt wird, wenn ein Nutzer auf einen Eintrag im Verzeichnisbaum klickt. Mit -command
kann die Auswahl eines Elements belegt werden (z.B. durch Doppelklick oder Enter).
#!perl
=comment
Verzeichnisinhalt mit DirTree darstellen.
Basiert auf: http://www.ibm.com/developerworks/aix/library/au-perltkmodule3/
=cut
use strict;
use warnings;
use utf8; # Deutsche Umlaute richtig darstellen
use Tk;
use Tk::DirTree;
use Cwd;
my $mw = MainWindow->new;
$mw->geometry("300x400");
$mw->title("DirTree Example");
my $working_dir = Cwd::cwd();
my $dir_tree = $mw->Scrolled('DirTree',
-scrollbars => "osoe",
-width => 30,
-height => 25,
-exportselection => 1,
-browsecmd => sub {$working_dir = shift},
-command => \&show_cwd
)->pack(-fill => "both", -expand => 1);
$dir_tree->chdir($working_dir);
my $selection_info_frame = $mw->Frame()->pack(-fill => 'x');
$selection_info_frame->Label(
-text => 'Ausgewählt: ',
)->pack(-side => 'left');
my $selected_dir_label = $selection_info_frame->Label(
-textvariable => \$working_dir,
)->pack;
my $button_frame = $mw->Frame()->pack(-side => "bottom");
$button_frame->Button(
-text => "Ok",
-command => \&show_cwd,
)->pack(-side => "left");
$button_frame->Button(
-text => "Exit",
-command => sub{exit},
)->pack(-side => "left");
sub show_cwd {
$mw->messageBox(-message => "Directory Selected: $working_dir", -type => "ok");
}
$mw->MainLoop;
exit(0);