Skip to content
Snippets Groups Projects
Commit 0e54c3b3 authored by Benjamin Jakimow's avatar Benjamin Jakimow
Browse files

addresses #103: fixed serialization of QgsTextFormat in EOTSV settings


Signed-off-by: Benjamin Jakimow's avatarBenjamin Jakimow benjamin.jakimow@geo.hu-berlin.de <benjamin.jakimow@geo.hu-berlin.de>
parent e83fd5b6
No related branches found
No related tags found
No related merge requests found
import os, enum, pathlib, re, json
import os, enum, pathlib, re, json, pickle
from collections import namedtuple
from qgis.core import *
from qgis.gui import *
......@@ -102,8 +102,14 @@ def value(key:Keys, default=None):
if value == QVariant():
value = None
if value and key == Keys.MapTextFormat:
s = ""
if key == Keys.MapTextFormat:
if isinstance(value, QByteArray):
doc = QDomDocument()
doc.setContent(value)
value = QgsTextFormat()
value.readXml(doc.documentElement(), QgsReadWriteContext())
if key == Keys.SensorSpecs:
# check sensor specs
......@@ -130,6 +136,8 @@ def value(key:Keys, default=None):
value = None
settings().setValue(key.value, None)
print(error, file=sys.stderr)
except Exception as otherError:
s = ""
return value
......@@ -176,9 +184,13 @@ def setValue(key:Keys, value):
"""
assert isinstance(key, Keys)
assert isinstance(key.value, str)
if isinstance(value, QgsTextFormat):
value = value.toMimeData()
if isinstance(value, QgsTextFormat):
# make QgsTextFormat pickable
doc = QDomDocument()
doc.appendChild(value.writeXml(doc, QgsReadWriteContext()))
value = doc.toByteArray()
if key == Keys.SensorSpecs:
s = ""
#if isinstance(value, dict) and key == Keys.SensorSpecs:
......@@ -206,7 +218,6 @@ def values()->dict:
:rtype: dict
"""
d = dict()
s = settings()
for key in Keys:
assert isinstance(key, Keys)
d[key] = value(key)
......
......@@ -113,6 +113,47 @@ class testclassSettingsTest(unittest.TestCase):
if SHOW_GUI:
QGIS_APP.exec_()
def test_MapTextFormat(self):
from qgis.core import QgsTextFormat
from qgis.PyQt.Qt import QSettings
from qgis.PyQt.QtXml import QDomDocument
key = Keys.MapTextFormat
format1 = defaultValues()[key]
self.assertIsInstance(format1, QgsTextFormat)
color1 = QColor('yellow')
format1.setColor(color1)
doc = QDomDocument()
doc.appendChild(format1.writeXml(doc, QgsReadWriteContext()))
docBA = doc.toByteArray()
docStr = doc.toString()
doc2 = QDomDocument()
doc2.setContent(docBA)
format2 = QgsTextFormat()
format2.readXml(doc2.documentElement(), QgsReadWriteContext())
color2 = format2.color()
self.assertEqual(color1, color2)
QS = QSettings('TEST')
QS.setValue(key.value, doc.toByteArray())
docBA3 = QS.value(key.value)
self.assertIsInstance(docBA3, QByteArray)
doc3 = QDomDocument()
doc3.setContent(docBA3)
format3 = QgsTextFormat()
format3.readXml(doc3.documentElement(), QgsReadWriteContext())
self.assertEqual(color1, format3.color())
setValue(key, format1)
self.assertEqual(format1.color(), value(key).color())
s = ""
def test_saveAndRestoreSensorNames(self):
from example.Images import Img_2014_01_15_LC82270652014015LGN00_BOA
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment