feat(ui): add windows gaming dual-boot installation spoke
Add fws_windows.glade UI definition for Windows 11 dual-boot configuration screen in Anaconda installer. Implements spoke interface with disk selection, partition size configuration, Windows ISO image selection, and validation feedback. Supports UEFI/TPM 2.0 requirements for kernel-anticheat game compatibility.
This commit is contained in:
@@ -0,0 +1,268 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- FWS — onglet « Dual-boot Windows gaming » (case + disque + taille + ISO).
|
||||||
|
Calqué sur fws_desktop.glade (AnacondaSpokeWindow + ses enfants internes
|
||||||
|
nav_box/nav_area, alignment/action_area). Catégorie SYSTÈME côté .py :
|
||||||
|
l'écran vit à côté de « Destination de l'installation », pas dans « Logiciel ».
|
||||||
|
Les widgets sont pilotés/peuplés au runtime par fws_windows.py. -->
|
||||||
|
<interface>
|
||||||
|
<requires lib="gtk+" version="3.6"/>
|
||||||
|
<requires lib="AnacondaWidgets" version="1.0"/>
|
||||||
|
<!-- Bornes de la taille NTFS ; upper réévalué en Python selon le disque choisi. -->
|
||||||
|
<object class="GtkAdjustment" id="adj_size">
|
||||||
|
<property name="lower">100</property>
|
||||||
|
<property name="upper">2000</property>
|
||||||
|
<property name="value">200</property>
|
||||||
|
<property name="step-increment">10</property>
|
||||||
|
<property name="page-increment">50</property>
|
||||||
|
</object>
|
||||||
|
<object class="AnacondaSpokeWindow" id="fwsWindowsWindow">
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="hexpand">True</property>
|
||||||
|
<property name="vexpand">True</property>
|
||||||
|
<property name="window-name" translatable="yes">DUAL-BOOT WINDOWS</property>
|
||||||
|
<signal name="button-clicked" handler="on_back_clicked" swapped="no"/>
|
||||||
|
<child internal-child="main_box">
|
||||||
|
<object class="GtkBox" id="AnacondaSpokeWindow-main_box1">
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<property name="spacing">6</property>
|
||||||
|
<child internal-child="nav_box">
|
||||||
|
<object class="GtkEventBox" id="AnacondaSpokeWindow-nav_box1">
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<child internal-child="nav_area">
|
||||||
|
<object class="GtkGrid" id="AnacondaSpokeWindow-nav_area1">
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="margin-left">6</property>
|
||||||
|
<property name="margin-right">6</property>
|
||||||
|
<property name="margin-top">6</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child internal-child="alignment">
|
||||||
|
<object class="GtkAlignment" id="AnacondaSpokeWindow-alignment1">
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="margin-top">12</property>
|
||||||
|
<property name="yalign">0</property>
|
||||||
|
<property name="xscale">0</property>
|
||||||
|
<property name="yscale">0</property>
|
||||||
|
<property name="bottom-padding">48</property>
|
||||||
|
<property name="left-padding">24</property>
|
||||||
|
<property name="right-padding">24</property>
|
||||||
|
<child internal-child="action_area">
|
||||||
|
<object class="GtkBox" id="AnacondaSpokeWindow-action_area1">
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<property name="spacing">8</property>
|
||||||
|
|
||||||
|
<!-- Description -->
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="fws_windows_desc">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="xalign">0</property>
|
||||||
|
<property name="margin-bottom">6</property>
|
||||||
|
<property name="wrap">True</property>
|
||||||
|
<property name="max-width-chars">64</property>
|
||||||
|
<property name="label" translatable="yes">Install a bare-metal Windows 11 alongside FWS to play kernel-anticheat games (Valorant, League of Legends) that refuse virtualization. FWS deploys Windows automatically from the ISO you provide. Requires UEFI + TPM 2.0.</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
|
||||||
|
<!-- Case maître : active/grise le bloc d'options ci-dessous -->
|
||||||
|
<child>
|
||||||
|
<object class="GtkCheckButton" id="chk_enable">
|
||||||
|
<property name="label" translatable="yes">Enable Windows gaming dual-boot</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">True</property>
|
||||||
|
<property name="receives-default">False</property>
|
||||||
|
<property name="draw-indicator">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
|
||||||
|
<!-- Bloc d'options (grisé tant que la case est décochée) -->
|
||||||
|
<child>
|
||||||
|
<object class="GtkGrid" id="box_options">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="sensitive">False</property>
|
||||||
|
<property name="margin-left">24</property>
|
||||||
|
<property name="margin-top">4</property>
|
||||||
|
<property name="row-spacing">8</property>
|
||||||
|
<property name="column-spacing">12</property>
|
||||||
|
|
||||||
|
<!-- Ligne 0 : disque -->
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="label_disk">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="xalign">0</property>
|
||||||
|
<property name="label" translatable="yes">Disk dedicated to Windows:</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="left-attach">0</property>
|
||||||
|
<property name="top-attach">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkComboBoxText" id="combo_disk">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="hexpand">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="left-attach">1</property>
|
||||||
|
<property name="top-attach">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
|
||||||
|
<!-- Ligne 1 : taille NTFS -->
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="label_size">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="xalign">0</property>
|
||||||
|
<property name="label" translatable="yes">Windows partition size (GiB):</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="left-attach">0</property>
|
||||||
|
<property name="top-attach">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkSpinButton" id="spin_size">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">True</property>
|
||||||
|
<property name="halign">start</property>
|
||||||
|
<property name="adjustment">adj_size</property>
|
||||||
|
<property name="numeric">True</property>
|
||||||
|
<property name="value">200</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="left-attach">1</property>
|
||||||
|
<property name="top-attach">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
|
||||||
|
<!-- Ligne 2 : ISO (champ libre + bouton Parcourir) -->
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="label_iso">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="xalign">0</property>
|
||||||
|
<property name="label" translatable="yes">Windows 11 ISO image:</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="left-attach">0</property>
|
||||||
|
<property name="top-attach">2</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox" id="box_iso">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="orientation">horizontal</property>
|
||||||
|
<property name="spacing">6</property>
|
||||||
|
<property name="hexpand">True</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkEntry" id="entry_iso">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">True</property>
|
||||||
|
<property name="hexpand">True</property>
|
||||||
|
<property name="placeholder-text" translatable="yes">/run/media/…/Win11_25H2.iso</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="btn_iso">
|
||||||
|
<property name="label" translatable="yes">Browse…</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">True</property>
|
||||||
|
<property name="receives-default">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="left-attach">1</property>
|
||||||
|
<property name="top-attach">2</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
|
||||||
|
<!-- Ligne 3 : avertissement de validation (rempli en Python) -->
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="iso_warn">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="xalign">0</property>
|
||||||
|
<property name="wrap">True</property>
|
||||||
|
<property name="max-width-chars">64</property>
|
||||||
|
<property name="label"></property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="left-attach">0</property>
|
||||||
|
<property name="top-attach">3</property>
|
||||||
|
<property name="width">2</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">2</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
|
||||||
|
<!-- Note plate-forme (affichée par le .py si BIOS/non-UEFI) -->
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="note_platform">
|
||||||
|
<property name="visible">False</property>
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="xalign">0</property>
|
||||||
|
<property name="margin-top">8</property>
|
||||||
|
<property name="wrap">True</property>
|
||||||
|
<property name="max-width-chars">64</property>
|
||||||
|
<property name="label" translatable="yes">Dual-boot requires UEFI firmware (this machine booted in legacy BIOS mode). The option is disabled.</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">3</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child internal-child="accessible">
|
||||||
|
<object class="AtkObject" id="fwsWindowsWindow-atkobject">
|
||||||
|
<property name="AtkObject::accessible-name" translatable="yes">DUAL-BOOT WINDOWS</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</interface>
|
||||||
Reference in New Issue
Block a user