impr: FileSelector drop support

This commit is contained in:
2023-09-26 01:13:55 +08:00
parent 45505c62d0
commit d701055c74

View File

@ -1,4 +1,5 @@
from PySide6.QtCore import QDir, QFileInfo, Qt, Signal, Slot from PySide6.QtCore import QDir, QFileInfo, Qt, Signal, Slot
from PySide6.QtGui import QDragEnterEvent, QDragLeaveEvent, QDropEvent
from PySide6.QtWidgets import QFileDialog, QWidget from PySide6.QtWidgets import QFileDialog, QWidget
from ui.designer.components.fileSelector_ui import Ui_FileSelector from ui.designer.components.fileSelector_ui import Ui_FileSelector
@ -28,6 +29,26 @@ class FileSelector(Ui_FileSelector, QWidget):
self.settingsKey = None self.settingsKey = None
self.setAcceptDrops(True)
def dragEnterEvent(self, event: QDragEnterEvent):
if event.mimeData().hasUrls() and event.mimeData().urls()[0].isLocalFile():
event.accept()
self.elidedLabel.setText(
f'Drop "{QFileInfo(event.mimeData().urls()[0].toLocalFile()).fileName()}"?'
)
return
return super().dragEnterEvent(event)
def dragLeaveEvent(self, event: QDragLeaveEvent):
self.updateLabel()
return super().dragLeaveEvent(event)
def dropEvent(self, event: QDropEvent):
url = event.mimeData().urls()[0]
file = url.toLocalFile()
self.selectFile(file)
def getOpenFileNames(self): def getOpenFileNames(self):
selectedFiles, filter = QFileDialog.getOpenFileNames( selectedFiles, filter = QFileDialog.getOpenFileNames(
self, self,