Implement file drag drop
This commit is contained in:
@@ -666,3 +666,81 @@ class PliantQGraphicsScene(QtWidgets.QGraphicsScene):
|
||||
|
||||
self.parent.load_cover(cover_pixmap, True)
|
||||
self.parent.show()
|
||||
|
||||
|
||||
class DragDropListView(QtWidgets.QListView):
|
||||
# This is the library listview
|
||||
def __init__(self, main_window, parent):
|
||||
super(DragDropListView, self).__init__(parent)
|
||||
self.main_window = main_window
|
||||
self.setAcceptDrops(True)
|
||||
self.setDragDropMode(QtWidgets.QAbstractItemView.InternalMove)
|
||||
self.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection)
|
||||
self.setResizeMode(QtWidgets.QListView.Fixed)
|
||||
self.setLayoutMode(QtWidgets.QListView.SinglePass)
|
||||
self.setViewMode(QtWidgets.QListView.IconMode)
|
||||
self.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
|
||||
self.setProperty("showDropIndicator", False)
|
||||
self.setProperty("isWrapping", True)
|
||||
self.setFrameShape(QtWidgets.QFrame.NoFrame)
|
||||
self.setUniformItemSizes(True)
|
||||
self.setWordWrap(True)
|
||||
self.setObjectName("listView")
|
||||
|
||||
def dragEnterEvent(self, event):
|
||||
if event.mimeData().hasUrls():
|
||||
event.acceptProposedAction()
|
||||
else:
|
||||
super(DragDropListView, self).dragEnterEvent(event)
|
||||
|
||||
def dragMoveEvent(self, event):
|
||||
super(DragDropListView, self).dragMoveEvent(event)
|
||||
|
||||
def dropEvent(self, event):
|
||||
if event.mimeData().hasUrls():
|
||||
file_list = [url.path() for url in event.mimeData().urls()]
|
||||
self.main_window.process_post_hoc_files(file_list, False)
|
||||
event.acceptProposedAction()
|
||||
else:
|
||||
super(DragDropListView, self).dropEvent(event)
|
||||
|
||||
|
||||
class DragDropTableView(QtWidgets.QTableView):
|
||||
# This is the library tableview
|
||||
def __init__(self, main_window, parent):
|
||||
super(DragDropTableView, self).__init__(parent)
|
||||
self.main_window = main_window
|
||||
self.setAcceptDrops(True)
|
||||
self.setDragDropMode(QtWidgets.QAbstractItemView.InternalMove)
|
||||
self.setFrameShape(QtWidgets.QFrame.Box)
|
||||
self.setFrameShadow(QtWidgets.QFrame.Plain)
|
||||
self.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContentsOnFirstShow)
|
||||
self.setEditTriggers(
|
||||
QtWidgets.QAbstractItemView.DoubleClicked |
|
||||
QtWidgets.QAbstractItemView.EditKeyPressed |
|
||||
QtWidgets.QAbstractItemView.SelectedClicked)
|
||||
self.setAlternatingRowColors(True)
|
||||
self.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
|
||||
self.setGridStyle(QtCore.Qt.NoPen)
|
||||
self.setSortingEnabled(True)
|
||||
self.setWordWrap(False)
|
||||
self.setObjectName("tableView")
|
||||
self.horizontalHeader().setVisible(True)
|
||||
self.verticalHeader().setVisible(False)
|
||||
|
||||
def dragEnterEvent(self, event):
|
||||
if event.mimeData().hasUrls():
|
||||
event.acceptProposedAction()
|
||||
else:
|
||||
super(DragDropTableView, self).dragEnterEvent(event)
|
||||
|
||||
def dragMoveEvent(self, event):
|
||||
super(DragDropTableView, self).dragMoveEvent(event)
|
||||
|
||||
def dropEvent(self, event):
|
||||
if event.mimeData().hasUrls():
|
||||
file_list = [url.path() for url in event.mimeData().urls()]
|
||||
self.main_window.process_post_hoc_files(file_list, False)
|
||||
event.acceptProposedAction()
|
||||
else:
|
||||
super(DragDropTableView, self).dropEvent(event)
|
||||
|
Reference in New Issue
Block a user