mirror of
https://github.com/arsenetar/dupeguru.git
synced 2026-01-22 06:37:17 +00:00
Merge branch 'master' into PR_ref_row_background_color
This commit is contained in:
@@ -92,12 +92,14 @@ class DirectoriesDialog(QMainWindow):
|
||||
self.app.showResultsWindow,
|
||||
),
|
||||
("actionAddFolder", "", "", tr("Add Folder..."), self.addFolderTriggered),
|
||||
("actionLoadDirectories", "", "", tr("Load Directories..."), self.loadDirectoriesTriggered),
|
||||
("actionSaveDirectories", "", "", tr("Save Directories..."), self.saveDirectoriesTriggered),
|
||||
]
|
||||
createActions(ACTIONS, self)
|
||||
# if self.app.use_tabs:
|
||||
# # Keep track of actions which should only be accessible from this class
|
||||
# for action, _, _, _, _ in ACTIONS:
|
||||
# self.specific_actions.add(getattr(self, action))
|
||||
if self.app.use_tabs:
|
||||
# Keep track of actions which should only be accessible from this window
|
||||
self.specific_actions.add(self.actionLoadDirectories)
|
||||
self.specific_actions.add(self.actionSaveDirectories)
|
||||
|
||||
def _setupMenu(self):
|
||||
if not self.app.use_tabs:
|
||||
@@ -127,6 +129,9 @@ class DirectoriesDialog(QMainWindow):
|
||||
self.menuFile.addSeparator()
|
||||
self.menuFile.addAction(self.app.actionClearPictureCache)
|
||||
self.menuFile.addSeparator()
|
||||
self.menuFile.addAction(self.actionLoadDirectories)
|
||||
self.menuFile.addAction(self.actionSaveDirectories)
|
||||
self.menuFile.addSeparator()
|
||||
self.menuFile.addAction(self.app.actionQuit)
|
||||
|
||||
self.menuView.addAction(self.app.actionDirectoriesWindow)
|
||||
@@ -327,9 +332,25 @@ class DirectoriesDialog(QMainWindow):
|
||||
self.app.model.load_from(destination)
|
||||
self.app.recentResults.insertItem(destination)
|
||||
|
||||
def loadDirectoriesTriggered(self):
|
||||
title = tr("Select a directories file to load")
|
||||
files = ";;".join([tr("dupeGuru Results (*.dupegurudirs)"), tr("All Files (*.*)")])
|
||||
destination = QFileDialog.getOpenFileName(self, title, "", files)[0]
|
||||
if destination:
|
||||
self.app.model.load_directories(destination)
|
||||
|
||||
def removeFolderButtonClicked(self):
|
||||
self.directoriesModel.model.remove_selected()
|
||||
|
||||
def saveDirectoriesTriggered(self):
|
||||
title = tr("Select a file to save your directories to")
|
||||
files = tr("dupeGuru Directories (*.dupegurudirs)")
|
||||
destination, chosen_filter = QFileDialog.getSaveFileName(self, title, "", files)
|
||||
if destination:
|
||||
if not destination.endswith(".dupegurudirs"):
|
||||
destination = "{}.dupegurudirs".format(destination)
|
||||
self.app.model.save_directories_as(destination)
|
||||
|
||||
def scanButtonClicked(self):
|
||||
if self.app.model.results.is_modified:
|
||||
title = tr("Start a new scan")
|
||||
|
||||
@@ -19,14 +19,8 @@ class DetailsDialog(DetailsDialogBase):
|
||||
self.setWindowTitle(tr("Details"))
|
||||
self.resize(502, 295)
|
||||
self.setMinimumSize(QSize(250, 250))
|
||||
# self.verticalLayout = QVBoxLayout(self)
|
||||
# self.verticalLayout.setSpacing(0)
|
||||
# self.verticalLayout.setContentsMargins(0, 0, 0, 0)
|
||||
self.tableView = DetailsTable(self)
|
||||
self.tableView.setAlternatingRowColors(True)
|
||||
self.tableView.setSelectionBehavior(QAbstractItemView.SelectRows)
|
||||
self.tableView.setShowGrid(False)
|
||||
# self.verticalLayout.addWidget(self.tableView)
|
||||
# self.centralWidget = QWidget()
|
||||
# self.centralWidget.setLayout(self.verticalLayout)
|
||||
self.setWidget(self.tableView)
|
||||
|
||||
@@ -129,11 +129,7 @@ class DetailsDialog(DetailsDialogBase):
|
||||
|
||||
# This works when expanding but it's ugly:
|
||||
if self.selectedImageViewer.size().width() > self.referenceImageViewer.size().width():
|
||||
# print(f"""Before selected size: {self.selectedImageViewer.size()}\n""",
|
||||
# f"""Before reference size: {self.referenceImageViewer.size()}""")
|
||||
self.selectedImageViewer.resize(self.referenceImageViewer.size())
|
||||
# print(f"""After selected size: {self.selectedImageViewer.size()}\n""",
|
||||
# f"""After reference size: {self.referenceImageViewer.size()}""")
|
||||
|
||||
# model --> view
|
||||
def refresh(self):
|
||||
|
||||
@@ -758,11 +758,15 @@ class QWidgetImageViewer(QWidget):
|
||||
return
|
||||
self.disconnectMouseSignals()
|
||||
|
||||
def contextMenuEvent(self, event):
|
||||
"""Block parent's (main window) context menu on right click."""
|
||||
event.accept()
|
||||
|
||||
def mousePressEvent(self, event):
|
||||
if self.bestFit or not self.isEnabled():
|
||||
event.ignore()
|
||||
return
|
||||
if event.button() == Qt.LeftButton:
|
||||
if event.button() & (Qt.LeftButton | Qt.MidButton | Qt.RightButton):
|
||||
self._drag = True
|
||||
else:
|
||||
self._drag = False
|
||||
@@ -790,8 +794,8 @@ class QWidgetImageViewer(QWidget):
|
||||
if self.bestFit or not self.isEnabled():
|
||||
event.ignore()
|
||||
return
|
||||
if event.button() == Qt.LeftButton:
|
||||
self._drag = False
|
||||
# if event.button() == Qt.LeftButton:
|
||||
self._drag = False
|
||||
|
||||
self._app.restoreOverrideCursor()
|
||||
self.setMouseTracking(False)
|
||||
@@ -956,11 +960,18 @@ class ScrollAreaImageViewer(QScrollArea):
|
||||
self._horizontalScrollBar.valueChanged.connect(
|
||||
self.controller.onHScrollBarChanged, Qt.UniqueConnection)
|
||||
|
||||
def contextMenuEvent(self, event):
|
||||
"""Block parent's (main window) context menu on right click."""
|
||||
# Even though we don't have a context menu right now, and the default
|
||||
# contextMenuPolicy is DefaultContextMenu, we leverage that handler to
|
||||
# avoid raising the Result window's Actions menu
|
||||
event.accept()
|
||||
|
||||
def mousePressEvent(self, event):
|
||||
if self.bestFit:
|
||||
event.ignore()
|
||||
return
|
||||
if event.button() == Qt.LeftButton:
|
||||
if event.button() & (Qt.LeftButton | Qt.MidButton | Qt.RightButton):
|
||||
self._drag = True
|
||||
else:
|
||||
self._drag = False
|
||||
@@ -985,8 +996,7 @@ class ScrollAreaImageViewer(QScrollArea):
|
||||
if self.bestFit:
|
||||
event.ignore()
|
||||
return
|
||||
if event.button() == Qt.LeftButton:
|
||||
self._drag = False
|
||||
self._drag = False
|
||||
self._app.restoreOverrideCursor()
|
||||
self.setMouseTracking(False)
|
||||
super().mouseReleaseEvent(event)
|
||||
@@ -1203,11 +1213,15 @@ class GraphicsViewViewer(QGraphicsView):
|
||||
self.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
|
||||
self.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded)
|
||||
|
||||
def contextMenuEvent(self, event):
|
||||
"""Block parent's (main window) context menu on right click."""
|
||||
event.accept()
|
||||
|
||||
def mousePressEvent(self, event):
|
||||
if self.bestFit:
|
||||
event.ignore()
|
||||
return
|
||||
if event.button() == Qt.LeftButton:
|
||||
if event.button() & (Qt.LeftButton | Qt.MidButton | Qt.RightButton):
|
||||
self._drag = True
|
||||
else:
|
||||
self._drag = False
|
||||
@@ -1223,8 +1237,7 @@ class GraphicsViewViewer(QGraphicsView):
|
||||
if self.bestFit:
|
||||
event.ignore()
|
||||
return
|
||||
if event.button() == Qt.LeftButton:
|
||||
self._drag = False
|
||||
self._drag = False
|
||||
self._app.restoreOverrideCursor()
|
||||
self.setMouseTracking(False)
|
||||
self.updateCenterPoint()
|
||||
|
||||
@@ -29,6 +29,15 @@ class File(PhotoBase):
|
||||
def _plat_get_blocks(self, block_count_per_side, orientation):
|
||||
image = QImage(str(self.path))
|
||||
image = image.convertToFormat(QImage.Format_RGB888)
|
||||
if type(orientation) == str:
|
||||
logging.warning("Orientation for file '%s' was a str '%s', not an int.",
|
||||
str(self.path), orientation)
|
||||
try:
|
||||
orientation = int(orientation)
|
||||
except Exception as e:
|
||||
logging.exception("Skipping transformation because could not \
|
||||
convert str to int. %s", e)
|
||||
return getblocks(image, block_count_per_side)
|
||||
# MYSTERY TO SOLVE: For reasons I cannot explain, orientations 5 and 7 don't work for
|
||||
# duplicate scanning. The transforms seems to work fine (if I try to save the image after
|
||||
# the transform, we see that the image has been correctly flipped and rotated), but the
|
||||
|
||||
@@ -19,14 +19,8 @@ class DetailsDialog(DetailsDialogBase):
|
||||
self.setWindowTitle(tr("Details"))
|
||||
self.resize(502, 186)
|
||||
self.setMinimumSize(QSize(200, 0))
|
||||
# self.verticalLayout = QVBoxLayout()
|
||||
# self.verticalLayout.setSpacing(0)
|
||||
# self.verticalLayout.setContentsMargins(0, 0, 0, 0)
|
||||
self.tableView = DetailsTable(self)
|
||||
self.tableView.setAlternatingRowColors(True)
|
||||
self.tableView.setSelectionBehavior(QAbstractItemView.SelectRows)
|
||||
self.tableView.setShowGrid(False)
|
||||
# self.verticalLayout.addWidget(self.tableView)
|
||||
# self.centralWidget = QWidget()
|
||||
# self.centralWidget.setLayout(self.verticalLayout)
|
||||
self.setWidget(self.tableView)
|
||||
|
||||
Reference in New Issue
Block a user