Pomoc za LibreOfficeDev 25.8
Makro Python jo funkcija w dataji .py, kótaraž se ako modul identificěrujo. Na rozdźěl wót LibreOfficeDev Basic a jogo dwanastkow funkcijow abo słužbow UNO-objektow makra Python jadnotliwy UNO-objektXSCRIPTCONTEXT, zgromadnje z JavaScript a BeanShell wužywaju. Globalny tupel g_exportedScripts eksplicitnje wuběrajobne makra z modula nalicyjo. Module Python maju awtonomnu kodowu logiku a su njewótwisne jaden wót drugego.
Zakładne UNO-móžnosći Basic daju se z globalneje wariable XSCRIPTCONTEXT wótwóźiś. Glejśo LibreOfficeDev API za dopołne wopisanje XSCRIPTCONTEXT. Metody XSCRIPTCONTEXT su slědujuce:
| Metody | Wopisanje | W Basic pśirědowany ako | 
|---|---|---|
| getDocument() | Dokumentowa referenca, z kótarejuž skript móžo źěłaś. | ThisComponent | 
| getDesktop() | Desktopowa referenca, z kótarejuž skript móžo źěłaś. | StarDesktop | 
| getComponentContext() | Komponentowy kontekst, z kótarymž skript móžo druge UNO-komponenty napóraś. | GetDefaultContext | 
Zgromadnje wužytej instalaciskej skripta HelloWorld a Capitalise na UNO póśěgowane makra znaglědnatej, kótarež globalnu wariablu XSCRIPTCONTEXT wužywatej.
Standardna wudaśowa dataja Python njejo k dispoziciji, gaž se makra Python z wuwjadu. Glejśo Zapódaśe/Wudaśe na wobrazowce za dalšne informacije.
XSCRIPTCONTEXT se za importěrowane module k dispoziciji njestaja.
Biblioteki LibreOfficeDev Basic klase, rutiny a wariable wopśimuju, module Python klase, funkcije a wariable wopśimuju. Powšykne źěle zasejwužywajobnych funkcijow Python abo UNO muse se w Móje makra w (User Profile)/Scripts/python/pythonpath składowaś. Biblioteki Python pomagaju module organizěrowaś, aby kolizijam modulowych mjenjow zajźowali. Importěrujśo uno.py w zgromadnje wužytych modulach.
Typiske UNO-móžnosći BASIC daju se z pomocu modula uno.py wótwóźiś. Wužywajśo interaktiwnu konsolu Python, aby dopołne modulowe wopisanje z pomocu pśikazow Python dir() a help() dostał.
| Funkcije | Wopisanje | W Basic pśirědowany ako | 
|---|---|---|
| absolutize() | Wrośa absolutny datajowy URL z pódanych URL. | |
| createUnoStruct() | Napórajo UNO-strukturu abo wuwześe, kótarež se pśez typeName pódawa. | CreateUNOStruct() | 
| fileUrlToSystemPath() | Wrośa systemowu sćažku. | ConvertFromURL() | 
| getClass() | Wrośa klasu konkretnego UNO-wuwześa, struktury abo zwězowańskego městna. | |
| getComponentContext() | Wrośa komponentowy kontekst UNO, kótaryž se wužywa, aby cas wužywanja inicializěrował. | GetDefaultContext() | 
| Enum() getConstantByName() | Pyta za gódnotu IDL-konstanty pó jeje eksplicitnym mjenju. | Glejśo konstantowe kupki API | 
| isInterface() | Wrośa True, gaž obj jo klasa zwězowańskego městna UNO. | |
| systemPathToFileUrl() | Wrośa datajowy URL za pódanu systemowu sćažku. | ConvertToURL() | 
Pśedinstalěrowane LibreLogo, NamedRanges, SetCellColor a TableSample modul uno.py wužywaju.
| Python UNO | UNO-funkcije Basic | 
|---|---|
| ctx = uno.getComponentContext() smgr = ctx.getServiceManager() obj = smgr.createInstanceWithContext( .. , ctx) | CreateUnoService() | 
| Glejśo Dialog wócyniś | CreateUnoDialog() | 
| Glejśo Pśisłuchak napóraś | CreateUnoListener() | 
| Glejśo datowe typy UNO | CreateUnoValue() CreateObject() | 
| Pśirownańske operatory "==" abo "!=" wužywaś | 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 | 
Pódobnje na LibreOfficeDev Basic, kótaryž pśeglědowanje a zacytowanje bibliotekow pódpěra, daju se biblioteki Python jolic trjeba wuslěźiś a importěrowaś. Za dalšne informacije wó bibliotekowych kontejnerach cytajśo Nałožeńske programěrowańske zwězowańske městno LibreOfficeDev (Application Programming Interface, API) abo ześěgniśo Software Development Kit LibreOfficeDev (SDK).
Dołojce se w dokumenśe zasajźony modul Python znaglědnja, wobchad z wuwześami se njewopisujo.
            import uno, sys, zipimport
            
            def load_library(library_name: str, module_name=None):
                """ Biblioteku zacytaś a modul importěrowaś
                
                Adaptěrowany z 'Bibliothèque de fonctions' wót Hubert Lambert
                na https://forum.openoffice.org/fr/forum/viewtopic.php?p=286213"""
                doc = XSCRIPTCONTEXT.getDocument() # aktualny dokument
                url = uno.fileUrlToSystemPath( \
                    '{}/{}'.format(doc.URL, 'Scripts/python'+library_name))  # ConvertToURL()
                if not url in sys.path: # sćažku pśidaś jolic trjeba
                    sys.path.insert(0, url) # doclib ma prioritatu
                if module_name: # importěrowaś, jolic trjeba
                    return zipimport.zipimporter(url).load_module(module_name)
            
            def import_embedded_python():
                ui = load_library("my_gui",'screen_io') # sćažku <lib> path pśidaś + <module> importěrowaś
                ui.MsgBox(sys.modules.keys())
            
            g_exportedScripts = (import_embedded_python,)  # Public macros