class GameRoundPlot(QtGui.QWidget): def __init__(self,engine,parent=None): super(GameRoundPlot, self).__init__(parent) self.plotinited = False self.engine = engine self.parent = parent self.axiswidth = 0 self.initUI() def initUI(self): self.widgetLayout = QtGui.QHBoxLayout(self) self.canvas = PlotView(PlayerColours,self) self.canvas.setBackground(self.palette().color(self.backgroundRole())) self.canvas.addLinePlot() self.widgetLayout.addWidget(self.canvas) self.plotinited = True def retranslateUI(self): self.retranslatePlot() def isPlotInited(self): return self.plotinited def updatePlot(self): pass def retranslatePlot(self): pass
class Phase10RoundPlot(GameRoundPlot): def initUI(self): super(Phase10RoundPlot,self).initUI() self.setStyleSheet("QLabel {font-size: 18px; }") QtGui.QWidget().setLayout(self.layout()) self.widgetLayout = QtGui.QGridLayout() self.setLayout(self.widgetLayout) self.phasesLabel = QtGui.QLabel("",self) self.widgetLayout.addWidget(self.phasesLabel,0,0) self.scoreLabel = QtGui.QLabel("",self) self.widgetLayout.addWidget(self.scoreLabel,0,1) self.playersTitleLabel = QtGui.QLabel("",self) self.widgetLayout.addWidget(self.playersTitleLabel,0,2) self.canvas = PlotView(PlayerColours,self) self.canvas.setBackground(self.palette().color(self.backgroundRole())) self.canvas.addLinePlot() self.widgetLayout.addWidget(self.canvas,1,0) self.scorecanvas = PlotView(PlayerColours,self) self.scorecanvas.setBackground(self.palette().color(self.backgroundRole())) self.scorecanvas.addLinePlot() self.widgetLayout.addWidget(self.scorecanvas,1,1) self.playersListLayout = QtGui.QVBoxLayout() self.widgetLayout.addLayout(self.playersListLayout,1,2) self.playersListLayout.addStretch() # self.playersListLayout.addWidget(self.playersTitleLabel) for i,player in enumerate(self.engine.getListPlayers()): colour = PlayerColours[i] label = QtGui.QLabel(player) label.setStyleSheet("QLabel {{ font-size: 28px; font-weight: bold; color:rgb({},{},{});}}".format(colour.red(),colour.green(),colour.blue())) self.playersListLayout.addWidget(label) # self.playersListLayout.addStretch() self.playersListLayout.addStretch() self.retranslatePlot() self.updatePlot() def retranslatePlot(self): super(Phase10RoundPlot,self).retranslatePlot() self.phasesLabel.setText(QtGui.QApplication.translate("Phase10RoundPlot",'Phases') ) self.scoreLabel.setText(QtGui.QApplication.translate("Phase10RoundPlot",'Scores') ) # self.playersTitleLabel.setText(QtGui.QApplication.translate("Phase10RoundPlot",'Players') ) def updatePlot(self): super(Phase10RoundPlot,self).updatePlot() if not self.isPlotInited(): return scores = {} phases = {} for player in self.engine.getPlayers(): scores[player] = [0] phases[player] = [0] for rnd in self.engine.getRounds(): for player in self.engine.getPlayers(): if player not in scores: scores[player] = [0] rndscore = rnd.getPlayerScore(player) if rndscore >= 0 : accumscore = scores[player][-1] + rndscore scores[player].append(accumscore) c_phase = rnd.getPlayerCompletedPhase(player) if c_phase > 0: phases[player].append(phases[player][-1]+1) else: phases[player].append(phases[player][-1]) self.canvas.clearPlotContents() self.scorecanvas.clearPlotContents() for player in self.engine.getListPlayers(): self.canvas.addSeries(phases[player],player) self.scorecanvas.addSeries(scores[player],player) self.updatePlayerOrder() def updatePlayerOrder(self): trash = QtGui.QWidget() self.widgetLayout.removeItem(self.playersListLayout) trash.setLayout(self.playersListLayout) self.playersListLayout = QtGui.QVBoxLayout() self.widgetLayout.addLayout(self.playersListLayout,1,2) self.playersListLayout.addStretch() for i,player in enumerate(self.engine.getListPlayers()): colour = PlayerColours[i] label = QtGui.QLabel(player) label.setStyleSheet("QLabel {{ font-size: 28px; font-weight: bold; color:rgb({},{},{});}}".format(colour.red(),colour.green(),colour.blue())) self.playersListLayout.addWidget(label) self.playersListLayout.addStretch()