@@ -36,6 +36,7 @@ def __init__(self):
36
36
37
37
self .setMouseTracking (False )
38
38
self .setViewport (QOpenGLWidget ())
39
+ self .setAcceptDrops (True )
39
40
40
41
self .undoAction = QAction (self , self .tr ("Undo" ))
41
42
self .undoAction .setShortcut (QKeySequence (QKeySequence .Undo ))
@@ -45,6 +46,7 @@ def __init__(self):
45
46
46
47
self .scene = QGraphicsScene (self )
47
48
self .image = QGraphicsPixmapItem ()
49
+ self .image .setAcceptDrops (True )
48
50
self .scene .addItem (self .image )
49
51
self .setScene (self .scene )
50
52
self .setTransformationAnchor (QGraphicsView .AnchorViewCenter )
@@ -72,6 +74,7 @@ def setImage(self, path):
72
74
'''
73
75
Open an image from a file.
74
76
'''
77
+ self .clear ()
75
78
self .pixmap = QPixmap (path )
76
79
self .image .setPixmap (self .pixmap )
77
80
@@ -156,3 +159,16 @@ def undo(self):
156
159
if self .painterStack :
157
160
self .pixmap = self .painterStack .pop ()
158
161
self .image .setPixmap (self .pixmap )
162
+
163
+ def clear (self ):
164
+ self .pixmap = None
165
+ self .image .setPixmap (self .pixmap )
166
+ self .painterStack .clear ()
167
+
168
+ def dropEvent (self , event ):
169
+ mimeData = event .mimeData ()
170
+ if mimeData .hasUrls ():
171
+ self .setImage (mimeData .urls ()[0 ].toLocalFile ())
172
+
173
+ def dragEnterEvent (self , event ):
174
+ event .acceptProposedAction ()
0 commit comments