Implement file drag drop

This commit is contained in:
BasioMeusPuga
2018-05-13 18:16:17 -04:00
parent ffaace2eaa
commit ffcf07414f
4 changed files with 180 additions and 194 deletions

View File

@@ -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)