3. Отмена действий

Почти все вносимые в изображения изменения могут быть отменены. Вы можете отменить последнее действие, выбрав в главном меню ПравкаОтменить, но эта операция применяется так часто, что стоит запомнить комбинацию клавиш Ctrl+Z.

Сама отмена может быть отменена. После отмены действия вы можете вернуть его, выбрав в главном меню пункт ПравкаВернуть, или с использованием клавиши быстрого доступа, Ctrl+Y. Часто это полезно при оценке эффекта какого-либо действия с помощью его неоднократной отмены и повтора. Обычно это происходит очень быстро, без дополнительного расхода ресурсов или изменения истории действий, поэтому никакого вреда в этом нет.

[Внимание] Внимание

Если вы отмените одно или несколько действий и затем произведёте какую-либо операцию кроме отмены и возвращения, возможности вернуть те действия больше не будет: они потеряны навсегда. Решением проблемы является дублирование изображения и работа с копией. (При этом не выполняйте пробные операции с оригиналом, поскольку история действий при дублировании не копируется.)

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

Действие отмены выполняется для каждого конкретного изображения: «история действий» является одним из компонентов изображения. В этих целях GIMP выделяет определённый объём памяти для каждого изображения. Увеличить или уменьшить объём выделяемой памяти можно в «Параметрах» в разделе Системные ресурсы. Здесь присутствуют две важные переменные: минимальное число уровней отмены, которое GIMP будет поддерживать вне зависимости от того, сколько эти уровни будут потреблять памяти, и максимальное количество памяти для отмены, при превышении которого GIMP начнёт удалять самые старые элементы в истории отмены действий.

[Примечание] Примечание

Хотя история действий является компонентом изображения, она не сохраняется вместе с ним в собственный формат GIMP с расширением XCF (хотя все остальные свойства изображения сохраняются). Когда изображение будет открыто вновь, история действий будет пуста.

Реализация истории действий в GIMP довольно сложна. Многие операции (такие как изменение видимости слоя) требуют очень мало памяти для возможной отмены, поэтому вы можете выполнить большое их количество до того, как они начнут пропадать из истории действий. Некоторые операции (и снова изменение видимости слоя) являются сжатыми, поэтому выполнение их несколько раз подряд производит лишь одну точку в истории действий. Тем не менее, иные операции потребляют много памяти для возможной отмены. В качестве примера можно привести практически любой фильтр: поскольку фильтры реализованы как расширения, ядро GIMP не может доподлинно узнать, что они изменили. Таким образом, не существует иного способа отменить такое действие кроме как запомнить содержимое затронутого слоя до и после операции. Вы можете выполнить ограниченное количество таких операций прежде чем они будут удалены из истории действий.

3.1. Неотменяемые операции

Большинство действий, изменяющих изображение, могут быть отменены. Действия, не изменяющие изображения, как правило, отменить невозможно. Такие операции, как сохранение изображения в файл, дублирование изображения, копирование части изображения в буфер обмена и т.д. Сюда также относятся операции, включающие в себя воздействие на отображение без изменения данных изображения. Наиболее существенным примером является масштабирование отображения. Тем не менее, существуют и исключения: переключение видимости быстрой маски может быть отменено, если между переключениями не изменялись данные изображения.

Существует несколько важных действий, которые изменяют изображение, но не могут быть отменены.

Закрытие изображения

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

Возвращение изображения

«Возвращение» означает перезагрузку изображения из файла. GIMP реализует это с помощью закрытия изображения и создания нового изображения, вследствие чего теряется история действий. По этой причине, если изображение подверглось изменениям, GIMP всегда будет спрашивать у вас подтверждения перед выполнением возвращения.

«Фрагменты» действий

Некоторые инструменты требуют выполнения комплексного набора манипуляций перед их применением, но позволяют отменить лишь целые операции вместо отдельных элементов. Например, «Ножницы» позволяют создавать закрытые контуры щелчками по различным точкам изображения с последующим щелчком внутри контура для создания выделения. Вы не можете отменить отдельные щелчки: отмена после завершения вернёт вас к начальной точке. В другом примере, когда вы работаете с инструментом «Текст», вы не можете отменить отдельные буквы, смену шрифта и т.д.: отмена после завершения операций удалит только что созданный текстовый слой.

Фильтры и другие производимые расширениями или сценариями действия могут быть отменены, как и реализовываемые ядром GIMP действия, но при условии правильного использования ими функций отмены GIMP. Если код неправильный, расширение потенциально может испортить историю действий, так что не только действия расширения, но и предыдущие действия более не смогут правильно отменяться. Все поставляемые с GIMP сценарии и расширения достоверно работают правильно, однако очевидно, что нет гарантий для расширений, полученных из других источников. Также, даже если код является правильным, отмена расширения во время его работы может испортить историю действий, поэтому лучше этого избегать, если только вы случайно не сделали что-то, что может привести к плохим последствиям.