def save(self, save_as=False): if save_as: name_filter = "Graph files (*.json)" savepath = QFileDialog.getSaveFileName(filter=name_filter) if type(savepath) in [tuple, list]: pth = savepath[0] else: pth = savepath if not pth == '': self._current_file_name = pth else: self._current_file_name = "Untitled" else: if not os.path.isfile(self._current_file_name): name_filter = "Graph files (*.json)" savepath = QFileDialog.getSaveFileName(filter=name_filter) if type(savepath) in [tuple, list]: pth = savepath[0] else: pth = savepath if not pth == '': self._current_file_name = pth else: self._current_file_name = "Untitled" if self._current_file_name in ["", "Untitled"]: return if not self._current_file_name == '': with open(self._current_file_name, 'w') as f: saveData = self.graphManager.serialize() json.dump(saveData, f, indent=4) print(str("// saved: '{0}'".format(self._current_file_name)))
def onExport(self, root=None): try: savePath, selectedFilter = QFileDialog.getSaveFileName(filter="Python node data (*.pynode)", dir=root) except: savePath, selectedFilter = QFileDialog.getSaveFileName(filter="Python node data (*.pynode)") if savePath != "": with open(savePath, 'w') as f: f.write(self.nodeData) logger.info("{0} data successfully exported!".format(self.getName()))
def onExport(self, root=None): try: savePath, selectedFilter = QFileDialog.getSaveFileName( filter="Subgraph data (*.compound)", dir=root) except: savePath, selectedFilter = QFileDialog.getSaveFileName( filter="Subgraph data (*.compound)") if savePath != "": with open(savePath, 'w') as f: json.dump(self._rawNode.rawGraph.serialize(), f, indent=4) logger.info("{0} data successfully exported!".format( self.getName()))
def handle_scheme(self, url): command = url.path() if command.startswith("log"): self.session.logger.info(command[len("log_"):]) elif command == "Open": self.openFile() elif command.startswith("FrameChange"): frame = int(command[len("FrameChange_T_"):]) self.changeModel(frame, command[12] == 'T') elif command == "MovieDone": movie_encode(self.session, output=[self.movieName], format="h264") elif command == "MovieStart": fileName, filt = QFileDialog.getSaveFileName( caption="Save Movie", filter="MP4 File (*.mp4)") if fileName == "": return if fileName[-4:] != ".mp4": fileName = fileName + ".mp4" self.movieName = fileName movie_record(self.session) self.html_view.runJavaScript("startMovie()") elif command == "Attribute": self.loadAttributeFile() else: self.session.logger.info("Unknown Command: " + str(url))
def do(self): name_filter = "Image (*.{0})".format(self.format.lower()) fName = QFileDialog.getSaveFileName(filter=name_filter) if not fName[0] == '': print("save screen to {0}".format(fName[0])) img = self.canvas.grab() img.save(fName[0], format=self.format, quality=100)
def do(self): try: rootGraph = self.pyFlowInstance.graphManager.get().findRootGraph() nodes = [] connections = [] global_config = {} for node in rootGraph.getNodesList(): if node.name == GlobalPropertiesNode.__name__: global_config["pipeline_version"] = "test" global_config["Leon OS frequency [kHz]"] = get_pin_value( node.inputs.values(), 'leon_os_freq') elif not isinstance(node, ExportableNode): continue node, node_connections = node.export() nodes.append(node) connections += node_connections export = json.dumps({ "globalProperties": global_config, "nodes": nodes, "connections": connections }) outFilePath, filterString = QFileDialog.getSaveFileName( filter="Pipeline config (*.json)") if outFilePath != "": with open(outFilePath, 'w') as f: f.write(export) print("saved!") except Exception as e: QMessageBox.warning(self.pyFlowInstance, "Warning", str(e))
def saveOperation(self): filename = QFileDialog.getSaveFileName(self, 'Save file', './screenshot.png', '*.png;;*.jpg') if len(filename[0]) == 0: return else: self.saveScreenshot(False, filename[0], filename[1][2:]) self.close()
def doExport(pyFlowInstance): supportedDataTypes = { "IntPin", "FloatPin", "BoolPin", "StringPin", "ExecPin" } supportedStructures = {PinStructure.Single} script = "# -*- coding: utf-8 -*-\n\n" script += "# This file was auto-generated by PyFlow exporter '{0} v{1}'\n".format( PythonScriptExporter.displayName(), str(PythonScriptExporter.version())) script += "#\tCreated: {0}\n\n".format( PythonScriptExporter.creationDateString()) script += "EXPORTER_NAME = '{}'\n".format( PythonScriptExporter.displayName()) script += "EXPORTER_VERSION = '{}'\n\n".format( str(PythonScriptExporter.version())) rootGraph = pyFlowInstance.graphManager.get().findRootGraph() if len(rootGraph.getNodesList()) == 0: QMessageBox.warning(pyFlowInstance, "Warning", "Nothing to export!") return try: # create root level nodes graphScript = "" for node in rootGraph.getNodesList(): graphScript += nodeToScript(node, supportedDataTypes, supportedStructures) graphScript += "\n# connect pins\n" # create connections # for node in rootGraph.getNodesList(): # for outPin in node.outputs.values(): # for inPinName in outPin.linkedTo: # inPin = pyFlowInstance.graphManager.get().findPinByName(inPinName) # graphScript += "{0} = ROOT_GRAPH.graphManager.findPinByName('{1}')\n".format(outPin.getFullName(), outPin.getFullName()) # graphScript += "{0} = ROOT_GRAPH.graphManager.findPinByName('{1}')\n".format(inPin.getFullName(), inPin.getFullName()) # graphScript += "connectPins({0}, {1})\n".format(outPin.getFullName(), inPin.getFullName()) wrappedGraphScript = wrapStringToFunctionDef( "createScene", graphScript, {"ROOT_GRAPH": None}) script += wrappedGraphScript + "\n" outFilePath, filterString = QFileDialog.getSaveFileName( filter=PythonScriptExporter.name_filter) if outFilePath != "": with open(outFilePath, 'w') as f: f.write(script) print("saved!") except Exception as e: QMessageBox.warning(pyFlowInstance, "Warning", str(e))
def save_csv(self): """save data on current tab to CSV file""" filename, _ = QFileDialog.getSaveFileName(filter="CSV Files (*.csv)") if filename: s = self.get_csv() with open(filename, 'w') as f: f.write(s.strip()) self.session.logger.status("saved to %s" % filename)
def save_file(self): filter_list = 'File({})'.format(' '.join( ['*' + e for e in self.filters])) if self.filters else 'Any File(*)' r_file, _ = QFileDialog.getSaveFileName(self, 'Save File', self.path, filter_list) if not r_file: return self.fileChanged.emit(r_file) self.path = r_file
def save_file_dialog(title, start_directory=None, pattern=None): """ Shows save file dialog :param title: str :param start_directory: str :param pattern: str :return: str """ return QFileDialog.getSaveFileName(None, title, start_directory, pattern)[0]
def onFileSaveAs(self): path, _ = QFileDialog.getSaveFileName( self, self.tr("Save MarkDown File"), "", self.tr("MarkDown File (*.md, *.markdown)"), ) if not path: return self.m_filePath = path self.onFileSave()
def save(self): filename, _ = QFileDialog.getSaveFileName(filter="CSV Files (*.csv)") if filename: s = "iteration,energy\n" for i, nrg in enumerate(self.ys): s += "%i,%f\n" % (self.structure.coordset_ids[i], nrg) with open(filename, 'w') as f: f.write(s.strip()) print("saved to %s" % filename)
def save(self, delta): """ Saves the file, either as full or delta """ if self.data.filename: filename = self.data.filename else: filename = os.getcwd() filename = QFileDialog.getSaveFileName(self, "Save particle file", filename, 'Particle Files (*.bgeo *.geo *.bhclassic *.ptc *.pdb );;All files(*)') if isinstance(filename, tuple): filename = filename[0] filename = str(filename) if not filename: return self.data.write(filename, delta)
def save(self): if not config.HAVE_PYEVTK: msg = QMessageBox(QMessageBox.Critical, 'Error', 'VTK output disabled. Pleas install pyvtk.') msg.exec_() return filename = QFileDialog.getSaveFileName(self, 'Save as vtk file')[0] base_name = filename.split('.vtu')[0].split('.vtk')[0].split('.pvd')[0] if base_name: if len(self.U) == 1: write_vtk(self.grid, NumpyVectorSpace.make_array(self.U[0]), base_name, codim=self.codim) else: for i, u in enumerate(self.U): write_vtk(self.grid, NumpyVectorSpace.make_array(u), f'{base_name}-{i}', codim=self.codim)
def save(self): if not config.HAVE_PYVTK: msg = QMessageBox(QMessageBox.Critical, 'Error', 'VTK output disabled. Pleas install pyvtk.') msg.exec_() return filename = QFileDialog.getSaveFileName(self, 'Save as vtk file')[0] base_name = filename.split('.vtu')[0].split('.vtk')[0].split('.pvd')[0] if base_name: if len(self.U) == 1: write_vtk(self.grid, NumpyVectorSpace.make_array(self.U[0]), base_name, codim=self.codim) else: for i, u in enumerate(self.U): write_vtk(self.grid, NumpyVectorSpace.make_array(u), '{}-{}'.format(base_name, i), codim=self.codim)
def save(self, delta): """ Saves the file, either as full or delta """ if self.data.filename: filename = self.data.filename else: filename = os.getcwd() filename = QFileDialog.getSaveFileName( self, "Save particle file", filename, 'Particle Files (*.bgeo *.geo *.bhclassic *.ptc *.pdb );;All files(*)' ) if isinstance(filename, tuple): filename = filename[0] filename = str(filename) if not filename: return self.data.write(filename, delta)
def doExport(pyFlowInstance): script = "// This file was auto-generated by PyFlow exporter '{0} v{1}'\n".format( CPPCompiler.displayName(), str(CPPCompiler.version())) script += "// Created: {0}\n\n".format( CPPCompiler.creationDateString()) script += "#include <iostream>\n\n" script += "int main()\n" script += "{\n" rootGraph = pyFlowInstance.graphManager.get().findRootGraph() if len(rootGraph.getNodes()) == 0: QMessageBox.warning(pyFlowInstance, "Warning", "Nothing to export!") return consoleOutNode = pyFlowInstance.graphManager.get().findNode( "consoleOutput") if consoleOutNode is None: QMessageBox.warning(pyFlowInstance, "Warning", "Console out node not found") return consoleOutNode[DEFAULT_IN_EXEC_NAME].call() script += '\tstd::cout << "{}\\n";\n'.format( consoleOutNode["entity"].getData()) script += "}\n" outFilePath, filterString = QFileDialog.getSaveFileName( filter="c++ source (*.cpp)") if outFilePath != "": with open(outFilePath, 'w') as f: f.write(script) cmd = [ "g++.exe", outFilePath, "-std=c++11", "-o", outFilePath.replace(".cpp", ".exe") ] myEnv = os.environ.copy() proc = subprocess.Popen(cmd, shell=True, env=myEnv, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) proc.communicate() print("EXE OUTPUT:", subprocess.check_output(outFilePath.replace(".cpp", ".exe")))
def saveState(self, filename=None): """Save current program state, including data source and variables, to file""" if filename is None: tr = self.tr defaultfile = os.path.join(self.config_dir, "saved_state.pyx") filename, _ = QFileDialog.getSaveFileName( self, dir=defaultfile, filter=tr("PyXPad save file (*.pyx)")) if (filename is None) or (filename == ""): return try: with open(filename, "wb") as f: self.sources.saveState(f) pickle.dump(self.data, f) self.write("** Saved state to file '" + filename + "'") except: e = sys.exc_info() self.write("Could not save state to file '" + filename + "'") self.write("\t ->" + str(e[1]))
def save_options_as(self): """Save options to file with new filename""" if not self.filename: self.filename = DEFAULT_OPTIONS_FILENAME self.filename, _ = QFileDialog.getSaveFileName(self, "Save grid to file", self.filename, filter=YAML_FILTER) if not self.filename: return # If there was no extension, add one, unless the file already exists path = pathlib.Path(self.filename) if not path.exists() and path.suffix == "": self.filename += ".yml" self.save_options()
def get_save_filename(title='Save File', file_dir=None, ext_filter='*', parent=None): """ Opens a save file dialog :param title: str :param file_dir: str :param ext_filter: str :param parent: QWidget :return: str, selected file path """ file_dir = file_dir or CURRENT_DIR file_dialog = QFileDialog.getSaveFileName(parent, title, file_dir, ext_filter) file_path = file_dialog[0] or None if file_path: set_current_directory(file_path) return file_dialog
def saveState(self, filename=None): """ Saves program state to given file. If no file is specified, then a dialog is created to ask the user for one. """ if filename is None: tr = self.tr defaultfile = os.path.join(self.config_dir, "saved_state.pyx") filename, _ = QFileDialog.getSaveFileName(self, dir=defaultfile, filter=tr("PyXPad save file (*.pyx)")) if (filename is None) or (filename == ""): return try: with open(filename, 'wb') as f: self.sources.saveState(f) pickle.dump(self.data, f) self.write("** Saved state to file '"+filename+"'") except: e = sys.exc_info() self.write("Could not save state to file '"+filename+"'") self.write("\t ->" + str(e[1]))
def export(self): from . import _nodeClasses from ..FunctionLibraries import _foos from ..SubGraphs import _subgraphClasses from .. import SubGraphs existing_nodes = [n for n in _nodeClasses] existing_nodes += [n for n in _foos] existing_nodes += [n for n in _subgraphClasses] graphData = self._graph.getGraphSaveData() graphData["Type"] = "subgraph" graphData["category"] = self._category graphData["keywords"] = self._keywords graphData["description"] = self._description name_filter = "Graph files (*.pySubgraph)" pth = QFileDialog.getSaveFileName(filter=name_filter) if not pth == '': file_path = pth path, name = os.path.split(file_path) name, ext = os.path.splitext(name) if name in existing_nodes: print("[ERROR] Node {0} already exists! Chose another name". format(name)) return # write to file. delete older if needed with open(file_path, "wb") as f: def to_serializable(val): return {"name": None} return str(val) json.dump(graphData, f, skipkeys=True, default=to_serializable, indent=2) reload(SubGraphs) SubGraphs._getClasses()
def write_grid(self): """Write generated mesh to file""" # Create all the geometrical quantities try: self.mesh.geometry() except ( ValueError, TypeError, func_timeout.FunctionTimedOut, SolutionError, ) as e: self._popup_error_message(e) return if not hasattr(self, "mesh"): flags = QMessageBox.StandardButton.Ok QMessageBox.critical(self, "Error", "Can't write mesh to file; no mesh found!", flags) return filename, _ = QFileDialog.getSaveFileName( self, "Save grid to file", self.gui_options["grid_file"], filter=NETCDF_FILTER, ) if not filename: return # If there was no extension, add one, unless the file already exists path = pathlib.Path(self.filename) if not path.exists() and path.suffix == "": self.filename += ".nc" self.mesh.writeGridfile(filename)
def main(): print('{:-^50s}'.format('导出历史 v{}'.format(__version__))) wlf.mp_logging.basic_config() dummy_app = QApplication(sys.argv) filename, _ = QFileDialog.getSaveFileName( None, '保存位置', 'E:/任务历史-{}.xlsx'.format(datetime.now().strftime('%Y%m%d-%H%M')), '*.xlsx') if not filename: return client = cgtwq.DesktopClient() client.connect() pipeline = set( client.selection().get_fields("pipeline").column("pipeline")) select = client.selection().module.filter( cgtwq.Field("pipeline").in_(list(pipeline)), ) try: rows = get_rows(select) wb = create_workbook(rows) wb.save(filename) webbrowser.open(os.path.dirname(filename)) except IOError: LOGGER.error('不能写入文件: %s', filename) msgbox('不能写入文件: {}, 请检查文件占用'.format(filename))
def _implementPlugin(self, name, ports, computeCode): from . import _nodeClasses from ..FunctionLibraries import _foos from ..SubGraphs import _subgraphClasses from .. import SubGraphs existing_nodes = [n for n in _nodeClasses] existing_nodes += [n for n in _foos] existing_nodes += [n for n in _subgraphClasses] from .. import Nodes #file_path = "{0}/{1}.py".format(os.path.dirname(__file__), name) #existing_nodes = [n.split(".")[0] for n in os.listdir(os.path.dirname(__file__)) if n.endswith(".py") and "__init__" not in n] name_filter = "Node Files (*.py)" pth = QFileDialog.getSaveFileName(filter=name_filter) if not pth == '': if type(pth) in [tuple, list]: file_path = pth[0] else: file_path = pth path, name = os.path.split(file_path) name, ext = os.path.splitext(name) if name in existing_nodes: print("[ERROR] Node {0} already exists! Chose another name". format(name)) return NodeTemplate = """from ..Core.AbstractGraph import * from ..Core.Settings import * from ..Core import Node class {0}(Node): def __init__(self, name, graph): super({0}, self).__init__(name, graph){1} for i in self.inputs.values(): for o in self.outputs.values(): pinAffects(i, o) @staticmethod def pinTypeHints(): ''' used by nodebox to suggest supported pins when drop wire from pin into empty space ''' return {{'inputs': [DataTypes.Bool], 'outputs': [DataTypes.Bool]}} @staticmethod def category(): ''' used by nodebox to place in tree to make nested one - use '|' like this ( 'CatName|SubCatName' ) ''' return 'Common' @staticmethod def keywords(): ''' used by nodebox filter while typing ''' return [] @staticmethod def description(): ''' used by property view and node box widgets ''' return 'default description' {2} """.format(name, ports, computeCode) # write to file. delete older if needed with open(file_path, "wb") as f: f.write(NodeTemplate) print( "[INFO] Node {0} been created.\nIn order to appear in node box, restart application." .format(name)) if OS_PLATFORM == 'Windows': os.system(file_path) else: os.system(file_path) reload(Nodes) Nodes._getClasses()