def __export(self): """Export annotations to a file.""" try: if conf.PYFORMS_DIALOGS_OPTIONS: filename, ffilter = QFileDialog.getSaveFileName( parent=self, caption="Export annotations file", directory="untitled.csv", filter="CSV Files (*.csv);;CSV Matrix Files (*.csv)", options=conf.PYFORMS_DIALOGS_OPTIONS) else: filename, ffilter = QFileDialog.getSaveFileName( parent=self, caption="Export annotations file", directory="untitled.csv", filter="CSV Files (*.csv);;CSV Matrix Files (*.csv)") filename = str(filename) ffilter = str(ffilter) if filename != "": with open(filename, 'w') as csvfile: spamwriter = csv.writer(csvfile, dialect='excel') if ffilter == 'CSV Files (*.csv)': self._time.export_events_to_csvwriter(spamwriter) elif ffilter == 'CSV Matrix Files (*.csv)': self._time.exportmatrix_events_to_csvwriter(spamwriter) except Exception as e: traceback.print_exc() m = QMessageBox(QMessageBox.Critical, 'Error', str(e)) m.exec_()
def save_image_as(self): img = self.get_selection().toImage() if img.isNull(): QMessageBox.critical(self, self.tr('Error'), self.tr('No image was selected!')) return self.hide() formats = { self.tr('Portable Network Graphics (*.png)'): 'png', self.tr('Joint Photographic Experts Group (*.jpg *.jpeg)'): 'jpg', self.tr('Graphics Interchange Format (*.gif)'): 'gif', self.tr('Bitmap (*.bmp)'): 'bmp', self.tr('All Images (*.png *.jpg *.gif *.bmp)'): 'all' } file_format = None destination = QFileDialog.getSaveFileName(self, 'Save image', '', ';;'.join(formats.keys())) if isinstance(destination, tuple): destination, file_format = destination file_format = formats[file_format] if file_format == 'all': file_format = None if not file_format: file_format = destination.rsplit('.', 1)[-1] if destination: if file_format not in formats.values(): file_format = 'png' if not destination.endswith('.' + file_format): destination += '.' + file_format img.save(destination, file_format, 0 if file_format == 'png' else 90) self.reject()
def save_report(self): """Save report""" filename, _ = QFileDialog.getSaveFileName( self, "Save Report", self.save_dir, "HTML (*.html);;PDF (*.pdf);;Report (*.report)") if not filename: return QDialog.Rejected self.save_dir = os.path.dirname(filename) self.saveSettings() _, extension = os.path.splitext(filename) if extension == ".pdf": printer = QPrinter() printer.setPageSize(QPrinter.A4) printer.setOutputFormat(QPrinter.PdfFormat) printer.setOutputFileName(filename) self.report_view.print_(printer) elif extension == ".report": self.save(filename) else: def save_html(contents): try: with open(filename, "w", encoding="utf-8") as f: f.write(contents) except PermissionError: self.permission_error(filename) save_html(self.report_view.html()) self.report_changed = False return QDialog.Accepted
def save_network(self): # TODO: this was never reviewed since Orange2 if self.view is None or self.graph is None: return filename = QFileDialog.getSaveFileName( self, 'Save Network', '', 'NetworkX graph as Python pickle (*.gpickle)\n' 'NetworkX edge list (*.edgelist)\n' 'Pajek network (*.net *.pajek)\n' 'GML network (*.gml)') if filename: _, ext = os.path.splitext(filename) if not ext: filename += ".net" items = self.graph.items() for i in range(self.graph.number_of_nodes()): graph_node = self.graph.node[i] plot_node = self.networkCanvas.networkCurve.nodes()[i] if items is not None: ex = items[i] if 'x' in ex.domain: ex['x'] = plot_node.x() if 'y' in ex.domain: ex['y'] = plot_node.y() graph_node['x'] = plot_node.x() graph_node['y'] = plot_node.y() network.readwrite.write(self.graph, filename)
def save_report(self): """Save report""" filename, _ = QFileDialog.getSaveFileName( self, "Save Report", self.save_dir, "HTML (*.html);;PDF (*.pdf);;Report (*.report)") if not filename: return QDialog.Rejected self.save_dir = os.path.dirname(filename) self.saveSettings() _, extension = os.path.splitext(filename) if extension == ".pdf": printer = QPrinter() printer.setPageSize(QPrinter.A4) printer.setOutputFormat(QPrinter.PdfFormat) printer.setOutputFileName(filename) self.report_view.print_(printer) elif extension == ".report": self.save(filename) else: def save_html(contents): try: with open(filename, "w", encoding="utf-8") as f: f.write(contents) except PermissionError: self.permission_error(filename) save_html(self.report_view.html()) self.report_changed = False return QDialog.Accepted
def export_clicked(self): filename = str(QFileDialog.getSaveFileName(self, 'Choose a file', '')) if filename != "": output = open(filename, 'w') for values in self._polygons.value: output.write((';'.join(values) + '\n')) output.close()
def saveScript(self): index = self.selectedScriptIndex() if index is not None: script = self.libraryList[index] filename = script.filename else: filename = os.path.expanduser("~/") filename, _ = QFileDialog.getSaveFileName( self, 'Save Python Script', filename, 'Python files (*.py)\nAll files(*.*)' ) if filename: fn = "" head, tail = os.path.splitext(filename) if not tail: fn = head + ".py" else: fn = filename f = open(fn, 'w') f.write(self.text.toPlainText()) f.close()
def export_tracking_file(self): filename, _ = QFileDialog.getSaveFileName(self, 'Select a file', selectedFilter='*.csv') if not filename: return filename = str(filename) if not filename.lower().endswith('.csv'): filename += '.csv' #Export only the selected bounds lower = 0 if self._boundings.value[0] < 0 else self._boundings.value[0] higher = len(self._data) if self._boundings.value[1] > ( len(self._data) + 1) else self._boundings.value[1] self._progress.min = lower self._progress.max = higher with open(filename, 'wb') as csvfile: spamwriter = csv.writer(csvfile, delimiter=',') for i in range(int(lower), int(higher)): self._progress.value = i if self._data[i] != None: spamwriter.writerow(self._data[i].row)
def save_window(self): allparams = self.controls data = {} self.save_form(data) filename, _ = QFileDialog.getSaveFileName(self, 'Select file') with open(filename, 'w') as output_file: json.dump(data, output_file)
def create_project_remote_repo(self): out = QFileDialog.getSaveFileName(self, \ 'Choose a bare git repository', \ self.local_proj_name+'.git', \ 'Bare git repo (*.git)') remote_loc = self.rgit.polish_url(out[0]) self.repo.clone(remote_loc, bare=True) self.rgit.remote('add', self.remote_name, remote_loc)
def save(self): fname, _ = QFileDialog.getSaveFileName( self, "File name", self._start_dir(), "Variable definitions (*.colors)") if not fname: return QSettings().setValue("colorwidget/last-location", os.path.split(fname)[0]) self._save_var_defs(fname)
def __prompt_save_file_evt(self): """ Opens a window for the user to select where to save the Harp sound file (.bin extension by default) """ self._filename.value, _ = QFileDialog.getSaveFileName() if self._filename.value: self._gen_btn.enabled = True else: self._gen_btn.enabled = False
def __export(self): """Export annotations to a file.""" filename, _ = QFileDialog.getSaveFileName(parent=self, caption="Export annotations file", directory=self.get_export_filename(), filter="CSV Files (*.csv)", options=QFileDialog.DontUseNativeDialog) if filename != '': self.export_csv(filename)
def __prompt_savig_evt(self): ''' Opens a window for user to select where to save the csv file ''' self._filename.value, _ = QFileDialog.getSaveFileName() if self._filename.value: self._stream_file.enabled = True else: self._stream_file.value = False self._stream_file.enabled = False
def save_file_as(self): file_name = self.filename or self.last_dir or os.path.expanduser("~") filename, _ = QFileDialog.getSaveFileName( self, "Select file", file_name, 'Distance files (*.dst)') if not filename: return self.filename = filename self.unconditional_save_file() self.last_dir = os.path.split(self.filename)[0] self.adjust_label()
def click(self): value = QFileDialog.getSaveFileName(self.parent, self._label, self.value, self.filter) if conf.PYFORMS_USE_QT5: value = value[0] else: value = str(value) if value and len(value) > 0: self.value = value
def save_file_as(self): file_name = self.filename or self.last_dir or os.path.expanduser("~") filename, _ = QFileDialog.getSaveFileName(self, "Select file", file_name, 'Distance files (*.dst)') if not filename: return self.filename = filename self.unconditional_save_file() self.last_dir = os.path.split(self.filename)[0] self.adjust_label()
def click(self): if self.saved_file_type == 'txt': value, _ = QFileDialog.getSaveFileName( self.parent, self._label, self.value, "Text Files (*.txt);;All Files (*)") elif self.saved_file_type == 'xlsx': value, _ = QFileDialog.getSaveFileName( self.parent, self._label, self.value, "Excel Files (*.xlsx);;All Files (*)") elif self.saved_file_type == 'json': value, _ = QFileDialog.getSaveFileName( self.parent, self._label, self.value, "Config Files (*.json);;All Files (*)") else: value, _ = QFileDialog.getSaveFileName(self.parent, self._label, self.value) if value and len(value) > 0: self.value = value if value[-1 - len( self.saved_file_type ):] == '.' + self.saved_file_type else value + '.' + self.saved_file_type
def get_file_name(start_dir, start_filter, file_formats): """ Get filename for the given possible file formats The function uses the standard save file dialog with filters from the given file formats. Extension is added automatically, if missing. If the user enters file extension that does not match the file format, (s)he is given a dialog to decide whether to fix the extension or the format. Function also returns the writer and filter to cover the case where the same extension appears in multiple filters. Although `file_format` is a dictionary that associates its extension with one writer, writers can still have other extensions that are allowed. Args: start_dir (str): initial directory, optionally including the filename start_filter (str): initial filter file_formats (list of Orange.data.io.FileFormat): file formats Returns: (filename, filter, writer), or `(None, None, None)` on cancel """ writers = sorted(set(file_formats.values()), key=lambda w: w.PRIORITY) filters = [format_filter(w) for w in writers] if start_filter not in filters: start_filter = filters[0] while True: filename, filter = QFileDialog.getSaveFileName(None, 'Save As...', start_dir, ';;'.join(filters), start_filter) if not filename: return None, None, None writer = writers[filters.index(filter)] base, ext = os.path.splitext(filename) if not ext: filename += writer.EXTENSIONS[0] elif ext not in writer.EXTENSIONS: format = writer.DESCRIPTION suggested_ext = writer.EXTENSIONS[0] suggested_format = \ ext in file_formats and file_formats[ext].DESCRIPTION res = fix_extension(ext, format, suggested_ext, suggested_format) if res == fix_extension.CANCEL: continue if res == fix_extension.CHANGE_EXT: filename = base + suggested_ext elif res == fix_extension.CHANGE_FORMAT: writer = file_formats[ext] filter = format_filter(writer) return filename, writer, filter
def export_2_csvfile_event(self, data_func): filename, ffilter = QFileDialog.getSaveFileName( parent=self, caption="Export data", directory="untitled.csv", filter="CSV Files (*.csv)") if filename is not None and len(filename.strip()) > 0: filename = str(filename) with open(filename, 'w') as outfile: for i in range(len(self)): v = data_func(i) if v is not None: outfile.write((';'.join(map(str, [i, v])) + '\n'))
def get_file_name(start_dir, start_filter, file_formats): """ Get filename for the given possible file formats The function uses the standard save file dialog with filters from the given file formats. Extension is added automatically, if missing. If the user enters file extension that does not match the file format, (s)he is given a dialog to decide whether to fix the extension or the format. Function also returns the writer and filter to cover the case where the same extension appears in multiple filters. Although `file_format` is a dictionary that associates its extension with one writer, writers can still have other extensions that are allowed. Args: start_dir (str): initial directory, optionally including the filename start_filter (str): initial filter file_formats (dict {extension: Orange.data.io.FileFormat}): file formats Returns: (filename, writer, filter), or `(None, None, None)` on cancel """ writers = sorted(set(file_formats.values()), key=lambda w: w.PRIORITY) filters = [format_filter(w) for w in writers] if start_filter not in filters: start_filter = filters[0] while True: filename, filter = QFileDialog.getSaveFileName( None, 'Save As...', start_dir, ';;'.join(filters), start_filter) if not filename: return None, None, None writer = writers[filters.index(filter)] base, ext = os.path.splitext(filename) if not ext: filename += writer.EXTENSIONS[0] elif ext not in writer.EXTENSIONS: format = writer.DESCRIPTION suggested_ext = writer.EXTENSIONS[0] suggested_format = \ ext in file_formats and file_formats[ext].DESCRIPTION res = fix_extension(ext, format, suggested_ext, suggested_format) if res == fix_extension.CANCEL: continue if res == fix_extension.CHANGE_EXT: filename = base + suggested_ext elif res == fix_extension.CHANGE_FORMAT: writer = file_formats[ext] filter = format_filter(writer) return filename, writer, filter
def click(self): if self.use_save_dialog: value = QFileDialog.getSaveFileName(self.parent, self._label, self.value) else: value = QFileDialog.getOpenFileName(self.parent, self._label, self.value) if _api.USED_API == _api.QT_API_PYQT5: value = value[0] elif _api.USED_API == _api.QT_API_PYQT4: value = str(value) if value and len(value) > 0: self.value = value
def click(self): if self.use_save_dialog: value = QFileDialog.getSaveFileName(self.parent, self._label, self.value) else: value = QFileDialog.getOpenFileName(self.parent, self._label, self.value) if conf.PYFORMS_USE_QT5: value = value[0] else: value = str(value) if value and len(value) > 0: self.value = value
def __export_2_csv_matrix(self): QMessageBox.warning( self, "Important!", 'Please note that this file cannot be imported after.') filename, _ = QFileDialog.getSaveFileName( parent=self, caption="Export matrix file", directory="untitled.csv", filter="CSV Files (*.csv)", options=QFileDialog.DontUseNativeDialog) if filename != "": with open(filename, 'w') as csvfile: spamwriter = csv.writer(csvfile, dialect='excel') self._time.exportmatrix_events_to_csvwriter(spamwriter)
def browse(self): """Select a filename using a Save file dialog.""" if self.filename is None: startdir = stdpaths.Documents else: startdir = os.path.dirname(self.filename) filename, _ = QFileDialog.getSaveFileName(self, self.tr("Save"), directory=startdir, filter=self.FILTER) if filename: if not filename.endswith(self.FILE_EXT): filename += self.FILE_EXT if self.model is not None: self.save(filename) else: self._remember(filename)
def click(self): if self.use_save_dialog: value, _ = QFileDialog.getSaveFileName(self.parent, self._label, self.value) else: value = QFileDialog.getOpenFileName( self.parent, self._label, self.value, options=conf.PYFORMS_DIALOGS_OPTIONS) if _api.USED_API == _api.QT_API_PYQT5: value = value[0] elif _api.USED_API == _api.QT_API_PYQT4: value = str(value) if value and len(value) > 0: self.value = value
def browse(self): """Select a filename using a Save file dialog.""" if self.filename is None: startdir = stdpaths.Documents else: startdir = os.path.dirname(self.filename) filename, _ = QFileDialog.getSaveFileName( self, self.tr("Save"), directory=startdir, filter=self.FILTER ) if filename: if not filename.endswith(self.FILE_EXT): filename += self.FILE_EXT if self.model is not None: self.save(filename) else: self._remember(filename)
def __export(self): """Export annotations to a file.""" filename, ffilter = QFileDialog.getSaveFileName( parent=self, caption="Export annotations file", directory="untitled.csv", filter="CSV Files (*.csv);;CSV Matrix Files (*.csv)", options=conf.PYFORMS_DIALOGS_OPTIONS) filename = str(filename) ffilter = str(ffilter) if filename != "": with open(filename, 'w') as csvfile: spamwriter = csv.writer(csvfile, dialect='excel') if ffilter == 'CSV Files (*.csv)': self._time.export_events_to_csvwriter(spamwriter) elif ffilter == 'CSV Matrix Files (*.csv)': self._time.exportmatrix_events_to_csvwriter(spamwriter)
def __export(self): """Export annotations to a file.""" filename, ffilter = QFileDialog.getSaveFileName( parent=self, caption="Export annotations file", directory="untitled.csv", filter="CSV Files (*.csv);;CSV Matrix Files (*.csv)", options=QFileDialog.DontUseNativeDialog) filename = str(filename) ffilter = str(ffilter) if filename != "": with open(filename, 'w') as csvfile: spamwriter = csv.writer(csvfile, dialect='excel') if ffilter == 'CSV Files (*.csv)': self._time.export_csv(spamwriter) elif ffilter == 'CSV Matrix Files (*.csv)': self._time.export_2_csv_matrix(spamwriter)
def __on_save_word_list(self): index = self._get_selected_word_list_index() if index is not None: word_list = self.library_model[index] filename = word_list.filename else: filename = os.path.expanduser("~/") filename, _ = QFileDialog.getSaveFileName( self, "Save Word List", filename, "Text files (*.txt)\nAll files(*.*)") if filename: head, tail = os.path.splitext(filename) if not tail: filename = head + ".txt" with open(filename, "w", encoding="utf-8") as f: for word in self.words_model: f.write(f"{word}\n")
def save_ontology(parent: OWWidget, filename: str, data: Dict): filename, _ = QFileDialog.getSaveFileName( parent, "Save Ontology", filename, ";;".join(SaveFileFormats) ) if filename: assert isinstance(data, dict) head, tail = os.path.splitext(filename) if tail == ".json": with open(filename, "w") as f: f.write(json.dumps(data)) elif tail == ".pkl": with open(filename, "wb") as f: pickle.dump(data, f) else: raise NotImplementedError()
def save_report(self): """Save report""" formats = OrderedDict(( ("HTML (*.html)", ".html"), ("PDF (*.pdf)", ".pdf"), ("Report (*.report)", ".report"), )) filename, selected_format = QFileDialog.getSaveFileName( self, "Save Report", self.save_dir, ";;".join(formats.keys())) if not filename: return QDialog.Rejected # Set appropriate extension if not set by the user expect_ext = formats[selected_format] if not filename.endswith(expect_ext): filename += expect_ext self.save_dir = os.path.dirname(filename) self.saveSettings() _, extension = os.path.splitext(filename) if extension == ".pdf": printer = QPrinter() printer.setPageSize(QPrinter.A4) printer.setOutputFormat(QPrinter.PdfFormat) printer.setOutputFileName(filename) self._print_to_printer(printer) elif extension == ".report": self.save(filename) else: def save_html(contents): try: with open(filename, "w", encoding="utf-8") as f: f.write(contents) except PermissionError: self.permission_error(filename) save_html(self.report_view.html()) self.report_changed = False return QDialog.Accepted
def _file_oper_click(self): value = None if self.use_save_dialog is True: # QFileDialog.getSaveFileName returns (path, AllFiles(*)) value, _ = \ QFileDialog.getSaveFileName( self.parent, self.label, self.value) elif self.use_save_dialog is False: # QFileDialog.getOpenFileName returns (path, AllFiles(*)) value, _ = \ QFileDialog.getOpenFileName( self.parent, self.label, self.value) else: raise ValueError( """Unsupported value for 'use_save_dialog' parameter""") value = str(value) # print(value) # TODO fix when no load file is provided if value: if self.use_save_dialog is True: self.su2_config.save_path = value self.trgt_cfg_editor.saved_config_path_label = \ self.su2_config.save_path saver = SU2ConfigSaver(su2_cfg_obj=self.su2_config, vert_tabs_w=self.trgt_tabs_w) saver.write_cfg() if self.use_save_dialog is False: self.su2_config.load_path = value self._parse_cfg(tb_prsd_cfg_pth=value) self.su2_config.set_sections_labels() self.trgt_tabs_w.vert_tab_w_ctrl._set_tabs() self.trgt_sect_sel_w.chkbx_list_ctrl._set_sections() # tabs must be refreshed self.trgt_cfg_editor.loaded_config_path_label = \ self.su2_config.load_path
def save_report(self): """Save report""" formats = OrderedDict((('HTML (*.html)', '.html'), ('PDF (*.pdf)', '.pdf'), ('Report (*.report)', '.report'))) filename, selected_format = QFileDialog.getSaveFileName( self, "Save Report", self.save_dir, ';;'.join(formats.keys())) if not filename: return QDialog.Rejected # Set appropriate extension if not set by the user expect_ext = formats[selected_format] if not filename.endswith(expect_ext): filename += expect_ext self.save_dir = os.path.dirname(filename) self.saveSettings() _, extension = os.path.splitext(filename) if extension == ".pdf": printer = QPrinter() printer.setPageSize(QPrinter.A4) printer.setOutputFormat(QPrinter.PdfFormat) printer.setOutputFileName(filename) self._print_to_printer(printer) elif extension == ".report": self.save(filename) else: def save_html(contents): try: with open(filename, "w", encoding="utf-8") as f: f.write(contents) except PermissionError: self.permission_error(filename) save_html(self.report_view.html()) self.report_changed = False return QDialog.Accepted
def export_tracking_file(self): filename, _ = QFileDialog.getSaveFileName(self, 'Select a file', selectedFilter='*.csv') if not filename: return filename = str(filename) if not filename.lower().endswith('.csv'): filename += '.csv' #Export only the selected bounds lower = 0 if self._boundings.value[0] < 0 else self._boundings.value[0] higher = len(self._data) if self._boundings.value[1] > ( len(self._data) + 1) else self._boundings.value[1] self._progress.min = lower self._progress.max = higher which_var = 0 if self._heatmapVarsList.value == 'Velocity' else 1 try: sphere = sphere_x, sphere_y, sphere_z, sphere_r = eval( self._sphere.value) except: sphere = None min_var, max_var = self._heatmapVarsBnds.value #Calculate the size of the map x_diff = self._data.xRange[1] - self._data.xRange[0] y_diff = self._data.yRange[1] - self._data.yRange[0] z_diff = self._data.zRange[1] - self._data.zRange[0] scale = self.fit_scale(x_diff, y_diff, z_diff) #Fit the best scale value with open(filename, 'wb') as csvfile: spamwriter = csv.writer(csvfile, delimiter=',') for i in range(int(lower), int(higher)): self._progress.value = i position = self._data[i].position x, y, z = position x += abs(self._data.xRange[0]) y += abs(self._data.yRange[0]) z += abs(self._data.zRange[0]) x = int(round(x * scale)) y = int(round(y * scale)) z = int(round(z * scale)) if sphere != None and lin_dist3d( (x, y, z), (sphere_x, sphere_y, sphere_z)) > sphere_r: continue if self._toggleHeatmapVars.checked: var = self._velocities[ i] if which_var == 0 else self._accelerations[i] if not (min_var <= var <= max_var): continue if self._data[i] == None: continue row2save = self._data[i].row if i > lower: row2save = row2save + [self._velocities[i]] if (i + 1) > lower: row2save = row2save + [self._accelerations[i]] spamwriter.writerow(row2save)