RubendeBruin / DAVE

DAVE - Design Analysis Visualization and Engineering
Mozilla Public License 2.0
29 stars 7 forks source link

F2 rename : tree not updated for managed nodes that are also renamed #180

Open RubendeBruin opened 4 days ago

RubendeBruin commented 4 days ago

See bug report per email:

Made Frame,
Added a liftpoint
copy-pasted it a few times
deleted some of them
renamed with F2

and then I got this error

Probably because I renaming also renamed the managed nodes, and those were not updated in the tree I think....

The error is:

-------------------------

  File "C:\data\DAVE\public\DAVE\src\DAVE\gui\widget_nodetree.py", line 510, in item_clicked
    self.guiSelectNode(name)
  File "C:\data\DAVE\public\DAVE\src\DAVE\gui\main.py", line 3640, in guiSelectNode
    node = self.scene._node_from_node_or_str(node_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\data\DAVE\public\DAVE\src\DAVE\scene.py", line 403, in _node_from_node_or_str
    return self[node]
           ~~~~^^^^^^
  File "C:\data\DAVE\public\DAVE\src\DAVE\scene.py", line 831, in __getitem__
    return self.node_by_name(node_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\data\DAVE\public\DAVE\src\DAVE\scene.py", line 823, in node_by_name
    raise ValueError(

ValueError: No node with name "LP2/circle". Did you mean: "LP3/circle"? Available names printed above.

Log:

Starting GUI
Version 2.3.0.post1.dev81+g88fda5c
Assigned Scene to logger
Update resource paths
Update recent file menu
Get recent files
Get dock Properties
Get dock Environment
Get dock Derived Properties
Get dock Watches
Get dock Tags
Get dock Node Tree
Get dock TimeLine
Create dockgroups
Activate dockgroup: Build
Terminate animation, keep_current_dofs = False
Get dock Quick actions
Toggle show sea
Gui emit event guiEventType.VIEWER_SETTINGS_UPDATE from None placed in queue
Gui emit event guiEventType.VIEWER_SETTINGS_UPDATE from None (repeated)
Change paintset
Select none
Change paintset
Select none
Change paintset
Select none
Autosave write
Autosaved to C:\Users\MS12H\DAVE_models\.autosave\autosave_20240703_184415_236.dave
Gui select node system extend False new False
Gui emit event guiEventType.SELECTION_CHANGED from None placed in queue
Gui emit event guiEventType.SELECTION_CHANGED from None (repeated)
Visual update selection
Autosave write
Autosaved to C:\Users\MS12H\DAVE_models\.autosave\autosave_20240703_184415_236.dave
Gui select node Component extend False new False
Gui emit event guiEventType.SELECTION_CHANGED from None placed in queue
Gui emit event guiEventType.SELECTION_CHANGED from None (repeated)
Visual update selection
Clear
Run code: s.clear()
Code executed successfully
Give feedback: Code executed successfully

Tidy history
Give clean history
Gui emit event guiEventType.FULL_UPDATE from None placed in queue
Gui emit event guiEventType.SELECTION_CHANGED from None placed in queue
Gui emit event guiEventType.FULL_UPDATE from None
Visual update selection
Gui emit event guiEventType.SELECTION_CHANGED from None
Visual update selection
Run code: s.new_frame(name = 'Frame' )
Add undo point, type = UndoType.CLEAR_AND_RUN_CODE
Code executed successfully
Give feedback: Code executed successfully

Tidy history
Give clean history
New unmanaged node detected: Frame
Gui select node Frame extend False new True
Gui emit event guiEventType.NEW_NODE_ADDED from None placed in queue
Gui emit event guiEventType.SELECTION_CHANGED from None placed in queue
Gui emit event guiEventType.MODEL_STRUCTURE_CHANGED from None placed in queue
Place input focus on name of node
Gui emit event guiEventType.NEW_NODE_ADDED from None
Visual update selection
Gui emit event guiEventType.SELECTION_CHANGED from None
Visual update selection
Gui emit event guiEventType.MODEL_STRUCTURE_CHANGED from None
Visual update selection
Gui select node Frame extend False new False
Open context menu at Frame PySide6.QtCore.QPoint(260, 299)
Run code: LiftPoint(s, name=s.available_name_like("LP")).parent = 'Frame'
Add undo point, type = UndoType.CLEAR_AND_RUN_CODE
Code executed successfully
Give feedback: Code executed successfully

Tidy history
Give clean history
New unmanaged node detected: LP
Gui select node LP extend False new True
Gui emit event guiEventType.NEW_NODE_ADDED from None placed in queue
Gui emit event guiEventType.SELECTION_CHANGED from None placed in queue
Gui emit event guiEventType.MODEL_STRUCTURE_CHANGED from None placed in queue
Place input focus on name of node
Gui emit event guiEventType.NEW_NODE_ADDED from None
Visual update selection
Gui emit event guiEventType.SELECTION_CHANGED from None
Visual update selection
Gui emit event guiEventType.MODEL_STRUCTURE_CHANGED from None
Visual update selection
Gui select node LP extend False new False
Give feedback: Duplicate node LP copied to clipboard
To Clipboard: #DAVESCRIPT_RUNs.duplicate_branch("LP")
Executing code from clipboard
Run code: s.duplicate_branch("LP")
Add undo point, type = UndoType.CLEAR_AND_RUN_CODE
Code executed successfully
Give feedback: Code executed successfully

Tidy history
Give clean history
New unmanaged node detected: LP2
Gui select node LP2 extend False new True
Gui emit event guiEventType.NEW_NODE_ADDED from None placed in queue
Gui emit event guiEventType.SELECTION_CHANGED from None placed in queue
Gui emit event guiEventType.MODEL_STRUCTURE_CHANGED from None placed in queue
Place input focus on name of node
Gui emit event guiEventType.NEW_NODE_ADDED from None
Visual update selection
Gui emit event guiEventType.SELECTION_CHANGED from None
Visual update selection
Gui emit event guiEventType.MODEL_STRUCTURE_CHANGED from None
Visual update selection
Gui select node LP extend False new False
Gui emit event guiEventType.SELECTION_CHANGED from None placed in queue
Gui emit event guiEventType.SELECTION_CHANGED from None (repeated)
Visual update selection
Give feedback: Duplicate node LP copied to clipboard
To Clipboard: #DAVESCRIPT_RUNs.duplicate_branch("LP")
Executing code from clipboard
Run code: s.duplicate_branch("LP")
Add undo point, type = UndoType.CLEAR_AND_RUN_CODE
Code executed successfully
Give feedback: Code executed successfully

Tidy history
Give clean history
New unmanaged node detected: LP3
Gui select node LP3 extend False new True
Gui emit event guiEventType.NEW_NODE_ADDED from None placed in queue
Gui emit event guiEventType.SELECTION_CHANGED from None placed in queue
Gui emit event guiEventType.MODEL_STRUCTURE_CHANGED from None placed in queue
Place input focus on name of node
Gui emit event guiEventType.NEW_NODE_ADDED from None
Visual update selection
Gui emit event guiEventType.SELECTION_CHANGED from None
Visual update selection
Gui emit event guiEventType.MODEL_STRUCTURE_CHANGED from None
Visual update selection
Gui select node LP2 extend False new False
Gui emit event guiEventType.SELECTION_CHANGED from None placed in queue
Gui emit event guiEventType.SELECTION_CHANGED from None (repeated)
Visual update selection
Run code: 
s['LP2'].position = (10.0, 0.0, 0.0)
Add undo point, type = UndoType.CLEAR_AND_RUN_CODE
Code executed successfully
Give feedback: Code executed successfully

Tidy history
Give clean history
Gui emit event guiEventType.SELECTED_NODE_MODIFIED from None placed in queue
Gui emit event guiEventType.SELECTED_NODE_MODIFIED from None (repeated)
Run code: 
s['LP2'].position = (20.0, 0.0, 0.0)
Add undo point, type = UndoType.CLEAR_AND_RUN_CODE
Code executed successfully
Give feedback: Code executed successfully

Tidy history
Give clean history
Gui emit event guiEventType.SELECTED_NODE_MODIFIED from None placed in queue
Gui emit event guiEventType.SELECTED_NODE_MODIFIED from None (repeated)
Gui select node LP3 extend False new False
Gui emit event guiEventType.SELECTION_CHANGED from None placed in queue
Gui emit event guiEventType.SELECTION_CHANGED from None (repeated)
Visual update selection
Delete key pressed
Run code: s.delete('LP3')
Add undo point, type = UndoType.CLEAR_AND_RUN_CODE
Code executed successfully
Give feedback: Code executed successfully

Tidy history
Give clean history
Gui emit event guiEventType.SELECTION_CHANGED from None placed in queue
Gui emit event guiEventType.MODEL_STRUCTURE_CHANGED from None placed in queue
Select none
Gui emit event guiEventType.SELECTION_CHANGED from None
Visual update selection
Gui emit event guiEventType.MODEL_STRUCTURE_CHANGED from None
Visual update selection
Gui select node Frame extend False new False
Gui emit event guiEventType.SELECTION_CHANGED from None placed in queue
Gui emit event guiEventType.SELECTION_CHANGED from None (repeated)
Visual update selection
Gui select node LP extend False new False
Gui emit event guiEventType.SELECTION_CHANGED from None placed in queue
Gui emit event guiEventType.SELECTION_CHANGED from None (repeated)
Visual update selection
Delete key pressed
Run code: s.delete('LP')
Add undo point, type = UndoType.CLEAR_AND_RUN_CODE
Code executed successfully
Give feedback: Code executed successfully

Tidy history
Give clean history
Gui emit event guiEventType.SELECTION_CHANGED from None placed in queue
Gui emit event guiEventType.MODEL_STRUCTURE_CHANGED from None placed in queue
Select none
Gui emit event guiEventType.SELECTION_CHANGED from None
Visual update selection
Gui emit event guiEventType.MODEL_STRUCTURE_CHANGED from None
Visual update selection
Gui select node LP2 extend False new False
Gui emit event guiEventType.SELECTION_CHANGED from None placed in queue
Gui emit event guiEventType.SELECTION_CHANGED from None (repeated)
Visual update selection
Give feedback: Duplicate node LP2 copied to clipboard
To Clipboard: #DAVESCRIPT_RUNs.duplicate_branch("LP2")
Executing code from clipboard
Run code: s.duplicate_branch("LP2")
Add undo point, type = UndoType.CLEAR_AND_RUN_CODE
Code executed successfully
Give feedback: Code executed successfully

Tidy history
Give clean history
New unmanaged node detected: LP3
Gui select node LP3 extend False new True
Gui emit event guiEventType.NEW_NODE_ADDED from None placed in queue
Gui emit event guiEventType.SELECTION_CHANGED from None placed in queue
Gui emit event guiEventType.MODEL_STRUCTURE_CHANGED from None placed in queue
Place input focus on name of node
Gui emit event guiEventType.NEW_NODE_ADDED from None
Visual update selection
Gui emit event guiEventType.SELECTION_CHANGED from None
Visual update selection
Gui emit event guiEventType.MODEL_STRUCTURE_CHANGED from None
Visual update selection
Gui select node LP3 extend False new False
Gui select node LP2 extend False new False
Gui emit event guiEventType.SELECTION_CHANGED from None placed in queue
Gui emit event guiEventType.SELECTION_CHANGED from None (repeated)
Visual update selection
Gui select node LP3 extend False new False
Gui emit event guiEventType.SELECTION_CHANGED from None placed in queue
Gui emit event guiEventType.SELECTION_CHANGED from None (repeated)
Visual update selection
Autosave write
Autosaved to C:\Users\MS12H\DAVE_models\.autosave\autosave_20240703_184415_236.dave
Open context menu at LP2 PySide6.QtCore.QPoint(235, 317)
Gui select node LP2 extend False new False
Gui emit event guiEventType.SELECTION_CHANGED from None placed in queue
Gui emit event guiEventType.SELECTION_CHANGED from None (repeated)
Visual update selection
Run code: s['LP2'].name = 'nieuwe naam'
Add undo point, type = UndoType.CLEAR_AND_RUN_CODE
Code executed successfully
Give feedback: Code executed successfully

Tidy history
Give clean history
Gui emit event guiEventType.SELECTED_NODE_MODIFIED from <DAVE.gui.widget_nodetree.WidgetNodeTree(0x1c583c3a6a0, name="Node Tree") at 0x000001C58294A040> placed in queue
Gui emit event guiEventType.SELECTED_NODE_MODIFIED from <DAVE.gui.widget_nodetree.WidgetNodeTree(0x1c583c3a6a0, name="Node Tree") at 0x000001C58294A040> (repeated)
Run code: self.visual.SkyBoxOn()
Add undo point, type = UndoType.CLEAR_AND_RUN_CODE
Code executed successfully
Give feedback: Code executed successfully

Tidy history
Give clean history
Gui emit event guiEventType.VIEWER_SETTINGS_UPDATE from None placed in queue
Run code: self.visual.load_hdr(r'C:\data\DAVE\public\DAVE\src\DAVE\resources\default.hdr')
Gui emit event guiEventType.VIEWER_SETTINGS_UPDATE from None
Starting exception handling
  File "C:\data\DAVE\public\DAVE\src\DAVE\gui\main.py", line 3498, in <lambda>
    0, lambda: self.guiEmitEvent(event, sender, execute_now=True)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\data\DAVE\public\DAVE\src\DAVE\gui\main.py", line 3555, in guiEmitEvent
    widget.guiEvent(event)
  File "C:\data\DAVE\public\DAVE\src\DAVE\gui\dock_system\dockwidget.py", line 88, in guiEvent
    self.guiProcessEvent(event)
  File "C:\data\DAVE\public\DAVE\src\DAVE\gui\widget_nodetree.py", line 393, in guiProcessEvent
    self.update_node_visibility()
  File "C:\data\DAVE\public\DAVE\src\DAVE\gui\widget_nodetree.py", line 578, in update_node_visibility
    node = self.guiScene[name]
           ~~~~~~~~~~~~~^^^^^^
  File "C:\data\DAVE\public\DAVE\src\DAVE\scene.py", line 831, in __getitem__
    return self.node_by_name(node_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\data\DAVE\public\DAVE\src\DAVE\scene.py", line 823, in node_by_name
    raise ValueError(

ValueError: No node with name "LP2/circle". Did you mean: "LP3/circle"? 
Available names printed above.
Add undo point, type = UndoType.CLEAR_AND_RUN_CODE
Code executed successfully
Give feedback: Code executed successfully

Tidy history
Give clean history
Gui emit event guiEventType.VIEWER_SETTINGS_UPDATE from None placed in queue
Gui emit event guiEventType.VIEWER_SETTINGS_UPDATE from None (repeated)
Starting exception handling
  File "C:\data\DAVE\public\DAVE\src\DAVE\gui\main.py", line 3498, in <lambda>
    0, lambda: self.guiEmitEvent(event, sender, execute_now=True)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\data\DAVE\public\DAVE\src\DAVE\gui\main.py", line 3555, in guiEmitEvent
    widget.guiEvent(event)
  File "C:\data\DAVE\public\DAVE\src\DAVE\gui\dock_system\dockwidget.py", line 88, in guiEvent
    self.guiProcessEvent(event)
  File "C:\data\DAVE\public\DAVE\src\DAVE\gui\widget_nodetree.py", line 393, in guiProcessEvent
    self.update_node_visibility()
  File "C:\data\DAVE\public\DAVE\src\DAVE\gui\widget_nodetree.py", line 578, in update_node_visibility
    node = self.guiScene[name]
           ~~~~~~~~~~~~~^^^^^^
  File "C:\data\DAVE\public\DAVE\src\DAVE\scene.py", line 831, in __getitem__
    return self.node_by_name(node_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\data\DAVE\public\DAVE\src\DAVE\scene.py", line 823, in node_by_name
    raise ValueError(

ValueError: No node with name "LP2/circle". Did you mean: "LP3/circle"? 
Available names printed above.
Autosave write
Autosaved to C:\Users\MS12H\DAVE_models\.autosave\autosave_20240703_184415_236.dave
Gui select node LP3 extend False new False
Gui emit event guiEventType.SELECTION_CHANGED from None placed in queue
Gui emit event guiEventType.SELECTION_CHANGED from None (repeated)
Visual update selection
Gui select node LP2/circle extend False new False
Starting exception handling
  File "C:\data\DAVE\public\DAVE\src\DAVE\gui\widget_nodetree.py", line 510, in item_clicked
    self.guiSelectNode(name)
  File "C:\data\DAVE\public\DAVE\src\DAVE\gui\main.py", line 3640, in guiSelectNode
    node = self.scene._node_from_node_or_str(node_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\data\DAVE\public\DAVE\src\DAVE\scene.py", line 403, in _node_from_node_or_str
    return self[node]
           ~~~~^^^^^^
  File "C:\data\DAVE\public\DAVE\src\DAVE\scene.py", line 831, in __getitem__
    return self.node_by_name(node_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\data\DAVE\public\DAVE\src\DAVE\scene.py", line 823, in node_by_name
    raise ValueError(

ValueError: No node with name "LP2/circle". Did you mean: "LP3/circle"? 
Available names printed above.
Autosave write
Autosaved to C:\Users\MS12H\DAVE_models\.autosave\autosave_20240703_184415_236.dave

--ACTIONS--
s.clear()
s.new_frame(name = 'Frame' )
LiftPoint(s, name=s.available_name_like("LP")).parent = 'Frame'
s.duplicate_branch("LP")
s.duplicate_branch("LP")

s['LP2'].position = (10.0, 0.0, 0.0)

s['LP2'].position = (20.0, 0.0, 0.0)
s.delete('LP3')
s.delete('LP')
s.duplicate_branch("LP2")
s['LP2'].name = 'nieuwe naam'
self.visual.SkyBoxOn()
self.visual.load_hdr(r'C:\data\DAVE\public\DAVE\src\DAVE\resources\default.hdr')

--SCENE--

# auto generated python code
# By MS12H
# Time: 2024-07-03 18:49:23 UTC

# To be able to distinguish the important number (eg: fixed positions) from
# non-important numbers (eg: a position that is solved by the static solver) we use a dummy-function called 'solved'.
# For anything written as solved(number) that actual number does not influence the static solution

def solved(number):
    return number

# Environment settings
s.g = 9.80665
s.waterlevel = 0.0
s.rho_air = 0.00126
s.rho_water = 1.025
s.wind_direction = 0.0
s.wind_velocity = 0.0
s.current_direction = 0.0
s.current_velocity = 0.0

# code for Frame
s.new_frame(name='Frame',
           position=(0,
                     0,
                     0),
           rotation=(0,
                     0,
                     0),
           fixed =(True, True, True, True, True, True),
            )

liftpoint = LiftPoint(s, 'nieuwe naam')
liftpoint.mass=-0.000
liftpoint.cog=(0.000,0.000,0.000)
liftpoint.parent='Frame'
liftpoint.position = (20.000,0.000,0.000)
liftpoint.rotation = (0.000,0.000,0.000)
liftpoint.fixed =(True, True, True, True, True, True)

s['nieuwe naam'].footprint = ((0.0, 0.0, 0.0), (0.5, 0.0, 0.0))
liftpoint.offset_h = 0.500
liftpoint.offset_v = 0.300
liftpoint.width = 0.100
liftpoint.diameter = 0.100
liftpoint.liftpoint_type = LiftPointType.PADEYE

liftpoint = LiftPoint(s, 'LP3')
liftpoint.mass=-0.000
liftpoint.cog=(0.000,0.000,0.000)
liftpoint.parent='Frame'
liftpoint.position = (20.000,0.000,0.000)
liftpoint.rotation = (0.000,0.000,0.000)
liftpoint.fixed =(True, True, True, True, True, True)

s['LP3'].footprint = ((0.0, 0.0, 0.0), (0.5, 0.0, 0.0))
liftpoint.offset_h = 0.500
liftpoint.offset_v = 0.300
liftpoint.width = 0.100
liftpoint.diameter = 0.100
liftpoint.liftpoint_type = LiftPointType.PADEYE

s['nieuwe naam/point']._visible = False

s['LP3/point']._visible = False

# Limits

# Watches

# Tags

# - tags are added with 'try_add_tags' because the node may not exist anymore (eg changed components) wh

# Colors