Pomoc za LibreOfficeDev 25.8
Skripty Python LibreOfficeDev su w třoch rozdźělnych wariantach: móža priwatne, zhromadnje wužite abo do dokumentow zasadźene być. Składuja so na rozdźělnych městnach, kotrež so w Organizacija a městno skriptow Python wopisuja. Zo bychu so module Python importowali, dyrbja jich městna za čas fungowanja znate być.
Tutón mechanizm so za module zwobraznjuje, kotrež na datajowym systemje a dokumenće bazuja. Wobchadźenje z wuwzaćemi je přehladnosće dla wuwostajene. Zapřijeće biblioteka abo zapis, skripty abo module so synonymnje wužiwaja. Makro Python so na funkciju znutřka modula poćahuje.
Dźiwajće na to, zo so lokalny zapis <User Profile>/Scripts/python/pythonpath přeco přepytuje, hdyž so makro Python z <User Profile>/Scripts/python wuwjedźe.
Priwatne a zhromadnje skripty Python dadźa so importować, hdyž jich zapisy so do šćežki časa fungowanja Python zapřijate. Za dalše informacije wo wuwostajenych posedźenskich klasach hlejće stronu Posedźenske informacije wotwołać.
        # -*- coding: utf-8 -*-
        from __future__ import unicode_literals
        import sys
            
        user_lib = Session().UserPythonScripts # Městno wužiwarskich skriptow
        if not user_lib in sys.path:
            sys.path.insert(0, user_lib) # Pytanskej šćežce přidać
        import screen_io as ui # modul 'screen_io.py' je w zapisu user_lib directory
        # Waš kod tu slěduje
    Tutón přikład Python importowanemu modulej lokalnu wariablu XSCRIPTCONTEXT k dispoziciji staja
        # -*- coding: utf-8 -*-
        from __future__ import unicode_literals
        import uno, sys
            
        share_lib = Session.SharedPythonScripts() # Městno zhromadnje wužitych skriptow
        if not share_lib in sys.path:
            sys.path.insert(0, share_lib) # Pytanskej šćežce přidać
        from IDE_utils import ScriptContext # 'IDE_utils.py' zhromadnje skripty Python wobsahuje.
        XSCRIPTCONTEXT = ScriptContext(uno.getComponentContext)
        # Waš kod tu slěduje
    Na rozdźěl wot priwatnych a zhromadnje wužitych skriptow dadźa so instalaciske skripty LibreOfficeDev kóždy čas importuja. Nimo modulow Python LibreOfficeDev uno a unohelper dadźa so druhe skripty w zapisu <installation_path>/program direktnje importować, na přikład modul msgbox.
Z konsolu Python:
>>> 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"))
Importowanje modula Python, kotryž je w dokumenće zasadźeny, so deleka zwobraznjuje. Wobchadźenje ze zmylkami so njewopisuje. Šćežka čas fungowanja Python so aktualizuje, hdyž dokument je wočinjeny a do začinjenja. Za dalše informacije hlejće Přez podawki wodźene makra, zo byšće zhonił, kak móžeće makra Python z dokumentowymi podawkami zwjazać.
        # -*- coding: utf-8 -*-
        from __future__ import unicode_literals
            
        import sys, uno, zipimport
            
        def OnDocPostOpenLoadPython(event = None):
            """ Import modulow Python přihotować, hdyž so doc. začituje """
            PythonLibraries.loadLibrary('lib/subdir') # Pytanskej šćežce zapis přidać
            PythonLibraries.loadLibrary('my_gui', 'screen_io') # dir. & import screen_io přidać
            
        def OnDocQueryCloseUnloadPython(event = None):
            """ PYTHON_PATH porjedźić, hdyž so doc. začinja """
            PythonLibraries.unloadLibrary('my_gui') # Šćežku časa fungowanja Python porjedźić
            # Pokazka: importowane module w tutym přikładźe začitane wostawaja.
            
        class PythonLibraries():
            """ Wočinjak bibliotekow Python a importowak modulow
            
            adaptowany wot 'Bibliothèque de fonctions' wot Hubert Lambert
            na https://forum.openoffice.org/fr/forum/viewtopic.php?p=286213 """
            def isImportedModule(module_name: str) -> bool:
                """ Lisćinu modulow časa fungowanja přepruwować """
                return (module_name in sys.modules.keys())
            def isLoadedLibrary(lib_name: str) -> bool:
                """ Wobsah PYTHON_PATH přepruwować """
                url = uno.fileUrlToSystemPath(
                    f'{doc.URL}/Scripts/python/{lib_name}' )
                return (url in sys.path)
            def loadLibrary(lib_name: str, module_name=None):
                """ PYTHON_PATH zapis přidać, pomjenowany modul importować """
                doc = XSCRIPTCONTEXT.getDocument()
                url = uno.fileUrlToSystemPath(
                    f'{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):
                """ zapis z PYTHON_PATH wotstronić """
                doc = XSCRIPTCONTEXT.getDocument()
                url = uno.fileUrlToSystemPath(
                    f'{doc.URL}/Scripts/python/{lib_name}' )
                sys.path.remove(url)
            
        g_exportedScripts = (OnDocPostOpenLoadPython, OnDocQueryCloseUnloadPython)