* Replace C malloc() and free() functions with C++ new and delete
operators or the appropriate STL container.
* Add option to end mouse capture function to skip executing the end
mouse capture callback.
* Lots of coding policy and Doxygen comment goodness.
Added configuartion option KICAD_NANOMETRIC for this.
* With option set to false: *
- it should work and compile as usual
- some values are saved with decimal point (which should be backward/forward compatible as old versions should just drop fractional part)
* With option set to true: *
- lengths in Global Design Rules should be settable 1nm steps.
FROM/TO_LEGACY_LU(_DBL) macros introduced for easy interconnection between old and new units.
* Use version of DateAndTime that returns a wxString and delete the
version that takes a char* as it is no longer required.
* Merge StrNumICmp() and StrLenNumICmp() into StrLenNumCmp() to create a
single function for comparing strings with integers and remove a lot
of duplicate code.
* Remove unused strupper from string.cpp.
* Use wxArrayString for sorting the EDA_LIST_DIALOG contents.
* Modify algorithm to correctly calculate the virtual drawing size and
offset required to place the drawing correctly under all conditions.
* Ignore default wxWidgets scroll keys on Windows in EDA_DRAW_PANEL key
event handler.
* Create command event handler for orienting schematic items and block.
* Remove redundant orient item and block command handler code and IDs.
* Remove redundant cancel current command event table entry.
* Remove unnecessary schematic bitmap object virtual functions.
* Set path when saving schematic sheet files to prevent assertion in
updated path and file write permission test function.
* Restore directory and file name write permission test function to it's
previous behavior to prevent unexpected save results.
* Add an assertion to verify the path is not empty to directory and file
write permission test function.
* Improve documentation for path and file write permission test function.
* Fix Doxygen link warnings.
* Add a rotate event handler to schematic frame object.
* Remove unique rotate item command IDs.
* Use process event instead of post event to eliminate the need to clean
up the command event client object from the heap.
* Unify find next item and next DRC error hot key commands.
* Unify move and rotate hot keys commands.
* Remove external dependency for adding suffix to reference designator
fields.
* Make schematic field get and set position methods transform coordinates
relative to the parent component object that owns them.
* Make base text class get text method virtual so derived classes can
change the base string according to their individual requirements.
* Fix a problem with default place schematic item add in last commit.
* Tweak move item to support moving schematic sheet pin objects.
* Change schematic sheet pin set position to constrain position within
the parent sheet.
* Schematic sheet pin moving now handled by unified move code.
* Remove old schematic sheet pin move code.
* Add custom client data object for passing hot key information to
command event handlers.
* Fix a bug that prevented changes to schematic sheet pin objects from
being undone.
* Add get and set position methods to all schematic items.
* Encapsulate schematic item position members.
* Add swap data method to schematic items that lacked one.
* Remove global swap data function used by undo and redo functions.
* Unify as many schematic move methods as possible.
* Remove unnecessary place schematic item methods.
* All schematic items are now moved in the same event handler.
* Fixed bug in hierarchical sheet get menu item string method.
* Make no connect and junction items movable, fixes lp:804048
* Fixed bug on Windows that prevented the menu short cuts from working
properly.
* Fix duplicate menu short cut keys in KiCad, Pcbnew, and Eeschema.
* Add menu short cuts for all possible menu entries.
* Factor test for auto save file into base frame class.
* Added auto save feature to Eeschema for saving schematics, addresses
launchpad question 173631.
* Add auto save interval control to Eeschema options dialog.
* Fix problem with subsequent auto saves in last commit.
* Factor auto save common code into base frame class so all frame windows
can take advantage of the shiny new auto save goodness.
* Use a timer instead of depending on mouse and keyboard events to trigger
an auto save.
* Check for auto save file when opening a board and ask user if they
wish to use the auto save file or the last saved board file.
* Protect all base frame public members.
* Add KiCad build option states to copy version information to clipboard
function.
* Add a note to the main CMakeList.txt file to let developers know that
new option states should be added to the copy version information to
clipboard function.
* Correct all user strings and comments for the correct capitalization of
application names according to JP. They are KiCad, Pcbnew, CvPcb,
Eeschema, and GerbView.
* Add a note the the user interface policy about the correct capitalization.
* Move auto save time global variables into PCB_EDIT_FRAME object.
* Move footprint library name list global variable int PCB_EDIT_FRAME
object.
* Improve library back up and temporary file error message strings and make
them translatable.
* PCBNew string unification.
* Translate French code names and comments.
* Coding style policy and Doxygen comment fixes.
* All header files used to create the PCB common library now compile as
stand alone code. This prevents the need to define them in a specific
order to make source code compile properly. It should also now be
possible to relocate the source code to build the common PCB library
to a separate folder.
* Remove sine and cosine look up tables from trigo.cpp and replace them with
sin() and cos() math functions.
* Large include file clean up to prevent header ordering dependency build
failures.
* Translate French code names and comments.
* Lots of coding style policy and doxygen comment fixes.
Remove or move old .ico and .pgn files and add new icons (.ico files and .png files) in bitmaps_png/icons and bitmaps_xpm/icons
.png files and .ico are used to build desktop shortcuts
Handle variable size bitmaps in kicad.
* Add hotkey fast switch to two grids: for place and trace
Alt+"1" - switch grid for place module
Alt+"2" - switch grid for trace
This two grid set in dialog - menu Preferences->Dimensions->Grid.
* Add hotkey switch grid:
"`" - switch to next grid
Ctrl+"`" - switch to previous grid
* Add hotkey switch track width:
"W" - switch to next track width
Ctrl+"W" - switch to previous track width
cmakemodules:
* Add GOST to KICAD_BUILD_VERSION if define KICAD_GOST.
* Add hotkey "P" - place item
* Add record and play macros for sequence hotkey.
Macros set to numeric key 0..9.
<Ctrl>+<numkey> - start record macros
<hotkey> <mouse move> ... <hotkey>|<mouse place>
<Ctrl>+<numkey> - end record macros
<numkey> - play macros
* Add menu save/read macros to/from xml-file
* Add configure rotate angle for rotate module: 45 or 90 deg.
* fix segfault when move/drag segment if disconnected to pad
Eeschema:
* Graphic texts ans labels: fix fully broken undo/redo code relative to the way undo/redo command
* handles changes (maintly move) for labels
* Fix minor bug for undo command relative to block rotate
* Remove dead code.
* Add new class BITMAP_BASE, and (for Eeschema) SCH_BITMAP to handle bitmap images in schematic.
Remember plot Bitmaps in not possble with all plotters.
* Rename all ADD_MENUITEM_* functions to AddMenuItem and move them to
wxstruct.h since they are used by the Kicad main frame classes.
* Move SET_BITMAP and SETBITMAPS definitions to wxstruct.h.
* Fix a bug in SET_BITMAPS that prevented enabling menu item images on
OSX.
* Rename MsgItem to EDA_MSG_ITEM.
* Remove redundant includes from modified files.
* Doxygen and coding style policy fixes.
* Add USE_IMAGES_IN_MENUS definition to override the default platform
behavior for adding images to menu items.
* Update COMPILING.txt to document how to use USE_IMAGES_IN_MENUS.
* Fix Windows segfault when creating language selection submenu introduced
by new bitmap code in r3087.
* Changed per email from JP from CVPcb to CvPcb because I'm getting old and
blind and misread the email.
* Lot's of Doxygen comment and coding style policy fixes.
* Add general purpose user write permission test function to base
window class.
* Check user write permissions before saving project, schematic and
library files.
* Remove displaying file dialog every time the project file is saved.
* Display absolute paths for non-root sheet file in title bar.
* Remove redundant command table entry from schematic editor.
* Remove unused variables to fix GCC 4.6 warnings.
* The usual Doxygen comment and coding style policy fixes.
* Add in help menu a direct link to the new doc Getting_Started_in_KiCad.pdf, written by contributors (useful for beginners)
* Fix other very minor issues in CvPcb.
* Update howto doc about translation
* Change the minimum required CMake version to 2.6.4 for all build platforms
except Windows and OSX.
* Move all schematic plot code from plot.cpp into the appropriate schematic
objects.
* Create SCH_SCREEN plot method to plot all objects in the schematic
screen.
* Delete plot.cpp and remove it from the CMakeList file.
* Fix debug build warning (lp:793373).
* Changed sheet edit restore and undo to use object copy and replace method.
* Add minimum width and height constraints when resizing sheets that have
hierarchical pins.
* Fix drag sheet hot key bug.
* Change Doxygen configuration to extract private methods and members
when creating documentation.
* Fix a bunch of Doxygen comment warnings.
* Remove most (not all) variables that were initialized but never used that
cause GCC 4.6 to generate a warning.
* Fix bug in schematic library editor best zoom calculation.
* Create library collector class.
* Add clarification menu to library editor when multiple items are found
at the current position.
* Add get clarification menu text to all objects derived from LIB_ITEM.
* Add get menu bitmap for all objects derived from LIB_ITEM.
* Improve LIB_PIN bounding box calculation.
* Rename LIB_ITEM::DoGenCopy to doClone to match behavior defined in base
class EDA_ITEM.
* Minor class renaming for improved code consistency.
* Added less than operator to EDA_ITEM.
* Change class WinEDA_MsgPanel name to EDA_MSG_PANEL per coding policy.
* Change some old set message panel code in PCBNew with updated message
panel methods in EDA_DRAW_FRAME.
* Remove unused global function Affiche_1_Parametre.
* Minor Doxygen warning fixes.
CMake: add definition KICAD_TESTING_VERSION and KICAD_STABLE_VERSION.
One of these 2 options *must* be now defined (i.e. run cmake with option -DKICAD_STABLE_VERSION or -DKICAD_TESTING_VERSION
Stable and testing branches should be more easier to maintain.
* Move undo item copy global variable into schematic editor frame object
member variable.
* Add helper methods for accessing the undo item copy member variable.
* Fix undetected bug when changing a text type.
* Added an exchange command to the undo/redo base class for handling undoing
a changed item type which cannot be undone by swapping out the variables.
* Revert change to common/hotkeys_basic.cpp that broke hot key behavior.
* Lots of coding policy changes while making the changes above.
* store selected language by name instead of wx language id (that changes between wxWidgets version)
* accept always comma and point as flotating point separator.
* Add item clarification context menu to EESchema when multiple unresolved
items are found at the current cross hair position.
* Add collector class SCH_COLLECTOR for supporting multiple item hit testing.
* Removed bit wise masked filtering from schematic item hit testing.
* Removed all old hit testing functions and methods scattered about the
EESchema source code.
* Move terminal point test function into SCH_SCREEN object.
* Fixed bug in terminal point test when terminating a bus to a label.
* Define the < operator for sorting schematic items.
* Add area calculation method to EDA_Rect item.
* Add method for returning an item's bitmap for menu display purposes.
* Add method for returning an item's menu text for menu display purposes.
* Changed EDA_ITEMS container from boost::ptr_vector to std::vector.
* Factor coordinate string conversion code from EDA_DRAW_FRAME to function
CoordinateToString().
* Set default button on all dialogs that do not already have a defined
default button. The only exception is the EESchema net list dialog
which needs converted over to wxFormBuilder and due to it's design makes
setting the default button in any tab other than the default tab
problematic.
* Fix escape key dialog handling bug in EESchema print post script
dialog.
* Remove clearance and net class name read only text boxes from PCBNew
auxiliary tool bar.
* Display full net class information in message panel when an object that
supports net classes is selected.
* Move coordinate string conversion function to EDA_DRAW_FRAME object and
made it more versatile.
* Refresh message panel text when units change.
* Move locate function code into schematic screen object.
* Move test for junction needed into schematic screen object.
* Move test for marking connected items into schematic screen object.
* Move delete item function code into schematic screen object.
* Move delete all markers code into schematic screen object.
* Add method for locating multiple items in schematic screen object.
* Fix minor bug in schematic field object hit test declaration.
* Initial encapsulation work on item picker object.
* Remove duplicate doxygen comments from item picker object source file.
* Fix grid select box update bug on context menu.
* Fix via size and track width select box update bugs.
* Fix layer pair indicator button update bug.
* Fix auto track width tool bar control enable bug.
* Fix via size and track width select status bug in context menu.
* Fix layer select box and layer control widget select bug when current
layer is removed.
* Add virtual function to notify objects derived from EDA_DRAW_FRAME that
the units setting has changed.
* Coding policy class naming fixes.
* fix incorrect bounding box size calculation of schematic components.
* fix incorrect bounding box position and size used when schematic components are not found in lib (dummy lib componen used).
Pcbnew:
* Fix issues in block selection for arcs in modedit. Minor code cleaning.
CopyToClipboard: fix incorrect call to PrintPage (bad parameters)
* Make EDA_DRAW_FRAME current tool ID member variable private.
* Added global no tool selected ID to replace application specific no
tool selected IDs.
* Change SetToolID to prevent setting the tool ID to anything less than
the new global no tool selected ID and assert on debug builds.
* Change command and update user interface command event handlers to use
new global no tool selected ID.
* Fixed schematic library editor add pin hot key handler.
* CVPcb now uses wxUpdateUIEvent instead of set toolbars.
* Removed duplicate event handlers in CVPcb that were factored into
EDA_DRAW_FRAME.
* Fix definition of GeneralControle() in CVPcb that prevented it from being
called.
* Remove rarely used and scary refresh code GeneralControle() method in all
main frame windows.
* Factor zoom menu and tool bar command IDs down to EDA_DRAW_FRAME.
* Old control state handling code completely removed in all applications.
* Factor common control state handlers into EDA_DRAW_FRAME.
* Replaced EDA_ITEM test for newness with IsNew() method.
* Factor vertical right toolbar command handlers out of giant edit command
switch statement in EESchema and PCBNew.
* Rename all member variables and methods that reference the cross hair
code in draw panel object from cursor to cross hair to eliminate confusion
between the two concepts.
* Rename cursor capture call backs in draw panel object to improve code
readability.
* Create helper class for turning off the cross hair while drawing.
* Remove redundant block clear code.
* Remove redundant mouse capture call back reset code when end capture
call back is called.
* Remove unused function definitions in base draw frame object.
* Lots of minor coding policy and doxygen comment fixes.
* Fix optimized bitmap grid drawing method.
* Enable optimized grid drawing method on Windows and Linux.
* Create a helper class for resetting and restoring device context scale
and origin settings for blitting purposes.
* Use wxLogTrace instead of wxLogDebug for coordinate dumping in
drawpanel.cpp. See comments for more information on enabling coordinate
tracing.
* Add flag to allow hiding the drawing cross hair. Hide cross hair by
default on OSX.
* Move get cross hair device position code from draw panel object to base
screen object.
* Remove redundant parent member variable from draw panel object by
overriding wxWindow::GetParent() method.
* Fix rendering bug in GerbView caused by wxDC scaling change caused by
setting the wxDC clipping region.
* Eliminate the need to have optional background erasing as the change
above fixed that problem as well.
* Default cursor handling improvements.
* Schematic editor cancel current tool command now use a single command
ID that is used everywhere the event is generated.
* Moved cancel current tool code from Process_Special_Functions to a
separate event handler.
* Add idle check method to block select object.
* Add block active check to base screen object.
* Remove base screen methods from draw frame object and correct current
screen methods in derived objects.
* Move restore old wires function code into schematic screen object.
* Make add junction method use current screen position instead of store
position.
* Move poly line ghosting function into the delete current segment method
as that was the only place is was being used.
* Add method to base schematic object of testing if object has a label
that can be incremented.
* Simplified the schematic hierarchy traversing code.
* PCBNew Doxygen warning fixes.
* Changed managed cursor callback definition to include the current
cursor drawing position.
* Modified all managed cursor callbacks to match new definition.
* Added snap to grid option to base drawing frame object.
* Changed add no connect managed cursor callback to use new position
parameter instead of the stored one.
* Lots of coding policy fixes.
* Remove unused member variable m_SizeVisu from base screen object.
* Move nearest grid position code into base screen object.
* Add get cursor position method to base screen object.
* Add position parameter to OnHotKey method in base draw frame and all
derived objects.
* Pass logical position on left mouse button click and double click
events instead of device position.
* Pass logical position to on right mouse button click instead of device
position.
* Use logical event position parameter for locating items in EESchema
instead of the stored position.
* Remove unused position parameter when displaying component edit dialog
in EESchema.
* Comment out debugging macro in eeschema/template_field_names.cpp that was
preventing debug builds using wxWidgets 2.8.x.
* macros.h now has TO_UTF8() and FROM_UTF8() which are working converters
to and from UTF-8 encoding for any wxWidgets build mode. We can switch to
them at any time. I am using them now for specctra conversions and
elsewhere where I wanted gauranteed UTF8 encoding.
* added OUTPUTFORMATTER::Quoted( const wxString& ) to simplify converting
to UTF8 encoded s-expression atoms. The recommended technique is now simply:
out->Quoted( wxString ).c_str()
* Use wxDC to calculate screen center position.
* Minor grid drawing optimization.
* Remove an unnecessary use of global variable ActiveScreen.
* Doxygen warning fixes.
* Remove all occurrences if #ifdef USE_WX_ZOOM and all associated code within
the #else/#endif block ( old zoom code ).
* Removed the build option for USE_WX_ZOOM from CMakeList.txt and config.h.in.
* Removed all scaling code in base screen object.
* Fixed buffered paint and buffered client DC on Windows. Buffering works
properly on Linux and Windows.
* Modified kicad_device_context.h to automatically uses buffering on platforms
where double buffering is supported natively.
* Remove all of the scaled versions of the drawing functions in gr_basic.cpp
and any support code.
* Removed all traces of ActiveScreen global variable from eeschema and
gerbview.
* Renamed Recadre_Trace to RedrawScreen in draw frame object.
* Renamed PostDirtyRect to RefreshDrawingRect in draw panel object.
* Lots of code cleaning an Doxygen comment improvements.
* DSNLEXER::NextTok() now uses two separate modes to parse quoted strings.
This gives us the freedom to control our own destiny separate from the
constraints put on us by the Specctra DSN spec.
* Added Documentation/s-expressions.txt to explain all this.
* Enhanced our quoting protocol by moving away from doubling up double quotes
to a C line escape mechanism.
* Now support multi-line strings, which when properly escaped, can still be
read in as a token originating on a single line.
This was due to a duplicate constants ( with sligtly different values) used to select items in some seach functions that broke filtering. Old definitions removed.
* Move schematic wire and bus break code into schematic screen object.
* Move schematic test for dangling ends into schematic screen object.
* Remove left over debugging output in schematic screen object.
* Remove unused file eeschema/cleanup.cpp.
* Fix bug in schematic line object hit test algorithm.
* Fix a string concatenation compile error added in r2752.
* Rename class WinEDA_BasicFrame to EDA_BASE_FRAME.
* Rename class WinEDA_DrawFrame to EDA_DRAW_FRAME.
* Rename class WinEDA_DrawPanel to EDA_DRAW_PANEL.
* Encapsulate file name member of base screen object.
* Encapsulate associated screen member of schematic sheet object.
* Create add screen method to schematic sheet object to simplify setting
the associated screen.
* Move the change file name code in the schematic sheet object to the edit
sheet method in the schematic editor frame object to eliminate message
dialogs.
* Improve reference counting in schematic screen object.
* Add helper type definitions for changing schematic object storage to C++
containers.
* TokenList2DsnLexer.cmake now supports comments, which start with a leading
# character, and may be either on their own line or on a line after a token.
* DSNLEXER::PopReader() now pops even the last LINE_READER* and returns it.
++pcbnew:
* SPECCTRA_DB now inherits from new class SPECCTRA_LEXER, which led to a great
deal of simplification and code factoring.
* Moved specctra keywords into specctra.keywords.
Very minor enhancement in module edition dialogs.
Fix a minor bug in design rules editor: in Global Rules Edition: drill values > via diameter not checked
and the first item (track or via) in list was not checked (explains Bug 702177, that is not really a bug)
Pcbnew: fix that prevents loading modules from libraries (footprint name not identified in lib)
Module Editor: Try to fix incorrect printing. Fixed now only for scale 1. Nor working for other scales. (Work in progress).
Gerbview: Known bug: printing not working.
VRML export: Fix incorrect export of 3D shapes rotations when the 3D shape was rotated.
* Rename sch_item files to sch_junction.
* Make global variable g_ItemToRepeat a private member of SCH_EDIT_FRAME
object.
* Encapsulate SCH_SCREEN reference count member.
* Move update block pick list code to SCH_SCREEN object.
* Remove redundant drawing function RedrawOneStruct().
* Change context menu text "Noconn" to "No Connect".
* Change context menu text "GLabel" to "Global Label".
* Added the basic structure to the Sweet parser in sch_part.cpp.
* Got inheritence working off of the 'extends' keyword and PART::inherit()
* Tossed the units support out of sweet.keywords, since we agreed to go dimensionless.
++richio:
* Added the problemInputLine support to PARSE_ERROR, so UI can show the
offending line of bytes. Yes bytes, not even guaranteed to be characters.
Eeschema: cleaning code. Start work to enhance annotation algorithm.
Already added an option to annotate using sheet number (sheet 1 uses numbers 100 to 199, sheet 2 uses 200 to 299..).
Works fine if deleting existing annotation, but needs work to be used when the existing annotation is kept .
Rename EDA_Rect::Inside to EDA_Rect::Contains ( EDA_Rect::Inside( const EDA_Rect& aRect ) was very ambiguous )
Fix some Doxygen warnings and erroneous comments; Add comments.
soldermask. Nevertheless, it would be nice to have proper gerbers to
begin with, i.e., gerbers with no silkscreen in soldermaskless areas.
Of course, most of the problem can be taken care of by drawing the
footprints properly. However, sometimes the silkscreen of one
footprint ends up on the pads of another one (think components under a
so-dimm card, for example). The attached patch adds an option to
subtract the soldermask from the silkscreen when doing gerber output.
marco