def dropEvent(self, e: QDropEvent):
        """Handle Drag and Drop events. The :py:class:`QDropEvent`
        performs the actual drop operation.

        We support the following operations: if an Image is dropped,
        we will use it as input image for the :py:class:`Toolbox`.
        """
        mimeData = e.mimeData()
        if mimeData.hasUrls() and self._toolbox:
            # 1. We just consider the first URL, even if multiple URLs
            #    are provided.
            url = mimeData.urls()[0]
            LOG.info("Drag and dropped %d URLs, took first: %s",
                     len(mimeData.urls()), url)

            # 2. Convert the URL to a local filename
            filename = url.toLocalFile()
            description = f"Dropped in image ({filename})"
            LOG.info("Converted URL to local filename: '%s'", filename)

            # 3. Set this file as input image for the toolbox.
            self._toolbox.set_input_from_file(filename,
                                              description=description)

            # 4. Mark the Drop action as accepted (we actually perform
            #    a CopyAction, no matter what was proposed)
            if e.proposedAction() == Qt.CopyAction:
                e.acceptProposedAction()
            else:
                # If you set a drop action that is not one of the
                # possible actions, the drag and drop operation will
                # default to a copy operation.
                e.setDropAction(Qt.CopyAction)
                e.accept()
Esempio n. 2
0
 def dropEvent(self, event: QDropEvent) -> None:
     mimeData = event.mimeData()
     if self.isMimeAccepted(mimeData):
         self.setDataFromMime(mimeData)
         event.acceptProposedAction()
     else:
         super().dropEvent(event)
Esempio n. 3
0
    def table_drop_event(self, event: QDropEvent):
        """Processes the mimedata dropped on the tableview.

            Information
            -----------
            If the mimedata is not a list of urls, rejects.\n
            Determines whether the url is a file or folder,
                and then adds to the table.

            Parameters
            ----------
            event : QDropEvent -
                event called when data is dropped.
            """
        files = []
        folders = []
        for url in event.mimeData().urls():
            if url.toLocalFile().endswith(".mp3"):
                event.acceptProposedAction()
                files.append(url.toLocalFile())
            elif os.path.isdir(url.toLocalFile()):
                event.acceptProposedAction()
                folders.append(url.toLocalFile())
        if files:
            self.add_files(files)
        if folders:
            self.add_folders(folders)
Esempio n. 4
0
    def test_signal_view(self):
        self.add_signal_to_form("esaver.complex16s")
        signal = self.form.signal_tab_controller.signal_frames[0].signal

        tree_view = self.dialog.ui.treeViewSignals
        tree_model = tree_view.model()
        item = tree_model.rootItem.children[0].children[0]
        index = tree_model.createIndex(0, 0, item)
        rect = tree_view.visualRect(index)
        QTest.mousePress(tree_view.viewport(), Qt.LeftButton, pos=rect.center())
        mime_data = tree_model.mimeData([index])
        drag_drop = QDropEvent(rect.center(), Qt.CopyAction | Qt.MoveAction, mime_data, Qt.LeftButton, Qt.NoModifier)
        drag_drop.acceptProposedAction()
        self.dialog.ui.gVOriginalSignal.dropEvent(drag_drop)
        self.assertEqual(self.dialog.ui.gVOriginalSignal.sceneRect().width(), signal.num_samples)

        self.dialog.ui.cbShowDataBitsOnly.click()
        self.dialog.ui.chkBoxLockSIV.click()

        self.assertEqual(int(self.dialog.ui.gVOriginalSignal.view_rect().width()),
                         int(self.dialog.ui.gVModulated.view_rect().width()))

        freq = self.dialog.ui.doubleSpinBoxCarrierFreq.value()
        self.dialog.ui.btnAutoDetect.click()
        self.assertNotEqual(freq, self.dialog.ui.doubleSpinBoxCarrierFreq.value())

        self.dialog.ui.comboBoxModulationType.setCurrentText("Frequency Shift Keying (FSK)")
        self.dialog.ui.btnAutoDetect.click()

        self.assertEqual(self.dialog.ui.lCurrentSearchResult.text(), "1")
        self.dialog.ui.btnSearchNext.click()
        self.assertEqual(self.dialog.ui.lCurrentSearchResult.text(), "2")
        self.dialog.ui.btnSearchPrev.click()
        self.assertEqual(self.dialog.ui.lCurrentSearchResult.text(), "1")
Esempio n. 5
0
    def dropEvent(self, event: QDropEvent):
        if event.source() is not None:
            return  # drag starts within the application
        mimeData = event.mimeData()

        if mimeData.hasUrls():
            raw = mimeData.data("text/uri-list")
            if type(raw) == QByteArray:
                # Compat. Workaround #113
                # As of Qt 5.3.1, QMimeData.urls() cannot read QByteArray
                # Firefox passes ASCII encoded escaped bytes
                # Chrome passes UTF-16 encoded bytes.
                raw = bytes(raw)
                try:
                    url = raw.decode("ASCII")
                except UnicodeDecodeError:
                    url = raw.decode("UTF-16LE")
                urls = [url]
            else:
                urls = list(map(lambda qurl: qurl.url(), mimeData.urls()))
            app.taskCreationAgent.createTasksAction(urls)
        elif mimeData.hasText():
            app.taskCreationAgent.createTasksFromMimeData(mimeData)
        else:
            pass
        event.acceptProposedAction()
Esempio n. 6
0
 def dropEvent(self, event: QtGui.QDropEvent):
     pos: QtCore.QPoint = event.pos()
     drop_label = QtWidgets.QLabel(parent=self)
     drop_label.setText("hey")
     drop_label.setGeometry(pos.x(), pos.y(), 50, 20)
     drop_label.show()
     event.acceptProposedAction()
Esempio n. 7
0
File: CustomUI.py Progetto: ag-sd/py
 def dragEnterEvent(self, event: QDropEvent):
     if event.mimeData().hasUrls():
         event.acceptProposedAction()
         self.setFrameStyle(QFrame.StyledPanel | QFrame.Sunken)
         self.setBackgroundRole(QPalette.Light)
     else:
         event.ignore()
Esempio n. 8
0
 def dropEvent(self, e: QDropEvent):
     if e.dropAction() != Qt.CopyAction:
         e.ignore()
     e.acceptProposedAction()
     self.stopAnimation()
     files = [url.toLocalFile() for url in e.mimeData().urls()]
     self._dragInProgress = False
     self.update()
     self.filesDropped.emit(files)
Esempio n. 9
0
 def add_all_signals_to_simulator(self):
     assert isinstance(self.form, MainController)
     sim_frame = self.form.simulator_tab_controller
     sim_frame.ui.treeProtocols.selectAll()
     self.assertGreater(len(sim_frame.ui.treeProtocols.selectedIndexes()), 0)
     mimedata = sim_frame.tree_model.mimeData(sim_frame.ui.treeProtocols.selectedIndexes())
     drop_event = QDropEvent(sim_frame.ui.gvSimulator.rect().center(), Qt.CopyAction | Qt.MoveAction,
                             mimedata, Qt.LeftButton, Qt.NoModifier)
     drop_event.acceptProposedAction()
     sim_frame.ui.gvSimulator.dropEvent(drop_event)
Esempio n. 10
0
 def add_all_signals_to_simulator(self):
     assert isinstance(self.form, MainController)
     sim_frame = self.form.simulator_tab_controller
     sim_frame.ui.treeProtocols.selectAll()
     self.assertGreater(len(sim_frame.ui.treeProtocols.selectedIndexes()), 0)
     mimedata = sim_frame.tree_model.mimeData(sim_frame.ui.treeProtocols.selectedIndexes())
     drop_event = QDropEvent(sim_frame.ui.gvSimulator.rect().center(), Qt.CopyAction | Qt.MoveAction,
                             mimedata, Qt.LeftButton, Qt.NoModifier)
     drop_event.acceptProposedAction()
     sim_frame.ui.gvSimulator.dropEvent(drop_event)
Esempio n. 11
0
    def dropEvent(self, event: QDropEvent):
        if event.mimeData().hasFormat('application/x-simitemdata'):
            item_data = event.mimeData().data('application/x-simitemdata')
            data_stream = QDataStream(item_data, QIODevice.ReadOnly)
            s = data_stream.readQString()

            self.env.add_element_by_name(s, event.pos().x(), event.pos().y())
            self.update()

            event.acceptProposedAction()
        else:
            event.ignore()
Esempio n. 12
0
 def dropEvent(self, event: QDropEvent):
     if event.mimeData().hasText():
         if self.startRow != self.targetRow - 1 and self.startRow != self.targetRow:
             print('move ', self.startRow, ' to ', self.targetRow)
             if self.targetRow > self.startRow:
                 self.model.moveProcess(self.startRow, self.targetRow - 1)
             else:
                 self.model.moveProcess(self.startRow, self.targetRow)
         event.acceptProposedAction()
         return
     event.ignore()
     QTableView.dropEvent(self, event)
Esempio n. 13
0
    def dropEvent(self, event: QtGui.QDropEvent) -> None:
        event.acceptProposedAction()
        target_row = self.rowAt(event.pos().y())
        if target_row < 0:
            target_row = self.model().rowCount() - 1
        if self.dragging_index != target_row:
            self.model().moveRow(
                QModelIndex(),
                self.dragging_index,
                QModelIndex(),
                target_row
                if target_row < self.dragging_index else target_row + 1,
            )

        self.dragging_index = None
Esempio n. 14
0
 def dropEvent(self, event: QDropEvent):
     data: str = event.mimeData().text()
     if data.isdigit():
         container_id = int(event.mimeData().text())
         drop_container = containers_service.getContainer(container_id)
         drop_container.group = self.group
         drop_container.save()
         self.move_app.emit(drop_container, self.ui)
     else:
         group_id = int(data.split('Group:')[1])
         drop_group = group_service.getGroup(group_id)
         drop_group.order = group_service.getNextOrder(self.group)
         drop_group.save()
         self.move_group.emit(drop_group, self.ui)
     event.acceptProposedAction()
     self.cleanDraggingEffects()
Esempio n. 15
0
 def dropEvent(self, event: QtGui.QDropEvent) -> None:
     if event.mimeData().hasUrls():
         url_list = event.mimeData().urls()
         real_list = list()
         self.ui.textEdit.clear()
         for url in url_list:
             file_info = QFileInfo(url.toLocalFile())
             full_path = file_info.filePath()
             if os.path.isfile(full_path):
                 real_list.append(full_path)
             if os.path.isdir(full_path):
                 real_list.extend(self.__get_files(full_path))
         for url in real_list:
             with open(url, 'rb') as fp:
                 file_bytes = fp.read()
             self.run_ocr_async(file_bytes)
         event.acceptProposedAction()
Esempio n. 16
0
def test_file_dd_filter_drop_event(qtbot):
    widget = QLineEdit()
    qtbot.addWidget(widget)

    mime = QMimeData()
    mime.setUrls([
        QUrl("file:///path/to/file"),
    ])
    action = Qt.CopyAction | Qt.MoveAction
    point = widget.rect().center()

    event = QDropEvent(point, action, mime, Qt.LeftButton, Qt.NoModifier)
    event.acceptProposedAction()

    event_filter = events.FileDragAndDropFilter()
    assert event_filter.eventFilter(widget, event)

    assert widget.text() == "/path/to/file"
Esempio n. 17
0
 def dropEvent(self, event: QDropEvent):
     if event.mimeData().hasText():
         data: str = event.mimeData().text()
         if not data.isdigit() or int(data) == self.container.id:
             return
     else:
         return
     container_id = int(event.mimeData().text())
     drop_container = containers_service.getContainer(container_id)
     loc = self.getDraggedLocation(event.pos())
     drop_container.order = containers_service.getNextOrder(self.container)
     drop_container.group = self.container.group
     drop_container.save()
     if loc == -1:
         self.move_app.emit(drop_container, self.ui)
     else:
         self.new_group.emit(drop_container, self.ui)
     event.acceptProposedAction()
     self.cleanDraggingEffects()
Esempio n. 18
0
 def dropEvent(self, drop_event: QtGui.QDropEvent):
     drop_event.acceptProposedAction()
     if drop_event.source() == self:
         if self._floating:
             self._undo_stack.push(
                 self._scene.get_intra_move(
                     self._floating,
                     self.mapToScene(drop_event.pos()),
                 ))
             self._floating[:] = []
     elif (isinstance(drop_event.source(), self.__class__)
           and drop_event.source().successful_drop(
               drop_event,
               self,
           )):
         self._undo_stack.push(
             drop_event.source().cube_scene.get_inter_move(
                 drop_event.source().floating, self._scene,
                 self.mapToScene(drop_event.pos())))
Esempio n. 19
0
    def dropEvent(self, event: QDropEvent):
        mime_data = event.mimeData()
        if mime_data.hasUrls():
            urls = []
            for url in mime_data.urls():
                file_path = Path(url.toLocalFile())
                if not file_path.is_file():
                    continue
                try:
                    relative_path = file_path.relative_to(os.getcwd())
                    urls.append(str(relative_path))
                except ValueError:
                    QMessageBox.information(
                        self, "Out of scope",
                        "Can not add file which is outside of bijibiji's "
                        "home.\n", QMessageBox.Close)
                    break
            if urls:
                self.changed.emit(urls)
        else:
            self.setText("<Not File>\n" "<drop file(s) here>")

        self.setBackgroundRole(QPalette.Dark)
        event.acceptProposedAction()
Esempio n. 20
0
 def dragEnterEvent(self, event: QDropEvent):
     self.setBackgroundRole(QPalette.Highlight)
     event.acceptProposedAction()
     self.setText("<drop here>")
Esempio n. 21
0
 def dragMoveEvent(self, event: QDropEvent):
     event.acceptProposedAction()
Esempio n. 22
0
File: CustomUI.py Progetto: ag-sd/py
 def dragMoveEvent(self, event: QDropEvent):
     if event.mimeData().hasUrls():
         event.acceptProposedAction()
     else:
         event.ignore()