Inhalte
Index 🔎︎

# 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 Extras – Makros – Makro ausführen…:

            # -*- 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 Extras – Makros – Makro ausführen…:

            # -*- coding: utf-8 -*-
            from __future__ import unicode_literals

            def docDialog():
                """ Zeige einen Dokument-basierten Dialog """
                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/.

Verwandte Themen

Öffnen eines Dialogs mit Basic

Python-Programmierbeispiele

LibreOffice Python-Skripte Hilfe