Ajuda del Collabora Office 24.04
Podeu cridar les macros BASIC del Collabora Office des dels scripts de Python, i es poden obtenir funcionalitats destacables com a retorn, com ara:
Funcionalitats d'autentificació senzilles fora de la llibreria Access2Base Consola de seguiment,
Funcions d'E/S per pantalla InputBox i MsgBox basades en Basic per facilitar el desenvolupament en Python,
La crida Xray interrompeix l'execució dels scripts Python per ajudar a inspeccionar variables.
La interfície de programació d'aplicacions (API) de Collabora Office, admet l'execució de scripts entre llenguatges Python i Basic, o altres llenguatges de programació compatibles. Els arguments es poden passar en els dos sentits de les crides sempre que representin tipus de dades primitius que els dos llenguatges reconeguin, i assumint que l'entorn de scripts els converteix de manera adequada.
Es recomana tenir coneixement dels mòduls estàndard de Python i de les característiques de l'API de Collabora Office abans de realitzar crides des de Python a Basic, JavaScript o qualsevol altre motor de scripts.
Quan s'executen scripts de Python des d'un Entorn de Desenvolupament Integrat (IDE), el motor de base integrat a Collabora Office pot estar absent. Evitar les crides de Python al Basic de Collabora Office en aquests contextos. Tanmateix, l'entorn Python i els objectes de xarxes universals (UNO) estan totalment disponibles. Consulteu Configuració del IDE integrat per a Python per obtenir més informació.
Les macros Basic Collabora Office poden ser personals, compartides o, incrustades en documents. Per tal d'executar-les cal proporcionar a l'entorn d'execució de Python les ubicacions de les macro de Basic. Implementar la interfície com.sun.star.script.provider.XScriptProvider permet la recuperació d'scripts executables:
<bookmarkvalue>API;script.provider.MasterScriptProviderFactory: Recuperació d'scripts Basic</bookmarkvalue><bookmarkvalue>API;script.provider.XScript Execució d'scripts Basic</bookmarkvalue><bookmarkvalue>API;XScriptProvider Recuperació d'scripts Basic</bookmarkvalue>
import uno
from com.sun.star.script.provider import Xscript
def getBasicScript(macro='Main', module='Module1', library='Standard',
isEmbedded=False) -> XScript:
'''Captureu l'objecte script de Basic abans d'invocar-lo.'''
ctx = uno.getComponentContext()
smgr = ctx.ServiceManager
if isEmbedded:
desktop = smgr.createInstanceWithContext('com.sun.star.frame.Desktop', ctx)
scriptPro = desktop.CurrentComponent.getScriptProvider()
location = "document"
else:
mspf = smgr.createInstanceWithContext(
"com.sun.star.script.provider.MasterScriptProviderFactory", ctx)
scriptPro = mspf.createScriptProvider("")
location = "application"
scriptName = "vnd.sun.star.script:"+library+"."+module+"."+macro+ \
"?language=Basic&location="+location
xScript = scriptPro.getScript(scriptName)
return xScript
La documentació del Software Development Kit (SDK) de Collabora Office corresponent a la interfície com.sun.star.script.provider.XScript detalla la convenció de crides entre llenguatges. La invocació de funcions requereix tres matrius:
el primer enumera els arguments de la rutina cridada
el segon identifica els arguments modificats
el tercer emmagatzema els valors retornats
results = script.invoke((prompt,buttons,title), (), ())
script.invoke((message,), tuple, ())
script.invoke((args), (), results)
Exemples a Entrada/Sortida a pantalla detall de crides d'invocació Python a Basic. El Monitoratge d'esdeveniments dels documents mostra l'ús de *args de Python per imprimir el nombre variable de paràmetres a la consola Access2Base.
Durant el període de desenvolupament podeu interrompre l'execució dels scripts en Python utilitzant l'Extensió Xray per tal d'inspeccionar propietats i mètodes d'objectes UNO. L'extensió per a la depuració APSO permet la introspecció d'objectes utilitzant qualsevol de les extensions Xray o MRI.
def xray(myObject):
script = getBasicScript(library="XrayTool", module="_Main", macro="Xray")
script.invoke((myObject,), (), ())
La sintaxi simplificada de Python *args es pot utilitzar conjuntament amb les rutines Basic de Collabora Office que accepten un nombre variable d'arguments. A continuació, les funcions Python Printi SUM criden les seves corresponents Basic Printi SUMutilitzant la funció getBasicScript . La gestió d'excepcions no està detallada.
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
def Print(*args):
""Extreu les cadenes o expressions numèriques especificades en un quadre de diàleg."""
xScript = getBasicScript("Print", "Scripting", embedded=True)
xScript.invoke((args), (), ())
def SUM(*args):
""SUMA l'expressió numèrica especificada.""
xScript = getBasicScript("SUM", "Scripting", embedded=True)
res = xScript.invoke((args), (), ())
return res[0]
# def getBasicScript() # see above
def playWithArgs():
Print("Fun with *args ", -9.81, 297864.681974, 8762E-137)
Print(SUM(45, -9.81, 297864.681974))
Print(SUM(45, -9.81, 297864.681974, 8762E+137))
g_exportedScripts = (playWithArgs,)
Les rutines basades en documents Basic de Collabora Office Print i SUM accepten un nombre variable d’arguments. Els atributs Private o Public no tenen efecte. La comprovació del tipus d’arguments s’ignora per tenir més claredat.
Option Compatible ' "Standard.Scripting" module
Option Explicit
Private Sub Print(ParamArray args() As Variant, Optional sep As String = " ")
''' Imprimeix la llista del nombre variable d'elements'''
' s'accepten tots els arguments convertibles mitjançant CStr()
Dim str As String, i As Integer
If UBound(args) >= 0 Then
For i = 0 To UBound(args)
str = str + Cstr(args(i))+ sep
Next i
End If
Print str
End Sub ' Standard.Scripting.Print()
Public Function SUM(ParamArray args() As Variant) As Variant
''' SUMA una llista variable de nombres'''
Dim ndx As Integer
If UBound(args) >= 0 Then
For ndx = 0 To UBound(args)
SUM = SUM + args(ndx)
Next ndx
End If
End Function ' Standard.Scripting.SUM()