Seite 1 von 1

Kein Menüeintrag für das Addon

Verfasst: So 22. Feb 2015, 23:53
von jg-n-py
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?

Re: Kein Menüeintrag für das Addon

Verfasst: Mo 23. Feb 2015, 08:38
von karolus
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

Re: Kein Menüeintrag für das Addon

Verfasst: Mo 23. Feb 2015, 21:56
von jg-n-py
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...

Re: Kein Menüeintrag für das Addon

Verfasst: Di 24. Feb 2015, 08:43
von karolus
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

Re: Kein Menüeintrag für das Addon

Verfasst: Di 3. Mär 2015, 21:27
von jg-n-py
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) 3374 mal betrachtet
Tja, da die Hürden werden irgendwie nicht kleiner :cry:

Und nun?

Re: Kein Menüeintrag für das Addon

Verfasst: Mi 4. Mär 2015, 10:20
von karolus
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