kicad/CHANGELOG.txt

205 lines
10 KiB
Plaintext

KiCad ChangeLog 2012
====================
Please add newer entries at the top, list the date and your name with
email address.
2012-Nov-19 UPDATE Dick Hollenbeck <dick@softplc.com>
================================================================================
Eliminate many assumptions in Pcbnew's library manager, pertaining to locality of libraries and
their type, by using the more abstract PLUGIN::Footprint*() functions.
This is an intermediate phase only, other changes will be necessary as library table support comes in.
Encapsulate usage of library path searching, since that will go away as library table support comes in.
Add FOOTPRINT_EDIT_FRAME::{get,set}LibPath() and FOOTPRINT_EDIT_FRAME::{get,set}LibNickName() functions
to provide this encapsulation.
2012-Nov-14 UPDATE Dick Hollenbeck <dick@softplc.com>
================================================================================
1) Switch to boost hashtable support from wx macros which did not handle std::string.
This required the additional compiler command line option "-std=c++0x".
2) Switch to unique_ptr from auto_ptr which is C++ deprecated.
3) Change to new English layer names per mailing list discussion, see class_board.cpp.
4) When saving to *.kicad_pcb or *.kicad_mod, identify opportunities to use wildcard
layer sets, for pads so far.
5) Switch to two std::string hashtables in pcb_parser.cpp, away from one wxString based one
for layer names and layer sets mapping. One hashtable holds the mask, the other the index.
Layer sets are only in the mask table.
6) Move "LOCALE_IO toggle" into PCB_IO::Format() since it is a public API function and
caller should find it as convenient as possible to use. LOCALE_IO should handle
nesting OK in the case where public Format() is called from one of the Footprint*()
functions.
7) Drop support for "export module to new library". Creating new libraries will have to
be handled in concert with library table entries, and we've talked recently about
creating a better footprint library manager, one that resides in a DLL/DSO. So
this kind of functionality needs to be handled in there in the near future.
8) Change name of exported PCB_IO module/footprint to *.kicad_mod and not *.emp.
2012-May-5 UPDATE Jerry Jacobs <jerry@xor-gate.org>
================================================================================
++ common
* Update about dialog to more native size so the notebook is not squeezed
* Increment copyright year to 2012
* Fix mousezoom jumping to center for Mac OS X and other platforms
* Remove lowercase application name because Mac OS X menubar was inconsitent
2012-Mar-11 UPDATE Dick Hollenbeck <dick@softplc.com>
================================================================================
++pcbnew
* Add PCB_EDIT_FRAME::syncLayerVisibilities(), PCB_LAYER_MANAGER::SyncLayerVisibilities().
* Save all visibilities, layer and render, in BOARD and restore on load.
2012-Feb-19 UPDATE Dick Hollenbeck <dick@softplc.com>
================================================================================
++pcbnew
* Remove virtual BOARD_ITEM::{Get,Set}Position() which in turn means all
derived classes' implementations of these functions become non virtual and
can be truly _inlined_ for speed! All GetPosition() in derived classes were also
changed to return const wxPoint&, that is, a reference rather than a
full copy of the position wxPoint. There was no need for polymorphism in
{Get,Set}Position() since we never call these functions via generic pointer.
* Remove BOARD::{Get,Set}Position() since they were only there to satisfy
the pure virtuals established in BOARD_ITEM, which are now gone.
* Added const wxPoint& CPolyLine::GetPos(), made CPolyLine::Get{X,Y}() inline.
* Derive CPolyPt from wxPoint so we can return "const wxPoint&" from
CPolyLine::GetPos().
2012-Feb-19 UPDATE Dick Hollenbeck <dick@softplc.com>
================================================================================
++pcbnew
* remove global g_Pad_Master and put it into BOARD_DESIGN_SETTINGS
which is in turn already within BOARD.
* encapsulate class D_PAD with accessors, making data private.
* make D_PAD::GetBoundingRadius() do its longer calculation lazily, based on
m_boundingRadius == -1.
2012-Feb-5 UPDATE Dick Hollenbeck <dick@softplc.com>
================================================================================
++pcbnew
* Changed classs ZONE_SETTING to class ZONE_SETTINGS, better English.
* Changed ZONE_SETTINGS::Import() to operator << ( ZONE_CONTAINER )
* move globals into BOARD:
bool g_Zone_45_Only, is now in BOARD::m_zoneSettings.m_Zone_45_Only
ZONE_SETTINGS g_Zone_Default_Setting is now in BOARD::m_zoneSettings
* Added BOARD::{Get,Set}ZoneSettings().
* Added PCB_BASE_FRAME::{Get,Set}ZoneSettings().
* Save/load BOARD::m_zoneSettings.m_Zone_45_Only to/from BOARD file.
* Removed PCB_EDIT_FRAME::InstallDialogNonCopperZonesEditor() in favor of
::InvokeNonCopperZonesEditor() declared in zones.h
* Added ::InvokeCopperZonesEditor() declared in zones.h
* Removed dialog_copper_zones.h since DIALOG class is now declared in *.cpp.
* Renamed to enum ZONE_EDIT_T in zones.h
* SetVisibleAlls() is not called as it was in two previous cases for several
reasons. BOARD_DESIGN_SETTINGS constructor controls what is visible initially,
and in the near future so will the *.brd file. I believe the user should
have visibility setting rentention accross editing sessions of zones,
fields, etc.
* BOARD_DESIGN_SETTINGS constructor initializes hidden text as not visible.
* Added PCB_EDIT_FRAME::syncRenderStates() and PCB_LAYER_WIDGET::SyncRenderStates()
so the checkboxes can be set after loading a BOARD file containing previous
visibility settings.
2012-Feb-2 UPDATE Dick Hollenbeck <dick@softplc.com>
================================================================================
++pcbnew
* move globals into BOARD
-wxSize g_ModuleTextSize; /* Default footprint texts size */
-int g_ModuleSegmentWidth;
-int g_ModuleTextWidth;
But now the module editor is left hanging. I'll have to figure out
a way to pass from board editor to module editor these values, still.
2012-Feb-01, UPDATE Jean-Pierre Charras <jp.charras@wanadoo.fr>
================================================================================
Pcbnew:
Cvpcb:
more about new netlist format:
Cvpcb can now read new netlist format.
There is a big change in Cvpcb: now Cvpcb just creates or updates a .cmp file
Before this change, Cvpcb recreated the netlist (adding footprint info)
and updated the .cmp file.
But there is no reason to modify the netlist, because Pcbnew uses always the .cmp file
(when exists) to know the footprint selection for components.
Currently the netlist is used only when the corresponding .cmp file is not fount
to select footprints.
So users should not notice this important change.
2012-Jan-26, UPDATE Jean-Pierre Charras <jp.charras@wanadoo.fr>
================================================================================
Pcbnew:
First draft to use a new netlist format (using S expressions)
Eeschema can generate this netlist format.
Pcbnew can use (automatic identification) the current format or the new format.
Cvpcb does not use yet the new format.
To do:
New format in Cvpcb: how to use the .cmp file with the new netlist format
2012-Jan-22 UPDATE Dick Hollenbeck <dick@softplc.com>
================================================================================
++all
* Switch to C++'s true and false and away from C" TRUE and FALSE.
* Enhance class PLUGIN's comments to improve their value as instructional.
* Switch #includes from "file.h" to <file.h>, and fiddle with search paths
by using include_directories(BEFORE ...)
* dialog_page_settings did not have symmetrical space on its right border.
And it now remembers it last position and size within a program session.
* base_screen.cpp is now compiled twice, once for {pcbnew,cvpcb} and once
for eeschema, in preparation for "compile time" support of internal units
rather than "runtime" support.
2012-Jan-15 UPDATE Dick Hollenbeck <dick@softplc.com>
================================================================================
++all
Add "portrait" support to the page size settings for all standard paper
sizes. Tested with postscript output only. Required minor file format changes
to reflect the "portrait" setting. common/dialogs/dialog_page_settings.cpp
uses a checkbox but its name is "Landscape", which is inverted from portrait,
but since it is the more common choice, I used that rather than portrait.
The tooltip for that checkbox makes it clear. No portrait mode is supported
for "User" paper size.
2012-Jan-9 UPDATE Dick Hollenbeck <dick@softplc.com>
================================================================================
++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 <dick@softplc.com>
================================================================================
++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.