Python scriptak Basic-etik deitzea

Posible da Python scriptak deitzea Collabora Office Basic makroetatik, eta horrela eginbide erabilgarriak eskuratu daitezke, adibidez:

tip

Collabora Office Basic eta Application Programming Interface (API) nahiko ongi ezagutzea komeni da lengoaien arteko deiak (Basic lengoaiatik Pythonera, JavaScriptera edo beste edozein script-lengoaiara) egin baino lehen.


Python scriptak atzitzea

Python scriptak pertsonalak, partekatuak edo dokumentuetan kapsulatuak izan daitezke. Haiek exekutatzeko, Python scripten kokalekuak esan behar zaizkio Collabora Office Basic-i. com.sun.star.script.provider.XScript interfazearekin bat datozen UNO objektuak lokalizatuta, Python scriptak exekutatu daitezke:

Option Explicit

Public Function GetPythonScript(macro As String, _
        Optional location As String) As com.sun.star.script.provider.Xscript
    ''' Hartu Python script objektua exekuzioa baino lehen
    ' Argumentuak:
    '    macro   : "library/module.py$macro" edo "module.py$macro" modura
    '    location: "document", "share", "user" ENUM(eration) modura
    ' Emaitza:
    '    com.sun.star.script.provider.XScript UNO service''' aurkitu da
    If IsMissing(location) Then location = "user"
    Dim mspf As Object ' com.sun.star.script.provider.MasterScriptProviderFactory
    Dim sp As Object ' com.sun.star.script.provider.XScriptProvider bateragarria
    Dim uri As String
    If location="document" Then
        sp = ThisComponent.getScriptProvider()
    Else
        mspf = CreateUnoService("com.sun.star.script.provider.MasterScriptProviderFactory")
        sp = mspf.createScriptProvider("")
    End If
    uri = "vnd.sun.star.script:"& macro &"?language=Python&location="& location
    GetPythonScript = sp.getScript(uri)
End Function ' GetPythonScript

Python scriptak exekutatzea

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.

Sintaxia

workstation_name = script.invoke(Array(), Array(), Array())

opSysName = script.invoke(Array(), in_outs, Array()) ' in_out matrize bat da

file_len = script.invoke(Array(systemFilePath), Array(), Array())

normalizedPath = script.invoke(Array(systemFilePath), Array(), Array())

Script kapsulatuen adibideak

Azpiko ComputerName eta GetFilelen errutinak beren pareko Python scriptei deitzen ari dira, goian aipatutako GetPythonScript funtzioa erabilita. Salbuespenen maneiua ez dago azalduta.

Option Explicit
Option Compatible ' Propietateak onartzen dira

Private scr As Object ' com.sun.star.script.provider.XScript

Private Property Get ComputerName As String
    '''Lan-estazioaren izena'''
    scr = GetPythonScript("Platform.py$computer_name", "document")
    ComputerName = scr.invoke(Array(), Array(), Array())
End Property ' ComputerName

Private Function GetFilelen(systemFilePath As String) As Currency
    '''Fitxategi-tamaina bytetan'''
    scr = GetPythonScript("Os/Path.py$get_size", Script.ISEMBEDDED)
    GetFilelen = scr.invoke(Array(systemFilePath), Array(), Array(),)
End Function ' GetFilelen

Private Type _SCRIPT_LOCATION
    ISEMBEDDED As String ' dokumentu-scripta
    ISPERSONAL As String ' erabiltzaile-scripta
    ISSHARED As String ' Collabora Office makroa
End Type ' _SCRIPT_LOCATION

Public Function Script() As Object ' Text enumeration
    Static enums As _SCRIPT_LOCATION : With enums
    If .ISEMBEDDED = "" Then
        .ISEMBEDDED = "document" ' dokumentu-scripta
        .ISPERSONAL = "user" ' erabiltzaile-scriptak
        .ISSHARED = "share" ' Collabora Office makroa
    End If : End With ' enums
    Script = enums
End Function ' Script

Bi Python modulu desberdin deituko dira. Uneko dokumentuan kapsulatuta egon daitezke edo fitxategi-sisteman biltegiratuta egon daitezke. Argumentu motaren egiaztatzea ez da erakusten, adibidea argiago erakusteko:

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

import platform

def computer_name() -> str:
    return platform.node()

def OSname() -> str:
    return platform.system()
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

import os.path

def get_size(systemFilePath: str) -> str:
    return str(os.path.getsize(systemFilePath))

def normalyze(systemPath: str) -> str:
    return os.path.normpath(systemPath)

Script pertsonal edo partekatuen adibideak

Python script pertsonal edo partekatuetarako deitze-mekanismoa kapsulatutako scripten bera da. Liburutegi-izenak karpetekin mapatuta daude. Collabora Office erabiltzaile-profila eta partekatutako moduluen sistemako fitxategi-bideak Saioaren informazioa eskuratzea atalean azaldutako moduan kalkulatu daitezke. Azpiko OSName, HelloWorld eta NormalizePath errutinak beren parekoak diren Python scriptak deitzen ari dira, goian aipatutako GetPythonScript funtzioa erabilita. Salbuespenen maneiua ez dago azalduta.

Option Explicit
Option Compatible ' Propietateak onartzen dira

Private scr As Object ' com.sun.star.script.provider.XScript

Private Property Get OSName As String
    '''Plataforma-izena: "Linux", "Darwin" edo "Windows"'''
    scr = GetPythonScript("Platform.py$OSname", Script.ISPERSONAL)
    OSName = scr.invoke(Array(), Array(), Array())
End Property ' OSName

Private Sub HelloWorld()
    '''Collabora Office Python lagin partekatua'''
    scr = GetPythonScript("HelloWorld.py$HelloWorldPython", Script.ISSHARED)
    scr.invoke(Array(), Array(), Array(),)
End Sub ' HelloWorld

Public Function NormalizePath(systemFilePath As String) As String
    '''Kendu soberan dauden '\..' bide-izenetik'''
    scr = GetPythonScript("Os/Path.py$normalyze", "user")
    NormalizePath = scr.invoke(Array(systemFilePath), Array(), Array())
End Function ' NormalizePath

Python modulu estandarrak

Collabora Office suitearekin kapsulatutako Pythonek liburutegi estandar asko ditu lanerako. Eginbideen multzo aberatsa du, adibidez honakoak:

Emaguzu laguntza!