[Devel] сохранение сеанса

Pavel Vaynerman vpashka на gmail.com
Пт Сен 17 22:01:47 MSD 2010


> Если честно, как-то не хочется делать из главного окна "Божественный
> класс", который "все сделает".
Но вы уже это сделали... Что всё через него, следовательно надо продолжать
поддерживать эту идеологию..
Если бы осцилографы у вас были самостоятельными окнами (приложениями), то 
конечно - это бы делали они сами..
---
Только я вот не пойму:
Я же не прошу в MainWindow сделать все механизмы сохранения и открытия сеанса.
Я видел это примерно так:

Пусть вы решили, что храните всё что нужно при помощи gconf.
Тогда:
(сохранение сеанса): 
MainWindow ловит сигнал завершения работы (это либо закрытие окна, либо меню 
Выход, ли бо ещё что-то). У него есть (или оно создаёт) экземпляр gconf
(я не знаю как gconf работает, но в любом случае для нас это будет класс
(обёртка) примерно с двумя функциями сохранить "ключ-заначение", загрузить..
щаз не важно..может и по другому).
MainWindow передаёт этот экземпляр всем "нуждающимся" в сохранении и они 
сохраняют свои данные.. Осцилографы - свои, какие-то виджеты - свои..
И конечно логика и сохраняемая структура - это внутренее дело этих виджетов.
И всё. 
Ну, для полноты, должно быть добавлено меню "Сохранить текущий сеанс"
(которое "принудительно" вызывает это механизм сохранения).. ну и "Загрузить 
сеанс"..


Теперь (восстановление сеансов):
либо автоматом последний сохранённый (либо через меню "Загрузить")..
MainWindow создаёт экземпляр класса gconf и передаёт его всем "нуждающимся" 
виджетам с просьбой "восстановить данные" и каждый виджет восстанавливает..
-------
Что касается осцилографов. Как я понимаю, есть некий "менеджер" осцилографов,
кторый их запускает.. У него конечно есть их список (ну или он может его 
вести). Соотвественно он когда ему передадут gconf, сохранит свою информацию
(в свой раздел) о том, сколько и каких открыто.. Соотвественно при загрузке,
восстановит...
---------
Реализация может выглядеть примерно так:
class SessionObject
{
	public:
		virtual bool save( gconf* )=0;
		virtual bool resotre( gconf* )=0;
}

И соотвественно все виджеты, каким надо наследуються от него..
--------

Это конечно всё пока "умозрительно"..

----------- следующая часть -----------
Вложение в формате HTML было удалено...
URL: <http://lists.etersoft.ru/pipermail/devel/attachments/20100917/d99d9147/attachment.html>


Подробная информация о списке рассылки Devel