Esempio n. 1
0
    def dropEvent(self, event: QtGui.QDropEvent):
        if event.mimeData().hasText():
            mime = event.mimeData()
            transectData = json.loads(mime.text())

            transect = Transect(transectData["name"],
                                transectData["numPhotos"])
            if self.contains(transect):
                QtWidgets.QMessageBox.warning(
                    self,
                    "ImageWAO",
                    f"Cannot move transect to this person because they already own the transect. {transect}",
                    QtWidgets.QMessageBox.Ok,
                )
                event.ignore()
            else:
                dragTransect = self.addTransect(transect)
                dragTransect.setBackgroundColor(
                    QtGui.QColor(transectData["color"]))
                self._sortTransects()

                if event.source() in self.children():
                    event.setDropAction(QtCore.Qt.MoveAction)
                else:
                    event.setDropAction(QtCore.Qt.MoveAction)

                event.accept()
                self.contentsChanged.emit()
        else:
            event.ignore()
Esempio n. 2
0
def handle_drop_event(e: QDropEvent, callback):
    for url in e.mimeData().urls():
        if url.isLocalFile():
            callback(url.toLocalFile())
            e.accept()
            return

    e.ignore()
Esempio n. 3
0
    def dropEvent(self, event: QDropEvent):
        if event.mimeData().hasUrls():
            files = self._get_drop_event_files(event.mimeData())
            if files:
                for file in files:
                    self.main_menu.file_menu.guess_open_file(file)
                event.accept()
                return True

        event.ignore()
        return False
Esempio n. 4
0
    def drop_event(self, e: QDropEvent):
        mime: QMimeData = e.mimeData()
        src = e.source()

        # -- File drop --
        if mime.hasUrls():
            destination_index = self.view.indexAt(e.pos())
            for url in mime.urls():
                local_path = Path(url.toLocalFile())
                if not path_exists(local_path):
                    continue

                self.file_drop(local_path, destination_index)

            e.accept()
            return

        # --- Internal View Drops ---
        if not isinstance(src, self.view.__class__):
            e.ignore()
            return

        e.setDropAction(Qt.MoveAction)

        if src is not self.view:
            e.setDropAction(Qt.CopyAction)

        if e.keyboardModifiers() == Qt.ShiftModifier:
            e.setDropAction(Qt.CopyAction)

        # -- Copy drop --
        if e.dropAction() is Qt.CopyAction:
            destination_index = self.view.indexAt(e.pos())
            self.copy_drop(src, destination_index)
            e.accept()

        # -- Drag move --
        if e.dropAction() is Qt.MoveAction:
            destination_index = self.view.indexAt(e.pos())
            self.move_drop(destination_index)

            # Ignore default view behaviour
            e.ignore()
Esempio n. 5
0
    def dropEvent(self, event: QtGui.QDropEvent) -> None:
        if event.mimeData().hasUrls():
            for url in event.mimeData().urls():
                self.loadFile(url.toLocalFile())
                break
            event.acceptProposedAction()
        elif event.mimeData().hasText():
            text = event.mimeData().text()
            data = np.genfromtxt(text.split("\n"), usecols=0, dtype=np.float64)
            data = data[~np.isnan(data)]
            if data.size == 0:
                event.ignore()
                return

            self.loadData(data)
            event.acceptProposedAction()
        elif event.mimeData().hasHtml():
            pass
        else:
            super().dropEvent(event)
Esempio n. 6
0
 def dropEvent(self, event: QDropEvent):
     if not self.terrain_mode and event.mimeData().hasFormat(
             "application/fe14-spawn"):
         event.acceptProposedAction()
     else:
         event.ignore()