Наши партнеры

UnixForum





Библиотека сайта 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 для указания на отдельно описанное перечисление.

Команды для установки описания схемы конфигурации приложения и компиляции схемы конфигурации приложения на его основе приведены ниже (для установки и компиляции требуются привилегии пользователя root):
#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. Осуществление доступа к значениям параметров конфигурации приложения.