Difference between revisions of "Example of Service in Python"

From Apache OpenOffice Wiki
Jump to: navigation, search
 
Line 1: Line 1:
 
at fist, PyUNO bridge must be installed. E.g., I need to launch ping and see what errorcode it returns:
 
at fist, PyUNO bridge must be installed. E.g., I need to launch ping and see what errorcode it returns:
  
<pre>[peet@mysql uno_packages]$ pwd
+
<code>[python]
/home/peet/OpenOffice.org1.1/user/uno_packages
+
[peet@mysql uno_packages]$ cat >pinger.py <<END_OF_CAT
+
 
import os  
 
import os  
 
import uno  
 
import uno  
Line 41: Line 39:
 
g_ImplementationHelper.addImplementation( Pinger, "org.openoffice.comp.pyuno.Pinger", ("com.sun.star.task.Job",),)  
 
g_ImplementationHelper.addImplementation( Pinger, "org.openoffice.comp.pyuno.Pinger", ("com.sun.star.task.Job",),)  
 
END_OF_CAT  
 
END_OF_CAT  
[peet@mysql uno_packages]$ /usr/lib/openoffice.org.rc2/program/pkgchk
+
</code>
[peet@mysql uno_packages]$ export PYTHONPATH=/usr/lib/openoffice.org.rc2/program; ~/OpenOffice.org1.1/soffice</pre>
+
  
 
Since pkgchk I can use org.openoffice.comp.pyuno.Pinger e.g. in basic:
 
Since pkgchk I can use org.openoffice.comp.pyuno.Pinger e.g. in basic:
 
   dim worm as object  
 
   dim worm as object  
 
   worm = CreateUnoService("org.openoffice.comp.pyuno.Pinger")
 
   worm = CreateUnoService("org.openoffice.comp.pyuno.Pinger")

Revision as of 17:39, 7 December 2006

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",),) END_OF_CAT

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")
Personal tools