Библиотека сайта rus-linux.net
Возможности тулкита GTK+ и сопутствующих библиотек
Автор: А.Панин
Дата публикации: 3 декабря 2014 г.
Специализированный механизм для работы с данными конфигурации приложений
Несмотря на то, что рассмотренные в предыдущих статьях механизмы отлично подходят для сохранения данных конфигурации приложений, они могут использоваться для различных целей. В данной статье будет рассматриваться механизм, разработанный специально для работы с данными конфигурации приложений. Этот механизм работает на множестве платформ, используя по возможности соответствующие механизмы операционных систем. В Linux для хранения данных конфигурации приложений в бинарном формате используется служба dconf, в Windows - системный реестр, в Mac OS X - списки значений параметров конфигурации. Следует упомянуть о том, что рассматриваемый механизм используется главным образом приложениями из состава окружения рабочего стола GNOME, хотя никто не запрещает использовать его также и в любых приложениях на основе тулкита GTK+ или библиотеки GLib при условии запуска службы dconf. При работе с данным механизмом необходимо помнить о том, что он неработоспособен без главного цикла обработки событий приложения, поэтому в некоторых случаях он может оказаться неприемлемым, но при этом задействование главного цикла обработки событий приложения обуславливает его основное преимущество, а именно, возможность отслеживания изменений значений параметров конфигурации, осуществленных вне приложения. Как вы уже наверняка догадались, в статье будет рассматриваться специализированный механизм для работы с данными конфигурации приложений на основе класса GSettings и службы dconf.
1. Схемы конфигурации приложений
Рассматриваемый механизм для работы с данными конфигурации приложений на основе класса GSettings
и службы dconf
не может функционировать без схем конфигурации приложений. В рамках схем конфигурации приложений приводятся названия и описания параметров конфигурации приложений, описания типов значений этих параметров, стандартные значения, а также диапазоны и наборы допустимых значений. Перед использованием схемы конфигурации приложения должна производится ее компиляция на основе файла описания схемы конфигурации приложения с помощью специальной утилиты с интерфейсом командной строки glib-compile-schemas
. Файл описания схемы конфигурации приложения является документом формата XML, содержащим информацию, которая должна быть добавлена в схему, в читаемом человеком виде. Разработчик должен создавать файлы описания схем конфигурации для своих приложений и распространять их вместе с приложениями, а компиляция схем конфигурации приложений должна осуществляться непосредственно в пользовательской системе в процессе установки приложения. Обычно файлы схем конфигурации приложений, а также файлы их описаний размещаются в директории /usr/share/glib-2.0/schemas/
, а также могут размещаться в поддиректориях /glib-2.0/schemas/
директорий, заданных с помощью переменной окружения XDG_DATA_DIRS
, но в некоторых случаях файлы схем конфигурации приложений и их описаний могут храниться в домашней директории пользователя (в качестве примера можно привести плагины для GNOME Shell, файлы схем конфигурации, а также описания схем конфигурации которых хранятся в директориях ~/.local/share/gnome-shell/extensions/<имя@плагина>/schemas
). Для файлов описания схем конфигурации приложений должно использоваться расширение .gschema.xml
, а само имя файла конфигурации приложения по возможности должно соответствовать имени интерфейса приложения на шине сообщений DBus. В случае описания общесистемных параметров конфигурации имя файла должно быть записано в нижнем регистре.
Рассмотрим файл описания конфигурации org.gtk.GSettingsTest.gschema.xml
для нашего простейшего текстового редактора из предыдущих статей:
Листинг 1. Файл описания схемы конфигурации приложения
Загрузка скомпилированной схемы конфигурации приложения осуществляется на основе идентификатора схемы, указанного с помощью атрибута id
элемента schema
, а путь к схеме устанавливается с помощью атрибута path
этого же элемента. Если у схемы имеются дочерние схемы, они должны описываться в рамках элементов child
, причем их идентификаторы должны быть заданы с помощью атрибутов schema
, а имена - с помощью атрибутов name
. Сама дочерняя схема описывается аналогичным образом после родительской. После успешной загрузки схемы конфигурации приложения вы сможете открыть редактор dconf и перейти по заданному пути для изменения значений параметров конфигурации, описанных в рамках рассматриваемой схемы. Строковые значения могут быть локализованы с помощью gettext
, поэтому в рамках элемента schema
может использоваться дополнительный атрибут gettext-domain
. Каждый из параметров конфигурации приложения описывается в рамках элемента key
, причем тип параметра конфигурации, аналогичный используемым совместно с функцией printf()
спецификаторам форматирования, задается с помощью атрибута type
, а имя - с помощью атрибута name
. Также в рамках элемента key
могут использоваться элементы default
(значение по умолчанию), summary
(краткое описание параметра конфигурации), description
(развернутое описание параметра конфигурации), range
(диапазон целочисленных значений), choices
(список вариантов выбора), а также атрибут enum
для указания на отдельно описанное перечисление.
#cp org.gtk.GSettingsTest.gschema.xml /usr/share/glib-2.0/schemas/ #glib-compile-schemas /usr/share/glib-2.0/schemas/
Для проверки корректности установки схемы конфигурации приложения следует открыть редактор dconf и перейти по пути /org/gtk/GSettingsTest/
. В случае корректной установки схемы конфигурации приложения вы увидите список параметров, приведенный на иллюстрации ниже.
Рисунок 1. Параметры приложения, описанные в схеме конфигурации
На этом подготовку схемы конфигурации приложения можно считать оконченной. Самое время перейти непосредственно к рассмотрению методов класса GStettings
.
Продолжение статьи : 2. Осуществление доступа к значениям параметров конфигурации приложения.