Also removes the side-effect that SCH_SHEET_LIST's
c'tor would sort the list (and write virtual page
numbers) anytime the starting sheet was the root.
Also, definitely don't build a SHEET_LIST (sorted or
otherwise) if you're not even going to use it.
Also don't build SCH_SHEET_LISTs on idle events. Better
to just always have the Next Sheet button enabled (we
already beep if you click it and there's no next sheet).
Also, use a SCREEN_LIST when you can. It's much cheaper
to create.
Since the addition of all nets to the net navigator, performance on very
complex designs is unacceptable. Not updating the net navigator is a
cheap and dirty short term fix. Users with complex designs will not be
able to use the net navigator. A better fix to resolve the performance
issues needs to be implemented.
Ignore bus member connection subgraphs. They do not have a valid net
name nor do they contain schematic items. This prevents empty nodes
from being added to the tree. They can be reintroduced in the future
if someone wants to pursue it.
Freeze the wxTreeCtrl while populating it and thaw when done to prevent
any unnecessary repainting.
Add profiling to test how long it takes to rebuild the net navigator.
The recently added populate the navigator with all nets when no net
is highlighted has exposed some potential performances issues with some
versions of wxWidgets on certain platforms. Namely wxWidgets 3.2.4 on
Linux GTK.
Fix an issue where a sheet name change would not update the highlighted
net navigator resulting in a stale human readable sheet path.
Prevent the highlighted net navigator from being rebuilt twice when
loading a schematic. SCH_EDIT_FRAME::RefreshNetNavigator() was being
called from both SCH_EDIT_FRAME::UpdateHierarchyNavigator() and
SCH_EDIT_FRAME::RecalculateConnectivity().
Add a new trace helper "KICAD_UI_PROFILE" to show trace output when
profiling user interface performance. It's used in the net navigator
profiling mentioned above.
Reuse PROF_TIMER::Show() to generate string for PROF_TIMER::to_string().
Remove wires, junctions, and bus entries from tree. These objects make
the net tree noisy for complex nets. Until a sane way to group these
objects can be, remove them for now.
Fix tree expansion and debug assertion issues.
Note: This changes the net highlight tool behavior. When clicking on an
already highlighted net, the net highlighting is no longer toggled
off. This prevents the net navigator panel from being cleared.
- Expand tree and highlight object selected with net highlight tool.
- Expand tree and highlight object that are currently highlighted with the
selection tool.
- Use more descriptive object text rather than menu entry text for tree
strings.
- Rebuild tree on unit changes.
Arrange connectivity items by sheet. Complex nets which span many
sheets make finding objects difficult. It also provides a higher
level of sheet view granularity.
[ADDED]: A panel to the schematic editor that allows quick access to all
of the items connected to the currently highlighted net.
This is an initial swag at implementing a full net navigator feature. For
now it only shows the currently highlighted net nodes. The incremental
net list advanced setting must be enabled in order to use this feature due
to performance reasons. There are still some issues with saving the panel
position which will be addressed in the future.
Initial code for serializing wxAuiPaneInfo settings to and from JSON have
be implemented.