Documente Academic
Documente Profesional
Documente Cultură
SPRING Plugins
Fevereiro de 2010
INPE
Sumrio
SPRING Plugins............................................................................................3
Estrutura de Plugins do SPRING...................................................................4
Camada de Informao.........................................4
Camada de Interface..........................................4
Camada de Parmetros.........................................5
Camada de Gerenciamento......................................5
Desenvolvimento de Plugins........................................................................6
Cabealho e bibliotecas......................................6
Disponibilizao do cabealho e bibliotecas..................6
Compiladores.................................................6
Qt...........................................................7
Banco de Dados...............................................8
Exemplos de Plugins.................................................................................10
Hello SPRING................................................10
Assistente de Criao de Banco de Dados.....................11
spring@dpi.inpe.br
SPRING Plugins
SPRING Plugins
Este documento apresenta a tecnologia de plugins para o SPRING e atravs dessa
tecnologia os usurios podero incorporar suas implementaes ao software SPRING. A tecnologia
de plugins utilizada para adicionar funes a softwares, provendo alguma funcionalidade
especial ou muito especfica. Geralmente pequeno e leve, e utilizado somente sob demanda.
O SPRING possui o suporte a tecnologia de plugins para permitir que desenvolvedores
externos
aumentem
as
funcionalidades
do
SPRING
disponibilizem
seus
estudos
spring@dpi.inpe.br
Camada de Informao
A camada de informao responsvel por definir informaes bsicas do plugin.
Essas informaes so:
Camada de Interface
A camada de interface contm a camada de informao e contm o mtodo de
execuo do plugin. Os plugins so sempre filhos dessa camada, ou seja, os plugins do SPRING
sempre herdaro dessa camada. Ao herdar a camada de interface, obrigatrio implementar o
mtodo ExecuteSpringPlugin, pois esse ser o mtodo chamado ao executar um plugin.
Alm disso, essa camada contm a declarao de plugin necessria pelo Qt, framework
plugins vlidos sero carregados. Um plugin vlido quando o mesmo for gerado(compilado) na
mesma verso que o SPRING e o Qt. Essa informao pode ser obtida no sobre do software
SPRING.
spring@dpi.inpe.br
Camada de Parmetros
A camada de parmetros responsvel por disponibilizar mtodos que executam
alguma operao no SPRING ou retornam variveis de controle do SPRING. Dentre as operaes e
variveis disponveis so:
Camada de Gerenciamento
A camada de gerenciamento utilizada apenas pelo software SPRING, que procura no
diretrio sprplugins por arquivos .dll(Windows) ou .so(Linux), e para cada plugin encontrado,
verifica sua validade e carrega o plugin.
SPRING que possui um item de instalao de plugins e adiciona um item para cada plugin
carregado. Atravs desses itens que os plugins sero executados.
spring@dpi.inpe.br
Desenvolvimento de Plugins
Desenvolvimento de Plugins
Para desenvolver plugins para o SPRING so necessrios alguns pr-requisitos. Os prrequisitos so detalhados abaixo, nesse captulo.
Cabealho e bibliotecas
Os arquivos de cabealho das funcionalidades do SPRING e as bibliotecas so
do plugin. Quando o plugin usufruir de alguma classe ou mtodo do SPRING ser necessrio ligar
ou lincar a biblioteca que contm a classe ou mtodo utilizado. Nos exemplos do prximo captulo
explicaremos como realizar essa etapa.
bibliotecas, descritos no captulo anterior. Existem duas formas de obter esses arquivos, atravs
Compiladores
Os compiladores testados para compilar o conjunto de aplicativos SPRING so:
spring@dpi.inpe.br
Desenvolvimento de Plugins
Ambiente Windows:
Ambiente Linux
GCC / G++
Qt
Para os ambientes Windows e Linux necessrio a instalao do Framework Qt
responsvel principalmente pelo gerenciamento das janelas. O Qt disponibilizado pela Nokia e
possui uma licena livre e pode ser obtido no sitio de internet http://qt.nokia.com/.
suporte OpenGL. Abaixo uma demostrao da compilao da biblioteca Qt. Esse passo bem
demorado.
cd c:\Qt\qt-win-opensource-src-4.5.3
Windows
configure
nmake install
Linux
spring@dpi.inpe.br
OpenGl (mesa-libglu-devel)
LibXext (libXext-devel)
7
Desenvolvimento de Plugins
LibXinerama (libXinerama-devel)
LibXcursor (libXcursor-devel)
LibXfixes (libXfixes-devel)
LibXrandr (libXrandr-devel)
LibXrender (libXrender-devel)
LibXi (libXi-devel)
FontConfig (fontconfig-devel)
LibJpeg (libjpeg-devel)
configure
GCC / G++
Banco de Dados
Para o ambiente Windows no necessrio instalar as bibliotecas dos bancos de
a que melhor se adque a sua distribuio Linux. Abaixo uma demostrao de instalao no
ambiente Ubuntu e OpenSuse.
spring@dpi.inpe.br
Desenvolvimento de Plugins
spring@dpi.inpe.br
Exemplos de Plugins
Exemplos de Plugins
Neste captulo mostraremos exemplos de como utilizar as camadas de Informao,
Interface e Parmetros da metodologia de plugins para o software SPRING. Apresentaremos os
exemplos de Hello SPRING, bem mais simples e a criao de banco de dados. Esses exemplos
sero distribudos junto ao SPRING.
Hello SPRING
O exemplo Hello SPRING apesar de bem simples, contm todos os passos necessrios
arquivo de projetos, que atravs deste so gerados os arquivos .vcproj ou Makefile. O contedo
desse arquivo composto pela definio de plugin do SPRING e quais arquivos faro parte desse
plugin.
linhas
include(../libfreetype/libfreetypepath.pri)
linha
include($${LIB_NAME}.inc),
adiciona
arquivo
obrigatria,
pois agrega
spring@dpi.inpe.br
10
Exemplos de Plugins
O arquivo hellospringplugin.inc no diretrio projetos/hellospringplugin define quais
de
objeto
SpringPluginInterface {};
do
Qt.
Incluso
Exemplo:
da
Q_INTERFACES(SpringPluginInterface).
macro
class
HelloSPRINGPlugin
Q_INTERFACES,
requisitada
public
pelo
Qt.
QObject,
Exemplo:
spring@dpi.inpe.br
11
Exemplos de Plugins
arquivo de projetos, que atravs deste so gerados os arquivos .vcproj ou Makefile. O contedo
desse arquivo composto pela definio de plugin do SPRING e quais arquivos faro parte desse
plugin.
linhas
include(../libfreetype/libfreetypepath.pri)
obrigatria,
pois agrega
de
objeto
SpringPluginInterface {};
do
Qt.
Incluso
Exemplo:
da
Q_INTERFACES(SpringPluginInterface).
macro
class
DatabaseWizardPlugin
Q_INTERFACES,
requisitada
public
pelo
Qt.
QObject,
Exemplo:
12
Exemplos de Plugins
Determinar as informaes do plugin. Exemplos:
_spring_plugin_info.plugin_name_ = tr("Criao de Banco de
Dados");
src/pluginspr/databasewizard:
arquivo
databasewizardpages.cpp
do
diretrio
fileDialog
springparameters-
>getQFileDialogPtr();
No
src/pluginspr/databasewizard:
arquivo
databasewizarddlg.cpp
pluginParameters->activatedDatabase
do
(
diretrio
databaseName
databaseDir );
spring@dpi.inpe.br
13
software SPRING. Nos passos a seguir, tomaremos como base o exemplo do plugin Hello SPRING.
Para distribuir seu plugin, apenas disponibilize a dll gerada.
Windows
Entre no diretrio do plugin Hello SPRING em que o SPRING Cdigo Aberto foi
instalado
cd <spring_codigo_aberto>\projetos\hellospringplugin
devenv hellospringplugin.vcproj
Arquivo
de
plugin
gerado
<spring_codigo_aberto>\[distribuicao|
distribuicaox64]\sprplugins\hellospringplugin.dll
Linux
Entre no diretrio do plugin Hello SPRING em que o SPRING Cdigo Aberto foi
instalado
Makefile
cd <spring_codigo_aberto>/projetos/hellospringplugin
qmake hellospringplugin.pro
make Release
Arquivo
de
plugin
gerado
<spring_codigo_aberto>\[distribuicao|
distribuicaox64]\sprplugins\hellospringplugin.so
Use a ferramenta Instalar Plugins do SPRING, para adicionar o seu plugin ao SPRING,
caso o plugin possua alguma incompatibilidade a mesma ser apresentada
SPRING
spring@dpi.inpe.br
SPRING
arquivos de projeto (.vcproj e Makefile). Novamente tomaremos como exemplo o plugin Hello
SPRING.
Inclua no arquivo projetos.pro do diretrio projetos a compilao do plugin, para
isso adicione a linha SUBDIRS += hellospringplugin entre as linhas que contm o comentrio
#add plugins here.
Aps isso recrie os arquivos de projeto e compile o SPRING e o plugin. O plugin j ser
spring@dpi.inpe.br
15