Skip to content

Commit 51a204c

Browse files
author
cool-RR
committed
-
1 parent ce8bda3 commit 51a204c

File tree

1 file changed

+25
-3
lines changed

1 file changed

+25
-3
lines changed

garlicsim_wx/garlicsim_wx/gui_project.py

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,8 @@ def __init_general(self, simpack, frame, project=None):
182182
self._temp_shell_command_history = None
183183
'''Deleted immediately after.'''
184184

185+
self._job_and_node_of_recent_fork_by_crunching = None
186+
185187
#######################################################################
186188
# Setting up namespace:
187189

@@ -252,7 +254,8 @@ def __init_emitters(self):
252254
self.tree_structure_modified_emitter = es.make_emitter(
253255
outputs=(
254256
self.tree_modified_emitter,
255-
self._update_step_profiles_set
257+
self._update_step_profiles_set,
258+
self._if_forked_by_crunching_recently_switch_to_new_path,
256259
),
257260
name='tree_structure_modified',
258261
)
@@ -696,8 +699,12 @@ def fork_by_crunching(self, *args, **kwargs):
696699

697700
kwargs = {'step_profile': step_profile}
698701

699-
return self.project.begin_crunching(node, self.default_buffer or 1,
700-
step_profile)
702+
job = self.project.begin_crunching(node, self.default_buffer or 1,
703+
step_profile)
704+
705+
self._job_and_node_of_recent_fork_by_crunching = (job, node)
706+
707+
return job
701708

702709

703710
def fork_by_editing(self):
@@ -817,6 +824,21 @@ def __check_if_step_profile_changed(self):
817824
self.active_step_profile_changed_emitter.emit()
818825

819826

827+
def _if_forked_by_crunching_recently_switch_to_new_path(self):
828+
if self._job_and_node_of_recent_fork_by_crunching:
829+
job, old_node = self._job_and_node_of_recent_fork_by_crunching
830+
new_node = job.crunching_profile.node
831+
832+
if new_node is not old_node:
833+
new_path = new_node.make_containing_path()
834+
835+
assert old_node in new_path
836+
# Cause `new_node` was born out of `old_node`.
837+
838+
self.set_path(new_path)
839+
self._job_and_node_of_recent_fork_by_crunching = None
840+
841+
820842
def __reduce__(self):
821843
my_dict = dict(self.__dict__)
822844

0 commit comments

Comments
 (0)