Kreipiamasi į Basic kalbos makrokomandas iš Python kalbos

Galite kreiptis į LibreOffice Basic kalbos makrokomandas iš Python kalbos skriptų ir tada pastebimos galimybės gali būti įgautos, tokios kaip:

LibreOffice Aplikacijų programavimo sąsajos (angl. API) skripto struktūra palaiko vidinį kalbos skripto vykdymą tarp Python ir Basic kalbų arba kitų palaikomų programavimo kalbų. Argumentai gali būti perduoti per iškvietas, numatant, kad jie reprezentuoja pirminius duomenų tipus, kuriuos abi kalbos atpažįsta ir numatant, kad skripto struktūra juos tinkamai konvertuoja.

tip

Yra rekomenduojama turėti supratimą Python kalbos standartiniams moduliams ir LibreOffice API funkcijoms, kad atlikti vidinės kalbos iškvietas iš Python į Basic, JavaScript kalbas arba bet kokią kitą skripto vykdyklę.


warning

Kai Python kalbos skriptas yra vykdomas iš integruotos kūrimo aplinkos (angl. IDE), LibreOffice įdėtinė Basic kalbos vykdyklės gali nebūti. Venkite Python kalbos iškvietų į LibreOffice Basic kalbą tokiame kontekste. Vis dėlto aplinka ir universaliųjų tinklų objektai (angl. UNO) yra pilnai galimi. Eikite Įdiegiamas integruotas IDE Python kalbai kad rastumėte daugiau informacijos.


Atgaunami LibreOffice Basic kalbos skriptai

LibreOffice Basic kalbos makrokomandos gali būti asmeninės, bendros arba įterptos į dokumentus. Norint juos vykdyti, Python kalbos laikas turi būti aprūpintas Basic kalbos makrokomandų vietomis. Realizuojant com.sun.star.script.provider.XScriptProvider sąsają, paleidžiama užklausa vykdomų skriptų:


		 import uno
		 from com.sun.star.script.provider import Xscript
		     
		 def getBasicScript(macro='Main', module='Module1', library='Standard',
		         isEmbedded=False) -> XScript:
		     „Paimkite Basic kalbos skripto objektą prieš iškvietą.“
		     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
		 

Vykdomi LibreOffice Basic kalbos skriptai

„LibreOffice“ programinės įrangos dokumentacija, skirtacom.sun.star.script.provider.XScript sąsajos informacija vidinių kalbų susitarimams. Funkcijų aprašams reikia trijų masyvų:

Pitono sintaksė

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

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

script.invoke((args), (), rezultatai)

Pavieniai pavyzdžiai arba pasidalinti skriptai

Pavyzdžių įvedimo/išvedimo ekranuose detalizavimas lyginat Pitono ir „Basic“ kreipinius. Monitoring Document Events iliustruoja *args Pitono argumentų idiomų naudojimą spausdinant parametrų kintamojo numerį į Access2Base į konsolės registracijos dialogo langą.

tip

Kūrimo metu galite pertraukti Pitono skripo vykdymą naudodami „Xray“ plėtinį. Šitaip tikriname UNO objektų savybes ir metodus. APSO plėtinio derintuvė leidžia objektų introspekciją naudojant arba „Xray“, arba MRI plėtinius.



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

Dokumentuose įterptųjų skriptų pavyzdžiai

*argsSuprastinta Pitono sintaksė gali būti naudojama kartu su „LibreOffice Basic“ programomis, kurios leidžia argumentų kintamojo numerį. Pitono funkcijos„Print“ ir SUM iškviečia „Basic “ „Print“ ir SUM funkcijų kopijas, tam naudojant minėtą getBasicScript funkciją. Išimčių apdorojimas nedetalizuojamas.


	  # -*- coding: utf-8 -*-
	  from __future__ import unicode_literals
	      
	  def Print(*args):
	      """Nurodytų eilučių arba skaitmeninių reiškinių rezultatai dialogo lange."""
	      xScript = getBasicScript("Print", "Scripting", embedded=True)
	      xScript.invoke((args), (), ())
	      
	  def SUM(*args):
	      """Nurodyto numerio reiškinio suma (SUM)."""
	      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,)
	  

▸LibreOffice Basic“ „Print“ ir SUM dokumentuotos programos leidžia naudoti argumentų kintamojo numerį. „Private“ arba „Public“ atributai įtakos neturi. Aiškumo dėlei argumentų tipas netikrinamas.


	  Option Compatible ' "Standard.Scripting" module
	  Option Explicit
	      
	  Private Sub Print(ParamArray args() As Variant, Optional sep As String = " ")
	      ''' Kintamojo numerio spausdinamų vienetų sąrašas '''
	      ' visi CStr() konvertuojami argumentai priimti
	      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 – numerių kintamas sąrašas '''
	      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()
	  

Paremkite mus!