Open Source im professionellen Einsatz

Newsletter abonnieren
Seite durchsuchen

HEFTARCHIV | NEWS | E-BIBLIOTHEK | VIDEO | BLOGS | WHITEPAPER | EVENTS | ACADEMY | ABO | SHOP

user friendly

  Home  »  Heft & Abo  »  Heftarchiv  »  2006  »  06  »  Wasserzeichen setzen  

RSS-Feed der aktuellen News von Linux-Magazin Online Folgen Sie Linux-Magazin Online auf Twitter
Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark

© photocase.com

Bildbearbeitungs-Plugins für KDE entwickeln

Wasserzeichen setzen

von Jesper K. Pedersen
Erschienen im Linux-Magazin 2006/06

Kleine GUI-Anwendungen eignen sich gut als Einstieg für Programmierer. Dieser Artikel zeigt, wie ein Wasserzeichen-Plugin für das KDE Imaging Plugin Interface entsteht.

Jede Anwendung ist eine Welt für sich. Dieser Satz gilt auch für die meisten Open-Source-Programme. Denn obwohl es logisch scheint, die Vorzüge von Programm A mit denen von Programm B zu kombinieren, bleiben Fusionen trotz Open Source und Basar-Theorie eher die Ausnahme. Eine davon ist die gemeinsame Plugin-Infrastruktur der KDE-Bildbearbeitungsprogramme Kphotoalbum alias Kimdaba [1], Digikam [2], Showimg [3] und Gwenview [4]. Dank der einheitlichen Schnittstelle arbeitet das KDE Imaging Plugin Interface (Kipi, [5]) unter allen vier KDE-Programmen. Kipi entlastet zudem die Hauptentwickler dieser Programme, da mit grundlegenden Kenntnissen in C++ jeder Programmierer Kipi-Plugins entwickeln kann.

Neues Kipi-Plugin

Der Artikel zeigt an einem Beispiel, welche Schritte zu einem neuen Kipi-Plugin führen. Das Plugin soll Bilder mit einem Wasserzeichen-Text versehen (Abbildung 1). Die Codeschnipsel und der Sourcecode des fertigen Plugins finden sich auf der Listing-Seite des Linux-Magazins [6] zum Download. Um das Plugin zu kompilieren, sind neben KDE und »libkipi« auch die zugehörigen Entwicklerpakete erforderlich.

Ein Kipi-Plugin entsteht aus folgenden Arbeitsschritten:


Abbildung 1: Das unfertige Beispiel-Plugin funktioniert bereits. Hier tippt der Benutzer den Text des Wasserzeichens ein und ändert die Schriftgröße.

  • Das Plugin von der Klasse »KIPI::Plugin« ableiten
    und einige virtuelle Methoden überschreiben. Von dieser Klasse
    erzeugt die Host-Anwendung (zum Beispiel Gwenview) eine Instanz und
    kommuniziert damit.
  • Informationen von der Host-Anwendung anfordern. Es existieren
    bereits einige Klassen, die Informationen zum aktuellen Fotoalbum,
    den gerade ausgewählten Bildern und zum Beispiel zu
    Schlüsselwörtern für ein bestimmtes Bild
    übermitteln.
  • Zusammenarbeit mit dem Framework herstellen. Damit sie
    funktioniert, muss der Quellcode ein magisches Makro enthalten.
    Außerdem benötigt er ein »Makefile.am«, eine
    ».desktop«-Datei und einige weitere
    Framework-Dateien.

Schließlich muss der Programmierer noch den Code des eigentlichen Plugin schreiben.

Plugin-Klasse

Um ein Kipi-Plugin zu entwickeln, muss es der Entwickler von der Klasse »KIPI::Plugin« ableiten, die sich in der Include-Datei »libkipi/plugin.h« befindet. Listing 1 zeigt diese Klasse in einer gekürzten Fassung. Um ihre Funktionsweise zu verstehen, ist es wichtig, zu wissen, wie Host-Anwendungen Plugins laden. Mit Hilfe einiger KDE-internen Mechanismen findet die Anwendung sämtliche für sie relevante Plugins. KDE lädt die Plugins dynamisch, das heißt, es legt eine Instanz des Plugin an und übermittelt diese an die Host-Anwendung. Die Details dieses Vorgangs sind unter [7] näher beschrieben.

Listing 1:
»KIPI::Plugin«

01 class Plugin : public QObject
02 {
03 public:
04     Plugin( KInstance* instance, QObject *parent, const char* name);
05     virtual void setup( QWidget* widget ) = 0;
06     KActionPtrList actions( QWidget* parent = 0 );
07     KActionCollection* actionCollection( QWidget* parent = 0 );
08     virtual Category category( KAction* action ) const = 0;
09 
10 protected:
11     void addAction( KAction* action );
12 }

Die Host-Anwendung ruft bei der Plugin-Instanz die »setup()«-Methode auf. Deren Aufgabe ist es, die nötigen »KAction«-Instanzen anzulegen. Interessierte Host-Anwendungen spiegeln die Actions in ihren Menüs ein - wo, das entscheidet die Anwendung, nicht das Plugin

Das Plugin muss von der Host-Anwendung erfahren, um welche Art von Erweiterung es sich handelt. Diese Informationen ermittelt die Host-Anwendung mit der »category()«-Methode. Damit der Ablauf reibungslos funktioniert, ist es nötig, dass das Plugin über »Plugin::actionCollection()« die »action«-Informationen der Host-Anwendungen sammelt und später für jede Aktion »Plugin::addAction()« aufruft. Dabei gilt es, zwei häufig Fehlerquellen zu vermeiden:

  • Die »Plugin::actions()«-Methoden sind nicht
    für das Plugin relevant, sondern für die Host-Anwendung.
    Das API der Klasse betrifft hingegen das Plugin und die
    Host-Anwendung.
  • Die explizite »setup()«-Methode ist nötig,
    weil das Plugin einerseits keine Kontrolle über die aktuellen
    Parameter des Konstruktors hat - den legt das
    KDE-Plugin-Framework automatisch an. Andererseits kann die
    Host-Anwendung das Plugin mehrfach einsetzen, zum Beispiel im
    Hauptmenü und im Kontextmenü.

Der Code benötigt deshalb mehrere »KAction«-Instanzen und ruft die »setup()«-Methode mehrmals mit verschiedenen Widgets als Argument auf. Listing 3 zeigt die vollständige Implementation der Plugin-Unterklasse.

Die Zeilen 1 und 2 binden das KDE-Plugin-Framework ein. »WatermarkPlugin« bezeichnet die Plugin-Klasse. Wer ein eigenes Plugin schreibt, muss diese durch die Klasse des Plugin ersetzen. Der Eintrag »kipiplugin_watermark« (Zeilen 6 und 7) steht für den Namen der zugehörigen ».desktop«-Datei.

Sie können diesen Artikel als PDF für 99 Cent kaufen. Klicken Sie dazu einfach auf eine der beiden Bezahloptionen Paypal oder ClickandBuy.


Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark
Ähnliche Artikel
Bildkorrekturen Bilder mit Java anzeigen und verarbeiten
Symbiose im Wandel KDE 4 und QT 4
PDF nach Maß PDF-Dateien unter Linux konvertieren und bearbeiten
Ins Gesicht geblickt Gesichtserkennungs-SDKs OpenCV, Verilook und FaceVACS
Zur Sonne, zur Freiheit Neuerungen in Eclipse Helios
Ein Quantum GIS Mit der freien Software Quantum GIS 1.0 eigene Karten generieren
Whitepaper
Daten Migration - Eine Publikation von Bloor Research

Datenmigrationsprojekte überschreiten häufig das Budget, neigen zu Verzögerung und werden unter Umständen komplett abgebrochen. Bloor Research ist eines der weltweit führenden IT-Forschungs-, Analyse- und Beratungsunternehmen und wird in dem vorliegenden White Paper die wichtigsten Aspekte dieser Problematik näher beleuchten. Ferner werden praktische Empfehlungen für erfolgreiche Migrationsprojekte gegeben, die Sie auf Ihr nächstes Projekt übertragen können.

Download PDF (Registrierung erforderlich)
Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele

Über die letzten Jahre hinweg haben sich Open Source Lösungen als fester Bestandteil des gesamten Datenintegrationsmarktes etabliert. Viele Unternehmen haben bereits das Open Source Modell für Ihre Datenintegrationsprojekte aufgegriffen. Das vorliegende White Paper illustriert anhand ausgewählter Fallstudien und Anwendungsbeispiele die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.

Download PDF (Registrierung erforderlich)
Kommentare (0)