"""Dialogue Creer un livret.""" from PyQt6.QtWidgets import (QDialog, QVBoxLayout, QHBoxLayout, QLabel, QComboBox, QGroupBox, QRadioButton, QSpinBox, QDialogButtonBox) from app.dialogs.format_combo import populate_format_combo, get_selected_size, handle_format_selection class BookletDialog(QDialog): def __init__(self, parent=None): super().__init__(parent) self.setWindowTitle("Creer un livret") self.setMinimumWidth(400) self._setup_ui() def _setup_ui(self): layout = QVBoxLayout(self) grp_binding = QGroupBox("Type de reliure") bl = QVBoxLayout(grp_binding) self.rb_saddle = QRadioButton("Piqure a cheval (livret agrafe)") self.rb_saddle.setChecked(True) self.rb_perfect = QRadioButton("Dos carre colle (livre)") self.rb_continuous = QRadioButton("Continu (pages sequentielles)") self.rb_cut_stacks = QRadioButton("Cut stacks (couper et empiler)") bl.addWidget(self.rb_saddle) bl.addWidget(self.rb_perfect) bl.addWidget(self.rb_continuous) bl.addWidget(self.rb_cut_stacks) layout.addWidget(grp_binding) sig_layout = QHBoxLayout() sig_layout.addWidget(QLabel("Pages par cahier :")) self.spin_signature = QSpinBox() self.spin_signature.setRange(4, 128) self.spin_signature.setValue(32) self.spin_signature.setSingleStep(4) self.spin_signature.setEnabled(False) sig_layout.addWidget(self.spin_signature) sig_layout.addStretch() layout.addLayout(sig_layout) self.rb_perfect.toggled.connect(self.spin_signature.setEnabled) grp_sheet = QGroupBox("Taille de la feuille") sl = QHBoxLayout(grp_sheet) sl.addWidget(QLabel("Format :")) self.combo_sheet = QComboBox() self.combo_sheet.addItem("Automatique (2x page)") populate_format_combo(self.combo_sheet, "Automatique (2x page)") self.combo_sheet.activated.connect(lambda: handle_format_selection(self.combo_sheet, self)) sl.addWidget(self.combo_sheet) layout.addWidget(grp_sheet) grp_align = QGroupBox("Alignement") al = QVBoxLayout(grp_align) self.rb_center = QRadioButton("Centrer") self.rb_center.setChecked(True) self.rb_pull = QRadioButton("Vers le dos (centre)") self.rb_bl = QRadioButton("Bas-gauche") al.addWidget(self.rb_center) al.addWidget(self.rb_pull) al.addWidget(self.rb_bl) layout.addWidget(grp_align) 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_saddle.isChecked(): binding = "saddle_stitch" elif self.rb_perfect.isChecked(): binding = "perfect_bound" elif self.rb_continuous.isChecked(): binding = "continuous" else: binding = "cut_stacks" text = self.combo_sheet.currentText() if text.startswith("Automatique"): sheet_size = None else: sheet_size = get_selected_size(self.combo_sheet) if self.rb_center.isChecked(): alignment = "center" elif self.rb_pull.isChecked(): alignment = "pull_center" else: alignment = "bottom_left" return { "binding": binding, "sheet_size": sheet_size, "signature_size": self.spin_signature.value(), "alignment": alignment, }