def load_view(self, model: Gtk.TreeModel, treeiter: Gtk.TreeIter, tree: Gtk.TreeView, scroll_into_view=True): logger.debug('View selected. Locking and showing Loader.') path = model.get_path(treeiter) self._lock_trees() selected_node = model[treeiter] self._init_window_before_view_load(model[treeiter]) # Show loading stack page in editor stack self._editor_stack.set_visible_child(self.builder.get_object('es_loading')) # Set current view values for later check (if race conditions between fast switching) self._current_view_module = selected_node[2] self._current_view_controller_class = selected_node[3] self._current_view_item_id = selected_node[4] # Fully load the view and the controller AsyncTaskRunner.instance().run_task(load_controller( self._current_view_module, self._current_view_controller_class, self._current_view_item_id, self )) # Expand the node tree.expand_to_path(path) # Select node tree.get_selection().select_path(path) # Scroll node into view if scroll_into_view: tree.scroll_to_cell(path, None, True, 0.5, 0.5) self._last_selected_view_model = model self._last_selected_view_iter = treeiter