Widgets auf den Schirm!
Das GUI setzt sich aus einem Hauptfenster »$WIN« und einer Fußzeile »$TOP« zusammen. Das Hauptfenster ruft Zeile 21 durch die Methode »add()« des Moduls Curses::UI::POE ins Leben. Letzteres stellt lediglich zu Curses::UI, genauer gesagt zu Curses::UI::Container durch. Der erste Parameter ist die für das Window gewünschte ID, der zweite Parameter - »"Window"« - bestimmt die Klasse des neu erzeugten Widget.
Das zweite Widget, die Fußzeile mit den Instruktionen für gerade erlaubte User-Aktionen, entsteht in Zeile 23. GUI-typisch erzeugt das Parent-Widget »$WIN« durch einen Aufruf der Methode »add()« das in ihm liegende Fußzeilen-Widget. Der erste Parameter »bottom« ist die gewünschte ID des neu erzeugten Fensters, der zweite - »Label« - die Widget-Klasse. Der Wert »-1« für den Parameter »-y« gibt an, dass das Label ganz unten am Fensterrand zu platzieren ist. Die Option »-paddingspaces« dehnt das Label bis an die horizontalen Grenzen des einschließenden Fensters aus.
Das Label verfügt über eine »text()«-Methode, die den auf der Fußzeile zu sehenden Text löscht und setzt. Die in Zeile 27 aufgerufene Funktion »footer_update()« frischt die neu definierte und vorerst leere Fußzeile erstmals mit dem im Startzustand möglichen User-Kommando auf.
Bereit zum Loslaufen
Die Zeilen 29 bis 32 definieren, was passiert, wenn der User die Tasten [Q] (Quit), [P] (Play), [R] (Record) oder [S] (Stop Recording) drückt. Bei [Q] ruft »flipit« die Funktion »exit()« auf, die das Programm abbricht.
Die Handlerfunktionen »play_flipped()« , »record()« und »record_stop()« definiert das Skript weiter unten. Der Einfachheit halber greifen sie alle auf den globalen Heap zu und, indirekt über die Funktion »footer_update()«, auf die ebenfalls globalen Widget-Variablen.
GUI-typisch springt das Programm dann in Zeile 34 in die Haupt-Eventschleife, aus der es nie mehr austritt und so lange Usereingaben verarbeitet, bis jemand [Q] drückt. Betätigt der User [R], springt das GUI die Funktion »record()« ab Zeile 37 an. Diese prüft zunächst, ob bereits eine Aufnahme läuft, und bricht in diesem Fall mit »return« ab, ignoriert also den Tastendruck. Falls nicht, legt die Funktion »tempfile()« aus dem Modul File::Temp eine temporäre Datei mit der Endung ».ogg« an, die Perls automatische Abrissbirne dank der gesetzten »UNLINK«-Option bei Programmende wegfegt.
Diesen Artikel als PDF kaufen
Express-Kauf als PDF
Umfang: 4 Heftseiten
Preis € 0,99
(inkl. 19% MwSt.)
Als digitales Abo
Weitere Produkte im Medialinx Shop »
Versandartikel
Onlineartikel
Alle Rezensionen aus dem Linux-Magazin
- Buecher/07 Bücher über 3-D-Programmierung sowie die Sprache Dart
- Buecher/06 Bücher über Map-Reduce und über die Sprache Erlang
- Buecher/05 Bücher über Scala und über Suchmaschinen-Optimierung
- Buecher/04 Bücher über Metasploit sowie über Erlang/OTP
- Buecher/03 Bücher über die LPI-Level-2-Zertifizierung
- Buecher/02 Bücher über Node.js und über nebenläufige Programmierung
- Buecher/01 Bücher über Linux-HA sowie über PHP-Webprogrammierung
- Buecher/12 Bücher über HTML-5-Apps sowie Computer Vision mit Python
- Buecher/11 Bücher über Statistik sowie über C++-Metaprogrammierung
- Buecher/10 Bücher zu PHP-Webbots sowie zur Emacs-Programmierung
Insecurity Bulletin
Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...





