diff options
Diffstat (limited to 'release/scripts/templates_py/ui_previews_custom_icon.py')
-rw-r--r-- | release/scripts/templates_py/ui_previews_custom_icon.py | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/release/scripts/templates_py/ui_previews_custom_icon.py b/release/scripts/templates_py/ui_previews_custom_icon.py new file mode 100644 index 00000000000..53f84b2982f --- /dev/null +++ b/release/scripts/templates_py/ui_previews_custom_icon.py @@ -0,0 +1,76 @@ +# This sample script demonstrates how to place a custom icon on a button or +# menu entry. +# +# IMPORTANT NOTE: if you run this sample, there will be no icon in the button +# You need to replace the image path with a real existing one. +# For distributable scripts, it is recommended to place the icons inside the +# addon folder and access it relative to the py script file for portability +# +# +# Other use cases for UI-previews: +# - provide a fixed list of previews to select from +# - provide a dynamic list of preview (eg. calculated from reading a directory) +# +# For the above use cases, see the template 'ui_previews_dynamic_enum.py" + + +import os +import bpy + + +class PreviewsExamplePanel(bpy.types.Panel): + """Creates a Panel in the Object properties window""" + bl_label = "Previews Example Panel" + bl_idname = "OBJECT_PT_previews" + bl_space_type = 'PROPERTIES' + bl_region_type = 'WINDOW' + bl_context = "object" + + def draw(self, context): + layout = self.layout + pcoll = preview_collections["main"] + + row = layout.row() + my_icon = pcoll["my_icon"] + row.operator("render.render", icon_value=my_icon.icon_id) + + # my_icon.icon_id can be used in any UI function that accepts + # icon_value # try also setting text="" + # to get an icon only operator button + + +# We can store multiple preview collections here, +# however in this example we only store "main" +preview_collections = {} + + +def register(): + + # Note that preview collections returned by bpy.utils.previews + # are regular py objects - you can use them to store custom data. + import bpy.utils.previews + pcoll = bpy.utils.previews.new() + + # path to the folder where the icon is + # the path is calculated relative to this py file inside the addon folder + my_icons_dir = os.path.join(os.path.dirname(__file__), "icons") + + # load a preview thumbnail of a file and store in the previews collection + pcoll.load("my_icon", os.path.join(my_icons_dir, "icon-image.png"), 'IMAGE') + + preview_collections["main"] = pcoll + + bpy.utils.register_class(PreviewsExamplePanel) + + +def unregister(): + + for pcoll in preview_collections.values(): + bpy.utils.previews.remove(pcoll) + preview_collections.clear() + + bpy.utils.unregister_class(PreviewsExamplePanel) + + +if __name__ == "__main__": + register() |