Leitura e Armazenamento de Configurações

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 salvas e recuperadas com a ajuda do Qt e QGIS API. Para cada variável, você deve pegar a chave que será usada para acessar a variável — para cor favorita do usuário use a chave “favourite_color” ou alguma outra palavra com significado. É recomendado dar alguma estrutura para criação do nome das chaves.

Nós podemos diferenciar os diversos tipos de configurações:

  • global settings — eles são amarrados ao usuário em uma determinada máquina. QGIS armazena um monte de configurações globais, por exemplo, o tamanho da janela principal ou tolerância padrão de quebra. Essa funcionalidade é fornecida diretamente pelo framework Qt pela classe QSettings. Por padrão, essa classe armazena as configurações na forma “nativa” de sistema de armazenamento de configrações, que é — registro (no Windows), o arquivo .plist (no Mac OS X) ou arquivo ini (no Unix). A documentação QSettings <http://doc.qt.io/qt-4.8/qsettings.html> _ é abrangente, por isso vamos fornecer apenas um exemplo simples

    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.

  • project settings — variar entre diferentes projetos e, portanto, eles estão conectados com um arquivo de projeto. Cor de fundo de mapa de tela ou destino no sistema de coordenadas de referência (CRS) são exemplos — fundo branco e WGS84 pode ser adequado para um projeto, enquanto fundo amarelo e projeção UTM são melhores para outra. Um exemplo de uso segue

    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.

  • map layer settings — essas configurações estão relacionadas a uma instância específica de uma camada de mapa com um projeto. Eles não estão conectados com a fonte de uma camada de dados subjacente, por isso, se você criar duas instâncias da camada de mapa de um shapefile, eles não vão compartilhar as configurações. As configurações são armazenadas no arquivo de projeto, por isso, se o usuário abre o projeto novamente, as definições relacionadas com a camada vai estar lá novamente. Esta funcionalidade foi adicionada no QGIS v1.4. A API é semelhante à QSettings — leva e retorna instâncias QVariant

    # save a value
    layer.setCustomProperty("mytext", "hello world")
    
    # read the value again
    mytext = layer.customProperty("mytext", "default text")