Пример #1
0
    def __init__(self):
        super(Footer, self).__init__(clutter.BoxLayout())

        self.set_color(clutter.Color(0, 0, 0, 0))

        layout = self.get_layout_manager()
        layout.set_vertical(True)
        layout.set_spacing(20)

        self.set_width(settings.SCREEN_WIDTH)

        self.now_playing = now_playing()

        self.now_playing_box = clutter.Box(clutter.BoxLayout())
        tmplayout = self.now_playing_box.get_layout_manager()
        tmplayout.set_vertical(False)
        tmplayout.set_spacing(20)
        self.now_playing_box.set_width(settings.SCREEN_WIDTH)
        self.next_song_box = clutter.Box(clutter.BoxLayout())
        tmplayout = self.next_song_box.get_layout_manager()
        tmplayout.set_vertical(False)
        tmplayout.set_spacing(20)
        self.next_song_box.set_width(settings.SCREEN_WIDTH)

        layout.pack(self.now_playing_box, True, False, False,
                    clutter.BOX_ALIGNMENT_CENTER, clutter.BOX_ALIGNMENT_CENTER)
        layout.pack(self.next_song_box, True, False, False,
                    clutter.BOX_ALIGNMENT_CENTER, clutter.BOX_ALIGNMENT_CENTER)
Пример #2
0
    def __init__(self):
        super(ClutterScope, self).__init__()
        self.graticule = Graticule()
        self.add(self.graticule)
        self.set_reactive(True)

        self.traces = []

        layout = clutter.BoxLayout()
        layout.set_vertical(False)
        layout.set_use_animations(True)
        layout.set_easing_duration(100)
        layout.set_spacing(4)
        label_box = clutter.Box(layout)
        self.add(label_box)
        label_box.set_position(0, 0)
        #label_box.add_constraint(clutter.SnapConstraint(self, clutter.SNAP_EDGE_BOTTOM, clutter.SNAP_EDGE_BOTTOM, 0.))
        label_box.add_constraint(
            clutter.BindConstraint(self, clutter.BIND_WIDTH, 0.))

        # Add some traces (just for looks)
        tr = Trace()
        tr.set_position(0, -50)
        self.graticule.add(tr)
        self.traces += [tr]
        label_box.add(TraceLabel(tr))
        tr.set_name('H1:DMT-STRAIN')

        tr = Trace()
        tr.set_color(clutter.color_from_string('magenta'))
        self.graticule.add(tr)
        self.traces += [tr]
        label_box.add(TraceLabel(tr))
        tr.set_name('L1:DMT-STRAIN')

        tr = Trace()
        tr.set_color(clutter.color_from_string('yellow'))
        tr.set_position(0, 50)
        self.graticule.add(tr)
        self.traces += [tr]
        label_box.add(TraceLabel(tr))
        tr.set_name('A1:DMT-STRAIN')

        # State for event signal handlers
        self.selected_trace = self.traces[0]
        self.__last_scroll_time = 0
        self.__drag_origin = None

        # Hook up event signal handlers
        self.connect_after('button-press-event', self.button_press)
        self.connect_after('button-release-event', self.button_release)
        self.connect_after('motion-event', self.motion)
        self.connect_after('scroll-event', self.scroll)
Пример #3
0
    def __init__(self, players):
        """
        """
        super(PlayerScoreBox, self).__init__(clutter.BoxLayout())
        layout = self.get_layout_manager()
        layout.set_vertical(True)
        layout.set_spacing(30)

        for player in players:
            score_box = PlayerScore(player)
            layout.pack(score_box, True, True, True,
                        clutter.BOX_ALIGNMENT_CENTER,
                        clutter.BOX_ALIGNMENT_CENTER)
Пример #4
0
    def __init__(self):
        super(GameBoard, self).__init__(clutter.BoxLayout())

        layout = self.get_layout_manager()
        layout.set_vertical(False)
        spacing = int(self.get_width() * 0.01)
        layout.set_spacing(spacing)

        categories = game.get_categories()
        for category in categories:
            category_column = CategoryColumn(category)
            category_column.set_size(
                self.get_width() / len(categories) - spacing,
                self.get_height())
            self.add(category_column)
Пример #5
0
 def __init__(self, player):
     """
     """
     super(PlayerScore, self).__init__(clutter.BoxLayout())
     self.player = player
     layout = self.get_layout_manager()
     layout.set_vertical(True)
     self.player_name_text = Text(config.player_name_font, self.player.name)
     layout.pack(self.player_name_text, True, False, False,
                 clutter.BOX_ALIGNMENT_CENTER, clutter.BOX_ALIGNMENT_CENTER)
     self.player_score_text = Text(config.player_score_font,
                                   "$%d" % self.player.score)
     layout.pack(self.player_score_text, True, False, False,
                 clutter.BOX_ALIGNMENT_CENTER, clutter.BOX_ALIGNMENT_CENTER)
     self.set_color(config.square_background_color)
Пример #6
0
 def __init__(self):
     """
     """
     super(PlayerScoreOverlay, self).__init__(
         clutter.BinLayout(clutter.BIN_ALIGNMENT_CENTER,
                           clutter.BIN_ALIGNMENT_CENTER))
     box = clutter.Box(clutter.BoxLayout())
     layout = box.get_layout_manager()
     layout.set_vertical(True)
     self.set_color(config.square_background_color)
     self.name = Text(config.player_overlay_font, '')
     box.add(self.name)
     self.score = Text(config.player_overlay_font, '')
     box.add(self.score)
     self.add(box)
Пример #7
0
    def __init__(self, category):
        super(CategoryColumn, self).__init__(clutter.BoxLayout())
        self.category = category

        layout = self.get_layout_manager()
        layout.set_vertical(True)
        spacing = int(self.get_width() * 0.01)
        layout.set_spacing(spacing)

        name_square = Square(config.category_font, category.get_name())
        self.add(name_square)

        for clue in category.get_clues():
            clue_square = ClueSquare(clue)
            self.add(clue_square)
Пример #8
0
    def __init__(self):
        super(FrontScreen, self).__init__(
            clutter.BinLayout(clutter.BIN_ALIGNMENT_CENTER,
                              clutter.BIN_ALIGNMENT_CENTER)
            )
        layout = self.get_layout_manager()

        self.credits = Credits()
        layout.add(self.credits,
                   clutter.BIN_ALIGNMENT_START,
                   clutter.BIN_ALIGNMENT_END)

        self.right_arrow = RightArrow()
        layout.add(self.right_arrow,
                   clutter.BIN_ALIGNMENT_END,
                   clutter.BIN_ALIGNMENT_CENTER)

        self.boxed_contents = clutter.Box(clutter.BoxLayout())
        box_layout = self.boxed_contents.get_layout_manager()
        box_layout.set_use_animations(True)
        box_layout.set_vertical(True)
        box_layout.set_spacing(100)

        self.header = LogoLarge()
        box_layout.pack(self.header, True, False, False,
                        clutter.BOX_ALIGNMENT_CENTER,
                        clutter.BOX_ALIGNMENT_CENTER)

        self.labels = (
            clutter.Text(settings.FRONT_SCREEN_FONT, 'songs'),
            clutter.Text(settings.FRONT_SCREEN_FONT, 'artists'),
            )

        self.selected = self.labels[0]

        for label in self.labels:
            label.set_color(FONT_COLOR)
            label.set_opacity(FONT_OPACITY)
            label.set_property('scale-gravity', clutter.GRAVITY_CENTER)
            box_layout.pack(label, True, False, False,
                            clutter.BOX_ALIGNMENT_CENTER,
                            clutter.BOX_ALIGNMENT_CENTER)

        layout.add(self.boxed_contents,
                   clutter.BIN_ALIGNMENT_CENTER,
                   clutter.BIN_ALIGNMENT_START)

        self.highlight(self.selected)
Пример #9
0
    def __init__(self):
        super(FinalJeopardyBox, self).__init__(clutter.BoxLayout())

        self.set_color(config.background_color)
        layout = self.get_layout_manager()
        layout.set_vertical(True)

        text = clutter.Text(config.admin_font_header, "FINAL JEOPARDY")
        self.add(text)

        self.players = game.get_players()
        for player in self.players:
            text = clutter.Text(
                config.admin_font,
                'Player %s ($%d) wager:' % (player.name, player.score))
            text.set_color('white')
            self.add(text)

            wager = clutter.Text(config.admin_font, "0")
            wager.set_color('white')
            wager.player = player
            wager.value = 0
            wager.set_activatable(True)
            wager.set_reactive(True)
            wager.set_editable(True)
            wager.connect('activate', lambda actor: self.set_wager(actor))
            self.add(wager)
            layout.set_fill(wager, True, False)

            correct = clutter.Text(config.admin_font, "CORRECT")
            correct.set_color('green')
            correct.player = player
            correct.wager = wager
            correct.set_reactive(True)
            correct.connect('button-release-event',
                            lambda actor, event: self.correct(actor))
            self.add(correct)
            layout.set_fill(correct, True, False)

            wrong = clutter.Text(config.admin_font, "WRONG")
            wrong.set_color('red')
            wrong.player = player
            wrong.wager = wager
            wrong.set_reactive(True)
            wrong.connect('button-release-event',
                          lambda actor, event: self.wrong(actor))
            self.add(wrong)
            layout.set_fill(wrong, True, False)
Пример #10
0
    def __init__(self, song):
        super(SongDetailScreen, self).__init__(
            clutter.BinLayout(clutter.BIN_ALIGNMENT_CENTER,
                              clutter.BIN_ALIGNMENT_CENTER))
        # Immediately store song information
        self.song = song
        self.set_name('song detail %s' % self.song.title)
        layout = self.get_layout_manager()

        self.header = Header('Song Details')
        self.header.set_width(self.get_width())
        layout.add(self.header, clutter.BIN_ALIGNMENT_CENTER,
                   clutter.BIN_ALIGNMENT_START)

        self.left_arrow = LeftArrow()
        self.play = PlaySymbol()

        self.box = clutter.Box(clutter.BoxLayout())
        box_layout = self.box.get_layout_manager()
        box_layout.set_vertical(True)
        box_layout.set_spacing(20)
        text = clutter.Text(settings.SONG_TITLE_FONT, self.song.title)
        text.set_line_alignment(ALIGN_CENTER)
        text.set_line_wrap(True)
        text.set_color(clutter.Color(230, 230, 230, 0xff))
        self.box.add(text)
        text = clutter.Text(settings.SONG_ARTIST_FONT,
                            "by %s" % self.song.artist.name)
        text.set_line_alignment(ALIGN_CENTER)
        text.set_line_wrap(True)
        text.set_color(clutter.Color(210, 210, 210, 0xff))
        self.box.add(text)
        self.box.set_width(self.get_width() - (self.left_arrow.get_width() +
                                               self.play.get_width()))

        layout.add(
            self.box,
            clutter.BIN_ALIGNMENT_CENTER,
            clutter.BIN_ALIGNMENT_CENTER,
        )

        layout.add(self.left_arrow, clutter.BIN_ALIGNMENT_START,
                   clutter.BIN_ALIGNMENT_CENTER)

        layout.add(self.play, clutter.BIN_ALIGNMENT_END,
                   clutter.BIN_ALIGNMENT_CENTER)
Пример #11
0
    def __init__(self):
        super(Credits, self).__init__(clutter.BoxLayout())
        layout = self.get_layout_manager()
        layout.set_vertical(False)
        layout.set_spacing(20)

        self.credits_text = clutter.Text(settings.CREDITS_FONT, 'Credits:')
        self.credits_text.set_color(FONT_COLOR)

        self.previous_credits = credits_load()
        self.credits = clutter.Text(settings.CREDITS_FONT, credits_load())
        self.credits.set_property('scale-gravity', clutter.GRAVITY_CENTER)
        self.credits.set_color(clutter.Color(255, 255, 255, 230))

        layout.pack(self.credits_text, True, False, False,
                    clutter.BOX_ALIGNMENT_CENTER, clutter.BOX_ALIGNMENT_CENTER)
        layout.pack(self.credits, True, False, False,
                    clutter.BOX_ALIGNMENT_CENTER, clutter.BOX_ALIGNMENT_CENTER)
Пример #12
0
    def __init__(self):
        """
        """
        super(CategoryOverlay, self).__init__(clutter.BoxLayout())
        layout = self.get_layout_manager()
        layout.set_vertical(False)
        self.set_color(config.background_color)

        self.boxes = []
        for category_name in game.get_category_names():
            box = clutter.Box(
                clutter.BinLayout(clutter.BIN_ALIGNMENT_CENTER,
                                  clutter.BIN_ALIGNMENT_CENTER))
            rect = clutter.Rectangle()
            rect.set_color(config.square_background_color)
            box.add(rect)
            text = Text(config.category_overlay_font, category_name)
            box.add(text)
            self.add(box)
Пример #13
0
    def __init__(self):
        super(LogoSmall, self).__init__(clutter.BoxLayout())

        layout = self.get_layout_manager()
        layout.set_vertical(False)
        layout.set_spacing(20)
        layout.set_use_animations(True)

        self.as220 = clutter.Text(settings.LOGO_AS220_SMALL_FONT,
                                  'AS22O')
        self.as220.set_color(FONT_COLOR)
        self.jukebox = clutter.Text(settings.LOGO_JUKEBOX_SMALL_FONT,
                                    'Jukebox\nMusic')
        self.jukebox.set_color(FONT_COLOR)
        self.jukebox.set_line_alignment(ALIGN_CENTER)
        layout.pack(self.as220, True, False, False,
                    clutter.BOX_ALIGNMENT_CENTER,
                    clutter.BOX_ALIGNMENT_CENTER)
        layout.pack(self.jukebox, True, False, False,
                    clutter.BOX_ALIGNMENT_CENTER,
                    clutter.BOX_ALIGNMENT_CENTER)
Пример #14
0
    def __init__(self, contents, items_on_screen=8):
        """
        """
        super(ScrollingText, self).__init__(clutter.BoxLayout())

        layout = self.get_layout_manager()
        layout.set_vertical(True)
        layout.set_spacing(20)
        layout.set_use_animations(False)

        # Contents stores the possible on screen elements.
        self.contents = contents
        # Set selected item to None
        self.selected = contents[0]

        for item in self.contents[:items_on_screen]:
            layout.pack(item, True, False, False,
                        clutter.BOX_ALIGNMENT_CENTER,
                        clutter.BOX_ALIGNMENT_CENTER)
        self.selected = contents[0]
        self.selected.highlight()
        self.selected.blink_on()
Пример #15
0
    def __init__(self):
        super(PlayerScoreBox, self).__init__(clutter.BoxLayout())

        self.set_color(config.background_color)
        layout = self.get_layout_manager()
        layout.set_vertical(True)

        self.players = game.get_players()

        self.scores = []
        for player in self.players:
            text = clutter.Text(config.admin_font,
                                'Player %s score:' % player.name)
            text.set_color('white')
            self.add(text)

            score = clutter.Text(config.admin_font, "%d" % player.score)
            score.set_color('white')
            score.player = player
            self.scores.append(score)
            score.set_activatable(True)
            score.set_reactive(True)
            score.set_editable(True)
            score.connect('activate', lambda actor: self.set_score(actor))
            self.add(score)
            layout.set_fill(score, True, False)

        text = clutter.Text(config.admin_font_header, "DRINKS")
        self.add(text)
        for player in self.players:
            drink = clutter.Text(config.admin_font,
                                 'Player %s Drink' % player.name)
            drink.player = player
            drink.set_color('white')
            drink.set_reactive(True)
            drink.connect('button-release-event',
                          lambda actor, event: self.drink(actor.player))
            self.add(drink)
Пример #16
0
    def __init__(self):
        super(ClueBox,
              self).__init__(clutter.FlowLayout(clutter.FLOW_VERTICAL))
        layout = self.get_layout_manager()
        layout.set_column_spacing(10)
        layout.set_row_spacing(10)
        self.set_color(config.background_color)

        # Add clue answer and question.
        clue_box = clutter.Box(clutter.BoxLayout())
        self.add(clue_box)
        clue_layout = clue_box.get_layout_manager()
        clue_layout.set_vertical(True)

        clue = game.get_selected_clue()
        text = clutter.Text(config.admin_font_header, "CLUE")
        text.set_color('white')
        clue_layout.pack(text, False, False, False,
                         clutter.BOX_ALIGNMENT_START,
                         clutter.BOX_ALIGNMENT_CENTER)
        text = clutter.Text(config.admin_font, "Answer\n%s" % clue.answer)
        text.set_color('green')
        clue_layout.pack(text, False, False, False,
                         clutter.BOX_ALIGNMENT_START,
                         clutter.BOX_ALIGNMENT_CENTER)
        text = clutter.Text(config.admin_font, "Question\n%s" % clue.question)
        text.set_color('red')
        clue_layout.pack(text, False, False, False,
                         clutter.BOX_ALIGNMENT_START,
                         clutter.BOX_ALIGNMENT_CENTER)

        # Add player buzz in information.
        buzz_box = clutter.Box(clutter.BoxLayout())
        self.add(buzz_box)
        buzz_layout = buzz_box.get_layout_manager()
        buzz_layout.set_vertical(True)
        text = clutter.Text(config.admin_font_header, 'PLAYER BUZZES')
        buzz_layout.pack(text, False, False, False,
                         clutter.BOX_ALIGNMENT_START,
                         clutter.BOX_ALIGNMENT_CENTER)
        self.players = []
        for player in game.get_players():
            text = clutter.Text(config.admin_font, "Player %s" % player.name)
            text.set_color('white')
            text.player = player
            self.players.append(text)
            buzz_layout.pack(text, False, False, False,
                             clutter.BOX_ALIGNMENT_START,
                             clutter.BOX_ALIGNMENT_CENTER)

        if game.selected_clue.is_daily_double():
            dd_box = clutter.Box(clutter.BoxLayout())
            self.add(dd_box)
            dd_layout = dd_box.get_layout_manager()
            dd_layout.set_vertical(True)
            for player in game.get_players():
                text = clutter.Text(config.admin_font,
                                    "Player %s" % player.name)
                text.set_color('white')
                text.player = player
                text.set_reactive(True)
                text.connect('button-release-event',
                             lambda actor, event: self.choose_team(actor))
                dd_box.add(text)
            text = clutter.Text(config.admin_font, 'Daily Double Wager:')
            text.set_color('white')
            dd_box.add(text)
            self.wager = clutter.Text(config.admin_font, '0')
            self.wager.set_color('white')
            self.wager.set_reactive(True)
            self.wager.set_editable(True)
            self.wager.connect(
                'text-changed',
                lambda actor: game.set_daily_double_wager(self.get_wager()))
            dd_box.add(self.wager)
            dd_layout.set_fill(self.wager, True, False)
Пример #17
0
    def __init__(self):
        super(GUI, self).__init__()

        logging.info('Initializing game gui.')

        self.admin = Admin()

        self.gui_state = self.SHOW_GAME_BOARD

        # Set the stage background to grey.
        self.set_color(config.stage_background_color)

        # Connect callback listeners
        logging.info('Setting up game stage signals.')
        self.connect('destroy', clutter.main_quit)
        self.connect('key-press-event', self.on_press)
        self.connect('button-release-event', self.on_click)
        self.connect('allocation-changed', self.on_allocation_changed)

        self.board_box = clutter.Box(clutter.BoxLayout())
        board_box_layout = self.board_box.get_layout_manager()

        # Instantiate the game board which is the collection of squares to show
        # on screen.
        self.game_board = GameBoard()
        board_box_layout.pack(self.game_board, True, True, True,
                              clutter.BOX_ALIGNMENT_CENTER,
                              clutter.BOX_ALIGNMENT_CENTER)

        # Determine whether or not to display player scores.
        self.player_score_box = None
        if config.display_player_scores:
            self.player_score_box = PlayerScoreBox(game.get_players())
            self.player_score_box.set_width(0.1 * self.get_width())
            if config.player_scores_position == 'east':
                layout = self.player_score_box.get_layout_manager()
                layout.set_vertical(True)
                board_box_layout.pack(self.player_score_box, True, True, True,
                                      clutter.BOX_ALIGNMENT_CENTER,
                                      clutter.BOX_ALIGNMENT_CENTER)
            if config.player_scores_position == 'south':
                layout = self.player_score_box.get_layout_manager()
                layout.set_vertical(False)
                board_box_layout.pack(self.player_score_box, True, True, True,
                                      clutter.BOX_ALIGNMENT_CENTER,
                                      clutter.BOX_ALIGNMENT_CENTER)
            else:
                self.board_box.add(self.player_score_box)

        # Add the box with the board in it to the screen.
        self.add(self.board_box)

        # Overlay box for displaying clue information and answers
        self.clue_overlay = ClueOverlay()
        self.clue_overlay.set_size(self.get_width(), self.get_height())
        self.add(self.clue_overlay)
        self.clue_overlay.set_opacity(0)

        # Overlay box for display category information.
        self.category_overlay = CategoryOverlay()
        self.category_overlay.set_size(self.get_width(), self.get_height())

        # Overlay box for displaying which player buzzed in.
        self.player_buzz_overlay = PlayerBuzzOverlay()
        self.player_buzz_overlay.set_size(self.get_width(), self.get_height())
        self.player_buzz_overlay.set_opacity(0)
        self.add(self.player_buzz_overlay)

        # Overlay box for displaying player score.
        self.player_score_overlay = PlayerScoreOverlay()
        self.player_score_overlay.set_size(self.get_width(), self.get_height())
        self.player_score_overlay.set_opacity(0)
        self.add(self.player_score_overlay)

        # Overlay box for daily double.
        self.daily_double_overlay = DailyDoubleOverlay()
        self.daily_double_overlay.set_size(self.get_width(), self.get_height())
        self.daily_double_overlay.set_opacity(0)
        self.add(self.daily_double_overlay)

        # Overlay box for final round.
        self.final_round_overlay = FinalRoundOverlay()
        self.final_round_overlay.set_size(self.get_width(), self.get_height())
        self.final_round_overlay.set_opacity(0)
        self.add(self.final_round_overlay)

        # Overlay box for displaying all player scores.
        self.all_player_scores_overlay = AllPlayerScoresOverlay()
        self.all_player_scores_overlay.set_size(self.get_width(),
                                                self.get_height())
        self.all_player_scores_overlay.set_opacity(0)
        self.add(self.all_player_scores_overlay)

        self.flashing_scores = False

        # Set a default stage size.
        self.set_fullscreen(False)
        self.set_size(800, 600)
        self.set_user_resizable(True)

        self.show()