CatHide_v1_5.py 文件源码

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

项目:CatHide-Addon-for-Blender 作者: samytichadou 项目源码 文件源码
def execute(self, context):
        scene=bpy.context.scene
        plist=scene.cathide_panel_list
        slist=scene.cathide_specific_panel_list
        slist2=scene.cathide_temporary_panel_list
        toregister=[]
        orderlist=[]

        #save temporary panels details
        for p in slist2:
            for p2 in slist:
                if p.name==p2.name:
                    if p.panel_context==p2.panel_context:
                        if p.panel_module==p2.panel_module:
                            p2.specific_panel_state=p.specific_panel_state

        #get cat order:
        for c in plist:
            orderlist.append(c.name)

        #get cat to register
        for p in plist:
            if p.panelstate==True:
                toregister.append(p.name)

        #unregister all cat       
        for p in plist:
            for panel in bpy.types.Panel.__subclasses__():
                if hasattr(panel, 'bl_space_type'):
                    if hasattr(panel, 'bl_region_type'):
                        if hasattr(panel, 'bl_category'):
                            if panel.bl_space_type=="VIEW_3D":
                                if panel.bl_region_type=="TOOLS":
                                    if panel.bl_category==p.name:
                                        if "bl_rna" in panel.__dict__:
                                            bpy.utils.unregister_class(panel)

        #register cats in order        
        for p in orderlist:
            for panel in bpy.types.Panel.__subclasses__():
                if hasattr(panel, 'bl_space_type'):
                    if hasattr(panel, 'bl_region_type'):
                        if hasattr(panel, 'bl_category'):
                            if panel.bl_space_type=="VIEW_3D":
                                if panel.bl_region_type=="TOOLS":
                                    if panel.bl_category==p:
                                        for p2 in toregister:
                                            if p==p2:
                                                if "bl_rna" not in panel.__dict__:
                                                    bpy.utils.register_class(panel)

        bpy.ops.cathide.refresh()

        info = 'Tool Shelf Categories Configuration applied'
        self.report({'INFO'}, info)

        return {'FINISHED'} 

# apply cathide N Panels configuration
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号