Several fixes
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import os
|
||||
from datetime import datetime
|
||||
from PySide6.QtWidgets import (
|
||||
QDialog, QVBoxLayout, QHBoxLayout, QPushButton, QLabel, QFrame,
|
||||
QSplitter, QWidget, QMessageBox, QApplication, QMenu,
|
||||
@@ -56,10 +57,18 @@ class DuplicateManagerDialog(QDialog):
|
||||
left_layout.addLayout(header_layout)
|
||||
|
||||
self.table_widget = QTableWidget()
|
||||
self.table_widget.setColumnCount(2)
|
||||
self.table_widget.setHorizontalHeaderLabels(["%", UITexts.CONTEXT_MENU_OPEN]) # Usamos una cadena existente o genérica
|
||||
self.table_widget.horizontalHeader().setSectionResizeMode(0, QHeaderView.ResizeToContents)
|
||||
self.table_widget.horizontalHeader().setSectionResizeMode(1, QHeaderView.Stretch)
|
||||
if self.review_mode:
|
||||
self.table_widget.setColumnCount(3)
|
||||
self.table_widget.setHorizontalHeaderLabels([UITexts.IGNORED_DATE, "%", UITexts.CONTEXT_MENU_OPEN])
|
||||
self.table_widget.horizontalHeader().setSectionResizeMode(0, QHeaderView.ResizeToContents)
|
||||
self.table_widget.horizontalHeader().setSectionResizeMode(1, QHeaderView.ResizeToContents)
|
||||
self.table_widget.horizontalHeader().setSectionResizeMode(2, QHeaderView.Stretch)
|
||||
else:
|
||||
self.table_widget.setColumnCount(2)
|
||||
self.table_widget.setHorizontalHeaderLabels(["%", UITexts.CONTEXT_MENU_OPEN]) # Usamos una cadena existente o genérica
|
||||
self.table_widget.horizontalHeader().setSectionResizeMode(0, QHeaderView.ResizeToContents)
|
||||
self.table_widget.horizontalHeader().setSectionResizeMode(1, QHeaderView.Stretch)
|
||||
|
||||
self.table_widget.verticalHeader().setVisible(False)
|
||||
self.table_widget.setSelectionBehavior(QAbstractItemView.SelectRows)
|
||||
self.table_widget.setSelectionMode(QAbstractItemView.SingleSelection)
|
||||
@@ -311,17 +320,30 @@ class DuplicateManagerDialog(QDialog):
|
||||
row = self.table_widget.rowCount()
|
||||
self.table_widget.insertRow(row)
|
||||
|
||||
# Columna 0: Porcentaje (usamos DisplayRole con int para que ordene numéricamente)
|
||||
if self.review_mode:
|
||||
# Column 0: Ignored Date
|
||||
ts = dup.timestamp if hasattr(dup, 'timestamp') and dup.timestamp else 0
|
||||
date_str = datetime.fromtimestamp(ts).strftime("%Y-%m-%d %H:%M") if ts else "-"
|
||||
date_item = QTableWidgetItem(date_str)
|
||||
date_item.setData(Qt.UserRole, i) # Store original index here for _load_pair
|
||||
date_item.setTextAlignment(Qt.AlignCenter)
|
||||
self.table_widget.setItem(row, 0, date_item)
|
||||
col_offset = 1
|
||||
else:
|
||||
col_offset = 0
|
||||
|
||||
# Columna similarity (usamos DisplayRole con int para que ordene numéricamente)
|
||||
sim_item = QTableWidgetItem()
|
||||
sim_item.setData(Qt.DisplayRole, dup.similarity if dup.similarity is not None else 0)
|
||||
sim_item.setTextAlignment(Qt.AlignCenter)
|
||||
sim_item.setData(Qt.UserRole, i) # Guardamos el índice original en la lista duplicates
|
||||
if not self.review_mode:
|
||||
sim_item.setData(Qt.UserRole, i) # Guardamos el índice original en la lista duplicates
|
||||
|
||||
# Columna 1: Nombres de ficheros
|
||||
names_item = QTableWidgetItem(f"{name1} ↔ {name2}")
|
||||
|
||||
self.table_widget.setItem(row, 0, sim_item)
|
||||
self.table_widget.setItem(row, 1, names_item)
|
||||
self.table_widget.setItem(row, col_offset, sim_item)
|
||||
self.table_widget.setItem(row, col_offset + 1, names_item)
|
||||
|
||||
self.counter_lbl.setText(str(len(self.duplicates)))
|
||||
self.table_widget.blockSignals(False)
|
||||
@@ -661,6 +683,11 @@ class DuplicateManagerDialog(QDialog):
|
||||
def _skip(self):
|
||||
if self.review_mode and self.current_dup_pair:
|
||||
self.cache.mark_as_exception(self.current_dup_pair.path1, self.current_dup_pair.path2, False)
|
||||
# Borramos los hashes para que el detector las trate como imágenes nuevas
|
||||
# y fuerce una nueva comparación en el siguiente escaneo.
|
||||
# Usamos clear_relationships=False para no perder otras posibles coincidencias ya marcadas.
|
||||
self.cache.remove_hash_for_path(self.current_dup_pair.path1, clear_relationships=False)
|
||||
self.cache.remove_hash_for_path(self.current_dup_pair.path2, clear_relationships=False)
|
||||
self._handle_action(skip=False, permanent=False)
|
||||
else:
|
||||
self._handle_action(skip=True)
|
||||
|
||||
Reference in New Issue
Block a user