@@ -51,6 +51,18 @@ def get_version(rel_path: str) -> str:
51
51
52
52
_APP_VERSION = get_version ("_version.py" )
53
53
54
+ # ----------------------------------------------------------------
55
+ # hack to know when a combobox menu is being shown. Helpful if contents
56
+ # of list are dynamic -- like serial ports.
57
+
58
+ class AUxComboBox (QComboBox ):
59
+
60
+ popupAboutToBeShown = pyqtSignal ()
61
+
62
+ def showPopup (self ):
63
+ self .popupAboutToBeShown .emit ()
64
+ super ().showPopup ()
65
+
54
66
#----------------------------------------------------------------
55
67
# ux_is_darkmode()
56
68
#
@@ -131,13 +143,14 @@ def __init__(self, parent: QWidget = None) -> None:
131
143
132
144
# Port Combobox
133
145
self .port_label = QLabel (self .tr ('COM Port:' ))
134
- self .port_combobox = QComboBox ()
146
+ self .port_combobox = AUxComboBox ()
135
147
self .port_label .setBuddy (self .port_combobox )
136
148
self .update_com_ports ()
149
+ self .port_combobox .popupAboutToBeShown .connect (self .on_port_combobox )
137
150
138
- # Refresh Button
139
- self .refresh_btn = QPushButton (self .tr ('Refresh ' ))
140
- self .refresh_btn .clicked .connect (self .on_refresh_btn_pressed )
151
+ # Reset Button
152
+ self .reset_btn = QPushButton (self .tr ('Reset ESP32 ' ))
153
+ self .reset_btn .clicked .connect (self .on_reset_btn_pressed )
141
154
142
155
# Baudrate Combobox
143
156
self .baud_label = QLabel (self .tr ('Baud Rate:' ))
@@ -152,10 +165,6 @@ def __init__(self, parent: QWidget = None) -> None:
152
165
self .upload_btn .setFont (myFont )
153
166
self .upload_btn .clicked .connect (self .on_upload_btn_pressed )
154
167
155
- # Reset Button
156
- self .reset_btn = QPushButton (self .tr ('Reset ESP32' ))
157
- self .reset_btn .clicked .connect (self .on_reset_btn_pressed )
158
-
159
168
# Messages Bar
160
169
self .messages_label = QLabel (self .tr ('Status / Warnings:' ))
161
170
@@ -179,16 +188,14 @@ def __init__(self, parent: QWidget = None) -> None:
179
188
180
189
layout .addWidget (self .port_label , 2 , 0 )
181
190
layout .addWidget (self .port_combobox , 2 , 1 )
182
- layout .addWidget (self .refresh_btn , 2 , 2 )
191
+ layout .addWidget (self .reset_btn , 2 , 2 )
183
192
184
193
layout .addWidget (self .baud_label , 3 , 0 )
185
194
layout .addWidget (self .baud_combobox , 3 , 1 )
186
195
layout .addWidget (self .upload_btn , 3 , 2 )
187
196
188
- layout .addWidget (self .reset_btn , 4 , 2 )
189
-
190
- layout .addWidget (self .messages_label , 5 , 0 )
191
- layout .addWidget (self .messageBox , 6 , 0 , 6 , 3 )
197
+ layout .addWidget (self .messages_label , 4 , 0 )
198
+ layout .addWidget (self .messageBox , 5 , 0 , 5 , 3 )
192
199
193
200
self .setLayout (layout )
194
201
@@ -278,16 +285,30 @@ def on_finished(self, status, action_type, job_id) -> None:
278
285
279
286
# If the flash detection is finished, trigger the upload
280
287
if action_type == AUxEsptoolDetectFlash .ACTION_ID :
288
+ self .writeMessage ("Flash detection complete. Uploading firmware..." )
281
289
self .do_upload ()
282
290
283
291
# If the upload is finished, trigger a reset
284
292
elif action_type == AUxEsptoolUploadFirmware .ACTION_ID :
293
+ self .writeMessage ("Firmware upload complete. Resetting ESP32..." )
285
294
self .on_reset_btn_pressed ()
286
295
287
296
# re-enable the UX
288
297
else :
298
+ self .writeMessage ("Reset complete..." )
289
299
self .disable_interface (False )
290
300
301
+ # --------------------------------------------------------------
302
+ # on_port_combobox()
303
+ #
304
+ # Called when the combobox pop-up menu is about to be shown
305
+ #
306
+ # Use this event to dynamically update the displayed ports
307
+ #
308
+ @pyqtSlot ()
309
+ def on_port_combobox (self ):
310
+ self .update_com_ports ()
311
+
291
312
def _load_settings (self ) -> None :
292
313
"""Load settings on startup."""
293
314
port_name = self .settings .value (SETTING_PORT_NAME )
@@ -386,10 +407,6 @@ def closeEvent(self, event: QCloseEvent) -> None:
386
407
387
408
event .accept ()
388
409
389
- def on_refresh_btn_pressed (self ) -> None :
390
- self .update_com_ports ()
391
- self .writeMessage ("Ports Refreshed\n " )
392
-
393
410
def on_browse_btn_pressed (self ) -> None :
394
411
"""Open dialog to select bin file."""
395
412
options = QFileDialog .Options ()
0 commit comments