def _add_notification_message(self, player, text, chat=False, replace=False): if replace: for message in self.messages: if isinstance(message, PlayerNotificationMessage ) and message.player == player: message.dismiss() content = get_infobarmessage_content(player, text) def response_cb(infobar, response, message): if response == 1: if player is None: return self.chat.openChatWithPlayer(player.name) if response == 2: if player is None: return self.connection.client.run_command("follow %s" % player.name) message.dismiss() # self.messages.remove(message) return False message = PlayerNotificationMessage(Gtk.MessageType.INFO, content, response_cb, player, text) if chat: message.add_button(InfoBarMessageButton(_("Chat"), 1)) message.add_button(InfoBarMessageButton(_("Follow"), 2)) message.add_button( InfoBarMessageButton(Gtk.STOCK_CLOSE, Gtk.ResponseType.CANCEL)) self.messages.append(message) self.infobar.push_message(message)
def _add_notification_message(self, player, text, chat=False, replace=False): if replace: for message in self.messages: if isinstance(message, PlayerNotificationMessage) and message.player == player: message.dismiss() content = get_infobarmessage_content(player, text) def response_cb(infobar, response, message): if response == 1: if player is None: return self.chat.openChatWithPlayer(player.name) if response == 2: if player is None: return self.connection.client.run_command("follow %s" % player.name) message.dismiss() # self.messages.remove(message) return False message = PlayerNotificationMessage(Gtk.MessageType.INFO, content, response_cb, player, text) if chat: message.add_button(InfoBarMessageButton(_("Chat"), 1)) message.add_button(InfoBarMessageButton(_("Follow"), 2)) message.add_button(InfoBarMessageButton(Gtk.STOCK_CLOSE, Gtk.ResponseType.CANCEL)) self.messages.append(message) self.infobar.push_message(message)
def onChallengeAdd(self, challenges, challenge): log.debug("%s" % challenge, extra={"task": (self.connection.username, "onChallengeAdd")}) SoundTab.playAction("aPlayerChecks") # TODO: differentiate between challenges and manual-seek-accepts # (wait until seeks are comparable FICSSeek objects to do this) # Related: http://code.google.com/p/pychess/issues/detail?id=206 if challenge.adjourned: text = _(" would like to resume your adjourned <b>%(time)s</b> " + "<b>%(gametype)s</b> game.") % \ {"time": challenge.display_timecontrol, "gametype": challenge.game_type.display_text} else: text = _(" challenges you to a <b>%(time)s</b> %(rated)s <b>%(gametype)s</b> game") \ % {"time": challenge.display_timecontrol, "rated": challenge.display_rated.lower(), "gametype": challenge.game_type.display_text} if challenge.color: text += _(" where <b>%(player)s</b> plays <b>%(color)s</b>.") \ % {"player": challenge.player.name, "color": _("white") if challenge.color == "white" else _("black")} else: text += "." content = get_infobarmessage_content(challenge.player, text, gametype=challenge.game_type) def callback(infobar, response, message): if response == Gtk.ResponseType.ACCEPT: self.connection.om.acceptIndex(challenge.index) elif response == Gtk.ResponseType.NO: self.connection.om.declineIndex(challenge.index) message.dismiss() return False message = InfoBarMessage(Gtk.MessageType.QUESTION, content, callback) message.add_button( InfoBarMessageButton(_("Accept"), Gtk.ResponseType.ACCEPT)) message.add_button( InfoBarMessageButton(_("Decline"), Gtk.ResponseType.NO)) message.add_button( InfoBarMessageButton(Gtk.STOCK_CLOSE, Gtk.ResponseType.CANCEL)) self.messages[hash(challenge)] = message self.infobar.push_message(message) txi = self.store.prepend([ challenge, challenge.player.getIcon(gametype=challenge.game_type), self.chaPix, challenge.player.name + challenge.player.display_titles(), challenge.player_rating, challenge.display_rated, challenge.game_type.display_text, challenge.display_timecontrol, challenge.sortable_time, self.textcolor_normal(), get_challenge_tooltip_text(challenge) ]) self.challenges[hash(challenge)] = txi self.__updateActiveSeeksLabel() self.widgets["seektreeview"].scroll_to_cell(self.store.get_path(txi))
def onChallengeAdd(self, challenges, challenge): log.debug("%s" % challenge, extra={"task": (self.connection.username, "onChallengeAdd")}) SoundTab.playAction("aPlayerChecks") # TODO: differentiate between challenges and manual-seek-accepts # (wait until seeks are comparable FICSSeek objects to do this) # Related: http://code.google.com/p/pychess/issues/detail?id=206 if challenge.adjourned: text = _(" would like to resume your adjourned <b>%(time)s</b> " + "<b>%(gametype)s</b> game.") % \ {"time": challenge.display_timecontrol, "gametype": challenge.game_type.display_text} else: text = _(" challenges you to a <b>%(time)s</b> %(rated)s <b>%(gametype)s</b> game") \ % {"time": challenge.display_timecontrol, "rated": challenge.display_rated.lower(), "gametype": challenge.game_type.display_text} if challenge.color: text += _(" where <b>%(player)s</b> plays <b>%(color)s</b>.") \ % {"player": challenge.player.name, "color": _("white") if challenge.color == "white" else _("black")} else: text += "." content = get_infobarmessage_content(challenge.player, text, gametype=challenge.game_type) def callback(infobar, response, message): if response == Gtk.ResponseType.ACCEPT: self.connection.om.acceptIndex(challenge.index) elif response == Gtk.ResponseType.NO: self.connection.om.declineIndex(challenge.index) message.dismiss() return False message = InfoBarMessage(Gtk.MessageType.QUESTION, content, callback) message.add_button(InfoBarMessageButton( _("Accept"), Gtk.ResponseType.ACCEPT)) message.add_button(InfoBarMessageButton( _("Decline"), Gtk.ResponseType.NO)) message.add_button(InfoBarMessageButton(Gtk.STOCK_CLOSE, Gtk.ResponseType.CANCEL)) self.messages[hash(challenge)] = message self.infobar.push_message(message) txi = self.store.prepend( [challenge, challenge.player.getIcon(gametype=challenge.game_type), self.chaPix, challenge.player.name + challenge.player.display_titles(), challenge.player_rating, challenge.display_rated, challenge.game_type.display_text, challenge.display_timecontrol, challenge.sortable_time, self.textcolor_normal(), get_challenge_tooltip_text(challenge)]) self.challenges[hash(challenge)] = txi self.__updateActiveSeeksLabel() self.widgets["seektreeview"].scroll_to_cell(self.store.get_path(txi))
def _replace_notification_message(self, obj, prop, rating_type, player): log.debug("%s %s" % (repr(obj), player), extra={"task": (self.connection.username, "_replace_notification_message")}) for message in self.messages: if isinstance(message, PlayerNotificationMessage) and \ message.player == player: message.update_content(get_infobarmessage_content( player, message.text)) return False
def player_on_noplay(self, bm, player): text = _(" noplay listing you") content = get_infobarmessage_content(player, text) def response_cb(infobar, response, message): message.dismiss() return False message = InfoBarMessage(Gtk.MessageType.INFO, content, response_cb) message.add_button( InfoBarMessageButton(Gtk.STOCK_CLOSE, Gtk.ResponseType.CANCEL)) self.messages.append(message) self.infobar.push_message(message)
def matchDeclined(self, bm, player): text = _(" has declined your offer for a match") content = get_infobarmessage_content(player, text) def response_cb(infobar, response, message): message.dismiss() return False message = InfoBarMessage(Gtk.MessageType.INFO, content, response_cb) message.add_button( InfoBarMessageButton(Gtk.STOCK_CLOSE, Gtk.ResponseType.CANCEL)) self.messages.append(message) self.infobar.push_message(message)
def player_lagged (self, bm, player): if player in self.gamemodel.ficsplayers: content = get_infobarmessage_content(player, _(" has lagged for 30 seconds"), self.gamemodel.ficsgame.game_type) def response_cb (infobar, response, message): message.dismiss() return False message = InfoBarMessage(Gtk.MessageType.INFO, content, response_cb) message.add_button(InfoBarMessageButton(Gtk.STOCK_CLOSE, Gtk.ResponseType.CANCEL)) self.showMessage(message) return False
def player_on_noplay(self, bm, player): text = _(" noplay listing you") content = get_infobarmessage_content(player, text) def response_cb(infobar, response, message): message.dismiss() return False message = InfoBarMessage(Gtk.MessageType.INFO, content, response_cb) message.add_button(InfoBarMessageButton(Gtk.STOCK_CLOSE, Gtk.ResponseType.CANCEL)) self.messages.append(message) self.infobar.push_message(message)
def matchDeclined(self, bm, player): text = _(" has declined your offer for a match") content = get_infobarmessage_content(player, text) def response_cb(infobar, response, message): message.dismiss() return False message = InfoBarMessage(Gtk.MessageType.INFO, content, response_cb) message.add_button(InfoBarMessageButton(Gtk.STOCK_CLOSE, Gtk.ResponseType.CANCEL)) self.messages.append(message) self.infobar.push_message(message)
def _infobar_adjourned_message(self, game, player): if player not in self.messages: text = _(" with whom you have an adjourned <b>%(timecontrol)s</b> " + "<b>%(gametype)s</b> game is online.") % { "timecontrol": game.display_timecontrol, "gametype": game.game_type.display_text, } content = get_infobarmessage_content(player, text, gametype=game.game_type) def callback(infobar, response, message): log.debug( "%s" % player, extra={ "task": ( self.connection.username, "_infobar_adjourned_message.callback", ) }, ) if response == Gtk.ResponseType.ACCEPT: self.connection.client.run_command("match %s" % player.name) elif response == Gtk.ResponseType.HELP: self.connection.adm.queryMoves(game) else: try: self.messages[player].dismiss() del self.messages[player] except KeyError: pass return False message = InfoBarMessage(Gtk.MessageType.QUESTION, content, callback) message.add_button( InfoBarMessageButton(_("Request Continuation"), Gtk.ResponseType.ACCEPT)) message.add_button( InfoBarMessageButton(_("Examine Adjourned Game"), Gtk.ResponseType.HELP)) message.add_button( InfoBarMessageButton(Gtk.STOCK_CLOSE, Gtk.ResponseType.CANCEL)) make_sensitive_if_available(message.buttons[0], player) self.messages[player] = message self.infobar.push_message(message)
def _infobar_adjourned_message(self, game, player): if player not in self.messages: text = _(" with whom you have an adjourned <b>%(timecontrol)s</b> " + "<b>%(gametype)s</b> game is online.") % \ {"timecontrol": game.display_timecontrol, "gametype": game.game_type.display_text} content = get_infobarmessage_content(player, text, gametype=game.game_type) def callback(infobar, response, message): log.debug( "%s" % player, extra={"task": (self.connection.username, "_infobar_adjourned_message.callback")}) if response == Gtk.ResponseType.ACCEPT: self.connection.client.run_command("match %s" % player.name) elif response == Gtk.ResponseType.HELP: self.connection.adm.queryMoves(game) else: try: self.messages[player].dismiss() del self.messages[player] except KeyError: pass return False message = InfoBarMessage(Gtk.MessageType.QUESTION, content, callback) message.add_button(InfoBarMessageButton( _("Request Continuation"), Gtk.ResponseType.ACCEPT)) message.add_button(InfoBarMessageButton( _("Examine Adjourned Game"), Gtk.ResponseType.HELP)) message.add_button(InfoBarMessageButton(Gtk.STOCK_CLOSE, Gtk.ResponseType.CANCEL)) make_sensitive_if_available(message.buttons[0], player) self.messages[player] = message self.infobar.push_message(message)