ui_change_category.py 文件源码

python
阅读 20 收藏 0 点赞 0 评论 0

项目:BetterBlender 作者: bobtherobot 项目源码 文件源码
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
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号