Esempio n. 1
0
def q_loads(src):
    def try_getqbytearray(v):
        if isinstance(v, QByteArray):
            return v.data()
        return v

    try:
        if isinstance(src, str):
            src = QByteArray(src.encode())
        elif isinstance(src, (list, tuple)):
            src = QByteArray(bytes(src))
        else:
            src = QByteArray(src)
        dst = QVariant()
        dll.loads(sip.unwrapinstance(dst), sip.unwrapinstance(src), False)
        # dll.dumps(shiboken2.getCppPointer(dst)[0], shiboken2.getCppPointer(src)[0])
        value = dst.value()
        if isinstance(value, str):
            value = value.encode()
        if isinstance(value, list):
            value = [try_getqbytearray(v) for v in value]
        return value
    except Exception as e:
        print('q_loads error:', e)
        raise ValueError
Esempio n. 2
0
def isAlive(qobj):
    """is the underlying C++ object still valid?
    This function is taken from the book
    "Rapid GUI Programming with Python and Qt"
    by Mark Summerfield."""
    if qobj is None:
        return False
    try:
        unwrapinstance(qobj)
    except RuntimeError:
        return False
    else:
        return True
Esempio n. 3
0
 def applyBlurEffect(self,
                     blurImage,
                     radius,
                     quality,
                     alphaOnly,
                     transposed=0,
                     qp=None):
     blurImage = ctypes.c_void_p(sip.unwrapinstance(blurImage))
     radius = ctypes.c_double(radius)
     quality = ctypes.c_bool(quality)
     alphaOnly = ctypes.c_bool(alphaOnly)
     transposed = ctypes.c_int(transposed)
     if qp:
         qp = ctypes.c_void_p(sip.unwrapinstance(qp))
     _qt_blurImage(qp, blurImage, radius, quality, alphaOnly, transposed)
Esempio n. 4
0
    def MolDraw2DFromQPainter(qpainter,
                              width=-1,
                              height=-1,
                              panelWidth=-1,
                              panelHeight=-1):
        from PyQt5.Qt import QPainter
        try:
            # Prefer the PyQt5-bundled sip
            from PyQt5 import sip
        except ImportError:
            # No bundled sip, try the standalone package
            import sip
        from rdkit.Chem.Draw import rdMolDraw2DQt

        if not isinstance(qpainter, QPainter):
            raise ValueError("argument must be a QPainter instance")
        if width <= 0:
            width = qpainter.viewport().width()
        if height <= 0:
            height = qpainter.viewport().height()
        ptr = sip.unwrapinstance(qpainter)
        d2d = rdMolDraw2DQt.MolDraw2DFromQPainter_(width, height, ptr,
                                                   panelWidth, panelWidth)
        # tie the lifetime of the QPainter to this MolDraw2D object
        d2d._qptr = qpainter
        return d2d
Esempio n. 5
0
def Main(argv):

    VISUS_REGISTER_NODE_CLASS("MyRenderNode", lambda: MyRenderNode())

    viewer = PyViewer()
    viewer.open("http://atlantis.sci.utah.edu/mod_visus?dataset=2kbit1")

    # example of adding a PyQt5 widget to C++ Qt
    mywidget = MyWidget()
    viewer.addDockWidget("MyWidget",
                         ToCppQtWidget(sip.unwrapinstance(mywidget)))

    # example of adding a python node to the dataflow
    root = viewer.getRoot()
    world_box = viewer.getWorldBox()

    pynode = MyRenderNode()
    pynode.glSetRenderQueue(999)
    pynode.setBounds(Position(world_box))
    viewer.addNode(root, pynode)

    # pynode will get the data from the query
    query_node = viewer.findNodeByUUID("volume")
    viewer.connectNodes(query_node, pynode)

    QApplication.exec()
    viewer = None

    print("All done")
    sys.exit(0)
Esempio n. 6
0
 def testfunc():
     m = Chem.MolFromSmiles('c1ccccc1O')
     Draw.PrepareMolForDrawing(m)
     qimg = QImage(250, 200, QImage.Format_RGB32)
     with QPainter(qimg) as qptr:
         p = sip.unwrapinstance(qptr)
         d2d = Draw.MolDraw2DFromQPainter_(250, 200, p, -1, -1)
     raise ValueError("expected")
Esempio n. 7
0
 def testSIPBasics(self):
     m = Chem.MolFromSmiles('c1ccccc1O')
     Draw.PrepareMolForDrawing(m)
     qimg = QImage(250, 200, QImage.Format_RGB32)
     with QPainter(qimg) as qptr:
         p = sip.unwrapinstance(qptr)
         d2d = Draw.MolDraw2DFromQPainter_(250, 200, p)
         d2d.DrawMolecule(m)
     qimg.save("testImageFromPyQt-1.png")
Esempio n. 8
0
 def doChange(self, value):
     t = time()
     img = self.srcImg.copy()  # 复制一份
     # For PyQt5
     self.dll.cold(sip.unwrapinstance(img), value)
     # For PySide2
     # self.dll.cold(shiboken2.getCppPointer(img)[0], value)
     self.imgLabel.setPixmap(
         QPixmap.fromImage(img).scaledToWidth(800, Qt.SmoothTransformation))
     print('use time:', time() - t)
Esempio n. 9
0
def listQThreads():
    """Prints Thread IDs (Qt's, not OS's) for all QThreads."""
    thr = findObj('[Tt]hread')
    thr = [t for t in thr if isinstance(t, QtCore.QThread)]
    try:
        from PyQt5 import sip
    except ImportError:
        import sip
    for t in thr:
        print("--> ", t)
        print("     Qt ID: 0x%x" % sip.unwrapinstance(t))
Esempio n. 10
0
def GetFullName(qObj):
    """
    get Qt object full name
    :param qObj:
    :return:
    """
    pointer = sip.unwrapinstance(qObj)
    if type(pointer) == long:
        windowString = mui.MQtUtil.fullName(pointer)
        if windowString:
            return windowString
        else:
            return ''
    else:
        return GetQtWidget(qObj.objectName(), LongName=True)[-1]
Esempio n. 11
0
def q_dumps(value, bits=32):
    def en_byte(v):
        if isinstance(v, str):
            return QByteArray(v.encode())
        elif isinstance(v, (bytes, bytearray)):
            return QByteArray(v)
        return v

    try:
        if isinstance(value, str):
            src = QVariant(QByteArray(value.encode()))
        elif isinstance(value, (bytes, bytearray)):
            src = QVariant(QByteArray(value))
        elif isinstance(value, (tuple, list)):
            src = QVariant([QVariant(en_byte(v)) for v in value])
        else:
            src = QVariant(value)
        dst = QByteArray()
        dll.dumps(sip.unwrapinstance(dst), sip.unwrapinstance(src), bits)
        # dll.dumps(shiboken2.getCppPointer(dst)[0], shiboken2.getCppPointer(src)[0])
        return dst.data()
    except Exception as e:
        print('q_dumps error:', e)
        raise ValueError
Esempio n. 12
0
 def MolDraw2DFromQPainter(qpainter,
                           width=-1,
                           height=-1,
                           panelWidth=-1,
                           panelHeight=-1):
     if not isinstance(qpainter, QPainter):
         raise ValueError("argument must be a QPainter instance")
     if width <= 0:
         width = qpainter.viewport().width()
     if height <= 0:
         height = qpainter.viewport().height()
     ptr = sip.unwrapinstance(qpainter)
     d2d = rdMolDraw2D.MolDraw2DFromQPainter_(width, height, ptr,
                                              panelWidth, panelWidth)
     # tie the lifetime of the QPainter to this MolDraw2D object
     d2d._qptr = qpainter
     return d2d
Esempio n. 13
0
def unwrapInstance(qObj):
    if USE_PYQT_MODULE:
        return sip.unwrapinstance(qObj)
    else:
        return shiboken.unwrapInstance(qObj)