crude updater added; write_state uses plain text, not pickle; disallow invalid characters; T246
This commit is contained in:
@ -8,15 +8,18 @@ from ..Qt import QtWidgets, QtCore
|
||||
class FileDialog(QtWidgets.QFileDialog):
|
||||
last_path = None
|
||||
|
||||
def __init__(self, directory=None, caption=None, filters='', parent=None):
|
||||
def __init__(self, directory=None, caption=None, filter='', parent=None):
|
||||
super().__init__(parent=parent)
|
||||
|
||||
self.setOption(QtWidgets.QFileDialog.DontUseNativeDialog, True)
|
||||
|
||||
self.setWindowTitle(caption)
|
||||
if directory is not None:
|
||||
if directory:
|
||||
self.setDirectory(str(directory))
|
||||
self.setNameFilters(filters.split(';;'))
|
||||
elif self.last_path is not None:
|
||||
self.setDirectory(str(FileDialog.last_path))
|
||||
|
||||
self.setNameFilters(filter.split(';;'))
|
||||
|
||||
file_tree = self.findChild(QtWidgets.QTreeView, 'treeView')
|
||||
file_tree.setSortingEnabled(True)
|
||||
@ -35,13 +38,30 @@ class FileDialog(QtWidgets.QFileDialog):
|
||||
def save_file(self) -> pathlib.Path | None:
|
||||
outfile = self.selectedFiles()
|
||||
if outfile:
|
||||
return pathlib.Path(outfile[0])
|
||||
if self.is_valid(outfile[0]):
|
||||
return pathlib.Path(outfile[0])
|
||||
else:
|
||||
_ = QtWidgets.QMessageBox.warning(self, 'Save file',
|
||||
'Filename contains one or more invalid character: / * < > \\ | : "')
|
||||
return
|
||||
|
||||
@staticmethod
|
||||
def is_valid(filename: str):
|
||||
bad_character = r'/*<>\|:"'
|
||||
for c in bad_character:
|
||||
if c in filename:
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
def close(self):
|
||||
FileDialog.last_path = self.directory()
|
||||
super().close()
|
||||
|
||||
|
||||
class OpenFileDialog(FileDialog):
|
||||
def __init__(self, directory=None, caption=None, filters='', parent=None):
|
||||
super().__init__(directory=directory, caption=caption, filters=filters, parent=parent)
|
||||
def __init__(self, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
|
||||
self.setFileMode(QtWidgets.QFileDialog.ExistingFiles)
|
||||
|
||||
@ -81,8 +101,8 @@ class OpenFileDialog(FileDialog):
|
||||
|
||||
|
||||
class SaveDirectoryDialog(FileDialog):
|
||||
def __init__(self, directory=None, filters='', parent=None):
|
||||
super().__init__(directory=directory, filters=filters, parent=parent)
|
||||
def __init__(self, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
|
||||
self.setOption(QtWidgets.QFileDialog.DontConfirmOverwrite, False)
|
||||
self.setAcceptMode(QtWidgets.QFileDialog.AcceptSave)
|
||||
@ -123,4 +143,3 @@ class SaveDirectoryDialog(FileDialog):
|
||||
self.setWindowTitle('Save')
|
||||
self.setNameFilters(['All files (*.*)', 'Session file (*.nmr)', 'Text file (*.dat)',
|
||||
'HDF file (*.h5)', 'Grace files (*.agr)'])
|
||||
|
||||
|
Reference in New Issue
Block a user