Einen Dialog mit Python öffnen
Statische Dialog in LibreOffice werden mit dem Dialog-Editor erstellt und an verschiedenen Orten gespeichert, je nachdem, ob sie persönlich (Meine Makros), geteilt (LibreOffice Makros) oder in Dokumenten eingebettet sind. Umgekehrt werden dynamische Dialoge zur Laufzeit aus Basis- oder Python-Skripten oder unter Verwendung einer anderen von LibreOffice unterstützten Sprache erstellt. Das Öffnen von statischen Dialogen mit Python wird hiermit veranschaulicht. Ausnahmebehandlung und Internationalisierung sind aus Gründen der Übersichtlichkeit weggelassen.
Dialoge für meine Makros oder LibreOffice Makros
Die Beispiele unten öffnen die Konsole Access2Base Trace oder den importierten Dialog TutorialsDialog über
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
def consoleDlg():
ctx =XSCRIPTCONTEXT.getComponentContext()
smgr = ctx.getServiceManager()
dp = smgr.createInstanceWithContext("com.sun.star.awt.DialogProvider", ctx)
dlg = dp.createDialog( "vnd.sun.star.script:Access2Base.dlgTrace?location=application")
dlg.execute()
dlg.dispose()
def tutorDialog():
ctx =XSCRIPTCONTEXT.getComponentContext()
smgr = ctx.getServiceManager()
dp = smgr.createInstanceWithContext("com.sun.star.awt.DialogProvider", ctx)
dlg = dp.createDialog("vnd.sun.star.script:Standard.TutorialsDialog?location=application")
dlg.execute()
dlg.dispose()
g_exportedScripts = (consoleDlg, tutorDialog)
Ins Dokument eingebettete Dialoge
Das Beispiel unten öffnet den neu erstellten Dialog Dialog1 aus einem Dokument heraus über :
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
def docDialog():
""" Einen Dokument-basierten Dialog zeigen """
model = XSCRIPTCONTEXT.getDocument()
smgr = XSCRIPTCONTEXT.getComponentContext().ServiceManager
dp = smgr.createInstanceWithArguments( "com.sun.star.awt.DialogProvider", (model,))
dlg = dp.createDialog( "vnd.sun.star.script:Standard.Dialog1?location=document")
dlg.execute()
dlg.dispose()
g_exportedScripts = (docDialog,)
Beispiele für dynamische Dialoge in Python finden sich in der msgbox.py im Verzeichnis {installation}/program/.