123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- # Licensed under GPLv3
- # Written by Sebastian Lohff (seba@someserver.de)
- # http://seba-geek.de/projects/seopardy/
-
- from __future__ import print_function
-
- import yaml
- from PySide import QtGui, QtCore
-
- class Player(QtGui.QWidget):
- DEFAULT_PLAYERS = [
- ("Foo", QtGui.QColor(255, 0, 0)),
- ("Bar", QtGui.QColor(0, 255, 0)),
- ("Baz", QtGui.QColor(0, 0, 255)),
- ("Blubb", QtGui.QColor(0, 255, 255)),
- ("Murr", QtGui.QColor(255, 0, 255)),
- ("Maunz", QtGui.QColor(255, 255, 0)),
- ]
-
- def __init__(self, name, color, points=0, parent=None):
- super(Player, self).__init__(parent)
- self.name = name
- self.color = color
- self.points = points
-
- self._setup_gui()
-
- def _setup_gui(self):
- self.layout = QtGui.QVBoxLayout()
- self.name_label = QtGui.QLabel(self.name, self)
- self.name_label.setStyleSheet("QLabel { font-size: 40px; background-color: %s; color: white; }" % (self.color.name(),))
- self.layout.addWidget(self.name_label)
-
- self.points_label = QtGui.QLabel(str(self.points), self)
- self.points_label.setStyleSheet("QLabel { font-size: 40px;}")
- self.layout.addWidget(self.points_label, alignment=QtCore.Qt.AlignRight)
-
- self.setLayout(self.layout)
-
- def change_name(self, new_name):
- self.name = new_name
- self.name_label.setText(new_name)
-
- def add_points(self, amount):
- self.points += amount
- self.points_label.setText("% 5s" % (self.points,))
-
- @classmethod
- def gen_player(clazz, num, parent=None):
- if num > len(clazz.DEFAULT_PLAYERS):
- raise ValueError("You tried to generate too many players")
-
- return clazz(*clazz.DEFAULT_PLAYERS[num-1], parent=parent)
-
- @classmethod
- def _yaml_representer(clazz, dumper, data):
- #def __init__(self, name, color, points=0, parent=None):
- return dumper.represent_mapping(u'!player', {
- 'name': data.name,
- 'points': data.points,
- 'color': data.color.name()
- })
-
- @classmethod
- def _yaml_constructor(clazz, loader, node):
- pdict = loader.construct_mapping(node)
- pdict["color"] = QtGui.QColor(pdict["color"])
- return Player(**pdict)
-
-
- class ButtonEvent(QtCore.QEvent):
- eventType = QtCore.QEvent.Type(QtCore.QEvent.registerEventType())
- def __init__(self, playerno):
- super(ButtonEvent, self).__init__(self.eventType)
- if playerno < 0 or playerno > 10:
- raise ValueError("That player number is just not plausable")
-
- self.playerno = playerno
-
- def get_playerno(self):
- return self.playerno
-
- nobodyColor = QtGui.QColor(128, 128, 128)
-
- # yaml dumpers/loaders
- yaml.add_representer(Player, Player._yaml_representer)
- yaml.add_constructor(u'!player', Player._yaml_constructor)
|