V3.1.0 — Selection multiple, impression, MAJ dans Aide, menu contextuel
- Selection multiple dans les vignettes (Ctrl+clic, Maj+clic) - Rotation/suppression sur selection multiple - Impression : os.startfile(print) avec fallback - MAJ deplacee dans Aide > Rechercher une mise a jour (plus au demarrage) - Support arguments CLI : ouvrir un PDF en argument, fusionner si plusieurs - register_windows.bat : association fichier PDF + menu contextuel Windows - Clic droit > CopyDev Impose > Ouvrir / Livret A4 / Livret A3 - Presets manager (base pour macros) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -55,6 +55,7 @@ class PagePanel(QWidget):
|
||||
}
|
||||
""")
|
||||
|
||||
self._list.setSelectionMode(QAbstractItemView.SelectionMode.ExtendedSelection)
|
||||
self._list.setDragDropMode(QAbstractItemView.DragDropMode.InternalMove)
|
||||
self._list.setDefaultDropAction(Qt.DropAction.MoveAction)
|
||||
self._list.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
|
||||
@@ -94,11 +95,21 @@ class PagePanel(QWidget):
|
||||
indices.append(original_index)
|
||||
self.pages_reordered.emit(indices)
|
||||
|
||||
def get_selected_indices(self):
|
||||
"""Retourne les indices des pages selectionnees."""
|
||||
return sorted(set(self._list.row(item) for item in self._list.selectedItems()))
|
||||
|
||||
def _context_menu(self, pos):
|
||||
item = self._list.itemAt(pos)
|
||||
if not item:
|
||||
return
|
||||
row = self._list.row(item)
|
||||
selected = self.get_selected_indices()
|
||||
if row not in selected:
|
||||
selected = [row]
|
||||
|
||||
count = len(selected)
|
||||
label_pages = f"{count} page(s)" if count > 1 else "cette page"
|
||||
|
||||
menu = QMenu(self)
|
||||
menu.setStyleSheet("""
|
||||
@@ -107,21 +118,25 @@ class PagePanel(QWidget):
|
||||
QMenu::item:selected { background: #e0f4ff; color: #006fa6; }
|
||||
""")
|
||||
|
||||
act_rot_right = menu.addAction("Pivoter +90°")
|
||||
act_rot_left = menu.addAction("Pivoter -90°")
|
||||
act_rot_180 = menu.addAction("Pivoter 180°")
|
||||
act_rot_right = menu.addAction(f"Pivoter +90° ({label_pages})")
|
||||
act_rot_left = menu.addAction(f"Pivoter -90° ({label_pages})")
|
||||
act_rot_180 = menu.addAction(f"Pivoter 180° ({label_pages})")
|
||||
menu.addSeparator()
|
||||
act_insert = menu.addAction("Inserer une page blanche apres")
|
||||
act_delete = menu.addAction("Supprimer cette page")
|
||||
act_delete = menu.addAction(f"Supprimer {label_pages}")
|
||||
|
||||
action = menu.exec(self._list.mapToGlobal(pos))
|
||||
if action == act_delete:
|
||||
self.page_delete_requested.emit(row)
|
||||
for idx in reversed(selected):
|
||||
self.page_delete_requested.emit(idx)
|
||||
elif action == act_insert:
|
||||
self.page_insert_requested.emit(row)
|
||||
elif action == act_rot_right:
|
||||
self.page_rotate_requested.emit(row, 90)
|
||||
for idx in selected:
|
||||
self.page_rotate_requested.emit(idx, 90)
|
||||
elif action == act_rot_left:
|
||||
self.page_rotate_requested.emit(row, -90)
|
||||
for idx in selected:
|
||||
self.page_rotate_requested.emit(idx, -90)
|
||||
elif action == act_rot_180:
|
||||
self.page_rotate_requested.emit(row, 180)
|
||||
for idx in selected:
|
||||
self.page_rotate_requested.emit(idx, 180)
|
||||
|
||||
Reference in New Issue
Block a user