Abrir uma caixa de diálogo com Python

As caixas de diálogo estáticas do LibreOffice são criadas com o Editor de caixas de diálogo e são armazenadas em locais diferentes, consoante sejam pessoais (As minhas macros), partilhadas (Macros da aplicação) ou incorporadas em documentos. Por outro lado, as caixas de diálogo dinâmicas são construídas em tempo de execução, a partir de scripts Basic ou Python, ou utilizando qualquer outra LibreOffice linguagem suportada para o efeito. A abertura de caixas de diálogo estáticas com Python é ilustrada a seguir. O tratamento de exceções e a internacionalização foram omitidos por uma questão de clareza.

As caixas de diálogo «As minhas macros» ou «Macros da aplicação»

Os exemplos abaixo abrem a consola Access2Base Trace ou a caixa de diálogo importada TutorialsDialog através do menu Ferramentas - Macros - Executar Macro:


        # -*- 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)
    

Caixas de diálogo incorporadas em documentos

O exemplo abaixo abre uma caixa de diálogo Dialog1 recém-editada a partir de um documento, através do menu Ferramentas - Macros - Executar Macro:


        # -*- coding: utf-8 -*-
        from __future__ import unicode_literals
            
        def docDialog():
            """ Mostrar uma caixa de diálogo incorporada no documento """
            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,)
    

Consulte msgbox.py no diretório {installation}/program/ para exemplos de caixas de diálogo dinâmicas em Python.

Necessitamos da sua ajuda!

Necessitamos da sua ajuda!