Console: Seats spinner replaces Add/Remove pilot in relay mode
Rows are capacity + per-seat defaults now -- joiners auto-populate them live and launch trims to whoever is seated, so hand-managing rows is busywork. A Seats spinner (1-8) maintains the row count in relay mode; Add pilot / Remove selected remain for mesh mode, where explicit addresses matter. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
3ef179d1a6
commit
2cccf877f5
+36
-3
@@ -283,11 +283,22 @@ class Operator(QMainWindow):
|
||||
self.table.verticalHeader().setVisible(True)
|
||||
rl.addWidget(self.table, 1)
|
||||
btns = QHBoxLayout()
|
||||
add = QPushButton("Add pilot"); add.clicked.connect(self._add_pilot)
|
||||
rem = QPushButton("Remove selected"); rem.clicked.connect(self._remove_pilot)
|
||||
# RELAY mode (2026-07-22): rows are just CAPACITY + per-seat defaults
|
||||
# -- joiners auto-populate them live and launch trims to whoever is
|
||||
# seated, so hand add/remove is busywork. A Seats spinner maintains
|
||||
# the row count; Add/Remove stay for MESH mode (explicit addresses).
|
||||
self.seats_label = QLabel("Seats:")
|
||||
self.seats_spin = QSpinBox()
|
||||
self.seats_spin.setRange(1, 8)
|
||||
self.seats_spin.valueChanged.connect(self._set_seat_count)
|
||||
self.add_btn = QPushButton("Add pilot")
|
||||
self.add_btn.clicked.connect(self._add_pilot)
|
||||
self.rem_btn = QPushButton("Remove selected")
|
||||
self.rem_btn.clicked.connect(self._remove_pilot)
|
||||
self.export_btn = QPushButton("Export player scripts…")
|
||||
self.export_btn.clicked.connect(self._export_scripts)
|
||||
btns.addWidget(add); btns.addWidget(rem)
|
||||
btns.addWidget(self.seats_label); btns.addWidget(self.seats_spin)
|
||||
btns.addWidget(self.add_btn); btns.addWidget(self.rem_btn)
|
||||
btns.addStretch(1); btns.addWidget(self.export_btn)
|
||||
rl.addLayout(btns)
|
||||
upper_l.addWidget(roster_box, 1)
|
||||
@@ -462,8 +473,29 @@ class Operator(QMainWindow):
|
||||
for r, tag in enumerate(tags):
|
||||
self.table.item(r, 0).setText(tag)
|
||||
|
||||
def _set_seat_count(self, n):
|
||||
if self.mode.currentIndex() != 0:
|
||||
return
|
||||
while self.table.rowCount() < n:
|
||||
self._add_pilot()
|
||||
while self.table.rowCount() > n:
|
||||
self.table.removeRow(self.table.rowCount() - 1)
|
||||
self._renumber_relay_tags()
|
||||
|
||||
def _apply_roster_controls_mode(self):
|
||||
relay = self.mode.currentIndex() == 0
|
||||
self.seats_label.setVisible(relay)
|
||||
self.seats_spin.setVisible(relay)
|
||||
self.add_btn.setVisible(not relay)
|
||||
self.rem_btn.setVisible(not relay)
|
||||
if relay:
|
||||
self.seats_spin.blockSignals(True)
|
||||
self.seats_spin.setValue(self.table.rowCount())
|
||||
self.seats_spin.blockSignals(False)
|
||||
|
||||
def _mode_changed(self, _index):
|
||||
relay = self.mode.currentIndex() == 0
|
||||
self._apply_roster_controls_mode()
|
||||
for r in range(self.table.rowCount()):
|
||||
item = self.table.item(r, 0)
|
||||
flags = item.flags()
|
||||
@@ -493,6 +525,7 @@ class Operator(QMainWindow):
|
||||
for i, p in enumerate(self.egg.pilots()):
|
||||
self._add_pilot_row(p, local=(relay and i == 0))
|
||||
self._renumber_relay_tags()
|
||||
self._apply_roster_controls_mode() # Seats spinner mirrors rows
|
||||
self.egg_label.setText(os.path.basename(self.egg_path))
|
||||
|
||||
def _collect_egg(self):
|
||||
|
||||
Reference in New Issue
Block a user