diff --git a/main.py b/main.py index 1128d79..dac96ae 100644 --- a/main.py +++ b/main.py @@ -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)