Example of Service in Python
From Apache OpenOffice Wiki
OOo Extensions project
Please view the wiki usage guidelines
|
---|
Categories: Pages: |
Extensions on the main site |
Extensions in other languages: |
at first, PyUNO bridge must be installed. E.g., I need to launch ping and see what errorcode it returns:
import os import uno import unohelper from com.sun.star.task import XJob class Pinger( unohelper.Base, XJob ): def __init__( self, ctx ): self.ctx = ctx def execute( self, args ): struct = uno.createUnoStruct( "com.sun.star.beans.PropertyValue" ) status = -1 output = "false" pipeout = "Something goes wrong?" for struct in args: if struct.Name == 'command': pipe = os.popen('{ ' + struct.Value + '; } 2>&1', 'r') pipeout = pipe.read() status = pipe.close() elif struct.Name == 'print': output = struct.Value if output != "false": desktop = self.ctx.ServiceManager.createInstanceWithContext( "com.sun.star.frame.Desktop", self.ctx ) model = desktop.getCurrentComponent() text = model.Text cursor = text.createTextCursor() text.insertString( cursor, pipeout, 0 ) return status g_ImplementationHelper = unohelper.ImplementationHelper() g_ImplementationHelper.addImplementation( Pinger, "org.openoffice.comp.pyuno.Pinger", ("com.sun.star.task.Job",),)
Since pkgchk I can use org.openoffice.comp.pyuno.Pinger e.g. in basic:
dim worm as object worm = CreateUnoService("org.openoffice.comp.pyuno.Pinger")
For 2.x the pkgchk has been replaced wiht unopkg which usually has a better compilation.
Explanation of the code
First we need to import all the modules we need.
import os import uno import unohelper
Second we will load the XJob
within the com.sun.star.task
this let us avoid being able to load OOo in listen mode.
from com.sun.star.task import XJob