Ejemplo n.º 1
0
    def paint(self, painter, option=None, widget=None):
        if self.validateImage():
            wasSmoothPixmapTransform = painter.testRenderHint(QtGui.QPainter.SmoothPixmapTransform)
            painter.setRenderHint(QtGui.QPainter.SmoothPixmapTransform)

            if Colors.noRescale:
                # Let the painter scale the image for us.  This may degrade
                # both quality and performance.
                if self.sharedImage.image is not None:
                    painter.drawImage(self.pos(), self.sharedImage.image)
                else:
                    painter.drawPixmap(self.pos(), self.sharedImage.pixmap)
            else:
                m = painter.worldMatrix()
                painter.setWorldMatrix(QtGui.QMatrix())

                x = m.dx()
                y = m.dy()
                if self.noSubPixeling:
                    x = QtCore.qRound(x)
                    y = QtCore.qRound(y)

                if self.sharedImage.image is not None:
                    painter.drawImage(QtCore.QPointF(x, y),
                            self.sharedImage.image)
                else:
                    painter.drawPixmap(QtCore.QPointF(x, y),
                            self.sharedImage.pixmap)

            if not wasSmoothPixmapTransform:
                painter.setRenderHint(QtGui.QPainter.SmoothPixmapTransform,
                        False)
Ejemplo n.º 2
0
    def setRange(self, minValue, maxValue):
        if minValue < 0 or maxValue > 99 or minValue > maxValue:
            QtCore.qWarning("LCDRange::setRange(%d, %d)\n"
                    "\tRange must be 0..99\n"
                    "\tand minValue must not be greater than maxValue" % (minValue, maxValue))
            return

        self.slider.setRange(minValue, maxValue)
Ejemplo n.º 3
0
    def drawBackgroundToPixmap(self):
        r = self.scene.sceneRect()
        self.background = QtGui.QPixmap(QtCore.qRound(r.width()),
                QtCore.qRound(r.height()))
        self.background.fill(QtCore.Qt.black)
        painter = QtGui.QPainter(self.background)

        bg = QtGui.QImage(':/images/demobg.png')
        painter.drawImage(0, 0, bg)
Ejemplo n.º 4
0
    def __init__(self):
        super(ColorItem, self).__init__()

        self.color = QtGui.QColor(QtCore.qrand() % 256, QtCore.qrand() % 256,
                QtCore.qrand() % 256)

        self.setToolTip(
            "QColor(%d, %d, %d)\nClick and drag this color onto the robot!" %
              (self.color.red(), self.color.green(), self.color.blue())
        )
        self.setCursor(QtCore.Qt.OpenHandCursor)
Ejemplo n.º 5
0
def _pyside():
    from PySide import (
        QtGui,
        QtCore,
        QtNetwork,
        QtXml,
        QtHelp,
        QtUiTools,
        __version__
    )

    QtWidgets = QtGui

    Qt.__binding__ = "PySide"
    Qt.__qt_version__ = QtCore.qVersion()
    Qt.__binding_version__ = __version__
    QtCompat.load_ui = lambda fname: QtUiTools.QUiLoader().load(fname)
    QtCompat.setSectionResizeMode = QtGui.QHeaderView.setResizeMode
    QtCompat.translate = (
        lambda context, sourceText, disambiguation, n:
        QtCore.QCoreApplication.translate(context,
                                          sourceText,
                                          disambiguation,
                                          QtCore.QCoreApplication.CodecForTr,
                                          n))
    return QtCore, QtGui, QtWidgets, QtNetwork, QtXml, QtHelp
Ejemplo n.º 6
0
    def mouseMoveEvent(self, event):
        if QtCore.QLineF(QtCore.QPointF(event.screenPos()), QtCore.QPointF(event.buttonDownScreenPos(QtCore.Qt.LeftButton))).length() < QtWidgets.QApplication.startDragDistance():
            return

        drag = QtGui.QDrag(event.widget())
        mime = QtCore.QMimeData()
        drag.setMimeData(mime)

        ColorItem.n += 1
        if ColorItem.n > 2 and QtCore.qrand() % 3 == 0:
            image = QtGui.QImage(':/images/head.png')
            mime.setImageData(image)
            drag.setPixmap(QtGui.QPixmap.fromImage(image).scaled(30,40))
            drag.setHotSpot(QtCore.QPoint(15, 30))
        else:
            mime.setColorData(self.color)
            mime.setText("#%02x%02x%02x" % (self.color.red(), self.color.green(), self.color.blue()))

            pixmap = QtGui.QPixmap(34, 34)
            pixmap.fill(QtCore.Qt.white)

            painter = QtGui.QPainter(pixmap)
            painter.translate(15, 15)
            painter.setRenderHint(QtGui.QPainter.Antialiasing)
            self.paint(painter, None, None)
            painter.end()

            pixmap.setMask(pixmap.createHeuristicMask())

            drag.setPixmap(pixmap)
            drag.setHotSpot(QtCore.QPoint(15, 20))

        drag.exec_()
        self.setCursor(QtCore.Qt.OpenHandCursor)
Ejemplo n.º 7
0
    def shotRect(self):
        gravity = 4.0

        time = self.timerCount / 40.0
        velocity = self.shootForce
        radians = self.shootAngle * 3.14159265 / 180

        velx = velocity * math.cos(radians)
        vely = velocity * math.sin(radians)
        x0 = (CannonField.barrelRect.right() + 5) * math.cos(radians)
        y0 = (CannonField.barrelRect.right() + 5) * math.sin(radians)
        x = x0 + velx * time
        y = y0 + vely * time - 0.5 * gravity * time * time

        result = QtCore.QRect(0, 0, 6, 6)
        result.moveCenter(QtCore.QPoint(QtCore.qRound(x), self.height() - 1 - QtCore.qRound(y)))
        return result
    def __init__(self):
        super(Mouse, self).__init__()

        self.angle = 0.0
        self.speed = 0.0
        self.mouseEyeDirection = 0.0
        self.color = QtGui.QColor(QtCore.qrand() % 256, QtCore.qrand() % 256,
                QtCore.qrand() % 256)

        self.rotate(QtCore.qrand() % (360 * 16))

        # In the C++ version of this example, this class is also derived from
        # QObject in order to receive timer events.  PyQt does not support
        # deriving from more than one wrapped class so we just create an
        # explicit timer instead.
        self.timer = QtCore.QTimer()
        self.timer.timeout.connect(self.timerEvent)
        self.timer.start(1000 / 33)
Ejemplo n.º 9
0
 def mouseMoveEvent(self, event):
     if not self.barrelPressed:
         return
     pos = event.pos()
     if pos.x() <= 0:
         pos.setX(1)
     if pos.y() >= self.height():
         pos.setY(self.height() - 1)
     rad = math.atan((float(self.rect().bottom()) - pos.y()) / pos.x())
     self.setAngle(QtCore.qRound(rad * 180 / 3.14159265))
Ejemplo n.º 10
0
    def keyPressEvent(self, event):
        key = event.key()

        if key == QtCore.Qt.Key_Up:
            self.centerNode.moveBy(0, -20)
        elif key == QtCore.Qt.Key_Down:
            self.centerNode.moveBy(0, 20)
        elif key == QtCore.Qt.Key_Left:
            self.centerNode.moveBy(-20, 0)
        elif key == QtCore.Qt.Key_Right:
            self.centerNode.moveBy(20, 0)
        elif key == QtCore.Qt.Key_Plus:
            self.scaleView(1.2)
        elif key == QtCore.Qt.Key_Minus:
            self.scaleView(1 / 1.2)
        elif key == QtCore.Qt.Key_Space or key == QtCore.Qt.Key_Enter:
            for item in self.scene().items():
                if isinstance(item, Node):
                    item.setPos(-150 + QtCore.qrand() % 300, -150 + QtCore.qrand() % 300)
        else:
            QtGui.QGraphicsView.keyPressEvent(self, event)
Ejemplo n.º 11
0
    def calculateForces(self):
        if not self.scene() or self.scene().mouseGrabberItem() is self:
            self.newPos = self.pos()
            return

        # Sum up all forces pushing this item away.
        xvel = 0.0
        yvel = 0.0
        for item in self.scene().items():
            if not isinstance(item, Node):
                continue

            line = QtCore.QLineF(self.mapFromItem(item, 0, 0), QtCore.QPointF(0, 0))
            dx = line.dx()
            dy = line.dy()
            l = 2.0 * (dx * dx + dy * dy)
            if l > 0:
                xvel += (dx * 150.0) / l
                yvel += (dy * 150.0) / l

        # Now subtract all forces pulling items together.
        weight = (len(self.edgeList) + 1) * 10.0
        for edge in self.edgeList:
            if edge().sourceNode() is self:
                pos = self.mapFromItem(edge().destNode(), 0, 0)
            else:
                pos = self.mapFromItem(edge().sourceNode(), 0, 0)
            xvel += pos.x() / weight
            yvel += pos.y() / weight

        if QtCore.qAbs(xvel) < 0.1 and QtCore.qAbs(yvel) < 0.1:
            xvel = yvel = 0.0

        sceneRect = self.scene().sceneRect()
        self.newPos = self.pos() + QtCore.QPointF(xvel, yvel)
        self.newPos.setX(min(max(self.newPos.x(), sceneRect.left() + 10), sceneRect.right() - 10))
        self.newPos.setY(min(max(self.newPos.y(), sceneRect.top() + 10), sceneRect.bottom() - 10))
    def timerEvent(self):
        # Don't move too far away.
        lineToCenter = QtCore.QLineF(QtCore.QPointF(0, 0), self.mapFromScene(0, 0))
        if lineToCenter.length() > 150:
            angleToCenter = math.acos(lineToCenter.dx() / lineToCenter.length())
            if lineToCenter.dy() < 0:
                angleToCenter = Mouse.TwoPi - angleToCenter;
            angleToCenter = Mouse.normalizeAngle((Mouse.Pi - angleToCenter) + Mouse.Pi / 2)

            if angleToCenter < Mouse.Pi and angleToCenter > Mouse.Pi / 4:
                # Rotate left.
                self.angle += [-0.25, 0.25][self.angle < -Mouse.Pi / 2]
            elif angleToCenter >= Mouse.Pi and angleToCenter < (Mouse.Pi + Mouse.Pi / 2 + Mouse.Pi / 4):
                # Rotate right.
                self.angle += [-0.25, 0.25][self.angle < Mouse.Pi / 2]
        elif math.sin(self.angle) < 0:
            self.angle += 0.25
        elif math.sin(self.angle) > 0:
            self.angle -= 0.25

        # Try not to crash with any other mice.
        dangerMice = self.scene().items(QtGui.QPolygonF([self.mapToScene(0, 0),
                                                         self.mapToScene(-30, -50),
                                                         self.mapToScene(30, -50)]))

        for item in dangerMice:
            if item is self:
                continue
        
            lineToMouse = QtCore.QLineF(QtCore.QPointF(0, 0), self.mapFromItem(item, 0, 0))
            angleToMouse = math.acos(lineToMouse.dx() / lineToMouse.length())
            if lineToMouse.dy() < 0:
                angleToMouse = Mouse.TwoPi - angleToMouse
            angleToMouse = Mouse.normalizeAngle((Mouse.Pi - angleToMouse) + Mouse.Pi / 2)

            if angleToMouse >= 0 and angleToMouse < Mouse.Pi / 2:
                # Rotate right.
                self.angle += 0.5
            elif angleToMouse <= Mouse.TwoPi and angleToMouse > (Mouse.TwoPi - Mouse.Pi / 2):
                # Rotate left.
                self.angle -= 0.5

        # Add some random movement.
        if len(dangerMice) > 1 and (QtCore.qrand() % 10) == 0:
            if QtCore.qrand() % 1:
                self.angle += (QtCore.qrand() % 100) / 500.0
            else:
                self.angle -= (QtCore.qrand() % 100) / 500.0

        self.speed += (-50 + QtCore.qrand() % 100) / 100.0

        dx = math.sin(self.angle) * 10
        self.mouseEyeDirection = [dx / 5, 0.0][QtCore.qAbs(dx / 5) < 1]

        self.rotate(dx)
        self.setPos(self.mapToParent(0, -(3 + math.sin(self.speed) * 3)))
Ejemplo n.º 13
0
def _pyside2():
    from PySide2 import (
        QtWidgets,
        QtGui,
        QtCore,
        QtNetwork,
        QtXml,
        QtHelp,
        QtUiTools,
        __version__
    )

    Qt.__binding__ = "PySide2"
    Qt.__qt_version__ = QtCore.qVersion()
    Qt.__binding_version__ = __version__
    QtCompat.load_ui = lambda fname: QtUiTools.QUiLoader().load(fname)
    QtCompat.setSectionResizeMode = QtWidgets.QHeaderView.setSectionResizeMode
    QtCompat.translate = QtCore.QCoreApplication.translate

    return QtCore, QtGui, QtWidgets, QtNetwork, QtXml, QtHelp
Ejemplo n.º 14
0
def launch_ffmpeg_command(input,
                          preset,
                          server=None,
                          job=None,
                          root=None,
                          asset=None,
                          task_folder=None):
    """Calls FFMpeg to process an input using the given preset.

    """
    w = common_ui.MessageBox(u'Converting...', u'Should take a few minutes...')
    try:
        FFMPEG_BIN = settings.local_settings.value(u'preferences/ffmpeg_path')
        if not FFMPEG_BIN:
            raise RuntimeError(
                u'The path to FFMpeg has not yet been set.\nYou can set the path in the General > External Applications section.'
            )
        if not QtCore.QFileInfo(FFMPEG_BIN):
            raise RuntimeError('FFMpeg was not found!')

        server = server if server else settings.ACTIVE['server']
        job = job if job else settings.ACTIVE['job']
        root = root if root else settings.ACTIVE['root']
        asset = asset if asset else settings.ACTIVE['asset']
        task_folder = task_folder if task_folder else settings.ACTIVE[
            'task_folder']

        input = input.replace(u'\\', '/').lower()

        # We want to get the first item  of any sequence
        if common.is_collapsed(input):
            input = common.get_sequence_startpath(input)
        else:
            seq = common.get_sequence(input)
            if not seq:
                raise RuntimeError(u'{} is not a sequence.'.format(input))
            _dir = QtCore.QFileInfo(input).dir().path()
            if not QtCore.QFileInfo(_dir):
                raise RuntimeError(u'{} does not exists.'.format(_dir))

            f = []
            for entry in _scandir.scandir(_dir):
                _path = entry.path.replace(u'\\', u'/').lower()
                if not seq.group(1) in _path:
                    continue
                _seq = common.get_sequence(_path)
                if not _seq:
                    continue
                f.append(int(_seq.group(2)))
            if not f:
                raise RuntimeError(
                    u'Could not find the first frame of the sequence.')

        startframe = min(f)
        endframe = max(f)

        # Framerate
        db = bookmark_db.get_db(server, job, root)
        framerate = db.value(1, 'framerate', table=u'properties')
        if not framerate:
            framerate = 24

        input = seq.group(1) + '%0{}d'.format(len(
            seq.group(2))) + seq.group(3) + '.' + seq.group(4)
        output = seq.group(1).rstrip(u'.').rstrip(u'_').rstrip() + u'.mp4'

        # Add informative label
        label = u''
        if job:
            label += job
            label += u'_'
        if asset:
            label += asset
            label += u'_'
        if task_folder:
            label += task_folder
            label += u' \\| '
        vseq = common.get_sequence(output)
        if vseq:
            label += 'v' + vseq.group(2) + u' '
            label += datetime.now().strftime('(%a %d/%m/%Y) \\| ')
        label += u'{}-{} \\| '.format(startframe, endframe)

        w.open()
        QtWidgets.QApplication.instance().processEvents()

        cmd = preset.format(
            BIN=FFMPEG_BIN,
            FRAMERATE=framerate,
            STARTFRAME=startframe,
            INPUT=os.path.normpath(input),
            OUTPUT=os.path.normpath(output),
            FONT=get_font_path(),
            LABEL=label,
        )
        subprocess.check_output(cmd, shell=True)

        w.close()
        log.success('Successfully saved {}'.format(output))
        common_ui.OkBox(u'Finished converting',
                        'Saved to {}'.format(output)).open()
    except Exception as e:
        w.close()
        log.error(u'Conversion failed.')
        common_ui.ErrorBox(u'Conversion failed', unicode(e)).open()
Ejemplo n.º 15
0
def qCleanupResources():
    QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name,
                                   qt_resource_data)
Ejemplo n.º 16
0
def mimeDataAdd(mimeData, format, objects):
    data = QtCore.QByteArray()
    stream = QtCore.QDataStream(data, QtCore.QIODevice.WriteOnly)
    text = QtCore.QString(":".join(objects))
    stream << text
    mimeData.setData(format, data)
Ejemplo n.º 17
0
EMAIL_SUBJECT_PREFIX = "cuemail: please check "
EMAIL_BODY_PREFIX = "Your PSTs request that you check "
EMAIL_BODY_SUFFIX = "\n\n"
EMAIL_DOMAIN = ""

GITHUB_CREATE_ISSUE_URL = 'https://github.com/AcademySoftwareFoundation/OpenCue/issues/new'
URL_USERGUIDE = "https://www.opencue.io/docs/"
URL_SUGGESTION = "%s?labels=enhancement&template=enhancement.md" % GITHUB_CREATE_ISSUE_URL
URL_BUG = "%s?labels=bug&template=bug_report.md" % GITHUB_CREATE_ISSUE_URL

if platform.system() == "Windows":
    DEFAULT_EDITOR = "notepad"
else:
    DEFAULT_EDITOR = "gview -R -m -M -U %s/gvimrc +" % DEFAULT_INI_PATH

EMPTY_INDEX = QtCore.QModelIndex()

QVARIANT_CENTER = QtCore.Qt.AlignCenter
QVARIANT_RIGHT = QtCore.Qt.AlignRight
QVARIANT_NULL = None
QVARIANT_BLACK = QtGui.QColor(QtCore.Qt.black)
QVARIANT_GREY = QtGui.QColor(QtCore.Qt.gray)

ALLOWED_TAGS = ("general", "desktop", "playblast", "util", "preprocess", "wan", "cuda", "splathw",
                'naiad', 'massive')

RGB_FRAME_STATE = {opencue.api.job_pb2.DEAD: QtGui.QColor(255, 0, 0),
                   opencue.api.job_pb2.DEPEND: QtGui.QColor(160, 32, 240),
                   opencue.api.job_pb2.EATEN: QtGui.QColor(150, 0, 0),
                   opencue.api.job_pb2.RUNNING:  QtGui.QColor(200, 200, 55),
                   opencue.api.job_pb2.SETUP: QtGui.QColor(160, 32, 240),
Ejemplo n.º 18
0
def getPassFor(host_param):
    for line in open(os.getenv("HOME") + '/.rcremote', 'r').readlines():
        s = line.strip().split('#', 1)
        if len(s) < 2:
            continue
        host = s[0]
        password = s[1]
        if host == host_param:
            return password
    raise Exception("can't find password for " + host_param +
                    " in ~/.rcremote  (format 'host#password')")


if __name__ == '__main__':
    app = QtCore.QCoreApplication(sys.argv)
    ic = Ice.initialize(sys.argv)
    status = 0
    mprx = {}

    if len(sys.argv) < 2:
        try:
            print('Reading password from ~/.rcremote...')
            password = getPassFor('localhost')
            print('ok.')
        except:
            print('Couldn\'t read password from file!')
            print('\nUsage: rcremoteserver <password>')
            sys.exit(-1)
    else:
        password = sys.argv[1]
Ejemplo n.º 19
0
 def _setSize(self, x, y):
     self.resize(x, y)
     self.setMinimumSize(QtCore.QSize(x, y))
     self.setMaximumSize(QtCore.QSize(x, y))
Ejemplo n.º 20
0
 def movePreviousRow(self, index):
     self.beginMoveRows(QtCore.QModelIndex(), index, index,
                        QtCore.QModelIndex(), index - 1)
     self.frames.insert(index - 1, self.frames.pop(index))
     self.endMoveRows()
Ejemplo n.º 21
0
class Signaller(QtCore.QObject):
    signal = QtCore.Signal(str)

    def __init__(self):
        super().__init__()
Ejemplo n.º 22
0
 def insertRow(self, index, pixmap=None):
     self.beginInsertRows(QtCore.QModelIndex(), index, index)
     self.frames.insert(index, Frame(pixmap))
     self.endInsertRows()
Ejemplo n.º 23
0
 def removeRow(self, index):
     self.beginRemoveRows(QtCore.QModelIndex(), self.rowCount(),
                          self.rowCount())
     print(index.row())
     self.frames.pop(index.row())
     self.endRemoveRows()
Ejemplo n.º 24
0
 def appendRow(self, pixmap=None):
     self.beginInsertRows(QtCore.QModelIndex(), self.rowCount(),
                          self.rowCount())
     self.frames.append(Frame(pixmap))
     self.endInsertRows()
Ejemplo n.º 25
0
 def rowCount(self, parent=QtCore.QModelIndex()):
     if parent.isValid(): return 0
     return len(self.frames)
Ejemplo n.º 26
0
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(691, 662)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.gridLayout_2 = QtWidgets.QGridLayout(self.centralwidget)
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.gridLayout_4 = QtWidgets.QGridLayout()
        self.gridLayout_4.setObjectName("gridLayout_4")
        self.pushButton_ask_and_send = QtWidgets.QPushButton(
            self.centralwidget)
        self.pushButton_ask_and_send.setObjectName("pushButton_ask_and_send")
        self.gridLayout_4.addWidget(self.pushButton_ask_and_send, 0, 0, 1, 1)
        self.pushButton_cancel_send = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_cancel_send.setCheckable(False)
        self.pushButton_cancel_send.setObjectName("pushButton_cancel_send")
        self.gridLayout_4.addWidget(self.pushButton_cancel_send, 0, 1, 1, 1)
        self.listWidget_emails = QtWidgets.QListWidget(self.centralwidget)
        self.listWidget_emails.setObjectName("listWidget_emails")
        self.gridLayout_4.addWidget(self.listWidget_emails, 1, 0, 1, 2)
        self.gridLayout_2.addLayout(self.gridLayout_4, 0, 0, 1, 1)
        self.gridLayout = QtWidgets.QGridLayout()
        self.gridLayout.setObjectName("gridLayout")
        self.pushButton_open_list_and_template = QtWidgets.QPushButton(
            self.centralwidget)
        self.pushButton_open_list_and_template.setObjectName(
            "pushButton_open_list_and_template")
        self.gridLayout.addWidget(self.pushButton_open_list_and_template, 0, 0,
                                  1, 1)
        self.textBrowser = QtWidgets.QTextBrowser(self.centralwidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(99)
        sizePolicy.setHeightForWidth(
            self.textBrowser.sizePolicy().hasHeightForWidth())
        self.textBrowser.setSizePolicy(sizePolicy)
        self.textBrowser.setObjectName("textBrowser")
        self.gridLayout.addWidget(self.textBrowser, 1, 0, 1, 1)
        self.listWidget_attachments = QtWidgets.QListWidget(self.centralwidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum,
                                           QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(1)
        sizePolicy.setHeightForWidth(
            self.listWidget_attachments.sizePolicy().hasHeightForWidth())
        self.listWidget_attachments.setSizePolicy(sizePolicy)
        self.listWidget_attachments.setMinimumSize(QtCore.QSize(0, 75))
        self.listWidget_attachments.setObjectName("listWidget_attachments")
        self.gridLayout.addWidget(self.listWidget_attachments, 2, 0, 1, 1)
        self.gridLayout_2.addLayout(self.gridLayout, 0, 1, 1, 1)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 691, 21))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
Ejemplo n.º 27
0
 def index(self, row, column, parent=QtCore.QModelIndex()):
     """Get an index at a certain location."""
     return self.createIndex(row, column, parent)
Ejemplo n.º 28
0
 def moveNextRow(self, index):
     self.beginMoveRows(QtCore.QModelIndex(), index, index,
                        QtCore.QModelIndex(), index + 2)
     self.frames.insert(index + 1, self.frames.pop(index))
     self.endMoveRows()
Ejemplo n.º 29
0
class AOVsToAddModel(BaseAOVTreeModel):
    """This class represents the available AOVs and AOVGroups that will be
    added.

    """

    inserted_items_signal = QtCore.Signal([AOVBaseNode])
    removed_items_signal = QtCore.Signal([AOVBaseNode])

    # -------------------------------------------------------------------------
    # METHODS
    # -------------------------------------------------------------------------

    def clear_all(self):
        """Clear the tree of any nodes."""
        parent = QtCore.QModelIndex()
        node = self.get_node(parent)

        # Remove each child.
        for row in reversed(range(len(node.children))):
            index = self.index(row, 0, parent)
            self.remove_index(index)

    def dropMimeData(self, data, action, row, column, parent):  # pylint: disable=unused-argument
        """Handle dropping mime data on the view."""
        if not utils.has_aov_mime_data(data):
            return False

        self.insert_data(utils.decode_aov_mime_data(data))

        return True

    def flags(self, index):
        """Tree node flags."""
        if not index.isValid():
            return None

        node = index.internalPointer()
        parent = node.parent

        if parent == self.root:
            return (QtCore.Qt.ItemIsEnabled
                    | QtCore.Qt.ItemIsSelectable
                    | QtCore.Qt.ItemIsDragEnabled)

        if isinstance(parent, AOVGroupNode):
            return QtCore.Qt.ItemIsEnabled

        return None

    def insert_data(self, data, position=None):
        """Insert data into the model."""
        parent = QtCore.QModelIndex()

        # Filter data to remove items that area already installed.
        data = [item for item in data if item not in self.items]

        parent_node = self.get_node(parent)

        if position is None:
            position = len(self.items)

        rows = len(data)

        if not rows:
            return False

        self.beginInsertRows(parent, position, position + rows - 1)

        added_items = []

        for item in data:
            if isinstance(item, AOV):
                child_node = AOVNode(item)

            elif isinstance(item, IntrinsicAOVGroup):
                child_node = IntrinsicAOVGroupNode(item)

            else:
                child_node = AOVGroupNode(item)

            parent_node.insert_child(position, child_node)
            added_items.append(child_node)

        self.inserted_items_signal.emit(added_items)

        self.endInsertRows()

        return True

    def remove_index(self, index):
        """Remove an index."""
        parent = QtCore.QModelIndex()
        parent_node = self.get_node(parent)

        row = index.row()

        self.beginRemoveRows(parent, row, row)

        self.removed_items_signal.emit([parent_node.children[row]])
        parent_node.remove_child(row)

        self.endRemoveRows()

        return True

    def supportedDropActions(self):
        """Supported drop actions."""
        # Add support for MoveAction since that's what Houdini thinks is
        # happening when you try and drop a node on a widget.
        return QtCore.Qt.CopyAction
Ejemplo n.º 30
0
 def check(x):
     self.assertEqual(QtCore.qAbs(x), abs(x))
Ejemplo n.º 31
0
class CueLineEdit(QtWidgets.QLineEdit):
    """Wrapper around QLineEdit that allows for changing text with up/down arrow keys."""

    focusChange = QtCore.Signal(bool)

    def __init__(self, defaultText=None, completerStrings=None, parent=None):
        super(CueLineEdit, self).__init__(parent=parent)
        self.setText(defaultText)
        self.index = -1
        self.setSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding,
                           QtWidgets.QSizePolicy.Fixed)
        self.completer = QtWidgets.QCompleter()
        try:
            self.completerModel = QtCore.QStringListModel()
        except AttributeError:
            self.completerModel = QtGui.QStringListModel()
        self.completerStrings = completerStrings or []
        self.setupCompleter()
        self.setStyleSheet(Style.LINE_EDIT)

    def focusInEvent(self, e):
        super(CueLineEdit, self).focusInEvent(e)
        self.focusChange.emit(True)

    def focusOutEvent(self, e):
        super(CueLineEdit, self).focusOutEvent(e)
        self.focusChange.emit(False)

    def setupCompleter(self):
        """Add completer items """
        self.completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive)
        self.completerModel.setStringList(self.completerStrings)
        self.completer.setModel(self.completerModel)
        self.setCompleter(self.completer)

    def keyPressEvent(self, event):
        """Add up and down arrow key events to built in functionality."""
        keyPressed = event.key()
        if keyPressed in [
                Constants.UP_KEY, Constants.DOWN_KEY, Constants.TAB_KEY
        ]:
            if keyPressed == Constants.UP_KEY:
                self.index = max(0, self.index - 1)
            elif keyPressed == Constants.DOWN_KEY:
                self.index = min(
                    len(self.completerStrings) - 1, self.index + 1)
            elif keyPressed == Constants.TAB_KEY and self.completerStrings:
                self.tabPressed()
            if self.completerStrings:
                self.setTextToCompleterIndex()
        super(CueLineEdit, self).keyPressEvent(event)

    def setTextToCompleterIndex(self):
        """Set the current text to current index of the completers."""
        self.setText(self.completerStrings[self.index])

    def tabPressed(self):
        """Action called with the tab key is pressed.
        Completes the string based on the completers.
        """
        current_text = self.text()
        matches = [
            i for i in self.completerStrings if i.startswith(current_text)
        ]
        if matches:
            self.setText(matches[0])
Ejemplo n.º 32
0
""" Unittest for bug #515 """
""" http://bugs.openbossa.org/show_bug.cgi?id=515 """

from PySide2 import QtCore

callCleanup = False
def _cleanup():
    global callCleanup
    callCleanup = True

def _checkCleanup():
    global callCleanup
    assert(callCleanup)

app = QtCore.QCoreApplication([])
QtCore.qAddPostRoutine(_cleanup)
QtCore.qAddPostRoutine(_checkCleanup)
del app
Ejemplo n.º 33
0
    def _setupUi(self):
        self.setObjectName('LightCreator_DIALOG')
        self.setWindowTitle('Light Creator')
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        vert_VERTLAY = QtWidgets.QVBoxLayout(self)
        vert_VERTLAY.setObjectName("vert_VERTLAY")
        main_GRIDLAY = QtWidgets.QGridLayout(self)
        main_GRIDLAY.setObjectName("main_GRIDLAY")
        btnSize = QtCore.QSize(71, 23)
        self.create_BTN = QtWidgets.QPushButton(self)
        self.create_BTN.setSizePolicy(sizePolicy)
        self.create_BTN.setMinimumSize(btnSize)
        self.create_BTN.setMaximumSize(btnSize)
        self.create_BTN.setText('Create')
        self.create_BTN.setObjectName("create_BTN")
        self.cancel_BTN = QtWidgets.QPushButton(self)
        self.cancel_BTN.setSizePolicy(sizePolicy)
        self.cancel_BTN.setMinimumSize(btnSize)
        self.cancel_BTN.setMaximumSize(btnSize)
        self.cancel_BTN.setText('Cancel')
        self.cancel_BTN.setObjectName("cancel_BTN")

        # Create controls for each token type and adjust window size accordingly
        defaultFactory = self.factories['default']
        activeRule = defaultFactory.naming.getActiveRule()
        self.tokens = dict()
        i = 0
        if activeRule:
            for field in activeRule.fields:
                if defaultFactory.naming.hasToken(field):
                    token = defaultFactory.naming.getToken(field)
                    self.tokens[token.name] = {'obj': token, 'index': i}
                    i += 1
        self._setSize(112 * len(self.tokens), 91)
        for key, value in self.tokens.iteritems():
            tokenObj = self.tokens[key]['obj']
            labelSize = QtCore.QSize(60, 13)
            label = QtWidgets.QLabel(self)
            label.setSizePolicy(sizePolicy)
            label.setMinimumSize(labelSize)
            label.setMaximumSize(labelSize)
            label.setObjectName(tokenObj.name + '_LABEL')
            label.setText(tokenObj.name.capitalize())
            if isinstance(tokenObj, defaultFactory.naming.TokenNumber):
                #Create spinbox
                ctrlSpinSize = QtCore.QSize(61, 21)
                ctrlSpin = QtWidgets.QSpinBox(self)
                ctrlSpin.setSizePolicy(sizePolicy)
                ctrlSpin.setMinimumSize(ctrlSpinSize)
                ctrlSpin.setMaximumSize(ctrlSpinSize)
                ctrlSpin.setObjectName(tokenObj.name + '_SPINBOX')
                ctrlSpin.setValue(tokenObj.default)
                ctrlSpin.setRange(0, 1000000)
                self.tokens[key]['ctrl'] = ctrlSpin
                self.tokens[key]['label'] = label
            else:
                if tokenObj.required:
                    #Create line edit
                    ctrlLineSize = QtCore.QSize(113, 20)
                    ctrlLine = QtWidgets.QLineEdit(self)
                    ctrlLine.setSizePolicy(sizePolicy)
                    ctrlLine.setMinimumSize(ctrlLineSize)
                    ctrlLine.setMaximumSize(ctrlLineSize)
                    ctrlLine.setObjectName(tokenObj.name + '_LINEEDIT')
                    ctrlLine.setFocus(QtCore.Qt.PopupFocusReason)
                    self.tokens[key]['ctrl'] = ctrlLine
                    labelSize = QtCore.QSize(110, 13)
                    label.setMinimumSize(labelSize)
                    label.setMaximumSize(labelSize)
                    self.tokens[key]['label'] = label
                else:
                    #Create combobox with options
                    ctrlComboSize = QtCore.QSize(111, 22)
                    ctrlCombo = QtWidgets.QComboBox(self)
                    ctrlCombo.setSizePolicy(sizePolicy)
                    ctrlCombo.setMinimumSize(ctrlComboSize)
                    ctrlCombo.setMaximumSize(ctrlComboSize)
                    ctrlCombo.setObjectName(tokenObj.name + '_COMBOBOX')
                    model = dvm.ObjectsListModel(tokenObj.options.keys(),
                                                 ctrlCombo)
                    ctrlCombo.setModel(model)
                    if tokenObj.default:
                        dataList = ctrlCombo.model().dataList
                        for x in range(len(dataList)):
                            if dataList[x] == tokenObj.default:
                                ctrlCombo.setCurrentIndex(x)
                                break
                    self.tokens[key]['ctrl'] = ctrlCombo
                    labelSize = QtCore.QSize(110, 13)
                    label.setMinimumSize(labelSize)
                    label.setMaximumSize(labelSize)
                    self.tokens[key]['label'] = label
        for key, value in self.tokens.iteritems():
            for item in self.tokens[key].keys():
                tokenCtrl = self.tokens[key]['ctrl']
                tokenLabel = self.tokens[key]['label']
                tokenIndex = self.tokens[key]['index']
                if item == 'label':
                    main_GRIDLAY.addWidget(tokenLabel, 0, tokenIndex * 2, 1, 1,
                                           QtCore.Qt.AlignLeft)
                elif item == 'ctrl':
                    main_GRIDLAY.addWidget(tokenCtrl, 1, tokenIndex * 2, 1, 1,
                                           QtCore.Qt.AlignCenter)
        for column in range(0, i, 2):
            main_GRIDLAY.setColumnMinimumWidth(column, 1)
            main_GRIDLAY.setColumnStretch(column, 1)
        vert_VERTLAY.addLayout(main_GRIDLAY)
        btns_GRIDLAY = QtWidgets.QGridLayout(self)
        btns_GRIDLAY.setObjectName('btns_GRIDLAY')
        btns_GRIDLAY.addWidget(self.create_BTN, 0, 1, 1, 1,
                               QtCore.Qt.AlignCenter)
        btns_GRIDLAY.addWidget(self.cancel_BTN, 0, 2, 1, 1,
                               QtCore.Qt.AlignCenter)
        spacing = 112 * (i / 2)
        btns_GRIDLAY.setColumnMinimumWidth(0, spacing)
        btns_GRIDLAY.setColumnStretch(0, spacing)
        btns_GRIDLAY.setColumnMinimumWidth(3, spacing)
        btns_GRIDLAY.setColumnStretch(3, spacing)
        vert_VERTLAY.addLayout(btns_GRIDLAY)
        self.setLayout(vert_VERTLAY)

        QtCore.QMetaObject.connectSlotsByName(self)
Ejemplo n.º 34
0
 def boundingRect(self):
     adjust = 2.0
     return QtCore.QRectF(-10 - adjust, -10 - adjust,
                          23 + adjust, 23 + adjust)
Ejemplo n.º 35
0
class Exporter(QtCore.QThread):

    progressed = QtCore.Signal(int)
    failed = QtCore.Signal()
    export_finished = QtCore.Signal()

    def __init__(self,
                 get_scene_func,
                 filename,
                 w,
                 h,
                 extra_enc_args=None,
                 time=None):
        super().__init__()
        self._get_scene_func = get_scene_func
        self._filename = filename
        self._width = w
        self._height = h
        self._extra_enc_args = extra_enc_args if extra_enc_args is not None else []
        self._time = time
        self._cancelled = False

    def run(self):
        filename, width, height = self._filename, self._width, self._height

        if filename.endswith('gif'):
            palette_filename = op.join(tempfile.gettempdir(), 'palette.png')
            pass1_args = ['-vf', 'palettegen']
            pass2_args = self._extra_enc_args + [
                '-i', palette_filename, '-lavfi', 'paletteuse'
            ]
            ok = self._export(palette_filename, width, height, pass1_args)
            if not ok:
                return
            ok = self._export(filename, width, height, pass2_args)
        else:
            ok = self._export(filename, width, height, self._extra_enc_args)
        if ok:
            self.export_finished.emit()

    def _export(self, filename, width, height, extra_enc_args=None):
        fd_r, fd_w = os.pipe()

        cfg = self._get_scene_func()
        if not cfg:
            self.failed.emit()
            return False

        fps = cfg['framerate']
        duration = cfg['duration']
        samples = cfg['samples']

        cmd = [
            'ffmpeg', '-r',
            '%d/%d' % fps, '-nostats', '-nostdin', '-f', 'rawvideo',
            '-video_size',
            '%dx%d' % (width, height), '-pixel_format', 'rgba', '-i',
            'pipe:%d' % fd_r
        ]
        if extra_enc_args:
            cmd += extra_enc_args
        cmd += ['-y', filename]

        reader = subprocess.Popen(cmd, pass_fds=(fd_r, ))
        os.close(fd_r)

        capture_buffer = bytearray(width * height * 4)

        # node.gl context
        ngl_viewer = ngl.Context()
        ngl_viewer.configure(
            platform=ngl.PLATFORM_AUTO,
            backend=get_backend(cfg['backend']),
            offscreen=1,
            width=width,
            height=height,
            viewport=get_viewport(width, height, cfg['aspect_ratio']),
            samples=samples,
            clear_color=cfg['clear_color'],
            capture_buffer=capture_buffer,
        )
        ngl_viewer.set_scene_from_string(cfg['scene'])

        if self._time is not None:
            ngl_viewer.draw(self._time)
            os.write(fd_w, capture_buffer)
            self.progressed.emit(100)
        else:
            # Draw every frame
            nb_frame = int(duration * fps[0] / fps[1])
            for i in range(nb_frame):
                if self._cancelled:
                    break
                time = i * fps[1] / float(fps[0])
                ngl_viewer.draw(time)
                os.write(fd_w, capture_buffer)
                self.progressed.emit(i * 100 / nb_frame)
            self.progressed.emit(100)

        os.close(fd_w)
        reader.wait()
        return True

    def cancel(self):
        self._cancelled = True
Ejemplo n.º 36
0
                                 sceneRect.width() - 4, sceneRect.height() - 4)
        message = self.tr("Click and drag the nodes around, and zoom with the "
                          "mouse wheel or the '+' and '-' keys")

        font = painter.font()
        font.setBold(True)
        font.setPointSize(14)
        painter.setFont(font)
        painter.setPen(QtCore.Qt.lightGray)
        painter.drawText(textRect.translated(2, 2), message)
        painter.setPen(QtCore.Qt.black)
        painter.drawText(textRect, message)

    def scaleView(self, scaleFactor):
        factor = self.matrix().scale(scaleFactor, scaleFactor).mapRect(QtCore.QRectF(0, 0, 1, 1)).width()

        if factor < 0.07 or factor > 100:
            return

        self.scale(scaleFactor, scaleFactor)


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    QtCore.qsrand(QtCore.QTime(0,0,0).secsTo(QtCore.QTime.currentTime()))

    widget = GraphWidget()
    widget.show()

    sys.exit(app.exec_())
Ejemplo n.º 37
0
    def setupUI(self):
        self.setObjectName("MainWindow")
        self.setFixedSize(282, 214)
        _translate = QtCore.QCoreApplication.translate
        self.setWindowTitle(_translate("MainWindow", "Client"))

        # self.background_image = QtWidgets.QLabel(self)
        # self.background_image.setGeometry(QtCore.QRect(0, 0, 281, 211))
        # self.background_image.setStyleSheet("background-color: rgb(238, 255, 238);")
        # self.background_image.setText("")
        # self.background_image.setScaledContents(True)
        # self.background_image.setObjectName("background_image")

        self.IP_box = QtWidgets.QLineEdit(self)
        self.IP_box.setGeometry(QtCore.QRect(40, 90, 201, 41))
        font = QtGui.QFont()
        font.setFamily("Helvetica")
        font.setPointSize(12)
        self.IP_box.setFont(font)
        self.IP_box.setStyleSheet("background-color: rgb(246, 252, 255);")
        self.IP_box.setObjectName("IP_box")
        self.IP_box.setText(_translate("MainWindow", "127.0.0.1"))

        self.port_box = QtWidgets.QLineEdit(self)
        self.port_box.setGeometry(QtCore.QRect(40, 150, 101, 41))
        font = QtGui.QFont()
        font.setFamily("Helvetica")
        font.setPointSize(12)
        self.port_box.setFont(font)
        self.port_box.setStyleSheet("background-color: rgb(246, 252, 255);")
        self.port_box.setObjectName("port_box")
        self.port_box.setText(_translate("MainWindow", " 6666"))

        self.connect_button = QtWidgets.QPushButton(
            self, clicked=lambda: self.Connect())
        self.connect_button.setGeometry(QtCore.QRect(160, 150, 81, 41))
        font = QtGui.QFont()
        font.setFamily("Helvetica")
        font.setPointSize(11)
        self.connect_button.setFont(font)
        self.connect_button.setStyleSheet(
            "background-color: rgb(224, 237, 255)")
        self.connect_button.setCheckable(False)
        self.connect_button.setChecked(False)
        self.connect_button.setObjectName("connect_button")
        self.connect_button.setText(_translate("MainWindow", "Kết nối"))

        self.WELCOME_label = QtWidgets.QLabel(self)
        self.WELCOME_label.setGeometry(QtCore.QRect(40, 20, 201, 51))
        font = QtGui.QFont()
        font.setFamily("Helvetica")
        font.setPointSize(22)
        font.setBold(True)
        font.setWeight(75)
        self.WELCOME_label.setFont(font)
        self.WELCOME_label.setStyleSheet("color: rgb(255, 24, 128);")
        self.WELCOME_label.setAlignment(QtCore.Qt.AlignCenter)
        self.WELCOME_label.setObjectName("WELCOME_label")
        self.WELCOME_label.setText(_translate("MainWindow", "CLIENT"))

        QtCore.QMetaObject.connectSlotsByName(self)
Ejemplo n.º 38
0
	def paintEvent(self, event):
		penCapStyle = [QtCore.Qt.FlatCap, QtCore.Qt.SquareCap, QtCore.Qt.RoundCap]
		penJoinStyle = [QtCore.Qt.MiterJoin, QtCore.Qt.BevelJoin, QtCore.Qt.RoundJoin]

		brushStyle = [QtCore.Qt.SolidPattern, QtCore.Qt.Dense1Pattern, 
		QtCore.Qt.Dense7Pattern, QtCore.Qt.CrossPattern, 
		QtCore.Qt.FDiagPattern, QtCore.Qt.DiagCrossPattern]

		painter = QtGui.QPainter(self)
		painter.setRenderHint(QtGui.QPainter.Antialiasing, True)

		painter.setPen(QtGui.QPen(QtCore.Qt.black, 15, QtCore.Qt.SolidLine, 
			QtCore.Qt.RoundCap, QtCore.Qt.RoundJoin))
		painter.setBrush(QtGui.QBrush(QtCore.Qt.blue, QtCore.Qt.DiagCrossPattern))
		# painter.drawPie(80, 80, 400, 240, 60 * 16, 270 * 16)

		poly = [QtCore.QPoint(0, 85), QtCore.QPoint(75, 75), QtCore.QPoint(100, 10), 
		        QtCore.QPoint(125, 75), QtCore.QPoint(200, 85), QtCore.QPoint(150, 125), 
		        QtCore.QPoint(160, 190), QtCore.QPoint(100, 150), QtCore.QPoint(40, 190), 
		        QtCore.QPoint(50, 125), QtCore.QPoint(0, 85)]

		gradient = QtGui.QLinearGradient(50, 100, 300, 350)
		gradient.setColorAt(0.0, QtCore.Qt.white)
		gradient.setColorAt(0.5, QtCore.Qt.green)
		gradient.setColorAt(1.0, QtCore.Qt.black)
		painter.setBrush(gradient)
		painter.setBackgroundColor(QtCore.Qt.red)
		painter.setPen(QtGui.QPen(QtCore.Qt.red, 4, QtCore.Qt.DashDotLine, QtCore.Qt.RoundCap, QtCore.Qt.RoundJoin))
		# painter.drawPolygon(poly)
		painter.drawRect(80, 80, 240, 140)
Ejemplo n.º 39
0
    def readData(self):
        message = self.socket.readLine().data().decode("utf-8")
        self.text += message + '\r\n'
        #sayThis(self.text)
        widgets = self.root.property('widgets')
        widgets.property('textedit').setProperty('text', self.text)

    def sendmessage(self, message):
        self.socket.write(message.encode("utf-8"))

    def displayError(self):
        #QtGui.QMessageBox.information(self.root, "Connection", "Error during connection")
        widgets = self.root.property('widgets')
        QtCore.QMetaObject.invokeMethod(widgets['error'], "show", QtCore.Qt.DirectConnection)

    def closeEvent(self, event):
        self.socket.disconnectFromHost()

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    view = QtQuick.QQuickView()
    url = QtCore.QUrl('talk.qml')

    ctx = view.rootContext()
    con = Controller(ctx)
    ctx.setContextProperty("con", con)
    view.setSource(url)
    view.show()
    sys.exit(app.exec_())
    # Values.
    for i, item in enumerate(items):
        # Ellipse.
        ellipseState.assignProperty(item, 'pos',
                QtCore.QPointF(math.cos((i / 63.0) * 6.28) * 250,
                        math.sin((i / 63.0) * 6.28) * 250))

        # Figure 8.
        figure8State.assignProperty(item, 'pos',
                QtCore.QPointF(math.sin((i / 63.0) * 6.28) * 250,
                        math.sin(((i * 2)/63.0) * 6.28) * 250))

        # Random.
        randomState.assignProperty(item, 'pos',
                QtCore.QPointF(-250 + QtCore.qrand() % 500,
                        -250 + QtCore.qrand() % 500))

        # Tiled.
        tiledState.assignProperty(item, 'pos',
                QtCore.QPointF(((i % 8) - 4) * kineticPix.width() + kineticPix.width() / 2,
                        ((i // 8) - 4) * kineticPix.height() + kineticPix.height() / 2))

        # Centered.
        centeredState.assignProperty(item, 'pos', QtCore.QPointF())

    # Ui.
    view = View(scene)
    view.setWindowTitle("Animated Tiles")
    view.setViewportUpdateMode(QtGui.QGraphicsView.BoundingRectViewportUpdate)
    view.setBackgroundBrush(QtGui.QBrush(bgPix))
        dx = math.sin(self.angle) * 10
        self.mouseEyeDirection = [dx / 5, 0.0][QtCore.qAbs(dx / 5) < 1]

        self.rotate(dx)
        self.setPos(self.mapToParent(0, -(3 + math.sin(self.speed) * 3)))


if __name__ == '__main__':

    import sys

    MouseCount = 7

    app = QtGui.QApplication(sys.argv)
    QtCore.qsrand(QtCore.QTime(0,0,0).secsTo(QtCore.QTime.currentTime()))

    scene = QtGui.QGraphicsScene()
    scene.setSceneRect(-300, -300, 600, 600)
    scene.setItemIndexMethod(QtGui.QGraphicsScene.NoIndex)

    for i in range(MouseCount):
        mouse = Mouse()
        mouse.setPos(math.sin((i * 6.28) / MouseCount) * 200,
                     math.cos((i * 6.28) / MouseCount) * 200)
        scene.addItem(mouse)

    view = QtGui.QGraphicsView(scene)
    view.setRenderHint(QtGui.QPainter.Antialiasing)
    view.setBackgroundBrush(QtGui.QBrush(QtGui.QPixmap(':/images/cheese.jpg')))
    view.setCacheMode(QtGui.QGraphicsView.CacheBackground)
Ejemplo n.º 42
0
def qInitResources():
    QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data)
Ejemplo n.º 43
0
        # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        #Texts are not updated in GUI unless processEvents is called
        # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        print('step2')
        app.emit(QtCore.SIGNAL("SEND_MESSAGE(QString)"), 'step2')
        for i in range(1000000):
            app.processEvents()  #let the main loop process gui events.

        print('finish')
        app.emit(QtCore.SIGNAL("SEND_MESSAGE(QString)"), 'finish')

    #Create the demo container
    wdFrm = QtWidgets.QWidget()
    layout = QtWidgets.QVBoxLayout(wdFrm)

    #A line edit to display computation step
    wdLineEdit = QtWidgets.QLineEdit("No computation running")
    layout.addWidget(wdLineEdit)

    #connect to the custom signal to print the step in the QLineEdit
    app.connect(QtCore.SIGNAL("SEND_MESSAGE(QString)"), wdLineEdit.setText)

    #Create a button to launch the computation
    wdButtonCompute = QtWidgets.QPushButton("Compute")
    layout.addWidget(wdButtonCompute)
    wdButtonCompute.clicked.connect(Compute)

    wdFrm.show()

    sys.exit(app.exec_())
Ejemplo n.º 44
0
def qInitResources():
    QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name,
                                 qt_resource_data)
Ejemplo n.º 45
0
 def _start_timer(self):
     """Start and continuously refresh timer in background to keep the total
     number of rows up to date."""
     self.timer = QtCore.QTimer(self)
     self.timer.start(self.__refreshtime)
     self.timer.timeout.connect(self.auto_refresh)
Ejemplo n.º 46
0
class NodeGraph(QtCore.QObject):
  
    node_selected = QtCore.Signal(list)

    def __init__(self, parent=None):
        super(NodeGraph, self).__init__(parent)
        self._model = NodeGraphModel()
        self._viewer = NodeViewer()
        self._undo_stack = QUndoStack(self)
        self._init_actions()
        self._wire_signals()
        self.patch_context_menu()

    def _wire_signals(self):
        self._viewer.moved_nodes.connect(self._on_nodes_moved)
        self._viewer.search_triggered.connect(self._on_search_triggered)
        self._viewer.connection_changed.connect(self._on_connection_changed)
        self._viewer.node_selected.connect(self._on_node_selected)

    def _init_actions(self):
        # setup tab search shortcut.
        tab = QAction('Search Nodes', self)
        tab.setShortcut('tab')
        tab.triggered.connect(self._toggle_tab_search)
        self._viewer.addAction(tab)
        setup_actions(self)

    def _toggle_tab_search(self):
        """
        toggle the tab search widget.
        """
        self._viewer.tab_search_set_nodes(NodeVendor.names)
        self._viewer.tab_search_toggle()

    def _on_nodes_moved(self, node_data):
        """
        called when selected nodes in the viewer has changed position.

        Args:
            node_data (dict): {<node_view>: <previous_pos>}
        """
        self._undo_stack.beginMacro('moved nodes')
        for node_view, prev_pos in node_data.items():
            node = self._model.nodes[node_view.id]
            self._undo_stack.push(NodeMovedCmd(node, node.pos(), prev_pos))
        self._undo_stack.endMacro()

    def _on_nodes_moved(self, node_data):
        """
        called when a node in the viewer is selected on left click.

        """
        nodes = self.selected_nodes()
        self.node_selected.emit(nodes)

    def _on_search_triggered(self, node_type, pos):
        """
        called when the tab search widget is triggered in the viewer.

        Args:
            node_type (str): node identifier.
            pos (tuple): x,y position for the node.
        """
        self.create_node(node_type, pos=pos)

    def _on_connection_changed(self, disconnected, connected):
        """
        called when a pipe connection has been changed in the viewer.

        Args:
            disconnected (list[list[widgets.port.PortItem]):
                pair list of port view items.
            connected (list[list[widgets.port.PortItem]]):
                pair list of port view items.
        """
        if not (disconnected or connected):
            return

        label = 'connected node(s)' if connected else 'disconnected node(s)'
        ptypes = {'in': 'inputs', 'out': 'outputs'}

        self._undo_stack.beginMacro(label)
        for p1_view, p2_view in disconnected:
            node1 = self._model.nodes[p1_view.node.id]
            node2 = self._model.nodes[p2_view.node.id]
            port1 = getattr(node1, ptypes[p1_view.port_type])()[p1_view.name]
            port2 = getattr(node2, ptypes[p2_view.port_type])()[p2_view.name]
            port1.disconnect_from(port2)
        for p1_view, p2_view in connected:
            node1 = self._model.nodes[p1_view.node.id]
            node2 = self._model.nodes[p2_view.node.id]
            port1 = getattr(node1, ptypes[p1_view.port_type])()[p1_view.name]
            port2 = getattr(node2, ptypes[p2_view.port_type])()[p2_view.name]
            port1.connect_to(port2)
        self._undo_stack.endMacro()

    @property
    def model(self):
        """
        Return the node graph model.

        Returns:
            NodeGraphModel: model object.
        """
        return self._model

    def show(self):
        """
        Show node graph viewer widget.
        """
        self._viewer.show()

    def hide(self):
        """
        Hide node graph viewer widget.
        """
        self._viewer.hide()

    def close(self):
        """
        Close node graph viewer widget.
        """
        self._viewer.close()

    def viewer(self):
        """
        Return the node graph viewer widget object.

        Returns:
            NodeGraphQt.widgets.viewer.NodeViewer: viewer widget.
        """
        return self._viewer

    def scene(self):
        """
        Return the scene object.

        Returns:
            NodeGraphQt.widgets.scene.NodeScene: node scene.
        """
        return self._viewer.scene()

    def undo_stack(self):
        """
        Returns the undo stack used in the node graph

        Returns:
            QUndoStack: undo stack.
        """
        return self._undo_stack

    def begin_undo(self, name='undo'):
        """
        Start of an undo block followed by a end_undo().

        Args:
            name (str): name for the undo block.
        """
        self._undo_stack.beginMacro(name)

    def end_undo(self):
        """
        End of an undo block started by begin_undo().
        """
        self._undo_stack.endMacro()

    def context_menu(self):
        """
        Returns a node graph context menu object.

        Returns:
            ContextMenu: node graph context menu object instance.
        """
        return self._viewer.context_menu()
      
    @staticmethod
	  def modify_context_menu(viewer):
Ejemplo n.º 47
0
    def openFileOfItem(self, row, column):
        item = self.filesTable.item(row, 0)

        QtGui.QDesktopServices.openUrl(
            QtCore.QUrl(self.currentDir.absoluteFilePath(item.text())))
Ejemplo n.º 48
0
 def set(self, n, p):
     inc = self.screenRect.width() / n
     self.marker = QtCore.QRect(inc * p, 0, inc, self.height)
Ejemplo n.º 49
0
def qCleanupResources():
    QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data)
Ejemplo n.º 50
0
    def __init__(self, width, height):
        super(Panel, self).__init__()

        self.selectedX = 0
        self.selectedY = 0
        self.width = width
        self.height = height
        self.flipped = False
        self.flipLeft = True

        self.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
        self.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
        self.setCacheMode(QtGui.QGraphicsView.CacheBackground)
        self.setViewportUpdateMode(QtGui.QGraphicsView.FullViewportUpdate)
        self.setRenderHints(QtGui.QPainter.Antialiasing |
                QtGui.QPainter.SmoothPixmapTransform |
                QtGui.QPainter.TextAntialiasing)

        self.setBackgroundBrush(QtGui.QBrush(QtGui.QPixmap('./images/blue_angle_swirl.jpg')))

        if QtOpenGL.QGLFormat.hasOpenGL():
            self.setViewport(QtOpenGL.QGLWidget(QtOpenGL.QGLFormat(QtOpenGL.QGL.SampleBuffers)))

        self.setMinimumSize(50, 50)

        self.selectionTimeLine = QtCore.QTimeLine(150, self)
        self.flipTimeLine = QtCore.QTimeLine(500, self)
        bounds = QtCore.QRectF((-width / 2.0) * 150, (-height / 2.0) * 150, width * 150, height * 150)

        self.scene = QtGui.QGraphicsScene(bounds, self)
        self.setScene(self.scene)

        self.baseItem = RoundRectItem(bounds, QtGui.QColor(226, 255, 92, 64))
        self.scene.addItem(self.baseItem)

        embed = QtGui.QWidget()

        self.ui = Ui_BackSide()
        self.ui.setupUi(embed) 
        self.ui.hostName.setFocus()

        self.backItem = RoundRectItem(bounds, embed.palette().window(), embed)
        self.backItem.setTransform(QtGui.QTransform().rotate(180, QtCore.Qt.YAxis))
        self.backItem.setParentItem(self.baseItem)

        self.selectionItem = RoundRectItem(QtCore.QRectF(-60, -60, 120, 120), QtCore.Qt.gray)
        self.selectionItem.setParentItem(self.baseItem)
        self.selectionItem.setZValue(-1)
        self.selectionItem.setPos(self.posForLocation(0, 0))
        self.startPos = self.selectionItem.pos()
        self.endPos = QtCore.QPointF()

        self.grid = []

        for y in range(height):
            self.grid.append([])
            for x in range(width):
                item = RoundRectItem(QtCore.QRectF(-54, -54, 108, 108), QtGui.QColor(214, 240, 110, 128))
                item.setPos(self.posForLocation(x, y))

                item.setParentItem(self.baseItem)
                item.setFlag(QtGui.QGraphicsItem.ItemIsFocusable)
                self.grid[y].append(item)

                rand = QtCore.qrand() % 9
                if rand == 0 :
                    item.setPixmap(QtGui.QPixmap(':/images/kontact_contacts.png'))
                elif rand == 1:
                    item.setPixmap(QtGui.QPixmap(':/images/kontact_journal.png'))
                elif rand == 2:
                    item.setPixmap(QtGui.QPixmap(':/images/kontact_notes.png'))
                elif rand == 3:
                    item.setPixmap(QtGui.QPixmap(':/images/kopeteavailable.png'))
                elif rand == 4:
                    item.setPixmap(QtGui.QPixmap(':/images/metacontact_online.png'))
                elif rand == 5:
                    item.setPixmap(QtGui.QPixmap(':/images/minitools.png'))
                elif rand == 6:
                    item.setPixmap(QtGui.QPixmap(':/images/kontact_journal.png'))
                elif rand == 7:
                    item.setPixmap(QtGui.QPixmap(':/images/kontact_contacts.png'))
                elif rand == 8:
                    item.setPixmap(QtGui.QPixmap(':/images/kopeteavailable.png'))
                else:
                    pass

                item.qobject.activated.connect(self.flip)

        self.grid[0][0].setFocus()

        self.backItem.qobject.activated.connect(self.flip)
        self.selectionTimeLine.valueChanged.connect(self.updateSelectionStep)
        self.flipTimeLine.valueChanged.connect(self.updateFlipStep)

        self.splash = SplashItem()
        self.splash.setZValue(5)
        self.splash.setPos(-self.splash.rect().width()/2,
                self.scene.sceneRect().top())
        self.scene.addItem(self.splash)

        self.splash.grabKeyboard()

        self.updateSelectionStep(0)

        self.setWindowTitle("Pad Navigator Example")