Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Lovato <nathan@gdquest.com>2020-02-09 04:59:08 +0300
committerNathan Lovato <nathan@gdquest.com>2020-02-13 18:19:35 +0300
commitcf9fde2568aa81197d0f36019ee429880430906d (patch)
treeb74875c507001fa41ca979bc689cfd4a0dee0f13 /power_sequencer/__init__.py
parent47d56e88240dc330e9173c668f1ee9fee39fb36c (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__.py63
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