Exemple #1
0
    def test_dropping_the_data_emits_the_signal(self):
        mw = self._get_one()
        self.assertEqual(mw.supportedDropActions(), Qt.CopyAction)
        self.assertIn('application/vnd.re-eat.recipe', mw.mimeTypes())
        assert mw.viewport().acceptDrops()

        mw.recipeAdded = DummySignal()

        mimeData = QMimeData()
        encodedData = QByteArray()
        stream = QDataStream(encodedData, QIODevice.WriteOnly)
        stream.writeInt(1)
        stream.writeInt(2)
        mimeData.setData('application/vnd.re-eat.recipe', encodedData)

        mw.dropMimeData(0, mimeData, Qt.CopyAction)
        self.assertListEqual(mw.recipeAdded.received, [(1, mw.date, mw.index),
                                                       (2, mw.date, mw.index)])

        mw.recipeMoved = DummySignal()
        mimeData = QMimeData()
        encodedData = QByteArray()
        stream = QDataStream(encodedData, QIODevice.WriteOnly)
        stream.writeInt(42)
        stream.writeQVariant(datetime.date.today())
        stream.writeInt(2)
        mimeData.setData('application/vnd.re-eat.meal_recipe', encodedData)

        mw.dropMimeData(0, mimeData, Qt.CopyAction)
        self.assertListEqual(
            mw.recipeMoved.received,
            [(42, datetime.date.today(), 2, mw.date, mw.index)])
Exemple #2
0
def new_processUrls(self, mime, _old):
    urls = mime.urls()
    size = len(urls)
    if size == 1:
        return _old(self, mime)
    # LOG.debug("import %d urls" % size)
    newmime = QMimeData()
    newlink = ""
    for url in urls:
        url = url.toString()
        url = url.splitlines()[0]
        # LOG.debug("import %s" % url)
        newmime = QMimeData()
        link = self.editor.urlToLink(url)
        if link:
            newlink += link
        elif mime.hasImage():
            # if we couldn't convert the url to a link and there's an
            # image on the clipboard (such as copy&paste from
            # google images in safari), use that instead
            return self._processImage(mime)
        else:
            newmime.setText(url)
            return newmime
    if newlink != "":
        newmime.setHtml(newlink)
    return newmime
Exemple #3
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()
Exemple #4
0
 def copy(self):
     dataList = self.prepareCopy()
     mimeData = QMimeData()
     for dataFormat, data in dataList.iteritems():
         v = toVariant(data)
         mimeData.setData(dataFormat, v.toByteArray())
     QtGui.qApp.clipboard().setMimeData(mimeData)
Exemple #5
0
 def copyCurrentCell(self):
     index = self.currentIndex()
     if index.isValid():
         carrier = QMimeData()
         dataAsText = self.model().data(index, Qt.DisplayRole)
         carrier.setText(dataAsText.toString() if dataAsText else '')
         QtGui.qApp.clipboard().setMimeData(carrier)
Exemple #6
0
 def startDrag(self, dropActions):
     """Reimplement Qt Method - handle drag event"""
     mimeData = QMimeData()
     mimeData.setText(self.get_filename())
     drag = QDrag(self)
     drag.setMimeData(mimeData)
     drag.exec_()
Exemple #7
0
 def startDrag(self, dropActions):
     """Reimplement Qt Method - handle drag event"""
     data = QMimeData()
     data.setUrls([QUrl(fname) for fname in self.get_selected_filenames()])
     drag = QDrag(self)
     drag.setMimeData(data)
     drag.exec_()
Exemple #8
0
    def __onDragStarted(self, index):
        desc = index.data(QtWidgetRegistry.WIDGET_DESC_ROLE)
        icon = index.data(Qt.DecorationRole)

        drag_data = QMimeData()
        drag_data.setData(
            "application/vnv.orange-canvas.registry.qualified-name",
            desc.qualified_name.encode('utf-8'))
        drag = QDrag(self)
        drag.setPixmap(icon.pixmap(38))
        drag.setMimeData(drag_data)

        # TODO: Should animate (accept) hide.
        self.hide()

        # When a drag is started and the menu hidden the item's tool tip
        # can still show for a short time UNDER the cursor preventing a
        # drop.
        viewport = self.__menu.view().viewport()
        filter = ToolTipEventFilter()
        viewport.installEventFilter(filter)

        drag.exec_(Qt.CopyAction)

        viewport.removeEventFilter(filter)
Exemple #9
0
 def mimeData(self, indexes):
     nodes = dedupe(index.internalPointer() for index in indexes)
     paths = [str(self.name + node.ref.path) for node in nodes]
     data = '\n'.join(paths).encode('utf-8')
     mimeData = QMimeData()
     mimeData.setData(MIME_PATHS, QByteArray(data))
     return mimeData
Exemple #10
0
    def startDrag(self, dropAction):
        """
        Start drag

        @param dropAction:
        @type dropAction:
        """
        indexes = self.selectedIndexes()
        if not indexes:
            return
        for index in indexes:
            if not index.isValid():
                return
        rowVal = self.model.getValueRow(indexes[0])
        if len(rowVal) > 1:
            meta = QByteArray()
            if self.datasetView:
                meta.append("__%s__" % rowVal['name'])
            else:
                meta.append("agent('%s')" % rowVal['name'])

            # create mime data object
            mime = QMimeData()
            mime.setData('application/x-%s-agent-item' % self.__acronym, meta)

            # start drag
            drag = QDrag(self)
            drag.setMimeData(mime)

            drag.exec_(Qt.CopyAction)
Exemple #11
0
    def _drop_event(self, url):
        # make sure data does not get garbage collected before it used
        self.event_data = data = QMimeData()
        data.setUrls([QUrl(url)])

        return QDropEvent(QPoint(0, 0), Qt.MoveAction, data, Qt.NoButton,
                          Qt.NoModifier, QDropEvent.Drop)
Exemple #12
0
 def eventFilter( self, object, event ):
     if event.type() == event.MouseButtonPress:
         if self.isLocked():
             return False
             
         if event.button() == Qt.MidButton or \
            (event.button() == Qt.LeftButton and \
             event.modifiers() == Qt.ShiftModifier):
             index = self.tabBar().tabAt(event.pos())
             view  = self.widget(index)
             pixmap = QPixmap.grabWidget(view)
             drag = QDrag(self)
             data = QMimeData()
             data.setText('move view:{}'.format(index))
             drag.setMimeData(data)
             drag.setPixmap(pixmap)
             drag.exec_()
             
             return True
         return False
         
     elif event.type() == event.DragEnter:
         if ( str(event.mimeData().text()).startswith('move view:') and
              event.source() != self ):
             event.acceptProposedAction()
         return True
     
     elif event.type() == event.Drop:
         text = str(event.mimeData().text())
         splt = text.split(':')
         self.snagViewFromPanel(event.source(), int(splt[1]))
         return True
     
     return False
    def startDrag(self, dropAction):
        """
        Start drag

        @param dropAction:
        @type dropAction:
        """
        if self.datasetView:
            return

        # check indexes
        indexes = self.selectedIndexes()
        if not indexes:
            return
        for index in indexes:
            if not index.isValid():
                return

        rowVal = self.model.getValueRow(indexes[0])
        if len(rowVal) > 1:
            meta = QByteArray()
            meta.append("description('%s')" % rowVal['key'])

            # create mime data object
            mime = QMimeData()
            m = 'application/x-%s-description-item' % Settings.instance(
            ).readValue(key='Common/acronym').lower()
            mime.setData(m, meta)
            # start drag
            drag = QDrag(self)
            drag.setMimeData(mime)

            drag.exec_(Qt.CopyAction)
Exemple #14
0
    def startDrag(self, dropAction):
        """
        Start drag

        @param dropAction:
        @type dropAction:
        """
        indexes = self.selectedIndexes()
        if not indexes:
            return
        for index in indexes:
            if not index.isValid():
                return
        rowVal = self.model.getValueRow( indexes[0] )
        if len(rowVal) > 1 :
            if self.datasetView:
                meta = "__%s__" % rowVal['name']
            else:
                meta = "agent('%s')" % rowVal['name']
            # create mime data object
            mime = QMimeData()
            mime.setData('application/x-%s-agent-item' % Settings.instance().readValue( key='Common/acronym' ).lower() , meta )
            # start drag )
            drag = QDrag(self)
            drag.setMimeData(mime) 
            
            drag.exec_(Qt.CopyAction)
Exemple #15
0
    def test_stupid_drop_case(self):
        mw = self._get_one()
        mw.recipeAdded = DummySignal()
        self.assertEqual(mw.dropMimeData(None, None, Qt.IgnoreAction), True)

        mimeData = QMimeData()
        self.assertEqual(mw.dropMimeData(0, mimeData, Qt.CopyAction), False)
        self.assertEqual(mw.recipeAdded.received, [])
Exemple #16
0
 def mimeData(self, indexes):
     sortedIndexes = sorted([index for index in indexes
                             if index.isValid()], key=lambda index: index.row())
     encodedData = '\n'.join(self.data(index, Qt.DisplayRole)
                             for index in sortedIndexes)
     mimeData = QMimeData()
     mimeData.setData(self.Mimetype, encodedData)
     return mimeData
Exemple #17
0
 def copy(self):
     """Copy to the clipboard"""
     data = QMimeData()
     text = '\n'.join([cursor.selectedText() \
                         for cursor in self.cursors()])
     data.setText(text)
     data.setData(self.MIME_TYPE, text.encode('utf8'))
     QApplication.clipboard().setMimeData(data)
Exemple #18
0
    def test_stupid_drop_case(self):
        rw = RecipesWidget()
        rw.recipeRemoved = DummySignal()
        self.assertEqual(rw.dropMimeData(None, None, Qt.IgnoreAction), True)

        mimeData = QMimeData()
        self.assertEqual(rw.dropMimeData(0, mimeData, Qt.CopyAction), False)
        self.assertEqual(rw.recipeRemoved.received, [])
Exemple #19
0
    def mimeData(self, indexes):
        """See QAbstractItemModel documentation"""
        if len(indexes) != 1:
            return 0

        data = QMimeData()
        data.setData(self.mimeTypes()[0], QByteArray.number(indexes[0].row()))
        return data
    def mimeData(self, indexes):
        idList = set()
        for index in indexes:
            idList.add(forceString(self.idList()[index.row()]))

        mimeData = QMimeData()
        mimeData.setText(u','.join(idList))
        return mimeData
Exemple #21
0
 def dropEvent(self, event):
     if len(event.mimeData().urls()) > 0:
         path = event.mimeData().urls()[0].path()
         self.emit(SIGNAL("openDropFile(QString)"), path)
         event.ignore()
         event.mimeData = QMimeData()
     QPlainTextEdit.dropEvent(self, event)
     self.undo()
Exemple #22
0
 def mimeData(self, indexes):
     if len(indexes) == 1:
         item = indexes[0].internalPointer()
         d = QMimeData()
         d.setData(variable.MIME_TYPE, item.uniqueName)
         return d
     else:
         return None
Exemple #23
0
    def mouseMoveEvent(self, event):
        if '_selected' in self.__dict__:
            mimeData = QMimeData()
            byteArray = QByteArray(self._label.text())
            mimeData.setData(CoordinateButton.MIME_TYPE, byteArray)

            drag = QDrag(self)
            drag.setMimeData(mimeData)
            drag.start(Qt.CopyAction)
Exemple #24
0
 def mimeData(self, items):
     mimeData = QMimeData()
     encodedData = QByteArray()
     stream = QDataStream(encodedData, QIODevice.WriteOnly)
     for item in items:
         id = item.data(Qt.UserRole)
         stream.writeInt(id)
     mimeData.setData('application/vnd.re-eat.recipe', encodedData)
     return mimeData
    def dataCollector(tree, items):
        data = QMimeData()

        actions = []
        for item in items:
            actions.append(str(qt.unwrapVariant(item.data(0, Qt.UserRole))))
        actionstr = ','.join(actions)

        data.setData('application/x-actions', QByteArray(actionstr))
        return data
Exemple #26
0
def dragFile(widget, filename, icon=None, dropactions=Qt.CopyAction):
    """Starts dragging the given local file from the widget."""
    if icon is None or icon.isNull():
        icon = QFileIconProvider().icon(QFileInfo(filename))
    drag = QDrag(widget)
    data = QMimeData()
    data.setUrls([QUrl.fromLocalFile(filename)])
    drag.setMimeData(data)
    drag.setPixmap(icon.pixmap(32))
    drag.exec_(dropactions)
 def mouseMoveEvent(self, event):
     if event.buttons() != Qt.RightButton:
         return
     mimeData = QMimeData()
     drag = QDrag(self)
     drag.setMimeData(mimeData)
     drag.setHotSpot(event.pos() - self.rect().topLeft())
     dropAction = drag.start(Qt.MoveAction)
     if dropAction == Qt.MoveAction:
         self.close()
Exemple #28
0
    def mimeData(self, indexes):
        data = QMimeData()
        widgets = []
        for index in indexes:
            widget = index.data(Qt.UserRole)
            widgets.append(widget)

        widgettext = roam.yaml.dump(widgets)
        bytes = QByteArray(widgettext)
        data.setData(self.mimeTypes()[0], bytes)
        return data
    def mimeData(self, items):
        """ Returns QMimeData for drag and drop.
        """
        logging.debug(self.__class__.__name__ + ": mimeData()")
        mime = QMimeData()
        encodedData = QByteArray()

        for item in items:
            encodedData.append(item.text(0))
        mime.setData(self.mimeType(), encodedData)
        return mime
Exemple #30
0
 def mimeData(self, indexes):
     lst = QgsMimeDataUtils.UriList
     for index in indexes:
         if index.isValid():
             if index.type() == QgsDataItem.Project:
                 mimeData = QMimeData()
                 url = QUrl.fromLocalFile(index.path())
                 mimeData.setUrls([url])
                 return mimeData
             if index.type() == QgsDataItem.Layer:
                 lst.append(QgsMimeDataUtils.Uri(index))
     return QgsMimeDataUtils.encodeUriList(lst)