Ресурсы: настройки пользователя и программы

Виджет, класс виджетов и приложение в целом имеют набор атрибутов которые программа может проверять и которые пользователь и программа могут задавать. Эти атрибуты реализованы как X ресурсы. Xlib содержит механизм, называемый менеджером ресурсов X (Xrm - X resource manager) чьим назначением является управление и выполнение запросов к базе данных ресурсов. Xt и Motif построены на основе Xrm для получения репозитория общедоступных атрибутов виджетов также как и приложений.

Xt поддерживает базу данных ресурсов которые применяются на нескольких уровнях:

Пользователь может определять ресурсы на любом из этих уровней посредством файлов ресурсов или командной строки используемой для запуска программы. Приложение также может определять ресурсы посредством файлов ресурсов.

Каждое приложение имеет имя и класс; каждый виджет внутри приложения имеет имя и класс; и каждый ресурс имеет имя и класс. Когда значения ресурсов предоставляются в файле или командной строке, пользователь или приложение указывают область действия значения ресурса определением ресурса соответственно его имени или класса. Например пользователь может указать что все ресурсы класса Background должны иметь специфичное значение для всех виджетов; или пользователь может указать что только ресурсы имеющие имя background внутри некоторой иерархии именованных виджетов должны иметь специфичное значение. Механиз определения позволяет значениям ресурса быть указанными для любого уровня.

Большинство классов виджетов Motif определяют набор ресурсов, по имени и классу, которые применимы для этих классов. Подклассы наследуют ресурсы суперкласса, кроме случаев, когда подкласс переопределяет определение ресурса суперкласса. Класс виджетов также определяет значения по умолчанию для каждого ресурса, используемые в случае когда пользователь и приложение не предоставили другого значения.

Когда приложение запускается, Xt конструирует и инициализирует базу данных значений ресурсов. Эта база данных получается из комбинации файлов ресурсов пользователя и приложения и значений из командной строки. Некоторые ресурсы в базе данных могу иметь различные значения в зависимости от дисплея или экрана на котором приложение запущено. Когда приложение создает виджет, Xt использует начальную базу данных в комбинации со значениями ресурсов по умолчанию класса виджета для предоставления значений ресурсов создаваемого виджета. Приложение может перекрыть эти значения предоставлением аргументов подпрограмме которая создает виджет. Оно также может установить значения ресурсов после создания виджета используя Xt функцию XtSetValues

Установка ресурсов является первичным методом посредством которого приложение изменяет атрибуты виджета. Тем не менее, приложение должно стараться не переопределять определения пользователя для большого числа ресурсов управляющих такими характеристиками как визуальное представление и правила определения как виджет получает клавиатурный фокус. В общем, приложение должно устанавливать только те ресурсы, которые необходимы для правильного функционирования программы. Приложение должно указывать предпочтения для значений других ресурсов в файле умолчаний приложения. Xt читает этот файл когда приложение запускается, но пользователь может перекрыть значения указанные там.

Процесс создания начальной базы данных ресурсов более подробно обсуждается в Главе 3.