From 485bd26b361eaa8977aee3638d44a80ab7338c28 Mon Sep 17 00:00:00 2001 From: Sander Land Date: Sun, 13 Dec 2020 18:02:22 +0100 Subject: [PATCH] fix #252 --- katrain/__main__.py | 2 +- katrain/core/engine.py | 13 +++++++++---- katrain/gui/widgets/movetree.py | 3 +++ 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/katrain/__main__.py b/katrain/__main__.py index 0acb877..317d7bb 100644 --- a/katrain/__main__.py +++ b/katrain/__main__.py @@ -569,7 +569,7 @@ class KaTrainGui(Screen, KaTrainBase): self("redo", 9999) elif keycode[1] == "pageup": self.controls.move_tree.make_selected_node_main_branch() - elif keycode[1] == "n": + elif keycode[1] == "n" and not ctrl_pressed: self("find-mistake", "undo" if shift_pressed else "redo") elif keycode[1] == "delete" and ctrl_pressed: self.controls.move_tree.delete_selected_node() diff --git a/katrain/core/engine.py b/katrain/core/engine.py index 6130d7c..2f3fe3f 100644 --- a/katrain/core/engine.py +++ b/katrain/core/engine.py @@ -103,8 +103,10 @@ class KataGoEngine: i18n._("Starting Kata failed").format(command=self.command, error=e), OUTPUT_ERROR, ) return # don't start - self.analysis_thread = threading.Thread(target=self._analysis_read_thread, daemon=True).start() - self.stderr_thread = threading.Thread(target=self._read_stderr_thread, daemon=True).start() + self.analysis_thread = threading.Thread(target=self._analysis_read_thread, daemon=True) + self.stderr_thread = threading.Thread(target=self._read_stderr_thread, daemon=True) + self.analysis_thread.start() + self.stderr_thread.start() def on_new_game(self): self.base_priority += 1 @@ -201,18 +203,21 @@ class KataGoEngine: self.katrain.log(f"{analysis} received from KataGo", OUTPUT_ERROR) elif "warning" in analysis: self.katrain.log(f"{analysis} received from KataGo", OUTPUT_DEBUG) + elif "terminateId" in analysis: + self.katrain.log(f"{analysis} received from KataGo", OUTPUT_DEBUG) else: partial_result = analysis.get("isDuringSearch", False) if not partial_result: del self.queries[query_id] time_taken = time.time() - start_time + results_exist = not analysis.get("noResults", False) self.katrain.log( - f"[{time_taken:.1f}][{query_id}][{'....' if partial_result else 'done'}] KataGo analysis received: {len(analysis.get('moveInfos',[]))} candidate moves, {analysis['rootInfo']['visits']} visits", + f"[{time_taken:.1f}][{query_id}][{'....' if partial_result else 'done'}] KataGo analysis received: {len(analysis.get('moveInfos',[]))} candidate moves, {analysis['rootInfo']['visits'] if results_exist else 'n/a'} visits", OUTPUT_DEBUG, ) self.katrain.log(line, OUTPUT_EXTRA_DEBUG) try: - if callback and not analysis.get("noResults", False): + if callback and results_exist: callback(analysis, partial_result) except Exception as e: self.katrain.log(f"Error in engine callback for query {query_id}: {e}", OUTPUT_ERROR) diff --git a/katrain/gui/widgets/movetree.py b/katrain/gui/widgets/movetree.py index 3450c3d..2074e89 100644 --- a/katrain/gui/widgets/movetree.py +++ b/katrain/gui/widgets/movetree.py @@ -226,12 +226,15 @@ class MoveTree(ScrollView, BackgroundMixin): def delete_selected_node(self): self.move_tree_canvas.delete_selected_node() + self.redraw_tree_trigger() def make_selected_node_main_branch(self): self.move_tree_canvas.make_selected_node_main_branch() + self.redraw_tree_trigger() def toggle_selected_node_collapse(self): self.move_tree_canvas.toggle_selected_node_collapse() + self.redraw_tree_trigger() def scroll_to_pixel(self, x, y): if not self._viewport: