Класс настроек (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. Обработка этого исключения должна вестись в основном коде программы.