def createInfo(self, item, name): movie_in = self.score.insertMovie(name) movie_out = self.score.insertMovie(name + ' -out') item.setZValue(8) item.setRecursiveVisible(False) xOffset = 230.0 infoIn = DemoItemAnimation(item, DemoItemAnimation.ANIM_IN) infoIn.setDuration(650) infoIn.setStartValue( QPointF(self.window.scene.sceneRect().width(), Colors.contentStartY)) infoIn.setKeyValueAt(0.60, QPointF(xOffset, Colors.contentStartY)) infoIn.setKeyValueAt(0.70, QPointF(xOffset + 20, Colors.contentStartY)) infoIn.setKeyValueAt(0.80, QPointF(xOffset, Colors.contentStartY)) infoIn.setKeyValueAt(0.90, QPointF(xOffset + 7, Colors.contentStartY)) infoIn.setEndValue(QPointF(xOffset, Colors.contentStartY)) movie_in.append(infoIn) infoOut = DemoItemAnimation(item, DemoItemAnimation.ANIM_OUT) infoOut.setCurveShape(QEasingCurve.InQuad) infoOut.setDuration(300) infoOut.setHideOnFinished(True) infoOut.setStartValue(QPointF(xOffset, Colors.contentStartY)) infoOut.setEndValue(QPointF(-600, Colors.contentStartY)) movie_out.append(infoOut)
def createInfo(self, item, name): movie_in = self.score.insertMovie(name) movie_out = self.score.insertMovie(name + ' -out') item.setZValue(8) item.setRecursiveVisible(False) xOffset = 230.0 infoIn = DemoItemAnimation(item, DemoItemAnimation.ANIM_IN) infoIn.timeline.setCurveShape(QtCore.QTimeLine.LinearCurve) infoIn.setDuration(650) infoIn.setStartPos(QtCore.QPointF(self.window.scene.sceneRect().width(), Colors.contentStartY)) infoIn.setPosAt(0.60, QtCore.QPointF(xOffset, Colors.contentStartY)) infoIn.setPosAt(0.70, QtCore.QPointF(xOffset + 20, Colors.contentStartY)) infoIn.setPosAt(0.80, QtCore.QPointF(xOffset, Colors.contentStartY)) infoIn.setPosAt(0.90, QtCore.QPointF(xOffset + 7, Colors.contentStartY)) infoIn.setPosAt(1.00, QtCore.QPointF(xOffset, Colors.contentStartY)) movie_in.append(infoIn) infoOut = DemoItemAnimation(item, DemoItemAnimation.ANIM_OUT) infoOut.timeline.setCurveShape(QtCore.QTimeLine.EaseInCurve) infoOut.setDuration(300) infoOut.hideOnFinished = True infoOut.setStartPos(QtCore.QPointF(xOffset, Colors.contentStartY)) infoOut.setPosAt(1.0, QtCore.QPointF(-600, Colors.contentStartY)) movie_out.append(infoOut)
def createLowRightButton(self, label, type, movieIn, movieOut, movieShake): item = TextButton(label, TextButton.RIGHT, type, self.window.mainSceneRoot, TextButton.PANEL) item.setRecursiveVisible(False) item.setZValue(10) sw = self.window.scene.sceneRect().width() xOffset = 70 # Create in-animation. anim = DemoItemAnimation(item, DemoItemAnimation.ANIM_IN) anim.setDuration(1800) anim.setStartValue( QPointF(sw, Colors.contentStartY + Colors.contentHeight - 35)) anim.setKeyValueAt( 0.5, QPointF(sw, Colors.contentStartY + Colors.contentHeight - 35)) anim.setKeyValueAt( 0.7, QPointF(xOffset + 535, Colors.contentStartY + Colors.contentHeight - 35)) anim.setEndValue( QPointF(xOffset + 535, Colors.contentStartY + Colors.contentHeight - 26)) movieIn.append(anim) # Create out-animation. anim = DemoItemAnimation(item, DemoItemAnimation.ANIM_OUT) anim.setHideOnFinished(True) anim.setDuration(400) anim.setStartValue( QPointF(xOffset + 535, Colors.contentStartY + Colors.contentHeight - 26)) anim.setEndValue( QPointF(sw, Colors.contentStartY + Colors.contentHeight - 26)) movieOut.append(anim)
def createLowRightLeafButton(self, label, xOffset, type, movieIn, movieOut, movieShake): item = TextButton(label, TextButton.RIGHT, type, self.window.scene, None, TextButton.PANEL) item.setRecursiveVisible(False) item.setZValue(10) sw = self.window.scene.sceneRect().width() sh = self.window.scene.sceneRect().height() # Create in-animation. anim = DemoItemAnimation(item, DemoItemAnimation.ANIM_IN) anim.setDuration(1050 * Colors.animSpeedButtons) anim.setStartPos(QtCore.QPointF(sw, Colors.contentStartY + Colors.contentHeight - 35)) anim.setPosAt(0.10, QtCore.QPointF(sw, Colors.contentStartY + Colors.contentHeight - 35)) anim.setPosAt(0.30, QtCore.QPointF(xOffset, Colors.contentStartY + Colors.contentHeight - 35)) anim.setPosAt(0.35, QtCore.QPointF(xOffset + 30, Colors.contentStartY + Colors.contentHeight - 35)) anim.setPosAt(0.40, QtCore.QPointF(xOffset, Colors.contentStartY + Colors.contentHeight - 35)) anim.setPosAt(0.45, QtCore.QPointF(xOffset + 5, Colors.contentStartY + Colors.contentHeight - 35)) anim.setPosAt(0.50, QtCore.QPointF(xOffset, Colors.contentStartY + Colors.contentHeight - 35)) anim.setPosAt(1.00, QtCore.QPointF(xOffset, Colors.contentStartY + Colors.contentHeight - 26)) movieIn.append(anim) # Create out-animation. anim = DemoItemAnimation(item, DemoItemAnimation.ANIM_OUT) anim.hideOnFinished = True anim.setDuration(300 * Colors.animSpeedButtons) anim.setStartPos(QtCore.QPointF(xOffset, Colors.contentStartY + Colors.contentHeight - 26)) anim.setPosAt(1.0, QtCore.QPointF(xOffset, sh)) movieOut.append(anim)
def createLowLeftButton(self, label, type, movieIn, movieOut, movieShake, menuString=""): button = TextButton(label, TextButton.RIGHT, type, self.window.mainSceneRoot, TextButton.PANEL) if menuString: button.setMenuString(menuString) button.setRecursiveVisible(False) button.setZValue(10) iw = button.sceneBoundingRect().width() xOffset = 15 # Create in-animation. buttonIn = DemoItemAnimation(button, DemoItemAnimation.ANIM_IN) buttonIn.setDuration(1800) buttonIn.setStartValue( QPointF(-iw, Colors.contentStartY + Colors.contentHeight - 35)) buttonIn.setKeyValueAt( 0.5, QPointF(-iw, Colors.contentStartY + Colors.contentHeight - 35)) buttonIn.setKeyValueAt( 0.7, QPointF(xOffset, Colors.contentStartY + Colors.contentHeight - 35)) buttonIn.setEndValue( QPointF(xOffset, Colors.contentStartY + Colors.contentHeight - 26)) movieIn.append(buttonIn) # Create out-animation. buttonOut = DemoItemAnimation(button, DemoItemAnimation.ANIM_OUT) buttonOut.setHideOnFinished(True) buttonOut.setDuration(400) buttonOut.setStartValue( QPointF(xOffset, Colors.contentStartY + Colors.contentHeight - 26)) buttonOut.setEndValue( QPointF(-iw, Colors.contentStartY + Colors.contentHeight - 26)) movieOut.append(buttonOut) if movieShake is not None: shakeAnim = DemoItemAnimation(button, DemoItemAnimation.ANIM_UNSPECIFIED) shakeAnim.setDuration(650) shakeAnim.setStartValue(buttonIn.endValue()) shakeAnim.setKeyValueAt(0.60, buttonIn.endValue()) shakeAnim.setKeyValueAt(0.70, buttonIn.endValue() + QPointF(-3, 0)) shakeAnim.setKeyValueAt(0.80, buttonIn.endValue() + QPointF(2, 0)) shakeAnim.setKeyValueAt(0.90, buttonIn.endValue() + QPointF(-1, 0)) shakeAnim.setEndValue(buttonIn.endValue()) movieShake.append(shakeAnim)
def createTicker(self): if Colors.noTicker: return movie_in = self.score.insertMovie('ticker') movie_out = self.score.insertMovie('ticker -out') movie_activate = self.score.insertMovie('ticker -activate') movie_deactivate = self.score.insertMovie('ticker -deactivate') self.ticker = ItemCircleAnimation(self.window.scene) self.ticker.setZValue(50) self.ticker.hide() # Move ticker in. qtendpos = 485 qtPosY = 120 self.tickerInAnim = DemoItemAnimation(self.ticker, DemoItemAnimation.ANIM_IN) self.tickerInAnim.setDuration(500) self.tickerInAnim.setStartPos(QtCore.QPointF(self.window.scene.sceneRect().width(), Colors.contentStartY + qtPosY)) self.tickerInAnim.setPosAt(0.60, QtCore.QPointF(qtendpos, Colors.contentStartY + qtPosY)) self.tickerInAnim.setPosAt(0.70, QtCore.QPointF(qtendpos + 30, Colors.contentStartY + qtPosY)) self.tickerInAnim.setPosAt(0.80, QtCore.QPointF(qtendpos, Colors.contentStartY + qtPosY)) self.tickerInAnim.setPosAt(0.90, QtCore.QPointF(qtendpos + 5, Colors.contentStartY + qtPosY)) self.tickerInAnim.setPosAt(1.00, QtCore.QPointF(qtendpos, Colors.contentStartY + qtPosY)) movie_in.append(self.tickerInAnim) # Move ticker out. qtOut = DemoItemAnimation(self.ticker, DemoItemAnimation.ANIM_OUT) qtOut.hideOnFinished = True qtOut.setDuration(500) qtOut.setStartPos(QtCore.QPointF(qtendpos, Colors.contentStartY + qtPosY)) qtOut.setPosAt(1.00, QtCore.QPointF(self.window.scene.sceneRect().width() + 700, Colors.contentStartY + qtPosY)) movie_out.append(qtOut) # Move ticker in on activate. qtActivate = DemoItemAnimation(self.ticker) qtActivate.setDuration(400) qtActivate.setStartPos(QtCore.QPointF(self.window.scene.sceneRect().width(), Colors.contentStartY + qtPosY)) qtActivate.setPosAt(0.60, QtCore.QPointF(qtendpos, Colors.contentStartY + qtPosY)) qtActivate.setPosAt(0.70, QtCore.QPointF(qtendpos + 30, Colors.contentStartY + qtPosY)) qtActivate.setPosAt(0.80, QtCore.QPointF(qtendpos, Colors.contentStartY + qtPosY)) qtActivate.setPosAt(0.90, QtCore.QPointF(qtendpos + 5, Colors.contentStartY + qtPosY)) qtActivate.setPosAt(1.00, QtCore.QPointF(qtendpos, Colors.contentStartY + qtPosY)) movie_activate.append(qtActivate) # Move ticker out on deactivate. qtDeactivate = DemoItemAnimation(self.ticker) qtDeactivate.hideOnFinished = True qtDeactivate.setDuration(400) qtDeactivate.setStartPos(QtCore.QPointF(qtendpos, Colors.contentStartY + qtPosY)) qtDeactivate.setPosAt(1.00, QtCore.QPointF(qtendpos, 800)) movie_deactivate.append(qtDeactivate)
def createUpnDownButtons(self): xOffset = 15.0 yOffset = 450.0 self.upButton = TextButton( "", TextButton.LEFT, MenuManager.UP, self.window.mainSceneRoot, TextButton.UP, ) self.upButton.prepare() self.upButton.setPos(xOffset, yOffset) self.upButton.setState(TextButton.DISABLED) self.downButton = TextButton( "", TextButton.LEFT, MenuManager.DOWN, self.window.mainSceneRoot, TextButton.DOWN, ) self.downButton.prepare() self.downButton.setPos( xOffset + 10 + self.downButton.sceneBoundingRect().width(), yOffset) movieShake = self.score.insertMovie("upndown -shake") shakeAnim = DemoItemAnimation(self.upButton, DemoItemAnimation.ANIM_UNSPECIFIED) shakeAnim.setDuration(650) shakeAnim.setStartValue(self.upButton.pos()) shakeAnim.setKeyValueAt(0.60, self.upButton.pos()) shakeAnim.setKeyValueAt(0.70, self.upButton.pos() + QPointF(-2, 0)) shakeAnim.setKeyValueAt(0.80, self.upButton.pos() + QPointF(1, 0)) shakeAnim.setKeyValueAt(0.90, self.upButton.pos() + QPointF(-1, 0)) shakeAnim.setEndValue(self.upButton.pos()) movieShake.append(shakeAnim) shakeAnim = DemoItemAnimation(self.downButton, DemoItemAnimation.ANIM_UNSPECIFIED) shakeAnim.setDuration(650) shakeAnim.setStartValue(self.downButton.pos()) shakeAnim.setKeyValueAt(0.60, self.downButton.pos()) shakeAnim.setKeyValueAt(0.70, self.downButton.pos() + QPointF(-5, 0)) shakeAnim.setKeyValueAt(0.80, self.downButton.pos() + QPointF(-3, 0)) shakeAnim.setKeyValueAt(0.90, self.downButton.pos() + QPointF(-1, 0)) shakeAnim.setEndValue(self.downButton.pos()) movieShake.append(shakeAnim)
def createUpnDownButtons(self): xOffset = 15.0 yOffset = 450.0 self.upButton = TextButton("", TextButton.LEFT, MenuManager.UP, self.window.scene, self.window.mainSceneRoot, TextButton.UP) self.upButton.prepare() self.upButton.setPos(xOffset, yOffset) self.upButton.setState(TextButton.DISABLED) self.downButton = TextButton("", TextButton.LEFT, MenuManager.DOWN, self.window.scene, self.window.mainSceneRoot, TextButton.DOWN) self.downButton.prepare() self.downButton.setPos( xOffset + 10 + self.downButton.sceneBoundingRect().width(), yOffset) movieShake = self.score.insertMovie('upndown -shake') shakeAnim = DemoItemAnimation(self.upButton, DemoItemAnimation.ANIM_UNSPECIFIED) shakeAnim.timeline.setCurveShape(QtCore.QTimeLine.LinearCurve) shakeAnim.setDuration(650) shakeAnim.setStartPos(self.upButton.pos()) shakeAnim.setPosAt(0.60, self.upButton.pos()) shakeAnim.setPosAt(0.70, self.upButton.pos() + QtCore.QPointF(-2, 0)) shakeAnim.setPosAt(0.80, self.upButton.pos() + QtCore.QPointF(1, 0)) shakeAnim.setPosAt(0.90, self.upButton.pos() + QtCore.QPointF(-1, 0)) shakeAnim.setPosAt(1.00, self.upButton.pos()) movieShake.append(shakeAnim) shakeAnim = DemoItemAnimation(self.downButton, DemoItemAnimation.ANIM_UNSPECIFIED) shakeAnim.timeline.setCurveShape(QtCore.QTimeLine.LinearCurve) shakeAnim.setDuration(650) shakeAnim.setStartPos(self.downButton.pos()) shakeAnim.setPosAt(0.60, self.downButton.pos()) shakeAnim.setPosAt(0.70, self.downButton.pos() + QtCore.QPointF(-5, 0)) shakeAnim.setPosAt(0.80, self.downButton.pos() + QtCore.QPointF(-3, 0)) shakeAnim.setPosAt(0.90, self.downButton.pos() + QtCore.QPointF(-1, 0)) shakeAnim.setPosAt(1.00, self.downButton.pos()) movieShake.append(shakeAnim)
def createLowLeftButton(self, label, type, movieIn, movieOut, movieShake, menuString=""): button = TextButton(label, TextButton.RIGHT, type, self.window.scene, None, TextButton.PANEL) if menuString: button.setMenuString(menuString) button.setRecursiveVisible(False) button.setZValue(10) iw = button.sceneBoundingRect().width() xOffset = 15 # Create in-animation. buttonIn = DemoItemAnimation(button, DemoItemAnimation.ANIM_IN) buttonIn.setDuration(1800 * Colors.animSpeedButtons) buttonIn.setStartPos(QtCore.QPointF(-iw, Colors.contentStartY + Colors.contentHeight - 35)) buttonIn.setPosAt(0.5, QtCore.QPointF(-iw, Colors.contentStartY + Colors.contentHeight - 35)) buttonIn.setPosAt(0.7, QtCore.QPointF(xOffset, Colors.contentStartY + Colors.contentHeight - 35)) buttonIn.setPosAt(1.0, QtCore.QPointF(xOffset, Colors.contentStartY + Colors.contentHeight - 26)) movieIn.append(buttonIn) # Create out-animation. buttonOut = DemoItemAnimation(button, DemoItemAnimation.ANIM_OUT) buttonOut.hideOnFinished = True buttonOut.setDuration(400 * Colors.animSpeedButtons) buttonOut.setStartPos(QtCore.QPointF(xOffset, Colors.contentStartY + Colors.contentHeight - 26)) buttonOut.setPosAt(1.0, QtCore.QPointF(-iw, Colors.contentStartY + Colors.contentHeight - 26)) movieOut.append(buttonOut) if movieShake is not None: shakeAnim = DemoItemAnimation(button, DemoItemAnimation.ANIM_UNSPECIFIED) shakeAnim.timeline.setCurveShape(QtCore.QTimeLine.LinearCurve) shakeAnim.setDuration(650) shakeAnim.setStartPos(buttonIn.posAt(1.0)) shakeAnim.setPosAt(0.60, buttonIn.posAt(1.0)) shakeAnim.setPosAt(0.70, buttonIn.posAt(1.0) + QtCore.QPointF(-3, 0)) shakeAnim.setPosAt(0.80, buttonIn.posAt(1.0) + QtCore.QPointF(2, 0)) shakeAnim.setPosAt(0.90, buttonIn.posAt(1.0) + QtCore.QPointF(-1, 0)) shakeAnim.setPosAt(1.00, buttonIn.posAt(1.0)) movieShake.append(shakeAnim)
def setupScanItem(self): if Colors.useButtonBalls: scanItem = ScanItem(self) scanItem.setZValue(self.zValue() + 1) self.scanAnim = DemoItemAnimation(scanItem) x = 1.0 y = 1.5 stop = TextButton.BUTTON_WIDTH - scanItem.boundingRect().width( ) - x if self.alignment == TextButton.LEFT: self.scanAnim.setDuration(2500) self.scanAnim.setKeyValueAt(0.0, QPointF(x, y)) self.scanAnim.setKeyValueAt(0.5, QPointF(x, y)) self.scanAnim.setKeyValueAt(0.7, QPointF(stop, y)) self.scanAnim.setKeyValueAt(1.0, QPointF(x, y)) scanItem.setPos(QPointF(x, y)) else: self.scanAnim.setKeyValueAt(0.0, QPointF(stop, y)) self.scanAnim.setKeyValueAt(0.5, QPointF(x, y)) self.scanAnim.setKeyValueAt(1.0, QPointF(stop, y)) scanItem.setPos(QPointF(stop, y))
def createMenu(self, category, type): sw = self.window.scene.sceneRect().width() xOffset = 15 yOffset = 10 maxExamples = Colors.menuCount menuIndex = 1 name = category.getAttribute('name') currentNode = self._first_element(category) currentMenu = '%s -menu%d' % (name, menuIndex) while currentNode is not None: movieIn = self.score.insertMovie(currentMenu) movieOut = self.score.insertMovie(currentMenu + ' -out') movieNextTopOut = self.score.insertMovie(currentMenu + ' -top_out') movieNextBottomOut = self.score.insertMovie(currentMenu + ' -bottom_out') movieNextTopIn = self.score.insertMovie(currentMenu + ' -top_in') movieNextBottomIn = self.score.insertMovie(currentMenu + ' -bottom_in') movieShake = self.score.insertMovie(currentMenu + ' -shake') i = 0 while currentNode is not None and i < maxExamples: # Create a normal menu button. label = currentNode.getAttribute('name') item = TextButton(label, TextButton.LEFT, type, self.window.mainSceneRoot) item.setRecursiveVisible(False) item.setZValue(10) ih = item.sceneBoundingRect().height() iw = item.sceneBoundingRect().width() ihp = ih + 3 # Create in-animation. anim = DemoItemAnimation(item, DemoItemAnimation.ANIM_IN) anim.setDuration(1000 + (i * 20)) anim.setStartValue(QPointF(xOffset, -ih)) anim.setKeyValueAt(0.20, QPointF(xOffset, -ih)) anim.setKeyValueAt( 0.50, QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY + (10 * float(i / 4.0)))) anim.setKeyValueAt( 0.60, QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) anim.setKeyValueAt( 0.70, QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY + (5 * float(i / 4.0)))) anim.setKeyValueAt( 0.80, QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) anim.setKeyValueAt( 0.90, QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY + (2 * float(i / 4.0)))) anim.setEndValue( QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) movieIn.append(anim) # Create out-animation. anim = DemoItemAnimation(item, DemoItemAnimation.ANIM_OUT) anim.setHideOnFinished(True) anim.setDuration(700 + (30 * i)) anim.setStartValue( QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) anim.setKeyValueAt(0.60, QPointF(xOffset, 600 - ih - ih)) anim.setKeyValueAt(0.65, QPointF(xOffset + 20, 600 - ih)) anim.setEndValue(QPointF(sw + iw, 600 - ih)) movieOut.append(anim) # Create shake-animation. anim = DemoItemAnimation(item) anim.setDuration(700) anim.setStartValue( QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) anim.setKeyValueAt( 0.55, QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY - i * 2.0)) anim.setKeyValueAt( 0.70, QPointF(xOffset - 10, (i * ihp) + yOffset + Colors.contentStartY - i * 1.5)) anim.setKeyValueAt( 0.80, QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY - i * 1.0)) anim.setKeyValueAt( 0.90, QPointF(xOffset - 2, (i * ihp) + yOffset + Colors.contentStartY - i * 0.5)) anim.setEndValue( QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) movieShake.append(anim) # Create next-menu top-out-animation. anim = DemoItemAnimation(item, DemoItemAnimation.ANIM_OUT) anim.setHideOnFinished(True) anim.setDuration(200 + (30 * i)) anim.setStartValue( QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) anim.setKeyValueAt( 0.70, QPointF(xOffset, yOffset + Colors.contentStartY)) anim.setEndValue(QPointF(-iw, yOffset + Colors.contentStartY)) movieNextTopOut.append(anim) # Create next-menu bottom-out-animation. anim = DemoItemAnimation(item, DemoItemAnimation.ANIM_OUT) anim.setHideOnFinished(True) anim.setDuration(200 + (30 * i)) anim.setStartValue( QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) anim.setKeyValueAt( 0.70, QPointF(xOffset, (maxExamples * ihp) + yOffset + Colors.contentStartY)) anim.setEndValue( QPointF(-iw, (maxExamples * ihp) + yOffset + Colors.contentStartY)) movieNextBottomOut.append(anim) # Create next-menu top-in-animation. anim = DemoItemAnimation(item, DemoItemAnimation.ANIM_IN) anim.setDuration(700 - (30 * i)) anim.setStartValue(QPointF(-iw, yOffset + Colors.contentStartY)) anim.setKeyValueAt( 0.30, QPointF(xOffset, yOffset + Colors.contentStartY)) anim.setEndValue( QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) movieNextTopIn.append(anim) # Create next-menu bottom-in-animation. reverse = maxExamples - i anim = DemoItemAnimation(item, DemoItemAnimation.ANIM_IN) anim.setDuration(1000 - (30 * reverse)) anim.setStartValue( QPointF(-iw, (maxExamples * ihp) + yOffset + Colors.contentStartY)) anim.setKeyValueAt( 0.30, QPointF(xOffset, (maxExamples * ihp) + yOffset + Colors.contentStartY)) anim.setEndValue( QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) movieNextBottomIn.append(anim) i += 1 currentNode = self._next_element(currentNode) if currentNode is not None and i == maxExamples: # We need another menu, so register for 'more' and 'back' # buttons. menuIndex += 1 self.info.setdefault( currentMenu, {})['more'] = '%s -menu%d' % (name, menuIndex) currentMenu = '%s -menu%d' % (name, menuIndex) self.info.setdefault( currentMenu, {})['back'] = '%s -menu%d' % (name, menuIndex - 1)
def createMenu(self, category, type): sw = self.window.scene.sceneRect().width() xOffset = 15 yOffset = 10 maxExamples = Colors.menuCount menuIndex = 1 name = str(category.attribute('name')) currentNode = category.firstChild() currentMenu = '%s -menu%d' % (name, menuIndex) while not currentNode.isNull(): movieIn = self.score.insertMovie(currentMenu) movieOut = self.score.insertMovie(currentMenu + ' -out') movieNextTopOut = self.score.insertMovie(currentMenu + ' -top_out') movieNextBottomOut = self.score.insertMovie(currentMenu + ' -bottom_out') movieNextTopIn = self.score.insertMovie(currentMenu + ' -top_in') movieNextBottomIn = self.score.insertMovie(currentMenu + ' -bottom_in') movieShake = self.score.insertMovie(currentMenu + ' -shake') i = 0 while not currentNode.isNull() and i < maxExamples: # Create a normal menu button. label = str(currentNode.toElement().attribute('name')) item = TextButton(label, TextButton.LEFT, type, self.window.scene) currentNode = currentNode.nextSibling() # Skip the OpenGL examples if they can't run. if str(currentNode.toElement().attribute('dirname')) == 'opengl': if not Colors.openGlAvailable: currentNode = currentNode.nextSibling() item.setRecursiveVisible(False) item.setZValue(10) ih = item.sceneBoundingRect().height() iw = item.sceneBoundingRect().width() ihp = ih + 3 # Create in-animation. anim = DemoItemAnimation(item, DemoItemAnimation.ANIM_IN) anim.setDuration(float(1000 + (i * 20)) * Colors.animSpeedButtons) anim.setStartPos(QtCore.QPointF(xOffset, -ih)) anim.setPosAt(0.20, QtCore.QPointF(xOffset, -ih)) anim.setPosAt(0.50, QtCore.QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY + (10 * float(i / 4.0)))) anim.setPosAt(0.60, QtCore.QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) anim.setPosAt(0.70, QtCore.QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY + (5 * float(i / 4.0)))) anim.setPosAt(0.80, QtCore.QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) anim.setPosAt(0.90, QtCore.QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY + (2 * float(i / 4.0)))) anim.setPosAt(1.00, QtCore.QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) movieIn.append(anim) # Create out-animation. anim = DemoItemAnimation(item, DemoItemAnimation.ANIM_OUT) anim.hideOnFinished = True anim.setDuration((700 + (30 * i)) * Colors.animSpeedButtons) anim.setStartPos(QtCore.QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) anim.setPosAt(0.60, QtCore.QPointF(xOffset, 600 - ih - ih)) anim.setPosAt(0.65, QtCore.QPointF(xOffset + 20, 600 - ih)) anim.setPosAt(1.00, QtCore.QPointF(sw + iw, 600 - ih)) movieOut.append(anim) # Create shake-animation. anim = DemoItemAnimation(item) anim.setDuration(700 * Colors.animSpeedButtons) anim.setStartPos(QtCore.QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) anim.setPosAt(0.55, QtCore.QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY - i*2.0)) anim.setPosAt(0.70, QtCore.QPointF(xOffset - 10, (i * ihp) + yOffset + Colors.contentStartY - i*1.5)) anim.setPosAt(0.80, QtCore.QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY - i*1.0)) anim.setPosAt(0.90, QtCore.QPointF(xOffset - 2, (i * ihp) + yOffset + Colors.contentStartY - i*0.5)) anim.setPosAt(1.00, QtCore.QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) movieShake.append(anim) # Create next-menu top-out-animation. anim = DemoItemAnimation(item, DemoItemAnimation.ANIM_OUT) anim.hideOnFinished = True anim.setDuration((200 + (30 * i)) * Colors.animSpeedButtons) anim.setStartPos(QtCore.QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) anim.setPosAt(0.70, QtCore.QPointF(xOffset, yOffset + Colors.contentStartY)) anim.setPosAt(1.00, QtCore.QPointF(-iw, yOffset + Colors.contentStartY)) movieNextTopOut.append(anim) # Create next-menu bottom-out-animation. anim = DemoItemAnimation(item, DemoItemAnimation.ANIM_OUT) anim.hideOnFinished = True anim.setDuration((200 + (30 * i)) * Colors.animSpeedButtons) anim.setStartPos(QtCore.QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) anim.setPosAt(0.70, QtCore.QPointF(xOffset, (maxExamples * ihp) + yOffset + Colors.contentStartY)) anim.setPosAt(1.00, QtCore.QPointF(-iw, (maxExamples * ihp) + yOffset + Colors.contentStartY)) movieNextBottomOut.append(anim) # Create next-menu top-in-animation. anim = DemoItemAnimation(item, DemoItemAnimation.ANIM_IN) anim.setDuration((700 - (30 * i)) * Colors.animSpeedButtons) anim.setStartPos(QtCore.QPointF(-iw, yOffset + Colors.contentStartY)) anim.setPosAt(0.30, QtCore.QPointF(xOffset, yOffset + Colors.contentStartY)) anim.setPosAt(1.00, QtCore.QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) movieNextTopIn.append(anim) # Create next-menu bottom-in-animation. reverse = maxExamples - i anim = DemoItemAnimation(item, DemoItemAnimation.ANIM_IN) anim.setDuration((1000 - (30 * reverse)) * Colors.animSpeedButtons) anim.setStartPos(QtCore.QPointF(-iw, (maxExamples * ihp) + yOffset + Colors.contentStartY)) anim.setPosAt(0.30, QtCore.QPointF(xOffset, (maxExamples * ihp) + yOffset + Colors.contentStartY)) anim.setPosAt(1.00, QtCore.QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) movieNextBottomIn.append(anim) i += 1 if not currentNode.isNull() and i == maxExamples: # We need another menu, so register for 'more' and 'back' # buttons. menuIndex += 1 self.info.setdefault(currentMenu, {})['more'] = '%s -menu%d' % (name, menuIndex) currentMenu = '%s -menu%d' % (name, menuIndex) self.info.setdefault(currentMenu, {})['back'] = '%s -menu%d' % (name, menuIndex - 1)