def __downloads_treeview_selection_changed(self, selection): """Called when selection changes. Sets download releated widgets and their sensitivity.""" downloads = gui.get_selected_values(self.downloads_treeview) number_selected = selection.count_selected_rows() # Disable tool buttons and menu items if nothing is selected, else # enable the ones that should be if number_selected < 1: self.__download_widgets_set_sensitive(False) elif number_selected == 1: self.unselect_all_menu_item.set_sensitive(True) self.remove_tool_button.set_sensitive(True) self.remove_imi.set_sensitive(True) self.details_tool_button.set_sensitive(True) self.details_imi.set_sensitive(True) if downloads: status = downloads[0].status self.__set_widgets_sensitivity_for_status(status) elif number_selected > 1: self.__download_widgets_set_sensitive(False) self.unselect_all_menu_item.set_sensitive(True) self.remove_tool_button.set_sensitive(True) self.remove_imi.set_sensitive(True) has_paused = has_canceled = has_active = False if downloads: for download in downloads: if download.status == PAUSED: has_paused = True elif download.status == CANCELED: has_canceled = True elif download.status == CONNECTING or \ download.status == DOWNLOADING: has_active = True if has_paused or has_canceled: self.resume_tool_button.set_sensitive(True) self.resume_imi.set_sensitive(True) if has_active: self.pause_tool_button.set_sensitive(True) self.pause_imi.set_sensitive(True) self.cancel_tool_button.set_sensitive(True) self.cancel_imi.set_sensitive(True) self.pause_imi.props.visible = self.pause_imi.props.sensitive self.resume_imi.props.visible = self.resume_imi.props.sensitive self.cancel_imi.props.visible = self.cancel_imi.props.sensitive # Details should only be possible if one row is selected self.details_tool_button.set_sensitive(False) self.details_imi.set_sensitive(False) # Select all should not be availible if all is selected already if number_selected == len(self.downloads_model): self.select_all_menu_item.set_sensitive(False) elif not self.select_all_menu_item.props.sensitive: self.select_all_menu_item.set_sensitive(True)
def __pause_selected_downloads(self, pause=True): downloads = gui.get_selected_values(self.downloads_treeview) if downloads: for download in downloads: if pause: download.pause() else: download.resume()
def __downloads_treeview_button_press_event(self, treeview, event, menu): """Show context menu for downloads treeview""" if event.type == gtk.gdk.BUTTON_PRESS and event.button == 3: n_selected = self.downloads_treeview_selection.count_selected_rows() downloads = gui.get_selected_values(self.downloads_treeview) if n_selected == 1: if downloads: self.open_imi.set_sensitive(not downloads[0].is_metalink) self.open_folder_imi.set_sensitive(True) self.details_imi.set_sensitive(True) menu.popup(None, None, None, event.button, event.time) return True elif n_selected > 1: self.open_imi.set_sensitive(False) self.open_folder_imi.set_sensitive(False) self.details_imi.set_sensitive(False) menu.popup(None, None, None, event.button, event.time) return True return False
def __details_selected_download(self, widget): """Shows details for the selected download. The details option will only be availble when only one download in selected.""" downloads = gui.get_selected_values(self.downloads_treeview) if downloads: DetailsDialog(downloads[0])
def __open_folder_imi_activate(self, imagemenuitem): """Opens the folder containing the download.""" downloads = gui.get_selected_values(self.downloads_treeview) if downloads: uri = gnomevfs.make_uri_from_input(downloads[0].path) gnome.ui.url_show_on_screen(uri, imagemenuitem.get_screen())
def __open_imi_activate(self, imagemenuitem): """Opens the downloaded file with the associated program.""" downloads = gui.get_selected_values(self.downloads_treeview) if downloads: gui.open_file_on_screen(downloads[0].file, imagemenuitem.get_screen())
def __remove_selected_downloads(self, widget=None): """Removes the selected download from DownloadList.""" downloads = gui.get_selected_values(self.downloads_treeview) for download in downloads: self.download_list.remove_download(download)
def __cancel_selected_downloads(self, widget): """Cancels the selected download in DownloadList.""" downloads = gui.get_selected_values(self.downloads_treeview) for download in downloads: download.cancel()