pyqgis implementation for Qgis.Settings.Options.SaveEnumFlagAsInt

This commit is contained in:
Denis Rouzaud 2022-04-13 14:03:07 +02:00
parent 4045e51240
commit 3926e97cda

View File

@ -18,7 +18,7 @@
""" """
from .metaenum import metaEnumFromValue from .metaenum import metaEnumFromValue
from qgis.core import QgsSettings, QgsSettingsEntryBase, QgsLogger from qgis.core import QgsSettings, QgsSettingsEntryBase, QgsLogger, Qgis
import qgis # required to get base class of enums import qgis # required to get base class of enums
@ -29,7 +29,7 @@ class PyQgsSettingsEntryEnumFlag(QgsSettingsEntryBase):
since QGIS 3.20 since QGIS 3.20
""" """
def __init__(self, key, pluginName, defaultValue, description=str()): def __init__(self, key, pluginName, defaultValue, description=str(), options=Qgis.SettingsOptions()):
""" """
Constructor for PyQgsSettingsEntryEnumFlag. Constructor for PyQgsSettingsEntryEnumFlag.
:param key: argument specifies the final part of the settings key. :param key: argument specifies the final part of the settings key.
@ -38,6 +38,7 @@ class PyQgsSettingsEntryEnumFlag(QgsSettingsEntryBase):
:param description: argument specifies a description for the settings entry. :param description: argument specifies a description for the settings entry.
""" """
self.options = options
defaultValueStr = str() defaultValueStr = str()
self.__metaEnum = metaEnumFromValue(defaultValue) self.__metaEnum = metaEnumFromValue(defaultValue)
if self.__metaEnum is None or not self.__metaEnum.isValid(): if self.__metaEnum is None or not self.__metaEnum.isValid():
@ -105,20 +106,23 @@ class PyQgsSettingsEntryEnumFlag(QgsSettingsEntryBase):
QgsLogger.debug("Invalid metaenum. Enum/Flag probably misses Q_ENUM/Q_FLAG declaration. Settings key: '{0}'".format(self.key())) QgsLogger.debug("Invalid metaenum. Enum/Flag probably misses Q_ENUM/Q_FLAG declaration. Settings key: '{0}'".format(self.key()))
return False return False
if self.__metaEnum.isFlag(): if self.options & Qgis.SettingsOption.SaveEnumFlagAsInt:
enumFlagKey = self.__metaEnum.valueToKeys(value) enum_flag_key = int(value)
else: else:
enumFlagKey = self.__metaEnum.valueToKey(value) if self.__metaEnum.isFlag():
if not enumFlagKey: enum_flag_key = self.__metaEnum.valueToKeys(value)
QgsLogger.debug("Invalid enum/flag value '{0}'.".format(value)) else:
return False enum_flag_key = self.__metaEnum.valueToKey(value)
if not enum_flag_key:
QgsLogger.debug("Invalid enum/flag value '{0}'.".format(value))
return False
if type(dynamicKeyPart) == str: if type(dynamicKeyPart) == str:
dynamicKeyPart = [dynamicKeyPart] dynamicKeyPart = [dynamicKeyPart]
elif dynamicKeyPart is None: elif dynamicKeyPart is None:
dynamicKeyPart = [] dynamicKeyPart = []
return super().setVariantValuePrivate(enumFlagKey, dynamicKeyPart) return super().setVariantValuePrivate(enum_flag_key, dynamicKeyPart)
def settingsType(self): def settingsType(self):
""" """