V2.1.0 — Formats personnalises + reperes de coupe
- Formats personnalises dans tous les menus deroulants de format : - "Personnalise..." : saisie libre largeur x hauteur en mm - "Ajouter un format..." : sauvegarder un format custom (persistant) - Formats custom affiches dans le dropdown avec separateur - Reperes de coupe (Annotations > Reperes de coupe) : - Longueur, distance du bord, epaisseur configurables - Couleur : noir, gris, CMYK - Reperes de centrage optionnels - Appliquer a : toutes, paires, impaires, page courante - Enlever les reperes de coupe (menu) - Step & Repeat : ajout des marges (haut, bas, gauche, droite) - Tous les dialogues de format migres vers format_combo Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -2,9 +2,9 @@
|
||||
|
||||
from PyQt6.QtWidgets import (QDialog, QVBoxLayout, QHBoxLayout, QLabel,
|
||||
QGroupBox, QComboBox, QSpinBox, QDoubleSpinBox,
|
||||
QDialogButtonBox, QPushButton, QListWidget,
|
||||
QCheckBox)
|
||||
from app.engine.pdf_utils import PAGE_SIZES, mm_to_pt
|
||||
QDialogButtonBox, QPushButton, QListWidget, QCheckBox)
|
||||
from app.engine.pdf_utils import mm_to_pt
|
||||
from app.dialogs.format_combo import populate_format_combo, get_selected_size, handle_format_selection
|
||||
|
||||
|
||||
class ManualImposeDialog(QDialog):
|
||||
@@ -19,53 +19,43 @@ class ManualImposeDialog(QDialog):
|
||||
def _setup_ui(self):
|
||||
layout = QVBoxLayout(self)
|
||||
|
||||
# Taille feuille
|
||||
grp_sheet = QGroupBox("Taille de la feuille cible")
|
||||
sl = QHBoxLayout(grp_sheet)
|
||||
sl.addWidget(QLabel("Format :"))
|
||||
self.combo_sheet = QComboBox()
|
||||
for name in PAGE_SIZES:
|
||||
self.combo_sheet.addItem(name)
|
||||
self.combo_sheet.setCurrentText("A3 Paysage")
|
||||
populate_format_combo(self.combo_sheet, "A3 Paysage")
|
||||
self.combo_sheet.activated.connect(lambda: handle_format_selection(self.combo_sheet, self))
|
||||
sl.addWidget(self.combo_sheet)
|
||||
layout.addWidget(grp_sheet)
|
||||
|
||||
# Placement
|
||||
grp_place = QGroupBox("Placer une page")
|
||||
pl = QHBoxLayout(grp_place)
|
||||
|
||||
pl.addWidget(QLabel("Page:"))
|
||||
self.spin_page = QSpinBox()
|
||||
self.spin_page.setRange(1, self._total_pages)
|
||||
pl.addWidget(self.spin_page)
|
||||
|
||||
pl.addWidget(QLabel("X:"))
|
||||
self.spin_x = QDoubleSpinBox()
|
||||
self.spin_x.setRange(0, 2000)
|
||||
self.spin_x.setSuffix(" mm")
|
||||
pl.addWidget(self.spin_x)
|
||||
|
||||
pl.addWidget(QLabel("Y:"))
|
||||
self.spin_y = QDoubleSpinBox()
|
||||
self.spin_y.setRange(0, 2000)
|
||||
self.spin_y.setSuffix(" mm")
|
||||
pl.addWidget(self.spin_y)
|
||||
|
||||
pl.addWidget(QLabel("Rot:"))
|
||||
self.combo_rot = QComboBox()
|
||||
self.combo_rot.addItems(["0", "90", "180", "270"])
|
||||
pl.addWidget(self.combo_rot)
|
||||
|
||||
pl.addWidget(QLabel("Ech:"))
|
||||
self.spin_scale = QDoubleSpinBox()
|
||||
self.spin_scale.setRange(0.1, 10.0)
|
||||
self.spin_scale.setValue(1.0)
|
||||
self.spin_scale.setSingleStep(0.1)
|
||||
pl.addWidget(self.spin_scale)
|
||||
|
||||
layout.addWidget(grp_place)
|
||||
|
||||
# Boutons
|
||||
btn_layout = QHBoxLayout()
|
||||
btn_add = QPushButton("Ajouter")
|
||||
btn_add.clicked.connect(self._add_placement)
|
||||
@@ -76,15 +66,12 @@ class ManualImposeDialog(QDialog):
|
||||
btn_layout.addStretch()
|
||||
layout.addLayout(btn_layout)
|
||||
|
||||
# Liste
|
||||
self.list_placements = QListWidget()
|
||||
layout.addWidget(self.list_placements)
|
||||
|
||||
# Crop marks
|
||||
self.chk_crop = QCheckBox("Reperes de coupe")
|
||||
layout.addWidget(self.chk_crop)
|
||||
|
||||
# Boutons OK/Annuler
|
||||
buttons = QDialogButtonBox(
|
||||
QDialogButtonBox.StandardButton.Ok | QDialogButtonBox.StandardButton.Cancel
|
||||
)
|
||||
@@ -102,7 +89,7 @@ class ManualImposeDialog(QDialog):
|
||||
}
|
||||
self._placements.append(p)
|
||||
self.list_placements.addItem(
|
||||
f"Page {p['page']} - X={self.spin_x.value():.1f} Y={self.spin_y.value():.1f} mm "
|
||||
f"Page {p['page']} — X={self.spin_x.value():.1f} Y={self.spin_y.value():.1f} mm "
|
||||
f"Rot={self.combo_rot.currentText()} Ech={self.spin_scale.value():.1f}"
|
||||
)
|
||||
|
||||
@@ -113,10 +100,8 @@ class ManualImposeDialog(QDialog):
|
||||
self._placements.pop(row)
|
||||
|
||||
def get_settings(self):
|
||||
sheet_text = self.combo_sheet.currentText()
|
||||
sheet_size = PAGE_SIZES[sheet_text]
|
||||
return {
|
||||
"sheet_size": sheet_size,
|
||||
"sheet_size": get_selected_size(self.combo_sheet),
|
||||
"placements": self._placements,
|
||||
"crop_marks": self.chk_crop.isChecked(),
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user