LibreOffice 25.2 Βοήθεια
Μια μακροεντολή είναι συνάρτηση μέσα σε αρχείο .py, ταυτοποιημένη ως άρθρωμα. Αντίθετα με τη Basic του LibreOffice και τις δεκάδες της συναρτήσεις αντικειμένων UNO ή υπηρεσίες, οι μακροεντολές Python χρησιμοποιούν το μοναδικό αντικείμενο UNO XSCRIPTCONTEXT, κοινόχρηστο με τη JavaScript και το BeanShell. Η καθολική πλειάδα g_exportedScripts παραθέτει ρητά επιλέξιμες μακροεντολές από ένα άρθρωμα. Τα αρθρώματα Python κρατούν αυτόνομο λογικό κώδικα και είναι ανεξάρτητα μεταξύ τους.
Οι αυθεντικές εγκαταστάσεις Basic UNO μπορούν να προκύψουν από την καθολική μεταβλητή XSCRIPTCONTEXT. Δείτε το API του LibreOffice για πλήρη περιγραφή του XSCRIPTCONTEXT. XSCRIPTCONTEXT, οι μέθοδοι συνοψίζονται ως:
| Μέθοδοι | Περιγραφή | Απεικονιζόμενο στη Basic ως | 
|---|---|---|
| getDocument() | Η αναφορά εγγράφου στο οποίο το σενάριο μπορεί να λειτουργήσει. | ThisComponent | 
| getDesktop() | Η αναφορά επιφάνειας εργασίας στην οποία μπορεί να λειτουργήσει το σενάριο. | StarDesktop | 
| getComponentContext() | Το περιεχόμενο στοιχείου του οποίου το σενάριο μπορεί να χρησιμοποιηθεί για τη δημιουργία άλλων. | GetDefaultContext | 
Η εγκατάσταση των κοινόχρηστων σεναρίων HelloWorld και Capitalise δείχνουν τις σχετικές με το UNO μακροεντολές που χρησιμοποιούν την καθολική μεταβλητή XSCRIPTCONTEXT.
Το αρχείο εξόδου προτύπου Python δεν είναι διαθέσιμο όταν εκτελούνται μακροεντολές Python από το μενού . Δείτε το Είσοδος/Έξοδος στην οθόνη για περισσότερες πληροφορίες.
Το XSCRIPTCONTEXT δεν παρέχεται σε εισαγόμενα αρθρώματα.
Οι βιβλιοθήκες Basic του LibreOffice περιέχουν κλάσεις, ρουτίνες και μεταβλητές, τα αρθρώματα Python περιέχουν κλάσεις, συναρτήσεις και μεταβλητές. Κοινά τμήματα των επαναχρησιμοποιήσιμων χαρακτηριστικών Python ή UNO πρέπει να αποθηκεύονται στις Μακροεντολές μου (My macros) στο (User Profile)/Scripts/python/pythonpath. Οι βιβλιοθήκες Python βοηθούν στην οργάνωση αρθρωμάτων για να αποτρέψουν τις διενέξεις ονομάτων αρθρωμάτων. Εισάγετε το uno.py στα κοινόχρηστα αρθρώματα.
Οι αυθεντικές εγκαταστάσεις BASIC UNO μπορούν να συναχθούν χρησιμοποιώντας το άρθρωμα uno.py. Χρησιμοποιήστε το διαδραστικό κέλυφος Python για να πάρετε μια πλήρη περιγραφή του αρθρώματος χρησιμοποιώντας τις εντολές Python dir() and help() .
| Συναρτήσεις | Περιγραφή | Απεικονιζόμενο στη Basic ως | 
|---|---|---|
| absolutize() | Επιστρέφει απόλυτα url αρχείου από τα δεδομένα urls. | |
| createUnoStruct() | Δημιουργεί δομή UNO ή εξαίρεση που δίνεται από το typeName. | CreateUNOStruct() | 
| fileUrlToSystemPath() | Επιστρέφει διαδρομή του συστήματος. | ConvertFromURL() | 
| getClass() | Επιστρέφει την κλάση συμπαγούς εξαίρεσης UNO, δομής ή διεπαφής. | |
| getComponentContext() | Επιστρέφει το περιεχόμενο του στοιχείου που χρησιμοποιείται για την αρχικοποίηση του χρόνου έναρξης Python. | GetDefaultContext() | 
| Enum() getConstantByName() | Αναζητά την τιμή σταθεράς IDL δίνοντας το ρητό της όνομα. | Δείτε ομάδες σταθερών API | 
| isInterface() | Επιστρέφει True, όταν το obj είναι κλάση διεπαφής UNO. | |
| systemPathToFileUrl() | Επιστρέφει URL αρχείου για τη δεδομένη διαδρομή συστήματος. | ConvertToURL() | 
LibreLogo, NamedRanges, SetCellColor και TableSample χρησιμοποιούν τη λειτουργική μονάδα uno.py.
| Python UNO | Βασικά χαρακτηριστικά UNO | 
|---|---|
| ctx = uno.getComponentContext() smgr = ctx.getServiceManager() obj = smgr.createInstanceWithContext( .. , ctx) | CreateUnoService() | 
| Δείτε Άνοιγμα διαλόγου | CreateUnoDialog() | 
| Δείτε Δημιουργία ακροατή | CreateUnoListener() | 
| Δείτε τύποι δεδομένων UNO | CreateUnoValue() CreateObject() | 
| Use "==" or "!=" comparison operators | EqualUnoObjects() | 
| ctx = uno.getComponentContext() smgr = ctx.getServiceManager() | GetProcessServiceManager() | 
| def hasUnoInterfaces(obj, *interfaces): return set(interfaces).issubset(t.typeName for t in obj.Types) | HasUnoInterfaces() | 
| IsUnoStruct() | |
| ctx = uno.getComponentContext() smgr = ctx.getServiceManager() DESK = 'com.sun.star.frame.Desktop' desktop = smgr.createInstanceWithContext(DESK , ctx) | StarDesktop | 
| desktop = smgr.createInstanceWithContext(DESK , ctx) doc = desktop.CurrentComponent | ThisComponent | 
Παρόμοια με το LibreOffice Basic που υποστηρίζει την περιήγηση και τη δυναμική φόρτωση βιβλιοθηκών, οι βιβλιοθήκες Python μπορούν να εξερευνηθούν και να εισαχθούν κατόπιν ζήτησης. Για περισσότερες πληροφορίες σχετικά με τους περιέκτες της βιβλιοθήκης, επισκεφτείτε τη LibreOffice Application Programming Interface (API) ή μεταφορτώστε το Πακέτο ανάπτυξης λογισμικού LibreOffice (SDK).
Η εισαγωγή μιας ενσωματωμένης λειτουργικής μονάδας εγγράφου Python απεικονίζεται παρακάτω, ο χειρισμός εξαιρέσεων δεν είναι λεπτομερής:
            import uno, sys, zipimport
            
            def load_library(library_name: str, module_name=None):
                """ φόρτωση βιβλιοθήκης και εισαγωγή αρθρώματος
                
                Διασκευασμένο από τη 'Bibliothèque de fonctions' του Hubert Lambert
                στο https://forum.openoffice.org/fr/forum/viewtopic.php?p=286213"""
                doc = XSCRIPTCONTEXT.getDocument()  # τρέχον έγγραφο
                url = uno.fileUrlToSystemPath( \
                    '{}/{}'.format(doc.URL, 'Scripts/python'+library_name))  # ConvertToURL()
                if not url in sys.path:  # προσθέστε τη διαδρομή εάν χρειάζεται
                    s.path.insert(0, url)  # το doclib προηγείται
                if module_name:  # εισαγωγή εάν ζητηθεί
                    return zipimport.zipimporter(url).load_module(module_name)
            
            def import_embedded_python():
                ui = load_library("my_gui",'screen_io')  # προσθήκη διαδρομής <lib> + εισαγωγή <module>
                ui.MsgBox(sys.modules.keys())
            
            g_exportedScripts = (import_embedded_python,)  # Public macros