def delete_media_files(force_delete=False): """ Deletes media file. Does not take into account if clips made from media file are still in sequence.(maybe change this) """ selection = gui.media_list_view.get_selected_media_objects() if len(selection) < 1: return file_ids = [] bin_indexes = [] # Get: # - list of integer keys to delete from Project.media_files # - list of indexes to delete from Bin.file_ids for media_obj in selection: file_id = media_obj.media_file.id file_ids.append(file_id) bin_indexes.append(media_obj.bin_index) # If clip is displayed in monitor clear it and disable clip button. if media_obj.media_file == MONITOR_MEDIA_FILE: editorstate._monitor_media_file = None gui.clip_editor_b.set_sensitive(False) # Check for proxy rendering issues if not forced delete if not force_delete: proxy_issues = False for file_id in file_ids: media_file = PROJECT().media_files[file_id] if media_file.has_proxy_file == True: proxy_issues = True if media_file.is_proxy_file == True: proxy_issues = True if proxy_issues: dialogs.proxy_delete_warning_dialog( gui.editor_window.window, _proxy_delete_warning_callback) return # Delete from bin bin_indexes.sort() bin_indexes.reverse() for i in bin_indexes: current_bin().file_ids.pop(i) # Delete from project for file_id in file_ids: PROJECT().media_files.pop(file_id) gui.media_list_view.fill_data_model() _enable_save()
def delete_media_files(force_delete=False): """ Deletes media file. Does not take into account if clips made from media file are still in sequence.(maybe change this) """ selection = gui.media_list_view.get_selected_media_objects() if len(selection) < 1: return file_ids = [] bin_indexes = [] # Get: # - list of integer keys to delete from Project.media_files # - list of indexes to delete from Bin.file_ids for media_obj in selection: file_id = media_obj.media_file.id file_ids.append(file_id) bin_indexes.append(media_obj.bin_index) # If clip is displayed in monitor clear it and disable clip button. if media_obj.media_file == MONITOR_MEDIA_FILE: editorstate._monitor_media_file = None gui.clip_editor_b.set_sensitive(False) # Check for proxy rendering issues if not forced delete if not force_delete: proxy_issues = False for file_id in file_ids: media_file = PROJECT().media_files[file_id] if media_file.has_proxy_file == True: proxy_issues = True if media_file.is_proxy_file == True: proxy_issues = True if proxy_issues: dialogs.proxy_delete_warning_dialog(gui.editor_window.window, _proxy_delete_warning_callback) return # Delete from bin bin_indexes.sort() bin_indexes.reverse() for i in bin_indexes: current_bin().file_ids.pop(i) # Delete from project for file_id in file_ids: PROJECT().media_files.pop(file_id) gui.media_list_view.fill_data_model() _enable_save()
def delete_selected_bin(): """ Deletes current bin if it's empty and at least one will be left. """ if len(current_bin().file_ids) != 0: dialogutils.warning_message(_("Can't remove a non-empty bin"), _("You must remove all files from the bin before deleting it."), gui.editor_window.window) return # Get iter and index for (current) selected bin selection = gui.bin_list_view.treeview.get_selection() model, iter = selection.get_selected() if len(model) < 2: dialogutils.warning_message(_("Can't remove last bin"), _("There must always exist at least one bin."), gui.editor_window.window) return (model, rows) = selection.get_selected_rows() row = max(rows[0]) # Remove from gui and project data model.remove(iter) PROJECT().bins.pop(row) # Set first bin selected, listener 'bin_selection_changed' updates editorstate.project.c_bin selection.select_path("0") _enable_save()
def move_files_to_bin(new_bin, bin_indexes): # If we're moving clips to bin that they're already in, do nothing. if PROJECT().bins[new_bin] == current_bin(): return # Delete from current bin moved_ids = [] bin_indexes.sort() bin_indexes.reverse() for i in bin_indexes: moved_ids.append(current_bin().file_ids.pop(i)) # Add to target bin for file_id in moved_ids: PROJECT().bins[new_bin].file_ids.append(file_id) gui.media_list_view.fill_data_model() gui.bin_list_view.fill_data_model()
def media_file_row_double_clicked(treeview, tree_path, col): gui.tline_canvas.widget.grab_focus() row = max(tree_path) media_file_id = editorstate.current_bin().file_ids[row] media_file = PROJECT().media_files[media_file_id] set_and_display_monitor_media_file(media_file)