KiCad ChangeLog 2012 ==================== 2012-Jan-9 UPDATE Dick Hollenbeck ================================================================================ ++all * Carve out TITLE_BLOCK from BASE_SCREEN * Add include/hashtables.h and put class PROPERTIES in there. Change PROPERTIES to use "const char*" as the key instead of wxString. ++eeschema * Add shim class SCH_BASE_FRAME which introduces the data model SCH_SCREEN to the frame EESCHEMA frame class hierarchy and allows sharing of: SCH_SCREEN* GetScreen() const; // overload EDA_DRAW_FRAME void SetPageSettings( const PAGE_INFO& aPageSettings ); // overload EDA_DRAW_FRAME const PAGE_INFO& GetPageSettings () const; // overload EDA_DRAW_FRAME const wxSize GetPageSizeIU() const; // overload EDA_DRAW_FRAME const wxPoint& GetOriginAxisPosition() const; // overload EDA_DRAW_FRAME void SetOriginAxisPosition( const wxPoint& aPosition ); // overload EDA_DRAW_FRAME const TITLE_BLOCK& GetTitleBlock() const; // overload EDA_DRAW_FRAME void SetTitleBlock( const TITLE_BLOCK& aTitleBlock ); // overload EDA_DRAW_FRAME 2012-Jan-5 UPDATE Dick Hollenbeck ================================================================================ ++all Ki_PageDescr was re-written as a proper C++ class and renamed to PAGE_INFO. It describes paper. The m_Offset field was dropped since it was only used in HPGL plotting within EESCHEMA. PAGE_INFO instance was moved out of BASE_SCREEN (which is on its way out) into both SCH_SCREEN and BOARD. KiCad ChangeLog 2011 ==================== Please add newer entries at the top, list the date and your name with email address. 2011-Dec-19, UPDATE Jean-Pierre Charras ================================================================================ Pcbnew: Enhanced algorithms to calculate board connections: - A track is seen connected to a pad if the track end is inside the pad shape. - Pads inside pads are now seen connected, if the center of the pad is *inside* the other pad. (this is made to be sure a large copper area is shared by the 2 pads, and to keep algorithm fast). Algorithm to calculate pads connections is still very fast. However some other functions (drag pads, track len calculation ...) still need the track end exactly on the pad position. 2011-Dec-13 UPDATE Dick Hollenbeck ================================================================================ ++common * changed all the RotatePoint() functions in trigo.{h,cpp} to take a double as the angle, which is still in tenths of degrees for now. * EDA_TEXT::m_Orient is now double, still in tenths of degrees (for a short while), but the double means parsing files and saving them use a different format string. ++pcbnew * DRAWSEGMENT::GetStart() and GetEnd() do not operate for S_ARC like they used to. They are now simply accessors for m_Start and m_End. Use DRAWSEGMENT::GetArcStart() and GetArcEnd() and GetCenter() for arcs. specctra_export.cpp was the only source file dependent on the old behavior. * DIMENSION::m_Text is now contained, not dynamically allocated. * more kicad_plugin work. 2011-Dec-9 UPDATE Dick Hollenbeck ================================================================================ ++PCBNew * added BOARD::GetPad(int), made BOARD::m_NetInfo private, and contained within the BOARD, not dynamically allocated and owned via pointer. * added BOARD::GetPadCount() * changed NETINFO_LIST::GetCount() to GetNetCount() * added BOARD::GetNetCount() * more kicad_plugin work. 2011-Dec-5 UPDATE Dick Hollenbeck ================================================================================ ++PCBNew * Removed Pcb_Frame argument from BOARD() constructor, since it precludes having a BOARD being edited by more than one editor, it was a bad design. And this meant removing m_PcbFrame from BOARD. * removed BOARD::SetWindowFrame(), since BOARD::m_PcbFrame gone. * Removed the global BOARD_DESIGN_SETTINGS which was in class_board.cpp * Added BOARD_DESIGN_SETTINGS to the BOARD class, a full instance * A couple of dialogs now only change BOARD_DESIGN_SETTINGS when OK is pressed, such as dialog_mask_clearance, dialog_drc, etc. * Removed common/pcbcommon.cpp's int g_CurrentVersionPCB = 1 and replaced it with build_version.h's #define BOARD_FILE_VERSION, although there may be a better place for this constant. * Made the public functions in PARAM_CFG_ARRAY be type const. void SaveParam(..) const and void ReadParam(..) const * PARAM_CFG_BASE now has virtual destructor since we have various ways of destroying the derived classes and boost::ptr_vector must be told about this. * Pass const PARAM_CFG_ARRAY& instead of PARAM_CFG_ARRAY so that we can use an automatic PARAM_CFG_ARRAY which is on the stack. * PCB_EDIT_FRAME::GetProjectFileParameters() may no longer cache the array, since it has to access the current BOARD and the BOARD can change. Remember BOARD_DESIGN_SETTINGS are now in the BOARD. * Made the m_BoundingBox member private, this was a brutally hard task, and indicative of the lack of commitment to accessors and object oriented design on the part of KiCad developers. We must do better. Added BOARD::GetBoundingBox, SetBoundingBox(), ComputeBoundingBox(). * Added PCB_BASE_FRAME::GetBoardBoundingBox() which calls BOARD::ComputeBoundingBox() 2011-Dec-04, UPDATE Jean-Pierre Charras ================================================================================ Pcbnew: Enhanced algorithms to calculate board connections: Previously, a track was seen connected to a pad only if the track end is exactly on the pad position. Now a track is seen connected to a pad if the track end is inside the pad shape. Algorithm to calculate pads connections to track is still very fast. However some other functions (drag pads, track len calculation ...) still need the track end exactly on the pad position. 2011-Nov-27 UPDATE Dick Hollenbeck ================================================================================ ++PCBNew * Add PLUGIN and IO_MGR classes. * Remove one argument from BOARD constructor, * add BOARD::SetWindowFrame() 2011-sept-13 UPDATE Wayne Stambaugh ================================================================================ PCBNew locate code refactoring. * Move various locate functions into the appropriate board item object. * Unified best zoom for all frames derived from PCB_BASE_FRAME. * Remove track.cpp as it is no longer needed. * Dead code removal. * Remove scary frame window pointer member from board item objects. * Add draw bounding box to gerber draw item for debugging purposes. 2012-Sept-8 UPDATE Dick Hollenbeck ================================================================================ ++all * Write an automatic bitmap generation script in cmake, PNG2cpp.cmake * Write an infrastructure generate *.png files from inkscape files, and do it maintaing the "as needed" change detection support. * Support an *.SVG maintainer mode, AND an *.SVG user mode. * Engineer a seemless switchover from old style xpm files, with minimal impact to system wide source code. 2011-Sept-07, UPDATE Andrey Fedorushkov ================================================================================ Pcbnew: Add hotkey "P" - place item Add Roman Bashkov patch for record/play sequence hotkey macros Add record and play macros for sequence hotkey. Macros set to numeric key 0..9: + - start record macros ... | + - end record macros - 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 2011-Sept-01, UPDATE Jean-Pierre Charras ================================================================================ Add Fabrizio Tappero in contributors list. 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. 2011-Aug-19, UPDATE Jean-Pierre Charras ================================================================================ Pcbnew: Add support for not plated through holes (NPTH) pads * These NPTH pads are used for mechanical purpose only, and cannot be connected to a net. * When these pads have a same size and shape for the hole and the pad, the pad is not plotted in GERBER files. 2011-Apr-12, UPDATE Jerry Jacobs ================================================================================ Minor UI changes that affect OS X platform. - Fix for opening the help contents - Fix for opening files with the default editor - Fix for opening PDF files Solved all with the BSD open command, for other OS'es which have X11 and utilities they can use the xdg-open command which I added to the pdf viewer tries list. Kicad projectview: Remove not-existing files when a empty project is created, this confuses when users try to open it. Show a entry that the project is empty instead of these void files. 2011-Apr-6, UPDATE Jerry Jacobs ================================================================================ Cleanup of all the menubar code to have the same style, remove the C comments. Make the wxMenu behave native on OSX for KiCad, CvPCB and Gerbview and remove unneeded ifdefs when using the wxIDs. Add a OnQuit for the gerber frame. Change item->SetBitmap( item ) to use macro SET_BITMAP for menu items. 2011-Apr-4, UPDATE Jerry Jacobs ================================================================================ More native OSX changes, this removes some WXMAC defines replaced by wxID macros. These are handled by wxWidgets itself and reduces in-app platform defines. More work needs to be done for CvPCB and Gerbview. All: Hotkey names in menu's all have tabs, this looks more uniform and pretty. EESschema & PCBNew: Fix about and preferences wxMenu to be more native (remove unneeded WXMAC ) Disable all icons in wxMenu on OSX with macro SETBITMAPS jp charras: SETBITMAPS is incorrectly used here. change to SET_BITMAP 2011-Mar-25 UPDATE Wayne Stambaugh ================================================================================ EESchema multiple item hit testing and other minor improvements. * 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(). 2011-Mar-16, UPDATE Jean-Pierre Charras ================================================================================ Gerbview: Added: read Excellon files created by Pcbnew. The full Excellon command set is not supported, but drill files created by Pcbnew are supported. 2011-Feb-05, UPDATE Jean-Pierre Charras ================================================================================ CvPcb: Code cleanup. Rename WinEDA_CvpcbFrame to CVPCB_MAINFRAME, according to coding style policy. Change in CvPcb: CvPcb does not use now .dcm files, only .mod files, to read modules keywords and doc 2011-Feb-2 UPDATE Dick Hollenbeck ================================================================================ ++common: * 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() 2011-Jan-30 UPDATE Dick Hollenbeck ================================================================================ ++all: * 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 like escape mechanism. * Now support multi-line strings, which when properly escaped, can still be read in as a token originating on a single line. 2011-Jan-21 UPDATE Wayne Stambaugh ================================================================================ EESchema code refactoring and coding policy naming fixes. * 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. 2011-Jan-19 UPDATE Dick Hollenbeck ================================================================================ ++all: * 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. 2011-Jan-17 UPDATE Dick Hollenbeck ================================================================================ ++all: * TokenList2DsnLexer.cmake now wraps each token enum in its own namespace. It also no longer setup of the "using" directive in the header file, which was bad behavior. C++ enum values will have name collisions unless the enums themselves are different namespaces. ++new: * Sweet library is now a DSO/DLL. * Brought in SWIG to do a wrap of the Sweet DSO/DLL for unit testing and scripting. The SWIG DSO/DLLs are built separate from the Sweet DSO/DLL and are also optional. 2011-Jan-1 UPDATE Dick Hollenbeck ================================================================================ ++new: * 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. KiCad ChangeLog 2010 ==================== 2010-dec-31 UPDATE Wayne Stambaugh ================================================================================ ++all * Exclude boost header include path from Doxygen files. * Coding guide line and doxygen warning fixes. ++EESchema * Rename OBJ_CMP_TO_LIST to SCH_REFERENCE. * Move code related to SCH_REFERENCE into the object where it belongs in hope that some day the object members can be made private instead of public. * Add GetComponent method to sheet path and sheet path list objects. * Move screen list code into screen list object. 2010-Dec-28 UPDATE Dick Hollenbeck ================================================================================ ++richio: * Deleted kicad_exceptions, because it required the big #include and that was slowing down compiling. Moved that stuff back into richio.h where it came from. * Enhanced IO_ERROR to format an errorText. * Added THROW_IO_ERROR() and THROW_PARSE_ERROR() macros to capture the the call site of the thrower. If you have problems compiling, it is probably due to the definition of __LOC__ in richio.h. Some compilers may not support __func__ in C++ yet. Find a macro that identifies your compiler, and we can work out something in the #define of __LOC__. 2010-Dec-28 UPDATE Dick Hollenbeck ================================================================================ ++new: Completed most of /new class LIB_TABLE. Completed all of /new class LPID. ++common: Tricked xnode.h into not issuing deprecation warnings. ++richio: * Added support of DSNLEXER( LINE_READER* ) to TokenList2DsnLexer.cmake, which allows the chaining of different grammars on top of a common LINE_READER. * Changed OUTPUT_FORMATTER::Quoted() to return a std::string and not modify its input parameter. 2010-dec-21 UPDATE Wayne Stambaugh ================================================================================ ++all * Doxygen comment warning fixes. * Coding policy fixes. ++common * Add clone method to EDA_ITEM object. ++EESchema * Replace GenCopy() method with Clone() in all items derived from SCH_ITEM. * Simplify repeat last schematic item with new Clone() method. * Simplify duplicate schematic item method with new Clone() method. * Separate objects in sch_items.h/cpp into separate files per object. 2010-dec-20, UPDATE Jean-Pierre Charras ================================================================================ common: 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 2010-Dec-19 UPDATE Dick Hollenbeck ================================================================================ ++new: Completed a good portion of /new class DIR_LIB_SOURCE. Added an autonomous CMakeLists.txt file to /new, with new-docs target and test program target. 2010-dec-15, UPDATE Jean-Pierre Charras ================================================================================ Gerbview: Added: in file dialog, multiple file selection. Added: Draw mode selector (in left toolbar): Raw mode: a Gerber image is drawn on screen without buffering. Artifacts happen if there are negative items drawn, if more than one Gerber file is shown. Stacked mode: each Geber image is drawn in a buffer and after drawn on screen No artifact with negative items. Each Gerber image covers previous images. OR mode (transparency mode): each Geber image is drawn in a buffer and after drawn on screen No artifact with negative items. Each Gerber image is "ORed" with previous images, like in Pcbnew. Try to optimize Draw function in buffered modes. (Useful for PC that have problems with "blit" graphic function) Fix minor issues. 2010-dec-13 UPDATE Wayne Stambaugh ================================================================================ * Remove deprecated options and quoted project name option in Doxygen file. * Make Bazaar ignore the files generated by Doxygen in the new folder. ++EESchema * More schematic component encapsulation work. * Doxygen comment fixes. 2010-Dec-13 UPDATE Dick Hollenbeck ================================================================================ ++eeschema: Committed a new design for a "Distributed Library System". To make the html docs, run doxygen in /new with that as your current working directory, or run the shell script in there. You need Doxygen installed. 2010-dec-13 UPDATE Wayne Stambaugh ================================================================================ ++common * Make base marker hit test method const. ++EESchema * Improve hit testing for schematic components. * Add initial support for hit test filtering. * Moved static function CountConnectedItems() into SCH_SCREEN object. * Add IsConnected() method to SCH_ITEM object. 2010-dec-10 UPDATE Wayne Stambaugh ================================================================================ ++All * Make a whole bunch of object methods const in order to make HitTest() const. * Lots of coding policy fixes. ++common * Add Inside override to EDA_Rect to test if another EDA_Rect is inside. * Add additional parameter to EDA_TextStruct GetTextBox method to support Y axis inversion and non-default thickness. * Add accuracy parameter to EDA_TextStruct TextHitTest method. ++EESchema * Refactor schematic object hit testing to provide coherent object interface. * Remove redundant GetBoundaryBox from schematic component object. * Remove redundant layer member from schematic text object. * Create hit test override to check for rectangle intersection and containment. * Simplify schematic block selection hit testing. * Make schematic and component library object enum naming consistent. 2010-dec-08 UPDATE Wayne Stambaugh ================================================================================ ++All * Coding policy object naming and formating fixes. ++GerbView * Fix compiler warnings. ++Common * Change item list type from SCH_ITEM to EDA_BaseStruct in BASE_SCREEN object. * Encapsulate BASE_SCREEN drawing item list member. * Change grid container from wxWidgets to standard C++ container. 2010-dec-07 UPDATE Wayne Stambaugh ================================================================================ ++EESchema * Finish encapsulating LIB_FIELD object. * Encapsulated all members currently in use in LIB_PIN object. ++Common * Add SetModified() helper to EDA_BaseStruct object that checks for a parent object and sets it's modified status as well. 2010-dec-02 UPDATE Wayne Stambaugh ================================================================================ ++EESchema * Move color configuration dialog to dialogs folder. * Simplify color configuration dialog design, remove enable grid checkbox( I think we have enough places to do this), and remove abbreviated labels. * Restore changing value field behavior to create new component from the current one and handle all of the potential library naming conflict issues. * Create a toolbar button perform the same function as renaming the value field for improved usability. * Add new copy component bitmap contributed by Jean-Pierre Charras. 2010-dec-02, UPDATE Jean-Pierre Charras ================================================================================ Pcbnew: For zone filling algo, change the default polygon library from Kbool to Boost::polygon. 2010-dec-01, UPDATE Jean-Pierre Charras ================================================================================ Gerbview: Added support for complex definitions of parameters in aperture macros and primitives macro (a complex definition in a parameter that is calculated by an arithmetical expression) Gerbview should now have a decent support of Gerber language. Currently only the obscure knockout command is not supported (I have no motivation to do that) Other "bug": scale in A and B axis is poorly supported: coordinates are scaled, but shapes can have problem: fro instance, a circle is drawn as a circle when A and B scales are different, and perhaps should be an ellipse. On the other hand, Gerber doc is not clear about the meaning of A and B scale. (Alas! Gerber doc is not clear about most of advanced commands) 2010-nov-19 UPDATE Wayne Stambaugh ================================================================================ ++EESchema * Move library new component and schematic edit sheet dialogs to dialogs folder. * Set library new component and schematic edit sheet dialogs default button. * Create wxFormBuilder version of edit sheet label dialog and remove hand coded version. * More coding policy fixes. 2010-nov-19 UPDATE Wayne Stambaugh ================================================================================ ++EESchema * Move library dimension, schematic configuration, and schematic options dialogs to dialogs folder. * Set library dimension, schematic configuration, and schematic options dialogs default button to OK button. * Kicad coding policy clean ups. 2010-nov-17 UPDATE Wayne Stambaugh ================================================================================ ++EESchema * Move library text edit, library draw item edit, SVG print, and BOM dialogs to dialogs folder. * Rename library text edit dialog file and object names to comply with coding policy. * Set default button in library text edit, library draw item edit, SVG print, and BOM dialogs. * Move BOM dialog code into BOM dialog object source file. 2010-nov-11 UPDATE Wayne Stambaugh ================================================================================ ++EESchema * Make schematic object file naming consistent. * Move annotate dialog to dialogs subdirectory and set the "Annotation" button as the default. * Move ERC dialog to dialogs subdirectory and set the "Test Erc" button as the default. * Move the print dialog to dialogs subdirectory and set the "Print" button as the default. * Create print dialog header and move the OnPrint() method into schframe.cpp. 2010-nov-10 UPDATE Wayne Stambaugh ================================================================================ ++EESchema * Header file rationalization. * Move schematic object load code into the appropriate schematic object. 2010-nov-3 UPDATE Wayne Stambaugh ================================================================================ ++common * Initial ground work for using Boost container for storing draw items instead of internal linked list. ++EESchema * Move tests for dangling end code back into schematic objects. * Add clear draw object state helper to SCH_SCREEN object. * Add support for schematic objects to keep temporary list of connection objects for dangling end and other connection related tests. * Rearrange schematic label object code. * Remove duplicate error message boxes when loading schematic items. 2010-oct-28, UPDATE Jean-Pierre Charras ================================================================================ PolyLine.cpp: remove unused method CPolyLine::TestPointInsideContour() which was a duplicate of TestPointInsidePolygon(). In CPolyLine::TestPointInside(); replace curious algo (which have a problem) to test a point inside a polygon by TestPointInsidePolygon() ++Pcbnew: fix a bug in Drc and clearance calculations when using a dummy pad ( in zones calcualtions and to test holes ot tracks and holes to pads DRC). 2010-oct-26 UPDATE Wayne Stambaugh ================================================================================ ++EESchema * Change screen list object array type from wxARRAY to std::vector. * Move all SCH_SCREEN methods into file class_sch_screen.cpp. * Move find dialog files to dialogs sub-directory. * Remove hallucinatory save and restore methods I wrote from component library draw objects. * Merge external TstAlignSegment function to SCH_LINE::MergeOverlap method. * Move save schematic method to files-io.cpp and remove empty file save_schemas.cpp. ++include * Remove unused internal link list next and back methods from base screen object. 2010-oct-25 UPDATE Wayne Stambaugh ================================================================================ ++EESchema * Remove common library component and alias base class CMP_LIB_ENTRY. * Derive LIB_COMPONENT and LIB_ALIAS directly from EDA_BaseStruct. * Encapsulate most library draw item object members. * Make most library draw item get methods constant. * Merge two edit component properties methods into a single method. * Update double click left mouse button to use merged edit component properties method. * Set schematic find dialog find button as default button. ++include * Add in-line flag state helpers to EDA_BaseStruct. 2010-oct-22 UPDATE Wayne Stambaugh ================================================================================ Component library editor bug fixes and other minor fixes. * Fix bug that prevented component from being replaced in library when the component root name was changed. * Fix drawing bug when changing text or field item string while move in progress. * Fix drawing bug when rotating text item while move in progress. * Prevent undo or redo when editing a component draw item. * Fix assert bug when replacing component in library when the component root name was changed. * Fix bug in field editor caused by new root alias implementation that prevented any field from being changed. * Fix minor spacing issues with EESchema find dialog. * Deprecate remaining internal linked list code from component library objects. * Rename pin object files to match new library object file naming scheme. * Move LIB_TEXT object definition into it's own header file. 2010-Oct-20 UPDATE Dick Hollenbeck ================================================================================ ++richio: LINE_READERs will now allocate a smaller initial size buffer, say 5000 bytes, and then resize their buffers up to some provided maximum, after which an exception is thrown should a line exceed that maximum line length. 2010-oct-15, UPDATE Jean-Pierre Charras ================================================================================ ++gerbview: Added support for gerber commands: SR (Step and Repeat) multiple MOIN and/or MOMM in file (switch units from inch to mm and mm to inch) 2010-oct-09, UPDATE Jean-Pierre Charras ================================================================================ ++gerbview: Fixed some issues: Now aperture macro with parameters works. Note: complex parameters (like $1 + 4) are not supported other commands not yet supported: SF (scale factors) Offsets (image and layer) Rotations (image and layer) Axis definition Mirroring SR (Step and repeat) KO 2010-Oct-5 UPDATE Dick Hollenbeck ================================================================================ ++richio: * LINE_READER now has a GetSource() function which is used in error reporting. This is typically the name of the file which is supplying the lines of text, or string "clipboard" if the text is coming from the clipboard. Derived classes FILE_LINE_READER and STRING_LINE_READER's constructors both need an additional parameter which identifies the source. * FILE_LINE_READER now owns the source FILE and will close it in its destructor. This resulted in the removal of several fclose() statements that had been there to close a file associated with a FILE_LINE_READER. * DSNLEXER now supports an internal LINE_READER* stack which is used to handle nested s-expression files, with the ability to resume from the proper place in the containing file. There is now PushReader() and PopReader() functions in DSNLEXER to handle this. No protection is provided against circular inclusions, but this could be done by searching the stack and comparing GetSource() values for anything already on the stack before pushing. Each s-expression grammar is free to define one or more keywords that cause nesting to occur. That policy choice is not part of DSNLEXER's job. One example might be: (inherit (footprint library_uri ftprintname)) 2010-oct-04 UPDATE Wayne Stambaugh ================================================================================ Initial work on new component library stucture. * Use C++ map in component library instead of boost::ptr_vector. * Drop Boost pointer containers for standard C++ containers. * Moved duplicate name user interface elements from library object to library editor. * Added code to support direct addition and replacement of component alias objects into libraries. * Removed temporary strings used to add and remove alias objects. * Libraries only store alias objects, components now accessed thru alias. * Simplify library API for adding, removing, and replacing components. * Updated edit component in library dialog and library editor to reflect component library object changes. * Fixed bug in library viewer when displaying alias name. * Made a few header files compile stand alone per the new coding policy. * Remove some dead code and the usual code formatting fixes. 2010-oct-03, UPDATE Jean-Pierre Charras ================================================================================ ++gerbview: finished Draw functions for aperture macros. Now aperture macros are draww correctly. Known bug: aperture macros having parameters are incorrect: parameters are not transmited correctly. Work still in progress. 2010-sept-28, UPDATE Jean-Pierre Charras ================================================================================ ++gerbview: Important changes: graphic functions rewritten. graphics items are now specific to gerbview (added a GERBER_DRAW_ITEM class) and do not use tracks from pcbnew. The way used to draw them is also new. Apertures are now correctly drawn for round, oval, rectangular and regular polygon shapes (with or without holes) Aperture definition type Polygon is not yet handle. Polygons are correctly drawn. TODO: Draw functions for aperture macros. Work in progress. 2010-Aug-9 UPDATE Dick Hollenbeck ================================================================================ ++CMakeModules: Revise TokenList2DsnLexer.cmake to take outCppFile and outHeaderFile optinally and enum mandatorily. Standardize the script's invocation technique within all the CMakeLists.txt files. 2010-Aug-8 UPDATE Dick Hollenbeck ================================================================================ ++CMakeModules: Revise TokenList2DsnLexer.cmake to make an entire derived lexer class that returns the proper enum type for superior debugging. ++eeschema * netform.cpp now outputs the allowed footprint filters for a given library component. * There is an auto-generated class called NETLIST_LEXER which is defined in from netlist.keywords by TokenList2DsnLexer.cmake into netlist_lexer.h, that may be the basis of loading a S-expression form of the generic netlist format which is written from netform.cpp. 2010-Aug-7 UPDATE Dick Hollenbeck ================================================================================ ++common * add xnode.cpp and xnode.h which can be used to output either an XML or S-expression document file. * Add class STREAM_OUTPUTFORMATTER which is a richio class which can write to any of the wxOutputStream derivatives, such as file, socket, zip, tar. * Added netlist.keywords ++eeschema * netform.cpp can now output S-expression OK, although I have it commented out pending the addition of a UI for it. 2010-Aug-4 UPDATE Dick Hollenbeck ================================================================================ ++eeschema netform.cpp: * Finish up first working version of the XML export. 2010-Aug-3 UPDATE Dick Hollenbeck ================================================================================ ++eeschema netlist.cpp and netform.cpp: * Found several speed optimizations in the netlist export code. * Now sort the pins properly if they have pin numbers like A1 and A10, i.e. alphanumerics in them. 2010-Jul-30 & 31 UPDATE Dick Hollenbeck ================================================================================ ++eeschema: * Now link with XML support within wxWidgets. * Export the generic netlist in XML. Only the libpart elements are missing now. Still need to rework the chain loaded netlist plugin, but may do that in XSL. * OBJ_CMP_TO_LIST class now uses a std::string to hold the 8 bit string m_Ref, but hides this behind accessors which provide for both Unicode and 8 bit set and get functions. * build_BOM.cpp retains the selected filename on subsequent runs as a default. * Code cleaning, especially in build_BOM.cpp. 2010-jul-27, UPDATE Jean-Pierre Charras ================================================================================ ++all: Updated boost to version 1.44 Added boost::polygon (experimental) ++pcbnew: Added experimental zone fill calculations with boost::polygon old file zones_convert_brd_items_to_polygons.cpp has now 2 versions: zones_convert_brd_items_to_polygons_with_Boost.cpp use boost::polygon to calculate filled areas zones_convert_brd_items_to_polygons_with_BKbool.cpp use kbool (code cleaned). >>> to use boost polygon version: call cmake with option: -DUSE_BOOST_POLYGON_LIBRARY=ON 2010-jul-12, UPDATE Jean-Pierre Charras ================================================================================ ++pcbnew: Added grid origin patch from Lorenzo Marcantonio. Converted set grid dialog from DialogBlocks to wxFormBuilder, and added in this dialog the grid origin parameters settings. 2010-jun-24 UPDATE Wayne Stambaugh ================================================================================ ++EESchema component library and hierarchical sheet label object improvements. * Continue component library class clean up and encapsulation work. * Change hierarchical sheet label container to boost::vector_ptr. * Encapsulate hierarchical label handling in hierarchical sheet class. * Convert some missed occurrences of wxString::GetData() to GetChars( wxString ). * Fix some minor code formatting issues. 2010-jun-23, UPDATE Jean-Pierre Charras ================================================================================ ++eeschema: In netlist generation, changed the rule to calculate netnames of nets with labels: Previously, named nets (i.e. nets with local, hierarchical or global labels) have their name defined by the first label found in list. So net names could be changed without really changing the schematic. Now the names are calculated from the rules (by priority order) : 1 - use the most top level labels in hierarchies. 2 - use global labels first, local labels next (hidden power pins names are global labels). 3 - use alphabetic sort (so, if GND and AGND are connected, the net will be always named AGND, and adding a VSS connection cannot change the net name) So power nets and nets that have more than one label cannot have their netname changed if there is no actual change relative to these nets names in schematic 2010-Jun-17 UPDATE Dick Hollenbeck ================================================================================ ++eeschema: Added "template fieldnames" to eeschema. Thanks to Brian Sidebotham for the origins of this patch. https://lists.launchpad.net/kicad-developers/msg04828.html A template fieldnames are a list of template elements consisting of {name, value, visibility} which you want shown in the eeschema component fieldname (property) editors (both schematic and library versions of the editors). Template fieldnames are forced into the editors' presentation of the fields even though those fields may not exist in the component. Entering a non-blank value while in a field editor will cause the field & value to be retained in the component. Therefore it is unusual to provide a non-blank '.value' in a template, because a trip through the field editor will invariably add that field to the component since the template being applied has initially a non blank 'value'. The current template editor is only going to last about a week and it does not support adding non-blank template values yet, nor visibility control, only field '.name'. But the template fieldnames configuration storage and component field editors do know how to handle template.visible and template.value already, in addition to template.name. See the file .eeschema in your home directory for the configuration storage, keyword: FieldNames. e.g. only field Manufacturer has a '.value': FieldNames=(templatefields (field (name "Manufacturer")(value "IBM 12")) (field (name "Vendor")) (field (name "Installed")) (field (name "Ralphy") visible)) DSNLEXER is used to parse the FieldNames record, & OUTPUTFORMATTER to generate it. 2010-jun-15, UPDATE Jean-Pierre Charras ================================================================================ bitmap2component: Use wxWidgets. Better user interface More bitmaps file format import (from wxWidgets) This tool does not use Kicad classes. So it can be hacked by guys who do not know kicad sources. 2010-jun-10, UPDATE Jean-Pierre Charras ================================================================================ Added an experimental tool (bitmap2component) to create logos from .bmp bitmaps. Added Potrace library to convert bitmaps to polygons This tool uses potarce library that converts a bitmap picture (.bmp or .pgm format) to a set of polygons. bitmap2component converts a bitmap to a .emp footprint (that can be imported by modedit) or a .lib component that can be imported by libedit. Note: imported bitmaps logos are vectored by potrace, so there is no pixelation effect. Scale is 1:1 for 300ppi pictures. bitmap2component currently runs only is command line mode run bitmap2component bitmapfile.bmp bitmapfile.lib 1 to create a schematic component logo (import this file using libedit) or bitmap2component bitmapfile.bmp bitmapfile.emp 1 to create a footprint logo (import this file using modedit) 2010-may-18, UPDATE Jean-Pierre Charras ================================================================================ ++All: Set minimum cmake version requirement to 2.6.4 (does not works with 2.6.1) ++Pcbnew, Module Editor: Added footprint name edition in the module properties dialog. Until now, the footprint name used to retrieve a footprint in lib was set only when saving the footprint in lib, and could not be edited without saving the footprint in lib. 2010-may-01, UPDATE Jean-Pierre Charras ================================================================================ ++Pcbnew: Board and footprint editors: Auto update 3D display after footprint or board edition. (board or footprint is reloaded only when the 3D frame is reactivated, so no extra time is needed during edition) 2010-apr-29, UPDATE Jean-Pierre Charras ================================================================================ ++Pcbnew: Fixed a crash that happens sometimes when opening the design rule dialog. (due to the sorting function by netclass then by netname) The sorting by netclass then by netname is now working well. 2010-apr-23, UPDATE Jean-Pierre Charras ================================================================================ ++Pcbnew: Fixed minor problems. Changed French word COTATION to DIMENSION in class COTATION (now class DIMENSION) 2010-apr-22, UPDATE Jean-Pierre Charras ================================================================================ ++Pcbnew+Gerbview: Fixed minor problems in printing. 2010-apr-19, UPDATE Jean-Pierre Charras ================================================================================ ++Pcbnew: * Added VRML export, from the patch sent by Lorenzo Marcantonio ( october 2009, 11) * Fixed : options to control vrml export. flipped footprints * Tested using Cortona and Blender. Needs more testing and refinements 2010-apr-16, UPDATE Jean-Pierre Charras ================================================================================ ++Cvpcb: Fixed a bug in footprint display frame (coordinates not displayed). Windows only. Added right toolbar to select display options Can now read netlists using UTF8 encoding. Convert dialog_display_option from DialogBlocks to wxFormBuilder ++Pcbnew: Fixed a very minor bug. Cvpcb+Pcbnew: Code cleanup in read netlist functions: use now FILE_LINE_READER. 2010-Apr-12 UPDATE Dick Hollenbeck ================================================================================ ++all: Switched the source code repository from subversion at sourceforge.net to launchpad using bazaar. 2010-apr-08, UPDATE Jean-Pierre Charras ================================================================================ ++Pcbnew: Drc: take in account the clearance "local parameters" for pads that have local parameters. Until now, only NETCLASS clearance values were used. (local parameters are used in zone filling) But because a pad (or a footprint) can have a specific clearance value Drc used now this value, and NETCLASS value only if no local value specified. 2010-mar-31, UPDATE Jean-Pierre Charras ================================================================================ ++Pcbnew Fixed an issue in GERBER file creation, under Vista and W7 only for non administrator users Plot files were 0 byte length. This was due to use of function tmpfile() in a GERBER function to create a temporary file that seems not working using mingw. Replaced by more usual files functions. 2010-mar-29, UPDATE Jean-Pierre Charras ================================================================================ ++Pcbnew enhancements in printing or plot in SVG format: When printing technical layers, pads on solder mask or solder paste layers where printed in sketch mode. Now they are printed as solid shapes, with dimensions according to solder paste or solder mask clearances. 2010-mar-18 UPDATE Jean-Pierre Charras ================================================================================ ++Eeschema Some bugs fixed Starting enhancements in Libedit: menubar and commands to "plot" current component in PNG or SVF file (SVG file not fully working, must be refined) 2010-mar-13 UPDATE Jean-Pierre Charras ================================================================================ ++ All: Stable verion for kicad release 2010-mar-10 UPDATE Jean-Pierre Charras ================================================================================ ++Pcbnew: Added (see dialog_layers_setup.cpp) compilation options to -hide non active copper layers -show inner layers in same order than the layer manager Currently these options are 2 define HIDE_INACTIVE_LAYERS // if defined, displays only active copper layers // if not displays always 1=the full set (16 layers) USE_LAYER_MANAGER_COPPER_LAYERS_ORDER //if defined, used the layer manager copper layers order // (from FRONT to BACK) to display inner layers. // if not, use the default order (from BACK to FRONT) Currently not active, can be changed if the correponding lines are uncommented in dialog_layers_setup.cpp 2010-Mar-3 UPDATE Dick Hollenbeck ================================================================================ ++common * DSNLEXER now owns an abstract LINE_READER by pointer so that polymorphism can be used in alternative LINE_READERS. * Write FILE_LINE_READER and STRING_LINE_READER. The latter can be used to parse text coming from the clipboard or other string source. 2010-Feb-20 UPDATE Dick Hollenbeck ================================================================================ ++common DSNLEXER now supports: 1) nested quotes. This is in anticipation of broader usage of the file type/syntax. A string like this in the file: "my ""favorate"" string" can be returned as my "favorite" string 2) CommentsAsTokens is implemented, so you can ask the lexer to return comments as tokens, so they can be preserved. The default is to ignore them. A comment is defined as any line that has # as its first non-blank character. (This means comments cannot follow anything else on a line.) 2010-Feb-19 UPDATE Jean-Pierre Charras ================================================================================ kicad: fixing an annoying problem: * Building the tree project can be *very* long if there are a lot of subdirectories * in the working directory. * Unfornately, this happens easily if the project file *.pro is in the home directory * So the tree project is built "on demand": * First the tree is built from the current directory and shows files and subdirs. * > First level subdirs trees are built (i.e subdirs contents are not read) * > When expanding a subdir, each subdir content is read, * and the corresponding sub tree is populated on the fly. 2010-Feb-17 UPDATE Jean-Pierre Charras ================================================================================ kicad: * Building the tree project can be *very* long if there are a lot of * subdirectories in the working directory. * Unfornately, this happens easily if the project file *.pro * is in the home directory * when subdirs are not loaded, double click on a directory to load its files and subdirs * #define ADD_FILES_IN_SUBDIRS was used until now. * It is now commented, so one must double click on a subdir name to load its files * See treeprj_frme.cpp for more info 2010-Feb-17 UPDATE Jean-Pierre Charras ================================================================================ Eeschema, libedit: fixed last problems when editing alias info. Now alias changes can be undone, and are correctly updated in lib when updating the current edited component in memory New code could be a good starting point to store all aliases info in the root component, and also easily store it to the *.lib files and remove the .dcm associated files (most of code is done) 2010-Feb-14 UPDATE Jean-Pierre Charras ================================================================================ Eeschema, libedit: fixed add/remove alias functions, broken All: added in popup menus hotkeys info for zoom commands 2010-Feb-14 UPDATE Jerry Jacobs ================================================================================ ++ KiCad Check if project is noname.pro so we don't get a error if kicad is first run. Removed double separator in file menu. Moved recent project to submenu in Open recent. ++ Common Added CTest/CDash support file Moved helper tool to helper subdirectory ++ OSX Update compiling doc 2010-Feb-07 UPDATE Vesa Solonen ================================================================================ ++ all: Finnish translation, take one. 2010-Feb-04 UPDATE Jean-Pierre Charras ================================================================================ ++ gerbview: Use layer_widget to manage gerber layers colors and visibility. 2010-Jan-31 UPDATE Jean-Pierre Charras ================================================================================ ++ pcbnew: More about work on color selection and items visibility: removed global variables and a lot of redundancies Now Modedit does not uses the visiblity options of the board editor (That can create a problem if hide modules is activated) work in progress but almost finished 2010-Jan-30 UPDATE Jean-Pierre Charras ================================================================================ ++ pcbnew: More about work on color selection and items visibility work in progress 2010-Jan-29 UPDATE Jean-Pierre Charras ================================================================================ ++ All: added a test to solve a problem when cross compiling Kicad under Linux for Windows Specific to countries that use a comma as separators in floating point numbers notation: Depending on wxWideget version: printed as 0,5 and read as 0.5 or printed as 0.5 and read as 0,5 So float values are always broken in dialogs (many are seen as 0) Now a test is made, and if there are problems relative to floats (write/read conversion error), use the C convention (always a point as separator) ++ eeschema: Removed metrics grid values, that cannot be handled in schematic. (because 2 items are seen as connected if they have the same coordinates mixing mm and mils with internal units = 1 mil break netlist and ERC calculations So grid value *must* be an integer (in 1/1000 inch). And metric grid is not very useful in schematic. (Also 1 mil and 0.025 mm can be seen as the same value for a schematic that do not needs precision in dimensions, so no need to have mils and mm in grid values) ++ pcbnew: Starting work on color selection and items visibility * code cleaning and removing global values. * Separe visibility options for board editor and module editor (work in progress, just starting) 2010-Jan-28 UPDATE Jean-Pierre Charras ================================================================================ *fixed eeschema crash when using the hotkey m (move) command. * Pcbnew :added option to show/hide footprints values and/or references See if show/hide footprints texts option is now always useful. 2010-Jan-27 UPDATE Jean-Pierre Charras ================================================================================ ++ Pcbnew: Code cleaning about visibility variables (duplicates) in draw functions. Removed old color and visiblity dialog work in progress 2010-Jan-24 UPDATE Jean-Pierre Charras ================================================================================ ++ Pcbnew: in variable names, change non existent word Hight to High Remove redundant tool in left toolbar (option toolbar) (this option is now in layers manager) Show layers in horizontal combo box in same order as in layer manager. ++all: minor code cleaning. 2010-Jan-23 UPDATE Dick Hollenbeck ================================================================================ ++pcbnew's PCB_LAYER_WIDGET Removed wxformbuilder dependency from LAYER_WIDGET, thus killing off layer_widget_base.* and panel_layer_select.fbp. Added aPointSize to LAYER_WIDGET constructor so it uses that font size. Removed layer_widget.h from wxPcbStruct.h for faster compiles with less dependencies, and this meant moving the class LYRS out of class WinEDA_PcbFrame. While doing that I renamed it to PCB_LAYER_WIDGET. Integration of PCB_LAYER_WIDGET into WinEDA_PcbFrame to fully support the layer change logic. Added syncLayerWidget(), * WinEDA_PcbFrame: Added syncLayerWidget(), syncLayerBox() (via a rename), setActiveLayer(), and getActiveLayer(). Use a font size in PCB_LAYER_WIDGET 80% of the system font size for systems with screen resolution height <= 900, or 100% if not. See WinEDA_PcbFrame constructor. * See TODO.txt for more things that need to be done. 2010-Jan-23 UPDATE Jean-Pierre Charras ================================================================================ ++ Pcbnew: Update Layer manager display when changing active layer (from hotkey or menus) fixed minor problems and fixed Layer Alignment Target bug. 2010-Jan-22 UPDATE Wayne Stambaugh ================================================================================ Minor fixes and code cleaning. * Remove redundant background redrawing RedrawActiveWindow. * Remove redundant managed cursor callback in RedrawActiveWindow. * Use refresh to redraw instead of directly calling RedrawActiveWindow. * Remove unused SetDrawBgColor for drawframe.cpp. * Fix compiler warning in cvpcb/cvframe.cpp. * Fix menu spelling and syntax errors in pcbnew. * Rename Trace_Curseur to DrawCursor in common/drawpanel.cpp. 2010-Jan-21 UPDATE Dick Hollenbeck ================================================================================ ++pcbnew Integration of LAYER_WIDGET into WinEDA_PcbFrame. See TODO.txt for more things that need to be done. 2010-Jan-17 UPDATE Jerry Jacobs ================================================================================ More work to make kicad more Mac OS X compliant. * Workaround for wxAboutDialog bug. * WXMAC needs wxID_EXIT to make closing the application function properly. * Workaround for hotkeys, on Mac OS X we can't use Fx keys. This needs to be further implemented and is a work in progress. We need to modify the hotkey code to display Mac OS X the special modifier keys in the hotkey list. 2010-Jan-18 UPDATE Dick Hollenbeck ================================================================================ ++any Finished up complete implementation of class LAYER_WIDGET and am now ready to integrate it into PCBNEW. This class was kept as general as possible by omitting as many Kicad document structures as possible, and so can be used in GERBVIEW. For GERBVIEW it could benefit from some minor additional work such as a "move up" function for layer order changes. This is a matter of rearranging wxWindows within the m_LayersFlexGridSizer. Integration into PCBNEW should be done in just a few days. 2010-Jan-17 UPDATE Jerry Jacobs ================================================================================ + EESchema + Added Torsten Huter's patch for hotkeys + Moved recent opened documents to submenu + Pcbnew + Big (re)organisation of pcbframe menubar and cleanup 2010-Jan-13 UPDATE Wayne Stambaugh ================================================================================ Minor bug fixes, compiler warning fixes and code cleaning. * Fix debug asserts when passing NULL pointers to wxAuiPaneInfo. * Fix Kicad main window sash sizer bug when using wxAui. * Remove specctra_test from Visual Studio builds to prevent build errors. * Add WIN32 to layer widget test so it will build properly on Visual Studio. * Fixed compiler conversion warnings in PCBNew. * Fixed worksheet print scaling in PCBNew. * Minor code renaming. 2010-Jan-12 UPDATE Jean-Pierre Charras ================================================================================ ++All Use wxAutoBufferedPaintDC in OnPaint event Seems solves slow grid redraw on some PC (tested under Window 7) and is faster than use wxPaintDC, not buffered (note MACOSX has natively a double buffer, so no change for MACOSX) 2010-Jan-08 UPDATE Jean-Pierre Charras ================================================================================ ++Gerbview Added support of arcs in polygons outlines. Needed to show copper areas in some gerber files Not fully tested but works better than without this support... 2010-Jan-03 UPDATE Jean-Pierre Charras ================================================================================ ++pcbnew - fixed a potential bug in a fill zone function: AddClearanceAreasPolygonsToPolysList() - Try to fix a problem with AddClearanceAreasPolygonsToPolysList() under Window Vista and Window 7 This is perhaps a problem in kbool library (a bug in Bool_Engine destructor ?) It happens when: - a lot of polygon corners are added in group A - nothing in group B - No operation asked in kbool engine ( that also has a bug if an operation is asked with no polygon in group B) - and call the Bool_Engine destructor. Could be a stack error or overflow, very hard to locate and debug. - Under Vista seems create always a crash. - Under Window 7 sometimes create a crash. - No problem under XP and Linux. -Workaround: Leave the group A void if group B is void. I am not sure this change fix the problem. Just it solves this problem with 2 samples boards that crash Pcbnew without this change. 2010-Jan-01 UPDATE Jean-Pierre Charras ================================================================================ ++pcbnew Rewrite plot dialog using wxDialogBlocks. Display layers list according to the Setup layers dialog order. ++Gerbview Write Gerbview plot dialog using wxDialogBlocks. Do not use anymore the Pcbnew one.