Exemplo n.º 1
0
    def testVoidPtr(self):
        # Creating a VoidPtr object requires an address of
        # a C++ object, a wrapped Shiboken Object type,
        # an object implementing the Python Buffer interface,
        # or another VoidPtr object.

        # Original content
        b = b"Hello world"
        ba = QByteArray(b)
        vp = VoidPtr(ba, ba.size())
        self.assertIsInstance(vp, shiboken.VoidPtr)

        # Create QByteArray from voidptr byte interpretation
        nba = QByteArray.fromRawData(vp.toBytes())
        # Compare original bytes to toBytes()
        self.assertTrue(b, vp.toBytes())
        # Compare original with new QByteArray data
        self.assertTrue(b, nba.data())
        # Convert original and new to str
        self.assertTrue(str(b), str(nba))

        # Modify nba through a memoryview of vp
        mv = memoryview(vp)
        self.assertFalse(mv.readonly)
        mv[6:11] = b'void*'
        self.assertEqual(str(ba), str(b"Hello void*"))
Exemplo n.º 2
0
 def get_thumbNail(self, f, thumbname='thumbnailimage'):
     """
     Extract the (jpg) thumbnail from an image or sidecar file
     and returns it as a QImage.
     @param f: path to image or sidecar file
     @type f: str
     @param thumbname: tag name
     @type thumbname: str
     @return: thumbnail
     @rtype: QImage
     """
     thumbnail = self.readBinaryData(f, tagname=thumbname)
     return QImage.fromData(QByteArray.fromRawData(thumbnail), 'JPG')
Exemplo n.º 3
0
    def retrieveData(self, mime_type, var_type):
        logger.debug("retrieveData(%r, %r)", mime_type, var_type)
        if mime_type not in self.formats():
            logger.debug("unsupported type requested")
            return None

        if mime_type == "application/x-sampledrawer-lib-items":
            result = []
            for item in self._items:
                result.append({
                    "name": item.name,
                    "md5": item.md5,
                    "path": item.path
                })
            return json.dumps(result)

        paths = self._paths
        if paths is None:
            paths = []
            for item in self._items:
                path = self._app.library.get_pretty_path(item, timeout=60)
                paths.append(path)
            self._paths = paths

        if mime_type == "text/plain":
            return " ".join(paths)
        elif mime_type == "text/uri-list":
            uris = []
            for path in paths:
                uri = urlunsplit(("file", "localhost", path, None, None))
                uris.append(uri.encode("utf-8"))
            # text/uri-list is defined to use CR LF line endings
            return QByteArray.fromRawData(b"\r\n".join(uris) + b"\r\n")
        else:
            path = paths[0]
            with open(path, "rb") as data_f:
                data = data_f.read()
            return QByteArray.fromRawData(data)
Exemplo n.º 4
0
 def push_data(self):
     logger.debug("push_data() start")
     if not self.output_dev:
         logger.debug("no output device")
         return
     frame_size = self.output.format().bytesPerFrame()
     while True:
         logger.debug("push_data...")
         buf = self.current_buffer
         if buf is not None:
             length = buf.byteCount()
         else:
             length = 0
         if buf is None or self.current_buffer_pos >= length:
             if not self.decoder.bufferAvailable():
                 logger.debug("No buffer available")
                 break
             buf = self.decoder.read()
             logger.debug("New buffer acquired: %r", buf)
             length = buf.byteCount()
             self.current_buffer = buf
             self.current_buffer_pos = 0
         data = buf.constData()
         logger.debug("data: 0x%016X, length: %i", int(data), length)
         data_ptr = ffi.cast("void *", int(data))
         data_bytes = ffi.buffer(data_ptr, length)[self.current_buffer_pos:]
         to_write = len(data_bytes)
         data_arr = QByteArray.fromRawData(data_bytes)
         bytes_written = self.output_dev.write(data_arr)
         if bytes_written > frame_size:
             self.last_frame = data_arr[bytes_written -
                                        frame_size:bytes_written].data()
             logger.debug("Last frame: %r", self.last_frame)
         self.current_buffer_pos += bytes_written
         self.bytes_written = bytes_written
         logger.debug("%i of %i bytes written, pos: %i", bytes_written,
                      to_write, self.current_buffer_pos)
         if self.current_buffer_pos >= length:
             self.current_buffer = None
         if bytes_written < to_write:
             break
Exemplo n.º 5
0
 def clientSend(self, data):
     bytesArray = bytes(data, 'utf-8')
     message = QByteArray.fromRawData(bytesArray)
     self.tcpClientSocket.write(message)
     self.tcpClientSocket.flush()
     return
Exemplo n.º 6
0
 def testIt(self):
     data = py3k.b("foobar")
     a = QByteArray.fromRawData(data)
     self.assertEqual(type(a), QByteArray)
     self.assertEqual(a.data(), data)
Exemplo n.º 7
0
 def testIt(self):
     data = py3k.b("foobar")
     a = QByteArray.fromRawData(data)
     self.assertEqual(type(a), QByteArray)
     self.assertEqual(a.data(), data)