Hi there,
I occured strange behaviour with EnumProperty and it’s encoding with non English characters.
In addon UI each time I want to check the list it doesn’t read it properly.
Error: UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf0 in position 0: invalid continuation byte
In console it prints proper values, so I know I feed it with proper data. A funny thing starts to happen when I try to decode el
string with .decode('utf-8')
. It raise an error in console that string doesn’t have decode func, and of course pleny more errors. But in UI everything works like a charm. Encoding, proper path imports, etc…
I’m thinking it might be connected with python implementation of EnumProperty, but maybe someone can lead me to some clean sollution that doesn’t involve raising any errors?
Code part:
def categories(self, context):
categories = []
nr = 0
pref = context.preferences.addons[__name__].preferences
lib_path = bpy.path.abspath(pref.lib_path)
for el in sorted(os.listdir(lib_path)):
p = os.path.join(lib_path, el)
if os.path.isdir(p) and not el.startswith('.'):
nr += 1
categories.append((el, el, '', nr))
categories.insert(0, ('.', '.', '', 0))
# print(categories)
if len(categories) > 1:
return categories
else:
bpy.context.scene['asset_manager']['cat'] = 0
return [('empty', '', '', 0), ]
# Drop Down Menu
class SimpleAssetManager(bpy.types.PropertyGroup):
cat: EnumProperty(
items=categories,
name="Category",
description="Select a Category",
update=update_category)