1 # SPDX-License-Identifier: GPL-3.0-or-later
2 # Copyright (C) 2016-2020 by Nathan Lovato, Daniel Oakey, Razvan Radulescu, and contributors
3 from typing
import List
, Tuple
, Type
7 from .addon_preferences
import register_preferences
, unregister_preferences
8 from .addon_properties
import register_properties
, unregister_properties
9 from .handlers
import register_handlers
, unregister_handlers
10 from .operators
import get_operator_classes
11 from .tools
import get_tool_classes
12 from .ui
import register_ui
, unregister_ui
13 from .utils
import addon_auto_imports
14 from .utils
.register_shortcuts
import register_shortcuts
16 # load and reload submodules
17 ##################################
18 modules
= addon_auto_imports
.setup_addon_modules(
19 __path__
, __name__
, ignore_packages
=[".utils", ".audiosync"]
24 "name": "Power Sequencer",
25 "description": "Video editing tools for content creators",
26 "author": "Nathan Lovato",
28 "blender": (2, 93, 3),
29 "location": "Sequencer",
30 "tracker_url": "https://github.com/GDquest/Blender-power-sequencer/issues",
31 "wiki_url": "https://www.gdquest.com/docs/documentation/power-sequencer/",
32 "support": "COMMUNITY",
33 "category": "Sequencer",
37 # We use globals to cache loaded keymaps, operators, and tools
38 addon_keymaps
: List
[Type
] = []
39 classes_operator
: List
[Type
] = []
40 classes_tool
: List
[Type
] = []
45 global classes_operator
48 register_preferences()
54 classes_operator
= get_operator_classes()
55 for cls
in classes_operator
:
56 bpy
.utils
.register_class(cls
)
59 classes_tool
= get_tool_classes()
60 last_tool
= {"builtin.blade"}
61 for index
, cls
in enumerate(classes_tool
):
62 bpy
.utils
.register_tool(cls
, after
=last_tool
, separator
=index
== 0)
63 last_tool
= {cls
.bl_idname
}
66 keymaps
= register_shortcuts(classes_operator
)
67 addon_keymaps
+= keymaps
69 print("Registered {} with {} modules".format(bl_info
["name"], len(modules
)))
75 global classes_operator
78 for km
, kmi
in addon_keymaps
:
79 km
.keymap_items
.remove(kmi
)
82 for cls
in classes_operator
:
83 bpy
.utils
.unregister_class(cls
)
85 for cls
in classes_tool
:
86 bpy
.utils
.unregister_tool(cls
)
89 unregister_preferences()
90 unregister_properties()
93 print("Unregistered {}".format(bl_info
["name"]))