def toggleFullscreen(self): if self.isFullScreen(): self.enableMask(True) self.showNormal() if MenuManager.instance().ticker: MenuManager.instance().ticker.pause(False) else: self.enableMask(False) self.showFullScreen()
def focusOutEvent(self, event): if not Colors.pause: return if MenuManager.instance().ticker: MenuManager.instance().ticker.pause(True) code = MenuManager.instance().currentMenuCode if code in (MenuManager.ROOT, MenuManager.MENU1): self.switchTimerOnOff(False) self.pausedLabel.setRecursiveVisible(True)
def tick(self): medianChanged = self.measureFps() self.checkAdapt() if medianChanged and self.fpsLabel and Colors.showFps: self.fpsLabel.setText("FPS: %d" % int(self.currentFps)) if MenuManager.instance().ticker: MenuManager.instance().ticker.tick() self.viewport().update() if self.useTimer: self.updateTimer.start(int(1000 / Colors.fps))
def checkAdapt(self): if self.doneAdapt or Colors.noTimerUpdate or self.demoStartTime.elapsed() < 2000: return self.doneAdapt = True self.forceFpsMedianCalculation() Colors.benchmarkFps = self.fpsMedian Colors.debug("- benchmark: %d FPS" % int(Colors.benchmarkFps)) if Colors.noAdapt: return if self.fpsMedian < 30: ticker = MenuManager.instance().ticker if ticker and ticker.scene(): self.scene.removeItem(ticker) Colors.noTimerUpdate = True self.switchTimerOnOff(False) if self.fpsLabel: self.fpsLabel.setText("FPS: (%d)" % int(self.fpsMedian)) Colors.debug("- benchmark adaption: removed ticker (fps < 30)") if self.fpsMedian < 20: Colors.noAnimations = True Colors.debug("- benchmark adaption: animations switched off (fps < 20)") Colors.adapted = True
def __init__(self, text, align=LEFT, userCode=0, parent=None, type=SIDEBAR): super(TextButton, self).__init__(parent) # Prevent a circular import. from menumanager import MenuManager self._menu_manager = MenuManager.instance() self.menuString = text self.buttonLabel = text self.alignment = align self.buttonType = type self.userCode = userCode self.scanAnim = None self.bgOn = None self.bgOff = None self.bgHighlight = None self.bgDisabled = None self.state = TextButton.OFF self.setAcceptHoverEvents(True) self.setCursor(Qt.PointingHandCursor) # Calculate the button size. if type in (TextButton.SIDEBAR, TextButton.PANEL): self.logicalSize = QSize(TextButton.BUTTON_WIDTH, TextButton.BUTTON_HEIGHT) else: self.logicalSize = QSize(int((TextButton.BUTTON_WIDTH / 2.0) - 5), int(TextButton.BUTTON_HEIGHT * 1.5)) self._prepared = False
def checkAdapt(self): if self.doneAdapt or Colors.noTimerUpdate or self.demoStartTime.elapsed( ) < 2000: return self.doneAdapt = True self.forceFpsMedianCalculation() Colors.benchmarkFps = self.fpsMedian Colors.debug("- benchmark: %d FPS" % int(Colors.benchmarkFps)) if Colors.noAdapt: return if self.fpsMedian < 30: ticker = MenuManager.instance().ticker if ticker and ticker.scene(): self.scene.removeItem(ticker) Colors.noTimerUpdate = True self.switchTimerOnOff(False) if self.fpsLabel: self.fpsLabel.setText("FPS: (%d)" % int(self.fpsMedian)) Colors.debug("- benchmark adaption: removed ticker (fps < 30)") if self.fpsMedian < 20: Colors.noAnimations = True Colors.debug( "- benchmark adaption: animations switched off (fps < 20)") Colors.adapted = True
def __init__(self, text, align=LEFT, userCode=0, scene=None, parent=None, type=SIDEBAR): super(TextButton, self).__init__(scene, parent) # Prevent a circular import. from menumanager import MenuManager self._menu_manager = MenuManager.instance() self.menuString = text self.buttonLabel = text self.alignment = align self.buttonType = type self.userCode = userCode self.scanAnim = None self.bgOn = None self.bgOff = None self.bgHighlight = None self.bgDisabled = None self.state = TextButton.OFF self.setAcceptsHoverEvents(True) self.setCursor(QtCore.Qt.PointingHandCursor) # Calculate the button size. if type in (TextButton.SIDEBAR, TextButton.PANEL): self.logicalSize = QtCore.QSize(TextButton.BUTTON_WIDTH, TextButton.BUTTON_HEIGHT) else: self.logicalSize = QtCore.QSize(int((TextButton.BUTTON_WIDTH / 2.0) - 5), int(TextButton.BUTTON_HEIGHT * 1.5))
def __init__(self, name, scene=None, parent=None): super(ExampleContent, self).__init__(scene, parent) # Prevent a circular import. from menumanager import MenuManager self._menu_manager = MenuManager.instance() self.name = name self.heading = None self.description = None self.screenshot = None
def switchTimerOnOff(self, on): ticker = MenuManager.instance().ticker if ticker and ticker.scene(): ticker.tickOnPaint = not on or Colors.noTimerUpdate if on and not Colors.noTimerUpdate: self.useTimer = True self.fpsTime = QTime.currentTime() self.updateTimer.start(int(1000 / Colors.fps)) update_mode = QGraphicsView.NoViewportUpdate else: self.useTimer = False self.updateTimer.stop() if Colors.noTicker: update_mode = QGraphicsView.MinimalViewportUpdate else: update_mode = QGraphicsView.SmartViewportUpdate self.setViewportUpdateMode(update_mode)
if __name__ == '__main__': import sys app = QApplication(sys.argv) Colors.parseArgs(sys.argv) if sys.platform == 'win32': QMessageBox.information(None, "Documentation Warning", "If you are using the GPL version of PyQt from the binary " "installer then you will probably see warning messages about " "missing documentation. This is because the installer does " "not include a copy of the Qt documentation as it is so " "large.") mainWindow = MainWindow() MenuManager.instance().init(mainWindow) mainWindow.setFocus() if Colors.fullscreen: mainWindow.showFullScreen() else: mainWindow.enableMask(True) mainWindow.show() artisticSleep(500) mainWindow.start() sys.exit(app.exec_())
def start(self): self.switchTimerOnOff(True) self.demoStartTime.restart() MenuManager.instance().itemSelected(MenuManager.ROOT, Colors.rootMenuName) Colors.debug("- starting demo")
if __name__ == '__main__': import sys app = QtGui.QApplication(sys.argv) Colors.parseArgs(sys.argv) if sys.platform == 'win32': QtGui.QMessageBox.information( None, "Documentation Warning", "If you are using the GPL version of PyQt from the binary " "installer then you will probably see warning messages about " "missing documentation. This is because the installer does " "not include a copy of the Qt documentation as it is so " "large.") mainWindow = MainWindow() MenuManager.instance().init(mainWindow) mainWindow.setFocus() if Colors.fullscreen: mainWindow.showFullScreen() else: mainWindow.enableMask(True) mainWindow.show() artisticSleep(500) mainWindow.start() sys.exit(app.exec_())