Aus LinuxUser 12/2003

Adventskalender in C++

Fröhliche Weihnachten mit KDE

Wieder einmal steht die Adventszeit völlig unerwartet vor der Tür. Doch zum Glück zaubern Gideon und ein wenig C++ schnell einen hübschen KDE-Adventskalender für Freunde, Verwandte und Bekannte, während man selbst ein wenig programmieren lernt.

Ob für große oder kleine Kinder – ein Adventskalender muss sein, und ein selbstgebastelter macht doppelt soviel Freude, vor allem dann, wenn man dabei ganz nebenbei in die KDE-Programmierung einsteigt. Als Bastelwerkzeug benötigen wir anstelle von Papier, Schere und Klebstoff KDevelop 3.0, die KDE-3.1.x- und Qt-3.1.x-Bibliotheken (zum Programmieren natürlich einschließlich der dev(el)-Pakete) sowie einen Compiler wie zum Beispiel den gcc 3.3.

Die KDE-Entwicklungsumgebung KDevelop wird in der neuen Version 3.0 offiziell zwar erst mit KDE 3.2 ausgeliefert, doch lässt sie sich auch jetzt schon unter dem Codenamen gideon aus dem Internet herunterladen [1] oder von der Heft-CD installieren. Bei älteren Distributionen steht allerdings erst einmal ein komplettes KDE-Update (die Dateien finden sich z. B. auf [6]) auf dem Plan.

SuSE-8.1-User müssen zusätzlich ein wenig tricksen, um gideon-3.0a4a-1_suse81.i586.rpm von der Heft-CD zu installieren: Waren alle Abhängigkeiten befriedigt, stand im Test als letztes noch eine fehlende Datei /srv/www/cgi-bin/susehelp/susesearch.cgi im Raum. Diese gab es zwar, aber unter /srv/www/cgi-bin. Setzt man einen entsprechenden Link

mkdir /srv/www/cgi-bin/susehelp
ln -s /srv/www/cgi-bin/susesearch.cgi /srv/www/cgi-bin/susehelp/susesearch.cgi

braucht man bei der Koste-es-was-es-wolle-Installation mit rpm -ivh --nodeps kein schlechtes Gewissen haben.

Aller Anfang ist leicht

Allen des Englischen Mächtigen gibt [2] eine gute Anleitung zur Arbeit mit KDevelop und Hilfsprogrammen wie dem WYSIWYG-Tool QtDesigner [3] zur Gestaltung grafischer Oberflächen mit dem Qt-Toolkit. Damit kann es schon losgehen.

Zunächst erstellen wir ein neues Projekt unter Projekt bzw. Project / New Project.... Für eine einfache KDE-Applikation wie den Adventskalender wählen wir C++ / KDE / Simple KDE Application. Unter Anwendungsname taufen wir das neue Programm adventskalender, passen die Vorgaben bei Lizenz, E-Mail und Autor an, drücken dreimal auf Nächster (Next) und dann auf Abschließen (Finish). Damit ist das Grundgerüst des neuen Programms auch schon fertig und tröstet darüber hinweg, dass KDevelop 3.0 im gegenwärtigen Entwicklungsstand noch nicht besonders viel Deutsch spricht. Auch die originalen, englischsprachigen Beschriftungen wechseln von Vorversion zu Vorversion an der einen oder anderen Stelle ihren Wortlaut.

Damit es später beim Konfigurieren und Kompilieren keine Probleme gibt, legen wir unter Projekt / Project Options... im Punkt Configure Options das Installationsoberverzeichnis (das sogenannte Präfix, siehe auch Kasten 2) und das Oberverzeichnis der zu verwendenden Qt-Installation im Punkt "configure"-Argumente ab:

--prefix=/opt/kde --with-qt-dir=/usr/local/qt

Wer KDE nicht in /opt/kde installiert hat, muss hier natürlich das richtige Installationsverzeichnis (etwa /opt/kde3) angeben. Die beiden Ordner variieren je nach Distribution und Paketersteller ein wenig: So installiert sich Qt 3.1.2 für SuSE 8.1 aus dem KDE-3.1.3-Verzeichnis von [6] nach /usr/lib/qt3.

Abbildung 1: Dateien in KDevelop finden und öffnen
Abbildung 1: Dateien in KDevelop finden und öffnen

Die bereits von KDevelop erstellten Dateien finden wir über den (vertikal gestellten) Punkt File Tree (in manchen Versionen auch File Selector genannt) an der linken Seite (Abbildung 1). Sämtliche Quelltexte finden sich im Ordner src, dessen Name kurz für „source“, also Quelltexte, steht.

Unsere erste Änderung betrifft die Programmbeschreibung, die unsere Lieben wie bei jedem KDE-Programm im sogenannten About-Dialog unter Hilfe / Über Programmname nachlesen können. Den finden wir bereits fix und fertig programmiert in der Datei main.cpp. Dort ersetzen wir – je nach Version – den Text "A KDE APPLICATION" bzw. "A KDE KPart Application" in runden Klammern gegen "Fröhliche Weihnachten wünscht KDE":

static const char description[] =
I18N_NOOP("Fröhliche Weihnachten wünscht KDE");

Doch so wie unser Spruch nun im Quelltext steht, wird er nicht zwangsweise korrekt dargestellt. Das liegt daran, dass wir Umlaute benutzen, die die weltumspannend verstandene 7-Bit-ASCII-Kodierung nicht enthält. Diese Probleme umgehen wir, indem wir die Kodierung UTF-8 benutzen. Wählen wir im Menü Ansicht / Kodierung festlegen (View / Set Encoding) den Punkt UnicodeUTF-8 aus, kodiert KDevelop die gerade geöffnete Datei nach UTF-8 um. Dies sollten wir auf jeden Fall für die Dateien adventskalender.cpp und main.cpp machen.

Das Help-Menü generiert KDevelop automatisch, sobald die Applikation ein zweites Menü enthält. Tatsächlich sollten die Benutzerschnittstellen (wie auch Variablen- und Funktionsnamen) von KDE-Programmen in Englisch gehalten werden; erst in einem zweiten Schritt käme die Lokalisierung, die Übersetzung in andere Sprachen, in gesonderten Dateien an die Reihe. Um nicht zu sehr abzuschweifen, sparen wir uns diesen komplexen Schritt an dieser Stelle und beschriften das Userinterface auf Deutsch. Nur bei den Menüs müssen wir, besagter Automatik wegen, Kompromisse eingehen.

Um ein Menü namens File zu erstellen, das einen Eintrag zum Schließen des Programms enthält, modifizieren wir die Datei adventskalenderui.rc. Hierbei handelt es sich um eine Benutzerschnittstellenbeschreibung (ui.rc – „user interface record“) in XML, aus der KDevelop später C++-Code generiert. Zwischen den Tags <MenuBar ...> und </MenuBar> ersetzen wir alles durch die Definition aus Listing 1.

Listing 1

Definition des Datei-Menüs in XML

<MenuBar>
<Menu name="file" noMerge="1">&File
<Action name="file_quit"/>
</Menu>
</MenuBar>
LinuxUser 12/2003 KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland

Hinterlasse einen Kommentar

  E-Mail Benachrichtigung  
Benachrichtige mich zu: