Basic makroak deitzea Pythonetik

Collabora Office Basic makroak deitu ditzakezu Python scriptetatik, horrela eginbide nabarmenak eskuratzeko, adibidez:

Collabora Office Application Programming Interface (API) scriptgintzako lan-markoak lengoaien arteko scripten exekuzioa onartzen du Python eta Basic lengoaien kasuan, baina baita onartutako beste edozein programazio-lengoaiaren kasuan ere. Argumentuak atzera eta aurrera pasatu daitezke deietan, bi lengoaiek ezagutzen dituzten jatorrizko datu motak ordezkatzen badituzte, eta scriptgintzako lan-markoak haiek modu egokian bihurtuko dituztela onartuta.

tip

Pythonen modulu estandarrak eta Collabora Office APIaren eginbideak ezagutzea gomendagarria da lengoaien arteko deiak egin baino lehen Pythonetik Basic, JavaScript edo beste edozein script-motorrera.


warning

Python scriptsak Integrated Development Environment (IDE) batean exekutatzen direnean, Collabora Office aplikazioak kapsulatuta duen Basic motorra faltan egon daiteke. Saihestu Python-Collabora Office Basic deiak testuinguru horretan. Hala ere, Python ingurunea eta Universal Networks Objects (UNO) erabilgarri egongo dira beti. Begiratu IDE integratu bat konfiguratzea Python lengoaiarako informazio gehiago jasotzeko.


Collabora Office Basic scriptak atzitzen

Collabora Office Basic makroak pertsonalak, partekatuak edo dokumentuetan kapsulatuak izan daitezke. Haiek exekutatzeko, Pythonen exekuzio-garaia hornitu behar da Basic makroen kokalekuekin. com.sun.star.script.provider.XScriptProvider interfazea inplementatuta, script exekutagarriak atzitu daitezke:

import uno
from com.sun.star.script.provider import Xscript

def getBasicScript(macro='Main', module='Module1', library='Standard',
        isEmbedded=False) -> XScript:
    '''Eskuratu Basic script objektua hari deitu baino lehen.'''
    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 scriptak exekutatzea

com.sun.star.script.provider.XScript interfazearen Collabora Office Software Development Kit (SDK) dokumentazioak lengoaien arteko deiak egiteko hitzarmenak xehe azalduta ditu. Funtzioak deitzeko beharrezkoak dira hiru matrize:

Python sintaxia

results = script.invoke((prompt,buttons,title), (), ())

script.invoke((message,), tuple, ())

script.invoke((args), (), results)

Script pertsonalen edo partekatuen adibideak

Sarrera/irteera pantailara ataleko adibideek Pythonetik Basic lengoaiara deiak egiteko moduak xehe azaltzen dituzte. Dokumentu-gertaerak monitorizatzea atalak azaltzen du nola erabili *args Python hitza Access2Base egunkari-kontsolaren elkarrizketa-koadroan parametro kopuru aldakorra inprimatzeko.

tip

Garapan-denboran Python scripta gelditu dezakezu, Xray hedapena erabilita, UNO objektuen propietateak eta metodoak ikuskatzeko. Hedapenen APSO araztaileak objektuen barne-behaketa ahalbidetzen du Xray erabilita edo MRI hedapenak erabilita.


def xray(myObject):
	  script = getBasicScript(library="XrayTool", module="_Main", macro="Xray")
	  script.invoke((myObject,), (), ())

Dokumentuetan kapsulatutako scripten adibideak

*argsPython sintaxi sinplifikatua erabili daiteke argumentu kopuru aldakorra onartzen duten Collabora Office Basic errutinekin batera. Azpiko Print eta SUM Python funtzioek beren Basic Print eta SUM parekoei deitzen diete, goian aipatutako getBasicScript funtzioak. Salbuespenen maneiua ez dago azalduta.

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

def Print(*args):
    """Zehaztutako kateen edo zenbakizko adierazpenen irteera elkarrizketa-koadro batean."""
    xScript = getBasicScript("Print", "Scripting", embedded=True)
    xScript.invoke((args), (), ())

def SUM(*args):
    """BATU zehaztutako zenbakizko adierazpena."""
    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,)

Collabora Office Basic lengoaiako Print eta SUM errutinek, dokumentuetan oinarritutakoek, argumentuen kopuru aldakorra onartzen dute. Private edo Public atributuek ez dute eraginik. Argumentuen motaren egiaztatzea saltatu egin da, argibidea argiagoa izan dadin.

Option Compatible ' "Standard.Scripting" module
Option Explicit

Private Sub Print(ParamArray args() As Variant, Optional sep As String = " ")
    ''' Inprimatu zenbaki aldakorreko elementu-zerrenda '''
    ' CStr() argumentu bihurgarri guztiak onartzen dira
    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
    ''' BATU zenbakien zerrenda aldakorra '''
    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()

Emaguzu laguntza!