fix(gui): style radio buttons + checkbox states in the setup wizard — 0.26.1

QRadioButton was unstyled, so the selected trigger option was invisible on the
dark theme. Added QRadioButton::indicator styling (accent ring + center dot when
checked) and explicit QCheckBox :checked/:disabled states. Bundle checkboxes stay
selectable even when already installed so the page isn't dead when all deps are
present.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-22 10:27:44 +02:00
parent 4386838b69
commit ac2a3981fc
5 changed files with 28 additions and 3 deletions
+1 -1
View File
@@ -1,3 +1,3 @@
"""RigDoctor — modular hardware monitoring & crash diagnostics for Linux gamers."""
__version__ = "0.26.0"
__version__ = "0.26.1"
+1 -1
View File
@@ -117,7 +117,7 @@ class SetupWizard(QDialog):
tag = " — all installed ✓" if not missing else f"{len(missing)} to install"
cb = QCheckBox(f"{bundle}: {names}{tag}")
cb.setChecked(bool(missing)) # default-check bundles with something to add
cb.setEnabled(bool(missing) and sysenv.package_manager() == "apt")
cb.setEnabled(sysenv.package_manager() == "apt") # selectable even if already installed
self._bundle_checks[bundle] = cb
v.addWidget(cb)
if sysenv.package_manager() != "apt":
+18
View File
@@ -144,6 +144,24 @@ QCheckBox::indicator:hover {{ border-color: {ACCENT}; }}
QCheckBox::indicator:checked {{
background: {ACCENT}; border-color: {ACCENT}; image: url("{_CHECK}");
}}
QCheckBox::indicator:disabled {{ border-color: #3a414d; background: #1c2026; }}
QCheckBox::indicator:checked:disabled {{ background: #2a6175; border-color: #2a6175; }}
QCheckBox:disabled {{ color: {MUTED}; }}
/* Radio buttons — same dark treatment as checkboxes; the selected one gets a clear
accent dot (Fusion leaves these unstyled = the selection is invisible on dark). */
QRadioButton {{ spacing: 8px; background: transparent; }}
QRadioButton::indicator {{
width: 17px; height: 17px; border-radius: 9px;
border: 1px solid {MUTED}; background: #262b34;
}}
QRadioButton::indicator:hover {{ border-color: {ACCENT}; }}
QRadioButton::indicator:checked {{
border: 1px solid {ACCENT};
background: qradialgradient(cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5,
stop:0 {ACCENT}, stop:0.5 {ACCENT}, stop:0.55 #262b34, stop:1 #262b34);
}}
QRadioButton:disabled {{ color: {MUTED}; }}
/* Dialogs (update prompt, changelog) — match the dark theme so text is readable. */
QDialog {{ background: {BG}; }}