Open Office Plugin mit Python

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
HKA
User
Beiträge: 1
Registriert: Mittwoch 7. Januar 2009, 18:29

Ich möchte ein Open Office Plugin mit Python schreiben. Das Programm soll zusätzliche Funktionen einbinden, die ich per:

Code: Alles auswählen

obj = createunoservice("pyuno.rsapi")
msgbox(obj.test(10))
in Star Basic aufrufen kann.

Nun habe ich folgende Dateien erstellt:
rsapi.py
rsapi.rdb
META-INF/manifest.xml

Die rsapi.py sieht wie folgt aus:

Code: Alles auswählen

import unohelper
class rsapi(unohelper.Base):
	def __init__(self, ctx):
		self.ctx= ctx
		self.multi = 10
	def test(self, input):
		return input*self.multi

g_ImplementationHelper = unohelper.ImplementationHelper ()	
g_ImplementationHelper.addImplementation (rsapi,
					"pyuno.rsapi",
					("pyuno.rsapi",),)
Die manifest.xml:

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8"?>
<manifest:manifest>
	<manifest:file-entry manifest:full-path="rsapi.py" manifest:media-type="application/vnd.sun.star.uno-component;type=Python"/>
</manifest:manifest>
Die rsapi.rdb wird aus einer *.urd Datei erstellt, die wiederum aus einer *.idl Datei erstellt wird.
Meine rsapi.idl Datei enthält:

Code: Alles auswählen

#ifndef __pyuno_rsapi_idl__ 
#define __pyuno_rsapi_idl__ 

module pyuno { 
interface rsapi
{ 
	short  test([in] short input); 
}; };
#endif 
Dies habe ich unter Windows mit dem idlc und dem remerge Programm kompilliert, dass beim Open Office SDK bei liegt.

Wenn ich nun die Dateien zippe und das Plugin installiere, gibt es keinen Fehler. Wenn ich aber nun den Basic Code ausführen möchte bekomme ich:
BASIC runtime error.
Property or method not found.
Würde mich über eine Lösung des Problems freuen. Habe inzwischen zu viel Zeit reingesteckt es ans laufen zu bekommen :/

MFG HKA

PS das Problem habe ich auch auf:
http://www.hackerboard.de/thread.php?threadid=39691
gepostet. Habe mir aber gedacht, dass die Frage hier besser aufgehoben wäre.
Antworten