def status_changed(self, player, prop): log.debug( "%s" % player, extra={"task": (self.connection.username, "PTS.status_changed")}) if player not in self.players: return try: self.store.set(self.players[player]["ti"], 6, player.display_status) self.store.set(self.players[player]["ti"], 7, get_player_tooltip_text(player)) except KeyError: pass if player.status == IC_STATUS_PLAYING and player.game and \ "private" not in self.players[player]: self.players[player]["private"] = player.game.connect( "notify::private", self.private_changed, player) elif player.status != IC_STATUS_PLAYING and \ "private" in self.players[player]: game = player.game if game and game.handler_is_connected( self.players[player]["private"]): game.disconnect(self.players[player]["private"]) del self.players[player]["private"] if player == self.getSelectedPlayer(): self.onSelectionChanged(None) return False
def status_changed(self, player, prop): log.debug( "%s" % player, extra={"task": (self.connection.username, "PTS.status_changed")}) if player not in self.players: return try: self.store.set(self.players[player]["ti"], 6, player.display_status) self.store.set(self.players[player]["ti"], 7, get_player_tooltip_text(player)) except KeyError: pass if player.status == IC_STATUS_PLAYING and player.game and \ "private" not in self.players[player]: self.players[player]["private"] = player.game.connect( "notify::private", self.private_changed, player) elif player.status != IC_STATUS_PLAYING and \ "private" in self.players[player]: game = player.game if game and game.handler_is_connected(self.players[player][ "private"]): game.disconnect(self.players[player]["private"]) del self.players[player]["private"] if player == self.getSelectedPlayer(): self.onSelectionChanged(None) return False
def do_name_changed(): self.player_name_labels[color].set_text(self.player_display_text( color=color)) if isinstance(self.gamemodel, ICGameModel) and \ player.__type__ == REMOTE: self.player_name_labels[color].set_tooltip_text( get_player_tooltip_text(self.gamemodel.ficsplayers[color], show_status=False))
def do_name_changed(): self.player_name_labels[color].set_text( self.player_display_text(color=color)) if isinstance(self.gamemodel, ICGameModel) and \ player.__type__ == REMOTE: self.player_name_labels[color].set_tooltip_text( get_player_tooltip_text(self.gamemodel.ficsplayers[color], show_status=False))
def onPlayerAdded(self, players, new_players): # Let the hard work to be done in the helper connection thread np = {} for player in new_players: np[player] = ( player, player.getIcon(), player.name + player.display_titles(), player.blitz, player.standard, player.lightning, player.display_status, get_player_tooltip_text(player), ) def do_onPlayerAdded(players, new_players, np): for player in new_players: # log.debug("%s" % player, # extra={"task": (self.connection.username, # "PTS.onPlayerAdded")}) if player in self.players: # log.warning("%s already in self" % player, # extra={"task": (self.connection.username, # "PTS.onPlayerAdded")}) continue # player can leave before we finish processing "who IbslwBzSLx" if player not in np: continue self.players[player] = {} self.players[player]["ti"] = self.store.append(np[player]) self.players[player]["status"] = player.connect( "notify::status", self.status_changed) self.players[player]["game"] = player.connect( "notify::game", self.status_changed) self.players[player]["titles"] = player.connect( "notify::titles", self.titles_changed) if player.game: self.players[player]["private"] = player.game.connect( "notify::private", self.private_changed, player) self.players[player]["ratings"] = player.connect( "ratings_changed", self.elo_changed, player) count = len(self.players) self.widgets["playersOnlineLabel"].set_text( _("Players: %d") % count) return False GLib.idle_add(do_onPlayerAdded, players, new_players, np, priority=GLib.PRIORITY_LOW)
def onPlayerAdded(self, players, new_players): # Let the hard work to be done in the helper connection thread np = {} for player in new_players: np[player] = (player, player.getIcon(), player.name + player.display_titles(), player.blitz, player.standard, player.lightning, player.display_status, get_player_tooltip_text(player)) def do_onPlayerAdded(players, new_players, np): for player in new_players: # log.debug("%s" % player, # extra={"task": (self.connection.username, # "PTS.onPlayerAdded")}) if player in self.players: # log.warning("%s already in self" % player, # extra={"task": (self.connection.username, # "PTS.onPlayerAdded")}) continue # player can leave before we finish processing "who IbslwBzSLx" if player not in np: continue self.players[player] = {} self.players[player]["ti"] = self.store.append(np[player]) self.players[player]["status"] = player.connect( "notify::status", self.status_changed) self.players[player]["game"] = player.connect( "notify::game", self.status_changed) self.players[player]["titles"] = player.connect( "notify::titles", self.titles_changed) if player.game: self.players[player]["private"] = player.game.connect( "notify::private", self.private_changed, player) self.players[player]["ratings"] = player.connect( "ratings_changed", self.elo_changed, player) count = len(self.players) self.widgets["playersOnlineLabel"].set_text(_("Players: %d") % count) return False GLib.idle_add(do_onPlayerAdded, players, new_players, np, priority=GLib.PRIORITY_LOW)
def titles_changed(self, player, prop): log.debug( "%s" % player, extra={"task": (self.connection.username, "PTS.titles_changed")}) try: self.store.set(self.players[player]["ti"], 1, player.getIcon()) self.store.set(self.players[player]["ti"], 2, player.name + player.display_titles()) self.store.set(self.players[player]["ti"], 7, get_player_tooltip_text(player)) except KeyError: pass return False
def elo_changed(self, rating, prop, rating_type, player): log.debug("%s %s" % (rating, player), extra={"task": (self.connection.username, "PTS_changed")}) try: self.store.set(self.players[player]["ti"], 1, player.getIcon()) self.store.set(self.players[player]["ti"], 7, get_player_tooltip_text(player)) self.store.set(self.players[player]["ti"], self.columns[rating_type], rating) except KeyError: pass return False
def name_changed(self, player): log.debug("GameWidget.name_changed: starting %s" % repr(player)) color = self.gamemodel.color(player) glock.acquire() try: self.player_name_labels[color].set_text(self.player_display_text(color=color)) if isinstance(self.gamemodel, ICGameModel) and player.__type__ == REMOTE: self.player_name_labels[color].set_tooltip_text( get_player_tooltip_text(self.gamemodel.ficsplayers[color], show_status=False) ) finally: glock.release() self.emit("title_changed", self.display_text) log.debug("GameWidget.name_changed: returning")
def elo_changed(self, rating, prop, rating_type, player): log.debug( "%s %s" % (rating, player), extra={"task": (self.connection.username, "PTS_changed")}) try: self.store.set(self.players[player]["ti"], 1, player.getIcon()) self.store.set(self.players[player]["ti"], 7, get_player_tooltip_text(player)) self.store.set(self.players[player]["ti"], self.columns[rating_type], rating) except KeyError: pass return False
def name_changed(self, player): log.debug("GameWidget.name_changed: starting %s" % repr(player)) color = self.gamemodel.color(player) if self.gamemodel is None: return self.player_name_labels[color].set_text( self.player_display_text(color=color)) if isinstance(self.gamemodel, ICGameModel) and \ player.__type__ == REMOTE: self.player_name_labels[color].set_tooltip_text( get_player_tooltip_text(self.gamemodel.ficsplayers[color], show_status=False)) self.emit('title_changed', self.display_text) log.debug("GameWidget.name_changed: returning")
def on_query_tooltip(self, widget, x, y, keyboard_tip, tooltip): if not widget.get_tooltip_context(x, y, keyboard_tip): return False bool, wx, wy, model, path, sel_iter = widget.get_tooltip_context( x, y, keyboard_tip) bin_x, bin_y = widget.convert_widget_to_bin_window_coords(x, y) result = widget.get_path_at_pos(bin_x, bin_y) if result is not None: path, column, cell_x, cell_y = result for player, column_number in ((self.model[path][0].wplayer, 1), (self.model[path][0].bplayer, 3)): if column is self.tv.get_column(column_number): tooltip.set_text( get_player_tooltip_text(player, show_status=False)) widget.set_tooltip_cell(tooltip, path, None, None) return True return False
def name_changed(self, player): log.debug("GameWidget.name_changed: starting %s" % repr(player)) color = self.gamemodel.color(player) if self.gamemodel is None: return name = self.player_display_text(color, False) self.gamemodel.tags["White" if color == WHITE else "Black"] = name self.player_name_labels[color].set_text(name) if isinstance(self.gamemodel, ICGameModel) and player.__type__ == REMOTE: self.player_name_labels[color].set_tooltip_text( get_player_tooltip_text( self.gamemodel.ficsplayers[color], show_status=False ) ) self.emit("title_changed", self.display_text) log.debug("GameWidget.name_changed: returning")