diff options
author | Nathan Lovato <nathan@gdquest.com> | 2020-02-09 04:59:08 +0300 |
---|---|---|
committer | Nathan Lovato <nathan@gdquest.com> | 2020-02-13 18:19:35 +0300 |
commit | cf9fde2568aa81197d0f36019ee429880430906d (patch) | |
tree | b74875c507001fa41ca979bc689cfd4a0dee0f13 /power_sequencer/__init__.py | |
parent | 47d56e88240dc330e9173c668f1ee9fee39fb36c (diff) |
power_sequencer: update to the latest master
This commit brings Power Sequencer to the current rolling version, that is
commit 9562eb58d164e234f61225250d6ac5ca858ada7b on
https://github.com/GDQuest/blender-power-sequencer/.
I had already made an intermediate commit that added new features and fixed some
bugs. This commit brings bug fixes and many quality of life improvements.
- Human-readable changelog:
https://github.com/GDQuest/blender-power-sequencer/blob/master/CHANGELOG.md
- 1.4.0 release post:
https://github.com/GDQuest/blender-power-sequencer/releases/tag/1.4.0
- All the commits since v1.3.0 (previous update + this one in this repository):
https://github.com/GDQuest/blender-power-sequencer/compare/1.3.0...master
Diffstat (limited to 'power_sequencer/__init__.py')
-rwxr-xr-x[-rw-r--r--] | power_sequencer/__init__.py | 63 |
1 files changed, 49 insertions, 14 deletions
diff --git a/power_sequencer/__init__.py b/power_sequencer/__init__.py index a51f7342..670bcf41 100644..100755 --- a/power_sequencer/__init__.py +++ b/power_sequencer/__init__.py @@ -14,21 +14,23 @@ # You should have received a copy of the GNU General Public License along with Power Sequencer. If # not, see <https://www.gnu.org/licenses/>. # +from typing import List, Tuple, Type + import bpy from .addon_preferences import register_preferences, unregister_preferences from .addon_properties import register_properties, unregister_properties -from .operators import classes -from .utils.register_shortcuts import register_shortcuts from .handlers import register_handlers, unregister_handlers -from .utils import addon_auto_imports +from .operators import get_operator_classes +from .tools import get_tool_classes from .ui import register_ui, unregister_ui - +from .utils import addon_auto_imports +from .utils.register_shortcuts import register_shortcuts # load and reload submodules ################################## modules = addon_auto_imports.setup_addon_modules( - __path__, __name__, ignore_packages=[".utils", ".audiosync"], ignore_modules=[] + __path__, __name__, ignore_packages=[".utils", ".audiosync"] ) @@ -38,43 +40,68 @@ bl_info = { "author": "Nathan Lovato", "version": (1, 4, 0), "blender": (2, 80, 0), - "location": "Video Tools", + "location": "Sequencer", "tracker_url": "https://github.com/GDquest/Blender-power-sequencer/issues", - "wiki_url": "https://www.youtube.com/playlist?list=PLhqJJNjsQ7KFjp88Cu57Zb9_wFt7nlkEI", + "wiki_url": "https://www.gdquest.com/docs/documentation/power-sequencer/", "support": "COMMUNITY", "category": "Sequencer", } -addon_keymaps = [] +# We use globals to cache loaded keymaps, operators, and tools +addon_keymaps: List[Type] = [] +classes_operator: List[Type] = [] +classes_tool: List[Type] = [] def register(): global addon_keymaps + global classes_operator + global classes_tool register_preferences() register_properties() register_handlers() register_ui() - for c in classes: - bpy.utils.register_class(c) - - keymaps = register_shortcuts() + # Register operators + classes_operator = get_operator_classes() + for cls in classes_operator: + bpy.utils.register_class(cls) + + # Register tools + version_min_toolbar = (2, 83, 0) + if is_blender_version_compatible(version_min_toolbar): + classes_tool = get_tool_classes() + last_tool = {"builtin.cut"} + for index, cls in enumerate(classes_tool): + bpy.utils.register_tool(cls, after=last_tool, separator=index == 0) + last_tool = {cls.bl_idname} + + # Register keymaps + keymaps = register_shortcuts(classes_operator) addon_keymaps += keymaps print("Registered {} with {} modules".format(bl_info["name"], len(modules))) def unregister(): + """Unregister""" global addon_keymaps + global classes_operator + global classes_tool for km, kmi in addon_keymaps: km.keymap_items.remove(kmi) addon_keymaps.clear() - for c in classes: - bpy.utils.unregister_class(c) + for cls in classes_operator: + bpy.utils.unregister_class(cls) + + version_min_toolbar = (2, 82, 0) + if is_blender_version_compatible(version_min_toolbar): + for cls in classes_tool: + bpy.utils.unregister_tool(cls) unregister_ui() unregister_preferences() @@ -82,3 +109,11 @@ def unregister(): unregister_handlers() print("Unregistered {}".format(bl_info["name"])) + + +def is_blender_version_compatible(version: Tuple[int, int, int]) -> bool: + """Returns True if the `version` is greater or equal to the current Blender version. + Converts the versions to integers to compare them.""" + version_int = version[0] * 1000 + version[1] * 10 + version[2] + blender_version_int = bpy.app.version[0] * 1000 + bpy.app.version[1] * 10 + bpy.app.version[2] + return blender_version_int >= version_int |