use strict; use warnings; use encoding 'utf8'; use Tk; use Tk::PNG; use Tk::JPEG; use Image::Magick; use Image::Size; use MIME::Base64 'encode_base64'; #------------------------------------------------------------------------------- # Deklaration #------------------------------------------------------------------------------- my %fotograf; # Name der Fotografen zu dem jeweiligen Bild my %bildtitel; # Name des jeweiligen Bildes my %bilddateien; # Bilddatein eingefügt werden sollen my $i; # Schleifenvariable #--- Label und Entry Feld für den Fotografen my $fotograph_entry; my $fotograph_label; #--- Label und Entry Feld für den Bildtitel my $bildtitel_label; my $bildtitel_entry; my $answer; # Name der ausgweählten Datei my $mw = Tk::MainWindow->new(); # Neues Fenster erstellen $mw->title("Bildauswahl"); # Bildtitel setzen #------------------------------------------------------------------------------- # Bearbeitung des Fensters #------------------------------------------------------------------------------- for($i=0; $i<2; $i++) { #--- Ausgewählten Namen der Datei anzeigen my $label = $mw->Label(-text => 'Bisher keine Datei ausgewählt',)->grid(-row=>$i, -column =>1); #--- Button hinzufügen $mw->Button(-text => "Wählen sie ein Bild aus, das sie einfügen möchten", -command => \&datei_auswaehlen($label)) ->grid(-row=>$i, -column =>0); #--- Eingabefeld für den Namen des Fotografen $fotograph_label = $mw->Label(-text => 'Fotograph')->grid(-row=>$i, -column =>2); $fotograph_entry = $mw->Entry()->grid(-row=>$i, -column=>3); #--- Eingabefeld für den Bildtitel $bildtitel_label = $mw->Label(-text => 'Bildtitel',)->grid(-row=>$i, -column =>4); $bildtitel_entry = $mw->Entry()->grid(-row=>$i, -column=>5); } #--- Button um die Wert zu übernehmen $mw->Button(-text=>'übernehmen', -command=>sub{bilddaten_sammeln()})->grid(-row=>$i+1, -column=>1); #--- Label für das Bild my $bildlabel = $mw->Label->grid(-row=>0, -column => 6); #--- Fenster halten $mw->MainLoop(); #------------------------------------------------------------------------------- # Ausgabe (Noch darauf überprüfen ob alles vorhanden ist bevor es ausgegeben wird!) #------------------------------------------------------------------------------- printf "Titel: $bildtitel{bild1} Fotograf: $fotograf{bild1} Bilddatei: $bilddateien{bild1}"; #------------------------------------------------------------------------------- # Funktionen #------------------------------------------------------------------------------- #=== FUNCTION ================================================================ # NAME: datei_auswaehlen # PURPOSE: # PARAMETERS: Keine Parameter # RETURNS: Kein Returnwert # DESCRIPTION: Diese Funktion öffnet den Datei öffnen Dialog und macht es somit # möglich eine Datei (in diesem Fall ein Bild) auszuwählen, welches # zu der Präsentation hinzugefügt werden soll. # THROWS: no exceptions # COMMENTS: # SEE ALSO: #=============================================================================== sub datei_auswaehlen { my $label = shift; $answer = $mw->getOpenFile(); # Hierdurch werden nur Datein mit diesen Endungen angezeigt $label->configure(-text => $answer); # Hier wird das der Name der Datei am Ende neben den Button eingefügt #my $image = Image::Magick->new(); #$image->Read($answer); #$image->Scale(width=>100); #$image->Scale(height=>100); #my $pic = $mw->Photo(-data=>encode_base64($answer), -format=>'jpg'); #$bildlabel->configure(-image=>$pic); # printf $answer; } #=== FUNCTION ================================================================ # NAME: bilddaten_sammeln # PURPOSE: # PARAMETERS: Keine # RETURNS: Kein Returnwert # DESCRIPTION: Diese Funktion sammelt die Daten die zu eeinem Bild gehören (sprich # den Name des Fotografen und den Namen des Bildes) und packt diese in # zwei Hashes. # Den Namen in den Hash %fotograf und den Titel in den Hash %bildtitel. # Die Bilddatei wird anschließend in den Hash %bilddateien gepackt # THROWS: no exceptions # COMMENTS: none # SEE ALSO: n/a #=============================================================================== sub bilddaten_sammeln { $fotograf{bild1}=$fotograph_entry->get; # Name des Fotografen $bildtitel{bild1}=$bildtitel_entry->get; # Bildtitel $bilddateien{bild1}=$answer; # Name der Bilddatei }