def on_right_click_item(self, pos): item_clicked = self.window().downloads_list.itemAt(pos) if not item_clicked or self.selected_items is None: return if item_clicked not in self.selected_items: self.selected_items.append(item_clicked) menu = TriblerActionMenu(self) start_action = QAction(tr("Start"), self) stop_action = QAction(tr("Stop"), self) remove_download_action = QAction(tr("Remove download"), self) add_to_channel_action = QAction(tr("Add to my channel"), self) force_recheck_action = QAction(tr("Force recheck"), self) export_download_action = QAction(tr("Export .torrent file"), self) explore_files_action = QAction(tr("Explore files"), self) move_files_action = QAction(tr("Move file storage"), self) no_anon_action = QAction(tr("No anonymity"), self) one_hop_anon_action = QAction(tr("One hop"), self) two_hop_anon_action = QAction(tr("Two hops"), self) three_hop_anon_action = QAction(tr("Three hops"), self) connect(start_action.triggered, self.on_start_download_clicked) start_action.setEnabled( DownloadsPage.start_download_enabled(self.selected_items)) connect(stop_action.triggered, self.on_stop_download_clicked) stop_action.setEnabled( DownloadsPage.stop_download_enabled(self.selected_items)) connect(add_to_channel_action.triggered, self.on_add_to_channel) connect(remove_download_action.triggered, self.on_remove_download_clicked) connect(force_recheck_action.triggered, self.on_force_recheck_download) force_recheck_action.setEnabled( DownloadsPage.force_recheck_download_enabled(self.selected_items)) connect(export_download_action.triggered, self.on_export_download) connect(explore_files_action.triggered, self.on_explore_files) connect(move_files_action.triggered, self.on_move_files) connect(no_anon_action.triggered, lambda _: self.change_anonymity(0)) connect(one_hop_anon_action.triggered, lambda _: self.change_anonymity(1)) connect(two_hop_anon_action.triggered, lambda _: self.change_anonymity(2)) connect(three_hop_anon_action.triggered, lambda _: self.change_anonymity(3)) menu.addAction(start_action) menu.addAction(stop_action) menu.addSeparator() menu.addAction(add_to_channel_action) menu.addSeparator() menu.addAction(remove_download_action) menu.addSeparator() menu.addAction(force_recheck_action) menu.addSeparator() exclude_states = [ DLSTATUS_METADATA, DLSTATUS_CIRCUITS, DLSTATUS_EXIT_NODES, DLSTATUS_HASHCHECKING, DLSTATUS_WAITING4HASHCHECK, ] if len(self.selected_items) == 1 and self.selected_items[ 0].get_raw_download_status() not in exclude_states: menu.addAction(export_download_action) menu.addAction(explore_files_action) if len(self.selected_items) == 1: menu.addAction(move_files_action) menu.addSeparator() menu_anon_level = menu.addMenu(tr("Change Anonymity ")) menu_anon_level.addAction(no_anon_action) menu_anon_level.addAction(one_hop_anon_action) menu_anon_level.addAction(two_hop_anon_action) menu_anon_level.addAction(three_hop_anon_action) menu.exec_(self.window().downloads_list.mapToGlobal(pos))
def on_right_click_item(self, pos): item_clicked = self.window().downloads_list.itemAt(pos) if not item_clicked or self.selected_items is None: return if item_clicked not in self.selected_items: self.selected_items.append(item_clicked) menu = TriblerActionMenu(self) start_action = QAction('Start', self) stop_action = QAction('Stop', self) remove_download_action = QAction('Remove download', self) add_to_channel_action = QAction('Add to my channel', self) force_recheck_action = QAction('Force recheck', self) export_download_action = QAction('Export .torrent file', self) explore_files_action = QAction('Explore files', self) move_files_action = QAction('Move file storage', self) no_anon_action = QAction('No anonymity', self) one_hop_anon_action = QAction('One hop', self) two_hop_anon_action = QAction('Two hops', self) three_hop_anon_action = QAction('Three hops', self) start_action.triggered.connect(self.on_start_download_clicked) start_action.setEnabled( DownloadsPage.start_download_enabled(self.selected_items)) stop_action.triggered.connect(self.on_stop_download_clicked) stop_action.setEnabled( DownloadsPage.stop_download_enabled(self.selected_items)) add_to_channel_action.triggered.connect(self.on_add_to_channel) remove_download_action.triggered.connect( self.on_remove_download_clicked) force_recheck_action.triggered.connect(self.on_force_recheck_download) force_recheck_action.setEnabled( DownloadsPage.force_recheck_download_enabled(self.selected_items)) export_download_action.triggered.connect(self.on_export_download) explore_files_action.triggered.connect(self.on_explore_files) move_files_action.triggered.connect(self.on_move_files) no_anon_action.triggered.connect(lambda: self.change_anonymity(0)) one_hop_anon_action.triggered.connect(lambda: self.change_anonymity(1)) two_hop_anon_action.triggered.connect(lambda: self.change_anonymity(2)) three_hop_anon_action.triggered.connect( lambda: self.change_anonymity(3)) menu.addAction(start_action) menu.addAction(stop_action) if self.window().vlc_available and len(self.selected_items) == 1: play_action = QAction('Play', self) play_action.triggered.connect(self.on_play_download_clicked) menu.addAction(play_action) menu.addSeparator() menu.addAction(add_to_channel_action) menu.addSeparator() menu.addAction(remove_download_action) menu.addSeparator() menu.addAction(force_recheck_action) menu.addSeparator() exclude_states = [ DLSTATUS_METADATA, DLSTATUS_CIRCUITS, DLSTATUS_EXIT_NODES, DLSTATUS_HASHCHECKING, DLSTATUS_WAITING4HASHCHECK, ] if len(self.selected_items) == 1 and self.selected_items[ 0].get_raw_download_status() not in exclude_states: menu.addAction(export_download_action) menu.addAction(explore_files_action) if len(self.selected_items) == 1: menu.addAction(move_files_action) menu.addSeparator() menu_anon_level = menu.addMenu("Change Anonymity ") menu_anon_level.addAction(no_anon_action) menu_anon_level.addAction(one_hop_anon_action) menu_anon_level.addAction(two_hop_anon_action) menu_anon_level.addAction(three_hop_anon_action) menu.exec_(self.window().downloads_list.mapToGlobal(pos))