2
2
import shutil
3
3
import typing
4
4
5
- from PySide6 .QtCore import QThreadPool
6
- from PySide6 .QtGui import QDropEvent , QDragEnterEvent , QDragMoveEvent
5
+ from PySide6 .QtCore import QThreadPool , Qt , QMimeData , QUrl
6
+ from PySide6 .QtGui import QDropEvent , QDragEnterEvent ,QImage , QDragMoveEvent , QMouseEvent , QDrag , QDragLeaveEvent
7
7
from PySide6 .QtWidgets import QMessageBox
8
8
from src .qt .widgets import ProgressWidget
9
9
from src .qt .helpers import FunctionIterator , CustomRunnable
10
10
11
+ from ctypes import wintypes ,windll
11
12
12
13
if typing .TYPE_CHECKING :
13
14
from src .qt .ts_qt import QtDriver
14
15
16
+ import logging
15
17
16
18
class DropImport :
17
19
def __init__ (self , driver : "QtDriver" ):
18
20
self .driver = driver
19
-
21
+
22
+ def mouseMoveEvent (self ,event :QMouseEvent ):
23
+ if event .buttons () is not Qt .MouseButton .LeftButton : return
24
+ if len (self .driver .selected ) == 0 : return
25
+
26
+ drag = QDrag (self .driver )
27
+ paths = []
28
+ mimedata = QMimeData ()
29
+ for selected in self .driver .selected :
30
+ entry = self .driver .lib .get_entry (selected [1 ])
31
+ url = QUrl .fromLocalFile (self .driver .lib .library_dir + "/" + entry .path + "/" + entry .filename )
32
+ paths .append (url )
33
+
34
+ mimedata .setUrls (paths )
35
+ drag .setMimeData (mimedata )
36
+ drag .exec (Qt .DropAction .CopyAction )
37
+
20
38
def dropEvent (self , event : QDropEvent ):
39
+ if event .source () is self .driver : # change that if you want to drop something originating from tagstudio, for moving or so
40
+ return
41
+
21
42
if not event .mimeData ().hasUrls ():
22
43
return
23
44
24
45
self .urls = event .mimeData ().urls ()
25
46
self .import_files ()
26
47
48
+ def dragLeaveEvent (self ,event :QDragLeaveEvent ):
49
+ if event .mimeData ().hasUrls ():
50
+ event .accept ()
51
+ else :
52
+ event .ignore ()
53
+
27
54
def dragEnterEvent (self , event : QDragEnterEvent ):
28
55
if event .mimeData ().hasUrls ():
29
56
event .accept ()
@@ -34,6 +61,7 @@ def dragMoveEvent(self, event: QDragMoveEvent):
34
61
if event .mimeData ().hasUrls ():
35
62
event .accept ()
36
63
else :
64
+ logging .info (self .driver .selected )
37
65
event .ignore ()
38
66
39
67
def import_files (self ):
@@ -216,3 +244,5 @@ def get_renamed_duplicate_filename_in_lib(self, filePath: Path) -> str:
216
244
)
217
245
index += 1
218
246
return filePath .name
247
+
248
+
0 commit comments