;; layers-delete.scm -*-scheme-*- ;; Alan Horkan, April 2004. Copyright: Public Domain. ;; You may do whatever you like with this script but please do share ;; and try to let me know if you make any interesting changes. ;; ;; Idea from Adobe Photoshop 7.0 ;; Layer, Delete: Layer, Linked Layers, Hidden Layers. ; this script reuses parts of my layers-view script ; with better programming most of the code could be directly shared ; failed to get it working using a straight list ; looked at copy-visible.scm for inspiration: answer use an array. ; TODO learn more Scheme, read 'the Wizard book' again ;) ; ideally moving through the layer stack should be abstracted ; and the specific function passed in a parameter as needed ; again must read 'the wizard book' ; delete the current (drawable if it is a) layer (define (script-fu-layers-delete-layer image drawable) (gimp-image-undo-group-start image) ; drawable could be a channel, must check it. (if (= 1 (car (gimp-drawable-is-layer drawable))) (gimp-image-remove-layer image drawable) ) (gimp-displays-flush) (gimp-image-undo-group-end image) ) (define (script-fu-layers-delete-linked image drawable) (let* ( (layers (gimp-image-get-layers image)) (number-layers (car layers)) (layer-array (cadr layers)) ) (gimp-image-undo-group-start image) (set! layer-count 0) (while (< layer-count number-layers) (set! layer (aref layer-array layer-count)) ; delete all the linked layers (if (= TRUE (car (gimp-drawable-get-linked layer))) (gimp-image-remove-layer image layer) ) (set! layer-count (+ layer-count 1))) ) (gimp-image-undo-group-end image) (gimp-displays-flush) ) (define (script-fu-layers-delete-hidden image drawable) (let* ( (layers (gimp-image-get-layers image)) (number-layers (car layers)) (layer-array (cadr layers)) ) (gimp-image-undo-group-start image) ; delete all the hidden layers (set! layer-count 0) (while (< layer-count number-layers) (set! layer (aref layer-array layer-count)) (if (= (car (gimp-drawable-get-visible layer)) FALSE) (gimp-image-remove-layer image layer) ) (set! layer-count (+ layer-count 1))) ) (gimp-image-undo-group-end image) (gimp-displays-flush) ) ;; register/add the various items to the menus, ;; same menu positions and mnemonics used as Adobe Photoshop 7.0 (set! authors "Alan Horkan. ") (set! copyrights "Alan Horkan, 2004. Public Domain. ") (set! date "2004 04 02 UTC") (script-fu-register "script-fu-layers-delete-layer" ; mnemonics are all 'l', extremely fast keybinding to use. _"/Layer/Delete/_Layer" "Delete the current Layer only. " authors copyrights date "" ; strings set using variables, see above SF-IMAGE "Image" 0 SF-DRAWABLE "Drawable" 0 ) (script-fu-register "script-fu-layers-delete-linked" _"/Layer/Delete/Lin_ked Layers" "Delete all Linked Layers. " authors copyrights date "" ; strings set using variables, see above SF-IMAGE "Image" 0 SF-DRAWABLE "Drawable" 0 ) (script-fu-register "script-fu-layers-delete-hidden" _"/Layer/Delete/_Hidden Layers" "Delete all Hidden Layers. " authors copyrights date "" ; strings set using variables, see above SF-IMAGE "Image" 0 SF-DRAWABLE "Drawable" 0 )