solution to see that it was not pre-computing constants when used in static initializers.
So we have two use cases, and need two solutions to be optimal, since the compiler
is too stupid to do the right thing.
I think we need something else for compile time computable constants, to be optimal
in both use cases. There is quite a bit of code savings by using a macro for that
situation from my testing. To fully capitalize on this, we need to go back and make
Mm2mils() and what not macros also, or have MACRO versions of them too.
This uses the new LEGACY_PLUGIN, so we can force more usage & testing of it
before ioascii.cpp and item_io.cpp are deleted, along with
BOARD_ITEM::Save() and BOARD_ITEM::ReadDescr() associated functions.
* 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(), and BOARD::m_PcbFrame
* 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 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 way of
destroying the derived class 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()
* Fix a minor problem with wxFileDialog to open a file that no longer
exists in PCBNew.
* Make GerbView open file behavior the same as PCBNew.
* Remove redundant PCB file wild card definition.
* Add open file refactor task to the todo list.
* Fix some minor code formatting issues.
* PCBNew remembers last net list read during the current editing session
as well as between project editing sessions. Closes bug 576902.
* Separate PCBNew application settings from project file settings and
allocate them dynamically instead of statically to make it easier to
eliminate global variables.
* Replaced find dialog with wxFormBuilder version.
* New find dialog is modeless, supports more advanced search features,
remembers it's last position, size, search history, and search settings,
and implements initial support for replacing.
* Added Shift+F5 hot key to search for next DRC marker. F5 now just
repeats previous search.
* Minor cosmetic enhancements to label edit dialog.
* Remove tab from grid size text printf to fix toolbar grid combobox
display in wxGTK.
* Updated my TODO list items.
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.)
* Fixed clipping bug when USE_WX_ZOOM is enabled that causes rats nest
to be drawn incorrectly.
* Fix ambiguous function error in trigo.cpp when building with MSVS.
* Add instructions for building wxWidgets with graphics context
enabled (GDI+) using MinGW/MSYS to COMPILING.txt.
* Initial EESchema find dialog work.
* Set modified flag when using PCBNew global deletion dialog to prevent
closing without warning user of changes.
* Implement code to allow wxDC to handle coordinate conversions between
device and drawing units.
* Add build settings to enable wxGCDC for wxGraphicsContext testing.
* Remove wxAUI conditional build cruft as it is now required to build
Kicad.
* Fix scroll increment size regression to prevent jumping around the
zoom center position.
* Add find GDI+ cmake module for building on WXMSW when wxGraphicsContext
is enabled.
* Moved ReturnLayerName() to static BOARD::GetDefaultLayerName() and migrated
to a Specctra DSN compatible default layer naming scheme:
Component becomes Front, Copper becomes Back.
* set_color.h: Cmp becomes Front, Cu becomes Back.
* D_PAD::DisplayInfo() changed to use actual copper layer names.
* more layer setup dialog work, moved all programmatic wxControl instantiation
into the wxFormbuilder environment, but this is fraught with danger:
wxFlexGridSizer used the tallest control to establish the row heights, so
be careful about changing control borders in the scroll panel. The vertical
size can explode since just a couple of pixels times the number of rows
is substantial. Currently I am setting a 5 pixel border only left, top, and right
but not bottom.
* Set copper layer count is back in place as a hack until I can get the enabled
layer bit map fully operational.