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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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()
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)
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)
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()