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