Skip to content
Snippets Groups Projects
node_wrangler.py 210 KiB
Newer Older
  • Learn to ignore specific revisions
  •     NWSwitchShadersOutputSubmenu,
        NWSwitchShadersShaderSubmenu,
        NWSwitchShadersTextureSubmenu,
        NWSwitchShadersColorSubmenu,
        NWSwitchShadersVectorSubmenu,
        NWSwitchShadersConverterSubmenu,
        NWSwitchShadersLayoutSubmenu,
        NWSwitchCompoInputSubmenu,
        NWSwitchCompoOutputSubmenu,
        NWSwitchCompoColorSubmenu,
        NWSwitchCompoConverterSubmenu,
        NWSwitchCompoFilterSubmenu,
        NWSwitchCompoVectorSubmenu,
        NWSwitchCompoMatteSubmenu,
        NWSwitchCompoDistortSubmenu,
        NWSwitchCompoLayoutSubmenu,
        NWSwitchMatInputSubmenu,
        NWSwitchMatOutputSubmenu,
        NWSwitchMatColorSubmenu,
        NWSwitchMatVectorSubmenu,
        NWSwitchMatConverterSubmenu,
        NWSwitchMatLayoutSubmenu,
        NWSwitchTexInputSubmenu,
        NWSwitchTexOutputSubmenu,
        NWSwitchTexColorSubmenu,
        NWSwitchTexPatternSubmenu,
        NWSwitchTexTexturesSubmenu,
        NWSwitchTexConverterSubmenu,
        NWSwitchTexDistortSubmenu,
        NWSwitchTexLayoutSubmenu,
    )
    
    
        from bpy.utils import register_class
    
    
        # props
        bpy.types.Scene.NWBusyDrawing = StringProperty(
            name="Busy Drawing!",
            default="",
            description="An internal property used to store only the first mouse position")
    
        bpy.types.Scene.NWLazySource = StringProperty(
            name="Lazy Source!",
            default="x",
            description="An internal property used to store the first node in a Lazy Connect operation")
        bpy.types.Scene.NWLazyTarget = StringProperty(
            name="Lazy Target!",
    
            description="An internal property used to store the last node in a Lazy Connect operation")
        bpy.types.Scene.NWSourceSocket = IntProperty(
            name="Source Socket!",
            default=0,
            description="An internal property used to store the source socket in a Lazy Connect operation")
    
        bpy.types.NodeSocketInterface.NWViewerSocket = BoolProperty(
            name="NW Socket",
            default=False,
            description="An internal property used to determine if a socket is generated by the addon"
        )
    
        for cls in classes:
            register_class(cls)
    
        addon_keymaps.clear()
        kc = bpy.context.window_manager.keyconfigs.addon
        if kc:
            km = kc.keymaps.new(name='Node Editor', space_type="NODE_EDITOR")
    
            for (identifier, key, action, CTRL, SHIFT, ALT, props, nicename) in kmi_defs:
                kmi = km.keymap_items.new(identifier, key, action, ctrl=CTRL, shift=SHIFT, alt=ALT)
    
                if props:
                    for prop, value in props:
                        setattr(kmi.properties, prop, value)
                addon_keymaps.append((km, kmi))
    
        # menu items
        bpy.types.NODE_MT_select.append(select_parent_children_buttons)
    
        bpy.types.NODE_MT_category_SH_NEW_INPUT.prepend(attr_nodes_menu_func)
        bpy.types.NODE_PT_backdrop.append(bgreset_menu_func)
    
        bpy.types.NODE_PT_active_node_generic.append(save_viewer_menu_func)
    
        bpy.types.NODE_MT_category_SH_NEW_TEXTURE.prepend(multipleimages_menu_func)
        bpy.types.NODE_MT_category_CMP_INPUT.prepend(multipleimages_menu_func)
    
        bpy.types.NODE_PT_active_node_generic.prepend(reset_nodes_button)
        bpy.types.NODE_MT_node.prepend(reset_nodes_button)
    
        from bpy.utils import unregister_class
    
    
        # props
        del bpy.types.Scene.NWBusyDrawing
    
        del bpy.types.Scene.NWLazySource
        del bpy.types.Scene.NWLazyTarget
        del bpy.types.Scene.NWSourceSocket
    
        del bpy.types.NodeSocketInterface.NWViewerSocket
    
        for km, kmi in addon_keymaps:
            km.keymap_items.remove(kmi)
        addon_keymaps.clear()
    
    
        # menuitems
        bpy.types.NODE_MT_select.remove(select_parent_children_buttons)
        bpy.types.NODE_MT_category_SH_NEW_INPUT.remove(attr_nodes_menu_func)
        bpy.types.NODE_PT_backdrop.remove(bgreset_menu_func)
    
        bpy.types.NODE_PT_active_node_generic.remove(save_viewer_menu_func)
    
        bpy.types.NODE_MT_category_SH_NEW_TEXTURE.remove(multipleimages_menu_func)
        bpy.types.NODE_MT_category_CMP_INPUT.remove(multipleimages_menu_func)
    
        bpy.types.NODE_PT_active_node_generic.remove(reset_nodes_button)
        bpy.types.NODE_MT_node.remove(reset_nodes_button)
    
        for cls in classes:
            unregister_class(cls)
    
    if __name__ == "__main__":