OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 19 Апрель, 2024 05:20

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




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Отмена после сохранения
СообщениеДобавлено: Воскресенье, 24 Сентябрь, 2006 07:01 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Подскажите, пожалуйста, как разрешить отмену после сохранения. Ну, то есть, чтобы после сохранения на диск документ не забывал историю своих правок, и можно было вернуться по Ctrl+Z?

У меня сохранение при вводе текста уже на уровне автоматических рефлексов. Получается, что я сохраняюсь довольно часто, и возможность отмены при этом иногда очень жалко бывает терять.

Я понимаю, что при этом с каждым документом будет связан все больший объем памяти для хранения всех этих операций. Отсюда второй вопрос: можно ли искусственно ввести ограничение. Например, не больше столько-то операций на документ? Или не более такого-то объема памяти под буфера "undo". Этот вопрос встанет еще и в связи с возможными перспективами введения автоматического сохранения.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отмена после сохранения
СообщениеДобавлено: Вторник, 03 Февраль, 2009 07:21 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Александр Ильин писал(а):
Подскажите, пожалуйста, как разрешить отмену после сохранения. Ну, то есть, чтобы после сохранения на диск документ не забывал историю своих правок, и можно было вернуться по Ctrl+Z?
Давным-давно нашёл я для себя ответ на этот вопрос, да вот забыл поделиться с остальными. Решение находится в Windows.SaveWindow. Нужно заменить
Код:
               IF w.seq.Dirty() THEN
                  w.seq.BeginModification(Sequencers.notUndoable, NIL);
                  w.seq.EndModification(Sequencers.notUndoable, NIL);   (* clear sequencer *)
                  w.seq.SetDirty(FALSE)
               END;
на
Код:
               IF w.seq.Dirty() THEN
                  (* Alexander Iljin: don't clear undo buffer on save *)
                  w.seq.SetDirty(FALSE)
               END;
Т.е. удалить или закомментировать две строки (я их свернул в складку). После этого сохранение документа не приводит к очистке буфера отмены. Побочный эффект такой: отмена после сохранения не помечает документ изменённым. Соответственно, если вы сохранили, отменили и снова сохранили, то последнее сохранение не будет выполнено, т.к. пункт меню File - Save и комбинация Ctrl+S не доступны. Чтобы это изменить, нужно пересмотреть реализацию Windows.StdSequencer.Dirty.

Вариант временного решения - убрать SetDirty (FALSE) в предыдущем куске кода. Тогда сохранение возможно, но нет индикации того, что файл был сохранён.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отмена после сохранения
СообщениеДобавлено: Вторник, 03 Февраль, 2009 08:26 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Два года и 4 месяца между сообщениями выше : )


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отмена после сохранения
СообщениеДобавлено: Вторник, 03 Февраль, 2009 12:40 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
Александр Ильин писал(а):
Вариант временного решения...
При Undo выставлять w.seq.SetDirty(TRUE)

Минусы тоже есть, но, вроде, ничего фатального. Самое главное потом будет - после появления правильного решения не забыть всё всюду поотменять.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

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


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

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


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

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