# This file is part of Korman. # # Korman 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. # # Korman 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. # # You should have received a copy of the GNU General Public License # along with Korman. If not, see . import bpy from bpy.props import * class TextureOperator: @classmethod def poll(cls, context): return context.scene.render.engine == "PLASMA_GAME" and context.texture class TextureCollectionAddOperator(TextureOperator, bpy.types.Operator): bl_idname = "texture.plasma_collection_add" bl_label = "Add Item" bl_description = "Adds an item to the collection" group = StringProperty(name="Modifier", description="Attribute name of the PropertyGroup") collection = StringProperty(name="Collection", description="Attribute name of the collection property") name_prefix = StringProperty(name="Name Prefix", description="Prefix for autogenerated item names", default="Item") name_prop = StringProperty(name="Name Property", description="Attribute name of the item name property") def execute(self, context): mod = getattr(context.texture, self.group) collection = getattr(mod, self.collection) idx = len(collection) collection.add() if self.name_prop: setattr(collection[idx], self.name_prop, "{} {}".format(self.name_prefix, idx+1)) return {"FINISHED"} class TextureCollectionRemoveOperator(TextureOperator, bpy.types.Operator): bl_idname = "texture.plasma_collection_remove" bl_label = "Remove Item" bl_description = "Removes an item from the collection" group = StringProperty(name="Modifier", description="Attribute name of the PropertyGroup") collection = StringProperty(name="Collection", description="Attribute name of the collection property") index = IntProperty(name="Index", description="Item index to remove") def execute(self, context): mod = getattr(context.texture, self.group) collection = getattr(mod, self.collection) if len(collection) > self.index: collection.remove(self.index) return {"FINISHED"} else: return {"CANCELLED"}