Difference between revisions of "Example of Service in Python"
(6 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
+ | {{Extensions}} | ||
+ | |||
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: | ||
Line 38: | Line 40: | ||
g_ImplementationHelper = unohelper.ImplementationHelper() | g_ImplementationHelper = unohelper.ImplementationHelper() | ||
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",),) | ||
− | + | ||
</code> | </code> | ||
Line 46: | Line 48: | ||
worm = CreateUnoService("org.openoffice.comp.pyuno.Pinger") | worm = CreateUnoService("org.openoffice.comp.pyuno.Pinger") | ||
</code> | </code> | ||
+ | |||
+ | 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. | ||
+ | <code>[python] | ||
+ | import os | ||
+ | import uno | ||
+ | import unohelper</code> | ||
+ | |||
+ | Second we will load the <code>XJob</code> within the <code>com.sun.star.task</code> this let us avoid being able to load OOo in ''listen mode''. | ||
+ | |||
+ | <code>[python] | ||
+ | from com.sun.star.task import XJob </code> | ||
+ | |||
+ | [[Category:Python]] | ||
+ | |||
+ | [[Category:Education]] |
Revision as of 14:08, 5 January 2010
OOo Extensions project
Please view the wiki usage guidelines
|
---|
Categories: Pages: |
Extensions on the main site |
Extensions in other languages: |
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