From 8ec3dd5a424ce20c708c28986991f82e23b7497d Mon Sep 17 00:00:00 2001 From: Joerg Wunsch Date: Mon, 1 Apr 2024 09:50:58 +0200 Subject: [PATCH] Provide explicit attach and detach functionality for programmer Instead of automatically attaching once the user selected device and programmer and port, provide explict menu entries for that. That way, pre-loaded settings from the previous session can be activated immediately, without going through the selection popups. Also, it ought to be possible to completely switch to different programmers and devices within one session. --- src/python/adgui.py | 22 ++++++++++++++++++++-- src/python/adgui.ui | 18 ++++++++++++++++++ 2 files changed, 38 insertions(+), 2 deletions(-) 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 + +