Configuración de lectura y almacenamiento

Muchas veces es útil para un complemento guardar algunas variables para que el usuario no tenga que introducir o seleccionar de nuevo la próxima vez que el complemento se ejecute.

Estas variables se pueden guardar y recuperar con ayuda de Qt y QGIS API. Para cada variable, se debe escoger una clave que será utilizada para acceder a la variable — para el color favorito del usuario podría utilizarse la clave “favourite_color” o cualquier otra cadena que tenga sentido. Es recomendable dar un poco de estructura al nombrar las claves.

Podemos hacer la diferencia entre varios tipos de ajustes:

  • configuración global — están vinculados al usuario en una máquina particular. QGIS almacena una gran cantidad de ajustes globales, por ejemplo, el tamaño de la ventana principal o tolerancia de autoensamblado predeterminado. Esta funcionalidad es proporcionada directamente por el marco Qt por medio de la clase QSettings. Por defecto, esta clase almacena la configuración en el sistema “nativo” de la configuración de almacenamiento, que es — registro (en Windows), archivo .plist (en macOS) o archivo .ini (en Unix). La Documentación QSettings es amplia, por lo que vamos a proporcionar un solo ejemplo sencillo.

    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)
    

    El segundo parámetro del método value() es opcional y especifica el valor por defecto si no hay valor previo establecido para el nombre de la configuración aprobada.

  • Configuración del proyecto — varia entre los diferentes proyectos y por lo tanto están conectados con un archivo de proyecto. El color fondo del lienzo de mapa o destino del sistema de referencia de coordenadas (SRC) son ejemplos —fondo blanco y WGS84 podría ser adecuado para un proyecto, mientras que el fondo amarillo y la proyección UTM son mejores para otro. Un ejemplo de uso es el siguiente

    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 puede ver, el método writeEntry() es utilizado para todo tipo de dato, pero existen varios métodos para leer el valor de configuración de nuevo, y la correspondiente tiene que ser seleccionada para cada tipo de datos.

  • Ajustes de la capa de mapa — estos ajustes están relacionados a un caso en particular de una capa de mapa con un proyecto. Ellos no están conectados con la fuente de datos subyacentes de una capa, por lo que si crea dos instancias de capa de mapa de un archivo shape, no van a compartir los ajustes. La configuración se almacena en el archivo del proyecto, por lo que si el usuario abre el archivo de nuevo, los ajustes relacionados a la capa estarán allí de nuevo. Esta funcionalidad se ha añadido en QGIS v1.4. El API es similar a QSettings —que toma y regresa instancias QVariant

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