Collabora Office 24.04 Yardım
Python komut dosyalarından Collabora Office Basic makrolarını çağırabilirsiniz ve karşılığında aşağıdakiler gibi dikkate değer özellikler elde edilebilir:
Simple logging facilities out of Access2Base library Trace console,
InputBox and MsgBox screen I/O functions based on Basic to ease Python development,
Xray değişkenleri incelemeye yardımcı olmak için Python komut dosyasının yürütülmesini kesintiye uğratan çağrılar yapar.
Collabora Office Uygulama Programlama Arayüzü (API) Komut Dosyası Çerçevesi, Python ile Basic veya bu konuda desteklenen diğer programlama dilleri arasında diller arası komut dosyası yürütmeyi destekler. Bağımsız değişkenler, her iki dilin de tanıdığı ilkel veri türlerini temsil etmeleri koşuluyla ve Komut Dosyası Çerçevesinin bunları uygun şekilde dönüştürdüğü varsayılarak çağrılar arasında aktarılabilir.
Python'dan Basic'e, JavaScript'e veya başka bir komut dosyası motoruna diller arası çağrılar gerçekleştirmeden önce Python standart modülleri ve Collabora Office API özellikleri hakkında bilgi sahibi olmanız tavsiye edilir.
Bir Tümleşik Geliştirme Ortamından (IDE) Python komut dosyalarını çalıştırırken, Collabora Office gömülü Temel motoru bulunmayabilir. Bu tür bağlamlarda Python'dan Collabora Office Basic'e çağrı yapmaktan kaçının. Ancak Python ortamı ve Evrensel Ağ Nesneleri (UNO) tamamen kullanılabilirdir. Daha fazla bilgi için Python için Tümleşik Bir IDE Ayarlama bölümüne bakın.
Collabora Office Basic makroları kişisel olabilir, paylaşılabilir veya belgelere gömülebilir. Bunları yürütmek için, Python çalışma zamanına Basic makro konumlarının sağlanması gerekir. com.sun.star.script.provider.XScriptProvider arayüzünü uygulamak çalıştırılabilir komut dosyalarının alınmasına imkân sağlar:
import uno
from com.sun.star.script.provider import Xscript
def getBasicScript(macro='Main', module='Module1', library='Standard',
isEmbedded=False) -> XScript:
'''Çağırmadan önce Basic betik nesnesini yakala.'''
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
com.sun.star.script.provider.XScript arayüzü için Collabora Office Yazılım Geliştirme Kiti (SDK) belgeleri, diller arası çağrılar için çağrı kurallarını ayrıntılı olarak açıklar. İşlevlerin çağrılması üç dizi gerektirir:
birinci çağrılan rutinin argümanlarını listeler
ikincisi değiştirilmiş argümanları tanımlar
üçüncüsü dönüş değerlerini saklar
results = script.invoke((prompt,buttons,title), (), ())
script.invoke((message,), tuple, ())
script.invoke((args), (), results)
Examples in Input/Output to Screen detail Python to Basic invocation calls. Monitoring Document Events illustrates the usage of *args Python idiom to print a variable number of parameters to Access2Base logging console dialog.
At time of development you can interrupt Python script execution using Xray extension in order to inspect properties and methods of UNO objects. The APSO extension debugger allows object introspection using either Xray either MRI extensions.
def xray(myObject):
script = getBasicScript(library="XrayTool", module="_Main", macro="Xray")
script.invoke((myObject,), (), ())
*argsPython simplified syntax can be used in conjunction with Collabora Office Basic routines that accept a variable number of arguments. Below Print and SUM Python functions call their Basic Print and SUM counterparts, using aforementioned getBasicScript function. Exception handling is not detailed.
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
def Print(*args):
"""Outputs the specified strings or numeric expressions in a dialog box."""
xScript = getBasicScript("Print", "Scripting", embedded=True)
xScript.invoke((args), (), ())
def SUM(*args):
"""SUM the specified number expression."""
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,)
The Collabora Office Basic Print and SUM document-based routines accept a variable number of arguments. The Private or Public attributes have no effect. The arguments type checking is skipped for clarity.
Option Compatible ' "Standard.Scripting" module
Option Explicit
Private Sub Print(ParamArray args() As Variant, Optional sep As String = " ")
''' Değişken numarasının öge listesini yazdır '''
' all CStr() convertible args are accepted
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
''' Değişken bir sayı listesini TOPLA '''
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()