channels_merge.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. # Channels > Merge
  2. # (fr) Canaux > Fusionner
  3. # (es) Canales > Fusionar
  4. # (de) Kanäle > Zusammenführen
  5. from lazpaint import image, dialog, layer
  6. translation = dialog.select_translation(
  7. en = {"Current layer is not split": "Current layer is not split"},
  8. fr = {"Current layer is not split": "Le calque actuel n'est pas séparé"},
  9. es = {"Current layer is not split": "La capa actual no está dividida"},
  10. de = {"Current layer is not split": "Die aktuelle Ebene wird nicht geteilt"},
  11. )
  12. channels_id = None
  13. new_layer_index = None
  14. image.do_begin()
  15. if layer.get_registry("split-channel") is not None:
  16. layer_id = layer.get_registry("split-source-id")
  17. if image.contains_layer_id(layer_id):
  18. layer.select_id(layer_id)
  19. channels_id = layer.get_registry("split-channels-id")
  20. new_layer_index = image.get_layer_index() + 1
  21. else:
  22. channels_id = []
  23. for cur_layer_id in image.iterate_layers():
  24. cur_source_id = layer.get_registry("split-source-id")
  25. if cur_source_id == layer_id:
  26. channels_id.insert(0, cur_layer_id)
  27. if new_layer_index is None:
  28. new_layer_index = image.get_layer_index()
  29. else:
  30. layer_id = layer.get_id()
  31. channels_id = layer.get_registry("split-channels-id")
  32. new_layer_index = image.get_layer_index() + 1
  33. if channels_id is None:
  34. dialog.show_message(translation["Current layer is not split"])
  35. exit()
  36. layer.new(dialog.get_script_name())
  37. image.move_layer_index(image.get_layer_index(), new_layer_index)
  38. for cur_layer_id in reversed(channels_id):
  39. layer.select_id(cur_layer_id)
  40. image.move_layer_index(image.get_layer_index(), new_layer_index+1)
  41. layer.merge_over()
  42. new_layer_id = layer.get_id()
  43. if image.contains_layer_id(layer_id):
  44. layer.select_id(layer_id)
  45. layer_index = image.get_layer_index()
  46. layer_name = layer.get_name()
  47. layer_opacity = layer.get_opacity()
  48. image.move_layer_index(new_layer_index, layer_index+1)
  49. layer.select_id(layer_id)
  50. layer.remove()
  51. layer.select_id(new_layer_id)
  52. layer.set_name(layer_name)
  53. layer.set_opacity(layer_opacity)
  54. image.do_end()