fix(studio): Qt6 compat + Ctrl+C signal handler
- flash_console: setTextFormat(Qt.TextFormat.RichText) — int overload removed in Qt6 - installer_widget: same fix + add Qt to QtCore import - project_editor/installer_widget: Session.has() → Session.can() - app.py: signal.signal(SIGINT, SIG_DFL) so Ctrl+C kills the process from terminal AR_electronics — AR-Autopilot Project
This commit is contained in:
@@ -80,6 +80,9 @@ def run(argv: list[str] | None = None) -> int:
|
||||
from arautopilot.studio.login_window import LoginDialog
|
||||
from arautopilot.studio.main_window import StudioMainWindow
|
||||
|
||||
import signal # noqa: PLC0415
|
||||
signal.signal(signal.SIGINT, signal.SIG_DFL) # Ctrl+C kills the process
|
||||
|
||||
app = QApplication(sys.argv)
|
||||
app.setApplicationName("AR-Autopilot Studio")
|
||||
|
||||
|
||||
@@ -330,9 +330,9 @@ class ProjectEditorWidget(QWidget):
|
||||
# ------------------------------------------------------------------
|
||||
|
||||
def _apply_rbac(self) -> None:
|
||||
can_commission = self._session.has(Capability.EDIT_COMMISSIONING)
|
||||
can_gains = self._session.has(Capability.EDIT_BASE_GAINS)
|
||||
can_compile = self._session.has(Capability.EDIT_COMMISSIONING)
|
||||
can_commission = self._session.can(Capability.EDIT_COMMISSIONING)
|
||||
can_gains = self._session.can(Capability.EDIT_BASE_GAINS)
|
||||
can_compile = self._session.can(Capability.EDIT_COMMISSIONING)
|
||||
|
||||
for w in [
|
||||
self._max_rudder_deg,
|
||||
@@ -381,7 +381,7 @@ class ProjectEditorWidget(QWidget):
|
||||
self._sens_diverge_alarm,
|
||||
self._sens_diverge_failover,
|
||||
]:
|
||||
w.setEnabled(enabled and self._session.has(Capability.EDIT_COMMISSIONING))
|
||||
w.setEnabled(enabled and self._session.can(Capability.EDIT_COMMISSIONING))
|
||||
|
||||
def _on_new(self) -> None:
|
||||
self._project = None
|
||||
@@ -425,7 +425,7 @@ class ProjectEditorWidget(QWidget):
|
||||
QMessageBox.critical(self, "Save error", str(exc))
|
||||
|
||||
def _on_compile(self) -> None:
|
||||
if not self._session.has(Capability.EDIT_COMMISSIONING):
|
||||
if not self._session.can(Capability.EDIT_COMMISSIONING):
|
||||
QMessageBox.warning(self, "Access denied", "Engineer or Super Admin required.")
|
||||
return
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ import sys
|
||||
from pathlib import Path
|
||||
from typing import Optional
|
||||
|
||||
from PySide6.QtCore import QObject, QThread, Signal
|
||||
from PySide6.QtCore import QObject, Qt, QThread, Signal
|
||||
from PySide6.QtWidgets import (
|
||||
QComboBox,
|
||||
QDialog,
|
||||
@@ -148,7 +148,7 @@ class FlashConsoleWidget(QWidget):
|
||||
f"Logged in as <b>{self._session.user.display_name}</b> "
|
||||
f"({self._session.role.value})."
|
||||
)
|
||||
header.setTextFormat(0x1) # PlainText would lose <br/>; RichText = 1
|
||||
header.setTextFormat(Qt.TextFormat.RichText)
|
||||
header.setWordWrap(True)
|
||||
outer.addWidget(header)
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ import subprocess
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
from PySide6.QtCore import QObject, QThread, Signal
|
||||
from PySide6.QtCore import QObject, Qt, QThread, Signal
|
||||
from PySide6.QtWidgets import (
|
||||
QCheckBox,
|
||||
QFileDialog,
|
||||
@@ -129,7 +129,7 @@ class InstallerWidget(QWidget):
|
||||
"<span style='color:#8899AA;font-size:11px'>"
|
||||
"Genera un pendrive USB con las apps AR Electronics y la licencia del buque.</span>"
|
||||
)
|
||||
hdr.setTextFormat(1) # RichText
|
||||
hdr.setTextFormat(Qt.TextFormat.RichText) # RichText
|
||||
hdr.setWordWrap(True)
|
||||
root.addWidget(hdr)
|
||||
|
||||
@@ -220,7 +220,7 @@ class InstallerWidget(QWidget):
|
||||
root.addWidget(self._log, 1)
|
||||
|
||||
# RBAC gate
|
||||
can_build = self._session.has(Capability.EDIT_COMMISSIONING)
|
||||
can_build = self._session.can(Capability.EDIT_COMMISSIONING)
|
||||
if not can_build:
|
||||
self._build_btn.setEnabled(False)
|
||||
self._build_btn.setToolTip("Requiere rol Engineer o Super Admin.")
|
||||
@@ -321,7 +321,7 @@ class InstallerWidget(QWidget):
|
||||
self._set_running(False)
|
||||
|
||||
def _set_running(self, running: bool) -> None:
|
||||
can_build = self._session.has(Capability.EDIT_COMMISSIONING)
|
||||
can_build = self._session.can(Capability.EDIT_COMMISSIONING)
|
||||
self._build_btn.setEnabled(not running and can_build)
|
||||
self._cancel_btn.setEnabled(running)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user