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:
Diffstat (limited to 'kinoraw_tools/__init__.py')
-rw-r--r--kinoraw_tools/__init__.py335
1 files changed, 335 insertions, 0 deletions
diff --git a/kinoraw_tools/__init__.py b/kinoraw_tools/__init__.py
new file mode 100644
index 00000000..58bcccac
--- /dev/null
+++ b/kinoraw_tools/__init__.py
@@ -0,0 +1,335 @@
+# ##### BEGIN GPL LICENSE BLOCK #####
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# ##### END GPL LICENSE BLOCK #####
+
+bl_info = {
+ "name": "Kinoraw Tools",
+ "author": "Carlos Padial, Turi Scandurra",
+ "version": (0, 5),
+ "blender": (2, 74, 0),
+ "location": "Sequencer",
+ "description": "compilation of tools to improve video editing with blender's VSE",
+ "wiki_url": "https://github.com/kinoraw/kinoraw_tools/blob/master/README.md",
+ "tracker_url": "https://github.com/kinoraw/kinoraw_tools",
+ "support": "COMMUNITY",
+ "category": "Sequencer"
+ }
+
+
+if "bpy" in locals():
+ import imp
+ imp.reload(jumptocut)
+ imp.reload(operators_extra_actions)
+ imp.reload(audio_tools)
+ imp.reload(proxy_tools)
+ imp.reload(recursive_loader)
+ imp.reload(eco)
+ imp.reload(random_editor)
+ imp.reload(ui)
+ imp.reload(datamosh)
+else:
+ from . import jumptocut
+ from . import operators_extra_actions
+ from . import audio_tools
+ from . import proxy_tools
+ from . import recursive_loader
+ from . import eco
+ from . import random_editor
+ from . import ui
+ from . import datamosh
+
+import bpy
+import os.path
+from bpy.types import Menu
+from bpy.types import Header
+
+from bpy.props import IntProperty, StringProperty, BoolProperty, EnumProperty
+
+
+class KinorawToolsAddon(bpy.types.AddonPreferences):
+ # this must match the addon name, use '__package__'
+ # when defining this in a submodule of a python package.
+ bl_idname = __package__
+ bl_option = {'REGISTER'}
+
+ # extra_actions
+ kr_show_tools = BoolProperty(
+ name = "show tools" ,
+ description = 'show extra tools in the panel',
+ default = False)
+ kr_mini_ui = BoolProperty(
+ name = "mini ui" ,
+ description = 'enable mini UI',
+ default = True)
+ kr_show_info = BoolProperty(
+ name = 'show info',
+ description = 'show basic info from selected strip',
+ default = False)
+ kr_show_trim = BoolProperty(
+ name = 'show trim',
+ default = False)
+ kr_show_modifiers = BoolProperty(
+ name = 'show modifiers',
+ default = False)
+ kr_extra_info = BoolProperty(
+ name = 'show extra info',
+ default = False)
+
+ # exif
+ use_exif_panel = BoolProperty(
+ name = 'exif info panel | depends on external programs, see documentation',
+ default = False)
+
+ # glitch
+ use_glitch_panel = BoolProperty(
+ name = 'glitch panel | depends on external programs, see documentation',
+ default = False)
+ all_keyframes = BoolProperty(
+ name = 'remove all keyframes',
+ default = True)
+ load_glitch = BoolProperty(
+ name = 'load glitch after conversion > UNSTABLE!!!',
+ default = True)
+
+ # jump to cut
+ use_jumptocut = BoolProperty(
+ name = 'jumptocut panel',
+ default = True)
+ use_io_tools = BoolProperty(
+ name = 'enable in and out tools in jumptocut panel',
+ default = False)
+
+ # Proxy Tools
+ use_proxy_tools = BoolProperty(
+ name = 'proxy tools panel | depends on external programs, see documentation',
+ default = False)
+ proxy_dir = StringProperty(
+ name = 'Proxy Custom Directory',
+ default = "//proxies/")
+ proxy_scripts_path = StringProperty(
+ name = 'directory to store proxy scripts',
+ default = "//proxy_scripts/")
+ proxy_scripts = BoolProperty(
+ name = 'generate ffmpeg scritps',
+ default = False)
+ ffmpeg_command = StringProperty(
+ name = 'command to generate proxy',
+ default = '''ffmpeg -i {} -vcodec mjpeg -q:v 10 -s {}x{} -an -y {}''')
+ use_internal_proxy = BoolProperty(
+ name = 'use internal blender proxy system',
+ default = True)
+ use_bi_custom_directory = BoolProperty(
+ name = 'Proxy Custom Directory',
+ default = True)
+ quality = IntProperty(
+ name = 'Quality',
+ default = 90,
+ min = 0, max = 32767)
+ tc_list = [ ( "NONE", "No TC in use","" ), ( "RECORD_RUN", "Record Run", "" ),
+ ( "FREE_RUN", "Free Run", "" ), ("FREE_RUN_REC_DATE", "Free Run (rec date)", "" ),
+ ( "RECORD_RUN_NO_GAPS", "Record Run No Gaps", "" )]
+ timecode = EnumProperty(
+ name = "Settings Type",
+ items = tc_list,
+ default="NONE",
+ description = "timecode" )
+
+ # Audio Tools
+ use_audio_tools = BoolProperty(
+ name='audio tools panel | depends on external programs, see documentation',
+ default=False)
+ audio_dir = StringProperty(
+ name='path to store extracted audio',
+ default="//audio/")
+ audio_scripts_path = StringProperty(
+ name='path to store audio scripts',
+ default="//audio_scripts/")
+ audio_scripts = BoolProperty(
+ name='generate ffmpeg scritps',
+ default=False)
+
+ # Audio Tools - external links
+ audio_use_external_links = BoolProperty(
+ name='use external audio linked to movie strips',
+ default=False)
+ audio_external_filename = StringProperty(
+ name='file to store info about linked audio',
+ default="//external_audio_sync_info.txt")
+
+ # audio tools vu-meter
+
+ meterbridge = [ ( "VU", "classic moving needle VU meter","" ), ( "PPM", "PPM meter", "" ),
+ ( "DPM", "Digital peak meter", "" ), ("JF", "'Jellyfish' phase meter", "" ),
+ ( "SCO", "Oscilloscope meter", "" )]
+
+ metertype = EnumProperty(
+ name = "meter type",
+ items = meterbridge,
+ default="DPM",
+ description = "meterbridge meter type" )
+
+ # eco
+ use_eco_tools = BoolProperty(
+ name='eco tools panel',
+ default=True)
+ eco_value = IntProperty(
+ name = 'number of echoes',
+ default = 5,
+ min = 1, max = 25)
+ eco_offset = IntProperty(
+ name = 'Echo Offset',
+ default = 1,
+ min = -25000, max = 25000)
+ eco_use_add_blend_mode = BoolProperty(
+ name = 'use_add_blend_mode',
+ default = False)
+
+ # random editor
+ use_random_editor = BoolProperty(
+ name='random editor panel | Experimental',
+ default=False)
+ random_frames = IntProperty(
+ name='frames',
+ default=1,
+ min = 1, max = 1000)
+ random_selected_scene = StringProperty(
+ name = 'selected_scene',
+ default = '')
+ random_use_marker_subsets = BoolProperty(
+ name = 'use_marker_subsets',
+ default = True)
+ random_number_of_subsets = IntProperty(
+ name = 'number_of_subsets',
+ default = 3,
+ min = 1, max = 5)
+
+ def draw(self, context):
+
+ layout = self.layout
+ layout.prop(self, "use_jumptocut")
+ layout = self.layout
+ layout.prop(self, "use_proxy_tools")
+ layout = self.layout
+ layout.prop(self, "use_audio_tools")
+ layout = self.layout
+ layout.prop(self, "use_exif_panel")
+ layout = self.layout
+ layout.prop(self, "use_eco_tools")
+ layout = self.layout
+ layout.prop(self, "use_random_editor")
+ layout = self.layout
+ layout.prop(self, "use_glitch_panel")
+
+
+# Registration
+def register():
+ bpy.utils.register_class(KinorawToolsAddon)
+
+ bpy.utils.register_module(__name__)
+
+ # Append menu entries
+ bpy.types.SEQUENCER_MT_add.prepend(ui.sequencer_add_menu_func)
+ bpy.types.SEQUENCER_MT_select.prepend(ui.sequencer_select_menu_func)
+ bpy.types.SEQUENCER_MT_strip.prepend(ui.sequencer_strip_menu_func)
+ bpy.types.SEQUENCER_HT_header.append(ui.sequencer_header_func)
+ bpy.types.CLIP_HT_header.append(ui.clip_header_func)
+ bpy.types.CLIP_MT_clip.prepend(ui.clip_clip_menu_func)
+ bpy.types.TIME_MT_frame.prepend(ui.time_frame_menu_func)
+ bpy.types.TIME_HT_header.append(ui.time_header_func)
+
+ # Add keyboard shortcut configuration
+ kc = bpy.context.window_manager.keyconfigs.addon
+ km = kc.keymaps.new(name='Frames')
+
+ # jump 1 second
+ kmi = km.keymap_items.new('screenextra.frame_skip',
+ 'RIGHT_ARROW', 'PRESS', ctrl=True, shift=True)
+ kmi.properties.back = False
+ kmi = km.keymap_items.new('screenextra.frame_skip',
+ 'LEFT_ARROW', 'PRESS', ctrl=True, shift=True)
+ kmi.properties.back = True
+
+ # jump to cut
+ kmi = km.keymap_items.new("sequencer.strip_jump",
+ 'Q', 'PRESS', ctrl=False, shift=False)
+ kmi.properties.next=False
+ kmi.properties.center=False
+ kmi = km.keymap_items.new("sequencer.strip_jump",
+ 'W', 'PRESS', ctrl=False, shift=False)
+ kmi.properties.next=True
+ kmi.properties.center=False
+
+ # in and out
+ kmi = km.keymap_items.new("sequencerextra.sourcein",
+ 'I', 'PRESS', ctrl=True, shift=True)
+ kmi = km.keymap_items.new("sequencerextra.sourceout",
+ 'O', 'PRESS', ctrl=True, shift=True)
+
+ #markers
+ kc = bpy.context.window_manager.keyconfigs.active
+ km = kc.keymaps.new(name='Screen')
+ kmi = km.keymap_items.new("screen.marker_jump",
+ 'Q', 'PRESS', ctrl=False, shift=True)
+ kmi.properties.next=False
+ kmi = km.keymap_items.new("screen.marker_jump",
+ 'W', 'PRESS', ctrl=False, shift=True)
+ kmi.properties.next=True
+
+
+def unregister():
+ bpy.utils.unregister_module(__name__)
+
+
+ try:
+ bpy.utils.unregister_class(KinorawToolsAddon)
+ except RuntimeError:
+ pass
+
+
+
+ # Remove menu entries
+ bpy.types.SEQUENCER_MT_add.remove(ui.sequencer_add_menu_func)
+ bpy.types.SEQUENCER_MT_select.remove(ui.sequencer_select_menu_func)
+ bpy.types.SEQUENCER_MT_strip.remove(ui.sequencer_strip_menu_func)
+ bpy.types.SEQUENCER_HT_header.remove(ui.sequencer_header_func)
+ bpy.types.CLIP_HT_header.remove(ui.clip_header_func)
+ bpy.types.CLIP_MT_clip.remove(ui.clip_clip_menu_func)
+ bpy.types.TIME_MT_frame.remove(ui.time_frame_menu_func)
+ bpy.types.TIME_HT_header.remove(ui.time_header_func)
+
+
+ # Remove keyboard shortcut configuration
+ kc = bpy.context.window_manager.keyconfigs.addon
+ km = kc.keymaps['Frames']
+ km.keymap_items.remove(km.keymap_items['screenextra.frame_skip'])
+ km.keymap_items.remove(km.keymap_items['screenextra.frame_skip'])
+
+ km.keymap_items.remove(km.keymap_items['sequencer.strip_jump'])
+ km.keymap_items.remove(km.keymap_items['sequencer.strip_jump'])
+
+ km.keymap_items.remove(km.keymap_items['sequencerextra.sourcein'])
+ km.keymap_items.remove(km.keymap_items['sequencerextra.sourceout'])
+
+
+ kc = bpy.context.window_manager.keyconfigs.active
+ km = kc.keymaps['Screen']
+ km.keymap_items.remove(km.keymap_items['screen.marker_jump'])
+ km.keymap_items.remove(km.keymap_items['screen.marker_jump'])
+
+
+if __name__ == '__main__':
+ register()