🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Kein Menüeintrag für das Addon

Alles zur Programmierung im LibreOffice.
Antworten
jg-n-py
Beiträge: 17
Registriert: Mi 7. Mai 2014, 21:24

Kein Menüeintrag für das Addon

Beitrag von jg-n-py » So 22. Feb 2015, 23:53

So nachdem in OOCalc Makros mit Python schon Routine sind wollte ich mich mal an eine Extension mit Python heranwagen. Habe heute viel OnlineDoku über UNO, Addons, Extensions gelesen und - ohne Erfolg...

Ich wollte Schritt für Schritt ein Addon aufbauen. Im ersten Schritt erstellte ich die *atestmenu.xcu*, die lediglich einen neuen Eintrag im Menü von LO eintragen sollte, was sie aber nicht tut. Hier meine *atestmenu.xcu*:

Code: Alles auswählen

<?xml version='1.0' encoding='UTF-8'?>
<oor:component-data
    xmlns:oor="http://openoffice.org/2001/registry"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    oor:name="Addons"
    oor:package="org.openoffice.Office">

    <node oor:name="AddonUI">
        
        <!-- MenuBar -->
        
        <node oor:name="OfficeMenuBar">
            <node
                oor:name="de.atestmenu.openoffice.WriteInDokument"
                oor:op="replace">
                
                <prop oor:name="Title" oor:type="xs:string">
                    <value>TESTMENUE</value>
                    <value xml:lang="de-DE">TESTMENUE</value>
                </prop>
                <prop oor:name="Target" oor:type="xs:string">
                    <value>_self</value>
                </prop>
                
                <!-- nur fuer Writer -->
                <prop oor:name="Context" oor:type="xs:string">
                    <value>com.sun.star.text.TextDocument</value>
                </prop>
                
                <node oor:name="Submenu">
                    <node oor:name="m1" oor:op="replace">
                        
                        <!-- command URL -->
                
                        <prop oor:name="URL" oor:type="xs:string">
                            <value>service:de.atestmenu.openoffice.WriteInDokument?execute</value>
                        </prop>
                        
                        <prop oor:name="Title" oor:type="xs:string">
                            <value>
                                ATESTMENU
                            </value>
                            <value xml:lang="en-US">
                                ATESTMENU
                            </value>
                            <value xml:lang="de">
                                ATESTMENÜ
                            </value>
                        </prop>
                
                    </node>
                </node>
                <!-- END node Submenu -->
                
            </node>
        </node>
        <!-- End MenuBar -->
        
    </node>
    <!-- END AddonUI -->

</oor:component-data>
Meine *META-INF/manifest.xml*:

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8"?>
<manifest:manifest xmlns:manifest="http://openoffice.org/2001/manifest">

  <manifest:file-entry manifest:media-type="application/de.atestmenu.openoffice.configuration-data" 
      manifest:full-path="atestmenu.xcu"/>

  <manifest:file-entry manifest:media-type="application/de.atestmenu.openoffice.framework-script" 
      manifest:full-path="atestmenu.py"/>
    
</manifest:manifest>
Da im ersten Schritt nur ein Menüeintrag errzeugt werden sollte ist die Funktionalität noch gar nicht implementiert, der Vollständigkeit halber die *atestmenu.py*:

Code: Alles auswählen

import uno
import unohelper
from com.sun.star.task import XJobExecutor
 
 
class WriteInDokument( unohelper.Base, XJobExecutor ):
    def __init__( self, ctx ):
        self.ctx = ctx
 
    def trigger( self, args ):
        """Methode noch funktionslos
        """
        desktop = self.ctx.ServiceManager.createInstanceWithContext(
            "com.sun.star.frame.Desktop", self.ctx )
        doc = desktop.getCurrentComponent()
        return


###
# Funktionalitaet in UNO bekannt machen

g_ImplementationHelper = unohelper.ImplementationHelper()
g_ImplementationHelper.addImplementation(
        WriteInDokument,
        "de.atestmenu.openoffice.WriteInDokument",
        ("com.sun.star.task.Job",),
        )
Diese habe ich dann gezippt in *atestmenu.oxt*, die ich gerne angehängt hätte aber geschafft habe ich es nicht.

Was habe ich falsch gemacht?

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2540
Registriert: Fr 10. Dez 2010, 10:01

Re: Kein Menüeintrag für das Addon

Beitrag von karolus » Mo 23. Feb 2015, 08:38

Hallo

Schau einfach mal wie es andere machen, z.b. MRI

Oder erstell dir einen "Testcase" mit dem BasicAddonBuilder

letzteres geht zwar nur mit Basic aber evtl lässt sich die generierte Addon.xcu anpassen.

Karolus
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

jg-n-py
Beiträge: 17
Registriert: Mi 7. Mai 2014, 21:24

Re: Kein Menüeintrag für das Addon

Beitrag von jg-n-py » Mo 23. Feb 2015, 21:56

Hallo @karolus,

leider hat mich das nicht weitergebracht. Pythonpackages herunterzuladen und deren Dateien im oxt anzusehen, hat mir gar nicht geholfen das Konzept zu durchschauen! Diese vielen Abhängigkeiten in den Files machen es mir unmöglich da durchzublicken.

Eben genau aus diesem Grund wollte ich an die Sache Schritt für Schritt herangehen - also Schritt 1 einen Menüeintrag erzeugen :( - irgendwie praktikabel erscheint mir das nicht - gibt es dafür nicht irgendwo anschauliche Tutorials?

Wenn ich den Fehler in meinen Dateien wüsste wäre mir ja auch schon geholfen...

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2540
Registriert: Fr 10. Dez 2010, 10:01

Re: Kein Menüeintrag für das Addon

Beitrag von karolus » Di 24. Feb 2015, 08:43

Hallo

Es hat zwar direkt nichts mit dem Thema hier zu tun, aber MRI solltest du sowieso in der Werkzeugkiste haben.
Eben genau aus diesem Grund wollte ich an die Sache Schritt für Schritt herangehen - also Schritt 1 einen Menüeintrag erzeugen
Und genau in diese Richtung zielt mein zweiter Vorschlag: per BasicAddonBuilder eine "dummy".oxt bauen mit Menüeintrag, und hinterher die Addonn.xcu im Packet anschauen...

Karolus
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

jg-n-py
Beiträge: 17
Registriert: Mi 7. Mai 2014, 21:24

Re: Kein Menüeintrag für das Addon

Beitrag von jg-n-py » Di 3. Mär 2015, 21:27

Ok Danke @karolus, dann werd' ich das mal versuchen...

Habe nun mit Hilfe des BasicAddonBuilder eine minimale OXT erstellt, dies lässt sich aber bei mir nicht installieren. Nach der Installation über den Extensionmanager erhalte ich folgende Fehlermeldung:
installationerror-esrp-extension.png
installationerror-esrp-extension.png (16.88 KiB) 3380 mal betrachtet
Tja, da die Hürden werden irgendwie nicht kleiner :cry:

Und nun?

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2540
Registriert: Fr 10. Dez 2010, 10:01

Re: Kein Menüeintrag für das Addon

Beitrag von karolus » Mi 4. Mär 2015, 10:20

Hallo

...aus leidvoller Erfahrung mit meinen ersten "handgedrechselten" CalcAddIns...
Möglicherweise hilft jetzt nur noch ein vollständiges Entfernen von $USERCONFIG/uno_packages/cache

Karolus
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten