#!/Perl/bin/perl use strict; use warnings; use Data::Dumper(); use Data::Serializer; use Tk; use DirHandle; use DBI; use DBD::MySQL; use Tk::Dialog; use Tk::DialogBox; use Tk::Font; use Tk::ToolBar; use Tk::FileSelect; use FindBin qw($Bin); use FileHandle; use UNIVERSAL qw(isa); my $mw = MainWindow->new( -width=>800, -height=>600, ); main::getScreen_ConfigDumpEdit($mw); MainLoop; sub getScreen_ConfigDumpEdit { my $mw = shift; $mw->packPropagate(0); # don't resize # speichern ob eine Datei geöffnet wurde my $isOpen = 0; my $openFile = undef; # create the text-widget my $text = $mw->Scrolled('Text', -wrap => 'none', -borderwidth => 3, -relief => 'groove', -scrollbars => 'se', -height => '20', -width => 80, ); # create ToolBar (open & save-dialog) my $tb = $mw->ToolBar(qw/-movable 0 -side top/); $tb->ToolButton( -image => 'fileopen22', -tip => 'back', -command => sub{ my $wantedFile = main::getFileDialog("$Bin/config"); my $dataStructure = main::restoreData($wantedFile); main::insertText($text,$dataStructure); $isOpen = 1; $openFile = $wantedFile; }, ); $tb->ToolButton( -image => 'filesave22', -tip => 'back', -command => sub{ if( $isOpen ){ main::storeConfig($openFile,$text->get("1.0", "end")); $text->delete("1.0","end"); my $d = $mw->DialogBox(-title => "Gesichert", -buttons => ["OK"]); $d->add("label", 'Ihre Änderungen wurden gesichert.'); $d->Show(); }else{ my $d = $mw->DialogBox(-title => "Keine Datei offen", -buttons => ["OK"]); $d->add("label", 'Sie müssen zuerst eine Datei öffnen!'); $d->Show(); } }, ); # alles zusammenpacken $text->pack(); #-side=>'left', -anchor=>'n' # if( $mw->width() < $screen->width ){ put scrollbars on $mw } # /getScreen_ConfigDumpEdit sub getFileDialog { my $startDir = shift || $Bin; $startDir = $Bin unless -e $startDir; my $FSref = $mw->FileSelect(-directory => $startDir); # print "FileDialog selected: ".$FSref->Show() . "\n"; return $FSref->Show(); } # /getFileDialog sub getFilec { my $file = shift or return 'keine Datei angegeben'; return "Datei $file existiert nicht" unless -e $file; my @filec = (); # where to store the filecontent my $fh = new FileHandle; if ($fh->open("< $file")) { @filec = $fh->getlines(); $fh->close; } return \@filec; } # /getFilec sub insertText { my $text = shift or die 'Kein Textfeld übergeben'; my $data = shift or die 'kein Text übergeben'; # print "insertText\n"; # clear Text $text->delete("1.0","end"); # insert2Text $text->insert("end", Data::Dumper::Dumper($data)); } # /insert Text sub restoreData { my $file = shift or die 'xml2data: keine Datei übergeben!'; unless( -e $file or -e $Bin.$file ){ die "restoreData: Datei existiert nicht!"; } my $obj = Data::Serializer->new(); return $obj->retrieve($file); } # /restoreData sub storeConfig { my $file = shift or die 'storeConfig: Keine Datei übergeben!'; my $data = shift or die 'storeConfig: keine Daten übergeben'; my $obj = Data::Serializer->new(); my $fh = new FileHandle "> $file"; if (defined $fh) { $obj->store($data,$fh); $fh->close; } return 1; }