Cambiar a contenido. | Saltar a navegación

Screen styles
Usted está aquí: Inicio Documentación Tutorial Creando extensiones para OpenOffice.org con PyUNO Codigo Python

Codigo Python

Disectamos la estructura del script de python en partes para su estudio.

Una vez aprendido la estructura, ahora podemos empezar a estudiar nuestro codigo. Este codigo se puede dividir en grandes rasgos en tres partes.

  • Insertar los modulos correspondientes
  • Declarar los servicios y componentes para el desarrollo
  • Insertar el gImplmentationHelper para declarar que es una extension

 

Para la primera parte es importante insertar los modulos JobExecutor, unohelper y uno.

 

import uno

import unohelper

from com.sun.star.task import XJobExecutor

 

Para el siguiente punto necesitamos una clase con la abstraccion de los componentes incluyendo el componente de escritorio, de aplicacion, de hoja y finalmente de celda.

 

class HelloWorldJob(unohelper.Base, XJobExecutor):

    def __init__(self, ctx):

        # store the component context for later use

        self.ctx = ctx

 

    def trigger(self, args):

        # Retrieve the desktop object

        desktop = self.ctx.ServiceManager.createInstanceWithContext("com.sun.star.frame.Desktop", self.ctx)

        spreadsheet = desktop.getCurrentComponent()

        sheets = spreadsheet.getSheets()

        cell = sheets.getByIndex(0).getCellByPosition(0, 0)

        if cell.getFormula():

            cell.setFormula("Hello " + cell.getFormula())

        else:

            cell.setFormula("Hello world")

 

Este codigo tiene muchas similitudes con el codigo del tutorial pasado que se escribio en Python.com.mx. Aqui llamamos a los servicios de "Desktop", "CurrentComponent" pero a diferencia del procesador de texto en una hoja de calculo usamos getSheets(), y en vez de posicionarnos con el cursor lo hacemos por la celda con getCellByPosition().

 

Calc tiene sus propios servicios y metodos incluyendo aqui donde obtenemos la formula actual con getFormula() y setFormula().

 

Nota: Si solo pensamos poner texto tambien existe el setString().

 

La ultima parte de nuestro codigo es la razon por la cual llamamos a unohelper y a XJobExecutor. Esta es una parte predeterminada para poder correrlo como una extension.

 

g_ImplementationHelper = unohelper.ImplementationHelper()

 

g_ImplementationHelper.addImplementation( \

        HelloWorldJob,                                # UNO clase de objeto

        "org.openoffice.comp.pyuno.demo.HelloWorld",  # Nombre de la implementacion

        ("com.sun.star.task.Job",),)                  # Lista de servicios implementados

 

En estas lineas podemos ver la declaraciones importantes que une nuestro script al XML que veremos mas adelante. La clase con el objeto que tiene la logica de la aplicacion, seguido del identificador de la implementacion, esta es algo arbitraria pero debe ser la misma presentada en el XML, finalmente el servicio de task.Job el cual implementara en el addImplementation().

 

Acciones de Documento