示例#1
0
    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)))
示例#2
0
 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()))
示例#4
0
    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))
示例#5
0
 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)
示例#6
0
    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))
示例#7
0
 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()
示例#8
0
    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))
示例#9
0
    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)
示例#10
0
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
示例#11
0
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]
示例#12
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()
示例#13
0
    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)
示例#14
0
文件: partedit.py 项目: wdas/partio
 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)
示例#15
0
 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)
示例#16
0
文件: qt.py 项目: renemilk/pyMor
 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)
示例#17
0
 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)
示例#18
0
    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")))
示例#19
0
文件: pyxpad.py 项目: ZedThree/pyxpad
 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]))
示例#20
0
    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()
示例#21
0
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
示例#22
0
文件: pyxpad.py 项目: ZedThree/pyxpad
 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]))
示例#23
0
    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()
示例#24
0
    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)
示例#25
0
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))
示例#26
0
    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()