Commit Graph

461 Commits

Author SHA1 Message Date
Jon Evans aa5f496727 Properly migrate bus-bus entries on load of legacy schematic
Fixes https://gitlab.com/kicad/code/kicad/-/issues/9678
2021-11-25 12:12:01 -05:00
Mikolaj Wielgus 38bd4b07e4 Close the simulator before changing schematic
Fixes https://gitlab.com/kicad/code/kicad/issues/9501
2021-11-07 23:35:06 +00:00
Ian McInerney 280743d9e9 Fix missing reference in for loop 2021-10-18 00:29:10 +01:00
Wayne Stambaugh c4d0a06701 Eeschema: fix broken auto save feature.
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
2021-10-13 14:51:00 -04:00
Jeff Young 5f5ee7335d Formatting. 2021-10-01 21:49:14 +01:00
Wayne Stambaugh d90094de39 Fix progress dialog main frame focus issue on Linux.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/8718
2021-09-16 15:53:18 -04:00
Seth Hillbrand ca6e43d1e1 Fix segfault when discarding changes on open
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
2021-09-14 16:41:25 -07:00
Jeff Young b84d1456d5 KIFACE_I -> KIFACE_BASE. 2021-09-14 23:45:14 +01:00
Jeff Young 2cdd3c9ebf Work-around incorrect spacing (and order) of buttons on Mac. 2021-08-31 22:39:25 +01:00
Jeff Young b5a3385ea9 Overhaul file locking system.
See bug report for details.

Fixes https://gitlab.com/kicad/code/kicad/issues/8919
2021-08-31 15:04:31 +01:00
Jon Evans 0463fc4c2b Fix several bugs and refactor schematic saving
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
2021-08-23 23:01:08 -04:00
Jon Evans 0814219513 Clean up some handling of project files in standalone
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
2021-08-21 12:09:21 -04:00
Jeff Young 41619ebbe2 Decouple PROGRESS_REPORTER interface from implementations. 2021-08-14 21:05:49 +01:00
Jeff Young c51b1dad72 Generalize infobar MESSAGE_TYPE handling and use for DRC errors.
Fixes https://gitlab.com/kicad/code/kicad/issues/8782
2021-08-01 21:51:39 +01:00
Jeff Young 01d3a88faa Allow unnamed embedded step files in altium boards.
Fixes https://gitlab.com/kicad/code/kicad/issues/7898
2021-07-10 16:37:45 +01:00
Jeff Young 6810912f09 Refuse to load schematics from the future.
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
2021-06-30 18:32:07 +01:00
Jeff Young 4c5df22eb0 Don't show busy cursor when dialogs (including progress) are in use.
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.
2021-06-26 22:53:24 +01:00
Jeff Young 5c21f93803 Consistency in progress and error messages. 2021-06-26 13:23:43 +01:00
Jeff Young 5fa5a73c6d File open/import progress dialogs.
Fixes https://gitlab.com/kicad/code/kicad/issues/6864

Fixes https://gitlab.com/kicad/code/kicad/issues/2166
2021-06-23 23:55:54 +01:00
Jeff Young 96e4b19444 Append Schematic Content -> Insert Schematic Content
Fixes https://gitlab.com/kicad/code/kicad/issues/7905
2021-06-18 21:23:49 +01:00
Jeff Young 1722bc03b0 Consistent terminology and punctuation. 2021-06-17 00:05:17 +01:00
Jeff Young decfe89091 Refresh after import; don't wait for user to move mouse. 2021-06-16 21:44:18 +01:00
Wayne Stambaugh ff099453c8 Rename class_library.[h|cpp] to symbol_library.[h|cpp]. 2021-06-15 09:24:55 -04:00
Wayne Stambaugh ee3eac325d Expunge the use of the word part from Eeschema code. 2021-06-15 08:32:11 -04:00
Jeff Young 08d56f897c Update Hierarchy Navigator after performing file actions.
Fixes https://gitlab.com/kicad/code/kicad/issues/8498
2021-06-13 17:15:43 +01:00
Jeff Young ed0e0a00c0 Clear selection before importing schematic.
Also moves some error messages to use consistent terminology.

Fixes https://gitlab.com/kicad/code/kicad/issues/8421
2021-06-08 16:08:22 +01:00
Marek Roszko 8f2819cfa4 Kill the last of wx/wx.h in headers 2021-06-07 17:59:20 -04:00
Johannes Maibaum 022dd6072c Add utility method to resolve symlinks
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.
2021-06-07 20:59:59 +00:00
Johannes Maibaum 542c02046b Write through symlinks for schematics and PCBs 2021-06-07 20:59:59 +00:00
Jeff Young c4cabb38d5 More worksheet -> drawing sheet cleanup.
Fixes https://gitlab.com/kicad/code/kicad/issues/8516
2021-05-31 12:26:44 +01:00
jean-pierre charras 37c31196f4 Eeschema, importFile: build the HTML report messages before displaying the dialog.
Fixes #8507
https://gitlab.com/kicad/code/kicad/issues/8507
2021-05-29 10:23:11 +02:00
Seth Hillbrand f47784cd14 Fixup Junctions should call common tool 2021-05-28 12:35:38 -07:00
Roberto Fernandez Bautista 63f56640db CADSTAR Schematic: Add needed junctions on load
Fixes a bug that was causing junctions to disappear when they
were not perfectly positioned in the original CADSTAR design.
2021-05-28 20:13:10 +01:00
Seth Hillbrand 752ae4d519 Rename modification flag routines
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.
2021-05-28 12:07:04 -07:00
Seth Hillbrand d7f219e98f Unify IsSave and IsModify
The flags and calls were used identically, leading to potential
confusion/bugs.  Testing for modification should go through
IsContentModified()
2021-05-28 11:51:54 -07:00
Wayne Stambaugh fdcc49d3ee Eeschema: fix saving hierarchical sheets in stand alone mode.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/8209
2021-05-27 16:01:36 -04:00
jean-pierre charras 64afa3a42e EEschema, minor fix: avoid modifying frame title after an autosave.
Fixes #8411
https://gitlab.com/kicad/code/kicad/issues/8411
2021-05-12 09:45:23 +02:00
Marek Roszko 18ff8ea4a0 Try to catch memory allocation errors in pcbnew and eeschema 2021-05-01 13:11:10 -04:00
Marek Roszko 6e9f833739 Disable two prof_counters if not ifdefed 2021-05-01 10:08:21 -04:00
Jeff Young 1ed54d2314 Make sure find/replace respects different values in the hierarchy.
Fixes https://gitlab.com/kicad/code/kicad/issues/8328
2021-04-30 18:39:21 +01:00
Jon Evans 7dd6a182f2 Unhide the Altium schematic importer
Fixes https://gitlab.com/kicad/code/kicad/-/issues/8069
2021-04-08 22:22:03 -04:00
Wayne Stambaugh 866c58a6d6 Eeschema: do not change schematic UUID on file overwrite. 2021-04-06 15:42:22 -04:00
Wayne Stambaugh df186a2049 Eeschema: fix root sheet UUID changing in project file.
This change is a bit more invasive than the description above would
suggest. UUIDs have been added to all schematics.  For now, it's only
useful to the root schematic so that the UUID in the project file does
not change every time the project file is save.  In the future, it may
be useful to store and check the schematic UUIDs against the one's saved
in the project file.

Fixes https://gitlab.com/kicad/code/kicad/issues/7763
2021-04-06 14:28:01 -04:00
Jeff Young daaf738c7f Add save-as files to file history.
Also fixes where lock wasn't getting reset on a Save As.

Fixes https://gitlab.com/kicad/code/kicad/issues/8111
2021-04-06 13:35:26 +01:00
Jeff Young 2ad69fc56b Move importers from wxLog to REPORTER.
Fixes https://gitlab.com/kicad/code/kicad/issues/6389
2021-03-31 22:54:30 +01:00
Roberto Fernandez Bautista de1191f971 Only FixupJunctions for Legacy designs
The new s-expression format embeds the library within the file
so there should be no connectivity issues (unless they were present
in the original design).

This fixes a potential issue with EAGLE imported schematics.
2021-03-30 13:03:56 +00:00
Roberto Fernandez Bautista 767aab7294 CADSTAR Schematic: Fix up junctions after load 2021-03-30 13:03:56 +00:00
Roberto Fernandez Bautista 8efc2f12d8 Non-KiCad Schematic Importers: Do not save project
Prevents creating unnecessary project files when importing
Non KiCad schematics.

Also clarified that empty.kicad_wks is required for all importers
(not just EAGLE).
2021-03-21 20:13:20 +00:00
Roberto Fernandez Bautista 6c29f54988 Non-KiCad Schematic Importers: New project when running standalone
Create a new project when running eeschema standalone and importing
a non-KiCad Project.

If we have the project manager open, then we instead use the existing
project and load everything there.
2021-03-21 20:13:20 +00:00
Wayne Stambaugh fb29b4f946 Eeschema: add missing symbol cache library file warning.
Fixes https://gitlab.com/kicad/code/kicad/issues/7346
2021-03-10 09:52:53 -05:00
Jeff Young a3b9e8ddb4 Round 2 of Worksheet -> Drawing Sheet. 2021-02-23 11:57:44 +00:00
Jeff Young cad5198ab7 Worksheet -> (industry standard) Drawing Sheet. 2021-02-22 17:35:46 +00:00
Jon Evans f1039dfb94 Disable project saving outside explicit save actions
Fixes https://gitlab.com/kicad/code/kicad/-/issues/7589
2021-02-21 21:31:45 -05:00
Jeff Young 91e876ce0d Make sure the title is updated when file is saved/reverted/etc.
Fixes https://gitlab.com/kicad/code/kicad/issues/7626
2021-02-20 15:09:47 +00:00
Jeff Young 1a36971583 Remove higher-level write-protected check. It's now done lower down.
Fixes https://gitlab.com/kicad/code/kicad/issues/5937
2021-02-19 21:46:06 +00:00
Seth Hillbrand dbbe9cdee4 Hide infobar for save when saving 2021-02-16 15:54:43 -08:00
Roberto Fernandez Bautista 2c04d76ff4 Non-Kicad Schematic Importers: Do not reload all symbols after import
This is required to allow handling of pin swaps in the CADSTAR importer
2021-02-10 18:49:20 +00:00
RigoLigoRLC afad1625d7 Fix save-as extension of imported schematics
Fixes https://gitlab.com/kicad/code/kicad/issues/7333
2021-02-01 18:34:59 +00:00
Jeff Young dfc6070178 Unify schematic file version checking with PCBNew.
This also makes sure that the user gets a warning before saving over
an older s-expr format.  While that won't always be wanted, it's now
in the infobar (like in PCBNew), so it's not too onerous.§

Fixes https://gitlab.com/kicad/code/kicad/issues/7347
2021-01-31 17:28:14 +00:00
Mikolaj Wielgus 8eca23aabe Mark null project initial screen as zoom-initialized
The variable `m_Initialized` in `BASE_SCREEN` is used by
`SCH_EDIT_FRAME` to mark whether a screen had its zoom level initialized
by the "zoom to fit screen" action. When this variable is `false`, the
function `SCH_EDIT_FRAME::DisplayCurrentSheet()` performs "zoom to fit
screen", modifying the zoom level. This function is indirectly called in
the undo routines, so if `m_Initialized` is not set to `true`, a zoom
change will occur when the user undoes an operation, a behavior that is
undesired.

`m_Initialized` was not initialized to `true` for the null schematic
(the schematic that is loaded if no project is loaded), causing the
aforementioned undesired behavior.

To prevent this, I've changed the `SCH_EDIT_FRAME` constructor to set
`m_Initialized` to `true`, since it zooms to fit screen already. I've
moved `m_Initialized` from `BASE_SCREEN` to `SCH_SCREEN`, as it is used
only in Eeschema, and renamed it to `m_zoomInitialized`, a name I
believe that better describes what this variable does.

I've also introduced the function `SCH_EDIT_FRAME::initScreenZoom()` to
group the "zoom to fit screen" action with setting `m_Initialized` to
`true`, as they often should occur together.

I'd also like to say that I'm not confident whether
`SCH_EDIT_FRAME::DisplayCurrentSheet()` should perform the zoom level
initialization at this point, but I have decided to not change this
behavior for now, as the commit history suggests it's several years old.

Fixes https://gitlab.com/kicad/code/kicad/issues/7343
2021-01-31 00:49:11 +00:00
Marek Roszko e6dd95e83a Create a default user projects folder 2021-01-27 19:12:18 -05:00
Konstantin Baranovskiy cd2c46e5c9 Make "... file is read only." warnings translatable. 2021-01-12 14:33:35 +00:00
Ola Rinta-Koski 87b2081807 Set sheet file name when Save as... succeeds
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6561
2021-01-06 19:29:18 +00:00
jean-pierre charras eb7dc6ddd9 Minor fixes. In stand alone show the frame as soon as possible.
Especially when running Pcbnew to open a complex board the frame is shown faster.
Add also a busy cursor when loading files and building the data.
2020-12-21 17:44:10 +01:00
Jeff Young bb232e6ac6 Unify LIB_IDs now that both are stored in sexpr files.
Fixes https://gitlab.com/kicad/code/kicad/issues/6764
2020-12-18 00:30:26 +00:00
Jon Evans a484d10470 Ensure schematic autosave works if sheet path is invalid 2020-12-16 21:17:48 -05:00
Marek Roszko d67cf2f9af Replace wxFile usage with wxFFile
Buffered libc wxFFile is better thinking about syscall wxFile going wrong.
2020-12-12 13:16:23 -05:00
Marek Roszko ad1aae40ec Unify the saved file strings 2020-12-08 19:49:47 -05:00
Marek Roszko abb5cb8310 Fix up msg panel status on save slightly
- pcbnew should use status bar on success like eeschema
- Add a helper to clear msgpanel and set it in one go to avoid redraw delays due to doing processing in between
2020-12-08 00:28:07 -05:00
Jeff Young ad281f7538 Remove duplicated TestDanglingEnds routines.
Also adds a changedItemHandler so that the single remaining version
can update the view.

Fixes https://gitlab.com/kicad/code/kicad/issues/6581
2020-12-06 21:24:16 +00:00
Jeff Young 3da0ab1a9a Fix a couple of bugs in intersheet references.
1) init reference pages before trying to draw the SCH_FIELDs when
turning intersheet references on

2) don't double redraw because we accidentally cleared the last
hover item on a non-mouse-moved event.

3) make sure the root sheet gets a name for the hypertext menu.
2020-11-29 16:53:18 +00:00
Jeff Young c2ba68cdfa Make sure intersheet references are updated on file-open. 2020-11-19 19:21:15 +00:00
Jeff Young 826e47dde3 Hook up excluded ERC marker persistence.
Fixes https://gitlab.com/kicad/code/kicad/issues/6425
2020-11-19 18:22:52 +00:00
Jeff Young f0d0e17aab Prepare for MODULE -> FOOTPRINT. 2020-11-13 15:16:24 +00:00
Jeff Young 5507575d64 Move ERC dialog to EE_INSPECTION_TOOL and kill when resetting.
Fixes https://gitlab.com/kicad/code/kicad/issues/6111
2020-11-03 20:27:44 +00:00
Jon Evans 2153a7655b Try harder not to give a read-only path to save dialog
Fixes https://gitlab.com/kicad/code/kicad/-/issues/5937
2020-10-21 20:55:43 -04:00
Wayne Stambaugh 8ff51d8899 Eeschema: add schematic sheet page number.
The groundwork has now been laid for per sheet instance data.  Initially
this only supports sheet page numbers but could be expanded to include
other per sheet instance information.

ADDED: Support for user defined schematic page numbers.
2020-10-19 14:05:45 -04:00
Marek Roszko 2c86363aa0 Relocate the page_layout includes to a page_layout folder 2020-10-13 20:33:33 -04:00
Jon Evans 7b5d628e4b Eeschema: fix save-as dispatching from new file
Fixes https://gitlab.com/kicad/code/kicad/-/issues/5937
2020-10-12 20:06:55 -04:00
Michael Kavanagh c40483d18a Cleanup: Move KiCad files into plugins folder 2020-10-12 16:36:08 +00:00
Jon Evans 76bfa47a77 Allow creating new projects when doing a Save As in eeschema 2020-10-05 22:36:26 -04:00
Michael Kavanagh 1416280662 Cleanup: Move Eagle files into plugins folder 2020-10-05 14:19:07 +00:00
Roberto Fernandez Bautista ab18c8e219 eeschema: Add "All supported formats" drop-down to the "Import Non Kicad Schematic" file dialog 2020-10-03 02:19:13 +00:00
Franck Jullien 2fc49045d1 ADDED: eeschema: Add intersheets references function
Add a new function to place intersheets references next to
global labels.
2020-10-01 20:39:32 +00:00
PJM 7dc1966a0d Eeschema: Fix text formatting in "Project Load Warning" dialog
CHANGED: When the "Show Details" button on the "Project Load Warning"
dialog is clicked, it reveals text that has odd formatting of when
lines split.  This commit fixes the text for the dialogs that warn
that schematics will be saved in the new file format, and that Symbol
Libraries defined in the project file symbol library list are no longer
supported.
2020-09-29 00:31:13 -07:00
Roberto Fernandez Bautista 2d99703e28 CADSTAR Schematic Archive Importer: Load all Sheets and Hierarchical Blocks 2020-09-27 18:13:58 +01:00
Roberto Fernandez Bautista 721cba32d5 ADDED: CADSTAR Schematic Archive Importer
Initial commit to trigger the importer
2020-09-27 18:13:57 +01:00
Jeff Young 133fb5cded Minor code cleanup. 2020-09-06 11:28:58 +01:00
Jeff Young be15053745 Allow back-annotation of differing values and footprints.
Also fixes a couple of bugs where resolving a textVar reference
to the refDes or unit wouldn't get the correct value in a
hierarchical schematic. (Unlogged.)

Fixes https://gitlab.com/kicad/code/kicad/issues/5397
2020-09-04 15:21:56 +00:00
Wayne Stambaugh c17f832de1 Eeschema: move auto save check before clearing current screen.
GitLab issue #5068 only affected the 5.1 branch.  The same issue could
also affect master if for some reason a context switch occurs due to
changes.  Moving the auto save feature before setting the current screen
to null should mitigate any potential future issues.
2020-09-01 16:52:05 -04:00
Mark Roszko 9f128f942c Move shutdown blocker to kiplatform 2020-09-01 10:14:51 +00:00
Jon Evans 9f7bca38b3 A better way of handling standalone project files 2020-08-30 16:04:39 -04:00
Jon Evans 24435fcc62 Don't create new project files when opening boards/schematics
Display warning infobar in the board/schematic setup when no project
is loaded, since most of the settings in those dialogs are saved in
the project and not in the board/schematic file.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/4868
2020-08-24 22:17:21 -04:00
Mark Roszko 89e74140eb Save file / window states for kicad project locally 2020-08-24 02:01:14 +00:00
Thomas Pointhuber a03fb7a9a8 Altium: Refactor and add initial structure for schematic importer
altium: move pcbnew/altium2kicadpcb_plugin -> pcbnew/plugins/altium

See: https://gitlab.com/kicad/code/kicad/-/issues/4412
2020-08-23 19:01:08 +00:00
Jeff Young f4ab14f32d Performance improvements for SchematicCleanup().
Fixes https://gitlab.com/kicad/code/kicad/issues/4563
2020-08-10 12:41:52 +01:00
Jeff Young f3b92903e2 Evidently the sheet client list isn't kept up-to-date.
Fixes https://gitlab.com/kicad/code/kicad/issues/5021
2020-08-02 19:58:15 +01:00
Jeff Young 173493b1a8 Try to store the actual sheet #, but don't store 1 for non-root sheet.
Fixes https://gitlab.com/kicad/code/kicad/issues/5021
2020-07-31 22:29:05 +01:00
Marek Roszko 9278660b10 Add support for the windows application restart api 2020-07-28 14:32:39 -04:00
Jeff Young 7340c97ef9 Undo for schematic-wide operations.
Editing value/footprint fields of multi-unit components.
Find/Change.
Annotation.
Back annotation.

Fixes https://gitlab.com/kicad/code/kicad/issues/2122

Fixes https://gitlab.com/kicad/code/kicad/issues/4869

Fixes https://gitlab.com/kicad/code/kicad/issues/3933

Fixes https://gitlab.com/kicad/code/kicad/issues/4871

Fixes https://gitlab.com/kicad/code/kicad/issues/3899
2020-07-13 12:32:17 +01:00
Jon Evans a2041073ee Skip project backup in standalone mode
Fixes https://gitlab.com/kicad/code/kicad/-/issues/4867
2020-07-12 11:42:05 -04:00
Jon Evans fc92fb076e Cache sheet path to string conversion in UpdateSymbolInstances
Profiling of large designs (with many hierarchical sheets)
showed that this can be a huge (4x) speed up to schematic
loading times.
2020-07-09 18:14:37 -04:00
Jon Evans b1b9cef5fb Full-project automatic backup system
Fixes https://gitlab.com/kicad/code/kicad/-/issues/4763
2020-07-09 13:55:19 +00:00
Jon Evans 788f31d743 Fix import of Eagle schematics
Old project needs to be unloaded before schematic is reset,
then new project has to be loaded before doing the import

Fixes https://gitlab.com/kicad/code/kicad/-/issues/4836
2020-07-07 20:48:32 -04:00
Jeff Young 509cd8f495 Remove duplicate fix not found by merge. 2020-07-05 21:01:19 +01:00
Jeff Young ec6c1b80b7 Fix a couple of bugs in the CurrentSheet architecture. 2020-07-05 19:53:04 +01:00
Jon Evans 04a51a5ba4 Push current sheet handling to SCHEMATIC
Fixes https://gitlab.com/kicad/code/kicad/-/issues/4803
2020-07-04 20:59:35 -04:00
Jon Evans 0201cb4e7e Fix schematic reload in standalone mode 2020-07-03 10:43:23 -04:00
Jon Evans 498fa8d8ba Fix some things about template fieldname synchronization 2020-07-02 23:42:36 -04:00
Jon Evans 4dbbe1cf68 Project settings fixes from review
- Fix file extension for new project
- Fixes for exceptions on MSW
- Fix some ASAN issues
- Allow SETTINGS_MANAGER to run headless
- Don't flag schematic as modified after schematic setup is closed
- Don't automatically unload projects when LoadProject is called
- Don't unload project if it's the same as the current one
- Make sure to properly init/de-init template field names
2020-07-02 22:08:54 -04:00
Jon Evans fe5959b625 Remove the schematic and board backup file system
Per discussion on the developers list, this old system
no longer provides much value and is seen as annoying
by many users.  The new save logic should prevent any
cases of file corruption on save, which was a major
reason for the backup file system existing.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/2012
2020-07-02 22:08:54 -04:00
Jon Evans 12b4a55ae8 Port Eeschema to new project settings
DRC/ERC error serialization changed to use explicit tokens
Old stored severities and ignored errors are discarded
2020-07-02 22:08:54 -04:00
Jon Evans c0aa6965de Migrate PcbNew project settings to new framework
Various architecture upgrades to support this.
Creating a BOARD now requires a valid PROJECT, which caused
some (mostly transparent) changes to the Python API internals.

ADDED: Project local settings file
CHANGED: Board design settings are no longer stored in PCB file
CHANGED: Net classes are no longer stored in PCB file
CHANGED: Importing board settings now reads boards, not just projects

Fixes https://gitlab.com/kicad/code/kicad/-/issues/2578
Fixes https://gitlab.com/kicad/code/kicad/-/issues/4070
2020-07-02 22:08:54 -04:00
Jon Evans 0e2f9cb1bd Migrate CvPcb project parameters 2020-07-02 22:08:54 -04:00
Jon Evans a4fadfcdf2 Begin moving project file load to new system 2020-07-02 22:08:54 -04:00
Jon Evans a7708fa6dc Add PROJECT_FILE and basic load/unload methods 2020-07-02 22:08:54 -04:00
Jon Evans 09cb75b8a1 Use a temporary file when saving boards/schematics to make the operation more atomic
Fixes https://gitlab.com/kicad/code/kicad/-/issues/4517
2020-06-19 23:31:26 +00:00
Jeff Young f84406009b Push a couple of layers of indirection out of grid settings. 2020-06-13 11:35:56 +01:00
Wayne Stambaugh b624c7090a Deprecate saving legacy schematic and symbol library file formats.
REMOVED: The ability to save schematics in the legacy file format.
2020-05-29 12:43:00 +00:00
Jon Evans e934f8b459 Remove python netlist QA facilities 2020-05-23 22:48:09 -04:00
Jon Evans a63df2fbf0 Remove BuildNetListBase from netlisting paths 2020-05-23 13:14:05 -04:00
Jon Evans 2499a1d640 Remove KIWAY dependence from SCH_PLUGINs 2020-05-20 23:00:23 -04:00
Jon Evans b074cdf185 Ensure that eeschema loads project params in standalone mode 2020-05-19 23:57:53 -04:00
Ian McInerney 73a1ce3e84 Move eeschema find notification to the infobar and improve the infobar widget
* Move it to a panel along with the canvas to have a better UI
* Allow the infobar to automatically close after a set time

CHANGED: The eeschema find notifications now use the infobar instead of
a popup window
2020-05-20 02:31:47 +01:00
Wayne Stambaugh 28b8e75211 Fix duplicate time stamp bug when loading legacy schematics. 2020-05-19 11:01:00 -04:00
Ian McInerney a2f027e063 Add an infobar widget to display information above the canvas
This widget allows for non-intrusive display of text
above the editing canvas. Currently, this is used
for displaying the read only status of the files.
2020-05-19 00:46:33 +01:00
Jon Evans d7bd4c9b04 Move Eeschema globals to new SCHEMATIC object
Set up a new lineage for SCH_ITEMS to get back to the SCHEMATIC
they live on: Items will all be parented to the SCH_SCREEN that
they are added to, and each SCH_SCREEN will point back to the
SCHEMATIC that it is part of.  Note that this hierarchy is not
the same as the actual schematic hierarchy, which continues to
be managed through SCH_SHEETs and SCH_SHEET_PATHS.
2020-05-18 13:04:56 -04:00
Jeff Young 84160c1da4 Fix typo.
Fixes https://gitlab.com/kicad/code/kicad/issues/4448
2020-05-15 00:27:19 +01:00
jean-pierre charras 2cf82d9129 fix a wxWidgets minor alert and compil warnings 2020-05-13 08:53:32 +02:00
Jeff Young 724c669434 Move a few more commands to tool framework. 2020-05-12 18:12:38 +01:00
jean-pierre charras bc24d8e957 Fix typo and I18N string 2020-05-10 16:55:15 +02:00
Wayne Stambaugh e253862f77 Eeschema: remove automatic conversion of time stamp UUIDs.
In order to avoid confusion when loading legacy schematics, updating time
stamp UUIDs is no longer performed.  If users where not experiencing issues
with time stamp clashes with shared schematics then this was probably a
case of me being overly cautious.

The original conversion code has be moved to
SCH_EDIT_FRAME::ConvertTimeStampUuids() so the working functionality is
not lost.  This function should not be used until a way is found to update
the board from the schematics with the appropriate settings.
2020-05-07 09:26:43 -04:00
Wayne Stambaugh 9c99286385 Fix a few Coverity warnings. 2020-05-05 16:42:59 -04:00
Wayne Stambaugh 169f63a6c0 Eeschema: make schematic sharing truly safe across all designs.
There has been a long standing (since the beginning of the project?)
issue with sharing schematics between projects.  It has been somewhat
supported for complex hierarchies (a sheet shared multiple times in a
single design) but it has not been well supported for simple hierarchies
(the symbol references cannot be changed in the shared schematic).  This
issue has been resolved by moving all of the symbol instance sheet paths
from the symbol definitions in the all of the project files and save all
symbol path instances in the root sheet.  This ensures that orphaned
symbol instance paths do not accumulate in shared schematic files and
that designs that reuse schematic in simple hierarchies can how have
different references.  It also allows the root schematic from one project
to be uses as a sub-sheet in another project.

When legacy schematics are loaded, all sheet and symbol UUIDs are
converted from time stamps to true UUIDs.  This is done to ensure there
are no sheet path instance clashes between projects.  That being said,
there are no checks for this.  It is assumed that the probability of
UUID clashes is so low that it doesn't make sense to test for them.
2020-05-04 12:40:03 +00:00
Wayne Stambaugh 7183e9f97e Make the new schematic and symbol library file formats the default.
This is a very large and potentially disruptive change so this will be an
unusually long and detailed commit message.

The new file formats are now the default in both the schematic and symbol
library editors.  Existing symbol libraries will be saved in their current
format until new features are added to library symbols.  Once this happens,
both the legacy schematic and symbol file formats will be no longer be
savable and existing libraries will have to be converted.  Saving to the
legacy file formats is still available for round robin testing and should
not be used for normal editing.

When loading the legacy schematic file, it is imperative that the schematic
library symbols are rescued and/or remapped to valid library identifiers.
Otherwise, there will be no way to link to the original library symbol and
the user will be required manually set the library identifier.  The cached
symbol will be saved in the schematic file so the last library symbol in
the cache will still be used but there will be no way to update it from the
original library.

The next save after loading a legacy schematic file will be converted to
the s-expression file format.  Schematics with hierarchical sheets will
automatically have all sheet file name extensions changed to .kicad_sym
and saved to the new format as well.

Appending schematics requires that the schematic to append has already been
converted to the new file format.  This is required to ensure that library
symbols are guaranteed to be valid for the appended schematic.

The schematic symbol library symbol link resolution has been moved out of
the SCH_COMPONENT object and move into the SCH_SCREEN object that owns the
symbol.  This was done to ensure that there is a single place where the
library symbol links get resolved rather than the dozen or so different
code paths that previously existed.  It also removes the necessity of the
SCH_COMPONENT object of requiring any knowledge of the symbol library table
and/or the cache library.

When opening an s-expression schematic, the legacy cache library is not
loaded so any library symbols not rescued cannot be loaded.  Broken library
symbol links will have to be manually resolved by adding the cache library
to the symbol library table and changing the links in the schematic symbol.

Now that the library symbols are embedded in the schematic file, the
SCH_SCREEN object maintains the list of library symbols for the schematic
automatically.  No external manipulation of this library cache should ever
occur.

ADDED: S-expression schematic and symbol library file formats.
2020-05-04 12:40:03 +00:00
Jon Evans 2eaefb4874 Improve performance of schematic load and connectivity
Store component paths and references efficiently
Remove redundant calls to RecalculateConnections
2020-04-30 19:53:25 +00:00
Jon Evans b802a3e776 Add command-line option to generate netlist and exit 2020-04-19 19:13:24 -04:00
Jeff Young 2b6089240a Change super/subscript syntax to ^{foo} and _{foo}. 2020-04-18 21:04:41 +01:00
Jeff Young 9c8941e040 Remove a bunch of globals. 2020-04-16 17:34:46 +01:00
Jeff Young 122b1ddaae Unwrap an unnecessary layer now that we have new config stuff. 2020-04-13 20:58:12 +01:00
Wayne Stambaugh 2f682b6c5f Eeschema: implement s-expression schematic file format parser.
Fix a few issues with the s-expression schematic file formatter.
2020-04-06 22:47:42 +00:00
Jeff Young b13559c926 Add envVar and text variable resolution to plot directory paths.
Fixes https://gitlab.com/kicad/code/kicad/issues/3808
2020-04-05 23:56:24 +01:00
jean-pierre charras b1b8a32078 fix a few Coverity warnings and compil minor warnings. 2020-04-03 09:54:47 +02:00
Wayne Stambaugh 7dc64f08b7 Eeschema: implement s-expression schematic file formatter.
Please note that the symbol cache is not embedded in the schematic file
to allow for round robin testing with the existing file format.  Once
the parser round robin testing is complete, the symbol cache will be
embedded in the schematic file.
2020-03-16 09:05:16 -04:00
Jeff Young 85c2e0d23a Add user-defined severities, exclusions and colors to DRC markers.
Exclusions are currently persisted in the project file.

Fixes https://gitlab.com/kicad/code/kicad/issues/1989
2020-03-04 00:39:28 +00:00
Jeff Young 490f39a671 Remove obsolete code requiring unique sheet names. 2020-02-20 22:56:11 +00:00
Jeff Young 81dd1d7a68 Timestamp-based paths were ugly. UUID-based ones are worse.
Show a human-readable path in the Edit Footprint dialog.
2020-02-20 21:29:52 +00:00
Jon Evans e59a3d981e Implement a new settings framework across all of KiCad
CHANGED: Settings are now stored in versioned sub-directories
ADDED: First-run dialog for migrating settings from a previous version
CHANGED: Settings are now stored as JSON files instead of wxConfig-style INI files
CHANGED: Color settings are now all stored in a separate settings file
CHANGED: The symbol editor and footprint editor now have their own settings files
CHANGED: Color settings are no longer exposed through BOARD object
CHANGED: Page layout editor now uses Eeschema's color scheme

Settings are now managed through a central SETTINGS_MANAGER held by PGM_BASE.
Existing settings will be migrated from the wxConfig format on first run of each application.
Per-application settings are now stored in one class for each application.
2020-02-19 23:44:56 -05:00
Seth Hillbrand 6e5e453d0d Replace EESchema DLIST
This moves EESchema DLIST structures to rtree.  These changes are more
fundamental than the pcbnew changes from 9163ac543 888c01d11 d1877d7c1
and 961b22d60 as eeschema operations were more dependent on passing
drawing list references around with SCH_ITEM* objects.
2020-01-10 06:37:08 -08:00
Ian McInerney 079423c3cc eeschema: Remove unused include of eeschema_id.h 2020-01-03 16:04:54 +00:00