#!/usr/bin/perl use Tk; use Tk::LabEntry; use Tk::DirTree; use Tk::HList; use Cwd; my $mw = MainWindow->new(-title=>"PAM_ABA v1.8"); # MainWindow my $width = $mw->screenwidth; my $height = $mw->screenheight; $mw->geometry($width.'x'.$height); $mw->configure(-menu => my $menubar = $mw->Menu); # Menüleiste my $materialtyp = $menubar->cascade(-label => '~Materialtyp', -tearoff=>0); $menubar->command(-command=>\&konvertieren, -label=>"~Konvertieren"); #$menubar->command(-command=>\&verzeichnis, -label=>"~Verzeichnis"); $menubar->command(-command=>sub{exit}, -label=>"~Beenden"); @typ = ("SHE 103", "SOL 24"); # Materialtypen $i=0; foreach $typ (@typ){ $i++; $materialtyp->radiobutton(-label=>$typ, -variable=>\$rb, -value=>$i, -command=>\&label_anpassen); } $rb = 1; $frame0 = $mw->Frame(-height=>30)->pack(-expand=>1, -fill=>'x', -anchor=>'n'); $cwd = getcwd; $pfad_mat = getcwd(); $label_typ = $frame0->Label(-text=>"Typ: SHE 103")->place(-x=>0, -y=>0, -relheight=>1); $entry = $frame0->Entry(-width=>120, -text=>"$pfad_mat")->place(-x=>200, -y=>0, -relwidth=>2/3, -relheight=>1); $check = $frame0->Checkbutton(-text=>"Materialverzeichnis auswaehlen", -variable=>\$cb_value)->place(-x=>1300, -y=>0, -relheight=>1); $cb_value = 1; $frame_hintergrund = $mw->Frame->place(-x=>0, -y=>30, -relheight=>110/113, -relwidth=>1); $frame1 = $frame_hintergrund->Frame(-width=>int($width/3), -bg=> 'red') ->place(-x=>0,-y=>0, -relwidth=>1/3, -relheight=>1); $frame2 = $frame_hintergrund->Frame(-width=>int($width*2/3), -bg=> 'yellow') ->pack(-expand=>1, -fill=>'y', -side=>'right', -anchor=>'e'); $DIR_TREE = $frame1->Scrolled('DirTree', -scrollbars => "osoe", -width => 30, -height => 25, -exportselection => 1, -browsecmd => sub {$pfad_mat = shift;&neues_verzeichnis($pfad_mat);}, -command => \&callback)->place(-x=>0, -y=>0, -relwidth=>1, -relheight=>1); my $hlist = $frame2->Scrolled('HList', -scrollbars=>'oe', -columns=>1,-itemtype => 'text',-separator=>"/", -selectmode=>'extended', -header=>1, -command=>sub{&doppelklick;} )->place(-x=>0, -y=>0, -relwidth=>1, -relheight=>1); $hlist->header('create',0); $hlist->header('configure',0,-text=>"PAM CRASH Materialkarte (*.mat) auswaehlen; Mehrfachauswahl moeglich"); &neues_verzeichnis($pfad_mat); MainLoop; sub konvertieren{ print "\nBlubb" x10; } sub callback{ $entry->configure(-textvariable=>$pfad_mat) if ($cb_value == 1); } sub doppelklick{ my $path = join "\n", $hlist->infoSelection(); my $pfad_mat = getcwd; chdir "$pfad_mat/$path"; $pfad_mat = getcwd; &callback; &neues_verzeichnis($pfad_mat); } sub neues_verzeichnis{ opendir(DIR, $_[0]); my @inhalt = readdir(DIR); closedir DIR; $hlist->deleteAll; foreach (sort(@inhalt)) { $hlist->add("$_", -text=>$_); } } sub label_anpassen{ $label_typ->configure(-text=>"Typ: $typ[$rb-1]"); }