def __init__(self, parent=None): super(ArpesBuildController, self).__init__() self.view = Ui_ArpesBuildWindow() self.view.setupUi(self) self.configure_views()
def __init__(self, parent=None): super(ArpesBuildController, self ).__init__() self.view = Ui_ArpesBuildWindow() self.view.setupUi(self) self.configure_views()
class ArpesBuildController(QtGui.QMainWindow): def __init__(self, parent=None): super(ArpesBuildController, self).__init__() self.view = Ui_ArpesBuildWindow() self.view.setupUi(self) self.configure_views() def configure_views(self): # the solvent data ... self.header = CONST_TALBEHEADERS # use numbers for numeric data to sort properly self.entryList = [] # add the model to the view self.table_model = TableOfEntriesModel(self, self.entryList, self.header) self.view.tableOfEntries.setModel(self.table_model) # set up selection model for tableview model self.selection = self.view.tableOfEntries.selectionModel() self.selection.selectionChanged.connect(self.handleSelectionChanged) # auto column dropdown chooser for i in range(0, len(CONST_AUTOCOLUMNALT)): self.view.autoColumnChooser.addItem(CONST_AUTOCOLUMNALT[i]) # self.view.autoColumnChooser.currentIndexChanged[int].connect(self.on_autoColumnChooserChanged) self.view.autoColumnInsertBtn.clicked.connect(self.on_autoColumnInsert) self.view.loadFilesBtn.clicked.connect(self.on_loadFiles) self.view.exportFermiBtn.clicked.connect(self.on_exportFermiSurface) ## Matplotlib widget # Do this first to be ready with default values self.DataPlot = MatplotlibWidget(self.view) # create a layout inside the blank widget and add the matplotlib widget layout = QtGui.QVBoxLayout(self.view.plotWidget) layout.addWidget(self.DataPlot) def handleSelectionChanged(self, selected, deselected): if len(selected.indexes()) == 0: ## deselected return index = selected.indexes()[0] if index.column() == 0: loadeddata = nx.NXroot( (self.table_model.entries[index.row()]).nxEntry) self.cData = ArpesData(loadeddata) self.DataPlot.plot2DData(self.cData.data, self.cData.axis1, self.cData.axis2, "", "", self.cData.title) def on_loadFiles(self): files = QtGui.QFileDialog.getOpenFileNames( self, 'Select one or more files to open', DATA_ROOT_FOLDER, 'Spectra (*.sp2 *.nxs)') self.activateWindow() self.importFilesThread = QtCore.QThread() # no parent! self.filesWorker = ImportFilesWorker(files) self.filesWorker.moveToThread(self.importFilesThread) self.filesWorker.progress.connect(self.on_fileImported) self.filesWorker.finished.connect(self.on_filesWorkerDone) self.filesWorker.finished.connect(self.importFilesThread.quit) self.importFilesThread.start() QtCore.QMetaObject.invokeMethod(self.filesWorker, 'processFiles', QtCore.Qt.QueuedConnection) def on_exportFermiSurface(self): listOfEntries = self.table_model.listOfEntries() if len(listOfEntries) > 0: filename = QtGui.QFileDialog.getSaveFileName(self, "Save file", DATA_ROOT_FOLDER, selectedFilter='nxs') if len(filename) > 0: fermiSurfaceEntry = Arpes3DSpectrumConverter.listOfEntriesToNx( listOfEntries) if type(fermiSurfaceEntry) == tuple: QtGui.QMessageBox.critical( self, "Error", "Fermisurface could not be created.\n" + fermiSurfaceEntry[1]) return root = nx.NXroot(fermiSurfaceEntry.nxEntry) ext = os.path.splitext(str(filename))[1] if ext: filename = str(filename.replace(ext, ".nxs")) else: filename = str(filename) + ".nxs" root.save(filename=filename) print root.tree else: print "No filename" # Result is a touple with (progress in %, nxEntry of processed specturm) def on_fileImported(self, result): loadedDataResult = result[1] if loadedDataResult[0]: loadedData = loadedDataResult[2] for entry in loadedData.root.NXentry: self.table_model.setData(QtCore.QModelIndex(), TableRowItem(nxEntry=entry, wf=0)) print "File imported, " + str(result[0] * 100) + "% finished" else: print "Error: Something went wrong loading the data, file not imported" def on_filesWorkerDone(self): self.view.tableOfEntries.resizeColumnsToContents() print "Import Done!" def on_autoColumnInsert(self): try: indexOfColumn = CONST_TALBEHEADERS.index(CONST_AUTOCOLUMNALT[ self.view.autoColumnChooser.currentIndex()]) initialValue = float(self.view.autoColumnInitialTxt.text()) stepValue = float(self.view.autoColumnStepTxt.text()) totalRows = self.table_model.rowCount() for row in range(0, totalRows): self.table_model.setData( self.table_model.index(row, indexOfColumn), initialValue + row * stepValue) except ValueError: print "Column not valid"
class ArpesBuildController(QtGui.QMainWindow): def __init__(self, parent=None): super(ArpesBuildController, self ).__init__() self.view = Ui_ArpesBuildWindow() self.view.setupUi(self) self.configure_views() def configure_views(self): # the solvent data ... self.header = CONST_TALBEHEADERS # use numbers for numeric data to sort properly self.entryList = [] # add the model to the view self.table_model = TableOfEntriesModel(self, self.entryList, self.header) self.view.tableOfEntries.setModel(self.table_model) # set up selection model for tableview model self.selection = self.view.tableOfEntries.selectionModel() self.selection.selectionChanged.connect(self.handleSelectionChanged) # auto column dropdown chooser for i in range(0,len(CONST_AUTOCOLUMNALT)): self.view.autoColumnChooser.addItem(CONST_AUTOCOLUMNALT[i]) # self.view.autoColumnChooser.currentIndexChanged[int].connect(self.on_autoColumnChooserChanged) self.view.autoColumnInsertBtn.clicked.connect(self.on_autoColumnInsert) self.view.loadFilesBtn.clicked.connect(self.on_loadFiles) self.view.exportFermiBtn.clicked.connect(self.on_exportFermiSurface) ## Matplotlib widget # Do this first to be ready with default values self.DataPlot = MatplotlibWidget(self.view) # create a layout inside the blank widget and add the matplotlib widget layout = QtGui.QVBoxLayout(self.view.plotWidget) layout.addWidget(self.DataPlot) def handleSelectionChanged(self, selected, deselected): if len(selected.indexes()) == 0: ## deselected return index = selected.indexes()[0] if index.column() == 0: loadeddata = nx.NXroot((self.table_model.entries[index.row()]).nxEntry) self.cData = ArpesData(loadeddata) self.DataPlot.plot2DData(self.cData.data, self.cData.axis1, self.cData.axis2, "", "", self.cData.title) def on_loadFiles(self): files=QtGui.QFileDialog.getOpenFileNames(self, 'Select one or more files to open', '/Users/johanadell/Box Sync/Dev/ARAN/src/data', 'Spectra (*.sp2 *.nxs)') self.importFilesThread = QtCore.QThread() # no parent! self.filesWorker = ImportFilesWorker(files) self.filesWorker.moveToThread(self.importFilesThread) self.filesWorker.progress.connect(self.on_fileImported) self.filesWorker.finished.connect(self.on_filesWorkerDone) self.filesWorker.finished.connect(self.importFilesThread.quit) self.importFilesThread.start() QtCore.QMetaObject.invokeMethod(self.filesWorker, 'processFiles', QtCore.Qt.QueuedConnection) def on_exportFermiSurface(self): listOfEntries = self.table_model.listOfEntries() if len(listOfEntries) > 0: filename = QtGui.QFileDialog.getSaveFileName(self, "Save file", "", ".nxs") if len(filename[0]) > 0: fermiSurfaceEntry = Arpes3DSpectrumConverter.listOfEntriesToNx(listOfEntries) root = nx.NXroot(fermiSurfaceEntry.nxEntry) root.save(filename[0]+filename[1]) print root.tree else: print "No filename" # Result is a touple with (progress in %, nxEntry of processed specturm) def on_fileImported(self,result): loadedData = result[1] for entry in loadedData.root.NXentry: self.table_model.setData(QtCore.QModelIndex(),TableRowItem(nxEntry=entry,wf=0)) print "File imported, "+str(result[0]*100)+"% finished" def on_filesWorkerDone(self): self.view.tableOfEntries.resizeColumnsToContents() print "Import Done!" def on_autoColumnInsert(self): try: indexOfColumn = CONST_TALBEHEADERS.index(CONST_AUTOCOLUMNALT[self.view.autoColumnChooser.currentIndex()]) initialValue = float(self.view.autoColumnInitialTxt.text()) stepValue = float(self.view.autoColumnStepTxt.text()) totalRows = self.table_model.rowCount() for row in range(0,totalRows): self.table_model.setData(self.table_model.index(row,indexOfColumn),initialValue+row*stepValue) except ValueError: print "Column not valid"