# 10.2. Hinzufügen von Knöpfen zur Werkzeugleiste

Wenn Sie neue Kommandos über Knöpfe in der Werkzeugleiste zur Verfügung stellen möchten, können Sie dies leicht mit der `initToolbar()` Methode der `App` Klasse tun. Hier entscheiden wir uns, je einen Knopf für die beiden Menüeinträge im Stiftmenü hinzuzufügen, aber diese Knöpfe brauchen Icons. Sie können sie entweder im KDE Verzeichnis "toolbar" finden, oder, wenn keins der Icons zu der Aktion paßt, sie selbst erzeugen. KIconEdit ist gut dafür geeignet Icons zu erstellen, also werden wir sie zuerst erzeugen. Wählen Sie "Neu" aus dem KDevelop Dateimenü, gehen Sie auf den Linux/KDE Tabulator und wählen Sie dann "Icon" als Dateityp. Das erste Icon nennen wir "pencolor.xpm". Nun müssen wir sagen, wo das Icon erzeugt werden soll. Drücken Sie den Verzeichnisauswahlknopf und wechseln Sie in das Verzeichnis mit Ihren KScribble Quelldateien. Dort erzeugen Sie ein neues Verzeichnis "toolbar". Wechseln Sie in dieses Verzeichnis und drücken Sie "OK". Das neue Icon wird erzeugt und automatisch mit KIconEdit innerhalb von KDevelop geöffnet. Zeichnen Sie etwas, daß dem Benutzer den Sinn des Knopfes zeigt, speichern Sie das Pixmap und wählen Sie dann den LFV / RFV in KDevelop. Wählen Sie das Icon mit der rechten Maustaste aus und gehen Sie im Popupmenü auf "Eigenschaften". Sie sehen, daß das Icon der Distribution hinzugefügt wurde, damit es aber später von Ihrem Programm gefunden werden kann, müssen Sie das Installationsziel ebenfalls angeben. Markieren Sie die "installieren" Option und geben Sie dann darunter ein:

`$(kde&_;datadir)/kscribble/toolbar/pencolor.xpm`

Damit wird das Pixmap im data Verzeichnis der KDE Dateisystemhierarchie installiert, in der jede Anwendung ihr Unterverzeichnis mit zusätzlich benötigten Dateien hat. Icons müssen in einem Unterverzeichnis namens toolbar abgelegt werden, damit der icon loader die Pixmaps für Ihr Programm finden kann.

Wenn Sie damit fertig sind, wiederholen Sie die gleichen Schritte für das Icon zum Setzen der Stiftweite. Nennen Sie dieses Icon "penwidth.xpm".

Nun müssen wir nur noch Knöpfe auf der Werkzeugleiste erzeugen; fügen Sie dazu die markierten Zeilen Ihrem Code hinzu:

       1 void KScribbleApp::initToolBar()
       2 {
       3 ..
       4     toolBar()->insertButton(BarIcon("editcopy"), ID_EDIT_COPY, true, i18n("Copy"));
       5     toolBar()->insertButton(BarIcon("editpaste"), ID_EDIT_PASTE, true, i18n("Paste"));
       6     toolBar()->insertSeparator();
       7 ->  toolBar()->insertButton(BarIcon("pencolor"), ID_PEN_COLOR, true, i18n("Color") );
       8 ->  toolBar()->insertButton(BarIcon("penwidth"), ID_PEN_BRUSH, true, i18n("Width") );
       9 ->  toolBar()->insertSeparator();
      10     toolBar()->insertButton(BarIcon("help"), ID_HELP_CONTENTS, SIGNAL(clicked()),
      11 ..
      12 }

Wir verwenden an dieser Stelle die Methoden von KToolBar um die Knöpfe einzufügen. Das erste Argument, `BarIcon()`, veranlaßt die Methode, das Icon für den Knopf zu laden. Was etwas ungewöhnlich erscheint ist, daß wir uns nicht um die Dateierweiterung zu kümmern brauchen. Das bevorzugte Format unter KDE 2 ist *.PNG, aber es funktioniert auch mit xpm's ( Sie könnten ImageMagick für die Konvertierung der Icons nach PNG verwenden, oder, zu einem späteren Zeitpunkt,KScribble !).

Das zweite Argument ist wiederum die ID. Die Kommandos werden dann automatisch aktiviert, da `toolBar()` bereits mit denselben Methoden verbunden ist wie die Menübar, über das Signal `activated()`. Das dritte Argument steht für "erreichbar" wenn wahr, "deaktiviert" wenn falsch; da die Knöpfe verfügbar sein sollen, setzen wir es auf wahr. Schließlich setzen wir noch eine Kurzinfo für die Knöpfe, die wir wieder in `i18n()` einschließen, um die Internationalisierung zu ermöglichen.

Nun sind Sie für's erste fertig. Die GUI ist, zumindest visuell, erweitert. Sie können KScribble wieder kompilieren und ausführen und sich anschauen, wie es aussieht- natürlich haben die neuen Elemente in der Menü- und in der Werkzeugleiste noch keine Funktion- dies wird sich aber im nächsten Abschnitt ändern. Sie werden vielleicht auch bemerken, daß die Icons, die wir hinzugefügt haben, nicht angezeigt werden. Dies liegt daran, daß wir KScribble nicht installiert haben, und so werden sie nicht gefunden. Alle anderen Icons werden bereits mit den KDE Bibliotheken geliefert, deshalb sind sie schon sichtbar.