def three_point_overwrite_pressed(): # Check that state is good for edit if movemodes.selected_track == -1: primary_txt = _("No Clips are selected!") secondary_txt = _( "You need to select clips to overwrite to perform this edit.") dialogutils.info_message(primary_txt, secondary_txt, gui.editor_window.window) return # Get data track = get_track(movemodes.selected_track) if editevent.track_lock_check_and_user_info(track, three_point_overwrite_pressed, "3 point overwrite"): return range_start_frame = track.clip_start(movemodes.selected_range_in) out_clip = track.clips[movemodes.selected_range_out] out_start = track.clip_start(movemodes.selected_range_out) range_end_frame = out_start + out_clip.clip_out - out_clip.clip_in range_length = range_end_frame - range_start_frame + 1 # calculated end is incl. over_clip = _get_new_clip_from_clip_monitor() if over_clip == None: no_monitor_clip_info(gui.editor_window.window) return over_length = over_clip.mark_out - over_clip.mark_in + 1 # + 1 out incl ?????????? what if over_clip.mark_out == -1 ?????????? if over_length < range_length: monitor_clip_too_short(gui.editor_window.window) return over_clip_out = over_clip.mark_in + range_length - 1 # -1 out incl range_in = movemodes.selected_range_in range_out = movemodes.selected_range_out movemodes.clear_selected_clips() # edit consumes selection updater.save_monitor_frame = False # hack to not get wrong value saved in MediaFile.current_frame data = { "track": track, "clip": over_clip, "clip_in": over_clip.mark_in, "clip_out": over_clip_out, "in_index": range_in, "out_index": range_out } action = edit.three_point_overwrite_action(data) action.do_edit() if not editorstate.timeline_visible(): updater.display_sequence_in_monitor() updater.display_tline_cut_frame(track, range_in)
def range_overwrite_pressed(): # Get data track = current_sequence().get_first_active_track() if editevent.track_lock_check_and_user_info(track, range_overwrite_pressed, "range overwrite"): return # tractor is has mark in and mark mark_in_frame = current_sequence().tractor.mark_in mark_out_frame = current_sequence().tractor.mark_out range_length = mark_out_frame - mark_in_frame + 1 # end is incl. if mark_in_frame == -1 or mark_out_frame == -1: primary_txt = _("Timeline Range not set!") secondary_txt = _( "You need to set Timeline Range using Mark In and Mark Out buttons\nto perform this edit." ) dialogutils.info_message(primary_txt, secondary_txt, gui.editor_window.window) return # Get over clip and check it overwrite range area over_clip = _get_new_clip_from_clip_monitor() if over_clip == None: no_monitor_clip_info(gui.editor_window.window) return over_length = over_clip.mark_out - over_clip.mark_in + 1 # + 1 out incl if over_length < range_length: monitor_clip_too_short(gui.editor_window.window) return over_clip_out = over_clip.mark_in + range_length - 1 movemodes.clear_selected_clips() # edit consumes selection updater.save_monitor_frame = False # hack to not get wrong value saved in MediaFile.current_frame data = { "track": track, "clip": over_clip, "clip_in": over_clip.mark_in, "clip_out": over_clip_out, "mark_in_frame": mark_in_frame, "mark_out_frame": mark_out_frame + 1 } # +1 because mark is displayed and end of frame end this # confirms to user expectation of # of how this should work action = edit.range_overwrite_action(data) action.do_edit() updater.display_tline_cut_frame(track, track.get_clip_index_at(mark_in_frame))
def three_point_overwrite_pressed(): # Check that state is good for edit if movemodes.selected_track == -1: primary_txt = _("No Clips are selected!") secondary_txt = _("You need to select clips to overwrite to perform this edit.") dialogutils.info_message(primary_txt, secondary_txt, gui.editor_window.window) return # Get data track = get_track(movemodes.selected_track) if editevent.track_lock_check_and_user_info(track, three_point_overwrite_pressed, "3 point overwrite"): return range_start_frame = track.clip_start(movemodes.selected_range_in) out_clip = track.clips[movemodes.selected_range_out] out_start = track.clip_start(movemodes.selected_range_out) range_end_frame = out_start + out_clip.clip_out - out_clip.clip_in range_length = range_end_frame - range_start_frame + 1 # calculated end is incl. over_clip = _get_new_clip_from_clip_monitor() if over_clip == None: no_monitor_clip_info(gui.editor_window.window) return over_length = over_clip.mark_out - over_clip.mark_in + 1 # + 1 out incl ?????????? what if over_clip.mark_out == -1 ?????????? if over_length < range_length: monitor_clip_too_short(gui.editor_window.window) return over_clip_out = over_clip.mark_in + range_length - 1 # -1 out incl range_in = movemodes.selected_range_in range_out = movemodes.selected_range_out movemodes.clear_selected_clips() # edit consumes selection updater.save_monitor_frame = False # hack to not get wrong value saved in MediaFile.current_frame data = {"track":track, "clip":over_clip, "clip_in":over_clip.mark_in, "clip_out":over_clip_out, "in_index":range_in, "out_index":range_out} action = edit.three_point_overwrite_action(data) action.do_edit() updater.display_tline_cut_frame(track, range_in)
def do_multiple_clip_insert(track, clips, tline_pos): index = _get_insert_index(track, tline_pos) # Can't put audio media on video track for new_clip in clips: if (new_clip.media_type == appconsts.AUDIO) and (track.type == appconsts.VIDEO): _display_no_audio_on_video_msg(track) return movemodes.clear_selected_clips() # Do edit data = {"track": track, "clips": clips, "index": index} action = edit.insert_multiple_action(data) action.do_edit() updater.display_tline_cut_frame(track, index)
def range_overwrite_pressed(): # Get data track = current_sequence().get_first_active_track() if editevent.track_lock_check_and_user_info(track, range_overwrite_pressed, "range overwrite"): return # tractor is has mark in and mark mark_in_frame = current_sequence().tractor.mark_in mark_out_frame = current_sequence().tractor.mark_out range_length = mark_out_frame - mark_in_frame + 1 # end is incl. if mark_in_frame == -1 or mark_out_frame == -1: primary_txt = _("Timeline Range not set!") secondary_txt = _("You need to set Timeline Range using Mark In and Mark Out buttons\nto perform this edit.") dialogutils.info_message(primary_txt, secondary_txt, gui.editor_window.window) return # Get over clip and check it overwrite range area over_clip = _get_new_clip_from_clip_monitor() if over_clip == None: no_monitor_clip_info(gui.editor_window.window) return over_length = over_clip.mark_out - over_clip.mark_in + 1 # + 1 out incl if over_length < range_length: monitor_clip_too_short(gui.editor_window.window) return over_clip_out = over_clip.mark_in + range_length - 1 movemodes.clear_selected_clips() # edit consumes selection updater.save_monitor_frame = False # hack to not get wrong value saved in MediaFile.current_frame data = {"track":track, "clip":over_clip, "clip_in":over_clip.mark_in, "clip_out":over_clip_out, "mark_in_frame":mark_in_frame, "mark_out_frame":mark_out_frame + 1} # +1 because mark is displayed and end of frame end this # confirms to user expectation of # of how this should work action = edit.range_overwrite_action(data) action.do_edit() updater.display_tline_cut_frame(track, track.get_clip_index_at(mark_in_frame))
def do_multiple_clip_insert(track, clips, tline_pos): index = _get_insert_index(track, tline_pos) # Can't put audio media on video track for new_clip in clips: if ((new_clip.media_type == appconsts.AUDIO) and (track.type == appconsts.VIDEO)): _display_no_audio_on_video_msg(track) return movemodes.clear_selected_clips() # Do edit data = {"track": track, "clips": clips, "index": index} action = edit.insert_multiple_action(data) action.do_edit() updater.display_tline_cut_frame(track, index)
def do_clip_insert(track, new_clip, tline_pos): index = _get_insert_index(track, tline_pos) # Can't put audio media on video track if ((new_clip.media_type == appconsts.AUDIO) and (track.type == appconsts.VIDEO)): _display_no_audio_on_video_msg(track) return movemodes.clear_selected_clips() # Do edit data = {"track":track, "clip":new_clip, "index":index, "clip_in":new_clip.mark_in, "clip_out":new_clip.mark_out} action = edit.insert_action(data) action.do_edit() updater.display_tline_cut_frame(track, index)
def _attempt_dnd_overwrite(track, clip, frame): # Can't put audio media on video track if ((clip.media_type == appconsts.AUDIO) and (track.type == appconsts.VIDEO)): return # Dropping on first available frame after last clip is append # and is handled by insert code if track.get_length() == frame: return False # Clip dropped after last clip on track if track.get_length() < frame: index = _get_insert_index(track, track.get_length()) movemodes.clear_selected_clips() data = {"track":track, "clip":clip, "blank_length":frame - track.get_length(), "index":index, "clip_in":clip.mark_in, "clip_out":clip.mark_out} action = edit.dnd_after_track_end_action(data) action.do_edit() updater.display_tline_cut_frame(track, index + 1) return True else: # Clip dropped before end of last clip on track index = track.get_clip_index_at(frame) overwritten_clip = track.clips[index] # dnd overwrites can only done on blank clips # Drops on clips are considered inserts if overwritten_clip.is_blanck_clip == False: return False drop_length = clip.mark_out - clip.mark_in + 1 # +1 , mark out incl. blank_start = track.clip_start(index) blank_end = track.clip_start(index + 1) movemodes.clear_selected_clips() # Clip dropped on first frame of blank if blank_start == frame: # If dropped clip longer then blank, replace blank if frame + drop_length >= blank_end: data = {"track":track, "clip":clip, "blank_length":blank_end - blank_start, "index":index, "clip_in":clip.mark_in} action = edit.dnd_on_blank_replace_action(data) action.do_edit() else: # If dropped clip shorter then blank, replace start part of blank data = {"track":track, "clip":clip, "blank_length":blank_end - blank_start, "index":index, "clip_in":clip.mark_in, "clip_out":clip.mark_out} action = edit.dnd_on_blank_start_action(data) action.do_edit() updater.display_tline_cut_frame(track, index) return True # Clip dropped after first frame of blank if frame + drop_length >= blank_end: # Overwrite end half of blank data = {"track":track, "clip":clip, "overwritten_blank_length":frame - blank_start, "blank_length":blank_end - blank_start, "index":index, "clip_in":clip.mark_in, "clip_out":clip.mark_out} action = edit.dnd_on_blank_end_action(data) action.do_edit() else: # Overwrite part of blank ei toimi data = {"track":track, "clip":clip, "overwritten_start_frame":frame - blank_start, "blank_length":blank_end - blank_start, "index":index, "clip_in":clip.mark_in, "clip_out":clip.mark_out} action = edit.dnd_on_blank_middle_action(data) action.do_edit() updater.display_tline_cut_frame(track, index + 1) return True return False # this won't be hit
def range_overwrite_pressed(): # Get data track = current_sequence().get_first_active_track() if editevent.track_lock_check_and_user_info(track, range_overwrite_pressed, "range overwrite"): return # Get over clip and check it overwrite range area over_clip = _get_new_clip_from_clip_monitor() if over_clip == None: no_monitor_clip_info(gui.editor_window.window) return # tractor is has mark in and mark mark_in_frame = current_sequence().tractor.mark_in mark_out_frame = current_sequence().tractor.mark_out # Case timeline marked if mark_in_frame != -1 and mark_out_frame != -1: range_length = mark_out_frame - mark_in_frame + 1 # end is incl. if over_clip.mark_in == -1: # This actually never hit because mark in and mark out seem to first and last frame if nothing set show_three_point_edit_not_defined() return over_length = over_clip.mark_out - over_clip.mark_in + 1 # + 1 out incl if over_length < range_length: monitor_clip_too_short(gui.editor_window.window) return over_clip_out = over_clip.mark_in + range_length - 1 # Case clip marked elif over_clip.mark_out != -1 and over_clip.mark_in != -1: range_length = over_clip.mark_out - over_clip.mark_in + 1 # end is incl. if mark_in_frame == -1: show_three_point_edit_not_defined() return over_length = track.get_length() - mark_in_frame + 1 # + 1 out incl if over_length < range_length: monitor_clip_too_short(gui.editor_window.window) return over_clip_out = over_clip.mark_out mark_out_frame = mark_in_frame + range_length - 1 # -1 because it gets readded later # case neither clip or timeline has both in and out points else: show_three_point_edit_not_defined() return movemodes.clear_selected_clips() # edit consumes selection updater.save_monitor_frame = False # hack to not get wrong value saved in MediaFile.current_frame data = { "track": track, "clip": over_clip, "clip_in": over_clip.mark_in, "clip_out": over_clip_out, "mark_in_frame": mark_in_frame, "mark_out_frame": mark_out_frame + 1 } # +1 because mark is displayed and end of frame end this # confirms to user expectation of # of how this should work action = edit.range_overwrite_action(data) action.do_edit() updater.display_tline_cut_frame(track, track.get_clip_index_at(mark_in_frame))