Outil d'imposition PDF desktop (PyQt6) remplacant Quite Imposing Plus. 9 fonctions : livret, n-up, step & repeat, imposition manuelle, jointure pages, pages blanches, numerotation, masquage, fonds perdus. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
83 lines
3.0 KiB
Python
83 lines
3.0 KiB
Python
"""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()}
|