Commit 52bd55f7 authored by Roman Alifanov's avatar Roman Alifanov

get_range implemented

if there is no map in module, it will be generated
parent d0f54f64
...@@ -13,15 +13,24 @@ class Setting: ...@@ -13,15 +13,24 @@ class Setting:
self.backend = setting_data.get('backend') self.backend = setting_data.get('backend')
self.key = setting_data.get('key') self.key = setting_data.get('key')
self.default = setting_data.get('default') self.default = setting_data.get('default')
self.map = setting_data.get('map', self._default_map()) if len(setting_data.get('gtype')) > 2:
if setting_data.get('gtype'):
self.gtype = setting_data.get('gtype')[0] self.gtype = setting_data.get('gtype')[0]
self.map = setting_data.get('map', self._default_map())
self.data = setting_data.get('data', {}) self.data = setting_data.get('data', {})
def _default_map(self): def _default_map(self):
if self.type == 'boolean': if self.type == 'boolean':
# Дефолтная карта для булевых настроек # Дефолтная карта для булевых настроек
return {True: True, False: False} return {True: True, False: False}
if self.type == 'choice':
# Дефолтная карта для выборов
map = {}
range = self._get_backend_range()
for var in range:
print(var)
map[var[0].upper() + var[1:]] = var
return map
return {} return {}
def create_row(self): def create_row(self):
...@@ -38,6 +47,11 @@ class Setting: ...@@ -38,6 +47,11 @@ class Setting:
return backend.get_value(self.key, self.gtype) return backend.get_value(self.key, self.gtype)
return self.default return self.default
def _get_backend_range(self):
backend = self._get_backend()
if backend:
return backend.get_range(self.key, self.gtype)
def _set_backend_value(self, value): def _set_backend_value(self, value):
backend = self._get_backend() backend = self._get_backend()
if backend: if backend:
......
...@@ -4,6 +4,9 @@ class Backend: ...@@ -4,6 +4,9 @@ class Backend:
def get_value(self, key, gtype): def get_value(self, key, gtype):
raise NotImplementedError("Метод get_value должен быть реализован") raise NotImplementedError("Метод get_value должен быть реализован")
def get_range(self, key, gtype):
raise NotImplementedError("Метод get_range должен быть реализован")
def set_value(self, key, value, gtype): def set_value(self, key, value, gtype):
raise NotImplementedError("Метод set_value должен быть реализован") raise NotImplementedError("Метод set_value должен быть реализован")
...@@ -21,6 +24,18 @@ class GSettingsBackend(Backend): ...@@ -21,6 +24,18 @@ class GSettingsBackend(Backend):
print(f"[ERROR] Ошибка при получении значения {key}: {e}") print(f"[ERROR] Ошибка при получении значения {key}: {e}")
return None return None
def get_range(self, key, gtype):
schema_name, key_name = key.rsplit('.', 1)
schema = Gio.Settings.new(schema_name)
print(f"[DEBUG] Получение значения: schema={schema_name}, key={key_name}, gtype={gtype}")
try:
value = schema.get_range(key_name)
return value.unpack()[1]
except Exception as e:
print(f"[ERROR] Ошибка при получении значения {key}: {e}")
return None
def set_value(self, schema_key, value, gtype): def set_value(self, schema_key, value, gtype):
schema_name, key_name = schema_key.rsplit('.', 1) schema_name, key_name = schema_key.rsplit('.', 1)
schema = Gio.Settings.new(schema_name) schema = Gio.Settings.new(schema_name)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment