Leitura e Armazenamento de Configurações

Várias vezes é útil para o módulo salvar algumas variáveis para que o utilizador não necessite de introduzir ou seleccionar outra vez numa próxima vez que o módulo corra.

Estas variáveis podem ser guardadas ou recuperadas com ajuda do Qt e API do QGIS. Para cada variável, deve escolher uma chave que irá ser usada para aceder 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 fazer a diferença entre 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 mesmo armazena várias configurações globais, por exemplo, o tamanho da janela principal ou a tolerância padrão de atracção. Esta funcionalidade é fornecida directamente pela infraestrutura Qt através da classe QSettings. Por defeito, esta classe armazena no sistema nativo formas armazenar configurações, que são — registos (no Windows), ficheiros .plist (no Mac OS X) ou ficheiro .ini (no Unix). A documentação QSettings é 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 projecto — varia entre diferentes projectos e, portanto, eles estão ligados com um ficheiro de projecto. 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 projecto, enquanto o fundo amarelo e a projecçã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 seleccionado 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 projecto. 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çõessão armazenadas no ficheiro do projecto, portanto se o utilizador abrir o projecto 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")