def saveProperties(self): subProperties = None try: subProperties = self._createSubtitleProperties() except Exception as e: dialog = QMessageBox(self) dialog.setIcon(QMessageBox.Critical) dialog.setWindowTitle(_("Incorrect value")) dialog.setText(_("Could not save SPF file because of incorrect parameters.")); dialog.setDetailedText(str(e)); dialog.exec() return fileDialog = FileDialog( parent = self, caption = _('Save Subtitle Properties'), directory = self._settings.getPropertyFilesPath() ) fileDialog.setAcceptMode(QFileDialog.AcceptSave) fileDialog.setFileMode(QFileDialog.AnyFile) if fileDialog.exec(): filename = fileDialog.selectedFiles()[0] if not filename.endswith(".spf"): filename = "%s%s" % (filename, ".spf") self._settings.setPropertyFilesPath(os.path.dirname(filename)) subProperties.save(filename) self._settings.addPropertyFile(filename) self.close()
def saveFileAs(self): fileDialog = FileDialog( parent = self, caption = _('Save as...'), directory = self._settings.getLatestDirectory() ) currentTab = self._tabs.currentPage() fileDialog.addFormats(self._subtitleData.supportedFormats) fileDialog.setSubFormat(currentTab.outputFormat) fileDialog.addEncodings(False) fileDialog.setEncoding(currentTab.outputEncoding) fileDialog.setAcceptMode(QFileDialog.AcceptSave) fileDialog.setFileMode(QFileDialog.AnyFile) if fileDialog.exec(): newFilePath = fileDialog.selectedFiles()[0] data = currentTab.data outputFormat = fileDialog.getSubFormat() outputEncoding = fileDialog.getEncoding() # user can overwrite previous output encoding if data.outputFormat != outputFormat or data.outputEncoding != outputEncoding: # save user changes data.outputFormat = outputFormat data.outputEncoding = outputEncoding if self._subtitleData.fileExists(newFilePath): command = ChangeData(newFilePath, data, _("Overwritten by %s") % currentTab.name) else: command = CreateSubtitlesFromData(newFilePath, data) self._subtitleData.execute(command) self._tabs.openTab(newFilePath) self.saveFile(newFilePath) self._settings.setLatestDirectory(os.path.dirname(newFilePath))