Pomoč LibreOfficeDev 7.6
Skripti Python v LibreOfficeDev so treh različnih vrst: lahko so osebni, v skupni rabi ali vdelani v dokumente. Shranjeni so na različnih mestih, opisanih v Organizacija in mesto skriptov v Pythonu. Da bi uvozili module Python, morajo biti njihova mesta znana iz Pythona v času izvajanja.
Ta mehanizem je ponazorjen za datotečni sistem, ki temelji na modulih in na dokumentih temelječih modulih. Obravnavanje izjem je zaradi jasnosti izpuščeno. Izraza knjižnica ali mapa, skripte ali moduli so zamenljivo uporabljeni. Makro Python se nanaša na funkcijo znotraj modula.
Upoštevajte, da je krajevna mapa <Uporabniški profil>/Scripts/Python/pythonpath vedno preiskana, ko zaganjate makro Python iz <Uporabniški profil>/Scripts/Python.
Osebni in skupni skripti Python lahko uvozite, ko so njihove mape vključene v zagonsko pot Pythona. Glejte stran Pridobivanje informacij o sejiza podrobnosti o izpuščenem razredu Session.
        # -*- coding: utf-8 -*-
        from __future__ import unicode_literals
        import sys
            
        user_lib = Session().UserPythonScripts  # Mesto skriptov uporabnika
        if not user_lib in sys.path:
            sys.path.insert(0, user_lib)  # Dodaj v pot iskanja
        import screen_io as ui  # Modul ‘screen_io. py ' prebiva v mapi user_lib
        # Tukaj sledi vaša koda
    Ta primer Python izpostavi lokalno spremenljivko XSCRIPTCONTEXT uvoznemu modulu:
        # -*- coding: utf-8 -*-
        from __future__ import unicode_literals
        import uno, sys
            
        share_lib = Session.SharedPythonScripts()  # Mesto skriptov v skupni rabi
        if not share_lib in sys.path:
            sys.path.insert(0, share_lib)  # Dodaj v iskalno pot
        from IDE_utils import ScriptContext  # "IDE_utils. py" sedi s skupnimi skripti Python.
        XSCRIPTCONTEXT = ScriptContext(uno.getComponentContext)
        # Tukaj sledi vaša koda
    Za razliko od osebnih in v skupnih skriptov lahko skripte za namestitev LibreOfficeDev uvozite kadar koli. Poleg modulov LibreOfficeDev Python uno in unohelper lahko druge skripte iz mape <pot_namestitve>/program uvozite neposredno, kot npr. modul msgbox.
V lupini Pythona:
>>> import msgbox, uno
>>> myBox = msgbox.MsgBox(uno.getComponentContext())
>>> myBox.addButton("okay")
>>> myBox.renderFromButtonSize()
>>> myBox.numberOflines = 2
>>> print(myBox.show("A small message",0,"Dialog title"))
Uvažanje v dokument vdelanega modula Python je prikazano spodaj. Obravnavanje napak ni podrobno opisano. Pot izvajanja Pythona je posodobljena, ko je dokument odprt in preden ga zapremo. Če želite izvedeti, kako povezati makre Python za dokumentiranje dogodkov, glejte makre, ki temeljijo na dogodku.
        # -*- coding: utf-8 -*-
        from __future__ import unicode_literals
            
        import sys, uno
            
        def OnDocPostOpenLoadPython():
            """ Pripravi uvoz modulov Python, ko se naloži dokument """
            PythonLibraries.loadLibrary('lib/subdir')  # Dodaj mapo v iskalno pot
            PythonLibraries.loadLibrary('my_gui', 'screen_io')  # Dodaj mapo in uvozi screen_io
            
        def OnDocQueryCloseUnloadPython():
            """ Počisti PYTHON_PATH, ko se dok. zapre """
            PythonLibraries.unloadLibrary(‘my_gui’)  # Čiščenje poti izvajanja Pythona
            # Opomba: uvoženi moduli ostanejo v tem primeru naloženi.
            
        class PythonLibraries():
            """ Nalagalnik knjižnic in uvoznik modulov Python
            
            prirejeno po »Bibliothèque de fonctions« avtorja Huberta Lamberta
            na naslovu https://forum.openoffice.org/fr/forum/viewtopic.php?p=286213 """
            def isImportedModule(module_name: str) -> bool:
                """ Preveri seznam modulov ob izvajanju """
                return (module_name in sys.modules.keys())
            def isLoadedLibrary(lib_name: str) -> bool:
                """ Preveri vsebino PYTHON_PATH """
                return (lib_name in sys.path)
            def loadLibrary(lib_name: str, module_name=None):
                """ Dodaj mapo v PYTHON_PATH, uvozi imenovani modul """
                doc = XSCRIPTCONTEXT.getDocument()
                url = uno.fileUrlToSystemPath(
                    '{}/{}'.format(doc.URL,'Scripts/python/'+lib_name)
                if not url in sys.path:
                    sys.path.insert(0, url)
                if module_name and not module_name in sys.modules.keys():
                    return zipimport.zipimporter(url).load_module(module_name)
            def unloadLibrary(lib_name: str):
                """ Odstrani mapo iz PYTHON_PATH """
                sys.path.remove(lib_name)
            
        g_exportedScripts = (OnDocPostOpenLoadPython, OnDocQueryCloseUnloadPython)