[Devel] [Ошибка 5939] Сделать глобальные настройки
Evgeny Sinelnikov
sin на etersoft.ru
Пт Сен 3 16:36:10 MSD 2010
3 сентября 2010 г. 11:29 пользователь <bugs на lists.etersoft.ru> написал:
> http://bugs.etersoft.ru/show_bug.cgi?id=5939
>
>
> Илья Шпигорь <shpigor на etersoft.ru> changed:
>
> What |Removed |Added
> ----------------------------------------------------------------------------
> Hours Worked| |0.5
> AssignedTo|yv на etersoft.ru |mdevaev на etersoft.ru
> Severity|minor |major
> Status|ASSIGNED |NEW
> Priority|P4 |P3
>
>
>
>
> --- Comment #5 from Илья Шпигорь <shpigor на etersoft.ru> 2010-09-03 11:29:26 ---
> Насколько понимаю глобальные настройки
> определяют не только поведение GUI, но и
> что-то еще (возможно порядок чистки логов,
> временных файлов, БД).
>
Ну, gconf к GTK не привязан. Он использует то же, что и большинство
наших сервисных приложений: libsigc, libglibmm, libglib, libgobject.
> В таком случае стоит сделать отдельное GUI
> приложение для работы с этими настройками.
> В качестве эксперимента предлагаю сделать
> его на python'е с использованием Qt (для оценки
> его возможностей по сравнению с Gtk).
>
экспериментировать с QT нет никакого смысла - там есть свои механизмы
сохранения настроек:
http://doc.qt.nokia.com/4.6/qsettings.html#details
Делать это отдельным приложений, в принципе, нет никакой сложности. Но
я не понимаю зачем.
Давайте перечислим все настройки, какие нам нужны. Исходить будем из
задачи восстановления сеанса запущенного приложения. Я вижу слежующий
список:
- расположение "окна управления";
- расположение "журнала сообщений";
- параметры осциллографа, по умолчанию:
- размер временных файлов осциллографа;
- циклическая перезапись каналов осциллографа;
- запись всех каналов осциллографа;
- расположение и настойки параметров отдельных окон осциллографа,
список отображаемых каналов (собственно датчики, порядок их
отображения и цвета).
Какие ещё настройки видятся необходимыми?
> Задача:
> На данный момент нужен общий каркас -
> чтение неких тестовых числовых параметров
> из gconf, их отображение в графическом
> интерфейсе, изменение и сохранение их
> обратно.
>
Я уже приводил пример. Давайте сделаю отдельный собираемый вариант и
выложу в git.
> При этом надо не забывать, что GUI стенда
> тоже должно иметь доступ к этим настройкам.
> Поэтому предлагаю также разработать класс
> на C++ для их чтения.
>
Класс для чтения настроек уже написан и находится в библиотеке
libgconfmm2. Вот пример его использования:
http://people.gnome.org/~newren/tutorials/developing-with-gnome/html/apd.html
Собственно вот основной интерфейс для работы с натройками:
http://www.gtkmm.org/gnomemm2/reference/html/classGnome_1_1Conf_1_1Client.html
Вот вариант чтения настройки:
// Determine whether button should start activated or not
d_old_setting =
d_conf_client->get_bool("/apps/metacity/general/reduced_resources");
d_checkbutton->set_active(d_old_setting);
Самое главное - это разработать схему. То есть представить как будут
храниться настройки? Какими типами данных они будут представлены?
Схемы описываются в специальных файлах, которые расположены в
каталоге: /etc/gconf/schemas/
Читать и писать зарегистрированные конфиги просто. Самое главное, что
нужно понять - это как реализуются списки настроек динамических
объектов. Но не стоит беспокоится - это уже давно решённая задача. Все
апплеты - это динамические объекты.
Для сохранения динеамически создаваемых объектов (как у нас окна
осциллогрфа), создаются отдельные подкаталоги в иерархии настроек. Вот
пример у меня на сервере:
[sin на server ~]$ ls ~/.gconf/apps/panel/applets/
clock_screen0 %gconf.xml mixer_screen0
show_desktop_button_screen0 window_list_screen0
fast_user_switch_screen0 indicator_applet_screen0
notification_area_screen0 trashapplet_screen0
workspace_switcher_screen0
В нашем случае будет что-то вроде:
$ ls ~/.gconf/apps/standpm/oscillograph/
%gconf.xml oscillograph0 oscillograph1
И вот структуру этих подкаталогов и нужно, для начала, определить. Для
этого нужно уточнить те настройки, которые я перечислил выше.
--
Sin (Sinelnikov Evgeny)
Подробная информация о списке рассылки Devel