# --------------------------------------------------------------------------- # Satelliten-Tabelle # --------------------------------------------------------------------------- from PyQt5.QtGui import QColor from PyQt5.QtWidgets import QTableWidget, QHeaderView, QTableWidgetItem # --------------------------------------------------------------------------- # UBX Protokoll-Konstanten # --------------------------------------------------------------------------- GNSS_NAMES = { 0: "GPS", 1: "SBAS", 2: "Galileo", 3: "BeiDou", 4: "IMES", 5: "QZSS", 6: "GLONASS", 7: "NavIC" } GNSS_COLORS = { 0: QColor("#1E90FF"), 1: QColor("#FFA500"), 2: QColor("#00C853"), 3: QColor("#E53935"), 4: QColor("#9C27B0"), 5: QColor("#00BCD4"), 6: QColor("#FF4081"), 7: QColor("#808080") } class SatelliteTable(QTableWidget): HEADERS = ["GNSS", "SV", "Elevation", "Azimut", "C/N₀ (dB)", "Genutzt"] def __init__(self, parent=None): super().__init__(0, len(self.HEADERS), parent) self.setHorizontalHeaderLabels(self.HEADERS) self.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) self.setStyleSheet(""" QTableWidget { background-color: #0d1b2a; color: #cccccc; gridline-color: #2a4a6a; font-family: monospace; font-size: 11px; } QHeaderView::section { background-color: #1a3a5c; color: #7ab7d4; padding: 4px; } """) self.setEditTriggers(QTableWidget.NoEditTriggers) self.setSelectionBehavior(QTableWidget.SelectRows) def update_satellites(self, sats: list): self.setRowCount(0) for sat in sorted(sats, key=lambda s: (s["gnssId"], s["svId"])): row = self.rowCount() self.insertRow(row) color = GNSS_COLORS.get(sat["gnssId"], QColor("#ffffff")) vals = [ GNSS_NAMES.get(sat["gnssId"], f"?({sat['gnssId']})"), str(sat["svId"]), f"{sat['elev']}°", f"{sat['azim']}°", str(sat["cno"]), "✓" if sat["used"] else "–", ] for col, val in enumerate(vals): item = QTableWidgetItem(val) item.setForeground(color if col == 0 else QColor("#cccccc")) if sat["used"]: item.setBackground(QColor("#0d2a1a")) self.setItem(row, col, item)