Ejemplo n.º 1
0
 def initUI(self):
     super(CarcassonneEntriesDetail, self).initUI()
     self.totalsLabel = QtGui.QLabel("",self)
     self.tableContainerLayout.addWidget(self.totalsLabel)
     self.totals = StatsTable(len(self.engine.getEntryKinds()),len(self.engine.getPlayers()))
     self.tableContainerLayout.addWidget(self.totals)
     self.totals.setHorizontalHeaderLabels(self.engine.getListPlayers())
     self.totals.horizontalHeader().setResizeMode(QtGui.QHeaderView.Stretch)
     self.totals.setMaximumHeight(self.totals.sizeHint().height())
Ejemplo n.º 2
0
class CarcassonneEntriesDetail(GameRoundsDetail):

    def __init__(self, engine, bgcolors, parent=None):
        self.bgcolors = bgcolors
        super(CarcassonneEntriesDetail, self).__init__(engine, parent)

    def initUI(self):
        super(CarcassonneEntriesDetail, self).initUI()
        self.totalsLabel = QLabel("", self)
        self.tableContainerLayout.addWidget(self.totalsLabel)
        self.totals = StatsTable(
            len(self.engine.getEntryKinds()), len(self.engine.getPlayers()))
        self.tableContainerLayout.addWidget(self.totals)
        self.totals.setHorizontalHeaderLabels(self.engine.getListPlayers())
        self.totals.horizontalHeader().setSectionResizeMode(
            QHeaderView.Stretch)
        self.totals.setMaximumHeight(self.totals.sizeHint().height())

    def retranslateUI(self):
        self.totals.setVerticalHeaderLabels(
            [i18n("CarcassonneInputWidget", kind)
                for kind in self.engine.getEntryKinds()])
        self.totalsLabel.setText(i18n(
            "CarcassonneEntriesDetail", "Totals"))
        super(CarcassonneEntriesDetail, self).retranslateUI()
        self.updateRound()

    def resetTotals(self):
        self.totals.setHorizontalHeaderLabels(self.engine.getListPlayers())
        self.totals.clearContents()
        for row in range(len(self.engine.getEntryKinds())):
            background = self.bgcolors[row]
            for col in range(len(self.engine.getListPlayers())):
                item = QTableWidgetItem()
                item.setFlags(item.flags() ^ QtCore.Qt.ItemIsEditable)
                item.setTextAlignment(
                    QtCore.Qt.AlignVCenter | QtCore.Qt.AlignCenter)
                item.setBackground(QtGui.QBrush(QtGui.QColor(background)))
                item.setText("0")
                self.totals.setItem(row, col, item)

    def updateRound(self):
        super(CarcassonneEntriesDetail, self).updateRound()
        self.resetTotals()
        for r in self.engine.getRounds():
            self.updateTotal(r)
        self.recomputeMaxTotals()

    def updateTotal(self, entry=None):
        kinds = self.engine.getEntryKinds()
        players = self.engine.getListPlayers()
        totalItem = self.totals.item(kinds.index(
            entry.getKind()), players.index(entry.getPlayer()))
        totalItem.setText(str(int(totalItem.text())+entry.getPlayerScore()))

    def recomputeMaxTotals(self):
        kinds = self.engine.getEntryKinds()
        players = self.engine.getListPlayers()
        for row in range(len(kinds)):
            maxvalue = 1
            for col in range(len(players)):
                total = int(self.totals.item(row, col).text())
                if total > maxvalue:
                    maxvalue = total
            for col in range(len(players)):
                item = self.totals.item(row, col)
                font = item.font()
                font.setBold(int(item.text()) == maxvalue)
                item.setFont(font)

    def createRoundTable(self, engine, parent=None):
        return CarcassonneRoundTable(self.engine, self.bgcolors, parent)

    def createRoundPlot(self, engine, parent=None):
        return CarcassonneEntriesPlot(self.engine, self)

    def createQSBox(self, parent=None):
        return CarcassonneQSTW(self.engine.getGame(),
                               self.engine.getListPlayers(), self)