Citirea și stocarea setărilor

De multe ori, pentru un plugin, este utilă salvarea unor variabile, astfel încât utilizatorul să nu trebuiască să le reintroducă sau să le reselecteze, la fiecare rulare a plugin-ului.

Aceste variabile pot fi salvate cu ajutorul Qt și QGIS API. Pentru fiecare variabilă ar trebui să alegeți o cheie care va fi folosită pentru a accesa variabila — pentru culoarea preferată a utilizatorului ați putea folosi o cheie de genul “culoare_favorită” sau orice alt șir semnificativ. Este recomandabil să folosiți o oarecare logică în denumirea cheilor.

Putem face diferența între mai multe tipuri de setări:

  • setări globale — acestea țin de utilizatorul unei anumite mașini. QGIS însuși stochează o mulțime de setări globale, cum ar fi, de exemplu, dimensiunea ferestrei principale sau toleranța implicită pentru acroșare. Această funcționalitate este furnizată direct de cadrul de lucru Qt, prin intermediul clasei QSettings. În mod implicit, această clasă își depozitează setările în modul “nativ” al sistemului dvs, care este — în registru (pentru Windows), în fișierul .plist (pentru Mac OS X) sau în fișierul .ini (pentru Unix). Documentația QSettings este cuprinzătoare, așa că vă vom prezenta doar un simplu exemplu

    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)
    

    Al doilea parametru al metodei value() este opțional și specifică valoarea implicită, dacă nu există nici o valoare anterioară stabilită pentru setare.

  • setările proiectului — variază între diferite proiecte și, prin urmare, ele sunt conectate cu un fișier de proiect. Culoarea de fundal a suportului hărții sau sistemul de coordonate de referință (CRS), de exemplu — fundal alb și WGS84 ar putea fi potrivite pentru un anumit proiect, în timp ce fondul galben și proiecția UTM ar putea fi mai bune pentru altul. În continuare este dat un exemplu de utilizare

    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]
    

    După cum puteți vedea, metoda writeEntry() este folosită pentru toate tipurile de date, dar există mai multe metode pentru a seta înapoi setarea, iar cea corespunzătoare trebuie să fie selectată pentru fiecare tip de date.

  • setările stratului hărții — aceste setări sunt legate de o anumită instanță a unui strat de hartă cu un proiect. Acestea nu sunt conectate cu sursa de date a stratului, așa că dacă veți crea două instanțe ale unui strat de hartă dintr-un fișier shape, ele nu vor partaja setările. Setările sunt stocate în fișierul proiectului, astfel încât, în ​​cazul în care utilizatorul deschide iarăși proiectul, setările legate de strat vor fi din nou acolo. Această funcționalitate a fost adăugată în QGIS v1.4. API-ul este similar cu QSettings — luând și returnând instanțe QVariant

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