Conteúdo

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

Tópicos relacionados

Abrir uma caixa de diálogo com Basic

Exemplos de programação em Python

Ajuda para os scripts Python no LibreOffice

Necessitamos da sua ajuda!