def __init__(self, parent=None): ''' Constructor ''' super(PlateManagerWidget, self).__init__(parent) self.plateManager = PlateManager(self) self.plateManager.signalPlateListUpdated.connect(self.updatePlateList) layout = QtGui.QVBoxLayout() self.plateListWidget = QtGui.QListWidget() self.plateListWidget.setEnabled(False) self.plateListWidget.currentRowChanged.connect( self.plateManager.setCurrentPlate) self.plateListWidget.currentRowChanged.connect( self.plateSelectionChange) self.plateManager.signalCurrentIndexChanged.connect( self.plateListWidget.setCurrentRow) layout.addWidget(self.plateListWidget) self.setLayout(layout) # Actions openPlateAction = createAction(self, 'Open plate(s)...', QtGui.QKeySequence.Open, 'document-open', '') openPlateAction.triggered.connect(self.openPlate) savePlateAction = createAction(self, 'Save plate', QtGui.QKeySequence.Save, 'document-save', '') savePlateAction.triggered.connect(self.plateManager.savePlate) savePlateAsAction = createAction(self, 'Save plate As...', QtGui.QKeySequence.SaveAs, 'document-save-as', '') savePlateAsAction.triggered.connect(self.savePlateAs) saveAllPlatesAction = createAction(self, 'Save All plates', '', 'document-save-all', '') saveAllPlatesAction.triggered.connect(self.plateManager.saveAllPlates) closePlateAction = createAction(self, 'Close plate', QtGui.QKeySequence.Close, 'dialog-close', '') closePlateAction.triggered.connect(self.closePlate) self.actions = (openPlateAction, None, savePlateAction, savePlateAsAction, saveAllPlatesAction, None, closePlateAction, None) self.saveActions = (savePlateAction, savePlateAsAction, saveAllPlatesAction, closePlateAction) self.lastDirectory = '.' self.plateSelectionChange(-1)
def __init__(self, parent=None): ''' Constructor ''' super(PlateManagerWidget, self).__init__(parent) self.plateManager = PlateManager(self) self.plateManager.signalPlateListUpdated.connect(self.updatePlateList) layout = QtGui.QVBoxLayout() self.plateListWidget = QtGui.QListWidget() self.plateListWidget.setEnabled(False) self.plateListWidget.currentRowChanged.connect(self.plateManager.setCurrentPlate) self.plateListWidget.currentRowChanged.connect(self.plateSelectionChange) self.plateManager.signalCurrentIndexChanged.connect(self.plateListWidget.setCurrentRow) layout.addWidget(self.plateListWidget) self.setLayout(layout) # Actions openPlateAction = createAction(self, 'Open plate(s)...', QtGui.QKeySequence.Open, 'document-open', '') openPlateAction.triggered.connect(self.openPlate) savePlateAction = createAction(self, 'Save plate', QtGui.QKeySequence.Save, 'document-save', '') savePlateAction.triggered.connect(self.plateManager.savePlate) savePlateAsAction = createAction(self, 'Save plate As...', QtGui.QKeySequence.SaveAs, 'document-save-as', '') savePlateAsAction.triggered.connect(self.savePlateAs) saveAllPlatesAction = createAction(self, 'Save All plates', '', 'document-save-all', '') saveAllPlatesAction.triggered.connect(self.plateManager.saveAllPlates) closePlateAction = createAction(self, 'Close plate', QtGui.QKeySequence.Close, 'dialog-close', '') closePlateAction.triggered.connect(self.closePlate) self.actions = (openPlateAction, None, savePlateAction, savePlateAsAction, saveAllPlatesAction, None, closePlateAction, None) self.saveActions = (savePlateAction, savePlateAsAction, saveAllPlatesAction, closePlateAction) self.lastDirectory = '.' self.plateSelectionChange(-1)
class PlateManagerWidget(QtGui.QWidget): ''' Widget represets plate manager -- list of plates Also handles actions -- plate opening, closing, saving, etc ''' def __init__(self, parent=None): ''' Constructor ''' super(PlateManagerWidget, self).__init__(parent) self.plateManager = PlateManager(self) self.plateManager.signalPlateListUpdated.connect(self.updatePlateList) layout = QtGui.QVBoxLayout() self.plateListWidget = QtGui.QListWidget() self.plateListWidget.setEnabled(False) self.plateListWidget.currentRowChanged.connect( self.plateManager.setCurrentPlate) self.plateListWidget.currentRowChanged.connect( self.plateSelectionChange) self.plateManager.signalCurrentIndexChanged.connect( self.plateListWidget.setCurrentRow) layout.addWidget(self.plateListWidget) self.setLayout(layout) # Actions openPlateAction = createAction(self, 'Open plate(s)...', QtGui.QKeySequence.Open, 'document-open', '') openPlateAction.triggered.connect(self.openPlate) savePlateAction = createAction(self, 'Save plate', QtGui.QKeySequence.Save, 'document-save', '') savePlateAction.triggered.connect(self.plateManager.savePlate) savePlateAsAction = createAction(self, 'Save plate As...', QtGui.QKeySequence.SaveAs, 'document-save-as', '') savePlateAsAction.triggered.connect(self.savePlateAs) saveAllPlatesAction = createAction(self, 'Save All plates', '', 'document-save-all', '') saveAllPlatesAction.triggered.connect(self.plateManager.saveAllPlates) closePlateAction = createAction(self, 'Close plate', QtGui.QKeySequence.Close, 'dialog-close', '') closePlateAction.triggered.connect(self.closePlate) self.actions = (openPlateAction, None, savePlateAction, savePlateAsAction, saveAllPlatesAction, None, closePlateAction, None) self.saveActions = (savePlateAction, savePlateAsAction, saveAllPlatesAction, closePlateAction) self.lastDirectory = '.' self.plateSelectionChange(-1) def updatePlateList(self, names): self.plateListWidget.clear() empty = self.plateManager.isEmpty() self.plateListWidget.setEnabled(not empty) if not empty: self.plateListWidget.addItems(names) def openPlate(self): ''' Open plate file ''' # Creating formats list formats = ["*.{}".format(unicode(fmt)) for fmt in Plate.formats] dialog = QtGui.QFileDialog(self, 'Open input Files', self.lastDirectory) dialog.setFileMode(QtGui.QFileDialog.ExistingFiles) dialog.setNameFilter('ELISA data files ({})'.format(" ".join(formats))) if dialog.exec_(): # Display selected list filesList = dialog.selectedFiles() self.plateManager.openPlates(filesList) self.lastDirectory = dialog.directory().absolutePath() def savePlateAs(self): formats = ["*.{}".format(unicode(fmt)) \ for fmt in Plate.formats] # Executing standard open dialog fname = QtGui.QFileDialog.getSaveFileName( self, "Choose file to save ElisaFit data", self.lastDirectory, "Data files ({})".format(" ".join(formats))) if not fname.isEmpty(): self.plateManager.savePlateAs(fname) def closePlate(self): reply = QtGui.QMessageBox.Yes if self.plateManager.isDirty(): reply = QtGui.QMessageBox.question( self, " Unsaved Changes", "Save unsaved changes for plate?", QtGui.QMessageBox.Yes | QtGui.QMessageBox.No | QtGui.QMessageBox.Cancel) if reply == QtGui.QMessageBox.Cancel: return reply elif reply == QtGui.QMessageBox.Yes: self.plateManager.savePlate() self.plateManager.removePlate() return reply def closeAllPlates(self): reply = QtGui.QMessageBox.Yes while not self.plateManager.isEmpty(): reply = self.closePlate() if reply == QtGui.QMessageBox.Cancel: break return reply def plateSelectionChange(self, index): for action in self.saveActions: action.setEnabled(index >= 0) def isDirty(self): return self.plateManager.isDirty()
class PlateManagerWidget(QtGui.QWidget): ''' Widget represets plate manager -- list of plates Also handles actions -- plate opening, closing, saving, etc ''' def __init__(self, parent=None): ''' Constructor ''' super(PlateManagerWidget, self).__init__(parent) self.plateManager = PlateManager(self) self.plateManager.signalPlateListUpdated.connect(self.updatePlateList) layout = QtGui.QVBoxLayout() self.plateListWidget = QtGui.QListWidget() self.plateListWidget.setEnabled(False) self.plateListWidget.currentRowChanged.connect(self.plateManager.setCurrentPlate) self.plateListWidget.currentRowChanged.connect(self.plateSelectionChange) self.plateManager.signalCurrentIndexChanged.connect(self.plateListWidget.setCurrentRow) layout.addWidget(self.plateListWidget) self.setLayout(layout) # Actions openPlateAction = createAction(self, 'Open plate(s)...', QtGui.QKeySequence.Open, 'document-open', '') openPlateAction.triggered.connect(self.openPlate) savePlateAction = createAction(self, 'Save plate', QtGui.QKeySequence.Save, 'document-save', '') savePlateAction.triggered.connect(self.plateManager.savePlate) savePlateAsAction = createAction(self, 'Save plate As...', QtGui.QKeySequence.SaveAs, 'document-save-as', '') savePlateAsAction.triggered.connect(self.savePlateAs) saveAllPlatesAction = createAction(self, 'Save All plates', '', 'document-save-all', '') saveAllPlatesAction.triggered.connect(self.plateManager.saveAllPlates) closePlateAction = createAction(self, 'Close plate', QtGui.QKeySequence.Close, 'dialog-close', '') closePlateAction.triggered.connect(self.closePlate) self.actions = (openPlateAction, None, savePlateAction, savePlateAsAction, saveAllPlatesAction, None, closePlateAction, None) self.saveActions = (savePlateAction, savePlateAsAction, saveAllPlatesAction, closePlateAction) self.lastDirectory = '.' self.plateSelectionChange(-1) def updatePlateList(self, names): self.plateListWidget.clear() empty = self.plateManager.isEmpty() self.plateListWidget.setEnabled(not empty) if not empty : self.plateListWidget.addItems(names) def openPlate(self): ''' Open plate file ''' # Creating formats list formats = ["*.{}".format(unicode(fmt)) for fmt in Plate.formats] dialog = QtGui.QFileDialog(self, 'Open input Files', self.lastDirectory) dialog.setFileMode(QtGui.QFileDialog.ExistingFiles); dialog.setNameFilter('ELISA data files ({})'.format(" ".join(formats))) if dialog.exec_() : # Display selected list filesList = dialog.selectedFiles() self.plateManager.openPlates(filesList) self.lastDirectory = dialog.directory().absolutePath() def savePlateAs(self): formats = ["*.{}".format(unicode(fmt)) \ for fmt in Plate.formats] # Executing standard open dialog fname = QtGui.QFileDialog.getSaveFileName(self, "Choose file to save ElisaFit data", self.lastDirectory, "Data files ({})".format(" ".join(formats))) if not fname.isEmpty() : self.plateManager.savePlateAs(fname) def closePlate(self): reply = QtGui.QMessageBox.Yes if self.plateManager.isDirty(): reply = QtGui.QMessageBox.question(self, " Unsaved Changes", "Save unsaved changes for plate?", QtGui.QMessageBox.Yes | QtGui.QMessageBox.No | QtGui.QMessageBox.Cancel) if reply == QtGui.QMessageBox.Cancel: return reply elif reply == QtGui.QMessageBox.Yes: self.plateManager.savePlate() self.plateManager.removePlate() return reply def closeAllPlates(self): reply = QtGui.QMessageBox.Yes while not self.plateManager.isEmpty(): reply = self.closePlate() if reply == QtGui.QMessageBox.Cancel: break return reply def plateSelectionChange(self, index): for action in self.saveActions: action.setEnabled(index >= 0) def isDirty(self): return self.plateManager.isDirty()