Table of Contents
Qt → Widgets → Plugin Builder
O Plugin Builder é um componente para auxílio à criação de novos plugins baseados na TerraLib. Ele gera automaticamente o esqueleto de código necessário ao desenvolvimento do plugin. Os seguintes arquivos são gerados por ele:
- Arquivos de código fonte:
- Config.h: com a definição da macro de exportação, configurações de tradução e demais detalhes comuns.
- Plugin.h e Plugin.cpp: contendo a classe base do plugin, derivada de
te::plugin::Plugin
, já com os métodosstartup()
eshutdown()
implementados.
- Arquivos de projeto:
- CMakeLists.txt: arquivo CMake para criação do projeto de build do plugin. Este arquivo já referencia os arquivos de código fnte do plugin e também contém as diretivas de inclusão e link-edição com os módulos da TerraLib.
- plugin_info.xml.in: arquivo de descrição do plugin, necessário para geração o arquivo XML utilizado para a carga do plugin no TerraView.
Projeto
Para auxiliar na criação dos arquivos do plugin foram criadas duas novas classes no modulo te::qt::widgets
na pasta plugin/builder:
- PluginSourceWriter: responsável pela criação dos arquivos de código fonte.
- PluginCMakeWriter: responsável pela criação dos arquivos de configuração e projeto.
O componente para criação de plugins é um assistente (wizard) cuja implementação enconra-se na classe PluginBuilderWizard. Este assistente permite ao usuário informar passo a passo os parâmetros necessários para a criação do plugin. As figuras a seguir apresentam os formulários deste assistente.
Passo 1: Definição dos parâmetros gerais do plugin (todos os campos são obrigatórios).
Passo 2: Escolha e definição dos parâmetros específicos a cada linguagem (atualmente suporte apenas para a linguagem C++).
Passo 3: Definição da licença e informações sobre o autor do plugin.
Passo 4: Utilizado para informar se o plugin a ser criado possui dependência com outro plugin já existente.
Passo 5: Caso o plugin tenha dependência com uma categoria de plugins a definição é feita nesta tela.
Passo 6: Utilizado para informar quais os módulos da terralib o plugin terá dependência (te.plugin e te.common já são pré-selecionados).
Passo 7: Informe caso o plugin necessite de algum recurso extra para sua carga (informação de biblioteca compartilhada também já vem pré definida).
Passo 8: Informações referentes a alguma configuração padrão do plugin a ser definida no momento de sua carga.
Passo 9: Para que os arquivos de codigo fonte e configuração possam ser criados corretamente é necessario informar a localização da TerraLib e o local de saida dos arquivos gerados pelo plugin builder.
Exemplo de Uso
Utilização das classes para gerar um plugin automaticamente.
#include "PluginCMakeWriter.h" #include "PluginSourceWriter.h" ... te::plugin::PluginInfo pi; te::plugin::Provider p; ... std::string teIncludeDir =...; std::string teCmakeDir = ...; std::string pluginSrcDir = ...; std::string pluginBuildDir = ...; std::string nameSpace = ""; std::string macroExport = ""; ... //create cmake files te::qt::widgets::PluginCMakeWriter cmakeWriter; cmakeWriter.createCmakeFile(pluginBuildDir, pluginSrcDir, pi.m_name, macroExport, teCmakeDir, pi); cmakeWriter.createPluginInfoFile(pluginBuildDir, pi, p); //create source files te::qt::widgets::PluginSourceWriter sourceWriter; sourceWriter.createHeaderFile(pluginSrcDir, nameSpace); sourceWriter.createCppFile(pluginSrcDir, nameSpace, pi.m_name); sourceWriter.createConfigFile(pluginSrcDir, nameSpace, macroExport, pi.m_name);
Outro modo é utilizar este componente.
#include <terralib/qt/widgets/plugin/builder/PluginBuilderWizard.h> ... te::qt::widgets::PluginBuilderWizard dlg(); dlg.exec();
Component Summary
Final Remarks
- Atualmente o componente esta gerando apenas plugins para a Linguagem C++.
- CORRIGIR a variavel TERRALIB_SCHEME_LOCATION no arquivo XML.
References
Para maiores infomações sobre o suporte a plugins na TerraLib acesse a página do módulo de plugins.