Κλήση Python Scripts από Basic

Κλήση δέσμης ενεργειών (scripts) Python από μακροεντολές Basic του Collabora Office είναι εφικτή και σημαντικά χαρακτηριστικά μπορούν να ληφθούν όπως:

tip

Συνιστάται λογική έκθεση στο Collabora Office Basic και σε γνωρίσματα της διασύνδεσης προγραμματισμού εφαρμογών (API) πριν την εκτέλεση διαγλωσσικών κλήσεων από Basic σε Python, σε JavaScript ή οποιονδήποτε άλλο μηχανισμό δεσμών ενεργειών.


Ανάκτηση δεσμών ενεργειών Python

Οι δέσμες ενεργειών Python μπορεί να είναι προσωπικές, κοινόχρηστες, ή ενσωματωμένες σε έγγραφα. Για να τις εκτελέσετε, το Collabora Office Basic πρέπει να παρέχεται με θέσεις δεσμών ενεργειών Python. Ο εντοπισμός com.sun.star.script.provider.XScript σύνδεσης συμβατής με αντικείμενα UNO επιτρέπει την εκτέλεση δεσμών ενεργειών Python:

Option Explicit

Public Function GetPythonScript(macro As String, _
        Optional location As String) As com.sun.star.script.provider.Xscript
    '''Αιχμαλωσία αντικειμένου δέσμης ενεργειών Python πριν την εκτέλεση
    'Ορίσματα:
    '    macro   : ως "library/module.py$macro" ή "module.py$macro"
    '    θέση: ως "document", "share", "user" ή ENUM(eration)
    'Αποτέλεσμα:
    '    εντοπίστηκε com.sun.star.script.provider.XScript UNO υπηρεσία'''
    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 συμβατό
    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

Το Πλαίσιο δέσμης ενεργειών του Collabora Office Διασύνδεση προγραμματισμού εφαρμογών (API) υποστηρίζει τη διαγλωσσική εκτέλεση σεναρίων μεταξύ Python και Basic ή άλλες υποστηριζόμενες γλώσσες προγραμματισμού για αυτό το θέμα. Τα ορίσματα μπορούν να διαβιβαστούν πέρα δώθε σε κλήσεις, υπό την προϋπόθεση ότι αντιπροσωπεύουν πρωτογενείς τύπους δεδομένων που αναγνωρίζουν και οι δύο γλώσσες και υποθέτοντας ότι το Πλαίσιο Σεναρίων τα μετατρέπει κατάλληλα.

Σύνταξη

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

opSysName = script.invoke(Array(), in_outs, Array()) ' in_out είναι ένας πίνακας

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

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

Ενσωματωμένα παραδείγματα δεσμών ενεργειών

Κάτω από τις ρουτίνες ComputerName και GetFilelen καλούνται οι αντίστοιχές τους Python, χρησιμοποιώντας την προμνημονευθείσα συνάρτηση GetPythonScript. Η διαχείριση της εξαίρεσης δεν είναι λεπτομερής.

Option Explicit
Option Compatible 'Οι ιδιότητες υποστηρίζονται

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

Private Property Get ComputerName As String
    '''Όνομα του σταθμού εργασίας'''
    scr = GetPythonScript("Platform.py$computer_name", "document")
    ComputerName = scr.invoke(Array(), Array(), Array())
End Property ' ComputerName

Private Function GetFilelen(systemFilePath As String) As Currency
    '''Μέγεθος αρχείου σε ψηφιολέξεις (bytes)'''
    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 ' δέσμη ενεργειών εγγράφου
    ISPERSONAL As String ' δέσμη ενεργειών χρήστη
    ISSHARED As String ' μακροεντολή του Collabora Office
End Type ' _SCRIPT_LOCATION

Public Function Script() As Object ' Text enumeration
    Static enums As _SCRIPT_LOCATION : With enums
    If .ISEMBEDDED = "" Then
        .ISEMBEDDED = "document" ' δέσμη ενεργειών εγγράφου
        .ISPERSONAL = "user" ' δέσμες ενεργειών χρήστη
        .ISSHARED = "share" ' μακροεντολή του Collabora Office
    End If : End With ' enums
    Script = enums
End Function ' Script

Καλούνται δύο διαφορετικά αρθρώματα Python. Μπορούν είτε να ενσωματωθούν στο τρέχον έγγραφο, είτε να αποθηκευτούν στο σύστημα αρχείων. Ο έλεγχος τύπου ορίσματος παραλείπεται για σαφήνεια:

# -*- 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)

Παραδείγματα προσωπικών ή κοινόχρηστων δεσμών ενεργειών

Ο μηχανισμός κλήσης για προσωπικές ή κοινόχρηστες δέσμες ενεργειών Python είναι ταυτόσημος με αυτόν των ενσωματωμένων δεσμών ενεργειών. Τα ονόματα βιβλιοθηκών απεικονίζονται σε φακέλους. Ο υπολογισμός των διαδρομών αρχείων συστήματος της κατατομής (προφίλ) χρήστη του Collabora Office και των κοινόχρηστων αρθρωμάτων μπορεί να εκτελεστεί όπως περιγράφεται λεπτομερώς στη Λήψη πληροφοριών συνεδρίας. Κάτω από το OSName, οι ρουτίνες HelloWorld and NormalizePath καλούν τις αντίστοιχες τους Python, χρησιμοποιώντας την προαναφερόμενη συνάρτηση GetPythonScript. Ο χειρισμός εξαιρέσεων δεν περιγράφεται λεπτομερώς.

Option Explicit
Option Compatible 'Οι ιδιότητες υποστηρίζονται

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

Private Property Get OSName As String
    '''Το όνομα λειτουργικού συστήματος όπως "Linux", "Darwin" ή "Windows"'''
    scr = GetPythonScript("Platform.py$OSname", Script.ISPERSONAL)
    OSName = scr.invoke(Array(), Array(), Array())
End Property ' OSName

Private Sub HelloWorld()
    '''Κοινόχρηστο δείγμα του Collabora Office Python'''
    scr = GetPythonScript("HelloWorld.py$HelloWorldPython", Script.ISSHARED)
    scr.invoke(Array(), Array(), Array(),)
End Sub ' HelloWorld

Public Function NormalizePath(systemFilePath As String) As String
    '''Αφαίρεση περιττού '\..' σε διαδρομή'''
    scr = GetPythonScript("Os/Path.py$normalyze", "user")
    NormalizePath = scr.invoke(Array(systemFilePath), Array(), Array())
End Function ' NormalizePath

Τυπικά αρθρώματα Python

Το ενσωματωμένο Python του Collabora Office περιέχει πολλές τυπικές βιβλιοθήκες για να επωφεληθείτε. Φέρουν πλούσιο σύνολο γνωρισμάτων, μεταξύ άλλων:

Παρακαλούμε, υποστηρίξτε μας!