コード例 #1
0
    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_()
コード例 #2
0
ファイル: screenshot.py プロジェクト: rokups/paste2box
    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()
コード例 #3
0
ファイル: owreport.py プロジェクト: benzei/orange3
    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
コード例 #4
0
    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)
コード例 #5
0
    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
コード例 #6
0
 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()
コード例 #7
0
    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()
コード例 #8
0
    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)
コード例 #9
0
    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)
コード例 #10
0
ファイル: pygitlatex.py プロジェクト: awixom/PyGitLatex
 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)
コード例 #11
0
ファイル: owcolor.py プロジェクト: zyblx/orange3
 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)
コード例 #12
0
 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
コード例 #13
0
	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)
コード例 #14
0
 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
コード例 #15
0
 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()
コード例 #16
0
    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
コード例 #17
0
 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()
コード例 #18
0
 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
コード例 #19
0
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
コード例 #20
0
 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'))
コード例 #21
0
ファイル: filedialogs.py プロジェクト: kernc/orange3
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
コード例 #22
0
ファイル: ControlFile.py プロジェクト: jiyao94/LibMaster
    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
コード例 #23
0
ファイル: ControlFile.py プロジェクト: splevine/pyforms
    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
コード例 #24
0
    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)
コード例 #25
0
    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)
コード例 #26
0
    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
コード例 #27
0
    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)
コード例 #28
0
    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)
コード例 #29
0
    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)
コード例 #30
0
ファイル: owwordlist.py プロジェクト: larazupan/orange3-text
    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")
コード例 #31
0
ファイル: owontology.py プロジェクト: biolab/orange3-text
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()
コード例 #32
0
    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
コード例 #33
0
    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
コード例 #34
0
ファイル: owreport.py プロジェクト: astaric/orange3
    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
コード例 #35
0
    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)