本文整理汇总了Python中pychess.widgets.InfoBar.InfoBarMessage.callback方法的典型用法代码示例。如果您正苦于以下问题:Python InfoBarMessage.callback方法的具体用法?Python InfoBarMessage.callback怎么用?Python InfoBarMessage.callback使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pychess.widgets.InfoBar.InfoBarMessage
的用法示例。
在下文中一共展示了InfoBarMessage.callback方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: game_ended
# 需要导入模块: from pychess.widgets.InfoBar import InfoBarMessage [as 别名]
# 或者: from pychess.widgets.InfoBar.InfoBarMessage import callback [as 别名]
def game_ended (gamemodel, reason, gmwidg):
log.debug("gamenanny.game_ended: reason=%s gmwidg=%s\ngamemodel=%s" % \
(reason, gmwidg, gamemodel))
nameDic = {"white": gamemodel.players[WHITE],
"black": gamemodel.players[BLACK],
"mover": gamemodel.curplayer}
if gamemodel.status == WHITEWON:
nameDic["winner"] = gamemodel.players[WHITE]
nameDic["loser"] = gamemodel.players[BLACK]
elif gamemodel.status == BLACKWON:
nameDic["winner"] = gamemodel.players[BLACK]
nameDic["loser"] = gamemodel.players[WHITE]
m1 = reprResult_long[gamemodel.status] % nameDic
m2 = reprReason_long[reason] % nameDic
if gamemodel.reason == WON_ADJUDICATION:
color = BLACK if gamemodel.status == WHITEWON else WHITE
invalid_move = gamemodel.players[color].invalid_move
if invalid_move:
m2 += _(" invalid engine move: %s" % invalid_move)
content = InfoBar.get_message_content(m1, m2, Gtk.STOCK_DIALOG_INFO)
message = InfoBarMessage(Gtk.MessageType.INFO, content, None)
callback = None
if isinstance(gamemodel, ICGameModel):
if gamemodel.hasLocalPlayer() and not gamemodel.examined:
def status_changed (player, prop, message):
make_sensitive_if_available(message.buttons[0], player)
make_sensitive_if_playing(message.buttons[1], player)
def callback (infobar, response, message):
if response == 0:
gamemodel.remote_player.offerRematch()
elif response == 1:
gamemodel.remote_player.observe()
return False
gmwidg.cids[gamemodel.remote_ficsplayer] = \
gamemodel.remote_ficsplayer.connect("notify::status", status_changed, message)
message.add_button(InfoBarMessageButton(_("Offer Rematch"), 0))
message.add_button(InfoBarMessageButton(
_("Observe %s" % gamemodel.remote_ficsplayer.name), 1))
status_changed(gamemodel.remote_ficsplayer, None, message)
else:
def status_changed (player, prop, button):
make_sensitive_if_playing(button, player)
def callback (infobar, response, message):
if response in (0, 1):
gamemodel.players[response].observe()
return False
for i, p in enumerate(gamemodel.ficsplayers):
b = InfoBarMessageButton(_("Observe %s" % p.name), i)
message.add_button(b)
gmwidg.cids[p] = p.connect("notify::status", status_changed, b)
status_changed(p, None, b)
elif gamemodel.hasLocalPlayer():
def callback (infobar, response, message):
if response == 1:
# newGameDialog uses ionest uses gamenanny uses newGameDialog...
from pychess.widgets.newGameDialog import createRematch
createRematch(gamemodel)
elif response == 2:
if gamemodel.ply > 1:
offer = Offer(TAKEBACK_OFFER, gamemodel.ply-2)
else:
offer = Offer(TAKEBACK_OFFER, gamemodel.ply-1)
if gamemodel.players[0].__type__ == LOCAL:
gamemodel.players[0].emit("offer", offer)
else: gamemodel.players[1].emit("offer", offer)
return False
if not gamemodel.isLoadedGame():
message.add_button(InfoBarMessageButton(_("Play Rematch"), 1))
if gamemodel.status in UNDOABLE_STATES and gamemodel.reason in UNDOABLE_REASONS:
if gamemodel.ply == 1:
message.add_button(InfoBarMessageButton(_("Undo one move"), 2))
elif gamemodel.ply > 1:
message.add_button(InfoBarMessageButton(_("Undo two moves"), 2))
message.callback = callback
gmwidg.game_ended_message = message
if len(key2gmwidg) > 0:
gmwidg.replaceMessages(message)
gmwidg.status("%s %s." % (m1,m2[0].lower()+m2[1:]))
if reason == WHITE_ENGINE_DIED:
engineDead(gamemodel.players[0], gmwidg)
elif reason == BLACK_ENGINE_DIED:
engineDead(gamemodel.players[1], gmwidg)
if (isinstance(gamemodel, ICGameModel) and not gamemodel.isObservationGame()) or \
gamemodel.isEngine2EngineGame():
gamemodel.restart_analyzer(HINT)
gamemodel.restart_analyzer(SPY)
if not conf.get("hint_mode", False):
gamemodel.pause_analyzer(HINT)
if not conf.get("spy_mode", False):
gamemodel.pause_analyzer(SPY)
return False