diff --git a/arautopilot/studio/app.py b/arautopilot/studio/app.py
index 17f637f..9ec0795 100644
--- a/arautopilot/studio/app.py
+++ b/arautopilot/studio/app.py
@@ -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")
diff --git a/arautopilot/studio/editors/project_editor.py b/arautopilot/studio/editors/project_editor.py
index 5309ac5..d85f6e5 100644
--- a/arautopilot/studio/editors/project_editor.py
+++ b/arautopilot/studio/editors/project_editor.py
@@ -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
diff --git a/arautopilot/studio/flash_console.py b/arautopilot/studio/flash_console.py
index bb6e75d..234ce47 100644
--- a/arautopilot/studio/flash_console.py
+++ b/arautopilot/studio/flash_console.py
@@ -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 {self._session.user.display_name} "
f"({self._session.role.value})."
)
- header.setTextFormat(0x1) # PlainText would lose
; RichText = 1
+ header.setTextFormat(Qt.TextFormat.RichText)
header.setWordWrap(True)
outer.addWidget(header)
diff --git a/arautopilot/studio/installer_widget.py b/arautopilot/studio/installer_widget.py
index a75e2cc..f0b20d7 100644
--- a/arautopilot/studio/installer_widget.py
+++ b/arautopilot/studio/installer_widget.py
@@ -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):
""
"Genera un pendrive USB con las apps AR Electronics y la licencia del buque."
)
- 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)