GIMP Python-fu вложенные групповые слои
Я не могу найти какие-либо методы для добавления группового слоя к другому групповому слою где-нибудь в интерфейсе python-fu.
Я также пытался найти методы для объектов Gimp.Layer, но безуспешно.
Как добавить групповой слой в другой групповой слой с помощью python-fu?
1 ответ
Поддержка групп слоев в Python-fu была добавлена в последние минуты перед выпуском 2.8 и является довольно неполной.
Таким образом, единственный способ создать правильную группу слоев в GIMP 2.8 - использовать вызов pdb:
group = pdb.gimp_layer_group_new(img)
group.name = "my group"
(Использование вызова img.GroupLayer в gimp 2.8 содержит ошибки - должно быть в будущем)
Если у вас есть группа, вы можете вставить ее в любое место на изображении, используя
pdb.gimp_image_insert_layer(<img>, <layer>, <parent>, <position>)
Как в:
>>> img = gimp.Image(640, 480, RGB)
>>> pdb.gimp_display_new(img)
<display>
>>> parent_group = pdb.gimp_layer_group_new(img)
>>> child_group_1 = pdb.gimp_layer_group_new(img)
>>> child_group_2 = pdb.gimp_layer_group_new(img)
>>> grand_child_group = pdb.gimp_layer_group_new(img)
>>> img.add_layer(parent_group, 0)
>>> pdb.gimp_image_insert_layer(img, child_group_1, parent_group,0)
>>> pdb.gimp_image_insert_layer(img, child_group_2, parent_group,1)
>>> pdb.gimp_image_insert_layer(img, grand_child_group, child_group_1,0)
>>> l1 = gimp.Layer(img, "test", 320,240)
>>> pdb.gimp_image_insert_layer(img,l1, grand_child_group,0)
Так что, действительно, существует эта крайняя асимметрия API, в которой вы добавляете слои и группы к изображению с помощью метода "add_layer" на родительском элементе, но должны добавить любой из группы слоев, вы должны перейти к pdb.gimp_image_insert_layer вызов.
обновление (февраль /2015) - ошибка в gimp.GroupLayer() исправлена в git GIMP и будет работать правильно с GIMP 2.8.16 и далее. Теперь все, что нужно сделать, чтобы добавить новый групповой слой:
>>> g = gimp.GroupLayer(img)
>>> pdb.gimp_image_insert_layer(img, g, None, 0)