コード例 #1
0
ファイル: main.py プロジェクト: zhouhktk/easytextedit
    def __init__(self):
        super(Editor, self).__init__()
        self.setupUi(self)
        # 将textEdit设置为窗口的中心部件
        self.setCentralWidget(self.textEdit)

        # 定义判断文本是否已经保存,是否是第一次保存的变量以及文件保存路径
        self.is_saved = True
        self.is_first_saved = True
        self.filepath = ""
        # 剪贴板以及QMimeData类
        self.mime_data = QMimeData()
        self.clipboard = QApplication.clipboard()
        assert isinstance(self.clipboard, QClipboard)
        # 程序打开时状态栏要显示的状态
        self.statusbar.showMessage("Ready to Compose")

        self.filenew.triggered.connect(self.newfile)
        self.fileopen.triggered.connect(self.openfile)
        self.filesave.triggered.connect(
            lambda: self.savefile(self.textEdit.toHtml()))
        self.othersave.triggered.connect(
            lambda: self.saveAsfile(self.textEdit.toHtml()))
        self.close_action.triggered.connect(self.close_func)

        self.copy_action.triggered.connect(self.copy_func)
        self.cut_action.triggered.connect(self.cut_func)
        self.paste_action.triggered.connect(self.paste_func)
        self.font_action.triggered.connect(self.font_func)
        self.color_action.triggered.connect(self.color_func)

        self.aboutQt_action.triggered.connect(self.about_func)

        self.textEdit.textChanged.connect(self.change_func)
コード例 #2
0
ファイル: tree.py プロジェクト: Gazolik/riffPy
 def mimeData(self, indexes):
     data = b''
     item = indexes[0].internalPointer()
     data += pickle.dumps(item.ref)
     mime_data = QMimeData()
     mime_data.setData('application/x-riffnode-item-instance', data)
     return mime_data
コード例 #3
0
ファイル: hexview.py プロジェクト: zcddtb/bincat
 def _handle_copy_text(self):
     mime = QMimeData()
     try:
         mime.setText(binascii.a2b_hex(self._selected_data))
     except TypeError:
         raise Exception("TOP values are not supported yet")
     QApplication.clipboard().setMimeData(mime)
コード例 #4
0
    def mousePressEvent(self, event):
            
        logging.debug('ElementMaster::mousePressEvent() called')
        # uncomment this for debugging purpose
        #self.listChild()

        if event.buttons() != Qt.LeftButton:
            return

        icon = QLabel()

        mimeData = QMimeData()
        mime_text = str(self.row) + str(self.column) + str(self.__class__.__name__)
        mimeData.setText(mime_text)

        drag = QDrag(self)
        drag.setMimeData(mimeData)
        drag.setPixmap(self.pixmap)
        drag.setHotSpot(event.pos() - self.rect().topLeft())

        if drag.exec_(Qt.CopyAction | Qt.MoveAction, Qt.CopyAction) == Qt.MoveAction:
            icon.close()
        else:
            icon.show()
            icon.setPixmap(self.pixmap)
コード例 #5
0
ファイル: test_editor.py プロジェクト: zhangchunlu/myretext
    def test_pasteImage_Markdown(self, _mock_image, _mock_editor):
        mimeData = QMimeData()
        mimeData.setImageData(self._create_image())
        self.dummytab.markupClass = MarkdownMarkup

        self.editor.insertFromMimeData(mimeData)
        self.assertTrue('![myimage](myimage.jpg)' in self.editor.toPlainText())
コード例 #6
0
    def mousePressEvent(self, event):
        child = self.childAt(event.pos())
        if not child:
            return

        pixmap = QPixmap(child.pixmap())

        itemData = QByteArray()
        dataStream = QDataStream(itemData, QIODevice.WriteOnly)
        dataStream << pixmap << QPoint(event.pos() - child.pos())

        mimeData = QMimeData()
        mimeData.setData('application/x-dnditemdata', itemData)

        drag = QDrag(self)
        drag.setMimeData(mimeData)
        drag.setPixmap(pixmap)
        drag.setHotSpot(event.pos() - child.pos())

        tempPixmap = QPixmap(pixmap)
        painter = QPainter()
        painter.begin(tempPixmap)
        painter.fillRect(pixmap.rect(), QColor(127, 127, 127, 127))
        painter.end()

        child.setPixmap(tempPixmap)

        if drag.exec_(Qt.CopyAction | Qt.MoveAction,
                      Qt.CopyAction) == Qt.MoveAction:
            child.close()
        else:
            child.show()
            child.setPixmap(pixmap)
コード例 #7
0
ファイル: playlist.py プロジェクト: tanerius/txplaya
    def mimeData(self, indexes):
        # TODO : refactor with utilities.mimeWrapJson
        data = json.dumps({'source': 'playlist', 'row': indexes[0].row()})
        mimeData = QMimeData()
        mimeData.setText(data)

        return mimeData
コード例 #8
0
    def mouseMoveEvent(self, e: QtGui.QMouseEvent) -> None:
        if e.buttons() != Qt.LeftButton:
            return None
        #根据currentIndex获取数据行的名称
        mimeData = QMimeData()
        currentRow = self.currentIndex().row()
        index = self.model().index(currentRow, 0)
        itemName = self.model().data(index)
        mimeData.setText('{}:{}:{}'.format(self.type, self.address, itemName))

        #绘制拖动时的图像
        width = self.columnWidth(0)
        height = self.rowHeight(currentRow)
        pixmap = QPixmap(width, height)
        paint = QPainter()
        paint.begin(pixmap)
        paint.fillRect(pixmap.rect(), QColor(Qt.white))
        paint.drawRect(0, 0, width - 1, height - 1)
        paint.drawText(pixmap.rect(), Qt.AlignCenter, itemName)
        paint.end()

        #设定拖动项的数据和图标
        drag = QDrag(self)
        drag.setMimeData(mimeData)
        drag.setPixmap(pixmap)
        drag.exec_(Qt.MoveAction)
        super().mouseMoveEvent(e)
コード例 #9
0
ファイル: _main.py プロジェクト: brrr-ali/Scrabble
 def mouseMoveEvent(self, e):
     mimeData = QMimeData()
     mimeData.setText(self.text())
     drag = QDrag(self)
     drag.setMimeData(mimeData)
     drag.setHotSpot(e.pos() - self.rect().topLeft())
     dropAction = drag.exec_(Qt.MoveAction)
コード例 #10
0
 def __init__(self, l):
     super().__init__()
     mimedata = QMimeData()
     mimedata.setUrls([QUrl.fromLocalFile(os.path.abspath(fn)) for fn in l])
     qdrag = QDrag(self)
     qdrag.setMimeData(mimedata)
     qdrag.exec(Qt.DropAction.MoveAction)
コード例 #11
0
ファイル: treemodel.py プロジェクト: vishweshs4/TreeLine
    def mimeData(self, indexList):
        """Return a mime data object for the given node index branches.

        Arguments:
            indexList -- a list of node indexes to convert
        """
        spots = [index.internalPointer() for index in indexList]
        # remove selections from the same branch
        TreeModel.storedDragSpots = [
            spot for spot in spots
            if spot.parentSpotSet().isdisjoint(set(spots))
        ]
        nodes = [spot.nodeRef for spot in TreeModel.storedDragSpots]
        TreeModel.storedDragModel = self
        struct = treestructure.TreeStructure(topNodes=nodes, addSpots=False)
        generics = {
            formatRef.genericType
            for formatRef in struct.treeFormats.values()
            if formatRef.genericType
        }
        for generic in generics:
            genericRef = self.treeStructure.treeFormats[generic]
            struct.treeFormats.addTypeIfMissing(genericRef)
            for formatRef in genericRef.derivedTypes:
                struct.treeFormats.addTypeIfMissing(formatRef)
        data = struct.fileData()
        dataStr = json.dumps(data, indent=0, sort_keys=True)
        mime = QMimeData()
        mime.setData('application/json', bytes(dataStr, encoding='utf-8'))
        return mime
コード例 #12
0
 def get_mime(self):
     mime_data = QMimeData()
     pretty_xml = etree.tostring(self._to_xml(), pretty_print=True).decode()
     mime_data.setText(pretty_xml)
     mime_data.setData('application/x-qt-windows-mime;value="XML"',
                       QByteArray(pretty_xml.encode()))
     return mime_data
コード例 #13
0
 def copy_html(self):
     print(self)
     mime_data = QMimeData()
     mime_data.setHtml('<b>Bold and <font color=red>Red</font></b>')
     clipboard = QApplication.clipboard()
     clipboard.setHtml(mime_data)
     pass
コード例 #14
0
    def mousePressEvent(self, event):
        # handle an internal move

        # start a drag event
        if event.button() == Qt.LeftButton and self.dragDropRect().contains(
                event.pos()):
            # create the pixmap
            pixmap = QPixmap.grabWidget(self, self.rect())

            # create the mimedata
            mimeData = QMimeData()
            mimeData.setText('ItemTitle::%s' % (self.title()))

            # create the drag
            drag = QDrag(self)
            drag.setMimeData(mimeData)
            drag.setPixmap(pixmap)
            drag.setHotSpot(event.pos())

            if not drag.exec_():
                self._accordianWidget.emitItemDragFailed(self)

            event.accept()

        # determine if the expand/collapse should occur
        elif event.button() == Qt.LeftButton and self.expandCollapseRect(
        ).contains(event.pos()):
            self._clicked = True
            event.accept()

        else:
            event.ignore()
コード例 #15
0
    def mimeData(self, indexes):

        name = indexes[0].data()
        print('called mimeData on ' + name)
        mimedata = QMimeData()
        mimedata.setText(name)
        return mimedata
コード例 #16
0
ファイル: plotTreeView.py プロジェクト: zieglerm/manuskript
    def mimeData(self, items):
        mimeData = QMimeData()
        encodedData = ""

        root = ET.Element("outlineItems")

        for item in items:
            plotID = item.data(0, Qt.UserRole)
            subplotRaw = item.parent().indexOfChild(item)

            _id, name, summary = self._model.getSubPlotsByID(
                plotID)[subplotRaw]
            sub = ET.Element("outlineItem")
            sub.set(Outline.title.name, name)
            sub.set(Outline.type.name, settings.defaultTextType)
            sub.set(Outline.summaryFull.name, summary)
            sub.set(Outline.notes.name,
                    self.tr("**Plot:** {}").format(Ref.plotReference(plotID)))

            root.append(sub)

        encodedData = ET.tostring(root)

        mimeData.setData("application/xml", encodedData)
        return mimeData
コード例 #17
0
    def mouseMoveEvent(self, a0: QMouseEvent) -> None:
        if (a0.buttons() == Qt.LeftButton) and abs(a0.pos().y()) > 30:
            globalPos = self.mapToGlobal(a0.pos())
            posInTab = self.mapFromGlobal(globalPos)

            TabBar.indexTabToDrag = self.currentIndex()

            tabRect = self.tabRect(self.indexTabToDrag)
            pixmap = QPixmap(tabRect.size())
            self.render(pixmap, QPoint(), QRegion(tabRect))

            mimeData = QMimeData()
            drag = QDrag(self)
            drag.setMimeData(mimeData)
            drag.setPixmap(pixmap)
            cursor = QCursor(Qt.OpenHandCursor)
            drag.setHotSpot(cursor.pos())
            drag.setHotSpot(a0.pos() - posInTab)
            drag.setDragCursor(cursor.pixmap(), Qt.MoveAction)
            dropAction = drag.exec(Qt.MoveAction)
            # If the drag completed outside of the tab bar, detach the tab and move
            # the content to the current cursor position
            if dropAction == Qt.IgnoreAction:
                a0.accept()
                self.detachTab(self.indexTabToDrag, self.cursor().pos())
        else:
            super(TabBar, self).mouseMoveEvent(a0)
コード例 #18
0
 def mouseMoveEvent(self, event):
     drag = QDrag(self)
     mimedata = QMimeData()
     current_item_test = self.currentItem().text()
     mimedata.setText(current_item_test)
     drag.setMimeData(mimedata)
     drag.exec_()
コード例 #19
0
 def mouseMoveEvent(self, event):
     """
     Protected method to handle mouse move events.
     
     @param event reference to the mouse move event (QMouseEvent)
     """
     if event.buttons() == Qt.MouseButtons(Qt.LeftButton) and \
        (event.pos() - self.__dragStartPos).manhattanLength() > \
             QApplication.startDragDistance():
         drag = QDrag(self)
         mimeData = QMimeData()
         index = self.tabAt(event.pos())
         mimeData.setText(self.tabText(index))
         mimeData.setData("action", b"tab-reordering")
         mimeData.setData("tabbar-id", str(id(self)).encode("utf-8"))
         mimeData.setData(
             "source-index",
             QByteArray.number(self.tabAt(self.__dragStartPos)))
         mimeData.setData("tabwidget-id",
                          str(id(self.parentWidget())).encode("utf-8"))
         drag.setMimeData(mimeData)
         if event.modifiers() == Qt.KeyboardModifiers(Qt.ShiftModifier):
             drag.exec_(Qt.DropActions(Qt.CopyAction))
         elif event.modifiers() == Qt.KeyboardModifiers(Qt.NoModifier):
             drag.exec_(Qt.DropActions(Qt.MoveAction))
     super(TabBar, self).mouseMoveEvent(event)
コード例 #20
0
ファイル: ClipboardMaster.py プロジェクト: xiliangjianke/PyQt
 def updateMimeData(self,
                    hasColor, color,
                    hasHtml, html,
                    hasImage, image,
                    hasText, text,
                    hasUrls, urls,
                    hasFiles, files,
                    ):
     # 客户端剪切板同步到服务端
     self.append('收到客户端发送的剪贴板')
     clipboard = QApplication.clipboard()
     clipboard.blockSignals(True)
     data = QMimeData()
     if hasColor:
         data.setColorData(color)
     if hasHtml:
         data.setHtml(html)
     if hasImage:
         data.setImageData(image)
     if hasText:
         data.setText(text)
     # if hasUrls:
     #     data.setUrls(urls)
     if hasFiles:
         data.setData('')
     clipboard.setMimeData(data)
     clipboard.blockSignals(False)
コード例 #21
0
    def mouseMoveEvent(self, event):
        """ If the mouse moves far enough when the left mouse button is held
            down, start a drag and drop operation.
        """
        if not event.buttons() & Qt.LeftButton:
            return

        if (event.pos() - self.dragStartPosition
            ).manhattanLength() < QApplication.startDragDistance():
            return

        if not self.hasImage:
            return

        drag = QDrag(self)
        mimeData = QMimeData()

        output = QByteArray()
        outputBuffer = QBuffer(output)
        outputBuffer.open(QIODevice.WriteOnly)
        self.imageLabel.pixmap().toImage().save(outputBuffer, "PNG")
        outputBuffer.close()
        mimeData.setData("image/png", output)

        drag.setMimeData(mimeData)
        drag.setPixmap(self.imageLabel.pixmap().scaled(64, 64,
                                                       Qt.KeepAspectRatio))
        drag.setHotSpot(
            QPoint(drag.pixmap().width() / 2,
                   drag.pixmap().height()))
        drag.start()
コード例 #22
0
ファイル: test_BlockTree.py プロジェクト: xuxiaobei1995/moose
    def testMove(self):
        w = self.newWidget()
        item = w._path_item_map.get("/Variables/u")
        #b = w.tree.getBlockInfo("/Variables/u")
        w.scrollToItem(item)
        point = w.visualItemRect(item).center()
        item1 = w._path_item_map.get("/Variables/v")
        #b1 = w.tree.getBlockInfo("/Variables/v")
        w.scrollToItem(item1)
        point1 = w.visualItemRect(item1).bottomLeft()

        #idx = b.parent.children_list.index(b.name)
        #idx1 = b.parent.children_list.index(b1.name)
        w.setCurrentItem(item)
        mime = QMimeData()
        mime.setData(w._mime_type, "some data")
        ee = QDragEnterEvent(w.mapToGlobal(point), Qt.MoveAction, mime, Qt.LeftButton, Qt.NoModifier)
        w.dragEnterEvent(ee)
        #Testing.process_events(t=1)
        de = QDropEvent(w.mapToGlobal(point1), Qt.MoveAction, mime, Qt.LeftButton, Qt.NoModifier)
        w.dropEvent(de)
        # This doesn't seem to work for some reason
        #self.assertEqual(idx1, b.parent.children_list.index(b.name))
        #self.assertEqual(idx, b.parent.children_list.index(b1.name))

        w.setCurrentItem(None)
        self.assertEqual(w._current_drag, None)
        w.dropEvent(de)

        w.dragEnterEvent(ee)
        self.assertEqual(w._current_drag, None)
        w.setCurrentItem(item1)
        w.dragEnterEvent(ee)
        self.assertNotEqual(w._current_drag, None)
        w.dropEvent(de)
コード例 #23
0
    def mousePressEvent(self, event):

        logging.debug('DropBox::mousePressEvent() called: {}'.format(
            event.pos()))
        try:
            mimeData = QMimeData()
            mimeData.setText(self.type)
            # load config into memory tmp_config of storabar
            self.parent.tmp_config = self.config
            self.parent.tmp_element = self
            # push config to active workingarea
            self.parent.loadConfig()
        except Exception as e:
            logging.error(
                'DropBox::mousePressEvent() Exception caught: {}'.format(
                    str(e)))
            return

        drag = QDrag(self)
        drag.setHotSpot(event.pos())
        drag.setPixmap(self.label.pixmap())
        drag.setMimeData(mimeData)

        if drag.exec_(Qt.CopyAction | Qt.MoveAction,
                      Qt.CopyAction) == Qt.MoveAction:
            self.close()
        else:
            self.show()
            self.label.setPixmap(self.label.pixmap())
            logging.debug('DropBox::mousePressEvent() dropped')
コード例 #24
0
    def mouseMoveEvent(self, event):
        if (event.pos() - self.dragStartPosition
            ).manhattanLength() < QApplication.startDragDistance():
            return
        mimeData = QMimeData()
        if not self.layer.selected:
            name = self.layer.name
        else:
            name = ''
            for layer in self.layer.viewer.layers:
                if layer.selected:
                    name = layer.name + '; ' + name
            name = name[:-2]
        mimeData.setText(name)
        drag = QDrag(self)
        drag.setMimeData(mimeData)
        drag.setHotSpot(event.pos() - self.rect().topLeft())
        dropAction = drag.exec_(Qt.MoveAction | Qt.CopyAction)

        if dropAction == Qt.CopyAction:
            if not self.layer.selected:
                index = self.layer.viewer.layers.index(self.layer)
                self.layer.viewer.layers.pop(index)
            else:
                self.layer.viewer.layers.remove_selected()
コード例 #25
0
ファイル: test_editor.py プロジェクト: zhangchunlu/myretext
    def test_pasteImage_RestructuredText(self, _mock_image, _mock_editor):
        mimeData = QMimeData()
        mimeData.setImageData(self._create_image())
        self.dummytab.markupClass = ReStructuredTextMarkup

        self.editor.insertFromMimeData(mimeData)
        self.assertTrue('.. image:: myimage.jpg' in self.editor.toPlainText())
コード例 #26
0
    def mimeData(self, indexes):
        """
        Public method to return the mime data.
        
        @param indexes list of indexes (QModelIndexList)
        @return mime data (QMimeData)
        """
        from .XbelWriter import XbelWriter

        data = QByteArray()
        stream = QDataStream(data, QIODevice.WriteOnly)
        urls = []

        for index in indexes:
            if index.column() != 0 or not index.isValid():
                continue

            encodedData = QByteArray()
            buffer = QBuffer(encodedData)
            buffer.open(QIODevice.ReadWrite)
            writer = XbelWriter()
            parentNode = self.node(index)
            writer.write(buffer, parentNode)
            stream << encodedData
            urls.append(index.data(self.UrlRole))

        mdata = QMimeData()
        mdata.setData(self.MIMETYPE, data)
        mdata.setUrls(urls)
        return mdata
コード例 #27
0
ファイル: token_label.py プロジェクト: alicekre/Python_Muehle
    def mouseMoveEvent(self, event):
        if self.dialog.removable:
            return

        if not (event.buttons() & Qt.LeftButton):
            return

        if (event.pos() - self.drag_start_position).manhattanLength() < QApplication.startDragDistance():
            return

        drag = QDrag(self)
        mimedata = QMimeData()
        mimedata.setText(self.text())

        if self.pixmap() is None:
            return

        mimedata.setImageData(self.pixmap().toImage())

        drag.setMimeData(mimedata)
        pixmap = QPixmap(self.size())
        self.image = pixmap
        painter = QPainter(pixmap)
        painter.drawPixmap(self.rect(), self.grab())
        painter.end()
        drag.setPixmap(pixmap)
        drag.setHotSpot(event.pos())
        print("Moving")
        drag.exec_(Qt.MoveAction)
コード例 #28
0
 def sync_buffer_to_clipboard(self):
     assert self._sync_direction == SyncDirection.BUFFER_TO_CLIPBOARD
     data = self.buffer.get_content()
     self.mime_data = {self.current_format: data}
     mimedata = QMimeData()
     mimedata.setData(self.current_format, data)
     QApplication.clipboard().setMimeData(mimedata)
コード例 #29
0
    def mousePressEvent(self, event):

        child = self.childAt(event.pos())
        if not child:
            return

        pixmap = QPixmap(child.pixmap())

        mimeData = QMimeData()
        mimeData.setText(child.type)

        drag = QDrag(self)
        drag.setPixmap(child.pixmap())
        drag.setMimeData(mimeData)
        drag.setHotSpot(event.pos() - child.pos())

        tempPixmap = QPixmap(pixmap)
        painter = QPainter()
        painter.begin(tempPixmap)
        painter.fillRect(pixmap.rect(), QColor(127, 127, 127, 127))
        painter.end()

        child.setPixmap(tempPixmap)

        if drag.exec_(Qt.CopyAction | Qt.MoveAction,
                      Qt.CopyAction) == Qt.MoveAction:
            child.close()
        else:
            child.show()
            child.setPixmap(pixmap)
コード例 #30
0
ファイル: table.py プロジェクト: PuchkovaAS/TeconTools
    def mouseMoveEvent(self, event):
        if not (event.buttons() & Qt.Qt.LeftButton):
            return
        if (event.pos() - self.drag_start_position
            ).manhattanLength() < QApplication.startDragDistance():
            return
        drag = QDrag(self)
        mimedata = QMimeData()
        row = self.indexAt(self.drag_start_position).row()
        collumn = self.indexAt(self.drag_start_position).column()
        mimedata.setText(self.item(row, collumn).text())
        drag.setMimeData(mimedata)
        item = QLabel(self.item(row, collumn).text())
        item.adjustSize()

        # item.setFixedSize(100,50)
        pixmap = QtWidgets.QWidget.grab(item)
        # pixmap = QPixmap(self.size())

        painter = QPainter(pixmap)
        painter.drawPixmap(item.rect(), item.grab())
        painter.end()
        drag.setPixmap(pixmap)
        # drag.setHotSpot(event.pos())
        drag.setPixmap(pixmap)
        # shift the Pixmap so that it coincides with the cursor position
        # drag.setHotSpot(event.pos())
        drag.exec_(QtCore.Qt.CopyAction | QtCore.Qt.MoveAction)