Example of Service in Python
From Apache OpenOffice Wiki
at fist, PyUNO bridge must be installed. E.g., I need to launch ping and see what errorcode it returns:
[peet@mysql uno_packages]$ pwd /home/peet/OpenOffice.org1.1/user/uno_packages [peet@mysql uno_packages]$ cat >pinger.py <<END_OF_CAT 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",),) END_OF_CAT [peet@mysql uno_packages]$ /usr/lib/openoffice.org.rc2/program/pkgchk [peet@mysql uno_packages]$ export PYTHONPATH=/usr/lib/openoffice.org.rc2/program; ~/OpenOffice.org1.1/soffice
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")