Entwicklung/Entwicklung von Erweiterungen

    From The Document Foundation Wiki
    This page is a translated version of the page Development/Extension Development and the translation is 100% complete.

    Einführung

    Erweiterungen ermöglichen es, die Funktionalität von LibreOffice zu erweitern, ohne den Quelltext von LibreOffice selbst verändern zu müssen. LibreOffice kennt drei Arten von Erweiterungen.

    • Es können verschiedene Programmiersprachen verwendet werden, um LibreOffice Erweiterungen unter der UNO component API zu erstellen. Unterstüzte Programmiersprachen sind Basic, [Python], JavaScript, Jave, BeanShell und C++. Der Code und die Daten für die Erweiterung werden als .oxt Dateien gebündelt und können im LibreOffice Extensions repository geteilt werden.
    Erweiterungen sind das bevorzugte Mittel für Sysadmins, um die Standard Einstellungen zu modifizieren. Ein Handbuch für die Entwicklung von Konfigurations-Erweiterungen ist im PDF or ODT Format erhältlich. Ein Beispiel OXT configuration extension begleitet das Handbuch.
    • Es gibt auch die speziellen Calc Erweiterungen Add-Ins, die weitere Tabellen-Funktionen zu Calc hinzufügen. Als UNO Komponente können sie neue Implementierungen von existierenden Funktionalitäten oder spezielle Komponenten wie Calc Add-Ins, Add-Ons, Daten-Piloten, Chart-Add-Ins oder linguistische Komponenten wie die Rechtschreibprüfung, den Silbentrenner oder den Thesaurus (siehe Add-Ins documentation) bereitstellen.

    Über Vorlagen

    Sie werden bemerken, dass in einigen Beispielen die Vorlagen im Ordner "templates" abgelegt werden, während sie in anderen Beispielen im Ordner "template" landen. Solange der passende Name in Paths.xcu eingetragen ist, funktionieren beide Ordner. In der Datei Paths.xcu bezieht sich das "%origin%" wie in <node oor:name="%origin%/template" oor:op="fuse"/> auf den Speicherort der Erweiterung nachdem sie installiert wurde. Z. Bsp.:

    file:///<path-to-your-libreoffice-installation-or-config>/user/uno_packages/cache/uno_packages/lu168780135zflp.tmp_/<extenion_filename>.oxt

    Dabei sollte "template" wie in <node oor:name="%origin%/template" oor:op="fuse"/> relativ zum Wurzelverzeichnis der ausgepackten Erweiterung sein. Das bedeutet, dass, wenn die aktuelle Erweiterung in einem Ordner namens "my_templates" steckt, dann in der Path.xcu ein: <node oor:name="%origin%/my_templates" oor:op="fuse"/> steht.

    Ebenso steht das "Template" in <node oor:name="Template" oor:op="fuse" oor:mandatory="true"> im Path.xcu für die Kategorie "Template". Diese wird in unotools/source/config/pathoptions.cxx (zusammen mit Addin, AutoCorrect, AutoText, Dictionary, Gallery. etc.) definiert.


    Resourcen

    Um Redundanzen zu vermeiden kann auf die OpenOffice Dokumentation verwiesen werden. Siehe z. Bsp. die Version dieser Seite in der OpenOffice Wiki. Diese sind nach wie vor weitestgehendst kompatibel. Ein extra Check sollte trotzdem vorgenommen werden, da die Entwicklung von LibreOffice schnell voranschreittet (siehe Anmerkungen zur Kompatibilität weiter unten).

    Für eine komplette Beschreibung der Erweiterungen und dem .oxt Datei-Format siehe das Entwicklerhandbuch

    Aktuelle Hinweise werden gerade auf den Hilfe Seiten zusammengefasst.

    Vorm Loslegen muss das SDK installiert werden.

    Tutorials und Beispiele

    Für den Anfang bietet sich ein Blick in die Tutorials oder den Quelltext der Beispiel Erweiterung an. Der LibreOffice Quellcode hat auch eine Sammlung von SDK Beispielen. Ein anderer Weg zu Beispielen wäre, die .oxt Datei einer existierenden Erweiterung auszupacken und den Inhalt zu studieren.

    Basic

    Java

    • Start Erweiterung Start Erweiterung als Basis für eigene Erweiterungen.
    • Seitenleisten Erweiterung Ähnlich der Start Erweiterung, diesmal zur Erstellung eines Seitenleisten Decks.
    • NOA-libre ist ein objektorientierter Leichtgewicht-Wrapper um die LibreOffice UNO API. Dieser bietet eine höhere Abstraktion für viele UNO-Interfaces.
    • UNOHelper bietet Hilfe-Funktionen zur Arbeit mit der UNO API. Er stellt oft gebrauchte Funktionen der UNO API zum leichteren Einsatz zur Verfügung.
    • LibreOffice Template System (LOTS) ist eine große Java Erweiterung mit erweiterten Templates, Formularen und Autotext Funktionalitäten.


    Eclipse Plugin

    TDF bietet das Eclipse Plugin LOEclipse bei Entwicklungen von LibreOffice Erweiterungen / Komponenten in Java. Es steht im Eclipse Marketplace zur Verfügung.

    Python

    Siehe auch die Seiten zur Python Erweiterungs Entwicklung (engl.), zum Python Makro-Handbuch und zur Gestaltung und Entwicklung von Python Applicationen.

    C++

    Nicht-codierte Beispiele

    • Andreas Mantkes github extensionbook Repository enthält eine Sammlung an nicht-codierten Beispielen die erklären, wie ein Set von Farben, Vorlagen, Auto-Text und Galleries in eine Erweiterung gepackt werden können.
    • Kevin Suo's github lo_l10n_templates Repository ist ein Beispiel, wie ein Vorlagen-Set als LibreOffice Erweiterung erstellt wird und wie sie lokalisiert wird.

    Anmerkungen zur Kompatibilität

    Die LibreOffice Entwickler sind sehr konservativ, wenn es Änderungen in der public (UNO) API gibt. Daher arbeiten die meisten Erweiterungen für OpenOffice.org oder Apache OpenOffice immer noch mit LibreOffice. Wenn es Änderungen gibt, werden sie in ReleaseNotes/de (API Änderungen unter 4.2, 4.1 und 4.0) vermerkt.

    • Die OpenOffice.org-minimal-version Angabe gibt an dass die Erweiterung sowohl in der angegebenen Version als auch in allen anderen Versionen von OpenOffice danach arbeitet. Alle LibreOffice Versionen bis zur Version 4.2.3 geben die Version 3.4, an während die Versionen ab 4.2.4 die Version 4.1 referenzieren. Diese Angabe gibt nur an, dass Funktionalitäten aus der angegebenen OpenOffice.org Version (und konsequenterweise in allen anderen Produkten, nicht nur in OpenOffice.org selbst) verwendet werden.
    • Wenn eine Erweiterung spezifische Funktionalität von LibreOffice ab Version 7.0 nutzt, kann eine neue Angabe LibreOffice-minimal-version im Namensraum http://libreoffice.org/extensions/description/2011 zusätzlich zur Angabe der LibreOffice-minimal-version verwendet werden. Das sollte aber nur sehr selten nötig sein.