Ejemplo n.º 1
0
Archivo: item.py Proyecto: dlaidig/PaPI
 def dropEvent(self, event: QDropEvent):
     source = event.source()
     if isinstance(source, QTreeView):
         if isinstance(source.model(), PaPITreeProxyModel):
             for index in source.selectedIndexes():
                 plugin_info = source.model().data(index, Qt.UserRole)
                 self.clickedFavouritePlugin.emit(plugin_info)
Ejemplo n.º 2
0
    def dropEvent(self, event: QtGui.QDropEvent):
        if not event.isAccepted() and event.source() == self:
            drop_row = self.drop_on(event)

            rows = sorted(set(item.row() for item in self.selectedItems()))
            rows_to_move: List[zlm_core.ZlmLayer] = [
                self.item(row_index, 0).layer_inst for row_index in rows
            ]

            for row_index in reversed(rows):
                self.removeRow(row_index)
                if row_index < drop_row:
                    drop_row -= 1

            for row_index, layer in enumerate(rows_to_move):
                row_index += drop_row
                self.insertRow(row_index)
                item = QtWidgets.QTableWidgetItem(layer.name)
                item.layer_inst = layer
                self.setItem(row_index, 0, item)

            event.accept()
            # for row_index in range(len(rows_to_move)):
            #     self.item(drop_row + row_index, 0).setSelected(True)
        super().dropEvent(event)
    def dropEvent(self, event: QDropEvent) -> None:
        event.accept()

        if isinstance(event.source(), QListWidget):
            item = event.source().currentItem()

            if isinstance(item, ToolBoxItem):
                obj = item.getNewCustomClass()
                self.scene().addItem(obj)

                objRect = obj.boundingRect().center()

                position = QPoint(event.pos().x() - objRect.x(), event.pos().y() - objRect.y())
                obj.setPos(self.mapToScene(position))
            elif isinstance(item, ResourcesItem):
                self.itemAt(event.pos()).recieveDrop(item)
Ejemplo n.º 4
0
Archivo: item.py Proyecto: dani-l/PaPI
 def dropEvent(self, event: QDropEvent):
     source = event.source()
     if isinstance(source, QTreeView):
         if isinstance(source.model(), PaPITreeProxyModel):
             for index in source.selectedIndexes():
                 plugin_info = source.model().data(index, Qt.UserRole)
                 self.clickedFavouritePlugin.emit(plugin_info)
Ejemplo 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()
Ejemplo n.º 6
0
    def dropEvent(self, event: QtGui.QDropEvent):
        source = event.source()  # type: QtWidgets.QAbstractItemView
        if source is self:  # internal move operation
            super(DFListView, self).dropEvent(event)
            pos = event.pos()
            dropIndex = source.indexAt(pos)
            source.model().internalMove(
                dropIndex,
                source.selectionModel().selectedRows(0))
        else:
            if isinstance(source, QtWidgets.QTreeView):
                invalid_drops = []
                valid_drops = []
                for index in source.selectionModel().selectedRows(
                        column=0):  # type: QtCore.QModelIndex
                    pointer = index.internalPointer()  # type: DFReference
                    if self.isSupported(pointer):
                        valid_drops.append(pointer)
                    elif isinstance(pointer, DFReference):
                        invalid_drops.append(pointer.df.__class__.__name__)
                    else:
                        continue

                if valid_drops:
                    self.addDataFrames(*valid_drops)

                if invalid_drops:
                    fn.error_popup(
                        "Invalid StructuredDataFrame types: \n\t" +
                        "\n\t".join(invalid_drops) +
                        "\n\nOnly DataFrames of the following types are allowed:\n\t"
                        + "\n\t".join(cls.__name__
                                      for cls in self.supportedClasses))
Ejemplo n.º 7
0
    def dropEvent(self, event: QtGui.QDropEvent) -> None:
        """We got a Drop! Add them to the selection if possible.

		Files contain their dlkey instead of an id.
		Well check the events.source widget for more informations about the files,
		and add them only if we succed.
		"""
        mime = event.mimeData()
        if not mime.hasUrls():
            return
        for url in mime.urls():
            res = itemFromUrl(url)
            if not res:
                continue
            modul, dlkey, name = res
            if dlkey and modul != self.modul:
                continue
            srcWidget = event.source()
            if not srcWidget:  # Not dragged from this application
                continue
            items = srcWidget.selectedItems()
            for item in items:
                if "dlkey" in item.entryData and dlkey == item.entryData[
                        "dlkey"]:
                    self.extend([item.entryData])
                    break
Ejemplo n.º 8
0
    def dropEvent(self, event: QDropEvent):
        if not event.isAccepted() and event.source() == self:
            drop_row = self.drop_on(event)

            rows = sorted(set(item.row() for item in self.selectedItems()))
            rows_to_move = [[
                QTableWidgetItem(self.item(row_index, column_index))
                for column_index in range(self.columnCount())
            ] for row_index in rows]
            for row_index in reversed(rows):
                self.removeRow(row_index)
                if row_index < drop_row:
                    drop_row -= 1

            for row_index, data in enumerate(rows_to_move):
                row_index += drop_row
                self.insertRow(row_index)
                for column_index, column_data in enumerate(data):
                    self.setItem(row_index, column_index, column_data)
            event.accept()
            for row_index in range(len(rows_to_move)):
                for col_index in range(self.columnCount()):
                    self.item(drop_row + row_index,
                              col_index).setSelected(True)
        super().dropEvent(event)
Ejemplo n.º 9
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())))
Ejemplo n.º 10
0
    def dropEvent(self, a0: QDropEvent) -> None:
        if a0.source() == self or self.indexTabToDrag < 0 or not isinstance(
                a0.source(), TabBar):
            a0.accept()
            return

        a0.setDropAction(Qt.MoveAction)
        a0.accept()

        insertAfter = self.tabAt(a0.pos())
        try:
            tab = a0.source().parentWidget().widget(self.indexTabToDrag)
            packItem = QModelIndex(tab.packItem)
            index = self.parentWidget().openItemInNewTab(packItem)
            a0.source().tabCloseRequested.emit(self.indexTabToDrag)
        except AttributeError as e:
            print("Error occured while drop Event:", e)
        else:
            if insertAfter and insertAfter >= 0:
                self.moveTab(index, insertAfter + 1)
        TabBar.indexTabToDrag = -1
Ejemplo n.º 11
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()}")
Ejemplo n.º 12
0
    def dropEvent(self, event: QDropEvent):
        # If drag and drop from self to self.
        if not event.isAccepted() and event.source() == self:
            # grab the row number of dragged row and its data
            row = self.selectedIndexes()[0].row()
            idx = self.cmodel.index(row, 2).data()
            # Get the row on which to drop
            dropRow = self.drop_on(event)
            dropIdx = self.cmodel.index(dropRow, 2).data()
            # If we drag from earlier row, handle index after deletion
            if row < dropRow:
                dropRow -= 1
            com = self.clist.pop(row)
            self.clist.insert(dropRow, com)
            self.populateTable()

            # Reselect the dropped row (TODO: does this work?)
            self.selectRow(dropRow)

            # Resize the rows - they were expanding after drags for some reason
            # TODO: remove?
            self.resizeRowsToContents()
        else:
            super().dropEvent(event)
Ejemplo n.º 13
0
Archivo: main.py Proyecto: dani-l/PaPI
 def dropEvent(self, event:QDropEvent):
     source = event.source()
Ejemplo n.º 14
0
 def dropEvent(self, event: QDropEvent):
     source = event.source()