Automat und Zustände
POE-typisch definiert der Session-Konstruktor ab Zeile 22 insgesamt fünf ver- schiedene Zustände, zwischen denen der im Skript definierte Automat hin und her springt. Nach dem Starten des POE-Kernels in Zeile 31 läuft das GUI und arbeitet die User-Eingaben ab, bis der Anwender das Programm endlich mit einem Klick auf das Schließen-Icon des Hauptfensters beendet.
Per Definition legt der »_start«-Zustand in Zeile 24 den Anfangszustand fest. Die ihm zugewiesene Funktion »ui_start()« baut die grafische Oberfläche auf und ist ab Zeile 58 definiert.
Wie schon in früheren Beiträgen zum Thema POE ausgeführt (zum Beispiel in [4]), holen die Makros »KERNEL«, »SESSION« und »HEAP« Automatenvariablen aus Perls Array »@_« für Funktionsargumente. »HEAP« ist ein Hash für eine Session des Automaten und dient zum Ab- legen allerlei globaler Variablen, die der Automat dann von Callback zu Callback durchschleift, wobei er sie allerdings sauber von anderen Sessions trennt.
Speichern oder zusammenklappen
Zeile 64 ruft den Konstruktor des GUI-Hauptfensters »Gtk2::Window« auf, in dessen Rahmen später eine Listbox mit abspielbereiten Videos zu liegen kommt. Der Parameter »toplevel« gibt an, dass es sich um das Hauptfenster der Applikation handelt. Eine Referenz darauf legt das Skript im Heap ab, nicht um später in Callbacks darauf zuzugreifen, sondern um sicherzustellen, dass Perl eine Referenz auf das Hauptfenster in einer Vari- ablen speichert, die sich nicht mit dem Abschluss der Funktion »ui_start()« in Luft auflöst. Denn wenn dies geschähe, fiele daraufhin das Applikationsfenster sang- und klanglos in sich zusammen, obwohl die Applikation ja noch weiterlaufen soll.
Der Aufruf der Methode »signal_ui_destroy()« definiert in Zeile 66, dass mit dem Zusammenfallen des Hauptfensters (zum Beispiel weil der User mit der Maus das Schließen-Icon angeklickt hat) sich auch die Applikation, also der POE-Kernel beendet. Das in Zeile 69 erzeugte Widget »Gtk2::SimpleList« nimmt die Daten der zweispaltigen Anzeige auf.
Wie Abbildung 1 zeigt, besteht jede Zeile dieser Videoliste links aus einem Zeitstempel und rechts aus dem Namen einer zugehörigen Videodatei. Beide Spalten sind vom Datentyp Text, beherbergen also nur einfache Zeichenketten ohne farbliche Hervorhebungen oder anderen Schnickschnack.
Unter dem Kürzel »slist« speichert das Skript eine Referenz auf das Widget im Sessionheap ab. Die Methode »add()« fügt die Listbox in das Hauptfenster ein und das nachfolgende »show_all()« zeichnet das GUI dann schließlich auf den Bildschirm.
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...





