def exec_image_save_dialog(parent, data, template=None, basedir='', app_name=None): """ Executes an image save dialog box (QFileDialog.getSaveFileName) * parent: parent widget (None means no parent) * data: image pixel array data * template: image template (pydicom dataset) for DICOM files * basedir: base directory ('' means current directory) * app_name (opt.): application name (used as a title for an eventual error message box in case something goes wrong when saving image) Returns filename if dialog is accepted, None otherwise """ saved_in, saved_out, saved_err = sys.stdin, sys.stdout, sys.stderr sys.stdout = None filename, _filter = getsavefilename(parent, _("Save as"), basedir, io.iohandler.get_filters('save', dtype=data.dtype, template=template)) sys.stdin, sys.stdout, sys.stderr = saved_in, saved_out, saved_err if filename: filename = to_text_string(filename) kwargs = {} if osp.splitext(filename)[1].lower() == '.dcm': kwargs['template'] = template try: io.imwrite(filename, data, **kwargs) return filename except Exception as msg: import traceback traceback.print_exc() QMessageBox.critical(parent, _('Error') if app_name is None else app_name, (_("%s could not be written:") % osp.basename(filename))+\ "\n"+str(msg)) return
def exec_image_save_dialog(parent, data, template=None, basedir='', app_name=None): """ Executes an image save dialog box (QFileDialog.getSaveFileName) * parent: parent widget (None means no parent) * data: image pixel array data * template: image template (pydicom dataset) for DICOM files * basedir: base directory ('' means current directory) * app_name (opt.): application name (used as a title for an eventual error message box in case something goes wrong when saving image) Returns filename if dialog is accepted, None otherwise """ saved_in, saved_out, saved_err = sys.stdin, sys.stdout, sys.stderr sys.stdout = None filename, _filter = getsavefilename( parent, _("Save as"), basedir, io.iohandler.get_filters('save', dtype=data.dtype, template=template)) sys.stdin, sys.stdout, sys.stderr = saved_in, saved_out, saved_err if filename: filename = to_text_string(filename) kwargs = {} if osp.splitext(filename)[1].lower() == '.dcm': kwargs['template'] = template try: io.imwrite(filename, data, **kwargs) return filename except Exception as msg: import traceback traceback.print_exc() QMessageBox.critical(parent, _('Error') if app_name is None else app_name, (_("%s could not be written:") % osp.basename(filename))+\ "\n"+str(msg)) return
def fitfile(self): if self.fitc == None: msgBox = QMessageBox() msgBox.setText("Fit not yet executed!") msgBox.exec_() return -1 msgBox = QMessageBox() msgBox.setText("Save correction file?") #msgBox.setInformativeText("A correction file will be saved in the root directory of the observation.") msgBox.addButton(QMessageBox.Cancel) msgBox.addButton(QMessageBox.Ok) msgBox.setDefaultButton(QMessageBox.Cancel) ret = msgBox.exec_() if ret != QMessageBox.Ok: return -1 name = getsavefilename(self, _("Save File"), self.data_ref.dir_name + "/" + basename( normpath(self.data_ref.dir_name) + "_fit." + self.data_ref.files_type), options=QFileDialog.DontConfirmOverwrite) if str(name[0]): if exists(str(name[0])): msgBox = QMessageBox() msgBox.setText("File exists!") msgBox.setInformativeText("Do you want to update it?") msgBox.addButton(QMessageBox.Cancel) msgBox.addButton(QMessageBox.Ok) msgBox.setDefaultButton(QMessageBox.Cancel) ret = msgBox.exec_() if ret != QMessageBox.Ok: return -1 self.data_ref.fitfile(str(name[0]), self.fitc)