OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Среда, 31 Май, 2023 07:29

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




Начать новую тему Ответить на тему  [ Сообщений: 324 ]  На страницу Пред.  1 ... 13, 14, 15, 16, 17
Автор Сообщение
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Среда, 31 Май, 2023 05:31 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 810
короче. `StdDocuments.DuplicateAs()` должна выглядеть вот так:
Код:
   (* utility procedure to create duplicated document; will not record the changes in undo buffer *)
   PROCEDURE DuplicateAs* (src: Documents.Document; dir: Documents.Directory): Documents.Document;
   VAR
      l, t, r, b: INTEGER;
      res: Documents.Document;
      seq: Sequencers.Sequencer;
      s: ANYPTR;
   BEGIN ASSERT(src # NIL, 20);
      IF dir = NIL THEN dir := Documents.dir END;
      (* do not record document changes; uses undocumented flag *)
      IF src.Domain() # NIL THEN
         s := src.Domain().GetSequencer();
         IF s # NIL THEN WITH s: Sequencers.Sequencer DO seq := s END WITH ELSE seq := NIL END;
         IF seq # NIL THEN seq.BeginModification(3(*notRecorded*), NIL) END
      ELSE seq := NIL
      END;
      src.PollRect(l, t, r, b);
      res := dir.New(Views.CopyOf(src.ThisView(), Views.shallow), r - l, b - t);
      res.SetRect(l, t, r, b);
      res.ThisController().SetOpts(src.ThisController().opts);
      IF seq # NIL THEN seq.EndModification(3(*notRecorded*), NIL) END;
      RETURN res
   END DuplicateAs;

и тогда хак в `StdCmds.SaveWindow()` можно смело аннигилировать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Среда, 31 Май, 2023 06:01 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 810
Иван Денисов писал(а):
И ещё сделать, чтобы форма при вызове команды "открыть как инструментальный диалог", открывалась в отдельном окне.
лично я привинтил новый флаг `Views.alwaysDetached`, и передаю его в `StdApi.OpenAuxDialog()`. флаг в любом случае полезный, потом пригодится.

p.s.: если что — я это всё только что сделал, когда ваши сообщения прочитал. так что я не зажал багфиксы, а только что написал и сразу поделился. ;-)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Среда, 31 Май, 2023 06:04 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 810
p.s.: `DuplicateAs()` НАДО поменять как я написал. потому что иначе любой экспорт документа будет гадить в undo, а это неправильно, и версия 1 среды так не делает. а если поменять — то всё магически станет как раньше. и в `StdWindows` перестать таскать копипасту, а взять опубликованый `StdDocuments.DuplicateAs()` — всё равно там StdDocuments импортируется, нет смысла делать копипасту, к тому же ещё и неправильную.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Среда, 31 Май, 2023 06:17 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 810
и да, я вообще унёс `DuplicateAs()` в `Documents`. вещь полезная, много где пригождается, и ничего специфического из `StdDocuments` не использует. зато если её сделать стандартным API — то мы больше не облажаемся так с пересозданием документов, а будем просто использовать уже имеющийся и стандартный механизм.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 324 ]  На страницу Пред.  1 ... 13, 14, 15, 16, 17

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


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

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


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

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