def download_selected_files(self): selected_name_items = self.get_directly_selected_name_items() if len(selected_name_items) == 0: return downloads = [] def expand(name_item): item_type = name_item.data(USER_ROLE_ITEM_TYPE) if item_type == ITEM_TYPE_DIRECTORY: for i in range(name_item.rowCount()): expand(name_item.child(i, 0)) elif item_type == ITEM_TYPE_FILE: filename = get_full_item_path(name_item) downloads.append( Download(filename, QDir.toNativeSeparators(filename))) for selected_name_item in selected_name_items: expand(selected_name_item) if len(downloads) == 0: return download_directory = get_existing_directory( get_main_window(), 'Download Files', self.last_download_directory) if len(download_directory) == 0: return self.last_download_directory = download_directory self.show_download_wizard('files', download_directory, downloads)
def download_selected_files(self): selected_name_items = self.get_directly_selected_name_items() if len(selected_name_items) == 0: return downloads = [] def expand(name_item): item_type = name_item.data(USER_ROLE_ITEM_TYPE) if item_type == ITEM_TYPE_DIRECTORY: for i in range(name_item.rowCount()): expand(name_item.child(i, 0)) elif item_type == ITEM_TYPE_FILE: filename = get_full_item_path(name_item) downloads.append(Download(filename, QDir.toNativeSeparators(filename))) for selected_name_item in selected_name_items: expand(selected_name_item) if len(downloads) == 0: return download_directory = get_existing_directory(get_main_window(), 'Download Files', self.last_download_directory) if len(download_directory) == 0: return self.last_download_directory = download_directory self.show_download_wizard('files', download_directory, downloads)
def download_selected_logs(self): index_list = self.tree_logs.selectedIndexes() if len(index_list) == 0: return log_files_to_download = self.load_log_files_for_ops(index_list) if len(log_files_to_download['foobar']) == 0: return download_directory = get_existing_directory(get_main_window(), 'Download Logs', self.last_download_directory) if len(download_directory) == 0: return self.last_download_directory = download_directory downloads = [] for file_name in log_files_to_download['foobar']: downloads.append(Download(file_name, file_name)) self.show_download_wizard('logs', download_directory, downloads)
def show_add_directory_dialog(self): directory = get_existing_directory(get_main_window(), 'Add Directory', self.last_directory) if len(directory) == 0: return self.last_directory = directory if len( self.list_files.findItems(os.path.join(directory, '*'), Qt.MatchFixedString)) > 0: return uploads = [] progress = ExpandingProgressDialog(self) progress.set_progress_text_visible(False) progress.setWindowTitle('New Program') progress.setLabelText(u"Collecting content of {0}".format(directory)) progress.setModal(True) progress.setRange(0, 0) progress.show() for root, directories, files in os.walk(directory): if progress.wasCanceled(): break for filename in files: source = os.path.join(root, filename) target = QDir.fromNativeSeparators( os.path.relpath(source, directory)) uploads.append(Upload(source, target)) # ensure that the UI stays responsive QApplication.processEvents() if progress.wasCanceled(): break if progress.wasCanceled(): return progress.cancel() # FIXME: maybe add a warning if the directory contains very many files or large amounts of data item = QListWidgetItem(os.path.join(directory, '*')) item.setData(Qt.UserRole, uploads) item.setData(Qt.DecorationRole, self.folder_icon) self.list_files.addItem(item) self.completeChanged.emit()
def show_add_directory_dialog(self): directory = get_existing_directory(get_main_window(), 'Add Directory', self.last_directory) if len(directory) == 0: return self.last_directory = directory if len(self.list_files.findItems(os.path.join(directory, '*'), Qt.MatchFixedString)) > 0: return uploads = [] progress = ExpandingProgressDialog(self) progress.set_progress_text_visible(False) progress.setWindowTitle('New Program') progress.setLabelText(u"Collecting content of {0}".format(directory)) progress.setModal(True) progress.setRange(0, 0) progress.show() for root, directories, files in os.walk(directory): if progress.wasCanceled(): break for filename in files: source = os.path.join(root, filename) target = QDir.fromNativeSeparators(os.path.relpath(source, directory)) uploads.append(Upload(source, target)) # ensure that the UI stays responsive QApplication.processEvents() if progress.wasCanceled(): break if progress.wasCanceled(): return progress.cancel() # FIXME: maybe add a warning if the directory contains very many files or large amounts of data item = QListWidgetItem(os.path.join(directory, '*')) item.setData(Qt.UserRole, uploads) item.setData(Qt.DecorationRole, self.folder_icon) self.list_files.addItem(item) self.completeChanged.emit()