@@ -248,7 +248,7 @@ def __init__(self, parent, action_registerer, settings=None):
248248 self ._clear_tree_data ()
249249 self ._editor = None
250250 self ._execution_results = None
251- self ._resources = []
251+ self ._resources = set ()
252252 self ._right_click = False
253253 self .dirty = False
254254 # DEBUG: This menu is not working because is being attached to main frame
@@ -480,7 +480,7 @@ def _clear_tree_data(self):
480480 self .root = self .AddRoot ('' )
481481 self ._resource_root = self ._create_resource_root ()
482482 self .datafile_nodes = []
483- self ._resources = []
483+ self ._resources = set ()
484484 self .controller .clear_history ()
485485
486486 def _create_resource_root (self ):
@@ -544,13 +544,19 @@ def _render_datafile(self, parent_node, controller, index=None):
544544 node = self ._create_node_with_handler (parent_node , controller , index )
545545 if not node :
546546 return None
547+ # avoid repeated resources
548+ if hasattr (controller , 'source' ) and os .path .isfile (self ._normalize (controller .source )):
549+ if not self ._normalize (controller .source ) in self ._resources :
550+ self ._resources .add (self ._normalize (controller .source ))
551+
547552 if controller .dirty :
548553 self .controller .mark_node_dirty (node )
549554 self .datafile_nodes .append (node )
550555 self .SetItemHasChildren (node , True )
551556
552557 for child in controller .children :
553- self ._render_datafile (node , child )
558+ if not self ._normalize (child .source ) in self ._resources :
559+ self ._render_datafile (node , child )
554560 return node
555561
556562 @staticmethod
0 commit comments