page17
Dispatchers. Os Dispatchers são padrões de entrega de requisições que, se tivessem sido implementados para dispor os seus objetos, propriedades e métodos, e não um serviço genérico, “encapsulado”, seria muito bom. A concepção inicial do Dispatcher do UNO era ser uma via dupla entre o usuário e a API, provendo meios universais de acesso e de requisição de informações.
Na verdade, o UNO as vezes nos traz informações incompletas. Quando se salva um documento através do mouse, clicando no ícone do disquetinho, ou através do atalho Ctrl & S ou até utilizando-se o menu Arquivo > Salvar, para o UNO, deveria ser gerado (e o é, neste caso) o mesmo Dispatcher. Já quando, via Macro Recorder, tenta-se salvar um arquivo, utilizando-se uma Caixa de Diálogo para fornecer um nome, uma localização e um formato, o UNO falha. A passagem de parâmetros é incorreta. O UNO não grava as opções do usuário em forma de objetos ou de propriedades. Se chamar a macro, ela exibirá, fatalmente, a Caixa de Diálogo, pois esta não reteve as propriedades de quando feito o salvamento da macro.
O UNO, é, em última instância, uma abstração de métodos, tornando possível executar métodos e emitir Dispatchers de forma universal, isolado, assim do Sistema Operacional, da arquitetura da máquina, enfim, o universal aqui significa independência. Mas o que havia sido concebido para trazer universalidade e liberdade ao usuário acabou por ser uma camisa de força para o desenvolvedor de macros. O desenvolvedor ficou sem acesso à API (documentação escassa) e sem acesso aos componentes do engine do LibreOffice. Ressalte-se que o Macro Recorder só grava suas requisições de Chamadas UNO em Basic, justamente a linguagem com mais limitações, em nível de API. Problemas na passagem de parâmetros e implementação ausente em aplicativos, como o Draw e o Impress completam a lista de deficiências do Macro Recorder.
À guisa de exemplo, uma simples macro, chamada PrintCurrentPage, há pouco tempo, esteve na relação de bugs do LibreOffice.
Ela, como se depreende do próprio nome, imprime a página atual no LibreOffice. Observe o seu pequeno código:
LibreOffice Magazine | Agosto 2014
44
Mundo Libre
Artigo