Depois de mexer no console do QGIS Python e implementar a análise de vizinho mais próximo, vamos criar uma GUI muito simples para o plug-in.

Embora os documentos da API do QGIS levassem algumas horas para serem entendidos, o ecossistema do PyQGIS me ajudou muito. Aqui vem a lista de ferramentas que você deve incorporar ao seu processo de desenvolvimento o mais rápido possível.

1. CONSTRUTOR DE PLUG-INS

O QGIS Plugin Builder é um plugin criado para criar outros plugins. Ele permite você criá-lo em minutos e que você codifique em vez de configurar coisas que você não quer configurar. Note que você deve colocar o plugin dentro da pasta de plugins do QGIS (o padrão é ~/.qgis2/python/plugins) no Linux.

Lembre-se de rodar pyrcc4 -o resources.py resources.qrc dentro da pasta do seu plugin antes de adicioná-lo ao QGIS.

2. PLUGIN RELOADER

O QGIS Plugin Reloader é um plugin (possivelmente criado com o QGIS Plugin Builder) que permite que você atualize (reload) o seu plugin enquanto você codifica. Nenhuma reinicialização do QGIS é necessária.

3. QT DESIGNER

O Qt Designer vem com o pacote qt4-designer no Ubuntu. Ele é feito sob medida para projetar e construir GUIs a partir de componentes do Qt que podem ser usados ​​dentro do QGIS. Sua interface de arrastar e soltar permite prototipar rapidamente.

Graças ao Plugin Builder, você pode carregar o arquivo attribute_transfer_dialog_base.ui diretamente no Qt Designer e ajustá-lo às suas necessidades.

Não é preciso muito, apenas um QLineEdit e alguns QComboBoxwidgets. Eles estarão disponíveis no arquivo attribute_transfer.py como propriedades da classe AttributeTransferDialog.

O nome do widget pode ser personalizado na barra lateral direita e eu aconselho você a fazer isso. Eu escolhi o seguinte:

Uma vez carregado com Plugins -> Gerenciar e Instalar Plugins -> AttributeTransfer, o plugin está disponível diretamente na barra de ferramentas ou no menu Vetor. Está faltando a lógica de negócios, mas nós já fizemos isso no post anterior. Tudo o que deve ser fazer é unir essas duas partes.