Skip to content

Commit

Permalink
hidden_idgs & custom_idgs -> QVariantList
Browse files Browse the repository at this point in the history
  • Loading branch information
jbdesbas committed Jan 22, 2025
1 parent 10a0f21 commit 4fff4bd
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 23 deletions.
11 changes: 5 additions & 6 deletions idg/browser/remote_platforms.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,7 @@ def __init__(self, read_projects=True):
with open(PluginGlobals.CONFIG_FILE_PATH) as f:
self.stock_idgs = json.load(f)

self.custom_idg = PlgOptionsManager().get_plg_settings().custom_idgs.split(",")
self.custom_idg.remove("")
self.custom_idg = PlgOptionsManager().get_plg_settings().custom_idgs
for e in self.stock_idgs:
try :
self.plateforms.append(
Expand All @@ -42,7 +41,7 @@ def url_custom(self):
def url_stock(self):
out = []
for k, v in self.stock_idgs.items():
if k not in PlgOptionsManager().get_plg_settings().hidden_idgs.split(","):
if k not in PlgOptionsManager().get_plg_settings().hidden_idgs:
out.append(v)
print(out)
return out
Expand Down Expand Up @@ -82,7 +81,7 @@ def is_custom(self):
pass

def is_hidden(self):
if self.idg_id in PlgOptionsManager().get_plg_settings().hidden_idgs.split(","):
if self.idg_id in PlgOptionsManager().get_plg_settings().hidden_idgs:
return True
return False

Expand All @@ -96,10 +95,10 @@ def abstract(self):

def hide(self):
settings = PlgOptionsManager().get_plg_settings()
hidden_pf = settings.hidden_idgs.split(",")
hidden_pf = settings.hidden_idgs
if self.idg_id not in hidden_pf:
hidden_pf.append(self.idg_id)
settings.hidden_idgs = ",".join(hidden_pf)
settings.hidden_idgs = hidden_pf
PlgOptionsManager().save_from_object(settings)

@property
Expand Down
15 changes: 7 additions & 8 deletions idg/gui/dlg_settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ def _update_default_idgs_list(self):

# Set values to checkboxes
settings = self.plg_settings.get_plg_settings()
hidden_idg = settings.hidden_idgs.split(",")
hidden_idg = settings.hidden_idgs
for cb in self.checkboxes:
if cb.text() in hidden_idg:
cb.setChecked(False)
Expand All @@ -150,17 +150,16 @@ def apply(self):

# Misc
settings.version = __version__
settings.custom_idgs = ",".join(tablewidgetToList(self.tbl_platforms_list, 0))
settings.custom_idgs = tablewidgetToList(self.tbl_platforms_list, 0)

# Default IDG list
hidden__idgs_arr = []
hidden_idgs_arr = []
for cb in self.checkboxes:
print(cb.text(), cb.checkState())
if cb.checkState() == 0:
hidden__idgs_arr.append(cb.text())
hidden_idgs_arr.append(cb.text())
# Add to hidden PF
settings.hidden_idgs = ",".join(hidden__idgs_arr)

settings.hidden_idgs = hidden_idgs_arr
# Dump new settings into QgsSettings
self.plg_settings.save_from_object(settings)

Expand All @@ -184,9 +183,9 @@ def load_settings(self):
self._update_default_idgs_list()

# Custom IDG list
self.tbl_platforms_list.setRowCount(len(settings.custom_idgs.split(",")) + 1)
self.tbl_platforms_list.setRowCount(len(settings.custom_idgs) + 1)
listToTablewidget(
settings.custom_idgs.split(","), self.tbl_platforms_list, column_index=0
settings.custom_idgs, self.tbl_platforms_list, column_index=0
)

# Version of the plugin used to save the settings
Expand Down
28 changes: 19 additions & 9 deletions idg/toolbelt/preferences.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
"""

# standard
from dataclasses import asdict, dataclass, fields
from dataclasses import asdict, dataclass, fields, field, MISSING
from typing import List

# PyQGIS
from qgis.core import QgsSettings
Expand All @@ -30,8 +31,8 @@ class PlgSettingsStructure:
version: str = __version__
configs_folder: str = ""
download_files_at_startup: bool = True
custom_idgs: str = ""
hidden_idgs: str = ""
custom_idgs: List[str] = field(default_factory=lambda:[])
hidden_idgs: List[str] = field(default_factory=lambda:[])
config_file_url: str = (
"https://raw.githubusercontent.com/geo2france/idg-qgis-plugin/"
"dev/idg/config/default_idg.json"
Expand All @@ -48,7 +49,7 @@ def get_plg_settings() -> PlgSettingsStructure:
:rtype: PlgSettingsStructure
"""
# get dataclass fields definition
settings_fields = fields(PlgSettingsStructure)
settings_fields = fields(PlgSettingsStructure())

# retrieve settings from QGIS/Qt
settings = QgsSettings()
Expand All @@ -57,9 +58,18 @@ def get_plg_settings() -> PlgSettingsStructure:
# map settings values to preferences object
li_settings_values = []
for i in settings_fields:
li_settings_values.append(
settings.value(key=i.name, defaultValue=i.default, type=i.type)
)
print(i.name)
try:
li_settings_values.append(
settings.value(key=i.name, defaultValue=i.default, type=i.type)
)
except TypeError:
defaultValue = (
i.default_factory() if i.default is MISSING else i.default
)
li_settings_values.append(
settings.value(key=i.name, defaultValue=defaultValue)
)

# instanciate new settings object
options = PlgSettingsStructure(*li_settings_values)
Expand All @@ -77,7 +87,7 @@ def get_value_from_key(
:return: plugin settings value matching key
"""
if not hasattr(PlgSettingsStructure, key):
if not hasattr(PlgSettingsStructure(), key):
idg.toolbelt.log_handler.PlgLogger.log(
message="Bad settings key. Must be one of: {}".format(
",".join(PlgSettingsStructure._fields) # A fixer
Expand Down Expand Up @@ -114,7 +124,7 @@ def set_value_from_key(cls, key: str, value) -> bool:
:return: operation status
:rtype: bool
"""
if not hasattr(PlgSettingsStructure, key):
if not hasattr(PlgSettingsStructure(), key):
idg.toolbelt.log_handler.PlgLogger.log(
message="Bad settings key. Must be one of: {}".format(
",".join(PlgSettingsStructure._fields)
Expand Down

0 comments on commit 4fff4bd

Please sign in to comment.