Create shortcut to undo back to main branch

This commit is contained in:
LiamHz committed 2021-01-18 13:01:15 -08:00
1 parent 0822ee513a
commit fd5eb14efd
4 files changed
+13

No files matched your search

+1
View File
@@ -51,6 +51,7 @@ Many thanks to these additional authors:
* Carton He for contributions to sgf parsing and handling.
* "blamarche" for adding the board coordinates toggle.
* "pdeblanc" for adding the ancient chinese scoring option.
* "LiamHz" for adding the undo to main branch keyboard shortcut.
## Translators
+1
View File
@@ -184,6 +184,7 @@ In addition to shortcuts mentioned above and those shown in the main menu:
* **[Ctrl-delete]** Delete current node.
* **[c]** Collapse/Uncollapse the branch from the current node to the previous branching point.
* **[b]** Go back to the previous branching point.
* **[Shift-b]** Go back the the main branch.
* **[n]** As in clicking the forward red arrow, go to one move before the next mistake (orange or worse) by a human player.
* **[Shift-n]** As in clicking the backward red arrow, go to one move before the previous mistake.
* **[scroll up]**: Undo move. Only works when hovering the cursor over the board.
+2
View File
@@ -610,6 +610,8 @@ class KaTrainGui(Screen, KaTrainBase):
self.controls.set_status(i18n._("Copied SGF to clipboard."), STATUS_INFO)
elif keycode[1] == "v" and ctrl_pressed:
self.load_sgf_from_clipboard()
elif keycode[1] == "b" and shift_pressed:
self("undo", "main-branch")
elif keycode[1] in shortcuts.keys() and not ctrl_pressed:
shortcut = shortcuts[keycode[1]]
if isinstance(shortcut, Widget):
+9
View File
@@ -279,9 +279,14 @@ class Game:
self._calculate_groups()
return
break_on_branch = False
break_on_main_branch = False
last_branching_node = cn
if n_times == "branch":
n_times = 9999
break_on_branch = True
elif n_times == "main-branch":
n_times = 9999
break_on_main_branch = True
for move in range(n_times):
if (
stop_on_mistake is not None
@@ -297,6 +302,10 @@ class Game:
cn = cn.parent
if break_on_branch and len(cn.children) > 1:
break
elif break_on_main_branch and len(cn.children) > 1:
last_branching_node = cn
if break_on_main_branch:
cn = last_branching_node
self.set_current_node(cn)
def redo(self, n_times=1, stop_on_mistake=None):