We still conflate the fieldID, the position in the
array of fields, and whether or not that means the
field is mandatory. But this attempts to clean up
*some* of that, without introducing too much risk.
Recommendation is to avoid using the year nomenclature as this
information is already encoded in the git repo. Avoids needing to
repeatly update.
Also updates AUTHORS.txt from current repo with contributor names
* Ensure hierarchy navigator history iterator is valid before removing
history list entries. This fix prevented a crash in the 8.0 branch.
* Purge consecutive duplicate hierarchy navigator history entries.
Navigating to the same sheet path doesn't make sense.
* Don't rebuild hierarchy navigator tree twice when creating new sheet.
* Remove unused sheet property dialog commit code.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18778
Also adds a mode for AUTOADDED fields.
Also fixes a couple of bugs where a manual-level autoplaced
symbol would get reset back to auto-level when autoplaced.
The sheet list is returned as a copy of the cached list rather than a
reference to prevent external code from changing the list. While not as
performant, it eliminates the risk of the sheet list being altered in
ways that could break the schematic. The sheet list should only be
updated by calling SCHEMATIC::RefreshHierarchy() when any appropriate
sheet changes are made.
Note to developers: there is something inherently different about how the
QA tests are loading and handling schematics versus the schematic editor.
Using the cached sheet list for the SCHEMATIC object will cause some QA
test to fail. This is why SCHEMATIC::Hierarchy() has not replaced
SCHEMATIC::BuildSheetListSortedByPageNumbers() everywhere.
It doesn't even use the forward-declared
SYMBOL_LIB_TABLE.
Including this pulls in the whole richio system,
and sch_symbol.h is a very-included header.
Quite a few things do use SYMBOL_LIB_TABLE, but nowhere
near as many as use SYMBOL.
Schematics, symbols, boards and footprints all get the ability to store
files inside their file structures. File lookups now have a
kicad-embed:// URI to allow various parts of KiCad to refer to files
stored in this manner.
kicad-embed://datasheet.pdf references the file named "datasheet.pdf"
embedded in the document. Embeds are allowed in schematics, boards,
symbols and footprints. Currently supported embeddings are Datasheets,
3D Models and drawingsheets
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6918
Fixes https://gitlab.com/kicad/code/kicad/-/issues/2376
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17827
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.
If we are renaming a sheet that exists only once in the schematic, then
we don't need to warn about case sensitivity. If the sheet exists
multiple times, we do. We can't check this using SCREENS because the
screens don't maintain full state information about where they are used.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17901
When adding a sheet using a schematic from another project, set the
project name for the new symbol instance data to the current project
rather than the project name from the copied instance data.
Remove duplicate sheet instance page numbering. It's already done when
the sheet is loaded from an exiting file or an already loaded schematic.
Remove the unnecessary page update code from the drawing tool.
Prevent the hierarchy navigator from being rebuilt unless there are actual
sheet changes that would cause a change to the tree.
Save the tree expansion state before rebuilding the tree and then restore
the expansion state to the previous state sans edits.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16635
Performing a full connectivity rebuild after changing a sheet file name
ensures that there are no stale connectivity object pointers laying around.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17011
The IO_RELEASER is a thin-wrapper around a std::unique_ptr, but done
this way to allow easier addition of a custom deleter in the future if
something needs to call back into the IO_MGR.
- Move PLUGIN_FILE_DESC to common.
- SCH_PLUGIN: rename Load -> LoadSchematicFile, Save -> SaveSchematicFile.
- Use PLUGIN_FILE_DESC and CanRead* in schematic plugins.
- Return none/unknown types from Find/GuessPluginType functions.
- Iterate over file types for file wildcards.
- Clean-up header checking in IO plugins.
- Use PCB plugin list in IO_MGR::GuessPluginTypeFromLibPath.
A sheetpath is required to correctly resolve text variables.
Depending on currentSheet is rife with bugs.
There are many places where we do *not* want to be prepending
field names to the field values, such as netlisting,
building PDF hypertext menus, etc.
Also, Find/Replace needs to work on unresolved text, as
that's what we're going to display (and if replace nuked
your variable references you wouldn't be happy).