def mouse_press(event, frame): track = current_sequence().tracks[compositor.transition.b_track - 1] global edit_data, sub_mode compositor_y = tlinewidgets._get_track_y(track.id) - tlinewidgets.COMPOSITOR_HEIGHT_OFF if abs(event.x - tlinewidgets._get_frame_x(compositor.clip_in)) < TRIM_HANDLE_WIDTH: edit_data = {"clip_in":compositor.clip_in, "clip_out":compositor.clip_out, "trim_is_clip_in":True, "compositor_y": compositor_y, "compositor": compositor} tlinewidgets.set_edit_mode(edit_data, tlinewidgets.draw_compositor_trim) sub_mode = TRIM_EDIT elif abs(event.x - tlinewidgets._get_frame_x(compositor.clip_out + 1)) < TRIM_HANDLE_WIDTH: edit_data = {"clip_in":compositor.clip_in, "clip_out":compositor.clip_out, "trim_is_clip_in":False, "compositor_y": compositor_y, "compositor": compositor} tlinewidgets.set_edit_mode(edit_data, tlinewidgets.draw_compositor_trim) sub_mode = TRIM_EDIT else: edit_data = {"press_frame":frame, "current_frame":frame, "clip_in":compositor.clip_in, "clip_length":(compositor.clip_out - compositor.clip_in + 1), "compositor_y": compositor_y, "compositor": compositor} tlinewidgets.set_edit_mode(edit_data, tlinewidgets.draw_compositor_move_overlay) sub_mode = MOVE_EDIT updater.repaint_tline()
def _tline_overlay(cr, pos): if _clip_is_being_edited() == False: return track = edit_data["track"] ty = tlinewidgets._get_track_y(track.id) cx_start = tlinewidgets._get_frame_x(track.clip_start(edit_data["clip_index"])) clip = track.clips[edit_data["clip_index"]] cx_end = tlinewidgets._get_frame_x(track.clip_start(edit_data["clip_index"]) + clip.clip_out - clip.clip_in + 1) # +1 because out inclusive height = EDIT_AREA_HEIGHT cy_start = ty - height/2 # Draw bg cr.set_source_rgba(*OVERLAY_BG) cr.rectangle(cx_start, cy_start, cx_end - cx_start, height) cr.fill() # Top row cr.set_source_surface(HAMBURGER_ICON, cx_start, cy_start) cr.paint() cr.set_source_surface(CLOSE_ICON, cx_start + (cx_end - cx_start) - 14, cy_start + 2) cr.paint() try: ep = edit_data["editable_property"] _draw_edit_area_borders(cr, cx_start, cy_start, cx_end - cx_start, height) except: _draw_edit_area_borders(cr, cx_start, cy_start, cx_end - cx_start, height)
def track_center_pressed(data): if data.event.button == 1: # handle possible mute icon presses press_x = data.event.x press_y = data.event.y track = tlinewidgets.get_track(press_y) if track == None: return y_off = press_y - tlinewidgets._get_track_y(track.id) ICON_WIDTH = 12 if press_x > tlinewidgets.COLUMN_LEFT_PAD and press_x < tlinewidgets.COLUMN_LEFT_PAD + ICON_WIDTH: # Mute icon x area hit ix, iy = tlinewidgets.MUTE_ICON_POS if track.height > appconsts.TRACK_HEIGHT_SMALL: ix, iy = tlinewidgets.MUTE_ICON_POS_NORMAL ICON_HEIGHT = 10 if track.id >= current_sequence().first_video_index: # Video tracks # Test mute switches if y_off > iy and y_off < iy + ICON_HEIGHT: # Video mute icon hit if track.mute_state == appconsts.TRACK_MUTE_NOTHING: new_mute_state = appconsts.TRACK_MUTE_VIDEO elif track.mute_state == appconsts.TRACK_MUTE_VIDEO: new_mute_state = appconsts.TRACK_MUTE_NOTHING elif track.mute_state == appconsts.TRACK_MUTE_AUDIO: new_mute_state = appconsts.TRACK_MUTE_ALL elif track.mute_state == appconsts.TRACK_MUTE_ALL: new_mute_state = appconsts.TRACK_MUTE_AUDIO elif y_off > iy + ICON_HEIGHT and y_off < iy + ICON_HEIGHT * 2: # Audio mute icon hit if track.mute_state == appconsts.TRACK_MUTE_NOTHING: new_mute_state = appconsts.TRACK_MUTE_AUDIO elif track.mute_state == appconsts.TRACK_MUTE_VIDEO: new_mute_state = appconsts.TRACK_MUTE_ALL elif track.mute_state == appconsts.TRACK_MUTE_AUDIO: new_mute_state = appconsts.TRACK_MUTE_NOTHING elif track.mute_state == appconsts.TRACK_MUTE_ALL: new_mute_state = appconsts.TRACK_MUTE_VIDEO else: return else: # Audio tracks # Test mute switches iy = iy + 6 # Mute icon is lower on audio tracks if y_off > iy and y_off < iy + ICON_HEIGHT: if track.mute_state == appconsts.TRACK_MUTE_VIDEO: new_mute_state = appconsts.TRACK_MUTE_ALL else: new_mute_state = appconsts.TRACK_MUTE_VIDEO else: return # Update track mute state current_sequence().set_track_mute_state(track.id, new_mute_state) gui.tline_column.widget.queue_draw() if data.event.button == 3: guicomponents.display_tracks_popup_menu(data.event, data.track, \ _track_menu_item_activated)
def _tline_overlay(cr): if _clip_is_being_edited() == False: return track = edit_data["track"] cx_start = tlinewidgets._get_frame_x(edit_data["clip_start_in_timeline"]) clip = track.clips[edit_data["clip_index"]] cx_end = tlinewidgets._get_frame_x(track.clip_start(edit_data["clip_index"]) + clip.clip_out - clip.clip_in + 1) # +1 because out inclusive # Get y position for clip's track ty_bottom = tlinewidgets._get_track_y(1) + current_sequence().tracks[1].height ty_top = tlinewidgets._get_track_y(len(current_sequence().tracks) - 2) - 6 # -6 is hand correction, no idea why the math isn't getting correct pos top most track ty_top_bottom_edge = ty_top + EDIT_AREA_HEIGHT off_step = float(ty_bottom - ty_top_bottom_edge) / float(len(current_sequence().tracks) - 2) ty_off = off_step * float(track.id - 1) ty = ty_bottom - ty_off cy_start = ty - EDIT_AREA_HEIGHT # Set draw params and draw _kf_editor.set_allocation(cx_start, cy_start, cx_end - cx_start, EDIT_AREA_HEIGHT) _kf_editor.source_track_center = tlinewidgets._get_track_y(track.id) + current_sequence().tracks[track.id].height / 2.0 _kf_editor.draw(cr)
def _tline_overlay(cr): if _clip_is_being_edited() == False: return track = edit_data["track"] ty = tlinewidgets._get_track_y(track.id) cx_start = tlinewidgets._get_frame_x(edit_data["clip_start_in_timeline"]) clip = track.clips[edit_data["clip_index"]] cx_end = tlinewidgets._get_frame_x( track.clip_start(edit_data["clip_index"]) + clip.clip_out - clip.clip_in + 1) # +1 because out inclusive height = EDIT_AREA_HEIGHT cy_start = ty - height / 2 _kf_editor.set_allocation(cx_start, cy_start, cx_end - cx_start, height) _kf_editor.draw(cr)
def _tline_overlay(cr, pos): if _clip_is_being_edited() == False: return track = edit_data["track"] ty = tlinewidgets._get_track_y(track.id) cx_start = tlinewidgets._get_frame_x( track.clip_start(edit_data["clip_index"])) clip = track.clips[edit_data["clip_index"]] cx_end = tlinewidgets._get_frame_x( track.clip_start(edit_data["clip_index"]) + clip.clip_out - clip.clip_in + 1) # +1 because out inclusive height = EDIT_AREA_HEIGHT cr.set_source_rgba(*OVERLAY_BG) cr.rectangle(cx_start, ty - height / 2, cx_end - cx_start, height) cr.fill()