Initial commit — Copydev Imposing Tool

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>
This commit is contained in:
Jules
2026-03-20 10:54:02 +01:00
commit e3dfd90933
30 changed files with 2364 additions and 0 deletions

View File

@@ -0,0 +1,82 @@
"""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()}