mirror of
https://github.com/arsenetar/dupeguru.git
synced 2026-01-22 06:37:17 +00:00
More cleanups
- Cleanup columns.py and tables - Other misc cleanups - Remove text_field.py from qtlib as it is not used - Remove unused variables from image_viewer method
This commit is contained in:
@@ -64,6 +64,8 @@ class DirectoriesDelegate(QStyledItemDelegate):
|
||||
|
||||
|
||||
class DirectoriesModel(TreeModel):
|
||||
MIME_TYPE_FORMAT = "text/uri-list"
|
||||
|
||||
def __init__(self, model, view, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
self.model = model
|
||||
@@ -104,9 +106,9 @@ class DirectoriesModel(TreeModel):
|
||||
|
||||
def dropMimeData(self, mime_data, action, row, column, parent_index):
|
||||
# the data in mimeData is urlencoded **in utf-8**
|
||||
if not mime_data.hasFormat("text/uri-list"):
|
||||
if not mime_data.hasFormat(self.MIME_TYPE_FORMAT):
|
||||
return False
|
||||
data = bytes(mime_data.data("text/uri-list")).decode("ascii")
|
||||
data = bytes(mime_data.data(self.MIME_TYPE_FORMAT)).decode("ascii")
|
||||
urls = data.split("\r\n")
|
||||
paths = [QUrl(url).toLocalFile() for url in urls if url]
|
||||
for path in paths:
|
||||
@@ -129,7 +131,7 @@ class DirectoriesModel(TreeModel):
|
||||
return None
|
||||
|
||||
def mimeTypes(self):
|
||||
return ["text/uri-list"]
|
||||
return [self.MIME_TYPE_FORMAT]
|
||||
|
||||
def setData(self, index, value, role):
|
||||
if not index.isValid() or role != Qt.EditRole or index.column() != 1:
|
||||
|
||||
@@ -15,7 +15,7 @@ tr = trget("ui")
|
||||
class ExcludeListTable(Table):
|
||||
"""Model for exclude list"""
|
||||
|
||||
COLUMNS = [Column("marked", defaultWidth=15), Column("regex", defaultWidth=230)]
|
||||
COLUMNS = [Column("marked", default_width=15), Column("regex", default_width=230)]
|
||||
|
||||
def __init__(self, app, view, **kwargs):
|
||||
model = app.model.exclude_list_dialog.exclude_list_table # pointer to GUITable
|
||||
|
||||
@@ -13,6 +13,6 @@ class IgnoreListTable(Table):
|
||||
"""Ignore list model"""
|
||||
|
||||
COLUMNS = [
|
||||
Column("path1", defaultWidth=230),
|
||||
Column("path2", defaultWidth=230),
|
||||
Column("path1", default_width=230),
|
||||
Column("path2", default_width=230),
|
||||
]
|
||||
|
||||
@@ -10,23 +10,23 @@ from ..results_model import ResultsModel as ResultsModelBase
|
||||
|
||||
class ResultsModel(ResultsModelBase):
|
||||
COLUMNS = [
|
||||
Column("marked", defaultWidth=30),
|
||||
Column("name", defaultWidth=200),
|
||||
Column("folder_path", defaultWidth=180),
|
||||
Column("size", defaultWidth=60),
|
||||
Column("duration", defaultWidth=60),
|
||||
Column("bitrate", defaultWidth=50),
|
||||
Column("samplerate", defaultWidth=60),
|
||||
Column("extension", defaultWidth=40),
|
||||
Column("mtime", defaultWidth=120),
|
||||
Column("title", defaultWidth=120),
|
||||
Column("artist", defaultWidth=120),
|
||||
Column("album", defaultWidth=120),
|
||||
Column("genre", defaultWidth=80),
|
||||
Column("year", defaultWidth=40),
|
||||
Column("track", defaultWidth=40),
|
||||
Column("comment", defaultWidth=120),
|
||||
Column("percentage", defaultWidth=60),
|
||||
Column("words", defaultWidth=120),
|
||||
Column("dupe_count", defaultWidth=80),
|
||||
Column("marked", default_width=30),
|
||||
Column("name", default_width=200),
|
||||
Column("folder_path", default_width=180),
|
||||
Column("size", default_width=60),
|
||||
Column("duration", default_width=60),
|
||||
Column("bitrate", default_width=50),
|
||||
Column("samplerate", default_width=60),
|
||||
Column("extension", default_width=40),
|
||||
Column("mtime", default_width=120),
|
||||
Column("title", default_width=120),
|
||||
Column("artist", default_width=120),
|
||||
Column("album", default_width=120),
|
||||
Column("genre", default_width=80),
|
||||
Column("year", default_width=40),
|
||||
Column("track", default_width=40),
|
||||
Column("comment", default_width=120),
|
||||
Column("percentage", default_width=60),
|
||||
Column("words", default_width=120),
|
||||
Column("dupe_count", default_width=80),
|
||||
]
|
||||
|
||||
@@ -201,16 +201,12 @@ class BaseController(QObject):
|
||||
# the SelectedImageViewer widget sometimes ends up being bigger
|
||||
# than the ReferenceImageViewer by one pixel, which distorts the
|
||||
# scaled down pixmap for the reference, hence we'll reuse its size here.
|
||||
selected_size = self._updateImage(
|
||||
self.selectedPixmap, self.scaledSelectedPixmap, self.selectedViewer, None, same_group
|
||||
)
|
||||
self._updateImage(
|
||||
self.referencePixmap, self.scaledReferencePixmap, self.referenceViewer, selected_size, same_group
|
||||
)
|
||||
self._updateImage(self.selectedPixmap, self.selectedViewer, same_group)
|
||||
self._updateImage(self.referencePixmap, self.referenceViewer, same_group)
|
||||
if ignore_update:
|
||||
self.selectedViewer.ignore_signal = False
|
||||
|
||||
def _updateImage(self, pixmap, scaledpixmap, viewer, target_size=None, same_group=False):
|
||||
def _updateImage(self, pixmap, viewer, same_group=False):
|
||||
# WARNING this is called on every resize event, might need to split
|
||||
# into a separate function depending on the implementation used
|
||||
if pixmap.isNull():
|
||||
@@ -340,8 +336,8 @@ class BaseController(QObject):
|
||||
self.selectedViewer.resetCenter()
|
||||
self.referenceViewer.resetCenter()
|
||||
|
||||
target_size = self._updateImage(self.selectedPixmap, self.scaledSelectedPixmap, self.selectedViewer, None, True)
|
||||
self._updateImage(self.referencePixmap, self.scaledReferencePixmap, self.referenceViewer, target_size, True)
|
||||
self._updateImage(self.selectedPixmap, self.selectedViewer, True)
|
||||
self._updateImage(self.referencePixmap, self.referenceViewer, True)
|
||||
self.centerViews()
|
||||
|
||||
self.parent.verticalToolBar.buttonZoomIn.setEnabled(False)
|
||||
|
||||
@@ -10,14 +10,14 @@ from ..results_model import ResultsModel as ResultsModelBase
|
||||
|
||||
class ResultsModel(ResultsModelBase):
|
||||
COLUMNS = [
|
||||
Column("marked", defaultWidth=30),
|
||||
Column("name", defaultWidth=200),
|
||||
Column("folder_path", defaultWidth=180),
|
||||
Column("size", defaultWidth=60),
|
||||
Column("extension", defaultWidth=40),
|
||||
Column("dimensions", defaultWidth=100),
|
||||
Column("exif_timestamp", defaultWidth=120),
|
||||
Column("mtime", defaultWidth=120),
|
||||
Column("percentage", defaultWidth=60),
|
||||
Column("dupe_count", defaultWidth=80),
|
||||
Column("marked", default_width=30),
|
||||
Column("name", default_width=200),
|
||||
Column("folder_path", default_width=180),
|
||||
Column("size", default_width=60),
|
||||
Column("extension", default_width=40),
|
||||
Column("dimensions", default_width=100),
|
||||
Column("exif_timestamp", default_width=120),
|
||||
Column("mtime", default_width=120),
|
||||
Column("percentage", default_width=60),
|
||||
Column("dupe_count", default_width=80),
|
||||
]
|
||||
|
||||
@@ -12,8 +12,8 @@ from qtlib.table import Table
|
||||
|
||||
class ProblemTable(Table):
|
||||
COLUMNS = [
|
||||
Column("path", defaultWidth=150),
|
||||
Column("msg", defaultWidth=150),
|
||||
Column("path", default_width=150),
|
||||
Column("msg", default_width=150),
|
||||
]
|
||||
|
||||
def __init__(self, model, view, **kwargs):
|
||||
|
||||
@@ -295,7 +295,7 @@ class ResultWindow(QMainWindow):
|
||||
if menu.actions():
|
||||
menu.clear()
|
||||
self._column_actions = []
|
||||
for index, (display, visible) in enumerate(self.app.model.result_table.columns.menu_items()):
|
||||
for index, (display, visible) in enumerate(self.app.model.result_table._columns.menu_items()):
|
||||
action = menu.addAction(display)
|
||||
action.setCheckable(True)
|
||||
action.setChecked(visible)
|
||||
@@ -389,7 +389,7 @@ class ResultWindow(QMainWindow):
|
||||
# --- Private
|
||||
def _update_column_actions_status(self):
|
||||
# Update menu checked state
|
||||
menu_items = self.app.model.result_table.columns.menu_items()
|
||||
menu_items = self.app.model.result_table._columns.menu_items()
|
||||
for action, (display, visible) in zip(self._column_actions, menu_items):
|
||||
action.setChecked(visible)
|
||||
|
||||
@@ -483,16 +483,16 @@ class ResultWindow(QMainWindow):
|
||||
def columnToggled(self, action):
|
||||
index = action.item_index
|
||||
if index == -1:
|
||||
self.app.model.result_table.columns.reset_to_defaults()
|
||||
self.app.model.result_table._columns.reset_to_defaults()
|
||||
self._update_column_actions_status()
|
||||
else:
|
||||
visible = self.app.model.result_table.columns.toggle_menu_item(index)
|
||||
visible = self.app.model.result_table._columns.toggle_menu_item(index)
|
||||
action.setChecked(visible)
|
||||
|
||||
def contextMenuEvent(self, event):
|
||||
self.actionActions.menu().exec_(event.globalPos())
|
||||
|
||||
def resultsDoubleClicked(self, modelIndex):
|
||||
def resultsDoubleClicked(self, model_index):
|
||||
self.app.model.open_selected()
|
||||
|
||||
def resultsSpacePressed(self):
|
||||
|
||||
@@ -95,7 +95,7 @@ class ResultsModel(Table):
|
||||
|
||||
# --- Events
|
||||
def appWillSavePrefs(self):
|
||||
self.model.columns.save_columns()
|
||||
self.model._columns.save_columns()
|
||||
|
||||
# --- model --> view
|
||||
def invalidate_markings(self):
|
||||
|
||||
@@ -10,13 +10,13 @@ from ..results_model import ResultsModel as ResultsModelBase
|
||||
|
||||
class ResultsModel(ResultsModelBase):
|
||||
COLUMNS = [
|
||||
Column("marked", defaultWidth=30),
|
||||
Column("name", defaultWidth=200),
|
||||
Column("folder_path", defaultWidth=180),
|
||||
Column("size", defaultWidth=60),
|
||||
Column("extension", defaultWidth=40),
|
||||
Column("mtime", defaultWidth=120),
|
||||
Column("percentage", defaultWidth=60),
|
||||
Column("words", defaultWidth=120),
|
||||
Column("dupe_count", defaultWidth=80),
|
||||
Column("marked", default_width=30),
|
||||
Column("name", default_width=200),
|
||||
Column("folder_path", default_width=180),
|
||||
Column("size", default_width=60),
|
||||
Column("extension", default_width=40),
|
||||
Column("mtime", default_width=120),
|
||||
Column("percentage", default_width=60),
|
||||
Column("words", default_width=120),
|
||||
Column("dupe_count", default_width=80),
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user