Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 21 additions & 2 deletions taggui/models/image_list_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@

import exifread
import imagesize
from PySide6.QtCore import (QAbstractListModel, QModelIndex, QSize, Qt, Signal,
Slot)
from PySide6.QtCore import (QAbstractListModel, QModelIndex, QMimeData, QSize,
Qt, QUrl, Signal, Slot)
from PySide6.QtGui import QIcon, QImageReader, QPixmap
from PySide6.QtWidgets import QMessageBox

Expand Down Expand Up @@ -60,6 +60,25 @@ def __init__(self, image_list_image_width: int, tag_separator: str):
self.proxy_image_list_model = None
self.image_list_selection_model = None

def flags(self, index):
default_flags = super().flags(index)
if index.isValid():
return Qt.ItemFlags.ItemIsDragEnabled | default_flags
return default_flags

def mimeTypes(self):
return ('text/uri-list', 'text/plain')

def mimeData(self, indexes):
mimeData = QMimeData()
mimeData.setUrls([QUrl('file://' + str(self.data(
image_index, Qt.ItemDataRole.UserRole
).path)) for image_index in indexes])
mimeData.setText('\r\n'.join(['file://' + str(self.data(
image_index, Qt.ItemDataRole.UserRole
).path) for image_index in indexes]))
return mimeData

def rowCount(self, parent=None) -> int:
return len(self.images)

Expand Down
2 changes: 2 additions & 0 deletions taggui/widgets/image_list.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@ def __init__(self, parent, proxy_image_list_model: ProxyImageListModel,
self.tag_separator = tag_separator
self.setModel(proxy_image_list_model)
self.setWordWrap(True)
self.setDragEnabled(True)
# If the actual height of the image is greater than 3 times the width,
# the image will be scaled down to fit.
self.setIconSize(QSize(image_width, image_width * 3))
Expand Down Expand Up @@ -427,3 +428,4 @@ def jump_to_first_untagged_image(self):

def get_selected_image_indices(self) -> list[QModelIndex]:
return self.list_view.get_selected_image_indices()