OberonCore https://forum.oberoncore.ru/ |
|
Как правильно копировать? https://forum.oberoncore.ru/viewtopic.php?f=23&t=1669 |
Страница 1 из 1 |
Автор: | Иван Горячев [ Среда, 24 Июнь, 2009 07:20 ] |
Заголовок сообщения: | Как правильно копировать? |
Коллеги, вопрос. Имеется (текстовый) документ, в котором лежит несколько групп разных view с одной моделью для каждой группы. Требуется скопировать часть из этих отображений в новый документ, причём в результате должны получиться группы со своими моделями. Копирование идёт через буфер обмена стандартными средствами ББ. Как? Каркас ББ при копировании использует на модели Stores.CopyOf(..., deep), в результате группы отображений распадаются на одиночек с "персональными" моделями. |
Автор: | Info21 [ Среда, 24 Июнь, 2009 08:30 ] |
Заголовок сообщения: | Re: Как правильно копировать? |
Иван Горячев писал(а): Каркас ББ при копировании использует на модели Stores.CopyOf(..., deep) ... На вопрос ответить не могу -- скорее всего, придется извращаться.Но скажу, что тут некая общая проблема в каркасе ББ: Не прояснена работа с доменами и вообще модуль Stores -- который по идее независимый и довольно фундаментальный по сути. Начиная с того, что в нем нет, например, средства рассылки сообщений по Store'ам домена (независимо от существования вьюшек как идеи). Или перечисления Store'ов домена. Плюс, само понятие домена как-то привязано к вьюшкам. Ясно, откуда они (домены) пошли, но они не абстрагированы хорошенько. А надо. Связка Store+Domain -- фундаментальна. Если прояснить Stores в этом отношении, то это даст основу для прояснения механизмов рассылки сообщений и для вьюшек -- ну и ответов на вопросы типа заданного. |
Автор: | Иван Горячев [ Среда, 24 Июнь, 2009 08:37 ] |
Заголовок сообщения: | Re: Как правильно копировать? |
К сожалению что-либо сделать со Stores невозможно - там всё прибито гвоздями, прикручено болтами и заварено. А насчёт извращаться - всю голову сломал |
Автор: | Info21 [ Среда, 24 Июнь, 2009 10:57 ] |
Заголовок сообщения: | Re: Как правильно копировать? |
Иван Горячев писал(а): К сожалению что-либо сделать со Stores невозможно ... Да ла-а-адно, спилим болты, если что
|
Автор: | Иван Кузьмицкий [ Среда, 24 Июнь, 2009 11:26 ] |
Заголовок сообщения: | Re: Как правильно копировать? |
Наверное, такая стратегия копирования неслучайна и выбрана, скорее всего, для простоты. Ведь при копировании вьюшек и их моделей в другой домен, нужно либо распатронивать связки на отдельные модели, либо восстанавливать граф "модель - вьюшки". Восстановление графа, мне кажется, является более частным случаем, т.к. вариантов восстановления масса. Поэтому и сделали как проще. Выходом из ситуации мне видится ручное восстановление после копирования, по каким-нибудь идентификаторам, заложенным в модель и вьюхи перед копированием. |
Автор: | Иван Горячев [ Четверг, 25 Июнь, 2009 03:26 ] | |||
Заголовок сообщения: | Re: Как правильно копировать? | |||
Голову я таки сломал. Итак: Выяснилось, что Views.CopyOf вызывает метод CopyFromModelView только если он переопределён. Иначе - CopyFromSimpleView, причём независимо от наличия у отображения модели. Так что эту часть обмануть легко. А для "одноразового" копирования пришлось соорудить простенький модуль (прилагается). Единственная проблема осталась во внедрении его в среду. С меню всё просто: Код: "#System:Menu.Edit.Copy" "C" "BbtCopy.Begin;HostCmds.Copy;BbtCopy.End" "HostCmds.CopyGuard" А вот реагирование на Ctrl+Shift и прочее жёстко зашито в HostMenus. Обидно - это мои любимые сочетания клавиш
|
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |