update UI

This commit is contained in:
2026-03-13 17:26:09 +07:00
parent 52c7b4b968
commit 50c20c841d

56
main.py
View File

@@ -826,10 +826,32 @@ class App(QWidget):
self.flash_thread.device_done.connect(self._on_flash_done)
self.flash_thread.all_done.connect(self._on_flash_all_done)
# Disable flash button trong khi đang flash
# Disable flash button và lock UI trong khi đang flash
self.btn_flash.setEnabled(False)
self._set_main_ui_locked(True)
self.flash_thread.start()
def _set_main_ui_locked(self, locked):
"""Khóa toàn bộ UI nhưng vẫn cho cuộn dọc bảng thiết bị."""
enabled = not locked
self.btn_scan.setEnabled(enabled)
self.net_input.setEnabled(enabled)
self.mode_combo.setEnabled(enabled)
self.method_combo.setEnabled(enabled)
self.parallel_spin.setEnabled(enabled)
self.show_all_cb.setEnabled(enabled)
# Bảng thiết bị: không setEnabled(False) để giữ thanh cuộn
if locked:
self.table.setSelectionMode(QTableWidget.SelectionMode.NoSelection)
self.table.setStyleSheet(
"QTableWidget { color: #6b7280; font-size: 13px; }"
"QTableWidget::item { selection-background-color: transparent; }"
)
else:
self.table.setSelectionMode(QTableWidget.SelectionMode.ExtendedSelection)
self.table.setStyleSheet("QTableWidget { font-size: 13px; }")
def _on_flash_status(self, index, msg):
"""Update status column while flashing."""
row = self._flash_row_map.get(index, index)
@@ -866,6 +888,7 @@ class App(QWidget):
def _on_flash_all_done(self):
"""All flashing complete."""
self.btn_flash.setEnabled(True)
self._set_main_ui_locked(False)
QMessageBox.information(self, "Flash Complete", "All devices have been processed.")
def _open_auto_flash(self):
@@ -1305,11 +1328,7 @@ class App(QWidget):
self.auto_btn_start.setEnabled(False)
self.auto_btn_stop.setEnabled(True)
self.auto_net_input.setEnabled(False)
self.auto_target_spin.setEnabled(False)
self.auto_method_combo.setEnabled(False)
self.auto_parallel_spin.setEnabled(False)
self.btn_back.setEnabled(False)
self._set_auto_ui_locked(True)
self.auto_status_label.setText("🔍 Scanning LAN...")
self.auto_status_label.setStyleSheet("font-size: 12px; font-weight: bold; color: #f9e2af;")
@@ -1439,13 +1458,28 @@ class App(QWidget):
def _auto_reset_controls(self):
self.auto_btn_start.setEnabled(True)
self.auto_btn_stop.setEnabled(False)
self.auto_net_input.setEnabled(True)
self.auto_target_spin.setEnabled(True)
self.auto_method_combo.setEnabled(True)
self.auto_parallel_spin.setEnabled(True)
self.btn_back.setEnabled(True)
self._set_auto_ui_locked(False)
self._auto_worker = None
def _set_auto_ui_locked(self, locked):
"""Khóa cấu hình Auto Flash nhưng vẫn cho cuộn xem list thiết bị."""
enabled = not locked
self.auto_net_input.setEnabled(enabled)
self.auto_target_spin.setEnabled(enabled)
self.auto_method_combo.setEnabled(enabled)
self.auto_parallel_spin.setEnabled(enabled)
self.btn_back.setEnabled(enabled)
# Bảng thiết bị Auto: không setEnabled(False) để giữ thanh cuộn
if locked:
self.auto_result_table.setSelectionMode(QTableWidget.SelectionMode.NoSelection)
self.auto_result_table.setStyleSheet(
"QTableWidget { color: #6b7280; font-size: 12px; }"
"QTableWidget::item { selection-background-color: transparent; }"
)
else:
self.auto_result_table.setSelectionMode(QTableWidget.SelectionMode.ExtendedSelection)
self.auto_result_table.setStyleSheet("QTableWidget { font-size: 12px; }")
if __name__ == "__main__":
app = QApplication(sys.argv)