Esempio n. 1
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)
        
Esempio n. 2
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)
Esempio n. 3
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)
Esempio n. 4
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)
Esempio 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
Esempio n. 6
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
Esempio n. 7
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()
Esempio n. 8
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_()
Esempio n. 9
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)
Esempio n. 10
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
Esempio n. 11
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_()
Esempio n. 12
0
	def mousePressEvent( self, event ):
		# handle an internal move
		from PyQt4.QtCore import Qt

		# start a drag event
		if ( event.button() == Qt.LeftButton and self.dragDropRect().contains( event.pos() ) ):
			from PyQt4.QtCore import QMimeData
			from PyQt4.QtGui import QDrag, QPixmap

			# 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()
Esempio n. 13
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)
Esempio n. 14
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)
Esempio n. 15
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_()
Esempio n. 16
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)
Esempio n. 17
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
Esempio n. 18
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)
Esempio n. 19
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)
Esempio n. 20
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_()
Esempio 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
Esempio n. 22
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)
Esempio n. 23
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
Esempio n. 24
0
 def _copy(self, index):
     doc = QTextDocument()
     doc.setHtml(index.data(Qt.DisplayRole).toString())
     clipboard = QApplication.clipboard()
     richTextData = QMimeData()
     richTextData.setHtml(index.data(Qt.DisplayRole).toString())
     richTextData.setText(doc.toPlainText())
     clipboard.setMimeData(richTextData)
Esempio n. 25
0
    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
Esempio n. 26
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
Esempio n. 27
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
Esempio n. 28
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
Esempio n. 29
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
Esempio n. 30
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
Esempio n. 31
0
 def __init__(self, tile=None, meld=None):
     assert bool(tile) != bool(meld)
     QMimeData.__init__(self)
     self.tile = tile
     self.meld = meld
     if self.tile:
         self.setText(tile.element)
     else:
         self.setText(meld.joined)
Esempio n. 32
0
 def __init__(self, tile=None, meld=None):
     assert bool(tile) != bool(meld)
     QMimeData.__init__(self)
     self.tile = tile
     self.meld = meld
     if self.tile:
         self.setText(tile.element)
     else:
         self.setText(meld.joined)
Esempio n. 33
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
Esempio n. 34
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
Esempio n. 35
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)
 def startDrag(self,event):
     drag = QDrag(event.widget())
     mimedata = QMimeData()
     liste = []
     liste.append(QUrl( "veromix://source_output_index:"+str(int(self.index)) ))
     mimedata.setUrls(liste)
     drag.setMimeData(mimedata)
     #drag.setHotSpot(event.pos() - self.rect().topLeft())
     dropAction = drag.start(Qt.MoveAction)
Esempio n. 37
0
    def dropMimeData(self, mime: QMimeData, action, row: int, column: int,
                     parent: QModelIndex):
        LOG.debug('dropMimeData at row {}'.format(row))
        if action == Qt.IgnoreAction:
            return True

        if mime.hasFormat('text/uri-list'):
            if mime.hasUrls():
                LOG.debug('found urls in drop!')
                for qurl in mime.urls():
                    LOG.debug(qurl.path())
                    if qurl.isLocalFile():
                        path = qurl.path()
                        self.doc.open_file(
                            path)  # FIXME: replace with a signal
                return True
        elif mime.hasFormat(self._mimetype):
            # unpickle the presentation information and re-insert it
            # b = base64.decodebytes(mime.text())
            b = mime.data(self._mimetype)
            layer_set_len, insertion_info = pkl.loads(b)
            LOG.debug('dropped: {0!r:s}'.format(insertion_info))
            count = len(insertion_info)
            if row == -1:
                row = len(self.doc)  # append
                # FIXME: row=col=-1 implies drop-on-parent, which may mean replace or may mean append for composite layers
            # self.insertRows(row, count)
            # for i, presentation in enumerate(l):
            #     self.setData(self.index(row+i, 0), presentation)
            order = list(range(layer_set_len))
            inserted_row_numbers = []
            # inserted_presentations = []
            # delete_these_rows = []
            insertion_point = row
            uuids = []
            for old_row, presentation in reversed(sorted(insertion_info)):
                del order[old_row]
                if old_row < insertion_point:
                    insertion_point -= 1
                inserted_row_numbers.insert(0, old_row)
                uuids.append(presentation.uuid)
                # delete_these_rows.append(old_row if old_row<row else old_row+count)
                # inserted_presentations.append(presentation)
            order = order[:insertion_point] + inserted_row_numbers + order[
                insertion_point:]
            LOG.debug('new order after drop {0!r:s}'.format(order))
            self.select([])
            self.doc.reorder_by_indices(order)
            # self.doc.insert_layer_prez(row, inserted_presentations)
            # LOG.debug('after insertion removing rows {0!r:s}'.format(delete_these_rows))
            # for exrow in delete_these_rows:
            #     self.doc.remove_layer_prez(exrow)
            # self.doc.didReorderLayers.emit(order)  # FUTURE: not our business to be emitting on behalf of the document
            assert (count == len(insertion_info))
            return True
        return False
Esempio n. 38
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
Esempio n. 39
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 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
    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
Esempio n. 42
0
 def startDrag(self,event):
     drag = QDrag(event.widget())
     drag.setPixmap(self.mute.icon().pixmap(self.size().height(),self.size().height()))
     mimedata = QMimeData()
     liste = []
     liste.append(QUrl( "veromix://sink_index:"+str(int(self.index)) ))
     mimedata.setUrls(liste)
     drag.setMimeData(mimedata)
     #drag.setHotSpot(event.pos() - self.rect().topLeft())
     dropAction = drag.start(Qt.MoveAction)
Esempio n. 43
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)
Esempio n. 44
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
Esempio n. 45
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
    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
Esempio n. 47
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
Esempio n. 48
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)
Esempio n. 49
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)
Esempio n. 50
0
 def startDrag(self):
     image = self.image()
     data = QMimeData()
     data.setImageData(image)
     drag = QDrag(self)
     drag.setMimeData(data)
     if max(image.width(), image.height()) > 256:
         image = image.scaled(QSize(256, 256), Qt.KeepAspectRatio, Qt.SmoothTransformation)
     pixmap = QPixmap.fromImage(image)
     drag.setPixmap(pixmap)
     drag.setHotSpot(pixmap.rect().center())
     drag.exec_(Qt.CopyAction)
Esempio n. 51
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)
    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
Esempio n. 53
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
Esempio n. 54
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)])
Esempio n. 55
0
 def mouseMoveEvent(self, event):
     # Chequear que se esté presionando el botón derecho
     if not (event.buttons() and Qt.LeftButton):
         return
     # Verificar que sea una posición válida
     if ((event.pos() - self.drag_start_position).manhattanLength()
             < QApplication.startDragDistance()):
         return
     drag = QDrag(self)
     mime_data = QMimeData()
     # Establecer el contenido del widget como dato
     drag.setMimeData(mime_data)
     mime_data.setText(self.label2.text())
     # Ejecutar la acción
     self.drop_action = drag.exec_(Qt.CopyAction | Qt.MoveAction)
Esempio n. 56
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)