diff options
Diffstat (limited to 'release/scripts/ui/space_sequencer.py')
-rw-r--r-- | release/scripts/ui/space_sequencer.py | 457 |
1 files changed, 237 insertions, 220 deletions
diff --git a/release/scripts/ui/space_sequencer.py b/release/scripts/ui/space_sequencer.py index 4680c5c1d19..ec607629757 100644 --- a/release/scripts/ui/space_sequencer.py +++ b/release/scripts/ui/space_sequencer.py @@ -50,10 +50,10 @@ class SEQUENCER_HT_header(bpy.types.Header): sub.menu("SEQUENCER_MT_add") sub.menu("SEQUENCER_MT_strip") - layout.prop(st, "view_type", text="") + layout.prop(st, "view_type", expand=True, text="") if (st.view_type == 'PREVIEW') or (st.view_type == 'SEQUENCER_PREVIEW'): - layout.prop(st, "display_mode", text="") + layout.prop(st, "display_mode", expand=True, text="") if (st.view_type == 'SEQUENCER'): row = layout.row(align=True) @@ -69,6 +69,14 @@ class SEQUENCER_HT_header(bpy.types.Header): else: layout.prop(st, "display_channel", text="Channel") + ed = context.scene.sequence_editor + if ed: + row = layout.row(align=True) + row.prop(ed, "show_overlay", text="", icon='GHOST_ENABLED') + if ed.show_overlay: + row.prop(ed, "overlay_frame", text="") + row.prop(ed, "overlay_lock", text="", icon='LOCKED') + class SEQUENCER_MT_view_toggle(bpy.types.Menu): bl_label = "View Type" @@ -90,6 +98,10 @@ class SEQUENCER_MT_view(bpy.types.Menu): st = context.space_data layout.column() + + layout.operator("sequencer.properties", icon='MENU_PANEL') + + layout.separator() """ uiBlock *block= uiBeginBlock(C, ar, "seq_viewmenu", UI_EMBOSSP); @@ -119,21 +131,24 @@ class SEQUENCER_MT_view(bpy.types.Menu): menuwidth, 19, NULL, 0.0, 0.0, 1, 2, ""); """ - layout.separator() if (st.view_type == 'SEQUENCER') or (st.view_type == 'SEQUENCER_PREVIEW'): layout.operator("sequencer.view_all", text='View all Sequences') if (st.view_type == 'PREVIEW') or (st.view_type == 'SEQUENCER_PREVIEW'): layout.operator_context = 'INVOKE_REGION_PREVIEW' layout.operator("sequencer.view_all_preview", text='Fit preview in window') layout.operator_context = 'INVOKE_DEFAULT' + + # # XXX, invokes in the header view + # layout.operator("sequencer.view_ghost_border", text='Overlay Border') + layout.operator("sequencer.view_selected") - layout.prop(st, "draw_frames") - layout.prop(st, "show_cframe_indicator") + layout.prop(st, "show_frames") + layout.prop(st, "show_frame_indicator") if st.display_mode == 'IMAGE': - layout.prop(st, "draw_safe_margin") + layout.prop(st, "show_safe_margin") if st.display_mode == 'WAVEFORM': - layout.prop(st, "separate_color_preview") + layout.prop(st, "show_separate_color") layout.separator() layout.prop(st, "use_marker_sync") @@ -217,6 +232,7 @@ class SEQUENCER_MT_add_effect(bpy.types.Menu): layout.operator("sequencer.effect_strip_add", text="Transform").type = 'TRANSFORM' layout.operator("sequencer.effect_strip_add", text="Color").type = 'COLOR' layout.operator("sequencer.effect_strip_add", text="Speed Control").type = 'SPEED' + layout.operator("sequencer.effect_strip_add", text="Multicam Selector").type = 'MULTICAM' class SEQUENCER_MT_strip(bpy.types.Menu): @@ -236,6 +252,7 @@ class SEQUENCER_MT_strip(bpy.types.Menu): layout.operator("sequencer.cut", text="Cut (hard) at frame").type = 'HARD' layout.operator("sequencer.cut", text="Cut (soft) at frame").type = 'SOFT' layout.operator("sequencer.images_separate") + layout.operator("sequencer.deinterlace_selected_movies") layout.separator() layout.operator("sequencer.duplicate") @@ -245,7 +262,7 @@ class SEQUENCER_MT_strip(bpy.types.Menu): if strip: stype = strip.type - + # XXX note strip.type is never equal to 'EFFECT', look at seq_type_items within rna_sequencer.c if stype == 'EFFECT': pass @@ -277,6 +294,7 @@ class SEQUENCER_MT_strip(bpy.types.Menu): layout.separator() layout.operator("sequencer.reload") + layout.operator("sequencer.reassign_inputs") layout.separator() layout.operator("sequencer.lock") layout.operator("sequencer.unlock") @@ -289,35 +307,45 @@ class SEQUENCER_MT_strip(bpy.types.Menu): layout.operator_menu_enum("sequencer.swap", "side") + layout.separator() + + layout.operator("sequencer.swap_data") + -class SequencerButtonsPanel(bpy.types.Panel): +class SequencerButtonsPanel(): bl_space_type = 'SEQUENCE_EDITOR' bl_region_type = 'UI' - def has_sequencer(self, context): + @staticmethod + def has_sequencer(context): return (context.space_data.view_type == 'SEQUENCER') or (context.space_data.view_type == 'SEQUENCER_PREVIEW') - def poll(self, context): - return self.has_sequencer(context) and (act_strip(context) is not None) + @classmethod + def poll(cls, context): + return cls.has_sequencer(context) and (act_strip(context) is not None) -class SequencerButtonsPanel_Output(bpy.types.Panel): +class SequencerButtonsPanel_Output(): bl_space_type = 'SEQUENCE_EDITOR' bl_region_type = 'UI' - def has_preview(self, context): + @staticmethod + def has_preview(context): return (context.space_data.view_type == 'PREVIEW') or (context.space_data.view_type == 'SEQUENCER_PREVIEW') - def poll(self, context): - return self.has_preview(context) + @classmethod + def poll(cls, context): + return cls.has_preview(context) -class SEQUENCER_PT_edit(SequencerButtonsPanel): +class SEQUENCER_PT_edit(SequencerButtonsPanel, bpy.types.Panel): bl_label = "Edit Strip" def draw(self, context): layout = self.layout + scene = context.scene render = context.scene.render + frame_current = scene.frame_current strip = act_strip(context) split = layout.split(percentage=0.3) @@ -330,69 +358,39 @@ class SEQUENCER_PT_edit(SequencerButtonsPanel): split = layout.split(percentage=0.3) split.label(text="Blend:") - split.prop(strip, "blend_mode", text="") - - row = layout.row() - if strip.mute == True: - row.prop(strip, "mute", toggle=True, icon='RESTRICT_VIEW_ON', text="") - elif strip.mute is False: - row.prop(strip, "mute", toggle=True, icon='RESTRICT_VIEW_OFF', text="") + split.prop(strip, "blend_type", text="") + row = layout.row(align=True) sub = row.row() sub.active = (not strip.mute) - - sub.prop(strip, "blend_opacity", text="Opacity", slider=True) - - row = layout.row() - row.prop(strip, "lock") - row.prop(strip, "frame_locked", text="Frame Lock") + sub.prop(strip, "blend_alpha", text="Opacity", slider=True) + row.prop(strip, "mute", toggle=True, icon='RESTRICT_VIEW_ON' if strip.mute else 'RESTRICT_VIEW_OFF', text="") + row.prop(strip, "lock", toggle=True, icon='LOCKED' if strip.lock else 'UNLOCKED', text="") col = layout.column() - col.enabled = not strip.lock - col.prop(strip, "channel") - col.prop(strip, "frame_start") - subrow = col.split(percentage=0.66) - subrow.prop(strip, "length") - subrow.label(text="%.2f sec" % (strip.length / (render.fps / render.fps_base))) - - col = layout.column(align=True) - col.label(text="Offset:") - col.prop(strip, "frame_offset_start", text="Start") - col.prop(strip, "frame_offset_end", text="End") + sub = col.column() + sub.enabled = not strip.lock + sub.prop(strip, "channel") + sub.prop(strip, "frame_start") + sub.prop(strip, "frame_final_duration") col = layout.column(align=True) - col.label(text="Still:") - col.prop(strip, "frame_still_start", text="Start") - col.prop(strip, "frame_still_end", text="End") + row = col.row() + row.label(text="Final Length: %s" % bpy.utils.smpte_from_frame(strip.frame_final_duration)) + row = col.row() + row.active = (frame_current >= strip.frame_start and frame_current <= strip.frame_start + strip.frame_duration) + row.label(text="Playhead: %d" % (frame_current - strip.frame_start)) + col.label(text="Frame Offset %d:%d" % (strip.frame_offset_start, strip.frame_offset_end)) + col.label(text="Frame Still %d:%d" % (strip.frame_still_start, strip.frame_still_end)) -class SEQUENCER_PT_preview(bpy.types.Panel): - bl_label = "Scene Preview/Render" - bl_space_type = 'SEQUENCE_EDITOR' - bl_region_type = 'UI' - - def draw(self, context): - layout = self.layout - render = context.scene.render - col = layout.column() - col.prop(render, "use_sequencer_gl_preview", text="Open GL Preview") - col = layout.column() - col.active = render.use_sequencer_gl_preview - col.prop(render, "sequencer_gl_preview", text="") - - col = layout.column() - col.prop(render, "use_sequencer_gl_render", text="Open GL Render") - col = layout.column() - col.active = render.use_sequencer_gl_render - col.prop(render, "sequencer_gl_render", text="") - - -class SEQUENCER_PT_effect(SequencerButtonsPanel): +class SEQUENCER_PT_effect(SequencerButtonsPanel, bpy.types.Panel): bl_label = "Effect Strip" - def poll(self, context): - if not self.has_sequencer(context): + @classmethod + def poll(cls, context): + if not cls.has_sequencer(context): return False strip = act_strip(context) @@ -402,7 +400,8 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel): return strip.type in ('ADD', 'SUBTRACT', 'ALPHA_OVER', 'ALPHA_UNDER', 'CROSS', 'GAMMA_CROSS', 'MULTIPLY', 'OVER_DROP', 'PLUGIN', - 'WIPE', 'GLOW', 'TRANSFORM', 'COLOR', 'SPEED') + 'WIPE', 'GLOW', 'TRANSFORM', 'COLOR', 'SPEED', + 'MULTICAM') def draw(self, context): layout = self.layout @@ -429,31 +428,58 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel): flow.prop(strip, "threshold", slider=True) flow.prop(strip, "clamp", slider=True) flow.prop(strip, "boost_factor") - flow.prop(strip, "blur_distance") + flow.prop(strip, "blur_radius") row = layout.row() row.prop(strip, "quality", slider=True) - row.prop(strip, "only_boost") + row.prop(strip, "use_only_boost") elif strip.type == 'SPEED': layout.prop(strip, "global_speed") flow = layout.column_flow() - flow.prop(strip, "curve_velocity") - flow.prop(strip, "curve_compress_y") - flow.prop(strip, "frame_blending") + flow.prop(strip, "use_curve_velocity") + flow.prop(strip, "use_curve_compress_y") + flow.prop(strip, "use_frame_blend") elif strip.type == 'TRANSFORM': self.draw_panel_transform(strip) + elif strip.type == "MULTICAM": + layout.prop(strip, "multicam_source") + + row = layout.row(align=True) + sub = row.row() + sub.scale_x = 2.0 + + sub.operator("screen.animation_play", text="", icon='PAUSE' if context.screen.is_animation_playing else 'PLAY') + + row.label("Cut To") + for i in range(1, strip.channel): + row.operator("sequencer.cut_multicam", text=str(i)).camera = i + col = layout.column(align=True) if strip.type == 'SPEED': col.prop(strip, "speed_fader", text="Speed fader") elif strip.type in ('CROSS', 'GAMMA_CROSS', 'PLUGIN', 'WIPE'): - col.prop(strip, "use_effect_default_fade", "Default fade") - if not strip.use_effect_default_fade: + col.prop(strip, "use_default_fade", "Default fade") + if not strip.use_default_fade: col.prop(strip, "effect_fader", text="Effect fader") + + layout.prop(strip, "use_translation", text="Image Offset:") + if strip.use_translation: + col = layout.column(align=True) + col.prop(strip.transform, "offset_x", text="X") + col.prop(strip.transform, "offset_y", text="Y") + + layout.prop(strip, "use_crop", text="Image Crop:") + if strip.use_crop: + col = layout.column(align=True) + col.prop(strip.crop, "max_y") + col.prop(strip.crop, "min_x") + col.prop(strip.crop, "min_y") + col.prop(strip.crop, "max_x") def draw_panel_transform(self, strip): layout = self.layout @@ -469,8 +495,8 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel): layout.separator() col = layout.column(align=True) - col.prop(strip, "uniform_scale") - if (strip.uniform_scale): + col.prop(strip, "use_uniform_scale") + if (strip.use_uniform_scale): col = layout.column(align=True) col.prop(strip, "scale_start_x", text="Scale") else: @@ -486,116 +512,87 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel): col.prop(strip, "rotation_start", text="Rotation") -class SEQUENCER_PT_input(SequencerButtonsPanel): +class SEQUENCER_PT_input(SequencerButtonsPanel, bpy.types.Panel): bl_label = "Strip Input" - def poll(self, context): - if not self.has_sequencer(context): + @classmethod + def poll(cls, context): + if not cls.has_sequencer(context): return False strip = act_strip(context) if not strip: return False - return strip.type in ('MOVIE', 'IMAGE') - - def draw_filename(self, context): - pass + return strip.type in ('MOVIE', 'IMAGE', 'SCENE', 'META', + 'ADD', 'SUBTRACT', 'ALPHA_OVER', 'ALPHA_UNDER', + 'CROSS', 'GAMMA_CROSS', 'MULTIPLY', 'OVER_DROP', + 'PLUGIN', + 'WIPE', 'GLOW', 'TRANSFORM', 'COLOR', + 'MULTICAM', 'SPEED') def draw(self, context): layout = self.layout strip = act_strip(context) - self.draw_filename(context) + seq_type = strip.type + + # draw a filename if we have one + if seq_type == 'IMAGE': + split = layout.split(percentage=0.2) + col = split.column() + col.label(text="Path:") + col = split.column() + col.prop(strip, "directory", text="") + + # Current element for the filename + + elem = strip.getStripElem(context.scene.frame_current) + if elem: + split = layout.split(percentage=0.2) + col = split.column() + col.label(text="File:") + col = split.column() + col.prop(elem, "filename", text="") # strip.elements[0] could be a fallback + + elif seq_type == 'MOVIE': + split = layout.split(percentage=0.2) + col = split.column() + col.label(text="Path:") + col = split.column() + col.prop(strip, "filepath", text="") + col.prop(strip, "mpeg_preseek", text="MPEG Preseek") + # TODO, sound??? + # end drawing filename + layout.prop(strip, "use_translation", text="Image Offset:") - if strip.transform: + if strip.use_translation: col = layout.column(align=True) - col.active = strip.use_translation col.prop(strip.transform, "offset_x", text="X") col.prop(strip.transform, "offset_y", text="Y") layout.prop(strip, "use_crop", text="Image Crop:") - if strip.crop: + if strip.use_crop: col = layout.column(align=True) - col.active = strip.use_crop - col.prop(strip.crop, "top") - col.prop(strip.crop, "left") - col.prop(strip.crop, "bottom") - col.prop(strip.crop, "right") + col.prop(strip.crop, "max_y") + col.prop(strip.crop, "min_x") + col.prop(strip.crop, "min_y") + col.prop(strip.crop, "max_x") col = layout.column(align=True) col.label(text="Trim Duration:") - col.prop(strip, "animation_start_offset", text="Start") - col.prop(strip, "animation_end_offset", text="End") - - -class SEQUENCER_PT_input_movie(SEQUENCER_PT_input): - bl_label = "Strip Input" - - def poll(self, context): - if not self.has_sequencer(context): - return False - - strip = act_strip(context) - if not strip: - return False - - return strip.type == 'MOVIE' - - def draw_filename(self, context): - layout = self.layout - - strip = act_strip(context) - - split = layout.split(percentage=0.2) - col = split.column() - col.label(text="Path:") - col = split.column() - col.prop(strip, "filepath", text="") - - -class SEQUENCER_PT_input_image(SEQUENCER_PT_input): - bl_label = "Strip Input" - - def poll(self, context): - if not self.has_sequencer(context): - return False - - strip = act_strip(context) - if not strip: - return False - - return strip.type == 'IMAGE' - - def draw_filename(self, context): - layout = self.layout - - strip = act_strip(context) - - split = layout.split(percentage=0.2) - col = split.column() - col.label(text="Path:") - col = split.column() - col.prop(strip, "directory", text="") - - # Current element for the filename - - elem = strip.getStripElem(context.scene.frame_current) - if elem: - split = layout.split(percentage=0.2) - col = split.column() - col.label(text="File:") - col = split.column() - col.prop(elem, "filename", text="") # strip.elements[0] could be a fallback + col.prop(strip, "frame_offset_start", text="Start") + col.prop(strip, "frame_offset_end", text="End") -class SEQUENCER_PT_sound(SequencerButtonsPanel): +class SEQUENCER_PT_sound(SequencerButtonsPanel, bpy.types.Panel): bl_label = "Sound" - def poll(self, context): - if not self.has_sequencer(context): + @classmethod + def poll(cls, context): + if not cls.has_sequencer(context): return False strip = act_strip(context) @@ -620,16 +617,23 @@ class SEQUENCER_PT_sound(SequencerButtonsPanel): else: row.operator("sound.pack", icon='UGLYPACKAGE', text="Pack") - row.prop(strip.sound, "caching") + row.prop(strip.sound, "use_memory_cache") layout.prop(strip, "volume") + layout.prop(strip, "attenuation") + + col = layout.column(align=True) + col.label(text="Trim Duration:") + col.prop(strip, "animation_offset_start", text="Start") + col.prop(strip, "animation_offset_end", text="End") -class SEQUENCER_PT_scene(SequencerButtonsPanel): +class SEQUENCER_PT_scene(SequencerButtonsPanel, bpy.types.Panel): bl_label = "Scene" - def poll(self, context): - if not self.has_sequencer(context): + @classmethod + def poll(cls, context): + if not cls.has_sequencer(context): return False strip = act_strip(context) @@ -649,18 +653,24 @@ class SEQUENCER_PT_scene(SequencerButtonsPanel): layout.template_ID(strip, "scene_camera") -class SEQUENCER_PT_filter(SequencerButtonsPanel): +class SEQUENCER_PT_filter(SequencerButtonsPanel, bpy.types.Panel): bl_label = "Filter" - def poll(self, context): - if not self.has_sequencer(context): + @classmethod + def poll(cls, context): + if not cls.has_sequencer(context): return False strip = act_strip(context) if not strip: return False - return strip.type in ('MOVIE', 'IMAGE', 'SCENE', 'META') + return strip.type in ('MOVIE', 'IMAGE', 'SCENE', 'META', + 'ADD', 'SUBTRACT', 'ALPHA_OVER', 'ALPHA_UNDER', + 'CROSS', 'GAMMA_CROSS', 'MULTIPLY', 'OVER_DROP', + 'PLUGIN', + 'WIPE', 'GLOW', 'TRANSFORM', 'COLOR', + 'MULTICAM', 'SPEED') def draw(self, context): layout = self.layout @@ -670,50 +680,54 @@ class SEQUENCER_PT_filter(SequencerButtonsPanel): col = layout.column() col.label(text="Video:") col.prop(strip, "strobe") - col.prop(strip, "de_interlace") + + row = layout.row() + row.label(text="Flip:") + row.prop(strip, "use_flip_x", text="X") + row.prop(strip, "use_flip_y", text="Y") col = layout.column() - col.label(text="Colors:") - col.prop(strip, "multiply_colors", text="Multiply") - col.prop(strip, "premultiply") - col.prop(strip, "convert_float") + col.prop(strip, "use_reverse_frames", text="Backwards") + col.prop(strip, "use_deinterlace") col = layout.column() - col.label(text="Flip:") - col.prop(strip, "flip_x", text="X") - col.prop(strip, "flip_y", text="Y") - col.prop(strip, "reverse_frames", text="Backwards") + col.label(text="Colors:") + col.prop(strip, "color_saturation", text="Saturation") + col.prop(strip, "color_multiply", text="Multiply") + col.prop(strip, "use_premultiply") + col.prop(strip, "use_float") layout.prop(strip, "use_color_balance") - if strip.color_balance: # TODO - need to add this somehow + if strip.use_color_balance and strip.color_balance: # TODO - need to add this somehow row = layout.row() row.active = strip.use_color_balance col = row.column() - col.template_color_wheel(strip.color_balance, "lift", value_slider=False) + col.template_color_wheel(strip.color_balance, "lift", value_slider=False, cubic=True) col.row().prop(strip.color_balance, "lift") - col.prop(strip.color_balance, "inverse_lift", text="Inverse") + col.prop(strip.color_balance, "invert_lift", text="Inverse") col = row.column() - col.template_color_wheel(strip.color_balance, "gamma", value_slider=False) + col.template_color_wheel(strip.color_balance, "gamma", value_slider=False, lock_luminosity=True, cubic=True) col.row().prop(strip.color_balance, "gamma") - col.prop(strip.color_balance, "inverse_gamma", text="Inverse") + col.prop(strip.color_balance, "invert_gamma", text="Inverse") col = row.column() - col.template_color_wheel(strip.color_balance, "gain", value_slider=False) + col.template_color_wheel(strip.color_balance, "gain", value_slider=False, lock_luminosity=True, cubic=True) col.row().prop(strip.color_balance, "gain") - col.prop(strip.color_balance, "inverse_gain", text="Inverse") + col.prop(strip.color_balance, "invert_gain", text="Inverse") -class SEQUENCER_PT_proxy(SequencerButtonsPanel): +class SEQUENCER_PT_proxy(SequencerButtonsPanel, bpy.types.Panel): bl_label = "Proxy" - def poll(self, context): - if not self.has_sequencer(context): + @classmethod + def poll(cls, context): + if not cls.has_sequencer(context): return False strip = act_strip(context) if not strip: return False - return strip.type in ('MOVIE', 'IMAGE', 'SCENE', 'META') + return strip.type in ('MOVIE', 'IMAGE', 'SCENE', 'META', 'MULTICAM') def draw_header(self, context): strip = act_strip(context) @@ -726,58 +740,61 @@ class SEQUENCER_PT_proxy(SequencerButtonsPanel): strip = act_strip(context) flow = layout.column_flow() - flow.prop(strip, "proxy_custom_directory") + flow.prop(strip, "use_proxy_custom_directory") + flow.prop(strip, "use_proxy_custom_file") if strip.proxy: # TODO - need to add this somehow - flow.prop(strip.proxy, "directory") - flow.prop(strip.proxy, "file") + if strip.proxy_custom_directory and not strip.use_proxy_custom_file: + flow.prop(strip.proxy, "directory") + if strip.use_proxy_custom_file: + flow.prop(strip.proxy, "filepath") -class SEQUENCER_PT_view(SequencerButtonsPanel_Output): - bl_label = "View Settings" +class SEQUENCER_PT_preview(SequencerButtonsPanel_Output, bpy.types.Panel): + bl_label = "Scene Preview/Render" + bl_space_type = 'SEQUENCE_EDITOR' + bl_region_type = 'UI' def draw(self, context): layout = self.layout + render = context.scene.render - st = context.space_data + col = layout.column() + col.prop(render, "use_sequencer_gl_preview", text="Open GL Preview") + col = layout.column() + col.active = render.use_sequencer_gl_preview + col.prop(render, "sequencer_gl_preview", text="") + ''' + col = layout.column() + col.prop(render, "use_sequencer_gl_render", text="Open GL Render") col = layout.column() - col.prop(st, "draw_overexposed") # text="Zebra" - col.prop(st, "draw_safe_margin") + col.active = render.use_sequencer_gl_render + col.prop(render, "sequencer_gl_render", text="") + ''' -classes = [ - SEQUENCER_HT_header, # header/menu classes - SEQUENCER_MT_view, - SEQUENCER_MT_view_toggle, - SEQUENCER_MT_select, - SEQUENCER_MT_marker, - SEQUENCER_MT_add, - SEQUENCER_MT_add_effect, - SEQUENCER_MT_strip, +class SEQUENCER_PT_view(SequencerButtonsPanel_Output, bpy.types.Panel): + bl_label = "View Settings" - SEQUENCER_PT_edit, # sequencer panels - SEQUENCER_PT_preview, - SEQUENCER_PT_effect, - SEQUENCER_PT_input_movie, - SEQUENCER_PT_input_image, - SEQUENCER_PT_sound, - SEQUENCER_PT_scene, - SEQUENCER_PT_filter, - SEQUENCER_PT_proxy, + def draw(self, context): + layout = self.layout - SEQUENCER_PT_view] # view panels + st = context.space_data + col = layout.column() + if st.display_mode == 'IMAGE': + col.prop(st, "draw_overexposed") # text="Zebra" + col.prop(st, "show_safe_margin") + if st.display_mode == 'WAVEFORM': + col.prop(st, "show_separate_color") + col.prop(st, "proxy_render_size") def register(): - register = bpy.types.register - for cls in classes: - register(cls) + pass def unregister(): - unregister = bpy.types.unregister - for cls in classes: - unregister(cls) + pass if __name__ == "__main__": register() |