Einen Dialog mit Python öffnen

Statische Dialoge in LibreOffice werden mit dem Dialog-Editor erstellt und an verschiedenen Orten gespeichert, je nachdem, ob sie persönlich (Meine Makros), geteilt (Anwendungsmakros) oder in Dokumenten eingebettet sind. Umgekehrt werden dynamische Dialoge zur Laufzeit aus Basic- 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 Anwendungsmakros

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/.

Bitte unterstützen Sie uns!