Commit Graph

220 Commits

Author SHA1 Message Date
Seth Hillbrand 044b4a6d4c Bump C++ version to c++14
This is a provisional bump.  If supported platforms
(http://kicad-pcb.org/help/system-requirements/#_specific_system_requirements)
experience issues with this version we will revert back to c++11.

No code that requires c++14 will be committed yet.
2019-07-10 20:03:48 -07:00
Ian McInerney 42e14b5a4e Cleanup cmake python dependency handling to catch errors
* Changed the KICAD_SCRIPTING flag to be a global disable, so it
  will disable all other scripting flags when set to OFF
* Added version testing with the wxPython flags to ensure the
  proper version is found for the flags provided
2019-06-27 13:31:20 -04:00
Seth Hillbrand e52afd93a3 Remove Legacy options for overlay/context
These options were used to support the legacy canvas when drawing on
MacOS and GTK3.  With the move to 100% GAL, they are extraneous.  This
moves all DC over to "COPY" as we only use this for printing support in
Eeschema at the moment, so there is a single draw command (no erasing)
for the canvas.
2019-06-12 06:01:03 -07:00
Wayne Stambaugh c711ad5c7c Update compiling document Python scripting options.
Change the default option setting for the Python scripting action menu
support.

Add notes that the KiCad scripting support is forcefully enable when the
Python scripting module support or the Python scripting action menu
support are enabled.
2019-06-05 14:02:27 -04:00
John Beard 241127788e Format: add some formatting aliases, improve dev docs
The aliases are easier than calling check_coding.sh manually,
and we already provide an alias file for the fixes alias, so
do the same for these.
2019-05-23 21:28:42 +01:00
John Beard 840e08fa78 QA eeschema: add some tests
This adds a few tests on:

* LIB_PART
* SCH_PIN
* SCH_SHEET
* SCH_SHEET_PATH

These tests exercise some of the basic code paths in these classes
and show some of the expected behaviours.

None of these tests are particularly ground-breaking, but they
provide a starting point to build out further tests, and to ensure
the already-covered behaviour is stable.

It does expose some places where SCH_SHEET could probably use const.
2019-05-23 11:29:28 +01:00
Jeff Young fbb807f3bb Move some more menu & toolbar items to modern toolset. 2019-05-16 19:57:06 +01:00
Jeff Young 0c2ba94b16 More sharing between SchEdit and LibEdit. 2019-05-10 20:22:26 +01:00
Jeff Young ea0941cab3 Implement modern tools for LibEdit. 2019-05-10 16:11:57 +01:00
Wayne Stambaugh 3caa4376a5 Developer documentation updates.
Remove version 5 road map since version 5 has been released.

Update version 6 road map to reflect current development goals.

Cleaned out old goals from generic road map in preparation for version
7 development.

Add note to compiling document about building with Boost 1.70 on Windows.

Fix link to Linux coding style policy in KiCad Coding Style Guide.

Update tool framework documentation to reflect changes in the tool
framework code.
2019-05-08 08:37:39 -04:00
John Beard 272c045c37 Format: Default to switch cases on separate lines by default
Currently, the format enforces single lines when possible, but does
not enforce readable column-based alignment (and, moreover, *removes*
such manually added alignment:

    switch( m_orientation )
    {
    case PIN_RIGHT: m_orientation = PIN_UP; break;
    case PIN_UP: m_orientation = PIN_LEFT; break;
    }

Change this to multi-line by default:

    switch( m_orientation )
    {
    case PIN_RIGHT:
        m_orientation = PIN_UP;
        break;
    case PIN_UP:
        m_orientation = PIN_LEFT;
        break;
    }

If the developer wishes for column-aligned single-line cases, this
is permitted, but much be done manually:

    switch( m_orientation )
    {
    case PIN_RIGHT: m_orientation = PIN_DOWN;  break;
    case PIN_UP:    m_orientation = PIN_RIGHT; break;
    }

CHANGE: the _clang-format file to reflect this, and add note about
manual override in the dev docs.
2019-05-07 09:49:05 +01:00
Ian McInerney f87754848e Remove ki_mutex.h and associated includes
REMOVED: ki_mutex.h since all mutexes now use std::mutex
2019-05-03 17:13:20 -07:00
John Beard 957f868e2f Docs: add a 'technical todo' list
Provides a place to record work that is pending due to
library, compiler or language restrictions.

Because some of this work will be pending for several years
until supported distros support the relevant versions, having
this centrally documented prevents it being forgotten.

Also includes current distro versions for extant "LTS"
distros that are likely to be the distros holding back
library versions.

Only includes things we currently actually do work around
in the code, or things that are direct C++ replacements
(e.g. Boost libraries being adopted to C++).
This is as opposed to more opinion-based "we should
 do it this way, it's better" things, which should be
proposed for discussion first.
2019-04-20 15:32:12 +01:00
John Beard 3d7c070faf Dev doc: Fix and add link
Fix the libngspice link markdown.

Add a link to the testing page from the relevant section on QA test
options.
2019-04-18 17:16:35 +01:00
John Beard f4ba3cd910 QA: Add build-time option to enable XML output from tests
This allows CI tools to get machine-readable test reports.

By default, this is off - when you test normally, you probably
want the regular console spew.

Boost tests use the in-built Boost test command line options.

The Python tests take an --xml parameter and output the tests
there.
2019-04-18 10:59:06 +01:00
John Beard 45aa514591 QA: Allow to build tests manually if disabled
Add a new CMake target, qa_all, which builds all
tests, tools and their deps.

Then, when KICAD_BUILD_QA_TESTS is set OFF, remove tests
and tools from the ALL target, so `make all` doesn't include
these builds.

This means even when you turn the KICAD_BUILD_QA_TESTS option
off, you still have the option to:

* Build individual tests: `make qa_pcbnew`
* Build all tests: `make qa_all_tests`
* Build all tools: `make qa_all_tools`
* Build all QA executables: `make qa_all`

This also will provide a place to hang extra logic for test routine
wrangling (e.g. by CI tools)

Update the "Compiling KiCad" dev docs.

Also, CMakeModules .cmake files should not be excluded from git
2019-04-17 18:00:40 +01:00
jean-pierre charras ead5bfe64b Add option to build QA test suite (this option is on by default.
KICAD_BUILD_QA_TESTS=OFF skips the QA test suite build.
This is useful for daily work on Kicad. It spares compil and link time.
2019-04-16 18:40:56 +02:00
Seth Hillbrand 257d9b5fe9 Allow setting the kicad config dir
This allows setting the config dir at build time, providing packagers a
method of controlling where the configuration files are placed.

Fixes: lp:1780601
* https://bugs.launchpad.net/kicad/+bug/1780601
2019-04-08 12:33:49 -07:00
John Beard a7270f8c1c Formatting: prefer a Git config variable to env var
The keeps all the formatting config together in the Git ecosystem
and keeps the config on a per-repo basis, unless the user explicitly
sets it --global.

Keep the old env var behaviour for now for backwards compatibility.
2019-03-29 15:06:48 +00:00
John Beard a69cdf1793 Formatting: exclude generated files from git formatting hook
Add a .gitattributes files to provide a place to store file
attributes. Add a custom attribute for files that should be under
KiCad style guidelines.

Exclude generated files from the style enforcement. So far:

* bitmap .cpp files
* wxFormBuilder base classes
* Lemon grammars

It's now trivial to add the 'generated' attribute to any such
file.

Putting this into .gitattributes also means it can be retreived
programmatically, by other scripts, git alaises or on the command
line.

Use the attributes to provide a utility script to show or apply
formatting to controlled files (plain git clang-format won't
pick up our custom git attributes). Add details for the script in
the dev docs.

Also modiify the check-format hook to follow the .gitattributes
and only apply to cached (staged for commit) changes. Then you
won't be stopped committing because of bad formatting in unstaged
changed, or uncontrolled files.

Concept and some aspects of the implementation inspired by
CMake commit d5f39a56 [1].

[1]: d5f39a56a4

tool
2019-03-29 15:06:48 +00:00
Wayne Stambaugh b889ecaab2 Fix broken Python plugin developer's document.
Apparently curly brace escaping in a list does not work with Doxygen's
markdown support which caused everything after the windows install path
to be removed from the output build.  I just fell back to the windows
environment variable expansion character (%) and that resolved the issue.
2019-03-20 10:07:45 -04:00
Wayne Stambaugh 7e34a5a106 Fix broken table of contents link in coding policy. 2019-03-15 15:47:09 -04:00
Seth Hillbrand 2cbbcfd3e0 Doxyfiles: Remove local debug lines 2019-02-13 17:22:07 -08:00
Seth Hillbrand 5c855a097b Doxygen: Update doxyfiles
Adds/updates commentary and removes empty, obsolete DTD tags
2019-02-13 10:18:07 -08:00
John Beard bed0667712 Docs: Advanced config is explicity experimental
Any advanced config option is not to be considered production-ready,
so make this clear in the dev-docs.
2019-02-11 09:47:13 +00:00
Nick Østergaard 03e787ef2d Add anchor for advanced configuration
To make it appear in the TOC on the left and be able to link to it
directly on the www.
2019-02-10 21:31:05 +00:00
John Beard adddc41bc5 QA: Reinstate polygon_triangulation utility
This utility has been disabled since the eeschema GAL merge. It
can be reinstated as part of the qa_pcbnew_tools framework.
2019-01-29 08:15:51 -05:00
John Beard b94cf9d564 Docs: Describe QA util programs in the testing docs 2019-01-29 08:15:30 -05:00
John Beard 2f5dd6a43a Docs: Fix doxygen links
Doxygen is now at: http://www.doxygen.nl

Reported by: Brian Piccioni.
2019-01-02 09:53:29 -05:00
John Beard a33a8292a4 Run-time config for advanced options
This can be used for "advanced" options which are for developers
to use for feature-flags and other configuration. Run time config
has some advantages over preprocessor defines:

* Can be changed without recompilation
   * Sensitive to XDG_CONFIG_DIR, so flipping configs is easy
* Better compiler coverage (less conditionally compiled code means
  less chance to break a different configuration). Also better
  analysis coverage.
* Type safe config params
* Centralised documentation: it's in doxygen, in one place

No advanced config should be required by a general users. If a general
user does use one of these configs, it's probably because:

* There is a bug and one of these configs is a workaround
* A config in here is generally useful and should be moved into the
  relevant application config and given UI.

For now, the config is read-only, and is read from the
"kicad_advanced" config file in the normal config dir.
2018-12-28 11:36:08 -05:00
Seth Hillbrand 830dced83f Fix minor issue in docs
Source is distributed in xz format, so the older gzip instruction did
not work.
2018-12-10 12:04:41 -08:00
Maciej Suminski 6a233a1367 Updated a link to the stable source code tarball in the documentation 2018-12-04 15:32:03 +01:00
Nabeel Ahmad 7975e05446 Documentation: UI policy update about dialogs
Updated out-of-date information about the use of wxFormBuilder.
2018-12-03 12:22:14 -05:00
John Beard 4363cc0bec Docs: add docset generation target
This is a CMake (non-ALL) target that will build a Zeal-compatible
docset from a version of the doxygen HTML.

To do this, doxytag2zeal is used.
2018-12-03 10:14:15 -05:00
Adam Wolf 3392162d49 Fixup documentation for macOS Python script plugins. Fixes #1789960. 2018-11-28 09:40:22 -05:00
John Beard 369d172460 Document tracemask strings and add note in testing.md
Also make the examples in the testing.md docs self-consistent.
2018-11-27 08:33:10 -05:00
John Beard 5a0318968f Break zoom control into a self-contained controller
This is done to avoid a big chunk of conditionally-compiled code
in the middle of the event function.

Also separates the zoom logic from the WX_VIEW_CONTROLS object
and isolates it in a separate class behind a clearer interface.

Add some simple tests for sane steps on GTK+3-sized scroll
steps.
2018-11-26 14:40:09 -05:00
Maciej Suminski 3fd2968318 Explained AF_ACTIVATE flag in the documentation 2018-11-13 09:36:26 +01:00
John Beard ee819216e2 QA: Make a separate unit test utils library, COLOR4D tests
This includes:

* Linkage against the Boost unit test libs
* Configuration of the Boost libs
* A place for common generics "extras" for unit test harnesses
  including
    * A simple way to allow "expected-failure" tests (without
      breaking Boost < 1.58, e.g. Ubuntu LTS)
    * Moving some simple numeric predicates from the geom tests
      to the utils library.

Expand unit test docs to describe the expected failures macro.

Add a few COLOR4D tests, including one with expected failures due
to a pre-existing bug. This will be fixed in a follow-up commit.
2018-11-08 14:40:42 -05:00
John Beard c6a971d971 Dev docs: Add TOC to testing markdown 2018-10-29 14:12:55 -04:00
John Beard e601b42207 Docs: printing and trace
Add a quick outline of some of the ways you can dump debug during
debugging. Also include a list of known trace mask strings.
2018-10-29 14:12:55 -04:00
John Beard 409e884ce6 Add git format commit hook
This adds a pre-commit hook to warn of any style errors.

Also adds a 'hook-chain' script to simplify future hooks.

Add dev-doc note about how to use the formatter.
2018-10-29 10:47:51 -04:00
Thomas Pointhuber 0e0b4d52a2 Add initial support for Phoenix (new wxPython binding)
Based on the work of @mmccoo:
https://kicad.mmccoo.com/2017/11/23/learnings-from-moving-kicad-to-wxpython-4-0/
and this additional patchset to remove wxpy_api.h dependency:
http://mmccoo.com/random/0001-Remove-dependence-on-pywx_api.h.patch

Please note CreatePythonShellWindow changed quite a lot. Throughful testing
should be made for the old as well as new wxPython version on all platforms
2018-10-26 13:21:11 +02:00
John Beard acd103631b QA: PCB file input parse test program (fuzzable)
This adds a test program which can be used to test the
parsing of a given KiCad PCB file. This interface is
useful for both manual or automated debugging of given
files, as well as providing an interface suitable for
fuzz-testing tools.

Also adds to the testing docs to detail how fuzzing can
be used.

Also moves some useful re-usable code from io-benchmark
to a new library qa_utils, which can contain code that
isn't need in the actual KiCad libs.
2018-10-22 12:32:24 -04:00
Thomas Pointhuber 7548a3b1bf Add KICAD_SCRIPTING_PYTHON3 flag to about dialog and doc 2018-10-19 09:59:05 +02:00
John Beard 86999a2a4d Update testing documentation 2018-10-06 08:46:36 -04:00
qu1ck d19b152655 Update pcbnew-plugins.md with info about icons 2018-08-27 11:08:39 -04:00
Nick Østergaard 6db71cd734 Add documentation for KICAD_USE_OCC 2018-08-20 13:26:40 -07:00
John Beard 6165a735ae Docs: update doxygen docs logo
The logo used was subtly different to the official KiCad
logo - different font weight and corner rounds.
2018-08-06 11:06:24 -04:00
Adam Wolf e3cf2705de Aim macOS users at kicad-mac-builder, and make building for macOS sound less scary. 2018-07-23 13:04:34 -04:00