Example of Service in Python

From Apache OpenOffice Wiki
Revision as of 06:13, 22 December 2006 by Jza (Talk | contribs)

Jump to: navigation, search
OOo Extensions project

Please view the wiki usage guidelines
before contributing.



Extensions on the main site

Extensions in other languages:
ES - FR - IT - JA - NL - OC -

at fist, PyUNO bridge must be installed. E.g., I need to launch ping and see what errorcode it returns:

[python] 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: [oobas]

  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. [python] 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.

[python] from com.sun.star.task import XJob

Personal tools