Keystroke zoom (F1/F2) always centered the screen, because it
was handled as ID_POPUP_ZOOM_IN event. Mousewheel scrolling
was ok, because it is handled using different event based
on the configuration.
This patch introduces special event ids for keystroke
zooming that are then properly translated to either
ID_POPUP_ZOOM_IN or ID_OFFCENTER_ZOOM_IN depending
on the configuration.
The same issue is fixed for legacy canvas pcbnew.
Fixes: lp:1742567
* https://bugs.launchpad.net/kicad/+bug/1742567
Signed-off-by: Martin Sivak <mars@montik.net>
PICKED_ITEMS_LIST knows the architecture of the undo commands so
that it can delete those ITEMs which it owns. This represents poor
encapsulation so instead of adding yet another case, I added a
UR_TRANSIENT item flag which is set by callers whenever they create
new objects to “give to” the undo/redo stack. This allowed some
cleanup of other code, but cleaning up UR_DELETE and UR_WIRE_IMAGE
will be a bigger task and have to wait for another day.
Fixes: lp:1542018
* https://bugs.launchpad.net/kicad/+bug/1542018
1) Edit Symbol gets similar fix as Place Symbol
2) progress dialog updating reduced to once every 50ms
3) SearchText gets lazy normalization
4) TypeNames get lazy translation
5) default fieldNames get translated a single time per language change
These fixes reduce first-load-time of both Edit Symbol and Place Symbol
by about 2/3, and second-load-time of Edit Symbol to near-instantaneous.
Spice netlist exporter processes all texts on the exported schematic
sheet to find spice directives and include them in the output file.
By default it also added ".title KiCad schematic" in the first line, so
if there was another .title directive in the exported schematic sheet,
the generated file would contain two .title directives.
This patch looks for .title directive and when one is found - it uses
the specified title in the first line.
This commit aims at making the pin edit coupling easier to understand.
It renames the mode to 'synchronized pin edit', shortens the description
and inverts the logic to avoid double negation.
To make the code clearer, two items have their name changed to fit the
new description:
- m_editPinsSeparately -> m_syncPinEdit
- ID_LIBEDIT_EDIT_PIN_BY_PIN -> ID_LIBEDIT_SYNC_PIN_EDIT
This adds a set of conditions that will prevent a wire from being
automatically trimmed. Wires that are currently being moved or are
newly created or are explicitly avoided will not be removed. This also
adds a function to set a flag on items in a block.
Fixes: lp:1744632
* https://bugs.launchpad.net/kicad/+bug/1744632
Don't use wxFileName == operator when comparing cache file name. There
is a lot of overhead the wxFileName == operator that is not necessary
so just do a comparison with the original string used to create the
cache.
Rename GetPolyPoint() to BuildPolyPointsList(), because GetPolyPoint() looks like an accessor, but it is not an accessor.
(Using it as accessor can creates a *very long calculation time* for very basic access to polygon vertices)
Fixes: lp:1745050
https://bugs.launchpad.net/kicad/+bug/1745050
The alias list now displays the user model (multiple aliases *of*
a root part, rather than a collection of names *including* the
root part). This simplified the error detection logic, fixing
the first bug in the bug report.
Updating the part in the library is now done uniformly on OK
(which was the second bug in the bug report).
Fixes: lp:1744656
* https://bugs.launchpad.net/kicad/+bug/1744656
The crash happened when during rename operation, when the original part
buffer has been marked as deleted, but its memory was not yet freed. The
renamed part was still using the original SCH_SCREEN object, which was
freed together with the original part buffer.
The highlight colour on some platforms (OSX, for instance)
renders nearly invisible against a white background. However,
wxWidgets doesn't handle background colours on OSX and GTK+.
A separate commit to the new kicad/wxWidgets fork fixes OSX,
and we continue to use the old highlighting on GTK+
Fixes: lp:1741719
* https://bugs.launchpad.net/kicad/+bug/1741719
Three interrelated issues:
1) Implement an undo/redo type for renames so that we know to delete
the old lib entry and add a new lib entry
2) When doing so (for the undo/redo OR the original edit), we must
make a copy of the 'original' LIB_PART which is used for revert, and
hand it to the new lib entry
3) When comparing a modified component tree item with the current item
we must also check for aliases.
Fixes: lp:1743857
* https://bugs.launchpad.net/kicad/+bug/1743857
Fixes: lp:1744371
* https://bugs.launchpad.net/kicad/+bug/1744371
Fixes: lp:1744373
* https://bugs.launchpad.net/kicad/+bug/1744373
At least on Linux, if a null icon is used as icon in Pin Type column, other icons are not
displayed. So the workaround is to use a neutral icon when a specific icon cannot be used
(i.e. when pins are grouped)
Fixes: lp:1559542
https://bugs.launchpad.net/kicad/+bug/1559542
Schematic cleanup only makes sense after the libraries are fully updated
and loaded. Before pin caching, this was a minor difference but once we
needed to update pin caches, schematic cleanup can remove junctions from
pin-wire connections incorrectly.
Instead, we use the global OpenProjectFiles() schematic cleanup call to
be sufficient and not call a second time, prior to all libraries being
rescued and loaded.
Fixes: lp:1743148
* https://bugs.launchpad.net/kicad/+bug/1743148
Major cleanup of many icons (started as a simple effort to tweak libedit and modedit icons)
Ref: https://lists.launchpad.net/kicad-developers/msg32860.html
* Each application icon has been updated
* Consolidated icon "modifiers" across many icons
* Replaced confusing arrows with "load" and "save" icons
* Slight code updates to reference correct icons
* Consolidate multiple representations of single icon type(s)
The component tree model was always saving the root symbol name which
prevented the actual alias from be selected in the symbol chooser
dialog. This also prevented the correct documentation information
from being shown in the information panel.
Fixes lp:1740742
https://bugs.launchpad.net/kicad/+bug/1740742
Change the behavior of the remapping algorithm to remap even if a
project symbol library table exists in the project file in case a
previous attempt to remap failed. The existing symbol library table
is backed up to the back folder and rebuilt.
Fixes lp:1741983
https://bugs.launchpad.net/kicad/+bug/1741983
This is meant as a stopgap for 5.0, with plans to add proper scaled
icons in the 6.0 cycle. A function KiScaledBitmap() is added, which
works like KiBitmap() except it scales the bitmap according to the
calling window's font size. Controls have been added to all the main
applications to let the user select scaling manually (these were omitted
from smaller apps that didn't already have a place to put them).
In addition, in eeschema only, the pixel height of the system font is
shown in the options dialog for diagnostics. This is only for collecting
feedback before 5.0 release from users with different displays and will
be removed.
File names with spaces were causing invalid symbol names in both the
rescue library and the cache which would cause both libraries to fail
to load because library symbol names are not escaped so the spaces
tripped up the library parser. Replace the spaces in the file names
with hyphens and in both the rescuer and the remapping code so the
library nickname in the symbol library table does not contain spaces.
Update the symbol library table dialog to prevent users from defining
library nicknames with spaces. This is different than the footprint
library table which allows nicknames with spaces. This solution is
a temporary fix until the new symbol library and schematic file formats
are implemented.
Fix off by one row in illegal nickname error message in the symbol
library table editor.
Crash was caused by removal of the selected item from the
wxDataViewModel, which was later accessed in
COMPONENT_TREE::GetSelectedLibId(). To avoid the problem, the selection
is validated before regenerating the tree widget.
Fixes: lp:1740952
* https://bugs.launchpad.net/kicad/+bug/1740952
This commit is a partial revert of aa81f5b9 & 445ac505. LIB_ID should
not be modified when a library is assigned to its part, as the library
nickname cannot be evaluated during the assignment and might be
different than its filename.
Fix a bug where the full LIB_ID was not being used to look up the name
of the symbol in the cache library preventing the rescue to work when
rescuing symbol library table projects.
Add information as to why a symbol was rescued rather than only showing
what symbols were rescued.
Do not add rescue suffix to symbol name for symbol library table rescues
because if a symbol name exists in multiple libraries that need rescued
at the same time will cause subsequent symbol rescues to be overwritten.
Append the nickname of the schematic symbol library to prevent symbol
name clashes in the rescue library.
Verify the library symbol of the field being edited still exists rather
than use an assertion because it is entirely feasible that the library
symbol or library containing this symbol has been deleted and will cause
a segfault. Unfortunately there is no way to determine if the symbol is
a power symbol or not so just set it as a regular symbol so the user can
still edit the schematic symbol field.
Fixes lp:1742111
https://bugs.launchpad.net/kicad/+bug/1742111
When a LIB_PART object is removed, it deletes all of its aliases.
When the last one is removed, it tries to report the name of the
parent part, but as it has no aliases - it cannot return a valid name.
Use the symbol found in the library when the symbol is not in the cache
library.
Add an assert to prevent dereferncing a null pointer in the future even
thought this should not happen as the rescue algorithm does not add a
candidate when a symbol cannot be found in either the cache or any other
library.
Fixes lp:1741964
https://bugs.launchpad.net/kicad/+bug/1741964
Calling wxListBox::SetSelection( wxNOT_FOUND ) changes the internal
state of the widget without the intended visual effect (show nothing
selected). It leads to a situation when the default choice is overridden
with wxNOT_FOUND, even though the list box shows a valid value.
As there is no point in calling wxListBox::SetSelection( wxNOT_FOUND ),
the confusing call has been removed.
Dialogs displaying a lot of scrollable data should use SetSizeInDU()
instead, as FinishDialogSettings() will set a minimum size equal to
whatever can contain all the data (making it overflow the screen for
large amounts).
- Add helper methods for DPI-independent sizes
- Make splitter sashes visible on macOS
- Remove SetSizeInChars() - wx has a built-in way that I missed
- DIALOG_CHOOSE_COMPONENT: DPI-indep splitter sizes
- DIALOG_RESCUE_EACH: DPI-indep default size and sensible HTML window
size
- COMPONENT_TREE: DPI-indep sizing
- DIALOG_FP_LIB_TABLE, DIALOG_SYMBOL_LIB_TABLE
CHANGED: When a workbook file is saved from the simulation dialog
in eeschema, the extension is automatically added if it is not
specified. This behaviour is consistent with the workbook loading
dialog, which filters the filelist for only ".wbk" files with no
"all files" option.
Change term "Flip Horizontal" to "Mirror About Horizontal(X) Axis" in
the schematic editor symbol context menu to improve clarity.
Change term "Flip Vertical" to "Mirror About Vertical(Y) Axis" in the
schematic editor symbol context menu to improve clarity.
Change to the same mirror terminology in the block context menu.
Change "Exchange Footprint" to "Change Footprint" in the board footprint
context menu for improved clarity.
Fixes lp:1740593
https://bugs.launchpad.net/kicad/+bug/1740593
Create separate folder in project path to backup files changed during
remapping.
Add time stamp to backup file names in case multiple remappings are
performed.
Add backup file information to report panel instead of using debug
trace messages.
Disable the remap button if the user does not have write privileges to
the current project path.
The Windows drive specifier C: was being interpreted as a valid URL by
wxURI which was performing a URL comparison instead of a file comparison
which always failed in LIB_TABLE_BASE::FindRowByURI(). Change test for
URI to search string for "://" to determine if the comparison should be
a URI (string) comparison or a file (wxFileName) comparison.
Don't run final rescue unless the user performs the remapping.
When an attempt to resolve a library symbol link having a library
nickname that was no longer found in the symbol library table, the
symbol resolution was not falling back to the cache library due to
a silently handled exception. Add check for valid symbol library
table nickname before attempting to resolve symbol link to prevent
exception bypassing falling back to the cache library.
Fixes lp:1740609
https://bugs.launchpad.net/kicad/+bug/1740609
A new legacy symbol library plugin deletes all of the aliases from each
LIB_PART object that it owns cause an assertion in the dtor which calls
GetName() which checks for an empty alias list to prevent a segfault.
Remove the call to GetName() from the dtor trace message.
Fixes lp:1740597
https://bugs.launchpad.net/kicad/+bug/1740597
Store the currently-edited item in the base screen class
instead of the libedit_frame. This allows us to access it
for double-click disambiguation and harmonizes the library
editor with the schematic editor code that already does this.
Fixes: lp:1738694
* https://bugs.launchpad.net/kicad/+bug/1738694
The GetName() method attempts to access the first LIB_ALIAS pointer in
the m_aliases member without checking if m_aliases is empty. This
should never happen because a new LIB_PART creates a LIB_ALIAS object
in the ctor. Some how, this is getting bypassed and causing Eeschema
to crash in the LIB_PART dtor on debug builds. GetName() now checks
for an empty alias list to prevent a null pointer segfault.
Fixes lp:1739614
https://bugs.launchpad.net/kicad/+bug/1739614
Improve dialog layout and fix UI policy issues with all of the dialog
boxes in the common, 3D viewer, CvPcb, and Eeschema code paths.
Updated the use of component to symbol.
Replace all instances of "component" and "part" with "symbol" when
referring to schematic and library symbols.
Replace all instances of "component" with "footprint" when referring to
board and library footprints.
Minor dialog layout fixes to some of the dialogs impacted by the UI
string changes.
The remapping utility would create a new project specific library when a
symbolic link pointed to a library already defined in the symbol library
table. Now the comparison checks to see if the library path and file
name are actually a symbolic link if the file names are not the same when
the symbol library table entry is a file name rather than a URL. URLs
are simple string comparisons.
Disable the remap button after the remapping completed.
Remove some commented out code from the edit symbol in schematic dialog.
Fixes lp:1738634
https://bugs.launchpad.net/kicad/+bug/1738634
Allows buses to acquire junctions based on their connections. Buses
can only have junctions with other buses. Also allows buses to be
draggable junctions for collections
This adjusts the selection addition criteria for
blocks to allow items such as labels to connect to
lines not at the endpoints. It also uses the same
logic to correctly gather bus-wire, bus-bus entries.
Fixes: lp:1738941
* https://bugs.launchpad.net/kicad/+bug/1738941
Apparently explicitly requesting a column to be sorted breaks component
filtering on Windows. Without SetSortOrder() call the list is sorted and
filtering still works as expected.
Fixes: lp:1739412
* https://bugs.launchpad.net/kicad/+bug/1739412
Please never ask me about the SetSortOrder() part. When it is set to
'true', wxDataViewCtrl::EnsureVisible() does not always work correctly,
so sometimes the best search result is not shown in the window (no
pattern found). Now it is set to 'false' to avoid the described
behavior, but the sorting order is reversed on Windows, not on Linux.
I could not test it on OSX, but I am sure it paints walls in your room
pink. /me burst into tears.
Fixes: lp:1738696
* https://bugs.launchpad.net/kicad/+bug/1738696
Enable "save curr lib" tool of main toolbar when modified even if this lib is empty.
It happens when all items are erased, and it is consistent with the close libedit dialog
that ask for saving all modified libraries
Standalone eeschema did not have the project path set when importing
a non-KiCad sheet. Due to this any libraries created during the import
were saved to the directory of eeschema executable instead of the actual
schematic directory.
The previous implementation relied only on the project name. When it is
set, the imported library was named '-eagle-import'. Now it tries
the project name and then the file name, using 'noname-eagle-import'
as fallback.
The library name is stored in the plugin to avoid changing the library
name after the project name has been set.
Marks wire-bus entries as not dangling if there is at least a wire
and a bus on each end. Corrects behavior when wires and buses overlap
at the endpoint.
The reason the component tree widget was cleared on Windows is the fact
m_adapter->UpdateSearchString( m_query_ctrl->GetLineText( 0 ) ) is
called on any change of the symbol. But if m_query_ctrl is empty,
m_query_ctrl->GetLineText( 0 ) returns the "hint" (currently the word
"Search") not the actual value, so there is no "candidate" symbol in
list. Using m_query_ctrl->GetValue() returns the actual value and fixes
this issue.
Fixes: lp:1737132
* https://bugs.launchpad.net/kicad/+bug/1737132
Pins are weak_ptrs to the library, so they require a lock() before
accessing. This imposes a performance hit on fast loops that access
the pin list repeatedly. This patch caches the pin position locally
for each component, updating only when needed.
Fixes: lp:1737363
* https://bugs.launchpad.net/kicad/+bug/1737363
COMPONENT_TREE::STATE used wxDataViewItem to store the selection, but it
will point to a deleted object if the selection was removed. Switched to
storing the selection using LIB_ID as it is much safer to use.
Show the NC box only on pins connected via the same component,
indicating a stacked pin group. Do not show NC box on pins for
different components with the same symbol.
If a schematic contains two symbols with the same name from different
libraries, the cache will contain the last symbol saved with that name.
Prepend the library nickname with the original schematic symbol library
nickname when saving the cache library to prevent name collisions.
With the implementation of the legacy schematic plugin, any I/O error
when parsing the schematics would prevent the entire schematic from
being loaded. This change restores (somewhat) the previous behavior
where as long as the root schematic is loaded properly, then all of
the remaining sub-sheet will attempt to load.
Add GetError() method the SCH_PLUGIN object to allow for partial
schematic loading.
Check the error message contents when no exception was caught to warn
the user of any accumulated errors.
Fixes lp:1690644
https://bugs.launchpad.net/kicad/+bug/1690644
Fixes the connection display and dragging behavior of wires,
busses and their entries.
The implemented drag logic is:
-busses and bus-bus entries drag each other when connected at endpoints
-wires and wire-bus entries drag each other when connected at endpoints
-entries do not drag wires or busses when connected to wire middles
-wire-bus entries do not drag busses
The implemented connection logic is:
-bus-bus entries connect busses to busses but not wires
-wire-bus entries connect wires to busses but not wire to wires or
busses to busses
It turns out the fastest way to update wxDataViewCtrl is to nuke the
model and rebuild it from scratch rather than via
ItemAdded()/ItemDeleted() update notifications.
Fixes: lp:1734773
* https://bugs.launchpad.net/kicad/+bug/1734773
CHANGE: In Eeschema, when placing a component directly over an existing
wire, the wire is automatically removed where it shorted pins.
This helps workflow in Eeschema, allowing one to quickly add components
to existing lines.
Fixes: lp:1678449
* https://bugs.launchpad.net/kicad/+bug/1678449
This is the last of the object save/load code that was not moved into
the SCH_LEGACY_PLUGIN object. All schematic and library I/O is now
performed in the SCH_LEGACY_PLUGIN object and as been removed from the
schematic and library objects.
The old single symbol file format has been replaced with the normal
symbol library file format since there was no difference between them
except the SYMBOL token. The SYMBOL token was no longer being read
since the introduction of the SCH_LEGACY_PLUGIN symbol library loader.
Update the Doxygen comments in all of the modified files.
BreakSegment now breaks a known segment and BreakSegments
breaks all segments. This allows functions to break a
segment without needing to iterate through the whole list.
Changes to the schematic shouldn't be made
where the user isn't looking. Removing the
cleanup in ERC and netlisting prevents
unintended consequences
CHANGE: ERC and Netlist calls do not modify schematic
SCH_LINE can represent a bus, wire or graphic line. Checking
for the corner needs to distinguish between these types.
Fixes: lp:1635984
* https://bugs.launchpad.net/kicad/+bug/1635984
Make the user prompt an HTML control for improved layout.
Fix some column title sizing issues. This is not a complete fix but
it seems better than the default sizing done by wxWidgets.
Use symbol terminology instead of part and/or component.
Create trace string source files for a common place for them and their
Doxygen comments.
Don't back up schematic files unless the user requests a remap.
Back up all files that could be changed by a remap including the
schematic file(s), cache library, project file, and rescue library
files.
Use an HTML control instead of a static text control for improved layout
of the user remap prompt.
Improve the user prompt in the remap dialog to make it clear that changes
will be made to project files.
Duplicated aliases were given " (copy x)" suffix. There are two
problems: aliases cannot contain spaces and the string was translatable
which could create more issues. Now duplicated aliases receive "_x" suffix.
Change the legacy schematic plugin to preserve illegal LIB_ID characters
when load schematics prior to version 4.
Check for illegal LIB_ID symbol names during project rescue. Rename and
rescue any symbols with illegal LIB_ID names.
Add static methods to LIB_ID object for testing for and fixing names
with illegal characters so there is uniform code for doing so.
Update the Eagle plugin symbol loader to fix symbol names using the new
LIB_ID fix illegal names method.
Fixes lp:1732236
https://bugs.launchpad.net/kicad/+bug/1732236
Dragging a full line that is connected to a component
now drags the component as part of the block, maintaining
connections.
Fixes: lp:1167714
* https://bugs.launchpad.net/kicad/+bug/1167714
Removed cut & copy toolbar icons in the schematic editor, as they
were inaccessible. One cannot have an item selected and move the
mouse outside the canvas area due to autopanning.
Added paste icon to the library editor.
Tree nodes now have an additional field 'InTree' to determine
if the view is aware of its existence. This way, there is no need
to rebuild the data structures from scratch when they need to be
filtered.
Library Editor updates its working copy of the edited part every time
it is modified. If LIB_EDIT_FRAME::PlacePin() calls OnModify() too early,
the working copy does not include the last change.
Updates LIB_ID::LibItemName field when a part is renamed and LIB_PART
name when a new LIB_ID is set.
Similarly, LIB_ID::LibNickName field is updated when a library set, but
there is no easy way to assign library when LIB_ID::LibNickName is
modified.
LIB_PART name is stored in three places that might be changed
independently:
- the first LIB_ALIAS in m_aliases
- LIB_FIELD with VALUE ID
- m_name wxString field
This is potentially leads to an incoherent LIB_PART state. To prevent
this, all fields are changed using only one method: LIB_PART::SetName().
LIB_PART::m_name has been removed as the same information is available
in two other variables.
Handle exception in best zoom method when a symbol could not be loaded
from the symbol library table. This was triggered by an empty symbol
library table but could be triggered by any exception thrown while
loading the symbol.
Fixes lp:1733111
https://bugs.launchpad.net/kicad/+bug/1733111
Remove the placeholders for the upcoming s-expression schematic and
symbol library file format plugin type. The lack of a valid plugin
implementation was causing an undefined plugin type string in the
plugin type selection cell when new rows were added to the table.
Fixes lp:1733116
https://bugs.launchpad.net/kicad/+bug/1733116
SEARCH_STACK is a deprecated method for getting the list of paths where
one could look for a file. Instead it tries the project path and
environmental variables.
All of the schematic object load and save code is implemented in the
legacy schematic plugin so it is no longer required.
Remove unused file with old schematic file loader.
Doxygen comment cleaning.
Use the legacy plugin schematic loader in the sheet edit and append
schematic code paths.
Check for fully qualified LIB_ID objects (must have library nickname)
when loading existing schematics when edit sheets.
Rewrite append schematic feature to handle import issues rather than
change the name and file name of all of the sheets in the imported
schematic. This includes the following:
- Load the schematic into a temporary SCH_SHEET object.
- Make sure the imported schematic does not cause any hierarchy
recursion issues.
- Verify the imported schematic uses fully qualified #LIB_ID objects
(symbol library table).
- Check to see if any symbol libraries need to be added to the current
project's symbol library table. This includes:
- Check if the symbol library already exists in the project or global
symbol library table.
- Convert symbol library URLS that use the ${KIPRJMOD} environment
variable to absolute paths. ${KIPRJMOD} will not be the same for
this project.
- Check for duplicate symbol library nicknames and change the new symbol
library nickname to prevent library name clashes.
- Update all schematic symbol LIB_ID object library nicknames when the
library nickname was changed to prevent clashes.
- Check for duplicate sheet names which is illegal and automatically
rename any duplicate sheets in the imported schematic.
- Clear all of the annotation in the imported schematic to prevent
clashes.
- Append the objects from the temporary sheet to the current page.
- Replace any duplicate time stamps.
- Refresh the symbol library links.
Add support code to SCH_SCREEN object to assist with schematic import.
Doxygen comment cleaning.
Fixes lp:1731760
https://bugs.launchpad.net/kicad/+bug/1731760
Do not attempt to normalize environment variables that are not valid
paths, paths that do not exist, or paths that the user does not have
read access to.
Fixes lp:1731655
https://bugs.launchpad.net/kicad/+bug/1731655
Dotted, dashed and dash-dot lines are provided in
HPGL, PDF, PS and SVG plot outputs along with line
width and color formatting.
DXF format does not currently provide any dashed
line functionality
A bug in HPGL plotted is corrected. Previous HPGL
dashed line commands were incorrect, plotting all
lines as solid.
The GTK+ file dialog is case sensitive however it does support regular
expressions. Most of the file dialog wildcards are lower case so only
files with the lower case extensions will show up in the file dialog.
This code adds a method to convert file extensions of any case to the
appropriate (sch -> [sS][cC][hH]) regular expression on GTK+ builds so
all file extension case combinations will show up in the file dialog.
A note to developers: make sure to add a file extension when setting
when setting the default file argument. If you do don't set an
extension, the GTK+ file dialog will happily append the regular
expression as the file extension which is surely not what you want.
There are still a few known places (mostly gerbview) where there are
some complex wildcard code that has not been converted.
Fixes lp:1720542
https://bugs.launchpad.net/kicad/+bug/1720542
The replaced wxASSERTs notify the developer that a variable is a
null pointer, but continue code execution and lead to a crash.
Instead, they are changed to wxCHECKs, that give the same type
of notification, but return from a function before the crash
happens.
A copy and paste error was causing to footprint library table file name
and path to be shown in the symbol library table edit dialog. Factor
out code in PROJECT::FootprintLibTblName() to PROJECT::libTableName()
to handle both symbol and footprint library table names and create a
new PROJECT::SymbolLibTableName() method to fix the path and file name
in the symbol library table edit dialog.