"""Dialogue Inserer des pages blanches.""" from PyQt6.QtWidgets import (QDialog, QVBoxLayout, QHBoxLayout, QLabel, QGroupBox, QRadioButton, QSpinBox, QDialogButtonBox) class InsertBlankDialog(QDialog): def __init__(self, total_pages=1, parent=None): super().__init__(parent) self.setWindowTitle("Inserer des pages blanches") self.setMinimumWidth(400) self._total_pages = total_pages self._setup_ui() def _setup_ui(self): layout = QVBoxLayout(self) grp = QGroupBox("Mode d'insertion") gl = QVBoxLayout(grp) self.rb_after = QRadioButton("Apres la page :") self.rb_after.setChecked(True) after_layout = QHBoxLayout() after_layout.addWidget(self.rb_after) self.spin_pos = QSpinBox() self.spin_pos.setRange(1, self._total_pages) self.spin_pos.setValue(1) after_layout.addWidget(self.spin_pos) after_layout.addStretch() gl.addLayout(after_layout) self.rb_before = QRadioButton("Avant la page selectionnee") gl.addWidget(self.rb_before) every_layout = QHBoxLayout() self.rb_every = QRadioButton("Toutes les") every_layout.addWidget(self.rb_every) self.spin_every = QSpinBox() self.spin_every.setRange(1, 100) self.spin_every.setValue(2) self.spin_every.setEnabled(False) every_layout.addWidget(self.spin_every) every_layout.addWidget(QLabel("pages")) every_layout.addStretch() gl.addLayout(every_layout) pad_layout = QHBoxLayout() self.rb_pad = QRadioButton("Completer au multiple de") pad_layout.addWidget(self.rb_pad) self.spin_multiple = QSpinBox() self.spin_multiple.setRange(2, 32) self.spin_multiple.setValue(4) self.spin_multiple.setEnabled(False) pad_layout.addWidget(self.spin_multiple) pad_layout.addWidget(QLabel("pages")) pad_layout.addStretch() gl.addLayout(pad_layout) layout.addWidget(grp) # Activer/desactiver les spinbox self.rb_every.toggled.connect(self.spin_every.setEnabled) self.rb_pad.toggled.connect(self.spin_multiple.setEnabled) # Boutons buttons = QDialogButtonBox( QDialogButtonBox.StandardButton.Ok | QDialogButtonBox.StandardButton.Cancel ) buttons.accepted.connect(self.accept) buttons.rejected.connect(self.reject) layout.addWidget(buttons) def get_settings(self): if self.rb_after.isChecked(): return {"mode": "after", "position": self.spin_pos.value()} elif self.rb_before.isChecked(): return {"mode": "before", "position": self.spin_pos.value()} elif self.rb_every.isChecked(): return {"mode": "every_n", "every_n": self.spin_every.value()} else: return {"mode": "pad_to_multiple", "target_multiple": self.spin_multiple.value()}