我正在为GIMP编写一个python插件。该插件操纵图像,但撤消堆栈实际上并没有撤消我的插件所做的任何事情。
如何在此上下文中使用撤消工作?
例如,以下内容将RGBA图像中的第一个图块设置为透明。撤消堆栈将显示"示例"和" [基本图像]",但切换到基本图像不会撤消透明度。
#!/usr/bin/env python
from gimpfu import *
import struct
def do_python_fu_example(img, layer):
pdb.gimp_undo_push_group_start(img)
# example: set the first tile to completely transparent
tile = layer.get_tile(False, 0, 0)
for y in xrange(tile.eheight):
for x in xrange(tile.ewidth):
pixel = struct.unpack("BBBB",tile[x,y])
pixel = struct.pack("BBBB", pixel[0], pixel[1], pixel[2], 0)
tile[x,y] = pixel
pdb.gimp_undo_push_group_end(img)
layer.update(0,0,layer.width,layer.height)
layer.flush()
# end do_swap
register(
"python_fu_example",
"Example",
"Example",
"Example",
"Example",
"2016",
"Example...",
"RGBA", # Alternately use RGB, RGB*, GRAY*, INDEXED etc.
[
(PF_IMAGE, "img", "Input image", None),
(PF_DRAWABLE, "layer", "Input layer", None),
],
[],
do_python_fu_example, menu="<Image>/Colors")
main()