Инструменты пользователя

Инструменты сайта


Перевод этой страницы:

ru:sonix:configurator

Это старая версия документа!


Configurator

Редактор для изменения конфигурации установки. Изменение конфигурации, в зависимости от степени изменений может производится как программистами, так и пользователями.

Есть два варианта программы:

  • С ограниченной функциональностью (для пользователей)
  • С полной функциональностью (для разработчиков)

Пользовательский вариант

Представляет собой таблицу, которая позволяет изменять определенные параметры для пользователей.

Параметры для редактирования устанавливаются разработчиками.

При изменении структуры конфигурационного файла разработчикам, требуется проверить параметры в пользовательской версии программы

Таблица позволяет изменять данные, в зависимости от типа.

Вариант для разработчиков

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

Данная программа отображает:

  • Таблицу с вынесенными данными (для быстрого поиска параметров)
  • Дерево объектами для конфигурационного файла
  • Дерево со структурами, для конфигурационного файла (для отладки)

При работе деревом объектов есть возможность удалять объект из корня, копировать, добавлять и удалять объект вектора.

Кроме изменения данных при работе с деревом, есть возможность добавить параметр для пользователей и задать ему имя.

В варианте для пользователей, кроме редактирования, можно изменить имя параметра, или удалить его.

Структура конфигурационного файла

В конфигурационном файле есть следующие поля:

  • key — имя поля
  • 'value' — значение поля (value)
  • 'type' — тип поля (type)
  • 'list' — обозначает вектор

Переменная value, может принимать широкий диапазон значений, от целого, или строки, до списка, или словаря.

Переменная type, либо принимает обычный тип (int, double, string, bool), либо указывает на структуру (обычную, или с вектором)

SimpleItem

Представляет собой обычное поле, в которое записано какое-либо значение. В конфигурационном файле приведено к следующему виду:

 key: {'value': value, 'type': type}

ListItem

Представляет собой вектор внутри структуры, записанный как:

 '__list__': [{ }]

ObjectItem

Структура, отображаемая в конфигурационном файле, в виде:

 key: {'type': type, 'value': {}}

Где type содержи название структуры (с указанием на наличие вектора внутри)

structItem

Используется для работы со структурами, вместо ObjectItem, так как содержит список дочерних полей и структур, для более оперативного поиска данных.

Правила построения

Представлен упрощенный, вероятно не полный вид правил для конфигурационного файла

Можно выделить несколько правил записи конфигурационного файла:

  • В корне всегда находится ObjectItem
  • ListItem[{SimpleItem}, {ObjectItem}]
  • ObjectItem{SimpleItem, ListItem}

Обработка графа структур

Структуры, находятся в конфигурационном файле под ключом 'idl'. Все структуры располагаются в корне и содержат список полей, с данными и структурами.

При чтении конфигурации создается список всех структур, в объект (structItem), для каждой структуры записываются имя, и список дочерних полей.

Дочерние поля проверяются на наличие структур, и при необходимости, в список дочерних структур добавляется ссылка из списка всех структур, а в дочернюю структуру добавляется ссылка на родительскую.

Далее строится дерево объектов, и структуры линкуются.

После линковки структур проводится удаление повторяющихся структур и структур без родителей и объектов. После удаления структур без объектов, граф строится с начала, до тех пор, пока при построении графа ни будет удалено ни одной структуры.

Построение дерева объектов

Дерево объектов строится с учетом правил построения конфигурационного файла, с некоторыми отличиями:

  • Все SimpleItem записываются ObjectItem
  • В ObjectItem, исходя из типа добавляется ссылка на структуру, а в структуру добавляется ссылка на объект
  • В ListItem просматриваются дочерние поля, при нахождении поля 'name' в качестве имени используется значение данного поля, в противном случае используется 'list(name not found)'

Работа с данными

Работа с данными осуществляется с помощью изменения словаря, который читается из файла

У каждого объекта есть ссылка на соответствующий объект в словаре с конфигурацией, в зависимости от типа объекта выполняются различные действия:

  • SimpleItem - определяется тип, и дается возможность изменить значение по указанному типу
  • ListItem - копируется или удаляется объект словаря
  • ObjectItem - при наличии вектора, из структуры генерируется объект словаря, со значениями по умолчанию и добавляется в словарь
  • Корневой элемент - удаление объекта из словаря
При изменении структуры, происходит построение графа структур и дерева объектов из измененного словаря с нуля
ru/sonix/configurator.1391087919.txt.gz · Последнее изменение: (внешнее изменение)