Using a boolean argument just leads to a lot of trailing booleans in the
function calls and is not user friendly. Instead, introduce PostAction()
to send an action that runs after the coroutine (equivalent to passing
false or the default argument), and leave RunAction as the immediate
execution function.
We don't need to lock in import because we are creating a new file. We
should, however, show the locking user/machine when opening in schematic
editor and take over the lock if they want to proceed.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/9347
Temporary and autosave files do not neccessarily have the correct
permissions set to replace existing project files. This updates the
permissions to match the existing values where possible
Fixes https://gitlab.com/kicad/code/kicad/-/issues/13574
wxSingleInstanceChecker is meant for running programs, not file locking.
This implements an RAII class for file locking that stores the lock
files next to the file being locked, allowing it to be easily found and
removed. Also includes the ability to override the lock, with
information about the original owner
Fixes https://gitlab.com/kicad/code/kicad/-/issues/14734
The pressure relief valve was not useful for common work patterns as it
forced the recalculation on many common actions such as bus expansion.
This caused it to actually feel slower than with the pressure relief
valve off.
For most schematics, realtime is now fast enough to not need the valve
and for those that are extremely complex, removing the valve helps this
run more predictably
Also moves passive RLC inference out from migration to just-in-time
creation for the simulator or netlisting.
Also fixes a version guard mismatch because the spice migration was
done inside UpdateSymbolInstances (which has its own version guard).
Also changed UpdateSymbolInstances to UpdateSymbolInstanceData so
someone else in the future doesn't think it's a general-purpose symbol
instance updater.
The crash was caused by an unhandled exception. The uncaught exception
caused a cacophony of null configuration setting pointers so guards were
added to prevent crashes should other exceptions occur that do not get
handled correctly.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/13046
This will make it possible to maintain sheet instance information when
copying and pasting from any sheet other that the root sheet of a
project.
Setting and getting sheet page numbers must now be performed using a
sheet path. This was done to ensure that the instance paths were not
getting changed unexpectedly from different code paths.
This change reverts the storage of all symbol instance data in the root
schematic. This was done because it's not possible to reuse instance
data when importing from sub-sheets.
There has been a fundamental change in how sheet paths are store in the
instance data. The root schematic UUID is always used when saving the
instance data. To prevent file churn, the virtual root sheet UUID is set
to the root schematic UUID when loading the project. This provides a way
to determine the project that stored the instance data. All uses of paths
without root sheet have been expunged from the code.
The sheet instance data is still saved only in the root sheet for the
time being. New sheet instances will be automatically assigned an page
number based on the incremental virtual sheet page number. Sheet page
numbers will not be imported.
Added project name to instance data to improve the readability of the
schematic file format. It also creates an opportunity to remove orphaned
instance data by project name rather than cryptic UUIDs.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/12472
This change reverts the storage of all symbol instance data in the root
schematic. This was done because it's not possible to reuse instance
data when importing from sub-sheets.
There has been a fundamental change in how sheet paths are store in the
instance data. The root schematic UUID is always used when saving the
instance data. To prevent file churn, the virtual root sheet UUID is set
to the root schematic UUID when loading the project. This provides a way
to determine the project that stored the instance data. All uses of paths
without root sheet have been expunged from the code.
The sheet instance data is still saved only in the root sheet for the
time being. New sheet instances will be automatically assigned an page
number based on the incremental virtual sheet page number. Sheet page
numbers will not be imported.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/12472
dropping files to Kicad manager :
*.kicad_pro, *.pro -> open project;
gerber and job files -> open in Gerbview editor;
Eagle and Cadstar files -> open project.
dropping file to schematic editor -> append schematic;
dropping library file to Symbol editor -> add library;
dropping board file to PCB editor -> append board;
dropping library or footprint file to Footprint editor -> add library or import footprint;
dropping ZIP file or gerber files to Gerbview editor -> open files;
dropping sheet file to Drawing Sheet editor -> open sheet.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/11638
The commit bumps the schematic file format version in order to fix the
initial symbol default instance data to the first instance of each symbol.
It also sets the initial instance data to undefined in the SCH_SYMBOL
ctor so on the first schematic save, the default instance will be set
to the first instance of the symbol.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/12190
The legacy and s-expression (prior to version 20200828) file formats only
supported symbol unit and reference fields so the newly added value and
footprint fields must be updated from the original symbol fields.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/12226
At the moment, units are stored in the instance data, so when loading
the file, all symbols will have bbox for the first unit. After calling
`UpdateUnit()`, we need to recache the rtree bounding boxes to get
correct hit tests
Fixes https://gitlab.com/kicad/code/kicad/issues/11681
Avoid excess writes to the project directory to dodge issues with remote
file systems not fully writing data.
wxRename works across disk boundaries (in theory) and falls back to
wxCopy/wxRemove when it fails
Fixes https://gitlab.com/kicad/code/kicad/issues/10747
Make auto save recover all auto saved sheet files not just the root sheet.
This does not fix existing auto save issues because recovery would require
an iterative reload for each automatically saved sheet file and would only
happen once.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/9288
When opening new schematic, the undo/redo list is invalidated.
CleanupSchematic uses it before presenting the new schematic to the
user, so we need to make sure that old data are not preserved here past
their pointer lifetimes
Having the logic split between three different paths was
a bit much, this should hopefully be a bit easier to
maintain. All save logic now goes through SaveProject;
individual file writing is now a private function.
Also change Save As to Save Copy As in project manager
mode, as we don't want to change projects from inside
the editor in project manager mode.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/9015
Add control of project creation to Eeschema; change defaults
to enable project creation in both programs. Properly set
project on newly-created schematics so "Save As" doesn't
get triggered repeatedly.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/9000
Also fixes a bug where an empty window would get left when loading
a file from the KiCad manager window errored out.
Also fixes a bug where we were getting the wrong exception because
we were rethrowing the type-casted one (rather than just calling
throw).
Fixes https://gitlab.com/kicad/code/kicad/issues/8604
Also removes a stale comment.
Also moves the progress reporters earlier to lessen need for busy cursor.
Also cleans up some error strings and makes other more easily translatable.
The same logic block to resolve possible symlinks exists in 5 different
places now. This change moves this duplicated code to a static member
function of WX_FILENAME instead.
Differentiates better between the EDA_ITEM IsModified(), referring to
items themselves changing and the EDA_SCREEN IsContentModified(),
referring to whether we have made any unsaved changes.