Tulong sa LibreOffice 24.8
Maaari mong tawagan ang LibreOffice Basic macros mula sa mga script ng Python, at maaaring makuha ang mga kapansin-pansing feature bilang kapalit tulad ng:
Mga simpleng pasilidad sa pag-log out sa Access2Base library Trace console,
InputBox at MsgBox screen I/O function batay sa Basic para mapadali ang pagbuo ng Python,
Xray mga tawag na nakakagambala sa pagpapatupad ng script ng Python upang makatulong na suriin ang mga variable.
Ang LibreOffice Application Programming Interface (API) Scripting Framework ay sumusuporta sa inter-language script execution sa pagitan ng Python at Basic, o iba pang sinusuportahang programming language para sa bagay na iyon. Ang mga argumento ay maaaring ipasa nang pabalik-balik sa mga tawag, sa kondisyon na kinakatawan ng mga ito ang mga primitive na uri ng data na kinikilala ng parehong wika, at ipagpalagay na ang Scripting Framework ay na-convert ang mga ito nang naaangkop.
Inirerekomenda na magkaroon ng kaalaman sa mga standard na module ng Python at mga feature ng LibreOffice API bago magsagawa ng mga inter-language na tawag mula sa Python hanggang Basic, JavaScript o anumang iba pang script engine.
Kapag nagpapatakbo ng mga script ng Python mula sa isang Integrated Development Environment (IDE), maaaring wala ang LibreOffice-embedded Basic engine. Iwasan ang Python-to-LibreOffice Basic na mga tawag sa mga ganitong konteksto. Gayunpaman, ang kapaligiran ng Python at Universal Networks Objects (UNO) ay ganap na magagamit. Sumangguni sa Pag-set Up ng Integrated IDE para sa Python para sa karagdagang impormasyon.
Maaaring personal, ibinahagi, o i-embed sa mga dokumento ang LibreOffice Basic macros. Upang maisakatuparan ang mga ito, ang oras ng pagtakbo ng Python ay kailangang ibigay sa mga Pangunahing macro na lokasyon. Pagpapatupad ng com.sun.star.script.provider.XScriptProvider interface ay nagbibigay-daan sa pagkuha ng mga executable script:
import uno
from com.sun.star.script.provider import Xscript
def getBasicScript(macro='Main', module='Module1', library='Standard',
isEmbedded=False) -> XScript:
'''Grab Basic script object bago ang invocation.'''
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
Ang dokumentasyon ng LibreOffice Software Development Kit (SDK) para sa com.sun.star.script.provider.XScript ang interface ay nagdedetalye ng calling convention para sa inter-language na mga tawag. Ang panawagan ng mga function ay nangangailangan ng tatlong array:
ang una ay naglilista ng mga argumento ng tinatawag na routine
ang pangalawa ay kinikilala ang mga binagong argumento
ang pangatlo ay nag-iimbak ng mga halaga ng pagbabalik
results = script.invoke((prompt,buttons,title), (), ())
script.invoke((message,), tuple, ())
script.invoke((args), (), results)
Mga halimbawa sa Input/Output sa Screen detalye ng Python hanggang sa Basic na invocation call. Pagsubaybay sa Mga Kaganapan sa Dokumento inilalarawan ang paggamit ng *args Python idiom para mag-print ng variable na bilang ng mga parameter Access2Base dialog ng pag-log console.
Sa oras ng pag-unlad maaari mong matakpan ang pagpapatupad ng script ng Python gamit Extension ng Xray upang siyasatin ang mga katangian at pamamaraan ng mga bagay ng UNO. Ang APSO extension debugger ay nagpapahintulot sa object introspection gamit ang alinman sa Xray alinman sa mga MRI extension.
def xray(myObject):
script = getBasicScript(library="XrayTool", module="_Main", macro="Xray")
script.invoke((myObject,), (), ())
*args Maaaring gamitin ang Python simplified syntax kasabay ng LibreOffice Basic routines na tumatanggap ng variable na bilang ng mga argumento. sa ibaba Print at SUM Tinatawag ng mga function ng Python ang kanilang Basic Print at SUM katapat, gamit ang nabanggit getBasicScript function. Hindi detalyado ang paghawak ng exception.
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
def Print(*args):
"""Ina-output ang mga tinukoy na string o numeric na expression sa isang dialog box."""
xScript = getBasicScript("Print", "Scripting", embedded=True)
xScript.invoke((args), (), ())
def SUM(*args):
"""SUM ang tinukoy na expression ng numero."""
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,)
Ang LibreOffice Basic Print at SUM ang mga gawaing nakabatay sa dokumento ay tumatanggap ng variable na bilang ng mga argumento. Ang Pribado o Pampubliko walang epekto ang mga katangian. Ang pagsuri sa uri ng mga argumento ay nilaktawan para sa kalinawan.
Option Compatible ' "Standard.Scripting" module
Option Explicit
Private Sub Print(ParamArray args() As Variant, Optional sep As String = " ")
''' I-print ang listahan ng item ng variable na numero '''
' lahat ng CStr() convertible arg ay tinatanggap
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 isang variable na listahan ng mga numero '''
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()