Collabora Office 24.04 Bantuan
Anda dapat memanggil makro Basic Collabora Office dari skrip Python, dan fitur-fitur penting dapat diperoleh seperti:
Fasilitas pencatatan sederhana dari pustaka konsol Trace Access2Base,
Fungsi I/O tampilan InputBox dan MsgBox berdasarkan Basic untuk mempermudah pengembangan Python,
Pemanggilan Xray mengganggu eksekusi skrip Python untuk membantu menginspeksi variabel.
Kerangka Skrip Antarmuka Pemrograman Aplikasi (API) Collabora Office mendukung eksekusi skrip antar bahasa antara Python dan Basic, atau bahasa pemrograman lain yang didukung dalam hal ini. Argumen dapat diteruskan bolak-balik di seluruh panggilan, asalkan mereka mewakili tipe data primitif yang dikenali oleh kedua bahasa, dan dengan asumsi bahwa Kerangka Skrip mengonversinya dengan tepat.
Disarankan untuk memiliki pengetahuan tentang modul standar Python dan fitur API Collabora Office sebelum melakukan panggilan antar bahasa dari Python ke Basic, JavaScript atau bahasa lainnya.
Saat menjalankan skrip Python dari Lingkungan Pengembangan Terpadu (IDE), mesin Basic yang disematkan Collabora Office mungkin tidak ada. Hindari panggilan Basic Python-ke-Collabora Office dalam konteks seperti itu. Namun lingkungan Python dan Objek Jaringan Universal (UNO) tersedia sepenuhnya. Lihat Setting Up an Integrated IDE for Python untuk informasi selengkapnya.
Makro Collabora Office Basic dapat berdiri sendiri, dibagikan, atau tertanam dalam dokumen. Untuk menjalankannya, runtime Python perlu disediakan dengan lokasi makro Basic. Dengan mengimplementasikan antarmuka com.sun.star.script.provider.XScriptProvider memungkinkan pengambilan skrip yang dapat dieksekusi:
import uno
from com.sun.star.script.provider import Xscript
def getBasicScript(macro='Main', module='Module1', library='Standard',
isEmbedded=False) -> XScript:
'''Mengambil skrip objek Basic sebelum pengaktifan.'''
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
Dokumentasi Kit Pengembangan Aplikasi (SDK) Collabora Office untuk antarmuka com.sun.star.script.provider.XScript menjelaskan tentang kaidah untuk pemanggilan antar bahasa. Aktivasi fungsi membutuhkan 3 array:
yang pertama, daftar argumen dari routine yang dipanggil
yang kedua, mengidentifikasi argumen yang dimodifikasi
yang ketiga, menyimpan nilai kembalian
results = script.invoke((prompt,buttons,title), (), ())
script.invoke((message,), tuple, ())
script.invoke((args), (), results)
Contoh dalam Input/Output ke Layar menjelaskan detil pemanggilan fungsi Python ke Basic. Event Monitoring Dokumen mengilustrasikan penggunaan idiom *args Python untuk mencetak sejumlah parameter variabel ke dialog konsol log Access2Base.
Saat pengembangan Anda dapat menginterupsi eksekusi skrip Python menggunakan ekstensi XRay untuk menginspeksi properti dan method dari objek UNO. Ekstensi pengawakutu ASPO memungkinkan introspeksi objek menggunakan ekstensi Xray atau MRI.
def xray(myObject):
script = getBasicScript(library="XrayTool", module="_Main", macro="Xray")
script.invoke((myObject,), (), ())
Sintaks Python *args yang disimplifikasi dapat digunakan sebagai konjungsi dengan routine Collabora Office Basic yang menerima sejumlah variabel argumen. Di bawah ini fungsi Cetak dan SUM Python memanggil rekan Basic Cetak dan SUM mereka, menggunakan fungsi getBasicScript yang tersebut di atas. Penanganan exception tidak dijelaskan.
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
def Print(*args):
"""Menampilkan ekspresi string atau angka yang ditentukan dalam kotak dialog."""
xScript = getBasicScript("Print", "Scripting", embedded=True)
xScript.invoke((args), (), ())
def SUM(*args):
"""SUM (menjumlahkan) ekspresi angka yang ditentukan."""
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,)
Fungsi berbasis dokumen Collabora Office Basic Cetak dan SUM menerima sejumlah variabel argumen. Atribut Privat atau Publik tidak berpengaruh. Pengecekan jenis argumen dilewati untuk kejelasan.
Option Compatible ' "Standard.Scripting" module
Option Explicit
Private Sub Print(ParamArray args() As Variant, Optional sep As String = " ")
''' Cetak daftar item variabel angka'''
' semua argumen CStr() yang dapat dikonversi, diterima
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 (menjumlahkan) daftar variabel angka '''
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()