<para>&ksplash; ist ein netter Begrüßungsbildschirm, der während dem Startvorgang eines Programms angezeigt wird. Falls Sie Fehler finden oder neue Funktionen benötigen, melden Sie diese bitte an die &kde;-Mailinglisten. &ksplash; enthält die folgenden Funktionen: </para>
<para>Dieses Handbuch zeigt Ihnen, wie Sie ein Design entwerfen können und es mit den derzeit verfügbaren Modulen verwenden. Falls keines der Module Ihren Ansprüchen genügt, können Sie auch lernen, wie &ksplash; angepasst wird. Dazu schreiben Sie ein kleines Programm in C++. </para>
<para>Um fertige Designs von <ulink url="http://www.kde-look.org">KDE-Look</ulink> zu verwenden, entpacken Sie diese bitte nach <filename>~/.trinity/share/apps/ksplash/Themes/</filename> oder für die systemweite Verwendung nach <filename>$<envar>TDEDIR</envar>/share/apps/ksplash/Themes/</filename>.</para>
<para>Diesen Schritt können Sie natürlich auch einfach über das Kontrollzentrum-Modul <guilabel>Startbildschirm</guilabel> unter <guilabel>Erscheindungsbild</guilabel> erledigen.</para>
<para>Mit dem &kcontrol;-Modul können Sie &ksplash;-Designs installieren, testen und auch wieder entfernen.</para>
<para>An der linken Seite des Moduls sehen Sie eine Liste der verfügbaren &ksplash;-Designs. Wenn Sie eines auswählen, wird auf der rechten Seite ein Vorschaubild angezeigt. Wenn Sie sich ein Design ausgesucht haben, das Sie gerne benutzen möchten, dann drücken Sie <guibutton>Ok</guibutton> oder <guibutton>Anwenden</guibutton>. Wenn Sie <guibutton>Abbrechen</guibutton> drücken, wird das Modul geschlossen ohne irgendwelche Änderungen vorzunehmen. Zuguterletzt bewirkt der Knopf <guibutton>Voreinstellungen</guibutton>, dass der voreingstellte Startbildschirm aktiviert wird.</para>
<para>Um ein neues Design zu installieren, drücken Sie bitte auf <guibutton>Hinzufügen ...</guibutton> und suchen Sie das heruntergeladene Design heraus. Sie müssen die Design-Datei nicht erst entpacken. Nur das reine Installieren eines Designs aktiviert es noch nicht. Wenn Sie das neu installierte Design auch benutzen möchten, dann wählen Sie es bitte in der linken Liste aus und drücken <guibutton>Ok</guibutton> oder <guibutton>Anwenden</guibutton>.</para>
<para>Zwar sehen Sie das Vorschaubild auf der rechten Seite, aber wahrscheinlich möchten Sie auch sehen, wie der Startbildschirm in Aktion aussieht. Sie können den Startbildschirm testen, indem Sie auf den Knopf <guibutton>Test</guibutton> drücken.</para>
<para>Natürlich können Sie nicht benutzte Designs auch wieder entfernen. Wählen Sie das entsprechende Design aus und drücken dann <guibutton>Entfernen</guibutton>. Unter Umständen hat allerdings Ihr Benutzerkonto keine ausreichenden Berechtigungen, um ein systemweites Design zu entfernen. Außerdem kann das Design "Standard" nicht entfernt werden.</para>
<para>Es ist nicht schwer, ein Design für &ksplash; zu erstellen. Wenn Sie ein Design fertiggestellt haben, können Sie es auf <ulink url="http://www.kde-look.org">KDE-Look</ulink> hochladen und somit anderen zur Verfügung stellen.</para>
<title>Einen Namen für das Design festlegen</title>
<para>Lassen Sie uns ein Design mit dem Namen <literal>MeinDesign</literal> erstellen. Damit &ksplash; Ihr Design finden kann, muss es in einem Ordner mit dem Namen <filename class="directory">MeinDesign</filename> unter <filename class="directory">~/.trinity/apps/ksplash/Themes/</filename> gespeichert werden. Der Ordner muss die Datei <filename>Theme.rc</filename> enthalten; sie enthält die Einstellungen für Ihre Design. Sie können viele Einstellungen festlegen, &zb; welche Erweiterung Ihr Design verwenden soll. Sie müssen natürlich nicht alle Einstellungen selbst machen, die Voreinstellungen funktionieren meist recht gut. Die grundlegende Syntax für Ihre Einstellungen lautet <literal>[option] = [wert]</literal>. Die Definitionen für die möglichen Optionen finden Sie in den folgenden Abschnitten.</para>
<para>Nachdem Sie den Namen, die Beschreibung und den Autor des Designs festgelegt haben, sollten Sie als nächstes ein Darstellungsmodul wählen. Dann können Sie die verschiedenen Einstellungen für das Modul einrichten.</para>
<para>Stellen Sie bitte sicher, dass der Ordnername für das Design (<filename class="directory">~/.trinity/apps/ksplash/Themes/MeinDesign</filename>) und der Bezeichner des Designs (<literal>[KSplash Theme: MyCoolTheme]</literal>) in <filename>Theme.rc</filename> identisch sind. Ansonsten wird &ksplash; Ihr Design nicht anzeigen.</para>
<para>Beim Start versucht &ksplash;, ein Hintergrundbild für die aktuelle Bildschirmauflösung zu finden (wenn das Darstellungsmodul eines verwendet). Das Hintergrundbild muss mit diesem Namensschema gespeichert werden: <filename>Background-<replaceable>BBBxHHH</replaceable>.png</filename>.</para>
<para>Sie könnten &zb; eine Datei mit dem Namen <filename>Background-1024x768.png</filename> verwenden. Wenn kein Hintergrundbild für Ihre Auflösung auffindbar ist, dann wird das Originalbild <filename>Background.png</filename> bzw. die in <filename>Theme.rc</filename> angegebene Datei in der Größe angepasst. Das Anpassen der Dateigröße nimmt natürlich ein paar Sekunden Zeit in Anspruch, daher sollten Sie zumindest Hintergrundbilder in den Auflösungen 1280x1024, 1024x768 und 800x600 zur Verfügung stellen.</para>
<para>In diesem Kapitel wird beschrieben, wie Sie &ksplash; als Startbild für Ihr &kde;-Programm benutzen können. Wenn Sie keine Programme für &kde; entwickeln, können Sie diesen Abschnitt überspringen.</para>
<para>Ihr Programm muss mit &DCOP; umgehen können. &DCOP; ist die &kde;-Technologie, die Programme zur Kommunikation untereinander verwenden. Wenn Sie das übliche <ulink url="http://developer.kde.org">&kde; Entwickler-Grundgerüst</ulink> verwenden, brauchen Sie sich darum nicht weiter kümmern. Informationen über &DCOP; und verwandte &kde;-Technologien finden Sie in der <ulink url="http://developer.kde.org">&kde; Entwicklerecke</ulink>.</para>
<para>Wir gehen in diesem Fall davon aus, dass nur eine Instanz von &ksplash; gleichzeitig läuft. Andere Fälle sind etwas komplizierter. Lesen Sie dazu bitte die &DCOP;-Dokumentation.</para>
<para>Bevor Sie irgendwelche Meldungen anzeigen können, müssen Sie die Anzahl der anzuzeigenden Schritte festlegen. Der &kde;-Start &zb; benutzt sieben Schritte.</para>
<para>Jedesmal wenn Sie <constant>programStarted</constant> aufrufen, wird ein Schritt als abgeschlossen markiert und inkrementiert. Wenn Ihr Programm mit dem Start fertig ist, können Sie den Startbildschirm auf diese Weise wieder ausblenden:</para>
<para>Es ist nicht schwer, ein Darstellungsmodul für &ksplash; zu schreiben. In diesem Abschnitt beschäftigen wir uns mit diesem Thema und schreiben ein Modul, das den Startbildschirm eines sehr bekannten Betriebssystems emuliert. In diesem Abschnitt wird vorausgesetzt, dass Sie mit den Grundlagen von C++ sowie KDE/Qt-Programmierung vertraut sind.</para>
<para>Wir erzeugen ein Darstellungsmodul mit dem Namen <literal>2k</literal>. Der Modulname wird an vielen Stellen verwendet und es ist wichtig, dass Sie den Namen durchgängig korrekt verwenden, damit &ksplash; Ihr Modul finden und benutzen kann. &ksplash;s Darstellungsmodule sind dynamisch ladbare Bibliotheken und folgen dieser Namenskonvention: </para>
<member>Die Bibliothek sollte den Namen <filename>ksplash+designname</filename> tragen. Verwenden Sie keine Großbuchstaben! In unserem Beispiel lautet der Name <filename>ksplash2k</filename>.</member>
<member>Außerdem benötigt Ihr Modul eine Desktop-Datei mit dem Namen <filename>ksplash+designname.desktop</filename>. Hier dürfen ebenfalls keine Großbuchstaben verwendet werden. In unserem Beispiel heißt die Datei <filename>ksplash2k.desktop</filename>. </member>
<member>Schlussendlich muss das von der Bibliothek zurückgegebene Objekt eine Klasse mit dem Namen <literal>Theme+designname</literal> sein. In unserem Beispiel als <literal>Theme2k</literal>.</member>
<para>Ein weiterer wichtiger Punkt ist, dass Ihre Modulklasse von <literal>ThemeEngine</literal> abgeleitet sein muss. Falls Ihnen von den obigen Dingen noch etwas unklar sein sollte, brauchen Sie sich erstmal keine Gedanken zu machen. Wir werden später noch auf jeden Punkt im einzelnen eingehen. </para>
<para>Wir benutzen das &kde; application framework, welches sich um den Bau des Moduls und um Plattformunabhängigkeit kümmert, ohne das wir selber etwas dazu tun müssen. Dafür müssen Sie das Paket <filename>tdesdk</filename> installiert haben. Führen Sie den Befehl <literal>kapptemplate</literal> aus und erzeugen Sie ein Programm mit dem Namen "2k". Für Sie wird ein Basisordner erzeugt, der allgemeine Dateien wie &zb; AUTHORS etc. enthält. Unser Interesse gilt nun aber erstmal nur dem Unterordner <filename class="directory">2k</filename>. Wechseln Sie in diesen Ordner und löschen Sie dort alle Dateien. Nun haben wir das benötigte Grundgerüst. </para>
<para>Als nächsten Schritt erzeugen wir eine <filename>.desktop</filename>-Datei. Wenn diese installiert wird, weiß &ksplash;, dass Ihr Darstellungsmodul verfügbar ist. Nach den beschriebenen Namenskonventionen aus dem <link linkend="basic-requirements">vorigen Kapitel</link> erzeugen Sie nun eine Datei mit dem Namen <filename>ksplash2k.desktop</filename>. Sie sollte folgenden Inhalt haben: </para>
<para>Die Einträge <literal>Encoding</literal>, <literal>Type</literal>, <literal>Comment</literal> und <literal>ServiceTypes</literal> sind für alle Darstellungsmodule gleich. Der Modul- und Bibliotheksname folgen den vorher genannten Namenskonventionen. Der Eintrag <literal>X-KSplash-Default</literal> kann einen Wahrheitswert enthalten und legt fest, ob das Modul im Kontrollzentrum angezeigt wird. Normalerweise ist der Wert hier <constant>true</constant>; es gibt nur ganz wenige Ausnahmen. </para>
<para>Nun haben wir die Vorbereitungen abgeschlossen und können mit dem schönen Teil beginnen - dem Erzeugen einer Klasse die das gewünschte Verhalten festlegt. Die Klasse kann im Grunde alles tun, was wir möchten, mit ein paar wenigen Einschränkungen:</para>
<listitem><para>Modul-Klassen müssen von der Klasse <constant>ThemeEngine</constant> abgeleitet sein.</para></listitem>
<listitem><para>Modul-Klassen müssen die Namenskonvention <classname>Theme+DesignName</classname> einhalten. (Das "+" muss ausgelassen werden.)</para></listitem>
<listitem><para>Modul-Klassen müssen eine <literal>static</literal>-Funktion namens <function>names</function> enthalten, die eine Liste der Namen zurückgibt, mit denen sie aufgerufen werden kann.</para></listitem>
<listitem><para>Falls das Modul im Kontrollzentrum eingerichtet werden kann, muss es eine von <literal>ThemeEngineConfig</literal> abgeleitete Klasse zur Einrichtung enthalten.</para></listitem>
<listitem><para>Modul-Klassen müssen mindestens eine der virtuellen Funktionen <function>slotSetText</function>, <function>slotSetPixmap</function>, <function>slotUpdateProgress</function> und <function>slotUpdatSteps</function> überschreiben.</para></listitem>
<listitem><para>Der Konstruktor sollte die Form <literal>ThemeEngine( TQWidget *parent, const char *name, const QStringList &args)</literal> haben, damit es mit <classname>KGenericFactory</classname> genutzt werden kann.</para></listitem>
<para>Die letzte Anforderung scheint kompliziert zu sein, aber Sie werden später feststellen, dass dies durch nur eine einzige Zeile im Quelltext erledigt werden kann.</para>
<para>Nun gut, gehen wir die obige Auflistung durch: Die Klasse <classname>Theme2k</classname> ist von <classname>ThemeEngine</classname> abgeleitet und erfüllt die Namenskonvention. Sie enthält die Funktion <methodname>Theme2k::names()</methodname> und hat einen Konstruktor mit den benötigten Parametern: <function>Theme2k( TQWidget *, const char *, const QStringList& );</function> und enthält eine einfache Methode <methodname>Theme2k::slotSetText()</methodname>. Kümmern Sie sich erstmal nicht um die Klasse <classname>RotWidget</classname>; sie erzeugt nur ein hübsches Bildschirmelement. Unser Modul ist sehr einfach gehalten und zeigt keine Symbole oder eine Fortschrittsanzeige an. Wenn Sie das möchten, überschreiben Sie die Funktion <function>slotSetPixmap</function>. Ähnliche Funktionen gibt es auch für die Schritte der Fortschrittsanzeige (<function>slotUpdateSteps</function>) und zum Inkrementieren (<function>slotUpdateProgress</function>) des aktuellen Schrittes. </para>
<para>Wir schauen uns nun die wichtigsten Teile der Implementation an. Eine Auflistung des gesamten Codes finden Sie im Anhang. Als erstes schauen wir uns die Voraussetzungen für die Bibliothek an:</para>
<para>Das Makro <constant>K_EXPORT_COMPONENT_FACTORY</constant> ist in <filename>kgenericfactory.h</filename> deklariert. Gut, nun weiter zum Konstruktor! Weil es sich hier um ein sehr einfaches Modul handelt, ist der Konstruktor ebenso einfach.</para>
<para>Die Methode <function>readSettings()</function> zeigt, wie Sie die Design-Einstellungen einlesen. (Sie wollen ja schließlich, dass Ihr Modul auch von Designs verwendet wird, richtig?)</para>
<para>Weil wir unseren Benutzern wohlgesonnen sind, legen wir sinnvolle Voreinstellungen fest. Wir stellen unsere Gruppe immer auf "KSplash Theme: designname" ein, um mit zukünftigen Design-Spezifikationen kompatibel zu sein. Die Methode <function>initUI()</function> ist nicht sonderlich interessant, denn Sie erzeugt nur die Bildschirmelemente. Details finden Sie im Anhang. </para>
<para>Weil wir uns für das &kde; application framework entschieden haben, müssen wir die Datei <filename>Makefile.am</filename> erstellen. Sie sollte so aussehen:</para>
<para>Informationen, wie man <filename>Makefile.am</filename>-Dateien für &kde; schreibt, finden Sie auf der &kde; <ulink url="http://developer.kde.org/documentation/other/makefile_am_howto.html">Webseite</ulink>. Das einzig zu beachtende hier ist, dass wir ein Standard-Design bereitstellen, das unser Modul benutzt, sowie ein Vorschaubild dafür. Um den Benutzern einen Gefallen zu tun, sollten Sie eine Beispieldatei <filename>Theme.rc</filename> bereitstellen, die die verschiedenen Optionen aufzeigt.</para>
<para>Wahrscheinlich haben Sie nicht die korrekten Darstellungsmodule installiert. Die Module befinden sich im Paket <literal>tdeartwork</literal>. Laden Sie es herunter und installieren Sie es. Danach versuchen Sie es erneut.</para>
<para><filename>Theme.rc</filename> ist die Datei, in der Sie die Einstellungen eines Designs festlegen. Weitere Informationen finden Sie im Kapitel <link linkend="themes">Erstellen von Designs für &ksplash;</link>. </para>
<para>&ksplash; benötigt &kde; in der Version 3.2 oder höher. Einige Designs können spezielle Module benötigen. Funktioniert ein Design nicht, setzen Sie sich mit dem Autor des Designs in Verbindung, um herauszufinden wo Sie das benötigte Modul erhalten können.</para>