Python scriptak Basic-etik deitzea

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

tip

LibreOffice 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 LibreOffice 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

LibreOffice 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 ' LibreOffice 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" ' LibreOffice 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. LibreOffice 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()
             '''LibreOffice 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

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

Emaguzu laguntza!