Пример #1
0
    def on_saveTableButton_clicked(self):
        if self.is_data_in_hidden_columns():
            self.showError('Cannot save because data in optional column(s).'
                           'Select the optional column or clear the column.')
            return

        filename = QFileDialog.getSaveFileName(
            self,
            'Save table',
            osp.expanduser('~')
            if self.last_save_location is None else self.last_save_location,
            'Table files (*.txt *.csv)',
            initialFilter='*.txt;;*.csv')[0]

        if not filename:
            return
        if not filename.endswith(('.txt', '.csv')):
            filename = filename + '.csv'

        self.last_save_location = osp.dirname(filename)
        try:
            headers = self._extract_headers_from_table()
            data = self._extract_data_from_table()
            export_table_to_csv(data, filename, headers)
        except Exception as ex:
            self.showError(f'Cannot write table contents to {filename}:\n{ex}')
Пример #2
0
 def on_buttonBox_clicked(self, button):
     role = self.buttonBox.buttonRole(button)
     if role == QDialogButtonBox.RejectRole:
         return
     do_apply = role == QDialogButtonBox.ApplyRole
     if self.dirty:
         initialdir = self.client.eval('session.experiment.scriptpath', '')
         fn = QFileDialog.getSaveFileName(self, 'Save sample file',
                                          initialdir,
                                          'Sample files (*.py)')[0]
         if not fn:
             return False
         if not fn.endswith('.py'):
             fn += '.py'
         self.filename = fn
     try:
         script = self._generate(self.filename)
     except Exception as err:
         self.showError('Could not write file: %s' % err)
     else:
         if do_apply:
             self.client.run(script, self.filename)
             self.showInfo(
                 'Sample info has been transferred to the daemon.')
         self.closeWindow()
Пример #3
0
def savePlot(widget, default_file_type, old_file_path=None):
    """Saves a plot in the specified file format.

    :param widget: graphics widget.
    :param default_file_type: default save file type.
    :param old_file_path: file path from a previous save operation.
    :return: returns file path,
             returns empty string or old file path when
             user cancels save.
    """
    gr_file_types = {**gr.PRINT_TYPE, **gr.GRAPHIC_TYPE}
    save_types = ";;".join(sorted(set(gr_file_types.values())))
    default_file = 'untitled'
    if old_file_path:
        default_file = path.splitext(old_file_path)[0]
    file_path, _ = QFileDialog.getSaveFileName(None,
                                               'Save as...',
                                               default_file,
                                               filter=save_types,
                                               initialFilter=default_file_type)
    if not file_path:
        return "" if not old_file_path else old_file_path

    file_ext = path.splitext(file_path)[1]
    if file_ext.lower()[1:] in gr_file_types:
        widget.save(file_path)
    else:
        raise TypeError("Unsupported file format {}".format(file_ext))

    return file_path
Пример #4
0
 def saveAs(self):
     # open a file to save into, create empty output string
     filepath = QFileDialog.getSaveFileName(self, 'Save as...',
                                            path.expanduser('.'),
                                            'Python script (*.py)')[0]
     if str(filepath):
         self._save(filepath)
Пример #5
0
 def selectOutputFile(self, ctl, text='Choose an output filename'):
     previous = ctl.text()
     if previous:
         startdir = path.dirname(previous)
     else:
         startdir = '.'
     fn = QFileDialog.getSaveFileName(self, text, startdir,
                                      'All files (*)')[0]
     if fn:
         ctl.setText(fn)
Пример #6
0
 def on_actionSave_triggered(self):
     fn = QFileDialog.getSaveFileName(self, 'Save', '', 'All files (*.*)')[0]
     if not fn:
         return
     try:
         fn = fn.encode(sys.getfilesystemencoding())
         with open(fn, 'w') as f:
             f.write(self.outView.getOutputString())
     except Exception as err:
         QMessageBox.warning(self, 'Error', 'Writing file failed: %s' % err)
Пример #7
0
 def on_saveBtn_clicked(self):
     initialdir = self.client.eval('session.experiment.proposalpath', '')
     fn = QFileDialog.getSaveFileName(self, 'Save protocol', initialdir,
                                      'Text files (*.txt)')[0]
     if not fn:
         return
     try:
         text = self.outText.toPlainText()
         with open(fn, 'wb') as fp:
             fp.write(to_utf8(text))
     except Exception as err:
         self.showError('Could not save: %s' % err)
Пример #8
0
    def actionSaveAsSlot(self):
        # asks the user where to save the current setup to.
        if self.getCurrentSetupItem() is None:
            return
        filepath = QFileDialog.getSaveFileName(self, 'Save as...',
                                               getNicosDir(),
                                               'Python script (*.py)')[0]

        if filepath:
            if not str(filepath).endswith('.py'):
                filepath += '.py'
            self.save(self.getCurrentSetupItem(), filepath)
Пример #9
0
 def on_saveBtn_clicked(self):
     initial_dir = self.client.eval('session.experiment.scriptpath', '')
     filename = QFileDialog.getSaveFileName(self, 'Save sample file',
                                            initial_dir,
                                            'Sample files (*.py)')[0]
     if not filename:
         return False
     if not filename.endswith('.py'):
         filename += '.py'
     try:
         self._save_script(filename, self._generate_script())
     except Exception as err:
         self.showError(f'Could not write file: {err}')
Пример #10
0
 def on_actionWriteXml_triggered(self):
     pad = self.widget.GetPad()
     if pad is None:
         return self.showError('No 2-d image is shown.')
     filename = str(QFileDialog.getSaveFileName(
         self, 'Select file name', '', 'XML files (*.xml)')[0])
     if not filename:
         return
     if not filename.endswith('.xml'):
         filename += '.xml'
     if TmpImage:
         tmpimg = TmpImage()
         tmpimg.ConvertPAD(pad)
         tmpimg.WriteXML(filename)
Пример #11
0
 def saveFileAs(self, editor):
     if self.filenames[editor]:
         initialdir = path.dirname(self.filenames[editor])
     else:
         initialdir = self.client.eval('session.experiment.scriptpath', '')
     if self.client.eval('session.spMode', False):
         defaultext = '.txt'
         flt = 'Script files (*.txt *.py)'
     else:
         defaultext = '.py'
         flt = 'Script files (*.py *.txt)'
     fn = QFileDialog.getSaveFileName(self, 'Save script', initialdir, flt)[0]
     if not fn:
         return False
     if not fn.endswith(('.py', '.txt')):
         fn += defaultext
     self.addToRecentf(fn)
     self.watchers[editor].removePath(self.filenames[editor])
     self.filenames[editor] = fn
     self.tabber.setTabText(self.editors.index(editor), path.basename(fn))
     return self.saveFile(editor)