#!/bin/perl # TK zur Fensterdarstellung verwenden use Tk; use HTTP::Request::Common qw(POST); use LWP::UserAgent; # Saubere Programmierung erzwingen use strict; my $eingegeben; my @gewaehlt; # Neues Fensterobjekt erzeugen my $main = new MainWindow(-title=>'SnomControl'); # Frameobjekt im Fensterobjekt mit verschiedenen Eigenschaften wird erzeugt # nimmt später Statuslabel, LetzteNachrichtLabel und Eingabezeile auf my $top_f=$main->Frame(-width=>200, -height=>200)->pack(-side=>'top', -padx=>5, -pady=>5); # Ein weiteres Frameobjekt, das die Schaltflächen aufnimmt my $bottom_f=$main->Frame()->pack(-side=>'top', -padx=>5, -pady=>5); # Configure Event des Fensters wird abgefangen und ein resize verhindert $main->bind('' => sub { my $xe = $main->XEvent; $main->maxsize($xe->w, $xe->h); $main->minsize($xe->w, $xe->h); }); # Eingabeobjekt erzeugen und Variable $eingegeben wird referenziert, dadurch landen alle Eingaben in dieser globalen Variable my $eingabe = $top_f->Entry(-width=>50, -textvariable => \$eingegeben); # Die Schaltflächen Dial,Hangup my $left1=$bottom_f->Frame()->pack(-side=>'left', -fill=>'none'); my $left2=$bottom_f->Frame()->pack(-side=>'left', -fill=>'none'); my $left3=$bottom_f->Frame()->pack(-side=>'left', -fill=>'none'); my $left4=$bottom_f->Frame()->pack(-side=>'left', -fill=>'none'); my $left5=$bottom_f->Frame()->pack(-side=>'left', -fill=>'none'); # Standardaktion bei wird definiert, selbe Aktion wie bei Betätigung der Senden Schaltfläche (Aufruf sub senden_click) $eingabe->bind('', \&dial_click ); # Senden Knopf wird definiert, Beschriftung und Aktion (Aufruf sub senden_click) my $dial_button = $left1->Button( '-text' => 'Dial/Accept', '-command' => \&dial_click, ); my $pickup_button = $left2->Button( '-text' => 'Pick up', '-command' => \&pickup_click, ); my $redial_button = $left3->Button( '-text' => 'Redial', '-command' => \&redial_click, ); my $hangup_button = $left4->Button( '-text' => 'Hang up', '-command' => \&hangup_click, ); my $history_button = $left5->Button( '-text' => 'History', '-command' => \&history_click, ); $eingabe->pack(-anchor => 'w'); # Knöpfe werden angezeigt $dial_button->pack; $pickup_button->pack; $redial_button->pack; $hangup_button->pack; $history_button->pack; # MainLoop des TK MainLoop; sub dial_click { # Wenn Text nicht leer ist if ($eingegeben ne "") { push @gewaehlt, $eingegeben; my $ua = LWP::UserAgent->new(); my $req = POST 'http://fote98:K01v1kk0!@10.60.1.21/command.htm', [ number => "$eingegeben"]; my $content = $ua->request($req)->as_string; $eingegeben=""; } else { my $ua = LWP::UserAgent->new(); my $req = POST 'http://fote98:K01v1kk0!@10.60.1.21/link?accept=-14'; my $content = $ua->request($req)->as_string; } } sub pickup_click { my $ua = LWP::UserAgent->new(); my $req = POST 'http://fote98:K01v1kk0!@10.60.1.21/command.htm', [ number => "*8"]; my $content = $ua->request($req)->as_string; } sub redial_click { } sub hangup_click { my $ua = LWP::UserAgent->new(); my $req = POST 'http://fote98:K01v1kk0!@10.60.1.21/command.htm?key=cancel'; my $content = $ua->request($req)->as_string; } sub history_click { }