Files
blender-portable-repo/extensions/user_default/blenderkit/icons.py
T
2026-03-17 15:25:32 -06:00

133 lines
3.9 KiB
Python

# ##### BEGIN GPL LICENSE BLOCK #####
#
# 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 2
# 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.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# ##### END GPL LICENSE BLOCK #####
import os
import bpy
# We can store multiple preview collections here,
# however in this example we only store "main"
icon_collections = {}
icons_read = {
"free_plan.png": "free",
"full_plan.png": "full",
"promo_sale_symbol.png": "promo_sale_symbol",
"sale_purple.png": "for_sale",
"trophy.png": "trophy",
"dumbbell.png": "dumbbell",
"cc0.png": "cc0",
"royalty_free.png": "royalty_free",
"categories.png": "categories",
"categories_active.png": "categories_active",
"filter.png": "filter",
"filter_active.png": "filter_active",
"filter_nsfw.png": "filter_active_nsfw", # NFSW filter is on, but other filters are not
"filter_active_nsfw.png": "filter_nsfw", # NSFW filter on, classic filters on
"nsfw.png": "nsfw",
"bell.png": "bell",
"post_comment.png": "post_comment",
"blenderkit_logo.png": "logo",
"blenderkit_logo_offline.png": "logo_offline",
"bookmark_full.png": "bookmark_full",
"bookmark_empty.png": "bookmark_empty",
"bar_slider_up.png": "bar_slider_up",
"logo_artstation.png": "logo_artstation",
"logo_discord.png": "logo_discord",
"logo_facebook.png": "logo_facebook",
"logo_instagram.png": "logo_instagram",
"logo_tiktok.png": "logo_tiktok",
"logo_vimeo.png": "logo_vimeo",
"logo_x.png": "logo_twitter",
"logo_youtube.png": "logo_youtube",
"asset_type_printable.png": "asset_type_printable",
}
# fill the icon_collections["previews"] with icons of numbers for complexity rating
possible_wh_values = [
0.2,
0.5,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
15,
20,
30,
50,
100,
150,
200,
250,
]
for w in possible_wh_values:
if w < 1:
icons_read[f"{w}.png"] = f"BK{w}"
else:
icons_read[f"{w:04}.png"] = f"BK{w}"
verification_icons = {
"vs_ready.png": "ready",
"vs_deleted.png": "deleted",
"vs_uploaded.png": "uploaded",
"vs_uploading.png": "uploading",
"vs_on_hold.png": "on_hold",
"vs_validated.png": "validated",
"vs_rejected.png": "rejected",
}
icons_read.update(verification_icons)
def register_icons():
# 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 directory where the icon is
# the path is calculated relative to this py file inside the addon directory
icons_dir = os.path.join(os.path.dirname(__file__), "thumbnails")
# load a preview thumbnail of a file and store in the previews collection
for ir in icons_read.keys():
pcoll.load(icons_read[ir], os.path.join(icons_dir, ir), "IMAGE")
# iprev = pcoll.new(icons_read[ir])
# img = bpy.data.images.load(os.path.join(icons_dir, ir))
# iprev.image_size = (img.size[0], img.size[1])
# iprev.image_pixels_float = img.pixels[:]
icon_collections["main"] = pcoll
icon_collections["previews"] = bpy.utils.previews.new()
def unregister_icons():
for pcoll in icon_collections.values():
bpy.utils.previews.remove(pcoll)
icon_collections.clear()