def show_open_dialog(self, directory=False): dialog = FileOperator.get_open_dialog(directory_mode=directory, parent=self, name_filter="full") if dialog.exec_(): try: file_names = dialog.selectedFiles() folders = [ folder for folder in file_names if os.path.isdir(folder) ] if len(folders) > 0: folder = folders[0] for f in self.signal_tab_controller.signal_frames: self.close_signal_frame(f) self.project_manager.set_project_folder(folder) else: self.setCursor(Qt.WaitCursor) file_names = FileOperator.uncompress_archives( file_names, QDir.tempPath()) self.add_files(file_names) self.unsetCursor() except Exception as e: Errors.generic_error(self.tr("Failed to open"), str(e), traceback.format_exc()) self.unsetCursor()
def show_open_dialog(self, directory=False): fip = FileIconProvider() self.dialog = QFileDialog(self) self.dialog.setIconProvider(fip) self.dialog.setDirectory(FileOperator.RECENT_PATH) self.dialog.setWindowTitle("Open Folder") if directory: self.dialog.setFileMode(QFileDialog.Directory) else: self.dialog.setFileMode(QFileDialog.ExistingFiles) self.dialog.setNameFilter( "All files (*);;Complex (*.complex);;Complex16 unsigned (*.complex16u);;Complex16 signed (*.complex16s);;Wave (*.wav);;Protocols (*.proto);;" "Fuzzprofiles (*.fuzz);;Tar Archives (*.tar *.tar.gz *.tar.bz2);;Zip Archives (*.zip)") self.dialog.setOptions(QFileDialog.DontResolveSymlinks) self.dialog.setViewMode(QFileDialog.Detail) if self.dialog.exec_(): try: file_names = self.dialog.selectedFiles() folders = [folder for folder in file_names if os.path.isdir(folder)] if len(folders) > 0: folder = folders[0] for f in self.signal_tab_controller.signal_frames: self.close_signal_frame(f) self.project_manager.set_project_folder(folder) else: file_names = FileOperator.uncompress_archives(file_names, QDir.tempPath()) self.add_files(file_names) except Exception as e: Errors.generic_error(self.tr("Failed to open"), str(e), traceback.format_exc()) QApplication.instance().restoreOverrideCursor()
def open(self): fip = FileIconProvider() self.dialog = QFileDialog(self) #tree = self.dialog.findChild(QTreeView) #""":type: QTreeView """ #tree.setRootIsDecorated(True) #tree.setItemsExpandable(True) # Damit SignalClick Behavior auch geht. Nachteil: Man muss immer den Open Button drücken #tree.blockSignals(True) self.dialog.setIconProvider(fip) self.dialog.setDirectory(FileOperator.RECENT_PATH) self.dialog.setWindowTitle("Open Folder") self.dialog.setFileMode(QFileDialog.ExistingFiles) self.dialog.setOptions(QFileDialog.DontUseNativeDialog | QFileDialog.DontResolveSymlinks) self.dialog.setViewMode(QFileDialog.Detail) self.dialog.setNameFilter( "All files (*);;Complex Files *.complex (*.complex);;Wav Files *.wav (*.wav);;Protocols *.txt (*.txt);;" "Tar Archives (*.tar *.tar.gz *.tar.bz2);;Zip Archives (*.zip)") self.dialog.currentChanged.connect(self.handle_dialog_selection_changed) if self.dialog.exec_(): fileNames = self.dialog.selectedFiles() folders = [folder for folder in fileNames if os.path.isdir(folder)] if len(folders) > 0: folder = folders[0] for f in self.signal_tab_controller.signal_frames: self.close_signal_frame(f) self.project_manager.set_project_folder(folder) else: fileNames = FileOperator.uncompress_archives(fileNames, QDir.tempPath()) self.add_files(fileNames)
def handle_files_dropped(self, files, group_id=0): """ :type files: list of QtCore.QUrl """ localfiles = [fileurl.path() for fileurl in files if fileurl.isLocalFile()] if len(localfiles) > 0: self.add_files(FileOperator.uncompress_archives(localfiles, QDir.tempPath()), group_id)
def __add_urls_to_group(self, file_urls, group_id=0): local_files = [ file_url.toLocalFile() for file_url in file_urls if file_url.isLocalFile() ] if len(local_files) > 0: self.add_files(FileOperator.uncompress_archives( local_files, QDir.tempPath()), group_id=group_id)
def on_open_recent_action_triggered(self): action = self.sender() try: if os.path.isdir(action.data()): self.project_manager.set_project_folder(action.data()) elif os.path.isfile(action.data()): self.add_files(FileOperator.uncompress_archives([action.data()], QDir.tempPath())) except Exception as e: Errors.generic_error(self.tr("Failed to open"), str(e), traceback.format_exc()) self.unsetCursor()
def on_open_recent_action_triggered(self): action = self.sender() try: if os.path.isdir(action.data()): self.project_manager.set_project_folder(action.data()) elif os.path.isfile(action.data()): self.setCursor(Qt.WaitCursor) self.add_files(FileOperator.uncompress_archives([action.data()], QDir.tempPath())) self.unsetCursor() except Exception as e: Errors.generic_error(self.tr("Failed to open"), str(e), traceback.format_exc()) self.unsetCursor()
def on_open_recent_action_triggered(self): action = self.sender() try: if os.path.isdir(action.data()): self.project_manager.set_project_folder(action.data()) elif os.path.isfile(action.data()): self.setCursor(Qt.WaitCursor) self.add_files(FileOperator.uncompress_archives([action.data()], QDir.tempPath())) self.unsetCursor() except Exception as e: Errors.exception(e) self.unsetCursor()
def read_opened_filenames(self): if self.project_file is not None: tree = ET.parse(self.project_file) root = tree.getroot() fileNames = [] for ftag in root.findall("open_file"): pos = int(ftag.attrib["position"]) filename = os.path.join(self.project_path, ftag.attrib["name"]) fileNames.insert(pos, filename) fileNames = FileOperator.uncompress_archives(fileNames, QDir.tempPath()) return fileNames return []
def test_uncompress_archives(self): temp_dir = tempfile.gettempdir() os.chdir(temp_dir) with tarfile.open("test.tar.gz", "w:gz") as tar: for name in ["1.complex", "2.complex", "3.complex"]: data = np.ones(10, dtype=np.complex64) data.tofile(name) tar.add(name) with ZipFile('test.zip', 'w') as zip: for name in ["4.complex", "5.complex"]: data = np.ones(20, dtype=np.complex64) data.tofile(name) zip.write(name) QApplication.instance().processEvents() QTest.qWait(self.WAIT_TIMEOUT_BEFORE_NEW) self.form.add_files( FileOperator.uncompress_archives(["test.tar.gz", "test.zip"], QDir.tempPath())) self.assertEqual(len(self.form.signal_tab_controller.signal_frames), 5) tar_md5 = hashlib.md5( open(os.path.join(temp_dir, "test.tar.gz"), 'rb').read()).hexdigest() self.form.signal_tab_controller.signal_frames[ 0].signal._fulldata = np.ones(5, dtype=np.complex64) self.form.signal_tab_controller.signal_frames[0].signal.changed = True self.form.signal_tab_controller.signal_frames[ 0].ui.btnSaveSignal.click() tar_md5_after_save = hashlib.md5( open(os.path.join(temp_dir, "test.tar.gz"), 'rb').read()).hexdigest() self.assertNotEqual(tar_md5, tar_md5_after_save) zip_md5 = hashlib.md5( open(os.path.join(temp_dir, "test.zip"), 'rb').read()).hexdigest() self.form.signal_tab_controller.signal_frames[ 4].signal._fulldata = np.ones(5, dtype=np.complex64) self.form.signal_tab_controller.signal_frames[4].signal.changed = True self.form.signal_tab_controller.signal_frames[ 4].ui.btnSaveSignal.click() zip_md5_after_save = hashlib.md5( open(os.path.join(temp_dir, "test.zip"), 'rb').read()).hexdigest() self.assertNotEqual(zip_md5, zip_md5_after_save)
def read_opened_filenames(self): if self.project_file is not None: tree = ET.parse(self.project_file) root = tree.getroot() file_names = [] for ftag in root.findall("open_file"): pos = int(ftag.attrib["position"]) filename = os.path.join(self.project_path, ftag.attrib["name"]) file_names.insert(pos, filename) QApplication.setOverrideCursor(Qt.WaitCursor) file_names = FileOperator.uncompress_archives(file_names, QDir.tempPath()) QApplication.restoreOverrideCursor() return file_names return []
def read_opened_filenames(self): if self.project_file is not None: tree = ET.parse(self.project_file) root = tree.getroot() file_names = [] for file_tag in root.findall("open_file"): pos = int(file_tag.attrib["position"]) filename = os.path.normpath(os.path.join(self.project_path, file_tag.attrib["name"])) file_names.insert(pos, filename) QApplication.setOverrideCursor(Qt.WaitCursor) file_names = FileOperator.uncompress_archives(file_names, QDir.tempPath()) QApplication.restoreOverrideCursor() return file_names return []
def show_open_dialog(self, directory=False): dialog = FileOperator.get_open_dialog(directory_mode=directory, parent=self, name_filter="full") if dialog.exec_(): try: file_names = dialog.selectedFiles() folders = [folder for folder in file_names if os.path.isdir(folder)] if len(folders) > 0: folder = folders[0] for f in self.signal_tab_controller.signal_frames: self.close_signal_frame(f) self.project_manager.set_project_folder(folder) else: self.setCursor(Qt.WaitCursor) file_names = FileOperator.uncompress_archives(file_names, QDir.tempPath()) self.add_files(file_names) self.unsetCursor() except Exception as e: Errors.generic_error(self.tr("Failed to open"), str(e), traceback.format_exc()) self.unsetCursor()
def test_uncompress_archives(self): temp_dir = tempfile.gettempdir() os.chdir(temp_dir) with tarfile.open("test.tar.gz", "w:gz") as tar: for name in ["1.complex", "2.complex", "3.complex"]: data = np.ndarray(10, dtype=np.complex64) data.tofile(name) tar.add(name) with ZipFile('test.zip', 'w') as zip: for name in ["4.complex", "5.complex"]: data = np.ndarray(10, dtype=np.complex64) data.tofile(name) zip.write(name) tests.utils_testing.short_wait() form = MainController() tests.utils_testing.short_wait() form.add_files(FileOperator.uncompress_archives(["test.tar.gz", "test.zip"], QDir.tempPath())) self.assertEqual(len(form.signal_tab_controller.signal_frames), 5) tar_md5 = hashlib.md5(open(os.path.join(temp_dir, "test.tar.gz"), 'rb').read()).hexdigest() form.signal_tab_controller.signal_frames[0].signal._fulldata = np.ones(5, dtype=np.complex64) form.signal_tab_controller.signal_frames[0].signal.changed = True form.signal_tab_controller.signal_frames[0].ui.btnSaveSignal.click() tar_md5_after_save = hashlib.md5(open(os.path.join(temp_dir, "test.tar.gz"), 'rb').read()).hexdigest() self.assertNotEqual(tar_md5, tar_md5_after_save) zip_md5 = hashlib.md5(open(os.path.join(temp_dir, "test.zip"), 'rb').read()).hexdigest() form.signal_tab_controller.signal_frames[4].signal._fulldata = np.ones(5, dtype=np.complex64) form.signal_tab_controller.signal_frames[4].signal.changed = True form.signal_tab_controller.signal_frames[4].ui.btnSaveSignal.click() zip_md5_after_save = hashlib.md5(open(os.path.join(temp_dir, "test.zip"), 'rb').read()).hexdigest() self.assertNotEqual(zip_md5, zip_md5_after_save)
def show_open_dialog(self, directory=False): fip = FileIconProvider() self.dialog = QFileDialog(self) self.dialog.setIconProvider(fip) self.dialog.setDirectory(FileOperator.RECENT_PATH) self.dialog.setWindowTitle("Open Folder") if directory: self.dialog.setFileMode(QFileDialog.Directory) else: self.dialog.setFileMode(QFileDialog.ExistingFiles) self.dialog.setNameFilter( "All files (*);;Complex (*.complex);;Complex16 unsigned (*.complex16u);;Complex16 signed (*.complex16s);;Wave (*.wav);;Protocols (*.proto);;" "Fuzzprofiles (*.fuzz);;Tar Archives (*.tar *.tar.gz *.tar.bz2);;Zip Archives (*.zip)") self.dialog.setOptions(QFileDialog.DontResolveSymlinks) self.dialog.setViewMode(QFileDialog.Detail) if self.dialog.exec_(): try: file_names = self.dialog.selectedFiles() folders = [folder for folder in file_names if os.path.isdir(folder)] if len(folders) > 0: folder = folders[0] for f in self.signal_tab_controller.signal_frames: self.close_signal_frame(f) self.project_manager.set_project_folder(folder) else: self.setCursor(Qt.WaitCursor) file_names = FileOperator.uncompress_archives(file_names, QDir.tempPath()) self.add_files(file_names) self.unsetCursor() except Exception as e: Errors.generic_error(self.tr("Failed to open"), str(e), traceback.format_exc()) QApplication.instance().restoreOverrideCursor()
def test_uncompress_archives(self): temp_dir = tempfile.gettempdir() os.chdir(temp_dir) with tarfile.open("test.tar.gz", "w:gz") as tar: for name in ["1.complex", "2.complex", "3.complex"]: data = np.ndarray(10, dtype=np.complex64) data.tofile(name) tar.add(name) with ZipFile('test.zip', 'w') as zip: for name in ["4.complex", "5.complex"]: data = np.ndarray(10, dtype=np.complex64) data.tofile(name) zip.write(name) QApplication.instance().processEvents() QTest.qWait(self.WAIT_TIMEOUT_BEFORE_NEW) self.form.add_files(FileOperator.uncompress_archives(["test.tar.gz", "test.zip"], QDir.tempPath())) self.assertEqual(len(self.form.signal_tab_controller.signal_frames), 5) tar_md5 = hashlib.md5(open(os.path.join(temp_dir, "test.tar.gz"), 'rb').read()).hexdigest() self.form.signal_tab_controller.signal_frames[0].signal._fulldata = np.ones(5, dtype=np.complex64) self.form.signal_tab_controller.signal_frames[0].signal.changed = True self.form.signal_tab_controller.signal_frames[0].ui.btnSaveSignal.click() tar_md5_after_save = hashlib.md5(open(os.path.join(temp_dir, "test.tar.gz"), 'rb').read()).hexdigest() self.assertNotEqual(tar_md5, tar_md5_after_save) zip_md5 = hashlib.md5(open(os.path.join(temp_dir, "test.zip"), 'rb').read()).hexdigest() self.form.signal_tab_controller.signal_frames[4].signal._fulldata = np.ones(5, dtype=np.complex64) self.form.signal_tab_controller.signal_frames[4].signal.changed = True self.form.signal_tab_controller.signal_frames[4].ui.btnSaveSignal.click() zip_md5_after_save = hashlib.md5(open(os.path.join(temp_dir, "test.zip"), 'rb').read()).hexdigest() self.assertNotEqual(zip_md5, zip_md5_after_save)
def __add_urls_to_group(self, file_urls, group_id=0): local_files = [file_url.toLocalFile() for file_url in file_urls if file_url.isLocalFile()] if len(local_files) > 0: self.setCursor(Qt.WaitCursor) self.add_files(FileOperator.uncompress_archives(local_files, QDir.tempPath()), group_id=group_id) self.unsetCursor()
def openRecent(self): action = self.sender() if os.path.isdir(action.data()): self.project_manager.set_project_folder(action.data()) elif os.path.isfile(action.data()): self.add_files(FileOperator.uncompress_archives([action.data()], QDir.tempPath()))