source: sasview/src/sas/qtgui/MainWindow/DroppableDataLoadWidget.py @ f159d1b

Last change on this file since f159d1b was cd2cc745, checked in by Piotr Rozyczko <rozyczko@…>, 8 years ago

Workaround for the resource file requirement in each UI directory

  • Property mode set to 100644
File size: 2.0 KB
RevLine 
[f82ab8c]1# global
[f51ed67]2from PyQt4 import QtGui, QtCore
[f82ab8c]3
4# UI
[cd2cc745]5from sas.qtgui.UI import main_resources_rc
[83eb5208]6from sas.qtgui.MainWindow.UI.DataExplorerUI import Ui_DataLoadWidget
[f82ab8c]7
[f51ed67]8class DroppableDataLoadWidget(QtGui.QTabWidget, Ui_DataLoadWidget):
[f82ab8c]9    """
10    Overwrite drag and drop methods in the base class
11    so users can drop files directly onto the Data Explorer
12    """
13    def __init__(self, parent=None, guimanager=None):
14        super(DroppableDataLoadWidget, self).__init__(parent)
[f51ed67]15        self.setupUi(self)
[f82ab8c]16
17        # Enable file drag-drop on treeView
18        self.setAcceptDrops(True)
19        self.communicator = guimanager.communicator()
[e540cd2]20        flags = QtCore.Qt.CustomizeWindowHint | QtCore.Qt.WindowTitleHint | QtCore.Qt.WindowSystemMenuHint
21        self.setWindowFlags(flags)
[f82ab8c]22
23    def dragIsOK(self, event):
24        """
25        Return True if the event contain URLs
26        """
27        # Analyze mime data
[e540cd2]28        return bool(event.mimeData().hasUrls() and self.currentIndex() == 0)
[f82ab8c]29
30    def dragEnterEvent(self, event):
31        """
32        Called automatically on a drag into the treeview
33        """
34        if self.dragIsOK(event):
35            event.setDropAction(QtCore.Qt.CopyAction)
36            event.accept()
37        else:
38            event.ignore()
39
40    def dragMoveEvent(self, event):
41        """
42        Called automatically when a drag is
43        moved inside the treeview
44        """
45        if self.dragIsOK(event):
46            event.accept()
47        else:
48            event.ignore()
49
50    def dropEvent(self, event):
51        """
52        Called automatically when a drop
53        is added to the treeview.
54        """
55        if self.dragIsOK(event):
56            filenames=[]
57            for url in event.mimeData().urls():
58                filenames.append(str(url.toLocalFile()))
59            self.communicator.fileReadSignal.emit(filenames)
60            event.accept()
61        else:
62            event.ignore()
63
[e540cd2]64    def closeEvent(self, event):
65        """
66        Overwrite the close event - no close!
67        """
68        event.ignore()
Note: See TracBrowser for help on using the repository browser.