def shownChanged(self, boardview, shown): if boardview.model is None: return boardview.bluearrow = None if legalMoveCount( boardview.model.getBoardAtPly( shown, boardview.shown_variation_idx)) == 0: if self.sw.get_child() == self.tv: self.sw.remove(self.tv) label = Gtk.Label( _("In this position,\nthere is no legal move.")) label.set_property("yalign", 0.1) self.sw.add_with_viewport(label) self.sw.get_child().set_shadow_type(Gtk.ShadowType.NONE) self.sw.show_all() # stop egtb auto activation on mating lines for advisor in self.advisors: advisor.auto_activate = False return for advisor in self.advisors: advisor.shownChanged(boardview, shown) self.tv.expand_all() if self.sw.get_child() != self.tv: log.warning("bookPanel.Sidepanel.shownChanged: get_child() != tv") self.sw.remove(self.sw.get_child()) self.sw.add(self.tv)
def shownChanged(self, boardview, shown): if boardview.model is None: return boardview.bluearrow = None if legalMoveCount(boardview.model.getBoardAtPly( shown, boardview.shown_variation_idx)) == 0: if self.sw.get_child() == self.tv: self.sw.remove(self.tv) label = Gtk.Label(_( "In this position,\nthere is no legal move.")) label.set_property("yalign", 0.1) self.sw.add_with_viewport(label) self.sw.get_child().set_shadow_type(Gtk.ShadowType.NONE) self.sw.show_all() return for advisor in self.advisors: advisor.shownChanged(boardview, shown) self.tv.expand_all() if self.sw.get_child() != self.tv: log.warning("bookPanel.Sidepanel.shownChanged: get_child() != tv") self.sw.remove(self.sw.get_child()) self.sw.add(self.tv)
def _searchNow(self, ponderhit=False): log.debug("_searchNow: self.needBestmove=%s ponderhit=%s self.board=%s" % ( self.needBestmove, ponderhit, self.board), extra={"task": self.defname}) commands = [] if ponderhit: commands.append("ponderhit") elif self.mode == NORMAL: commands.append("position %s" % self.uciPosition) if self.strength <= 3: commands.append("go depth %d" % self.strength) else: if self.moves > 0: commands.append("go wtime %d winc %d btime %d binc %d movestogo %s" % ( self.wtime, self.incr, self.btime, self.incr, self.moves)) else: commands.append("go wtime %d winc %d btime %d binc %d" % ( self.wtime, self.incr, self.btime, self.incr)) else: print("stop", file=self.engine) if self.mode == INVERSE_ANALYZING: if self.board.board.opIsChecked(): # Many engines don't like positions able to take down enemy # king. Therefore we just return the "kill king" move # automaticaly self.emit("analyze", [([toAN( self.board, getMoveKillingKing(self.board))], MATE_VALUE - 1, "")]) return commands.append("position fen %s" % self.board.asFen()) else: commands.append("position %s" % self.uciPosition) # commands.append("go infinite") move_time = int(conf.get("max_analysis_spin", 3)) * 1000 commands.append("go movetime %s" % move_time) if self.hasOption("MultiPV") and self.multipvSetting > 1: self.multipvExpected = min(self.multipvSetting, legalMoveCount(self.board)) else: self.multipvExpected = 1 self.analysis = [None] * self.multipvExpected if self.needBestmove: self.commands.append(commands) log.debug("_searchNow: self.needBestmove==True, appended to self.commands=%s" % self.commands, extra={"task": self.defname}) else: for command in commands: print(command, file=self.engine) if getStatus(self.board)[ 1] != WON_MATE: # XXX This looks fishy. self.needBestmove = True self.readyForStop = True
def _searchNow (self, ponderhit=False): log.debug("_searchNow: self.needBestmove=%s ponderhit=%s self.board=%s\n" % \ (self.needBestmove, ponderhit, self.board), self.defname) with self.moveLock: commands = [] if ponderhit: commands.append("ponderhit") elif self.mode == NORMAL: commands.append("position %s" % self.uciPosition) if self.strength <= 3: commands.append("go depth %d" % self.strength) else: commands.append("go wtime %d winc %d btime %d binc %d" % \ (self.wtime, self.incr, self.btime, self.incr)) else: print >> self.engine, "stop" if self.mode == INVERSE_ANALYZING: if self.board.board.opIsChecked(): # Many engines don't like positions able to take down enemy # king. Therefore we just return the "kill king" move # automaticaly #self.emit("analyze", [([getMoveKillingKing(self.board)], MATE_VALUE-1)]) return commands.append("position fen %s" % self.board.asFen()) else: commands.append("position %s" % self.uciPosition) commands.append("go infinite") if self.hasOption("MultiPV") and self.multipvSetting > 1: self.multipvExpected = min(self.multipvSetting, legalMoveCount(self.board)) else: self.multipvExpected = 1 self.analysis = [None] * self.multipvExpected if self.needBestmove: self.commands.append(commands) log.debug("_searchNow: self.needBestmove==True, appended to self.commands=%s\n" % \ self.commands, self.defname) else: for command in commands: print >> self.engine, command if getStatus(self.board)[1] != WON_MATE: # XXX This looks fishy. self.needBestmove = True self.readyForStop = True