Класс настроек (Settings)
Назначение
Класс предназначен для работы с настройками программ linux, используется в проектах iQStudio и сохраняет настройки приложения в формате json по ключам через свой экземпляр.
При создании экземпляра класса происходит автоматическое создание структуры папок и файлов для хранения настроек в каталоге ~/.congig
. Запись настроек в класс делается в коде основной программы через отдельный метод (далее метод обновления настроек). Процедуры сохранения и чтения (save()
и load()
) метода непосредственно осуществляют запись настроек программы и их чтение из файловой системы.
В классе имеются методы позволяющие внешним путем расширить функционал работы с настройками, получив, например, путь к каталогу или файлу настроек.
Класс хранит название программы в которой он создан, и оно может быть использовано в коде централизованно.
Использование
Пример кода для работы с классом можно найти в папке examples
. Далее мы опишем основные моменты взаимодействия с классом, сохранения и чтения настроек.
Создание экземпляра через конструктор
from iQModules import Settings
settings = Settings('TestProject')
# или
settings = Settings('TestProject',options={'улитка':10})
В примере выше показано два варианта использования конструктора:
- без параметров по умолчанию
- с параметрами по умолчанию
Разница в этих вызовах в том, что при создании экземпляра класса он сразу будет работать с необходимыми параметрами. В том числе они и запишутся в файл, в случае первого запуска программы и отсутствия в файловой системе каталогов и файлов для хранения настроек.
Обновление/внесение/изменение настроек
Настройки в экземпляре класса могут быть изменены только через геттер или сеттер параметра и никак по-другому. Однако работу с ними мы постарались сделать максимально удобной. Предполагается что обновление настроек будет производиться в отдельном методе (далее метод обновления настроек), а их чтение и запись при запуске и закрытии программы соответственно. Однако сказанное не означает, что вы не сможете сохранить или прочитать настройки в любой момент — для этого предназначены методы save
и load
.
Обновление настроек может производиться так:
settings = Settings('TestProject')
settings.options = {'бацила':'страшная', "корова":'дойная'}
settings.options['slider'] = [24,100,1000]
settings.options['parser'] = 333
settings.options['телефон'] = '8(42622)20011'
print(settings)
print(settings.options)
print(settings.options['телефон'])
settings.save()
Расширение функционала
В случае необходимости расширить функционал работы с настройками (сохранить что-то в каталог настроек, добавить еще один файл настроек и т.д.) — сделать это вы можете в коде основной программы, либо создав класс на основе Settings
. Для того чтобы это сделать, нужно воспользоваться методами app_name
, settings_file
и settings_folder
. Примеры:
print(settings.app_name)
print(settings.settings_file)
print(settings.settings_folder)
Сохранение и чтение настроек
Настройки автоматически создаются при создании экземпляра класса и передаче ему в конструкторе названия программы, если их не существует на диске, то еще и записываются. Если файлы настроек имеются, то производится их чтение и последующее обновление переданных параметров по умолчанию.
Сохранение обновленных настроек нужно производить методом save()
.
Проверка на корректность открываемых настроек не выполняется — кидается исключение BaseException. Обработка этого исключения должна вестись в основном коде программы.