If you use other tools such as khalim19’s Export Layers plugin that leverage Layer names, you may often need the facility to search and replace in layer names. This plugin should be of assistance..
Here’s the tool:
1. Copy this code into a text file:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
#!/usr/bin/env python # search_replace_layer_names # Ver1.1 # Created by stigzler # Comments directed to magoarcade.com # Credit to xenoid, SatckOverflow for help # # License: GPLv3 # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY# without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # To view a copy of the GNU General Public License # visit: http://www.gnu.org/licenses/gpl.html # # # ------------ #| Change Log | # ------------ # V1.0: Initial release. # V1.1: Added Group/Layer rename toggles + layer start. import math import string import re import traceback from gimpfu import * from array import array def python_search_replace_layer_names(image, layer, searchterm, replaceterm, applyvisible, casesensative, startlevel,renamegroups,renamelayers) : pdb.gimp_image_undo_group_start(image) try: if casesensative == 0: searchtermRegEx = re.compile(re.escape(searchterm),re.IGNORECASE) else: searchtermRegEx = re.compile(re.escape(searchterm)) renameLayers(image,startlevel,searchtermRegEx,replaceterm,applyvisible,renamegroups,renamelayers) except Exception as e: trace(e.args[0]) gimp.message(e.args[0]+':'+traceback.format_exc()) pdb.gimp_image_undo_group_end(image) pdb.gimp_displays_flush() def renameLayers(parent,level,searchtermRegEx,replaceterm,applyvisible,renamegroups,renamelayers): for pos,layerOrGroup in enumerate(parent.layers): if (applyvisible == 0) or (layerOrGroup.visible != 0): #if isinstance(layerOrGroup,gimp.GroupLayer) and (renamegroups == 1) : if isinstance(layerOrGroup,gimp.GroupLayer) : if (renamegroups == 1) : layerName = searchtermRegEx.sub(replaceterm, layerOrGroup.name) layerOrGroup.name = layerName elif isinstance(layerOrGroup,gimp.Layer) and (renamelayers == 1) : layerName = searchtermRegEx.sub(replaceterm, layerOrGroup.name) layerOrGroup.name = layerName if isinstance(layerOrGroup,gimp.GroupLayer): renameLayers(layerOrGroup,level+1,searchtermRegEx,replaceterm,applyvisible,renamegroups,renamelayers) register( "search-replace-layer-names", "Search/Replace in Layer Names...", "Search/Replace in Layer Names...", "stigzler", "stigzler", "2020", "Replace Layer Names...", "*", [ (PF_IMAGE,"image", "Image:", None), (PF_DRAWABLE, "drawable", "Drawable:", None), (PF_STRING, "searchterm", "Search for Term:", "SearchTerm"), (PF_STRING, "replaceterm", "Replace With:", "ReplaceWith"), (PF_TOGGLE, "applyvisible", "Only Apply to visible layers: ", 0), (PF_TOGGLE, "casesensative", "Case sensative:", 0), (PF_SPINNER, "startlevel", "Start Level:", 0, (0,100000,1)), (PF_TOGGLE, "renamegroups", "Rename Groups:", 1), (PF_TOGGLE, "renamelayers", "Rename Layers:", 1) ], [], python_search_replace_layer_names, menu="<Image>/Edit/Search and Replace/" ) main() |
2. Save the text file to: C:\Program Files\GIMP 2\lib\gimp\2.0\plug-ins (or your equivalent path)
3. Access the tool via: Edit > Search and Replace > Replace Layer Names
Leave a Reply