"""Dialogue Decalage du contenu.""" from PyQt6.QtWidgets import (QDialog, QVBoxLayout, QHBoxLayout, QLabel, QGroupBox, QDoubleSpinBox, QCheckBox, QDialogButtonBox) from app.engine.pdf_utils import mm_to_pt class TrimShiftDialog(QDialog): def __init__(self, total_pages=1, parent=None): super().__init__(parent) self.setWindowTitle("Decalage du contenu") self.setMinimumWidth(420) self._total_pages = total_pages self._setup_ui() def _setup_ui(self): layout = QVBoxLayout(self) # Decalage pages impaires grp_odd = QGroupBox("Decalage pages impaires (mm)") ol = QHBoxLayout(grp_odd) ol.addWidget(QLabel("X :")) self.spin_x = QDoubleSpinBox() self.spin_x.setRange(-200, 200) self.spin_x.setSuffix(" mm") ol.addWidget(self.spin_x) ol.addWidget(QLabel("Y :")) self.spin_y = QDoubleSpinBox() self.spin_y.setRange(-200, 200) self.spin_y.setSuffix(" mm") ol.addWidget(self.spin_y) layout.addWidget(grp_odd) # Pages paires differentes self.chk_different = QCheckBox("Decalage different pour pages paires") layout.addWidget(self.chk_different) grp_even = QGroupBox("Decalage pages paires (mm)") el = QHBoxLayout(grp_even) el.addWidget(QLabel("X :")) self.spin_x_even = QDoubleSpinBox() self.spin_x_even.setRange(-200, 200) self.spin_x_even.setSuffix(" mm") self.spin_x_even.setEnabled(False) el.addWidget(self.spin_x_even) el.addWidget(QLabel("Y :")) self.spin_y_even = QDoubleSpinBox() self.spin_y_even.setRange(-200, 200) self.spin_y_even.setSuffix(" mm") self.spin_y_even.setEnabled(False) el.addWidget(self.spin_y_even) layout.addWidget(grp_even) self.chk_different.toggled.connect(self.spin_x_even.setEnabled) self.chk_different.toggled.connect(self.spin_y_even.setEnabled) # Chasse (creep) grp_creep = QGroupBox("Compensation de chasse (livrets)") cl = QHBoxLayout(grp_creep) cl.addWidget(QLabel("Chasse max :")) self.spin_creep = QDoubleSpinBox() self.spin_creep.setRange(0, 20) self.spin_creep.setSuffix(" mm") self.spin_creep.setToolTip("Decalage progressif pour compenser l'epaisseur du papier") cl.addWidget(self.spin_creep) layout.addWidget(grp_creep) 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): return { "shift_x": mm_to_pt(self.spin_x.value()), "shift_y": mm_to_pt(self.spin_y.value()), "shift_x_even": mm_to_pt(self.spin_x_even.value()) if self.chk_different.isChecked() else None, "shift_y_even": mm_to_pt(self.spin_y_even.value()) if self.chk_different.isChecked() else None, "creep": mm_to_pt(self.spin_creep.value()), "creep_pages": self._total_pages, }