Basic Makros aus Python aufrufen
Sie können Collabora Office Basic-Makros aus Python-Skripten aufrufen und erhalten im Gegenzug folgende bemerkenswerte Funktionen:
Einfache Protokollierungsfunktionen aus der Access2Base-Bibliothek Trace-Konsole,
InputBox- und MsgBox-Bildschirm-E/A-Funktionen, die auf Basic basieren, um die Python-Entwicklung zu vereinfachen,
Xray ruft eine Unterbrechung der Python-Skriptausführung auf, um die Überprüfung von Variablen zu erleichtern.
Das Scripting-Framework der Collabora Office-Anwendungsprogrammierschnittstelle (API) unterstützt die Ausführung von Skripten zwischen Python und Basic oder anderen unterstützten Programmiersprachen. Argumente können zwischen Aufrufen hin und her übergeben werden, sofern sie primitive Datentypen darstellen, die von beiden Sprachen erkannt werden, und vorausgesetzt, dass sie vom Scripting-Framework ordnungsgemäß konvertiert werden.
Es wird empfohlen, sich mit den Python-Standardmodulen und den Collabora Office-API-Funktionen vertraut zu machen, bevor Sie Sprachaufrufe von Python an Basic, JavaScript oder eine andere Skript-Engine ausführen.
Beim Ausführen von Python-Skripten in einer IDE (Integrated Development Environment) fehlt möglicherweise die geschachtelte Collabora Office Basic-Engine. Vermeiden Sie in einem solchen Kontext Aufrufe von Python an Collabora Office Basic. Die Python-Umgebung und das Universal Networks Objects (UNO) sind jedoch vollständig verfügbar. Weitere Informationen finden Sie unter Einrichten einer integrierten IDE für Python.
Collabora Office Basic-Skripte abrufen
Grundlegende Collabora Office Makros können privat, gemeinsam oder in Dokumente eingebettet sein. Um sie auszuführen, muss die Python-Runtime mit Basic-Makro-Positionen versehen werden. Das Implementieren der Schnittstelle com.sun.star.script.provider.XScriptProvider ermöglicht den Abruf von ausführbaren Skripten:
import uno
from com.sun.star.script.provider import Xscript
def getBasicScript(macro='Main', module='Module1', library='Standard',
isEmbedded=False) -> XScript:
'''Grundlegendes Skript-Objekt vor dem Aufruf abrufen.'''
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
Collabora Office Basic-Skripte ausführen
In der Collabora Office Software Development Kit (SDK)-Dokumentation für die com.sun.star.script.provider.XScript-Schnittstelle wird die Aufrufkonvention für Sprachaufrufe beschrieben. Der Aufruf von Funktionen erfordert drei Arrays:
das erste listet die Argumente der aufgerufenen Routine auf
das zweite identifiziert modifizierte Argumente
der dritte speichert die Rückgabewerte
Python-Syntax
results = script.invoke((prompt,buttons,title), (), ())
script.invoke((message,), tuple, ())
script.invoke((args), (), results)
Beispiele für private oder gemeinsam genutzte Skripte
Beispiele inEin-/Ausgabe auf dem Bildschirm beschreiben die Aufrufe von Python zu Basic. Überwachen von Dokumentereignissen veranschaulicht die Verwendung der *args-Python-Sprache zum Drucken einer variablen Anzahl von Parametern in Access2Base im Dialog Protokollierungskonsole.
Zum Zeitpunkt der Programmierung können Sie die Ausführung des Python-Skripts unterbrechen, indem Sie die Xray-Extension verwenden, um die Eigenschaften und Methoden von UNO-Objekten zu überprüfen. Der ASPO-Erweiterungs-Debugger ermöglicht die Objekt-Introspektion mithilfe von Xray- oder MRI-Extensions.
def xray(myObject):
script = getBasicScript(library="XrayTool", module="_Main", macro="Xray")
script.invoke((myObject,), (), ())
Beispiele für eingebettete Skripte in Dokumenten
Die vereinfachte *args-Syntax von Python kann in Verbindung mit Collabora Office Basic-Routinen verwendet werden, die eine variable Anzahl von Argumenten akzeptieren. Unterhalb der Python-Funktionen Print und SUM werden die entsprechenden Gegenstücke Print und SUM mit der oben genannten Funktion getBasicScript aufgerufen. Die Ausnahmebehandlung ist nicht detailliert.
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
def Print(*args):
"""Gibt die angegebenen Zeichenfolgen oder numerischen Ausdrücke in einem Dialog aus."""
xScript = getBasicScript("Print", "Scripting", embedded=True)
xScript.invoke((args), (), ())
def SUM(*args):
"""SUM des angegebenen Zahlenausdrucks."""
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,)
Die Dokument-basierten Collabora Office Basic-Routinen Print und SUM akzeptieren eine variable Anzahl von Argumenten. Die Attribute Private oder Public haben keine Auswirkung. Die Überprüfung des Argumenttyps wird aus Gründen der Übersichtlichkeit übersprungen.
Option Compatible ' "Standard.Scripting" module
Option Explicit
Private Sub Print(ParamArray args() As Variant, Optional sep As String = " ")
'''Artikelliste der Variablennummer drucken'''
' alle konvertierbaren CStr()-Argumente werden akzeptiert
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
''' SUM ist eine variable Liste von Zahlen '''
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()