Ejemplo n.º 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)])
Ejemplo n.º 2
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)])
Ejemplo n.º 3
0
 def mimeData(self, indexes):
     items = (index.internalPointer() for index in indexes if index.isValid())
     uri_list = self._getURIs(items)
     uri_list.sort()
     data = QMimeData()
     data.setData('mpd/uri', pickle.dumps(uri_list))
     return data
Ejemplo n.º 4
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)
Ejemplo n.º 5
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
Ejemplo n.º 6
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
        )
        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)
Ejemplo n.º 7
0
    def _newListDropEvent(self, event):
        if event.provides('mpd/uri'):
            event.accept()
            parent = self._newList()
            data = QMimeData()
            data.setData('mpd/uri', event.mimeData().data('mpd/uri'))

            def disconnect(item, row=-1, column=-1):
                if parent.row() == row:
                    self.disconnect(self.playlistList.itemDelegate(parent),
                            SIGNAL('commitData(QWidget *)'),
                            addSongs)
                    self.disconnect(self.playlistModel,
                            SIGNAL('rowsAboutToBeRemoved(const QModelIndex &, int , int)'),
                            disconnect)

            def addSongs(editor, data=data):
                # Make sure to disconnect from the signals.
                if parent.data(Qt.DisplayRole):
                    disconnect(None, parent.row())
                    self.playlistModel.dropMimeData(data, Qt.CopyAction, 0, 0, parent)

            self.connect(self.playlistList.itemDelegate(parent),
                    SIGNAL('commitData(QWidget *)'),
                    addSongs)
            self.connect(self.playlistModel,
                    SIGNAL('rowsAboutToBeRemoved(const QModelIndex &, int , int)'),
                    disconnect)
Ejemplo n.º 8
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)
Ejemplo n.º 9
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)
Ejemplo n.º 10
0
    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)
Ejemplo n.º 11
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)
Ejemplo n.º 12
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)
Ejemplo n.º 13
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
Ejemplo n.º 14
0
class MIME(QObject):
    '''base MIME class'''
    def __init__(self, object=None, mime="application/x-default-mime"):
        self.MimeData = QMimeData()
        self.icon = QIcon()
        self.mime = mime
        self.setData(object)
    
    def setData(self, object):
        '''set MIME data'''
        self.data = object
        self._updateData()
        
    def setIcon(self, icon):
        '''set icon for MIME'''
        if isinstance(icon, QIcon):
            self.icon = icon
        elif isinstance(icon, str) or isinstance(icon, QString):
            self.icon = QIcon(icon)
    
    def _updateData(self):
        '''update mime data'''
        data = QByteArray()
        stream = QDataStream(data, QIODevice.WriteOnly)
        stream << str(self.data) << self.icon
        self.MimeData.setData(self.mime, data)
        
Ejemplo n.º 15
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)
Ejemplo n.º 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
Ejemplo n.º 17
0
 def startDrag(self, dropAction):
     # create mime data object
     mime = QMimeData()
     mime.setData('text/xml', '???')
     # start drag 
     drag = QDrag(self)
     drag.setMimeData(mime)        
     drag.start(Qt.CopyAction | Qt.CopyAction)
Ejemplo n.º 18
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
Ejemplo n.º 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
Ejemplo n.º 20
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
Ejemplo n.º 21
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
Ejemplo n.º 22
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
Ejemplo n.º 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)
Ejemplo n.º 24
0
 def mimeData(self, indexes):
     if len(indexes) == 0:
         return 0
     index = indexes[0]
     card = self.list[index.row()]
     string = pickle.dumps(card)
     result = QMimeData()
     result.setData('application/x-QCard', string)
     return result
Ejemplo n.º 25
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
Ejemplo n.º 26
0
 def mimeData(self, indexes):
     albums = (self._albums[index.row()] for index in indexes if index.isValid())
     uri_list = []
     for album in albums:
         uri_list.extend(song.file.absolute for song in album.songs)
     uri_list.sort()
     data = QMimeData()
     data.setData('mpd/uri', pickle.dumps(uri_list))
     return data
Ejemplo n.º 27
0
 def mimeData(self, indexes):
     ''' Encodes the data for the items in indexes in MIME types for drag and drop actions. '''
     row_list = [index.row() for index in indexes]
     row_list.sort()
     if len(row_list) == 0:
         return 0
     data = QMimeData()
     data.setData('mpd/playqueue_id', pickle.dumps([(row, int(self._songs[row].id)) for row in row_list]))
     data.setData('mpd/uri', pickle.dumps([self._songs[row].file.absolute for row in row_list]))
     return data
Ejemplo n.º 28
0
    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
Ejemplo n.º 29
0
 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
Ejemplo n.º 30
0
 def mimeData(self, indexes):
     dataList = []
     index = indexes[0]
     for index in indexes:
         path = self.pathForIndex(index)
         data = ','.join(map(str, path))
         dataList.append(data)
     data = '|'.join(dataList)
     mimeData = QMimeData()
     mimeData.setData(MIME_NODEPATHS, QByteArray(data.encode()))
     return mimeData
Ejemplo n.º 31
0
    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
Ejemplo n.º 32
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
Ejemplo n.º 33
0
    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
Ejemplo n.º 34
0
    def mouseMoveEvent(self, evt):
        if not (evt.buttons()&Qt.LeftButton):
            return
        if (evt.pos()-self.__downPos).manhattanLength()<self.minDragDist:
            return

        D = QDrag(self)
        data = QMimeData()
        data.setData("application/x-internal", '')
        D.setMimeData(data)

        D.exec_(Qt.MoveAction)
Ejemplo n.º 35
0
    def mousePressEvent(self, e):
        """
		Start a drag operation

		Arguments:
		e -- a QMouseEvent
		"""

        if e.button() == Qt.RightButton:
            item = self.itemAt(e.pos())
            if item == None:
                return
            note = item.zoteroItem.get_note()
            if note != None:
                self.qnotero.previewNote(note)
            return

        QListWidget.mousePressEvent(self, e)
        qnoteroItem = self.currentItem()
        if qnoteroItem == None:
            return
        if not hasattr(qnoteroItem, "zoteroItem"):
            return
        zoteroItem = qnoteroItem.zoteroItem
        if zoteroItem.fulltext == None:
            return

        path = zoteroItem.fulltext.encode("latin-1")
        tmpName = '%s.pdf' % zoteroItem.filename_format()
        tmpFile = os.path.join(tempfile.gettempdir(), tmpName)
        suffix = 1
        while os.path.exists(tmpFile):
            tmpName = '%s-%d.pdf' % (zoteroItem.filename_format(), suffix)
            tmpFile = os.path.join(tempfile.gettempdir(), tmpName)
            suffix += 1
        try:
            shutil.copy(path, tmpFile)
        except:
            print(
                "qnoteroResults.mousePressEvent(): failed to copy file, sorry..."
            )
            return

        print("qnoteroResults.mousePressEvent(): prepare to copy %s" % path)
        print("qnoteroResults.mousePressEvent(): prepare to copy (tmp) %s" \
         % tmpFile)
        mimeData = QMimeData()
        mimeData.setUrls([QUrl.fromLocalFile(tmpFile)])
        mimeData.setData("text/plain", tmpFile)
        drag = QDrag(self)
        drag.setMimeData(mimeData)
        drag.exec_(Qt.CopyAction)
Ejemplo n.º 36
0
 def __startDrag(self, button):
     """
     Start a drag from button
     """
     action = button.defaultAction()
     desc = action.data()  # Widget Description
     icon = action.icon()
     drag_data = QMimeData()
     drag_data.setData("application/vnv.orange-canvas.registry.qualified-name", desc.qualified_name.encode("utf-8"))
     drag = QDrag(button)
     drag.setPixmap(icon.pixmap(self.iconSize()))
     drag.setMimeData(drag_data)
     drag.exec_(Qt.CopyAction)
Ejemplo n.º 37
0
	def mousePressEvent(self, e):

		"""
		Start a drag operation

		Arguments:
		e -- a QMouseEvent
		"""

		if e.button() == Qt.RightButton:
			item = self.itemAt(e.pos())
			if item == None:
				return
			note = item.zoteroItem.get_note()
			if note != None:
				self.qnotero.previewNote(note)
			return

		QListWidget.mousePressEvent(self, e)
		qnoteroItem = self.currentItem()
		if qnoteroItem == None:
			return
		if not hasattr(qnoteroItem, "zoteroItem"):
			return
		zoteroItem = qnoteroItem.zoteroItem
		if zoteroItem.fulltext == None:
			return
		
		path = zoteroItem.fulltext.encode("latin-1")
		tmpName = '%s.pdf' % zoteroItem.filename_format()
		tmpFile = os.path.join(tempfile.gettempdir(), tmpName)
		suffix = 1
		while os.path.exists(tmpFile):
			tmpName = '%s-%d.pdf' % (zoteroItem.filename_format(), suffix)
			tmpFile = os.path.join(tempfile.gettempdir(), tmpName)			
			suffix += 1
		try:
			shutil.copy(path, tmpFile)
		except:
			print "qnoteroResults.mousePressEvent(): failed to copy file, sorry..."
			return
			
		print "qnoteroResults.mousePressEvent(): prepare to copy %s" % path
		print "qnoteroResults.mousePressEvent(): prepare to copy (tmp) %s" \
			% tmpFile
		mimeData = QMimeData()
		mimeData.setUrls([QUrl.fromLocalFile(tmpFile)])
		mimeData.setData("text/plain", tmpFile)
		drag = QDrag(self)
		drag.setMimeData(mimeData)
		drag.exec_(Qt.CopyAction)
Ejemplo n.º 38
0
	def mimeData(self, indexes):
		"""
		Reimplements the :meth:`QAbstractItemModel.mimeData` method.
		
		:param indexes: Indexes.
		:type indexes: QModelIndexList
		:return: MimeData.
		:rtype: QMimeData
		"""

		byteStream = pickle.dumps([self.getNode(index) for index in indexes], pickle.HIGHEST_PROTOCOL)
		mimeData = QMimeData()
		mimeData.setData("application/x-umbragraphmodeldatalist", byteStream)
		return mimeData
Ejemplo n.º 39
0
    def mimeData(self, indexes):

        _mimeData = QMimeData()
        encodedData = QByteArray()

        stream = QDataStream(encodedData, QIODevice.WriteOnly)
        for index in indexes:
            if (index.isValid()):
                text = self.data(index, Qt.DisplayRole).toString()
                stream << text

        # 将数据放入QMimeData中
        _mimeData.setData("application/vnd.text.list", encodedData)
        return _mimeData
Ejemplo n.º 40
0
 def __startDrag(self, button):
     """
     Start a drag from button
     """
     action = button.defaultAction()
     desc = action.data()  # Widget Description
     icon = action.icon()
     drag_data = QMimeData()
     drag_data.setData(
         "application/vnv.orange-canvas.registry.qualified-name",
         desc.qualified_name.encode("utf-8"))
     drag = QDrag(button)
     drag.setPixmap(icon.pixmap(self.iconSize()))
     drag.setMimeData(drag_data)
     drag.exec_(Qt.CopyAction)
Ejemplo n.º 41
0
    def startDrag(self, dragData):
        """
        Starts a new drag with the inputed data.
        
        :param      dragData | <dict>
        """
        # create the mime data
        mimeData = QMimeData()
        for key, value in dragData.items():
            mimeData.setData('application/x-%s' % key, wrapVariant(value))

        # create the drag instance
        drag = QDrag(self.scene().chart())
        drag.setMimeData(mimeData)
        drag.exec_()
Ejemplo n.º 42
0
 def mimeData(self, list_of_QModelIndex):
     l = []
     for index in list_of_QModelIndex:
         # create a list of prez tuples showing how layers are presented
         if index.isValid():
             l.append(
                 (index.row(), self.doc.current_layer_set[index.row()]))
     p = pkl.dumps((len(self.doc.current_layer_set), l),
                   pkl.HIGHEST_PROTOCOL)
     mime = QMimeData()
     # t = base64.encodebytes(p).decode('ascii')
     # LOG.debug('mimetext for drag is "{}"'.format(t))
     mime.setData(self._mimetype, p)
     LOG.debug('presenting mime data for {0!r:s}'.format(l))
     return mime
Ejemplo n.º 43
0
    def mousePressEvent(self, event):

        if event.button() == Qt.LeftButton:

            drag = QDrag(self)
            data = QMimeData()
            data.setData("text/plain", str(self.text()))

            path = QDir.tempPath() + "/hello.txt"
            f = open(path, "w")
            f.write("Hello world!")
            f.close()
            data.setUrls([QUrl.fromLocalFile(path)])
            drag.setMimeData(data)
            drag.exec_()
Ejemplo n.º 44
0
    def mousePressEvent(self, event):

        if event.button() == Qt.LeftButton:

            drag = QDrag(self)
            data = QMimeData()
            data.setData("text/plain", str(self.text()))

            path = QDir.tempPath() + "/hello.txt"
            f = open(path, "w")
            f.write("Hello world!")
            f.close()
            data.setUrls([QUrl.fromLocalFile(path)])
            drag.setMimeData(data)
            drag.exec_()
Ejemplo n.º 45
0
    def mimeData(self, indexes):
        mime_data = QMimeData()
        encoded_data = QByteArray()

        stream = QDataStream(encoded_data, QIODevice.WriteOnly)

        ref = self.get_current_branch() or self.get_remote_ref()
        for index in indexes:
            if index.isValid() and index.column() == 0:
                text = QString(ref.name + " ")
                text += QString(str(index.row()))
                stream.writeQString(text)

        mime_data.setData("application/vnd.text.list", encoded_data)
        return mime_data
Ejemplo n.º 46
0
 def startDrag(self, dragData):
     """
     Starts a new drag with the inputed data.
     
     :param      dragData | <dict>
     """
     # create the mime data
     mimeData = QMimeData()
     for key, value in dragData.items():
         mimeData.setData('application/x-%s' % key, wrapVariant(value))
     
     # create the drag instance
     drag = QDrag(self.scene().chart())
     drag.setMimeData(mimeData)
     drag.exec_()
     
Ejemplo n.º 47
0
    def mimeData(self, indexes):
        mimeData = QMimeData()
        encodedData = QByteArray()

        stream = QDataStream(encodedData, QIODevice.WriteOnly)

        for index in indexes:
            if not index.isValid():
                continue
            if not isinstance(index.internalPointer(), TableItem):
                continue
            table = self.getItem(index)
            stream.writeQString(table.mimeUri())

        mimeData.setData(self.QGIS_URI_MIME, encodedData)
        return mimeData
Ejemplo n.º 48
0
    def mimeData(self, indexes):
        mimeData = QMimeData()
        encodedData = QByteArray()

        stream = QDataStream(encodedData, QIODevice.WriteOnly)

        for index in indexes:
            if not index.isValid():
                continue
            if not isinstance(index.internalPointer(), TableItem):
                continue
            table = self.getItem(index)
            stream.writeQString(table.mimeUri())

        mimeData.setData(self.QGIS_URI_MIME, encodedData)
        return mimeData
Ejemplo n.º 49
0
    def mouseMoveEvent(self, event):
        if event.buttons() != Qt.LeftButton:
            return

        mimeData = QMimeData()
        if self.pos == -1:
            return
        mimeData.setData("splitter/fragment", QByteArray.number(self.pos))
        drag = QDrag(self)
        drag.setMimeData(mimeData)
        drag.setHotSpot(event.pos() - self.rect().topLeft())

        dropAction = drag.start(Qt.MoveAction)

        if dropAction == Qt.MoveAction:
            self.close()
Ejemplo n.º 50
0
 def keyPressEvent(self, event):
     if(event.key() == Qt.Key_C and event.modifiers() & Qt.ControlModifier):
         indexes = self.selectionModel().selectedIndexes()
         previous = indexes[0]
         values = QByteArray()
         for index in sorted(indexes):
             if index.row() != previous.row():
                 values += '\n'
             elif index != indexes[0]:
                 values += '\t'
             values += self.itemFromIndex(index).text()
             previous = index
         mimeData = QMimeData()
         mimeData.setData("text/plain", values)
         QApplication.clipboard().setMimeData(mimeData)
     else:
         return QTableWidget.keyPressEvent(self, event)
Ejemplo n.º 51
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", "tab-reordering")
         mimeData.setData("tabbar-id", str(id(self)))
         drag.setMimeData(mimeData)
         drag.exec_()
     E4WheelTabBar.mouseMoveEvent(self, event)
Ejemplo n.º 52
0
 def mouseMoveEvent(self, event):
     if not event.buttons() & Qt.LeftButton: return
     if (event.pos() - self.drag_pos).manhattanLength() < 100: return
     
     event.accept()
     drag = QDrag(self)
     mimedata = QMimeData()
     mimedata.setData("action", "window_drag")
     drag.setMimeData(mimedata)
     widget = self.current_widget
     pixmap = QPixmap.grabWidget(widget).scaledToWidth(300, Qt.SmoothTransformation)
     dragpixmap = DragPixmap(pixmap, 0.50, self)
     dragpixmap.move(QCursor().pos())
     dragpixmap.show()
     drag.exec_()
     dragpixmap.deleteLater()
     self.widgetDnD.emit(self.current_widget, drag.target())
     return
Ejemplo n.º 53
0
 def keyPressEvent(self, event):
     if (event.key() == Qt.Key_C
             and event.modifiers() & Qt.ControlModifier):
         indexes = self.selectionModel().selectedIndexes()
         previous = indexes[0]
         values = QByteArray()
         for index in sorted(indexes):
             if index.row() != previous.row():
                 values += '\n'
             elif index != indexes[0]:
                 values += '\t'
             values += self.itemFromIndex(index).text()
             previous = index
         mimeData = QMimeData()
         mimeData.setData("text/plain", values)
         QApplication.clipboard().setMimeData(mimeData)
     else:
         return QTableWidget.keyPressEvent(self, event)
Ejemplo n.º 54
0
    def test_dropping_the_data_emits_the_signal(self):
        rw = RecipesWidget()
        self.assertEqual(rw.supportedDropActions(),
                         Qt.CopyAction | Qt.MoveAction)
        self.assertIn('application/vnd.re-eat.meal_recipe', rw.mimeTypes())
        assert rw.viewport().acceptDrops()

        rw.recipeRemoved = DummySignal()

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

        rw.dropMimeData(0, mimeData, Qt.CopyAction)
        self.assertListEqual(rw.recipeRemoved.received,
                             [(1, datetime.date.today(), 2)])
Ejemplo n.º 55
0
    def copyItem(self):
        """
        Copy the selected row to the clipboard
        """
        indexes = self.selectedIndexes()
        if not indexes:
            return
        # retrieve data from model      
        rowData = []
        for id in self.selectionModel().selectedRows():
            rowData.append(self.model.getData()[id.row()])

        # pickle data
        mimeData = QMimeData()
        if sys.version_info > (3,):
            mimeData.setData( self.__mime__, pickle.dumps(rowData))
        else:
            mimeData.setData( QString(self.__mime__) , pickle.dumps(rowData))
        # copy to clipboard
        QApplication.clipboard().setMimeData(mimeData)
Ejemplo n.º 56
0
    def startDrag(self, dropAction):
        """
        Start drag
        """
        if self.itemCurrent.type() == QTreeWidgetItem.UserType+0: # file
            pathFile = self.itemCurrent.getPath(withFileName = False)
            if len(pathFile) > 1 :
                meta = {}
                meta['repotype'] = UCI.REPO_TESTS_LOCAL
                meta['pathfile'] = pathFile
                meta['filename'] = self.itemCurrent.fileName
                meta['ext'] = self.itemCurrent.fileExtension

                # create mime data object
                mime = QMimeData()
                mime.setData('application/x-%s-repo-openfile' % Settings.instance().readValue( key = 'Common/acronym' ).lower() , pickle.dumps(meta) )
                # start drag 
                drag = QDrag(self)
                drag.setMimeData(mime)    
                
                drag.exec_(Qt.CopyAction)
Ejemplo n.º 57
0
 def mouseMoveEvent(self, event):
     """Override Qt method"""
     if event.buttons() == Qt.MouseButtons(Qt.LeftButton) and \
        (event.pos() - self.__drag_start_pos).manhattanLength() > \
             QApplication.startDragDistance():
         drag = QDrag(self)
         mimeData = QMimeData()
         mimeData.setData("parent-id", QByteArray.number(id(self.ancestor)))
         mimeData.setData("tabwidget-id",
                          QByteArray.number(id(self.parentWidget())))
         mimeData.setData("tabbar-id", QByteArray.number(id(self)))
         mimeData.setData(
             "source-index",
             QByteArray.number(self.tabAt(self.__drag_start_pos)))
         drag.setMimeData(mimeData)
         drag.exec_()
     QTabBar.mouseMoveEvent(self, event)
Ejemplo n.º 58
0
 def mouseMoveEvent(self, event):
     """Override Qt method"""
     if event.buttons() == Qt.MouseButtons(Qt.LeftButton) and \
        (event.pos() - self.__drag_start_pos).manhattanLength() > \
             QApplication.startDragDistance():
         drag = QDrag(self)
         mimeData = QMimeData()
         # Converting id's to long to avoid an OverflowError with PySide
         ancestor_id = long(id(self.ancestor))
         parent_widget_id = long(id(self.parentWidget()))
         self_id = long(id(self))
         mimeData.setData("parent-id", QByteArray.number(ancestor_id))
         mimeData.setData("tabwidget-id",
                          QByteArray.number(parent_widget_id))
         mimeData.setData("tabbar-id", QByteArray.number(self_id))
         mimeData.setData("source-index", 
                      QByteArray.number(self.tabAt(self.__drag_start_pos)))
         drag.setMimeData(mimeData)
         drag.exec_()
     QTabBar.mouseMoveEvent(self, event)