Muitas vezes é útil para o plugin salvar algumas variáveis para que o utilizador não necessite introduzir ou selecionar outra vez numa próxima vez que o plugin for acionado.
Estas variáveis podem ser guardadas ou recuperadas com ajuda do Qt e com a API do QGIS. Para cada variável, deve-se escolher uma chave que irá ser usada para acessar a variável. — para cor favorita de utilizador pode usar “favourite_color” ou qualquer outra string com significado. É recomendado dar alguma estrutura nos nomes das chaves.
Nós podemos diferenciar os diversos tipos de configurações:
configurações globais — eles são uma ligação ao utilizador numa máquina particular. O QGIS por si só armazena várias configurações globais, por exemplo, o tamanho da janela principal ou a tolerância padrão de atração. Esta funcionalidade é fornecida diretamente pela infraestrutura Qt através da classe QSettings. Por padrão, esta classe armazena as configurações no sistema as formas “nativo” de armazenar configurações, são — registos (no Windows), arquivos .plist (no Mac OS X) ou arquivos .ini (no Unix). A documentação QSettings<http://doc.qt.nokia.com/stable/qsettings.html> é compreensível, portanto iremos fornecer um simples exemplo:
def store():
s = QSettings()
s.setValue("myplugin/mytext", "hello world")
s.setValue("myplugin/myint", 10)
s.setValue("myplugin/myreal", 3.14)
def read():
s = QSettings()
mytext = s.value("myplugin/mytext", "default text")
myint = s.value("myplugin/myint", 123)
myreal = s.value("myplugin/myreal", 2.71)
O segundo parâmetro do método value() é opcional e especifica o valor padrão se não for fornecido uma definição do valor prévio para o nome da configuração passada.
configurações do projeto — varia entre diferentes projetos e, portanto, eles estão ligados com um arquivo de projeto. A cor do fundo do enquadramento do Mapa ou o sistema referências de coordenadas (CRS) são exemplos — fundo branco e WGS84 podem ser adequados para um projeto, enquanto o fundo amarelo e a projeção UTM são melhores para outro. A seguir está um exemplo do seu uso:
proj = QgsProject.instance()
# store values
proj.writeEntry("myplugin", "mytext", "hello world")
proj.writeEntry("myplugin", "myint", 10)
proj.writeEntry("myplugin", "mydouble", 0.01)
proj.writeEntry("myplugin", "mybool", True)
# read values
mytext = proj.readEntry("myplugin", "mytext", "default text")[0]
myint = proj.readNumEntry("myplugin", "myint", 123)[0]
Como pode ver, o método writeEntry() é usado para todos os tipos de dados, mas em diversos métodos existe para leitura um valor de configuração de retorno, e o correspondente tem de ser selecionado para cada tipo de dado.
configurações da camada do mapa — estão configurações estão relacionadas a uma instância particular da camada do mapa com um projeto. Eles não estão ligados com a fonte de dados sublinhada da camada, portanto se criar duas instâncias de camada de mapa de um shapefile, eles não irão partilhar configurações. As configurações são armazenadas no ficheiro do projeto, portanto se o utilizador abrir o projeto outra vez, a configurações camada relacionada estarão lá outra vez. Esta funcionalidade foi adicionada no QGIS v1.4. A API é similar ao QSettings — vai buscar e retorna as instâncias QVariant:
# save a value
layer.setCustomProperty("mytext", "hello world")
# read the value again
mytext = layer.customProperty("mytext", "default text")