Eeschema, Pcbnew, and Cvpcb all run under the same process now,
FOR THE VERY FIRST TIME!
*) Added KIWAY::PlayerCreate(), PlayerClose(), and PlayersClose().
*) Factored FRAME_T into <frame_type.h> from ID_DRAWFRAME_TYPE.
*) Found that the following command line is helpful for collecting all the *.kiface
files into the <build>/kicad/ directory so that kicad can find them.
$ cp `find . -name '*.kiface'` kicad/
Maybe somebody will want to rework how the CMake files are organized so all
the binaries can go into the same place. See python-a-mingw-us.
*) This might fix the problem on the Mac where child process windows were not
coming to the front. See ->Raise() in kicad/mainframe.cpp.
*) You can set USE_KIFACE to 0 in kicad/mainframe.cpp to chain load child exes
instead of using the KIFACE modules directly, i.e. revert.
if it is running under single_top.cpp or under a project manager.
*) Test Kiface().IsSingle() when adding menus, some operations are not permitted
when running under a project manager and the KIWAY_PLAYER is pegged to a
specific project.
*) Implemented KIWAY::KiFACE() so it loads *.kiface files. They still have to be
in the same directory as the main *.exe launcher, so this presents some difficulty
when the binaries are not yet installed but rather the *.kiface files are still
in their original build directories. For today, I simply copied _pcbnew.kiface
to build/kicad/.
*) Add a test case to kicad/mainframe.cpp just to get an early peek at loading
_pcbnew.kiface under the C++ project manager. Got that working for one
specific invocation just for proof of concept. Surprise, it works.
! The initial testing of this commit should be done using a Debug build so that
all the wxASSERT()s are enabled. Also, be sure and keep enabled the
USE_KIWAY_DLLs option. The tree won't likely build without it. Turning it
off is senseless anyways. If you want stable code, go back to a prior version,
the one tagged with "stable".
* Relocate all functionality out of the wxApp derivative into more finely
targeted purposes:
a) DLL/DSO specific
b) PROJECT specific
c) EXE or process specific
d) configuration file specific data
e) configuration file manipulations functions.
All of this functionality was blended into an extremely large wxApp derivative
and that was incompatible with the desire to support multiple concurrently
loaded DLL/DSO's ("KIFACE")s and multiple concurrently open projects.
An amazing amount of organization come from simply sorting each bit of
functionality into the proper box.
* Switch to wxConfigBase from wxConfig everywhere except instantiation.
* Add classes KIWAY, KIFACE, KIFACE_I, SEARCH_STACK, PGM_BASE, PGM_KICAD,
PGM_SINGLE_TOP,
* Remove "Return" prefix on many function names.
* Remove obvious comments from CMakeLists.txt files, and from else() and endif()s.
* Fix building boost for use in a DSO on linux.
* Remove some of the assumptions in the CMakeLists.txt files that windows had
to be the host platform when building windows binaries.
* Reduce the number of wxStrings being constructed at program load time via
static construction.
* Pass wxConfigBase* to all SaveSettings() and LoadSettings() functions so that
these functions are useful even when the wxConfigBase comes from another
source, as is the case in the KICAD_MANAGER_FRAME.
* Move the setting of the KIPRJMOD environment variable into class PROJECT,
so that it can be moved into a project variable soon, and out of FP_LIB_TABLE.
* Add the KIWAY_PLAYER which is associated with a particular PROJECT, and all
its child wxFrames and wxDialogs now have a Kiway() member function which
returns a KIWAY& that that window tree branch is in support of. This is like
wxWindows DNA in that child windows get this member with proper value at time
of construction.
* Anticipate some of the needs for milestones B) and C) and make code
adjustments now in an effort to reduce work in those milestones.
* No testing has been done for python scripting, since milestone C) has that
being largely reworked and re-thought-out.
* Remove defined CMAKE_INSTALL_PREFIX for Windows from main CMakeList.txt.
* Move footprint library path detection code from pcbnew.cpp to EDA_APP
object.
* Add CMAKE_INSTALL_PREFIX to config.h.cmake.
* Simplify and fix search path list code.
* Add CMAKE_INSTALL_PREFIX to the list of search paths in case KiCad was
installed using `make install`.
* Add default global footprint library table to CMake install.
* Add method to set footprint library table to PCB_BASE_FRAME object.
* Remove unused function EDA_APP::GetLibraryFile().
* Minor FP_LIB_TABLE object improvements.
* Add third list control with library names.
* Add button to toolbar to select filter by library name.
* Add bitmap for filter by library name toolbar button.
* Remove custom UI colors from list controls.
* 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.
* 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.
* 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.
* Check user write permissions before saving project and net list files.
* Append read only to file name and path in title bar when the user
does not have write privileges.
* Don't display file dialog every time the net list or project file is
saved.
* Add save as and save project file as commands.
* Make capitalization of CVPcb consistent in all user strings.
* Doxygen comment and coding style policy fixes.
Pcbnew: cleaning code in block.cpp, and modifye previous way to calculate block size in block command, because old way creates unexpected behavior in block rotate and block flip.
Pcbnew: Fix a bug in plot silkscreen layers.
Cvpcb: Fix compilation issue under MACOX
* Split out application specific command IDs to prevent unnecessary rebuilding.
* Eliminate duplicate menu and tool bar command IDs.
* Split component library editor and viewer definitions to separate header files.
* More component library and document file merge code.
* A bunch of minor string readability and consistency fixes.
* Created separate SVN version header.
* Add true config.h for platform dependency checks.
* Add dependency check cmake module.
* Remove some leftover hand crafted make files.
* Remove non-cmake build instructions from COMPILING.txt.
* Fix split _() strings causing Visual C++ compiler error.
* Fix lots of compiler warnings.
* Change project file parameter container from wxArray to boost::vector_ptr.
* Removed lots of redundant header definitions.
* Fixed green_xpm redefinition in ercgreen.xpm.
* Remove some dead code and unnecessary class methods.
* Add methods to read and write project file parameters using dynamically defined list.
* Remove all global variables defined in CVPcb code.
* Dynamically define project file settings so class member variables can be used.
* Separate reading and writing application settings from project file settings.
* Make application UI objects and dialogs respect system UI font.
* Remove non-standard widget colors from CVPcb dialogs.
* Changed CVPcb object link list implementation to use wxList.
* Changed project library and path dialog to make OK button save project file instead of confusing "Save Cfg" button.
* Eliminate some duplicate file wildcard and extension definitions.
* The usual code reformatting, commenting, and spelling fixes.
Added template subdirectory to library search path list.
Removed PARAM_CFG_BASE empty destructor to prevent GCC warning.
Set timeout to 0 on DisplayInfo call to prevent debug assertion in eeschema/files-io.cpp.
Declare PARAM_CFG_ARRAY for future project file object implementation.
Removed unnecessary COMMON_GLOBL definition in gr_basic.h and param_config.h.