OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 21:08

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Как правильно копировать?
СообщениеДобавлено: Среда, 24 Июнь, 2009 07:20 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
Коллеги, вопрос.

Имеется (текстовый) документ, в котором лежит несколько групп разных view с одной моделью для каждой группы. Требуется скопировать часть из этих отображений в новый документ, причём в результате должны получиться группы со своими моделями. Копирование идёт через буфер обмена стандартными средствами ББ.

Как?

Каркас ББ при копировании использует на модели Stores.CopyOf(..., deep), в результате группы отображений распадаются на одиночек с "персональными" моделями.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно копировать?
СообщениеДобавлено: Среда, 24 Июнь, 2009 08:30 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Иван Горячев писал(а):
Каркас ББ при копировании использует на модели Stores.CopyOf(..., deep) ...
На вопрос ответить не могу -- скорее всего, придется извращаться.

Но скажу, что тут некая общая проблема в каркасе ББ:
Не прояснена работа с доменами и вообще модуль Stores -- который по идее независимый и довольно фундаментальный по сути.

Начиная с того, что в нем нет, например, средства рассылки сообщений по Store'ам домена (независимо от существования вьюшек как идеи). Или перечисления Store'ов домена.
Плюс, само понятие домена как-то привязано к вьюшкам. Ясно, откуда они (домены) пошли, но они не абстрагированы хорошенько. А надо. Связка Store+Domain -- фундаментальна.

Если прояснить Stores в этом отношении, то это даст основу для прояснения механизмов рассылки сообщений и для вьюшек -- ну и ответов на вопросы типа заданного.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно копировать?
СообщениеДобавлено: Среда, 24 Июнь, 2009 08:37 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
К сожалению что-либо сделать со Stores невозможно - там всё прибито гвоздями, прикручено болтами и заварено.
А насчёт извращаться - всю голову сломал :(


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно копировать?
СообщениеДобавлено: Среда, 24 Июнь, 2009 10:57 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Иван Горячев писал(а):
К сожалению что-либо сделать со Stores невозможно ...
Да ла-а-адно, спилим болты, если что :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно копировать?
СообщениеДобавлено: Среда, 24 Июнь, 2009 11:26 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Наверное, такая стратегия копирования неслучайна и выбрана, скорее всего, для простоты. Ведь при копировании вьюшек и их моделей в другой домен, нужно либо распатронивать связки на отдельные модели, либо восстанавливать граф "модель - вьюшки". Восстановление графа, мне кажется, является более частным случаем, т.к. вариантов восстановления масса. Поэтому и сделали как проще.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно копировать?
СообщениеДобавлено: Четверг, 25 Июнь, 2009 03:26 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
Голову я таки сломал. Итак:

Выяснилось, что Views.CopyOf вызывает метод CopyFromModelView только если он переопределён. Иначе - CopyFromSimpleView, причём независимо от наличия у отображения модели. Так что эту часть обмануть легко. А для "одноразового" копирования пришлось соорудить простенький модуль (прилагается). Единственная проблема осталась во внедрении его в среду. С меню всё просто:
Код:
   "#System:Menu.Edit.Copy"   "C"   "BbtCopy.Begin;HostCmds.Copy;BbtCopy.End"   "HostCmds.CopyGuard"

А вот реагирование на Ctrl+Shift и прочее жёстко зашито в HostMenus. Обидно - это мои любимые сочетания клавиш :(


Вложения:
Lists.odc [3.08 КБ]
Скачиваний: 714
Copy.odc [2.51 КБ]
Скачиваний: 712
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB