[add/change] dataroot added to project file, improvements in behavior of create/save project
This commit is contained in:
parent
0a6ad8b663
commit
43c314a1f8
73
QtPyLoT.py
73
QtPyLoT.py
@ -106,7 +106,9 @@ class MainWindow(QMainWindow):
|
||||
self._inputs = AutoPickParameter(infile)
|
||||
self._props = None
|
||||
|
||||
self.dirty = False
|
||||
self.project = Project()
|
||||
self.project.parameter = self._inputs
|
||||
self.tap = None
|
||||
self.paraBox = None
|
||||
self.array_map = None
|
||||
@ -143,8 +145,6 @@ class MainWindow(QMainWindow):
|
||||
self.data = Data(self)
|
||||
self.autodata = Data(self)
|
||||
|
||||
self.dirty = False
|
||||
|
||||
if settings.value("user/FullName", None) is None:
|
||||
fulluser = QInputDialog.getText(self, "Enter Name:", "Full name")
|
||||
settings.setValue("user/FullName", fulluser)
|
||||
@ -756,7 +756,7 @@ class MainWindow(QMainWindow):
|
||||
Creates and adds events by user selection of event folders to GUI.
|
||||
'''
|
||||
if not self.project:
|
||||
self.project = Project()
|
||||
self.createNewProject()
|
||||
ed = getExistingDirectories(self, 'Select event directories...')
|
||||
if ed.exec_():
|
||||
eventlist = ed.selectedFiles()
|
||||
@ -783,8 +783,8 @@ class MainWindow(QMainWindow):
|
||||
}
|
||||
except Exception as e:
|
||||
dirs = {
|
||||
'database': ''
|
||||
'datapath': ''
|
||||
'database': '',
|
||||
'datapath': '',
|
||||
'rootpath': ''
|
||||
}
|
||||
print('Warning: Could not automatically init folder structure. ({})'.format(e))
|
||||
@ -803,6 +803,15 @@ class MainWindow(QMainWindow):
|
||||
dirs_box = self.paraBox.get_groupbox_exclusive('Directories')
|
||||
if not dirs_box.exec_():
|
||||
return
|
||||
self.project.rootpath = dirs['rootpath']
|
||||
else:
|
||||
if hasattr(self.project, 'rootpath'):
|
||||
if not self.project.rootpath == dirs['rootpath']:
|
||||
QMessageBox.warning(self, "PyLoT Warning",
|
||||
'Rootpath missmatch to current project!')
|
||||
return
|
||||
else:
|
||||
self.project.rootpath = dirs['rootpath']
|
||||
|
||||
self.project.add_eventlist(eventlist)
|
||||
self.init_events()
|
||||
@ -1349,6 +1358,8 @@ class MainWindow(QMainWindow):
|
||||
self.disconnectWFplotEvents()
|
||||
if self.pg:
|
||||
self.dataPlot.plotWidget.getPlotItem().clear()
|
||||
self.dataPlot.plotWidget.hideAxis('bottom')
|
||||
self.dataPlot.plotWidget.hideAxis('left')
|
||||
else:
|
||||
self.dataPlot.getAxes().cla()
|
||||
self.loadlocationaction.setEnabled(False)
|
||||
@ -2210,29 +2221,18 @@ class MainWindow(QMainWindow):
|
||||
self.data = Data(self, evtdata=event)
|
||||
self.setDirty(True)
|
||||
|
||||
def createNewProject(self, exists=False):
|
||||
def createNewProject(self):
|
||||
'''
|
||||
Create new project file.
|
||||
'''
|
||||
if not exists:
|
||||
if not self.okToContinue():
|
||||
return
|
||||
dlg = QFileDialog()
|
||||
fnm = dlg.getSaveFileName(self, 'Create a new project file...', filter='Pylot project (*.plp)')
|
||||
filename = fnm[0]
|
||||
if not len(fnm[0]):
|
||||
return False
|
||||
if not filename.split('.')[-1] == 'plp':
|
||||
filename = fnm[0] + '.plp'
|
||||
if not exists:
|
||||
self.project = Project()
|
||||
self.init_events(new=True)
|
||||
self.setDirty(True)
|
||||
self.project.parameter=self._inputs
|
||||
self.project.save(filename)
|
||||
self.setDirty(False)
|
||||
self.project.parameter=self._inputs
|
||||
self.saveProjectAsAction.setEnabled(True)
|
||||
self.update_status('Creating new project...', duration=1000)
|
||||
self.update_status('Created new project...', duration=1000)
|
||||
return True
|
||||
|
||||
def loadProject(self, fnm=None):
|
||||
@ -2261,8 +2261,26 @@ class MainWindow(QMainWindow):
|
||||
return
|
||||
self.init_array_tab()
|
||||
|
||||
def saveProjectAs(self):
|
||||
self.saveProject(new=True)
|
||||
def saveProjectAs(self, exists=False):
|
||||
'''
|
||||
Save back project to new pickle file.
|
||||
'''
|
||||
if not exists:
|
||||
if not self.okToContinue():
|
||||
return
|
||||
dlg = QFileDialog()
|
||||
fnm = dlg.getSaveFileName(self, 'Create a new project file...', filter='Pylot project (*.plp)')
|
||||
filename = fnm[0]
|
||||
if not len(fnm[0]):
|
||||
return False
|
||||
if not filename.split('.')[-1] == 'plp':
|
||||
filename = fnm[0] + '.plp'
|
||||
self.project.parameter=self._inputs
|
||||
self.project.save(filename)
|
||||
self.setDirty(False)
|
||||
self.saveProjectAsAction.setEnabled(True)
|
||||
self.update_status('Saved new project to {}'.format(filename), duration=5000)
|
||||
return True
|
||||
|
||||
def saveProject(self, new=False):
|
||||
'''
|
||||
@ -2270,14 +2288,14 @@ class MainWindow(QMainWindow):
|
||||
'''
|
||||
if self.project and not new:
|
||||
if not self.project.location:
|
||||
if not self.createNewProject(exists=True):
|
||||
if not self.saveProjectAs(exists=True):
|
||||
self.setDirty(True)
|
||||
return False
|
||||
else:
|
||||
self.project.parameter=self._inputs
|
||||
self.project.save()
|
||||
if not self.project.dirty:
|
||||
print('Saved back project to file:\n{}'.format(self.project.location))
|
||||
self.update_status('Saved back project to file:\n{}'.format(self.project.location), duration=5000)
|
||||
self.setDirty(False)
|
||||
return True
|
||||
else:
|
||||
@ -2285,7 +2303,7 @@ class MainWindow(QMainWindow):
|
||||
qmb = QMessageBox.warning(self,'Could not save project',
|
||||
'Could not save back to original file.\nChoose new file')
|
||||
self.setDirty(True)
|
||||
return self.createNewProject(exists=True)
|
||||
return self.saveProjectAs(exists=True)
|
||||
|
||||
def draw(self):
|
||||
self.fill_eventbox()
|
||||
@ -2340,6 +2358,7 @@ class Project(object):
|
||||
def __init__(self):
|
||||
self.eventlist = []
|
||||
self.location = None
|
||||
self.rootpath = None
|
||||
self.dirty = False
|
||||
self.parameter = None
|
||||
self._table = None
|
||||
@ -2353,6 +2372,9 @@ class Project(object):
|
||||
return
|
||||
for item in eventlist:
|
||||
event = Event(item)
|
||||
event.rootpath = self.parameter['rootpath']
|
||||
event.database = self.parameter['database']
|
||||
event.datapath = self.parameter['datapath']
|
||||
if not event.path in self.getPaths():
|
||||
self.eventlist.append(event)
|
||||
self.setDirty()
|
||||
@ -2424,6 +2446,9 @@ class Event(object):
|
||||
'''
|
||||
def __init__(self, path):
|
||||
self.path = path
|
||||
self.database = path.split('/')[-2]
|
||||
self.datapath = path.split('/')[-3]
|
||||
self.rootpath = os.path.join(*path.split('/')[:-3])
|
||||
self.autopicks = {}
|
||||
self.picks = {}
|
||||
self.notes = ''
|
||||
|
@ -1 +1 @@
|
||||
be46-dirty
|
||||
0a6a-dirty
|
||||
|
Loading…
Reference in New Issue
Block a user