Конвенцията за документация/наименуване на PDB е доста назад, ако се опитвате да правите неща с python в gimp и е трудно да разберете. В крайна сметка намерих gimp.GroupLayer
(PDB списъци gimp-layer-group-new
), за да създам нова група слоеве. Как да вмъкнете това в изображението и то да се покаже като група слоеве?
Опитвал съм неща като това:
img = gimp.image_list()[0]
gl = gimp.GroupLayer(img, "Should be a folder", 1, 1, 0)
img.insert_layer(gl)
Първото нещо, което наистина ме обърква, е, че очаква да посоча височина и ширина за GroupLayer, въпреки че той просто трябва да действа като контейнер за други действителни слоеве (очаква това, защото наследява от Layer
, но това е друг въпрос) .
Истинският проблем е, че когато вмъкна новосъздадения GroupLayer
, той се показва като нормален слой (няма папка в иконата на слоя). Проверих това, като направих два слоя, един нормален слой и един групов слой. Добавям груповия слой към изображението и след това се опитвам да добавя нормалния слой към изображението с груповия слой като родител:
img = gimp.image_list()[0]
gl = gimp.GroupLayer(img, "Group Layer", 1, 1, 0)
l = gimp.Layer(img, "Real Layer", 1, 1, 0)
img.insert_layer(gl)
img.insert_layer(l, gl) # gl should be the parent
Всичко, което получавам, е грешката:
Calling error for procedure 'gimp-image-insert-layer':
Item 'group layer #1' (34) cannot be used because it is not a group item`
Някой друг разбрал ли е това?
АКТУАЛИЗАЦИЯ
от Жоао С. О. Буено
Току-що поправих този проблем в gimp-git. Frgom gimp 2.8.12 включен,
извикването на gimp.GroupLayer работи с подписа gimp.GroupLayer(img, [name="", opacity=100.0, mode=gimp.NORMAL_MODE])
.