Ejemplo n.º 1
0
Archivo: CustomUI.py Proyecto: 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()
Ejemplo n.º 2
0
 def dropEvent(self, e: QDropEvent):
     if e.mimeData().hasUrls():
         e.accept()
         self.url = e.mimeData().urls()[0].toLocalFile()
         self.dropImage()
     else:
         e.ignore()
    def dropEvent(self, event: QDropEvent) -> None:
        if event.mimeData().hasUrls:
            event.setDropAction(Qt.CopyAction)
            event.accept()

            for url in event.mimeData().urls():
                item = ResourcesItem()

                extension = os.path.splitext(url.fileName())[1]
                if extension == ".png" or extension == ".jpg" or extension == ".jpeg" or extension == ".bmp":
                    item.setWhatsThis("Image")
                    item.setIcon(QIcon(url.toLocalFile()))
                    item.mySetData(QPixmap(url.toLocalFile()))
                elif extension == ".ttf":
                    item.setWhatsThis("Font")
                    item.setIcon(QIcon("Images/FontIcon.png"))
                    fontId = QFontDatabase().addApplicationFont(url.toLocalFile())
                    item.mySetData(str(fontId))
                else:
                    return

                item.setText(os.path.splitext(url.fileName())[0])
                item.mySetUrl(url.toLocalFile())
                self.addItem(item)

        else:
            event.ignore()
Ejemplo n.º 4
0
    def onDrop(self, event: QDropEvent):
        if DEBUG:
            print('CalcSubWnd : onDrop')
            print(event.mimeData().text())
        if event.mimeData().hasFormat(LISTBOX_MIMETYPE):
            eventData = event.mimeData().data(LISTBOX_MIMETYPE)
            dataStream = QDataStream(eventData, QIODevice.ReadOnly)
            pixmap = QPixmap()
            dataStream >> pixmap
            op_code = dataStream.readQString()
            text = dataStream.readQString()

            mouse_pos = event.pos()
            scene_pos = self.scene.grScene.views()[0].mapToScene(mouse_pos)

            if DEBUG: print(f'DROP: {op_code} {text} at {scene_pos}')

            try:
                node = NodeFactory.from_op_code(op_code)(self.scene)
                node.setPos(scene_pos.x(), scene_pos.y())
                self.scene.history.storeHistory('Create node {}'.format(
                    node.__class__.__name__))

                event.setDropAction(Qt.MoveAction)
                event.accept()

            except Exception as e:
                dumpException(e)
        else:
            if DEBUG:
                print(' ... drop ignored, not requested format ',
                      LISTBOX_MIMETYPE)
            event.ignore()
Ejemplo n.º 5
0
    def dropEvent(self, event: QDropEvent):
        if event.mimeData().hasUrls:
            event.setDropAction(Qt.CopyAction)
            event.accept()

            self.drop.emit(event.mimeData().urls())
        else:
            event.ignore()
Ejemplo n.º 6
0
    def drag_handler(self, event: QDropEvent, drop: bool=False):
        if event.mimeData().hasUrls():
            event.setDropAction(Qt.CopyAction)
            event.accept()

            if drop:
                self.files_dropped.emit([url.toLocalFile() for url in event.mimeData().urls()])
        else:
            event.ignore()
Ejemplo n.º 7
0
    def drag_handler(self, event: QDropEvent, drop: bool=False):
        if event.mimeData().hasUrls():
            event.setDropAction(Qt.CopyAction)
            event.accept()

            if drop:
                self.files_dropped.emit([url.toLocalFile() for url in event.mimeData().urls()])
        else:
            event.ignore()
Ejemplo 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)
Ejemplo n.º 9
0
 def dropEvent(self, a0: QtGui.QDropEvent) -> None:
     if a0.mimeData().hasUrls() and len(
             a0.mimeData().urls()) == 1 and os.path.isfile(
                 a0.mimeData().urls()[0].toLocalFile()):
         a0.setDropAction(QtCore.Qt.CopyAction)
         a0.accept()
         self.file_signal.emit(a0.mimeData().urls()[0].toLocalFile())
     else:
         a0.ignore()
Ejemplo n.º 10
0
    def dropEvent(self, event: QDropEvent) -> None:
        super().dropEvent(event)
        mime_data: QMimeData = event.mimeData()

        # Accept only one file
        if mime_data.hasUrls() and len(mime_data.urls()) == 1:
            event.accept()
            self.dropped_file.emit(event)
        else:
            event.ignore()
Ejemplo n.º 11
0
 def _dataview_dropevent(self, event: QDropEvent):
     from_obj = self.data_view.selectedIndexes()[0].data(257)
     to_obj = self.data_view.indexAt(event.pos()).data(257)
     if isinstance(to_obj, Category):
         if isinstance(from_obj, _Question):
             to_obj.add_subcat(from_obj)
         else:
             to_obj.add_question(from_obj)
     else:
         event.ignore()
     self.data_view.original_dropEvent(event)
Ejemplo n.º 12
0
    def _drop_event(self, event: QDropEvent):
        mime_data: QMimeData = event.mimeData()
        index = self.ui.dirTree.indexAt(event.pos())

        act = self._set_action(index, mime_data, event.pos())

        res = self.ui.dirTree.model().dropMimeData(mime_data, act, index)
        if res:
            event.accept()
        else:
            event.ignore()
Ejemplo n.º 13
0
    def dropEvent(self, event: QDropEvent):
        if event.mimeData().hasUrls:
            event.setDropAction(Qt.CopyAction)
            event.accept()

            if Args().test:
                dialog = ExcelLoadingWidget(files=event.mimeData().urls())
                dialog.show()

        else:
            event.ignore()
Ejemplo n.º 14
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()
Ejemplo n.º 15
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)
Ejemplo n.º 16
0
		def dropEvent(self, event: QDropEvent):
			if event.mimeData().hasFormat('application/hotspot'):
				position = event.pos()

				offset = event.mimeData().data('application/hotspot')
				x, y = offset.data().decode('utf-8').split()
				self.btn.move(position - QPoint(int(x), int(y)))

				event.setDropAction(Qt.MoveAction)
				event.accept()
			else:
				event.ignore()
Ejemplo n.º 17
0
 def __process_event(self, file: Path, event: QtGui.QDropEvent) -> None:
     logger.debug(f"Processing file drag event: {file.name}")
     if "grades" in file.name and self.objectName() == INPUT_TEAMS_FRAME:
         logger.debug("File met 'grades' criteria")
         event.accept()
     elif "Student Portal" in file.name and self.objectName(
     ) == INPUT_STUDENT_FRAME:
         logger.debug("File met 'student logins' criteria")
         event.accept()
     else:
         logger.debug("File did not meet any criteria -- rejecting")
         event.ignore()
Ejemplo n.º 18
0
 def dropEvent(self, event: QtGui.QDropEvent) -> None:
     if event.mimeData().hasUrls:
         event.setDropAction(Qt.CopyAction)
         event.accept()
         for url in event.mimeData().urls():
             # print(url.toLocalFile())
             self.dropped.emit(url.toLocalFile())
             listItem = QListWidgetItem()
             fname = os.path.basename(url.toLocalFile())
             listItem.setText(fname)
             listItem.setIcon(
                 QtGui.QIcon(
                     os.path.abspath('view/icon/document-list.png')))
             self.addItem(listItem)
     else:
         event.ignore()
Ejemplo n.º 19
0
    def dropEvent(self, event: QDropEvent) -> None:
        mime_data: QMimeData = event.mimeData()
        urls: List[QUrl] = mime_data.urls()

        if not len(urls):
            event.ignore()
            return

        paths = []
        for each in urls:
            filepath: Path = Path(each.toLocalFile())

            if not image_filepath_valid(filepath):
                continue
            paths.append(filepath)

        self._load_paths(paths)
Ejemplo n.º 20
0
    def dropEvent(self, event: QDropEvent):
        if not self.scene_definition_windows.scene_size_initialized:
            QMessageBox.warning(None, "Error",
                                "Scene size is not initialized!")
            event.ignore()
            return

        if event.mimeData().hasFormat(PhysicalObjectsModel.MIME_TYPE):
            dropped_po = pickle.loads(event.mimeData().data(
                PhysicalObjectsModel.MIME_TYPE))
            if dropped_po:
                self.dropped_physical_object = dropped_po

                self.__physical_objects_model.add_physical_object_to_scene(
                    dropped_po)
                dropped_po.scene_position = \
                    sceneutil.mouse_coordinates_to_image_coordinates(event.pos().x(),
                                                                     event.pos().y(),
                                                                     self.camera_view_size,
                                                                     self.image_frame)
                event.setDropAction(Qt.CopyAction)
                event.accept()
            else:
                event.ignore()
        else:
            event.ignore()
Ejemplo n.º 21
0
    def dropEvent(self, event: QDropEvent) -> None:
        if self.enable_custom_drag_n_drop is True:
            input_dialog_text = """
                Выберите одно из доступных действий
                + для сложения
                - для вычитания
                / для деления
                // для целочисленного деления
                * для умножения
                ** для возведения в степень
                = для замещения значения ячейки (действие по умолчанию)
                
                Для выбора действия выберите предложенное, сообщения длиной >2 символов будут отклоняться.
            """
            action, result = QInputDialog.getText(self, "Перемещение ячейки листа", input_dialog_text)
            if result is None or result is False:
                event.ignore()
                return

            while len(action) > 2:
                action, result = QInputDialog.getText(
                    self, "Перемещение ячейки листа", "Выберите одно из доступных действий", text=input_dialog_text
                )
                if result is None or result is False:
                    event.ignore()
                    return

            event_source_table: QTableWidgetExtended = event.source()
            dropping_cell = event_source_table.currentItem()
            accepting_cell_coords = self.indexAt(event.pos())
            accepting_cell = self.item(accepting_cell_coords.row(), accepting_cell_coords.column())

            self.setCurrentItem(accepting_cell)

            if "=" in action or len(action) == 0:
                accepting_cell.setText(dropping_cell.text())
            else:
                accepting_cell.setText(f"{accepting_cell.text()} {action} {dropping_cell.text()}")
    def dropEvent(self, event: QtGui.QDropEvent) -> None:
        """Handles the drop event and loads the image_name into the label.

        Parameters
        ----------
        event: QDropEvent
            The identified event
        """
        if event.mimeData().hasImage:
            event.setDropAction(Qt.CopyAction)
            self.image = event.mimeData().urls()[0].toLocalFile()
            x = self.width()
            y = self.height()
            im = QPixmap(self.image).scaled(
                x, y)  # , aspectRatioMode=Qt.KeepAspectRatio)
            im.save(os.getcwd() + "/tmp.jpg")
            self.image = (os.getcwd() + "/tmp.jpg")
            self.setPixmap(im)
            # self.setPixmap(QPixmap(self.image))
            self.setStyleSheet("")
            event.accept()
        else:
            event.ignore()
Ejemplo n.º 23
0
 def dropEvent(self, e: QDropEvent):
     if e.mimeData().hasUrls():
         e.accept()
     else:
         e.ignore()
Ejemplo n.º 24
0
Archivo: CustomUI.py Proyecto: ag-sd/py
 def dragMoveEvent(self, event: QDropEvent):
     if event.mimeData().hasUrls():
         event.acceptProposedAction()
     else:
         event.ignore()
Ejemplo n.º 25
0
    def dropEvent(self, a0: QDropEvent) -> None:
        data = a0.mimeData()
        action = a0.dropAction()
        if action == Qt.IgnoreAction:
            a0.ignore()
            return
        if not data.hasFormat('text/uri-list'):
            a0.ignore()
            return
        a0.accept()
        self.setCursor(Qt.WaitCursor)
        self.model.clear()
        QCoreApplication.processEvents()

        ul = data.data('text/uri-list').data().decode().splitlines()
        ul = map(str.strip, ul)
        ul = filter(lambda _uri: not _uri.startswith('#'), ul)
        ul = [
            'file:/' +
            _uri[len('file:///'):] if _uri.startswith('file:///') else _uri
            for _uri in ul
        ]
        ul = list(ul)

        file_binds = []
        dir_binds = []

        # Ingest file and dirs from received uri-list
        for uri in ul:
            if uri.startswith('file:'):
                pathname = url2pathname(uri[len('file:'):])
                if os.path.isdir(pathname):
                    self._logger.info(f'RECURSIVELY ADDING {pathname}')
                    out = self._py_db.ingest_file_directory(pathname)
                    dir_binds.append(f'{uri}%')
                    self._logger.debug(
                        f'ingest_file_directory({pathname}) -> {out}')
                    continue

            self._logger.info(f'ADDING {uri}')
            media_id, flags, ex = self._py_db.try_ingest_url(uri)
            if ex is not None:
                self._logger.exception(f'FAILING {uri}: {ex}')
            else:
                file_binds.append(uri)
                self._logger.debug(f'{media_id=} {flags=} {ex=}')

        self._py_db.notify_bg_manifold_build()
        self._py_db.thumbs_load()

        # Build WHERE expression with file and dir binds
        conditions = []
        file_placeholders = ', '.join('?' * len(file_binds))
        if file_placeholders:
            file_placeholders = f'url IN ({file_placeholders})'
            conditions.append(file_placeholders)
        conditions.extend(['url LIKE ?'] * len(dir_binds))

        # Prepare query and bind values for file and dirs
        query = QSqlQuery()
        query.prepare(
            f'SELECT media_id FROM MediaLocations WHERE {" OR ".join(conditions)} ORDER BY url'
        )
        i = -1
        for i, bind in enumerate(file_binds):
            query.bindValue(i, bind)
        for j, bind in zip(range(i + 1, i + 1 + len(dir_binds)), dir_binds):
            query.bindValue(j, bind)
        query.exec()

        if not query.isActive():
            self._logger.debug(f'results query: {query.lastQuery():s}')
            self._logger.error(
                f'results query error: {query.lastError().text():s}')

        self.model.setQuery(query)
        self.setCursor(Qt.ArrowCursor)