def addPlayClock(self): '''Adds a play clock to the graphic scene.''' if not self.playClockAddedFlag: self.playClockAddedFlag = True if self.sportType == 'football' or self.sportType == 'soccer': model = 'LX3018' elif self.sportType == 'basketball' or self.sportType == 'hockey': model = 'LX2180' else: model = None if model is not None: scoreboard=Scoreboard(\ model, captionColor=self.captionColor, driverType='LXDriver', \ serialInputFlag=self.serialInputFlag, parent=None, scene=self.scene, vboseList=self.vboseList) scoreboard.setKeypad(self.reverseHomeAndGuest, self.keypad3150, self.MMBasketball, self.WHHBaseball) self.sportType = scoreboard.game.gameData['sportType'] print 'Sport:', scoreboard.game.sport, 'Sport Type:', self.sportType, 'Keypad:', scoreboard.keyMap.keypadName, 'model', self.model self.scoreboardDict[model]=Board(\ scoreboard, LEDcolor='AMBER', boardColor=self.boardColor, \ captionColor=self.captionColor, stripeColor=self.stripeColor, \ driverType='LXDriver', parent=self.background, scene=self.scene) self.scoreboardDict[model].setPos(self.backgroundWidth/2-\ self.scoreboardDict[model].boundingRect.width()/2, self.backgroundHeight/2+\ self.boardFactor*self.boardHeight/2+self.boardFactor*5)
def instantiate_scoreboard(self): '''Creates the graphic scene and instantiates the scoreboard object.''' self.scene = GraphicsScene() self.background = QGraphicsSvgItem('Graphics/EMechBackground.svg') self.scene.addItem(self.background) scoreboard=Scoreboard(\ self.model, captionColor=self.captionColor, driverType='LXDriver', \ serialInputFlag=self.serialInputFlag, parent=None, scene=self.scene, vboseList=self.vboseList) scoreboard.setKeypad(self.reverseHomeAndGuest, self.keypad3150, self.MMBasketball, self.WHHBaseball) self.sportType = scoreboard.game.gameData['sportType'] print 'Sport:', scoreboard.game.sport, 'Sport Type:', self.sportType, 'Keypad:', scoreboard.keyMap.keypadName, 'model', self.model self.scoreboardDict[self.model]=Board(\ scoreboard, LEDcolor='AMBER', boardColor=self.boardColor, \ captionColor=self.captionColor, stripeColor=self.stripeColor, \ driverType='LXDriver', parent=self.background, scene=self.scene) #create all timers self.refreshAssets = QTimer() self.refreshAssets.timeout.connect(self.updateAssets) self.checkClickables = QTimer() self.checkClickables.timeout.connect(self.checkClickableEvents)
def addLockerClock(self): '''Adds a locker room clock to the graphic scene.''' if not self.lockerClockAddedFlag: self.lockerClockAddedFlag = True model = 'LX7406' scoreboard=Scoreboard(\ model, captionColor=self.captionColor, driverType='LXDriver', \ serialInputFlag=self.serialInputFlag, parent=None, scene=self.scene, vboseList=self.vboseList) scoreboard.setKeypad(self.reverseHomeAndGuest, self.keypad3150, self.MMBasketball, self.WHHBaseball) self.sportType = scoreboard.game.gameData['sportType'] print 'Sport:', scoreboard.game.sport, 'Sport Type:', self.sportType, 'Keypad:', scoreboard.keyMap.keypadName, 'model', self.model self.scoreboardDict[model]=Board(\ scoreboard, LEDcolor='AMBER', boardColor=self.boardColor, \ captionColor=self.captionColor, stripeColor=self.stripeColor, \ driverType='LXDriver', parent=self.background, scene=self.scene) width = 0 if self.sportType == 'linescore' or self.sportType == 'soccer': width = self.scoreboardDict[ self.model].boundingRect.width() / 2 elif self.sportType == 'football': width = self.scoreboardDict[ self.model].boundingRect.width() / 4 if self.scoreboardDict[self.model].scoreboard.partsDict[ self.model]['qtyOfCabinets'] == 2: if self.sportType == 'stat': height = self.boardHeight / 2 else: height = self.boardHeight else: height = self.boardHeight / 2 self.scoreboardDict[model].setPos(self.boardFactor*(self.backgroundWidth/2-\ self.scoreboardDict[self.model].boundingRect.width()/2+width), self.backgroundHeight/2+\ self.boardFactor*height+self.boardFactor*5)
def create_scoreboard_view(self): '''Creates the views for scoreboards.''' #Prepare zoom level self.boardWidth = self.scoreboardDict[self.model].boundingRect.width() self.boardHeight = self.scoreboardDict[ self.model].boundingRect.height() self.backgroundWidth = self.background.boundingRect().width() self.backgroundHeight = self.background.boundingRect().height() if self.boardWidth >= 312: self.boardFactor = 150.0 / 342.0 elif self.boardWidth >= 240 or self.model == 'LX2575' or self.model == 'LX2576': self.boardFactor = 150.0 / 282.0 elif self.boardWidth >= 120 or self.model == 'LX2555' or self.model == 'LX2556': self.boardFactor = 150.0 / 216.0 elif self.model == 'GENERIC': self.boardFactor = .5 else: self.boardFactor = 1.0 self.scoreboardDict[self.model].scale(self.boardFactor, self.boardFactor) if self.model == 'LX2555' or self.model == 'LX2575': model = 'LX2055' elif self.model == 'LX2556' or self.model == 'LX2576': model = 'LX2056' if self.scoreboardDict[self.model].scoreboard.partsDict[ self.model]['qtyOfCabinets'] == 2: if self.model == 'LX2055' or self.model == 'LX2056': self.scoreboardDict[self.model].setPos(self.backgroundWidth/2-self.boardFactor*(self.scoreboardDict[self.model].scoreboard.statWidth+self.scoreboardDict[self.model].scoreboard.boardWidth*2)/2, \ self.backgroundHeight/2-self.boardFactor*self.boardHeight/2) else: self.scoreboardDict[self.model].setPos( self.backgroundWidth / 2 - self.boardFactor * self.boardWidth / 2, self.backgroundHeight / 2 - self.boardFactor * self.boardHeight / 2) else: if self.model == 'LX2555' or self.model == 'LX2556' or self.model == 'LX2575' or self.model == 'LX2576': if self.model == 'LX2555': statWidth = 108 elif self.model == 'LX2556': statWidth = 108 elif self.model == 'LX2575': statWidth = 168 elif self.model == 'LX2576': statWidth = 168 scoreboard=Scoreboard(\ model, captionColor=self.captionColor, driverType='LXDriver', serialInputFlag=self.serialInputFlag, \ parent=None, scene=self.scene, vboseList=self.vboseList) scoreboard.statWidth = statWidth scoreboard.setKeypad(self.reverseHomeAndGuest, self.keypad3150, self.MMBasketball, self.WHHBaseball) print 'Sport:', scoreboard.game.sport, 'Sport Type:', self.sportType, 'Keypad:', scoreboard.keyMap.keypadName, 'model', model self.scoreboardDict[model]=Board(\ scoreboard, LEDcolor='AMBER', boardColor=self.boardColor, captionColor=self.captionColor, stripeColor=self.stripeColor, \ driverType='LXDriver', parent=self.background, scene=self.scene) self.scoreboardDict[model].scoreboard.setKeypad( self.reverseHomeAndGuest, self.keypad3150, self.MMBasketball) self.scoreboardDict[model].scale(self.boardFactor, self.boardFactor) self.scoreboardDict[model].setPos(\ self.backgroundWidth/2-self.boardFactor*(self.boardWidth+self.scoreboardDict[model].scoreboard.boardWidth*2)/2, \ self.backgroundHeight/2-self.boardFactor*self.boardHeight/4) self.scoreboardDict[self.model].setPos( self.backgroundWidth / 2 - self.boardFactor * self.boardWidth / 2, self.backgroundHeight / 2 - self.boardFactor * self.boardHeight / 4) else: self.scoreboardDict[self.model].setPos( self.backgroundWidth / 2 - self.boardFactor * self.boardWidth / 2, self.backgroundHeight / 2 - self.boardFactor * self.boardHeight / 2) self.background.scale(5, 5) #Single View self.single_scoreboard_view = GraphicsView(self.scene) self.single_scoreboard_view.centerOn(self.backgroundWidth / 2, self.backgroundHeight / 2) self.single_scoreboard_view.setRenderHints( QPainter.Antialiasing | QPainter.SmoothPixmapTransform) self.single_scoreboard_view.setContextMenuPolicy(Qt.CustomContextMenu) self.single_scoreboard_view.setViewportUpdateMode( GraphicsView.MinimalViewportUpdate) #FullViewportUpdate self.single_scoreboard_view.setDragMode(GraphicsView.ScrollHandDrag) self.single_scoreboard_view.setTransformationAnchor( GraphicsView.AnchorUnderMouse) self.single_scoreboard_view.setResizeAnchor( GraphicsView.AnchorUnderMouse) self.single_scoreboard_view.connect( self.single_scoreboard_view, SIGNAL("customContextMenuRequested(QPoint)"), self, SLOT("contextMenuRequestedSingle(QPoint)")) #Full View self.scoreboard_full_view = GraphicsView(self.scene) self.scoreboard_full_view.setRenderHints( QPainter.Antialiasing | QPainter.SmoothPixmapTransform) self.scoreboard_full_view.setContextMenuPolicy(Qt.CustomContextMenu) self.scoreboard_full_view.setViewportUpdateMode( GraphicsView.MinimalViewportUpdate) #FullViewportUpdate self.scoreboard_full_view.setDragMode(GraphicsView.ScrollHandDrag) self.scoreboard_full_view.setTransformationAnchor( GraphicsView.AnchorUnderMouse) self.scoreboard_full_view.setResizeAnchor( GraphicsView.AnchorUnderMouse) self.scoreboard_full_view.connect( self.scoreboard_full_view, SIGNAL("customContextMenuRequested(QPoint)"), self, SLOT("contextMenuRequestedDouble(QPoint)")) #Zoom View self.scoreboard_zoom_view = GraphicsView(self.scene) self.zoomFactor = 8 self.scoreboard_zoom_view.scale(self.zoomFactor, self.zoomFactor) self.scoreboard_zoom_view.setRenderHints( QPainter.Antialiasing | QPainter.SmoothPixmapTransform) self.scoreboard_zoom_view.setViewportUpdateMode( GraphicsView.MinimalViewportUpdate) #FullViewportUpdate self.scoreboard_zoom_view.setDragMode(GraphicsView.ScrollHandDrag) self.scoreboard_zoom_view.setTransformationAnchor( GraphicsView.AnchorUnderMouse) self.scoreboard_zoom_view.setResizeAnchor( GraphicsView.AnchorUnderMouse) #Vertical scoreboard view self.single_scoreboard_layout = QVBoxLayout() self.single_scoreboard_layout.addWidget(self.single_scoreboard_view) #Vertical scoreboard view self.double_scoreboard_layout = QVBoxLayout() self.double_scoreboard_layout.addWidget(self.scoreboard_full_view) self.double_scoreboard_layout.addWidget(self.scoreboard_zoom_view) #Main wigdet self.scoreboard_view_single = QWidget() self.scoreboard_view_single.setLayout(self.single_scoreboard_layout) #Main wigdet self.scoreboard_view_double = QWidget() self.scoreboard_view_double.setLayout(self.double_scoreboard_layout) self.scoreboard_view = self.scoreboard_view_single