def register():
bpy.types.WindowManager.chosen_panel = bpy.props.StringProperty(update=get_category)
bpy.utils.register_class(GroupNames)
bpy.utils.register_class(ChangeCategoryPreferences)
preferences = bpy.context.user_preferences.addons[__name__].preferences
if bpy.context.user_preferences.addons[-1].module != __name__:
cache = {}
for k in preferences.tool_panels:
cache[k.name] = k.idname, k.category, k.defa_cat
# Register this addon last next startup
module_name = __name__
addons = bpy.context.user_preferences.addons
while module_name in addons:
addon = addons.get(module_name)
if addon:
addons.remove(addon)
addon = addons.new()
addon.module = module_name
preferences = bpy.context.user_preferences.addons[module_name].preferences
for k, v in cache.items():
my_item = preferences.tool_panels.add()
my_item.name = k
my_item.idname = v[0]
my_item.category = v[1]
my_item.defa_cat = v[2]
del cache
#print(preferences.tool_panels)
bpy.types.WindowManager.panel_category = bpy.props.StringProperty(
name="Category",
description="Choose a name for the category of the panel",
default="My Category",
update=update_category,
)
bpy.utils.register_class(VIEW3D_PT_change_category)
for panel in bpy.types.Panel.__subclasses__():
if hasattr(panel, 'bl_category'):
name = panel.bl_category + ' (' + panel.bl_label + ', ' + panel.__name__ + ')'
#if name not in preferences.tool_panels:
for pref in preferences.tool_panels:
if panel.__name__ == pref.idname:
if panel.bl_category != pref.category and\
panel.is_registered:
#print(name, ' to ', pref.category)
panel.bl_category = pref.category
bpy.utils.unregister_class(panel)
bpy.utils.register_class(panel)
break
break
else:
my_item = preferences.tool_panels.add()
my_item.name = name
my_item.idname = panel.__name__
my_item.category = panel.bl_category
my_item.defa_cat = panel.bl_category
评论列表
文章目录