Collabora Office 24.04 Βοήθεια
Μπορείτε να καλέσετε τις μακροεντολές Collabora Office Basic από δέσμες ενεργειών Python και μπορούν να ληφθούν σημαντικά χαρακτηριστικά όπως:
Ευκολίες απλής σύνδεσης από την κονσόλα παρακολούθησης βιβλιοθήκης Access2Base,
Συναρτήσεις εισόδου/εξόδου οθόνης InputBox και MsgBox με βάση την Basic για διευκόλυνση ανάπτυξης της Python,
Η Xray καλεί διακοπή εκτέλεσης δέσμης ενεργειών Python για να βοηθήσει την επιθεώρηση μεταβλητών.
Το Πλαίσιο δέσμης ενεργειών του Collabora Office Διασύνδεση προγραμματισμού εφαρμογών (API) υποστηρίζει τη διαγλωσσική εκτέλεση σεναρίων μεταξύ Python και Basic ή άλλες υποστηριζόμενες γλώσσες προγραμματισμού για αυτό το θέμα. Τα ορίσματα μπορούν να διαβιβαστούν πέρα δώθε σε κλήσεις, υπό την προϋπόθεση ότι αντιπροσωπεύουν πρωτογενείς τύπους δεδομένων που αναγνωρίζουν και οι δύο γλώσσες και υποθέτοντας ότι το Πλαίσιο Σεναρίων τα μετατρέπει κατάλληλα.
Συνιστάται η γνώση των τυπικών αρθρωμάτων Python και των χαρακτηριστικών API του Collabora Office πριν την εκτέλεση διαγλωσσικών κλήσεων από Python σε Basic, JavaScript ή οποιονδήποτε άλλο μηχανισμό δεσμών ενεργειών.
Όταν εκτελούνται σενάρια Python από ένα ολοκληρωμένο περιβάλλον ανάπτυξης (IDE), η ενσωματωμένη βασική μηχανή του Collabora Office μπορεί να απουσιάζει. Αποφύγετε τις κλήσεις Python προς Basic του Collabora Office σε τέτοια περιβάλλοντα. Ωστόσο, το περιβάλλον Python και τα Universal Networks Objects (UNO) είναι πλήρως διαθέσιμα. Ανατρέξτε στο Ρύθμιση ενός ολοκληρωμένου IDE για Python για περισσότερες πληροφορίες.
Οι μακροεντολές Basic του Collabora Office μπορεί να είναι προσωπικές, κοινόχρηστες, ή ενσωματωμένες σε έγγραφα. Για να τις εκτελέσετε, ο χρόνος εκτέλεσης Python χρειάζεται να παρέχεται με τοποθεσίες μακροεντολών Basic. Η υλοποίηση της διεπαφής com.sun.star.script.provider.XScriptProvider επιτρέπει την ανάκτηση των εκτελέσιμων δεσμών ενεργειών:
import uno
from com.sun.star.script.provider import Xscript
def getBasicScript(macro='Main', module='Module1', library='Standard',
isEmbedded=False) -> XScript:
'''Πάρτε το αντικείμενο δέσμης ενεργειών Basic πριν την κλήση.'''
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
Η τεκμηρίωση της εργαλειοθήκης ανάπτυξης λογισμικού (SDK) του Collabora Office για τη διεπαφή com.sun.star.script.provider.XScript δίνει λεπτομέρειες της σύμβασης κλήσης για διαγλωσσικές κλήσεις. Η κλήση των συναρτήσεων απαιτεί τρεις πίνακες:
η πρώτη παραθέτει τα ορίσματα της καλούμενης ρουτίνας
η δεύτερη ταυτοποιεί τα τροποποιημένα ορίσματα
η τρίτη αποθηκεύει τις επιστρεφόμενες τιμές
results = script.invoke((prompt,buttons,title), (), ())
script.invoke((message,), tuple, ())
script.invoke((args), (), results)
Παραδείγματα στο Είσοδος/Έξοδος σε οθόνη περιγράφουν κλήσεις χρήσης Python σε Basic. Η παρακολούθηση συμβάντων εγγράφου δείχνει τη χρήση των *args του ιδιώματος Python για να εκτυπώσει μεταβλητό αριθμό παραμέτρων στον διάλογο κονσόλας σύνδεσης Access2Base.
Κατά την ανάπτυξη μπορείτε να διακόψετε την εκτέλεση της δέσμης ενεργειών Python χρησιμοποιώντας την επέκταση Xray για να ελέγξετε ιδιότητες και μεθόδους των αντικειμένων UNO. Η αποσφαλμάτωση της επέκτασης APSO επιτρέπει την ενδοσκόπηση χρησιμοποιώντας είτε Xray, είτε επεκτάσεις MRI.
def xray(myObject):
script = getBasicScript(library="XrayTool", module="_Main", macro="Xray")
script.invoke((myObject,), (), ())
*argsΗ απλοποιημένη σύνταξη Python μπορεί να χρησιμοποιηθεί σε συνδυασμό με τις ρουτίνες Basic του Collabora Office που δέχονται μεταβλητό αριθμό ορισμάτων. Κάτω από τις συναρτήσεις Python Print και SUM καλούνται οι αντίστοιχες τους Basic Print και SUM, χρησιμοποιώντας την προαναφερερόμενη συνάρτηση getBasicScript. Ο χειρισμός εξαιρέσεων δεν παρατίθεται.
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
def Print(*args):
"""Εμφανίζει τις καθορισμένες συμβολοσειρές ή αριθμητικές εκφράσεις σε πλαίσιο διαλόγου."""
xScript = getBasicScript("Print", "Scripting", embedded=True)
xScript.invoke((args), (), ())
def SUM(*args):
"""SUM την καθορισμένη έκφραση αριθμού."""
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,)
Οι ρουτίνες με βάση το έγγραφο της Basic του Collabora Office Print και SUM δέχονται μεταβλητό αριθμό ορισμάτων. Τα γνωρίσματα Private ή Public δεν έχουν κανένα αποτέλεσμα. Ο έλεγχος τύπου ορισμάτων παραλείπεται για σαφήνεια.
Option Compatible ' "Standard.Scripting" module
Option Explicit
Private Sub Print(ParamArray args() As Variant, Optional sep As String = " ")
''' Εκτύπωση καταλόγου στοιχείων μεταβλητού αριθμού '''
' όλα τα μετατρέψιμα ορίσματα 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
''' SUM είναι κατάλογος μεταβλητών αριθμών '''
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()