Das Disko-Framework
Toolkit für Set-Top-Boxen und Touch-Screen-Terminals
Wenn eher ein Desktop-ähnlicher Ansatz gewünscht wird, können jeder Hauptklasse von Windows auch beliebige ChildWindows zugewiesen werden, die innerhalb der Dimensionen des Windows angezeigt werden. Hier kann auch mit einer dynamischen z-Order gearbeitet werden. So entsteht die Möglichkeit, beliebig viele Windows gleichzeitig anzuzeigen.
Hallo Welt!
Um ein Window zu erzeugen und etwas Inhalt anzuzeigen, reicht folgender Code aus:
MMSMainWindow *win; win = new MMSMainWindow("","100%","100%"); MMSLabel *lbl; lbl = new MMSLabel(win, ""); lbl->setFont("./","DejaVuSansMono.ttf",16); lbl->setText("Hello world"); win->add(mylabel);
Die leeren Zeilen bei Window und dem Label-Widget beziehen sich auf Theme-Klassen, die in der Theme-Datei definiert sind. Da keine Themes definiert sind, bleiben diese Zeilen leer. Disko gibt den einzelnen Widgtets ein minimalistisches Aussehen, damit auch ohne definierte Themes tatsächlich etwas auf dem Bildschirm angezeigt wird.
Um das Resultat zu sehen, muss noch das Window auf dem Bildschirm angezeigt werden:
win->show();
Um die Applikation am Laufen zu halten, nutzen wir eine Endlos-Schleife:
while (1) sleep(1);
Wenn alles richtig funktioniert hat, sollte nun ein X11-Window mit dem mittig platzierten Text »Hello World« angezeigt werden.
Das ist vielleicht nicht besonders spektakulär, aber es ist auch nur die einfachste bzw. kleinste Applikation, die mit Hilfe des Disko-Frameworks erstellt werden kann.
Videos abspielen
Das Einbinden von Videos wird durch die Komponente MMSMedia realisiert, welche - je nachdem - entweder Xine oder GStreamer verwendet. Die einzelnen Quellen werden per MRL angegeben, sofern Xine oder GStreamer mit der entsprechenden Unterstützung übersetzt wurden. Um ein Video in die Applikation einzubinden, reicht folgender Code: