source: sasview/src/sas/qtgui/DroppableDataLoadWidget.py @ d7ff531

ESS_GUIESS_GUI_DocsESS_GUI_batch_fittingESS_GUI_bumps_abstractionESS_GUI_iss1116ESS_GUI_iss879ESS_GUI_iss959ESS_GUI_openclESS_GUI_orderingESS_GUI_sync_sascalc
Last change on this file since d7ff531 was 31c5b58, checked in by Piotr Rozyczko <rozyczko@…>, 8 years ago

Refactored to allow running with run.py.
Minor fixes to plotting.

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