diff --git a/src/python/adgui.py b/src/python/adgui.py index 3d46a196..3e5000c6 100755 --- a/src/python/adgui.py +++ b/src/python/adgui.py @@ -324,6 +324,8 @@ class adgui(QObject): self.adgui.actionProgrammer.setEnabled(False) # essentially, only Exit and Help work anymore else: + self.adgui.actionAttach.triggered.connect(self.start_programmer) + self.adgui.actionDetach.triggered.connect(self.stop_programmer) self.devices = classify_devices() self.update_device_cb() self.device.at90.stateChanged.connect(self.update_device_cb) @@ -496,17 +498,26 @@ class adgui(QObject): idx = self.device.devices.findText(n) if idx != -1: self.device.devices.setCurrentIndex(idx) + self.dev = ad.locate_part(ad.cvar.part_list, n) + self.dev_selected = n + self.update_device_info() + self.adgui.actionDevice_Info.setEnabled(True) self.log(f"Device set to {n}", ad.MSG_INFO) if 'file/programmer' in k: n = s.value('file/programmer') idx = self.programmer.programmers.findText(n) if idx != -1: self.programmer.programmers.setCurrentIndex(idx) + self.pgm = ad.locate_programmer(ad.cvar.programmers, n) + self.prog_selected = n self.log(f"Programmer set to {n}", ad.MSG_INFO) if 'file/port' in k: n = s.value('file/port') + self.port = n self.programmer.port.setText(n) self.log(f"Port set to {n}") + if self.port != "set_this" and self.pgm and self.dev: + self.adgui.actionAttach.setEnabled(True) def update_device_cb(self): fams = list(self.devices.keys()) @@ -584,7 +595,7 @@ class adgui(QObject): self.update_device_info() self.adgui.actionDevice_Info.setEnabled(True) if self.port != "set_this" and self.prog_selected and self.dev_selected: - self.start_programmer() + self.adgui.actionAttach.setEnabled(True) def programmer_selected(self): self.prog_selected = self.programmer.programmers.currentText() @@ -595,7 +606,7 @@ class adgui(QObject): self.log(f"Selected port: {self.port}") self.settings.setValue('file/port', self.port) if self.port != "set_this" and self.prog_selected and self.dev_selected: - self.start_programmer() + self.adgui.actionAttach.setEnabled(True) def programmer_update_port(self): selected = self.programmer.programmers.currentText() @@ -630,6 +641,8 @@ class adgui(QObject): self.pgm.initialize(self.dev) self.log('Programmer successfully started') self.adgui.actionProgramming.setEnabled(True) + self.adgui.actionAttach.setEnabled(False) + self.adgui.actionDetach.setEnabled(True) self.connected = True def stop_programmer(self): @@ -637,6 +650,11 @@ class adgui(QObject): self.pgm.disable() self.pgm.close() self.pgm.teardown() + self.log('Programmer stopped') + self.adgui.actionAttach.setEnabled(True) + self.adgui.actionDetach.setEnabled(False) + self.adgui.actionProgramming.setEnabled(False) + self.connected = False def cleanup(self): self.settings.sync() diff --git a/src/python/adgui.ui b/src/python/adgui.ui index 2f944f3c..962b327e 100644 --- a/src/python/adgui.ui +++ b/src/python/adgui.ui @@ -115,6 +115,8 @@ + + @@ -241,6 +243,22 @@ Save log ... + + + false + + + Attach programmer + + + + + false + + + Detach programmer + +