class XMEGAProgrammerDialog(QtFixes.QDialog): def __init__(self): super(XMEGAProgrammerDialog, self).__init__(CWMainGUI.getInstance()) # self.setWindowFlags(self.windowFlags() | Qt.WindowStaysOnTopHint) self.xmega = XMEGAProgrammer() self.setWindowTitle("ChipWhisperer-Lite XMEGA Programmer") layout = QVBoxLayout() layoutFW = QHBoxLayout() self.flashLocation = QtFixes.QLineEdit() flashFileButton = QPushButton("Find") flashFileButton.clicked.connect(self.findFlash) layoutFW.addWidget(QLabel("FLASH File")) layoutFW.addWidget(self.flashLocation) layoutFW.addWidget(flashFileButton) layout.addLayout(layoutFW) self.flashLocation.setText(QSettings().value("xmega-flash-location")) # Add buttons readSigBut = QPushButton("Check Signature") readSigBut.clicked.connect(self.readSignature) verifyFlashBut = QPushButton("Verify FLASH") verifyFlashBut.clicked.connect(self.verifyFlash) verifyFlashBut.setEnabled(False) progFlashBut = QPushButton("Erase/Program/Verify FLASH") progFlashBut.clicked.connect(self.writeFlash) layoutBut = QHBoxLayout() layoutBut.addWidget(readSigBut) layoutBut.addWidget(verifyFlashBut) layoutBut.addWidget(progFlashBut) layout.addLayout(layoutBut) # Add status stuff self.statusLine = QPlainTextEdit() self.statusLine.setReadOnly(True) # self.statusLine.setFixedHeight(QFontMetrics(self.statusLine.font()).lineSpacing() * 5 + 10) self.xmega.newTextLog.connect(self.append) layout.addWidget(self.statusLine) # Set dialog layout self.setLayout(layout) def append(self, text): self.statusLine.appendPlainText(text) def findFlash(self): fname, _ = QFileDialog.getOpenFileName( self, 'Find FLASH File', QSettings().value("xmega-flash-location"), '*.hex') if fname: self.flashLocation.setText(fname) QSettings().setValue("xmega-flash-location", fname) def readSignature(self, close=True): self.xmega.find() if close: self.xmega.close() def verifyFlash(self): pass def writeFlash(self, erase=True, verify=True): self.xmega.autoProgram(self.flashLocation.text(), erase, verify, self.statusLine.appendPlainText, QCoreApplication.processEvents) def setUSBInterface(self, iface): self.xmega.setUSBInterface(iface)