feat(ui): trois sous-onglets de plus dans « À propos »

Mode d'emploi, Prérequis et Sécurité rejoignent Fonctions, Garanties,
Technique, Journal et Auteur.

Le contenu vit dans app_info.py, séparé de sa présentation : le relire
ou le corriger ne demande pas de traverser le code de l'interface. Deux
aides — _about_group_label et _about_grouped — découpent en groupes
titrés les listes d'une vingtaine de cartes, sans quoi Prérequis et
Sécurité se lisaient comme un seul bloc indifférencié.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
tuxgyver
2026-09-08 09:27:09 +02:00
co-authored by Claude Opus 5
parent a989f50151
commit 205258cbf1
2 changed files with 317 additions and 6 deletions
+59 -6
View File
@@ -958,7 +958,7 @@ class AdminWindow(QDialog):
# Onglet À propos
# ------------------------------------------------------------------ #
def _tab_about(self) -> QWidget:
"""Page « À propos », en cinq sous-onglets (modèle QuiOulé/TuxMarket).
"""Page « À propos », en huit sous-onglets (modèle QuiOulé/TuxMarket).
Le contenu (fonctions, garanties, pile technique, auteur) vit dans
`app/app_info.py`, séparé de sa présentation ici — le rendre
@@ -974,11 +974,14 @@ class AdminWindow(QDialog):
sub = QTabWidget()
sub.setStyleSheet(theme.TABBAR_CSS)
sub.addTab(self._subtab_about_features(app_info), "⭐ Fonctions")
sub.addTab(self._subtab_about_guarantees(app_info), "🛡️ Garanties")
sub.addTab(self._subtab_about_tech(app_info), "🧱 Technique")
sub.addTab(self._subtab_about_changelog(app_info), "🕓 Journal")
sub.addTab(self._subtab_about_author(app_info), "👤 Auteur")
sub.addTab(self._subtab_about_features(app_info), "⭐ Fonctions")
sub.addTab(self._subtab_about_howto(app_info), "📖 Mode d'emploi")
sub.addTab(self._subtab_about_requirements(app_info), "📦 Prérequis")
sub.addTab(self._subtab_about_security(app_info), "🔐 Sécurité")
sub.addTab(self._subtab_about_guarantees(app_info), "🛡️ Garanties")
sub.addTab(self._subtab_about_tech(app_info), "🧱 Technique")
sub.addTab(self._subtab_about_changelog(app_info), "🕓 Journal")
sub.addTab(self._subtab_about_author(app_info), "👤 Auteur")
lay.addWidget(sub)
return w
@@ -1105,6 +1108,29 @@ class AdminWindow(QDialog):
area.setWidget(inner)
return area
def _about_group_label(self, text: str) -> QLabel:
"""Intitulé séparant deux groupes de cartes dans une même liste.
Prérequis et Sécurité alignent une vingtaine de cartes chacun : sans
rien pour marquer où finit « Linux » et où commence « Windows », la
liste se lit comme un seul bloc indifférencié.
"""
lbl = QLabel(text)
lbl.setWordWrap(True)
lbl.setStyleSheet(
f"color: {theme.ACCENT_LIGHT}; font-size: 13px; font-weight: bold;"
" background: transparent; margin-top: 6px;"
)
return lbl
def _about_grouped(self, groups: list[tuple[str, list[tuple[str, str]]]]) -> QWidget:
"""Liste de cartes découpée en groupes titrés."""
items: list[QWidget] = []
for title, entries in groups:
items.append(self._about_group_label(title))
items += [self._about_card(body, title=head) for head, body in entries]
return self._about_card_list(items)
# ── Sous-onglet : fonctions ───────────────────────────────────────────
def _subtab_about_features(self, info) -> QWidget:
page, v = self._test_page()
@@ -1112,6 +1138,33 @@ class AdminWindow(QDialog):
v.addWidget(self._about_card_list(cards))
return page
# ── Sous-onglet : mode d'emploi ───────────────────────────────────────
def _subtab_about_howto(self, info) -> QWidget:
page, v = self._test_page()
v.addWidget(self._hint(info.HOWTO_FIRST_INTRO))
items: list[QWidget] = [
self._about_card(step, icon=f"{i}\u20e3")
for i, step in enumerate(info.HOWTO_FIRST, 1)
]
items.append(self._about_group_label("Au quotidien"))
items += [self._about_card(body, title=head) for head, body in info.HOWTO_DAILY]
items.append(self._about_group_label("Quand la connexion échoue"))
items += [self._about_card(body, title=head) for head, body in info.HOWTO_TROUBLE]
v.addWidget(self._about_card_list(items))
return page
# ── Sous-onglet : prérequis ───────────────────────────────────────────
def _subtab_about_requirements(self, info) -> QWidget:
page, v = self._test_page()
v.addWidget(self._about_grouped(info.REQUIREMENTS))
return page
# ── Sous-onglet : sécurité ────────────────────────────────────────────
def _subtab_about_security(self, info) -> QWidget:
page, v = self._test_page()
v.addWidget(self._about_grouped(info.SECURITY))
return page
# ── Sous-onglet : garanties ───────────────────────────────────────────
def _subtab_about_guarantees(self, info) -> QWidget:
page, v = self._test_page()