def _tline_audio_sync_dialog_callback(dialog, response_id, data): if response_id != Gtk.ResponseType.ACCEPT: dialog.destroy() return dialog.destroy() sync_move_frames = _tline_sync_data.clip_tline_media_offset - _tline_sync_data.media_offset_frames over_in = _tline_sync_data.origin_clip_start_in_tline + sync_move_frames over_out = over_in + (_tline_sync_data.origin_clip.clip_out - _tline_sync_data.origin_clip.clip_in) + 1 # We're not not supporting case where clip would start before timeline start. if over_in < 0: primary_txt = _("Audio sync move not possible") secondary_txt = _("Clip starts ") + str(over_in) + _(" frames before timeline start if it is moved \nto be in audio sync with the specified clip.\n\n") + \ _("You need to move forward or shorten the clips in question to make the operation succeed.") dialogutils.info_message(primary_txt, secondary_txt, gui.editor_window.window) return data = { "track": _tline_sync_data.origin_track, "over_in": over_in, "over_out": over_out, "selected_range_in": _tline_sync_data.origin_clip_index, "selected_range_out": _tline_sync_data.origin_clip_index, "move_edit_done_func": None } action = edit.overwrite_move_action(data) action.do_edit()
def _tline_audio_sync_dialog_callback(dialog, response_id, data): if response_id != Gtk.ResponseType.ACCEPT: dialog.destroy() return dialog.destroy() sync_move_frames = _tline_sync_data.clip_tline_media_offset - _tline_sync_data.media_offset_frames over_in = _tline_sync_data.origin_clip_start_in_tline + sync_move_frames over_out = over_in + (_tline_sync_data.origin_clip.clip_out - _tline_sync_data.origin_clip.clip_in) + 1 # We're not not supporting case where clip would start before timeline start. if over_in < 0: primary_txt = _("Audio sync move not possible") secondary_txt = _("Clip starts ") + str(over_in) + _(" frames before timeline start if it is moved \nto be in audio sync with the specified clip.\n\n") + \ _("You need to move forward or shorten the clips in question to make the operation succeed.") dialogutils.info_message(primary_txt, secondary_txt, gui.editor_window.window) return data = {"track":_tline_sync_data.origin_track, "over_in":over_in, "over_out":over_out, "selected_range_in":_tline_sync_data.origin_clip_index, "selected_range_out":_tline_sync_data.origin_clip_index, "move_edit_done_func":None} action = edit.overwrite_move_action(data) action.do_edit()
def nudge_selection(delta): global selected_track, selected_range_in, selected_range_out # Can't do this in middle of mouse edit if edit_data != None: return if drag_disabled != False: return # We need a selection for this if selected_track == -1: return # Collect edit data track = current_sequence().tracks[selected_track] selection_in_frame = track.clip_start(selected_range_in) over_in = selection_in_frame + delta # Can't move stuff off timeline if over_in < 0: return moving_length = 0 for i in range(selected_range_in, selected_range_out + 1): clip = track.clips[i] clip_length = clip.clip_out - clip.clip_in + 1 moving_length += clip_length over_out = over_in + moving_length # We need to save this data because edit auto clears selection selected_clips_count = selected_range_out - selected_range_in + 1 orig_selected_track = selected_track data = { "track": track, "over_in": over_in, "over_out": over_out, "selected_range_in": selected_range_in, "selected_range_out": selected_range_out, "move_edit_done_func": move_edit_done } action = edit.overwrite_move_action(data) action.do_edit() # Re-select moved clips new_sel_start = track.get_clip_index_at(over_in) new_sel_end = new_sel_start + selected_clips_count - 1 selected_track = orig_selected_track selected_range_in = new_sel_start selected_range_out = new_sel_end set_range_selection(orig_selected_track, new_sel_start, new_sel_end, True) updater.repaint_tline()
def overwrite_move_release(x, y, frame, state): """ User releases mouse when in overwrite move mode. """ global edit_data, drag_disabled if drag_disabled: drag_disabled = False return if edit_data == None: return press_frame = edit_data["press_frame"] first_clip_start = edit_data["first_clip_start"] track = edit_data["track_object"] to_track = edit_data["to_track_object"] over_in = first_clip_start + (frame - press_frame) over_out = over_in + edit_data["moving_length"] # Check locking of target track. Source track checked at press event. if _track_is_locked(to_track): edit_data = None tlinewidgets.set_edit_mode_data(edit_data) updater.repaint_tline() return # Moved lips are completely out of displayable track area, can't do edit. if over_out < 1: return # Autocorrect moved clips to be fully on displayable track area if over_in < 0: over_out += abs(over_in) over_in = 0 # Collect data for edit action data = {"track":track, "over_in":over_in, "over_out":over_out, "selected_range_in":selected_range_in, "selected_range_out":selected_range_out, "move_edit_done_func":move_edit_done} # Do edit. Use different actions depending on if # clip is moved to a differrent track if track == to_track: # Do edit if were moving and clips have moved if (edit_data["move_on"] == True and (press_frame != frame)): clear_selected_clips() action = edit.overwrite_move_action(data) action.do_edit() PLAYER().seek_frame(over_in, False) else: _move_mode_released() else: # Moved to different track data["to_track"] = to_track clear_selected_clips() action = edit.multitrack_overwrite_move_action(data) action.do_edit() PLAYER().seek_frame(over_in, False) # Clear edit mode data edit_data = None tlinewidgets.set_edit_mode_data(edit_data) updater.repaint_tline()
def overwrite_move_release(x, y, frame, state): """ User releases mouse when in overwrite move mode. """ global edit_data, drag_disabled if editorstate.overwrite_mode_box == True: boxmove.mouse_release(x, y, frame) edit_data = None return if drag_disabled: drag_disabled = False edit_data = None return if edit_data == None: return press_frame = edit_data["press_frame"] first_clip_start = edit_data["first_clip_start"] track = edit_data["track_object"] to_track = edit_data["to_track_object"] over_in = first_clip_start + (frame - press_frame) over_out = over_in + edit_data["moving_length"] # Check locking of target track. Source track checked at press event. if _track_is_locked(to_track): edit_data = None tlinewidgets.set_edit_mode_data(edit_data) updater.repaint_tline() return # Moved clips are completely out of displayable track area, can't do edit. if over_out < 1: edit_data = None return # Autocorrect moved clips to be fully on displayable track area if over_in < 0: over_out += abs(over_in) over_in = 0 # Collect data for edit action data = {"track":track, "over_in":over_in, "over_out":over_out, "selected_range_in":selected_range_in, "selected_range_out":selected_range_out, "move_edit_done_func":move_edit_done} # Do edit. Use different actions depending on if # clip is moved to a differrent track if track == to_track: # Do edit if were moving and clips have moved if (edit_data["move_on"] == True and (press_frame != frame)): clear_selected_clips() action = edit.overwrite_move_action(data) action.do_edit() PLAYER().seek_frame(over_in, False) else: _move_mode_released() else: # Moved to different track data["to_track"] = to_track clear_selected_clips() action = edit.multitrack_overwrite_move_action(data) action.do_edit() PLAYER().seek_frame(over_in, False) # Clear edit mode data edit_data = None tlinewidgets.set_edit_mode_data(edit_data) updater.repaint_tline()