This feature was not reliably available: neither pl_editor nor GAL supported
it. It has been replaced over the past few commits with a new zoom-to-selection
tool available in all applications and modes.
Libraries have been 100% case-sensitive for a while now; there is no longer a
need to keep this option around. This will change nothing except for any
stragglers still manually specifying this old option.
This feature cannot work reliably for reasons explained in lp:1463505. Remove
the option on OS X builds and force cursor to the small one.
https://bugs.launchpad.net/kicad/+bug/1463505
> Bernhard Stegmaier (stegmaier) wrote on 2016-01-14:
>
> As far as I see from the code this is no bug but done on intention.
>
> The reason probably is that on OSX in the legacy canvas you don't have the
> XOR-drawing as on other platforms. To the best of my knowledge, this would
> mean that on every mouse move you would have to repaint the whole window just
> to get rid of the "old" cross.
>
> So, I would say this is a clear "won't fix".
> We could think of just removing/disabling the button in the legacy canvas.
* wxFileDialog ctor was setting the file name using the most recently used
path which was incorrect. Set the file path parameter to the most recently
used path and the file name parameter to an empty string.
* Remove last used import path and use the application wide most recently
path instead.
* Remove last used export path and use the application wide most recently
path instead.
* Prevent power component warning from being shown when edit normal component
fields.
* Make text edit dialog size itself instead of using a fixed size.
* Improve the alignment and spacing in the text edit dialog.
* Refactor edit one field dialogs to use validators and transfer data to and
from window functions.
* Add code to DIALOG_SHIM to handle validation and transfer functions since
the base dialog class code is not called by EndQuasiModal().
* Add custom validator class for filtering field text control characters.
* Add new field validator to edit schematic component dialog field text
control.
* Add new field validator to edit fields in library editor dialog field
text control.
* Make a few LIB_PART member functions const.
Still isn't perfect, but removes an actual bug. It's still possible to get
weird things if you try hard, but they're not corrupt and don't trip
assertions. Consider a temporary fix.
* remove duplicate code between draw functions and STROKE_FONT used in GAL. Use only STROKE_FONT methods in draw, plot and test DRC function for texts. It remove slightly different shapes between GAL and other calculations.
* fix incorrect bounding box for texts with overbar. Especially noticeable for texts with overbar inside a copper zone in Pcbnew.
* fix a few minor other bugs related to graphic texts.
- When the Kicad manager is iconized, all other child frames are iconized (normal wxWidgets behavior)
- For viewer frames in modal mode, there is a more annoying issue: they have the wxFLOAT_ON_PARENT frame style on unix, and wxSTAY_ON_TOP on Windows.
wxFLOAT_ON_PARENT frame style is incorrect (although on most WM it works) because the parent frame (Kicad manager Frame) is not the caller. It is usually a main editor frame.
It does not work on Windows (wx STAY_ON_TOP is used).
* Now each editor frame has a null parent.
Therefore iconizing the Kicad manager frame does not iconize other frames.
* Viewer frames have null parent in normal mode and the caller parent in modal mode (therefore wxFLOAT_ON_PARENT frame style is always and correctly used)
* References to opened/closed main frames are no more managed by the (complicated) kicad code. Instead of, a non critical and more easy to understand code just uses FindWindowByName to know if a main window exists or not.
These changes do not fix all issues about Kicad frames brought to the foreground or the background, but it fixes a few issues, and AFAIK do not add other issues.
* On MinGW64 and possibly other 64-bit platforms, time_t is defined as a long
long unsigned integer but all of the scanf and printf format specifiers used
to save and load the schematic files are %lX which is a long unsigned integer
which causes compile warnings. Add casts and temporary variables to eliminate
the compile type warnings.
I tried to merge some constants used both in legacy mode and gal mode (which were, before this patch, separate constants).
There is still a serious work to avoid different calculation code for the same text in draw and plot functions.
Work in progress to merge these calculation functions.
* Derive SCH_SHEET_LIST from std::vector rather than using internal array
management. Change all internal code to use iterators or array operator
in loops.
* Allow creation of empty SCH_SHEET_LIST for external population for plotting
and printing.
* Clean up print an plot code to take advantage of new SCH_SHEET_LIST behavior.
* Make BuildSheetList() public so list can be populated after creation.
* Update all instances of SCH_SHEET_LIST with the appropriate SCH_SHEET
object on initialization.
* Create const and non-const version of SCH_SHEET_PATH::GetSheet().
* Move add_directory()s in main CMakeList.txt after all find_package()
macros are run so all flags in the main CMakeList.txt are propagated
to the sub-folder CMakeList.txt files.
* Remove commented out include of config.h
* Make the link maps only build on linux as -${TO_LINKER},-cref
-${TO_LINKER},-Map=blah just gives warnings on osx w/ clang
* Make the link maps only build with flag -DKICAD_MAKE_LINK_MAPS is
defined during CMake configuration as they are highly specific.
* Moved the code for setting link maps into the main CMakeList.txt
file to avoid duplication.
* Removed -D__ASSERTMACRO__ from osx as its no longer needed
* Removed a couple of other OSX only things that wouldn't work anyway
* Moved set (BU_CHMOD_BUNDLE_ITEMS) to the main CMakeList.txt as
otherwise it would only work for the KiCad build not the other
applications
* Made KICAD_SCRIPTING_MODULES enable KICAD_SCRIPTING as currently if
you have modules enabled without the scripting base it will on build.
This could be changed to a fatal error saying you need to also enable
scripting but it seems unnecessary.
* Removed duplication of pcbnew.py install code under modules and
scripting since you can't have modules without scripting now
* Derive SCH_SHEET_PATH from std::vector< SCH_SHEET* > and remove unnecessary
assignment operator and list management functions.
* Remove function BuildSheetPathInfoFromSheetPathValue() since it was
effectively an assignment operation.
* Replace all calls to BuildSheetPathInfoFromSheetPathValue() with assignment
operator.
* Replace list management functions with vector management functions.
* Fix a error message that wasn't translatable.
* Remove wxDC and EDA_DRAW_FRAME parameters from SCH_SCREEN::SchematicCleanUp()
function call.
* Update all code that calls SCH_SCREEN::SchematicCleanUp() with wxDC and/or EDA_DRAW_FRAME
parameters.
* Fix a display refresh bug when incrementally inserting bus entries created in my last commit.
IsDanglingStateChanged() appears to be broke for bus entries.
* Fix parent of elements in wxSizers.
* Update old dialog with recent version of wxFormBuilder.
* Add wxALIGN_CENTER_VERTICAL flag to some dialogs.
* Update wxFormBuilder timestamp in generated sources.
* Use temporary storage of new pins to prevent corruption of the library part draw items
list when adding alternater body style pins to existing component which caused segfault.
* Remove wxDC and EDA_DRAW_PANEL as parameters from function
SCH_SCREEN::TestDanglingEnds().
* Change SCH_SCREEN::TestDanglingEnds() to return the connection change state
rather than the dangling end status which wasn't used anywhere.
* Update all calls to SCH_SCREEN::TestDanglingEnds() to remove wxDC and
EDA_DRAW_PANEL parameters and refresh connection indicators only if a
connection state change occurred.
* Ensure proper SCH_SHEET object page numbering which caused annotation to
calculate incorrect reference designators when annotating by using page offsets.
* Added SetPageNumbers to SCH_SHEET for setting sheet page numbers after
schematic is loaded.
* Move FindSheetByName() function from SCH_SHEEET_PATH to SCH_SHEET object
and update calls to FindSheetByName() accordingly.
* Remove SCH_SHEET_PATH::FindSheet() which was unused.
* Add sorting option to SCH_SHEET::GetSheets().
* Add const and non-const version of GetRootSheet() to SCH_SHEET.
* Add GetSheetPaths() function to SCH_SHEET which behaves the same way
as SCH_SHEET_LIST except it uses standard C++ containers and is a much
simpler design.
* The resource setting for bitmap2component is too late in the CMakeLists.txt,
and is being ignored. Bitmap2component does not have an icon resource on
Windows. Moving the entire section resolves the issue.
* The other programs only have the mingw special case listed, not the generic
declaration for the resource file so added them.
* Add function to get a list pointers to this sheet and all of it's sub-sheets
to SCH_SHEET.
* Remove unused function SetFootprintField() from SCH_SHEET_PATH.
This class wraps the comparison function in a way that is compatible with
std::map and std::set. This, too is generally useful, so it should be moved
to the generic header.
At the same time, the criterium for less-than is changed from "equal to -1"
to "smaller than 0", because technically the comparison function may return
other values.
* Add sheet number that is set by schematic file load order. This duplicates
the previous SCH_SHEET_PATH behavior.
* Uncouple SCH_REFERENCE and SCH_REFERENCE_LIST from SCH_SHEET_PATH.
* Add - operator to SCH_SHEET for comparison purposes. This duplicates the
behavior of SCH_SHEET_PATH::Cmp().
* Uncouple SCH_COMPONENT::GetRef() from SCH_SHEET_PATH and use SCH_SHEET
instead.
* Uncouple SCH_COMPONENT::GetUnitSelection() from SCH_SHEET_PATH and use
SCH_SHEET instead.
* Fix all calls to GetRef() and GetUnitSelection() to pass a pointer to the
appropriate SCH_SHEET object instead of an SCH_SHEET_PATH object.
* Use wxGrid to edit default fields in option dialog which allows user to
directly instead a separate edit panel.
* Implement TransferData{To,From}Window methods.
* fix minor coding style issues.
* remove unused member in modview_frame.
* use different frame names in ctor of modview_frame and viewlib_frame depending on the fact they are built modal or not modal (allowing identifications when calling wxFindWindowByName)
* change questionnable code in class_libentry.cpp.
* remove unused code in class_treeproject_item.cpp
Including the inline of the Output directory and its text field/browse button.
Moving the plot format to the left of the plot options as the plot options depend on the plot format.
* Create base class EDA_PATTERN_MATCH to hand multiple pattern matching methods.
* Create classes for regular expression and wildcard pattern matching.
* Add new pattern matching semantics to component select dialog.
* Thanks to Henner Zellar <h.zeller@acm.org> for improvments to the original patch.
In polygon calculations (combining polygons, fracture) the mode of calculation (fast or strictly simple polygon option) as no more a default value, because choosing the best mode is better to optimize the calculation time.
* Add code to SCH_SHEET object to clear annotation.
* Change SCH_COMPONENT::GetPath() to derive path from SCH_SHEET object instead
of SCH_SHEET_PATH object.
* Remove clear annotation code from SCH_SCREENS object.
* Make SCH_SHEET parent the SCH_SHEET object that loaded it. This preserves
the hierarchy when the schematic is loaded.
* Add function to SCH_SHEET to find the root sheet from any sheet in the
hierarchy.
* Add functions to SCH_SHEET to create the path and human readable paths for
any sheet without relying on the external SCH_SHEET_PATH object.
* Remove function LocatePathOfScreen from SCH_SHEET since it was not used
anywhere.
* Add human readable path to message panel information for SCH_SHEET.
* Set the name of the root sheet to "root" instead of the default generated
when a new SCH_SHEET is created.
* Set the empty sheet name and file name to "root" and "noname.sch" when
Eeschema is opened with no schematic.
* When no item is at the current position on a left mouse click, show the
current sheet information in the message panel.
* Add less than operator for sorting SCH_SHEET objects by path length and
time stamps when the path lengths are the same.
* Component doc: add https as prefix in list of urls which are opened by a Internet browser.
* Import .cmp files: Use "IdModule" instead of "IdModule =" as keyword for footprint name and use '=' only as separator.
2. Whole bunch of pointless casts removed
3. Unused variables removed
4. Fix bug caused by JP on April 25, 2015 where strings were adjusted for translation and the hotkeys section table accidentally swapped the footprint editor title with tag, resulting in "footprint editor" being exported instead of "[footprinteditor]"
No functional changes besides #4, technically it'll "break" imports hotkeys files but April 25 broke imports as well.
* Removed outdated package maker information, the pmdoc is generated and does
not belong in the KiCad tree, it is also highly specific as seen due to the
references to /Users/marco. This is not used in normal builds nor in the
packaging for KiCad OSX nightly builds.
* Updated identifiers in package marker docs to remove references to sourceforge
and to follow other identifiers.
Pcbnew: Plot files: for copper layers, create suffix from user copper layer names instead of default copper layer names, like in last stable Kicad version (bzr 4022), to build the plot files filenames.
Better test of illegal chars in plot filename, both in plot dialog and functions aclled by Python scripts.
Fix a Plotcontroller issue to make SetUseGerberExtensions() work as expected from Python scripts ( from Henner Zeller'patch with a fix to be sure it works properly from a Python script)
Note also using Protel Gerber Extensions is now a bad practice, because the official Gerber extension is .gbr since X2 Gerber version. But some users still use them)
* Make the about dialog help string consistent across all menus.
* Improve print preview window and print initialization error messages.
* The usual smattering of coding policy fixes.
* Only check for search cache update on close dialog event instead of every
update of the find/replace view which caused an infinite loop when replace
all was called.
* Check for dirty search cache for each find/replace event.
* Add code to save and restore last replace index on cache refresh.
* Rename Eda_FileSelector to EDA_FILE_SELECTOR.
* Add optional pointer to wxString to save the most recently used path to EDA_FILE_SELECTOR.
* Rename Eda_DirectorySelector to EDA_PATH_SELECTOR.
* Replace wxGetCwd() with wxStandardPaths::GetDocumentsDir(). This fixes the windows issue
where wxGetCwd() returns the path where the executable files are located.
* Add code to handle most recently used path to EDA_BASE_FRAME.
* Fix string formatting error in kicad/files-io.cpp.
* Remove setting and restoring current working directory when launching GerbView. Setting the CWD
has no effect on the launched executable which starts with it's own CWD.
* Allow project path to be passed to GerbView when launched from KiCad.
* Note: this is a work in progress. Do not expect every path and/or file selection dialog to properly
update the most recently used path. The correct solution to this problem requires a much more
well though out solution which will not happen until after the next stable release.
Fix a very minor issue about accelerator key in help menu: for "Eeschema Manual" of library browser it was "H". It is now "M" like in other help menus.
* Move color conflict checking code into TranferDataFromWindow so that it can be used in both the
OK and Apply button message handlers.
* Change Erc to ERC in text labels.
* Check for color conflicts and give the user the option to dismiss the changes before applying them.
* Add color conflict checking when apply button is pressed.
* Use default dialog size to allow sizers to set the initial size of the dialog.
* Enable CvPcb launching in stand alone mode.
* Enable footprint editor launching in stand alone mode.
* Remove some dead code left over from the change in CvPcb behavior.
* These changes were made for users who prefer to work in a less project-
centric work flow. KiCad should not be in the business of dictating
work flow whenever possible.
* Push center on zoom, use middle mouse button to pan, limit panning, and
pan while moving object settings from schematic editor to symbol library
editor and symbol library viewer child windows.
* Push center on zoom, use middle mouse button to pan, limit panning, and
pan while moving object settings from board editor to footprint library
editor and footprint library viewer child windows.
* Add code to allow each editing window it's own undo/redo count.
* Add code to allow for infinite undo/redo when count is set to 0.
* Add edit control to all editing windows general options dialog for
user configuration of undo/redo count.
* Add code to save and restore undo/redo count for each editing window.
* When multiple pins are in the same position and one is not connected,
show connection indicator correctly.
* LIB_PIN::IsVisible should be a const method so it can be called on
DANGLING_END_ITEM children without having to discard const.
* Test the (!IsVisible() && GetType() == PIN_POWER_IN) condition in a method
LIB_PIN::IsPowerConnection to avoid duplicating that condition if the test
needs to be performed in more than one place. (e.g. dunderheads like myself
might forget about the necessary GetType() == PIN_POWER_IN and just check
visibility.)
* Coding style fix: break a couple lines that were above the 99-column maximum.
* Add and/or improve Doxygen comments on SCH_COMPONENT::IsPinDanglingStateChanged
and SCH_COMPONENT::IsDanglingStateChanged.
- Slightly change the info text in the dialog. Add a definition of exactly what it means to "rescue" a component.
- Reload the project libraries when a project is opened, even if kicad is already running and the same project is open (to be sure the lib cache is up to date).
- Set the Modified flag on cancel, because a change has indeed been made (choosing not to rescue is equivalent to updating the components)
* Components with multiple "converts" were rendered with all of them overlapping instead
of just one.
* Schematics missing a -cache.lib resulted in unnecessary renaming suggestions.
* The dialog title "Conflicts Checking" is inaccurate now (as we're checking for more than
just conflicts) and also somewhat awkward, unidiomatic GUI English; I renamed it to
"Project Rescue Helper".
* Eliminate modal annotation warning dialog when generating a netlist fails
due to components that are not annotated.
* Add warning message to annotate dialog.
Fix also an issue on Windows, when using the footprint viewer or the component viewer in modal mode:
Reason: these frames (when run under the Kicad manager) have the Kicad manager as parent, and were built with wxFRAME_FLOAT_ON_PARENT style.
On windows, when the frame with style wxFRAME_FLOAT_ON_PARENT is displayed its parent frame is brought to the foreground, on the top of the calling frame.
and stays displayed when closing the frame in modal mode.
This issue does not happen on unix so we use now wxSTAY_ON_TOP on Windows, and wxFRAME_FLOAT_ON_PARENT on unix to simulate a dialog called by ShowModal.
This is not perfect, but at least it works.
* Change 'Silent mode' -> 'Always ask for confirmation'. Default on
(Same behavior as before, though arguably, it is very annoying and
should probably be default off)
* 'Automatically close dialog' -> 'Keep this dialog open'. Also changed
the default to _not_ keep the dialog open (what is keeping it open even
useful for ?)
* Change leave sheet hot key from back space to alt + back space. Note: for
some reason ctrl + back space did not work at least on windows.
* Add back space as delete node hot key which is consistent with the delete
track segment hot key in Pcbnew.
Now all are calculated using the top to bottom draw Y axis. This is perhaps not a good idea, but at least it will be easy to change, later.
Code cleaning relative to these bounding boxes.
* If a bus entry is drawn between two WIRES (not a wire and a bus, or two
buses), it looks like it's connecting the wires together, but doesn't
actually represent a connection. Display them as dangling in that case,
to make it clear to the user that a connection has not actually been made.
* Enable and disable save schematic button and menu entry depending on
modification status.
* Add toolbar and menu entries for leaving sheet.
* Enable and disable leave sheet menu entry and toolbar when in root sheet
or descended into the hierarchy.
* Add code to test for sheet path recursion to SCH_SHEET_PATH and SCH_SHEET_LIST.
* Add recursion tests to edit sheet code in Eeschema.
* Add recursion tests to block paste code in Eeschema.
* Remove global s_NetObjectslist.
* Separate out non-owning version of NETLIST_OBJECTS_LIST into NETLIST_OBJECTS.
* Fix double free pertaining to ~NETLIST_READER().
* Remove all file-io from CvPCB.
* Remove exe launcher cvpcb, retain only cvpcb.kiface, since cvpcb.kiface has no file i/o.
* Add void CVPCB_MAINFRAME::KiwayMailIn( KIWAY_EXPRESS& mail ) and teach it to use old
netlist loading code with a STRING_LINE_READER LINE_READER.
* Fix BEGIN_EVENT_TABLE( CVPCB_MAINFRAME, KIWAY_PLAYER )
Previously, acute angles (especially small angles) in zone outlines create incorrect shapes and sometimes strange shapes for clearance areas, when using generic algorithms.
This happens when zones outlines have "spikes", but not usually for smooth outlines.
* auto-save was broken for all sub sheets with are in a sub-directory of the project directory. (reason wxFileName::Normalize(), used to create the absolute path has issues with filenames starting by '$', perhaps due to env var which also start by $). the auto-save prefix is modified ( now AUTOSAVE_PREFIX_FILENAME which defines "_save_" ) and defined only once.
* auto-save files from sub-sheets were not found due to the fact the path was not set (fixed by Blair Bonnet's patch)
added the example gen_gerber_and_drill_files_board.py in demos, which shows how to do that.
Fix a Printf format issue (shown in Debug mode) in Libedit (%d used for a size_t, changed in %zu)
Fix a i18n issue in field names when loading a component, if the language was changed during a session, and kicad not restarted (see Bug #1448654).
However changing the language needs restarting kicad, in order to have all messages or menus translated.
* Add code to test if any of the components in the schematic cache have been changed
in the component libraries.
* Prompt user to accept or reject components when changes are found.
* If the user chooses to use the components in the cache, create a new library with the old
components and add it to the beginning of the component library list so the schematic will
not be changed.
* Create dialogs to handle user feedback and status.
* Use "Close" in the file menu of every main frame window instead of the
mismatch of the terms "Close", "Exit", and "Quit".
* Change the terminology in the Pcbnew graphic text edit dialog to match the
module text edit dialog.
* Improve the layout of the Pcbnew graphic text dialog.
* Fix some wxPrintf parameter type assertions for 64 bit time_t.
* Fix all (at least I think I got all of them) duplicate menu accelerator
characters.
Now these parameters are stored in user config, not project config ( they are not really related to a given project, they are just a setup during an edition),
and the schematic editor and the component editor have now separate parameters, because they are separate editors with different constraints.
component editor: repeat pin enhancement (from and idea of Edward Johns)
Previously, only the lib named "power" was used (and therefore power parts defined in other libs not shown).
Now, all power parts can be loaded from any library.
Also, when loading power parts from the chose component dialog or the lib viewer, libs and parts are filtered: only power parts and libs containing power parts are listed.
Hotkeys: move a few global strings in the files where ther are actually used (and make them local.) and code cleaning.
Fix a few other minor issues.
* The SCH_COLLECTOR m_foundItems was being obsoleted after a pin name search.
If a library edit changed the found pin name, the cache still held the now
missing library pin and would segfault on next search due to the cache being
out of date.
This is due to the fact static strings flagged translated ( _("string") notation) are not translated when they are static only if they are not inside a dll.
When they are static inside a dll, the dictionary is already loaded, and the constructor translate them.
Therefore they can be translated twice in dialogs are calling wxGetTranslation to show them, if the application is run from kicad.
But if the application is run as stand alone, the translation is made only once (as expected).
Fix minor 3D viewer issues (includling change number of segments and its optimization to draw pad holes.)
Fix Bug #1439132 (track and via list on toolbar not always refresh after loading a board).
Remove useless tool in Modedit.
* Add footprint and drop table from the Pcbnew footprint library table menu
entry to make it clear to new users.
* Add component to the Eeschema library configuration menu entry.
legacy plugin: better compatibility with old brd files (current track width and current vias size, stored in SETUP section, were not read from file and incorrectly set)
Eeschema now uses dashed lines for graphic lines (to be consistent with plot functions and toolbal icon).
Fix an old bug in some envionments which warp the mouse on a bad monitor when opening eeschema, pcbnew and some other windows, only noticeable guys who are lucky enough to have more than one monitor.