Example of Service in Python
From Apache OpenOffice Wiki
		
		
		
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
| 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