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.
This commit is contained in:
parent
c716d66e53
commit
3caa4376a5
|
@ -849,6 +849,6 @@ learn something new.
|
||||||
|
|
||||||
[clang-format]: https://clang.llvm.org/docs/ClangFormat.html
|
[clang-format]: https://clang.llvm.org/docs/ClangFormat.html
|
||||||
[cppstandard]:http://www.possibility.com/Cpp/CppCodingStandard.html
|
[cppstandard]:http://www.possibility.com/Cpp/CppCodingStandard.html
|
||||||
[kernel]:http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tree/Documentation/CodingStyle
|
[kernel]:https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/Documentation/process/coding-style.rst
|
||||||
[overloading]:http://www.cs.caltech.edu/courses/cs11/material/cpp/donnie/cpp-ops.html
|
[overloading]:http://www.cs.caltech.edu/courses/cs11/material/cpp/donnie/cpp-ops.html
|
||||||
[style]:http://en.wikipedia.org/wiki/Programming_style
|
[style]:http://en.wikipedia.org/wiki/Programming_style
|
||||||
|
|
|
@ -363,6 +363,12 @@ configure pacman to prevent upgrading the 64-bit Boost package by adding:
|
||||||
|
|
||||||
to your /etc/pacman.conf file.
|
to your /etc/pacman.conf file.
|
||||||
|
|
||||||
|
### Building with Boost 1.70 ### {#ki_msys2_boost_1_70}
|
||||||
|
|
||||||
|
There is an issue building KiCad with Boost version 1.70 due to CMake not defining the proper
|
||||||
|
link libraries during configuration. Boost 1.70 can be used but `-DBoost_NO_BOOST_CMAKE=ON`
|
||||||
|
needs to be added during CMake configuration to insure the link libraries are properly generated.
|
||||||
|
|
||||||
### Building OCE from source
|
### Building OCE from source
|
||||||
|
|
||||||
KiCad requires OCE by default, and the version installed by `pacman` can cause build errors in
|
KiCad requires OCE by default, and the version installed by `pacman` can cause build errors in
|
||||||
|
|
|
@ -1,461 +0,0 @@
|
||||||
# Version 5 Road Map # {#v5_road_map}
|
|
||||||
|
|
||||||
This document is the KiCad version 5 Developer's road map document. It is
|
|
||||||
living document that should be maintained during the version 5 development
|
|
||||||
cycle. The goal of this document is to provide an overview for developers
|
|
||||||
of the goals for the project for the version 5 release of KiCad. It is
|
|
||||||
broken into sections for each major component of the KiCad source code and
|
|
||||||
documentation. It defines tasks that developers an use to contribute to the
|
|
||||||
project and provides updated status information. Tasks should define clear
|
|
||||||
objectives and avoid vague generalizations so that a new developer can complete
|
|
||||||
the task. It is not a place for developers to add their own personal wish.
|
|
||||||
list. It should only be updated with approval of the project manager after
|
|
||||||
discussion with the lead developers.
|
|
||||||
|
|
||||||
Each entry in the road map is made up of four sections. The goal should
|
|
||||||
be a brief description of the what the road map entry will accomplish. The
|
|
||||||
task section should be a list of deliverable items that are specific enough
|
|
||||||
hat they can be documented as completed. The dependencies sections is a list
|
|
||||||
of requirements that must be completed before work can begin on any of the
|
|
||||||
tasks. The status section should include a list of completed tasks or marked
|
|
||||||
as complete as when the goal is met.
|
|
||||||
|
|
||||||
[TOC]
|
|
||||||
|
|
||||||
# Project # {#v5_project}
|
|
||||||
This section defines the tasks for the project related goals that are not
|
|
||||||
related to coding or documentation. It is a catch all for issues such as
|
|
||||||
developer and user relations, dissemination of information on websites,
|
|
||||||
policies, etc.
|
|
||||||
|
|
||||||
|
|
||||||
# General # {#v5_general}
|
|
||||||
This section defines the tasks that affect all or most of KiCad or do not
|
|
||||||
fit under as specific part of the code such as the board editor or the
|
|
||||||
schematic editor.
|
|
||||||
|
|
||||||
## Search Tree Control ## {#v5_re_search_control}
|
|
||||||
|
|
||||||
**Goal:**
|
|
||||||
Create a user interface element that allows searching through a list of
|
|
||||||
items in a tree control for library searching.
|
|
||||||
|
|
||||||
**Task:**
|
|
||||||
- Create hybrid tree control with search text control for displaying filtered
|
|
||||||
objects (both symbol and footprint libraries) in a parent window.
|
|
||||||
|
|
||||||
**Dependencies:**
|
|
||||||
- None
|
|
||||||
|
|
||||||
**Status:**
|
|
||||||
- Initial container searching code completed.
|
|
||||||
- Wildcard and regular expression container searching completed.
|
|
||||||
- Control code in progress.
|
|
||||||
|
|
||||||
# Common Library # {#v5_common_lib}
|
|
||||||
This section covers the source code shared between all of the KiCad
|
|
||||||
applications
|
|
||||||
|
|
||||||
## Unified Rendering Framework ## {#v5_unified_rendering}
|
|
||||||
**Goal:**
|
|
||||||
|
|
||||||
Provide a single framework for developing new tools. Port existing tools
|
|
||||||
to the new framework and remove the legacy framework tools.
|
|
||||||
|
|
||||||
**Task:**
|
|
||||||
- Port wxDC to GAL or get Cairo rendering to nearly the performance of the
|
|
||||||
current wxDC rendering so that we have a single framework to develop new
|
|
||||||
tools and we can continue to support systems that don't have a complete
|
|
||||||
OpenGL stack.
|
|
||||||
|
|
||||||
**Dependencies**
|
|
||||||
- [Tool framework](http://www.ohwr.org/projects/cern-kicad/wiki/WorkPackages)
|
|
||||||
|
|
||||||
**Status**
|
|
||||||
- In progress
|
|
||||||
|
|
||||||
## Printing Improvements ## {#v5_print}
|
|
||||||
**Goal:**
|
|
||||||
|
|
||||||
Make printing quality consistent across platforms.
|
|
||||||
|
|
||||||
**Task:**
|
|
||||||
- Resolve printing issues on all platforms.
|
|
||||||
|
|
||||||
**Dependencies**
|
|
||||||
- None
|
|
||||||
|
|
||||||
**Status**
|
|
||||||
- No progress.
|
|
||||||
|
|
||||||
## Object Properties and Introspection ## {#v5_object_props}
|
|
||||||
**Goal:**
|
|
||||||
|
|
||||||
Provide an object introspection system using properties.
|
|
||||||
|
|
||||||
**Task:**
|
|
||||||
- Select existing or develop property system.
|
|
||||||
- Add definable properties to base objects.
|
|
||||||
- Create introspection framework for manipulating object properties.
|
|
||||||
- Serialization of properties to and from files and/or other I/O structures.
|
|
||||||
- Create tool to edit property namespace/object name/name/type/value table.
|
|
||||||
|
|
||||||
**Dependencies:**
|
|
||||||
- None
|
|
||||||
|
|
||||||
**Status:**
|
|
||||||
- No progress.
|
|
||||||
|
|
||||||
## 3D Viewer Dynamic Library Plugin ## {#v5_plugin_base}
|
|
||||||
**Goal:**
|
|
||||||
|
|
||||||
Create a base library plugin for handling external file I/O for the 3D viewer.
|
|
||||||
This will allow plugins to be provided that are external to the project such
|
|
||||||
as providing solid model file support (STEP, IGES, etc.) using OpenCascade
|
|
||||||
without making it a project dependency.
|
|
||||||
|
|
||||||
**Task:**
|
|
||||||
- Create a plugin to handle dynamically registered plugins for loading and
|
|
||||||
saving file formats.
|
|
||||||
- This object should be flexible enough to be extended for handling all file
|
|
||||||
plugin types including schematic, board, footprint library, component
|
|
||||||
library, etc. (optional)
|
|
||||||
- See [blueprint](https://blueprints.launchpad.net/kicad/+spec/pluggable-file-io)
|
|
||||||
on Launchpad for more information.
|
|
||||||
|
|
||||||
**Dependencies:**
|
|
||||||
- None
|
|
||||||
|
|
||||||
**Status:**
|
|
||||||
- 3D plugin code complete and legacy formats implemented.
|
|
||||||
|
|
||||||
|
|
||||||
# Eeschema: Schematic Editor # {#v5_eeschema}
|
|
||||||
This section applies to the source code for the Eeschema schematic editor.
|
|
||||||
|
|
||||||
## Coherent SCHEMATIC Object ## {#v5_sch_object}
|
|
||||||
**Goal:**
|
|
||||||
|
|
||||||
Clean up the code related to the schematic object(s) into a coherent object for
|
|
||||||
managing and manipulating the schematic that can be used by third party tools
|
|
||||||
and Python scripting.
|
|
||||||
|
|
||||||
**Task:**
|
|
||||||
- Move handling of root sheet object to SCHEMATIC object.
|
|
||||||
- Move SCH_SCREENS code into SCH_OBJECT.
|
|
||||||
- Build and maintain schematic hierarchy in SCHEMATIC object rather than
|
|
||||||
recreating on the fly every time the hierarchical information is required.
|
|
||||||
- Optionally build and maintain netlist during editing for extended editing
|
|
||||||
features.
|
|
||||||
- Add any missing functionality to the SCHEMATIC object.
|
|
||||||
|
|
||||||
**Dependencies:**
|
|
||||||
- [Schematic and Component Library Plugin](#v5_sch_plugin)
|
|
||||||
|
|
||||||
**Status:**
|
|
||||||
- In progress.
|
|
||||||
|
|
||||||
## Schematic and Component Library I/O Manager Plugin ## {#v5_sch_plugin}
|
|
||||||
**Goal:**
|
|
||||||
Create a plugin manager for loading and saving schematics and component
|
|
||||||
libraries similar to the board plugin manager.
|
|
||||||
|
|
||||||
**Task:**
|
|
||||||
- Design plugin manager for schematics and component libraries.
|
|
||||||
- Port the current schematic and component library file formats to use the
|
|
||||||
plugin.
|
|
||||||
|
|
||||||
**Dependencies:**
|
|
||||||
- None
|
|
||||||
|
|
||||||
**Status:**
|
|
||||||
- I/O manager and plugin objects are complete.
|
|
||||||
- Legacy schematic file parser almost ready to commit.
|
|
||||||
|
|
||||||
|
|
||||||
## S-Expression File Format ## {#v5_sch_sexpr}
|
|
||||||
**Goal:**
|
|
||||||
|
|
||||||
Make schematic file format more readable, add new features, and take advantage
|
|
||||||
of the s-expression parser and formatter capability used in Pcbnew.
|
|
||||||
|
|
||||||
**Task:**
|
|
||||||
- Finalize feature set and file format.
|
|
||||||
- Discuss the possibility of dropping the unit-less proposal temporarily to get
|
|
||||||
the s-expression file format and SWEET library format implemented without
|
|
||||||
completely rewriting Eeschema.
|
|
||||||
- Add new s-expression file format to plugin.
|
|
||||||
|
|
||||||
**Dependencies:**
|
|
||||||
- [Schematic and component I/O manager plugin](#v5_sch_plugin)
|
|
||||||
|
|
||||||
**Status:**
|
|
||||||
- File format document nearly complete.
|
|
||||||
|
|
||||||
## Implement Sweet Component Libraries ## {#v5_sch_sweet}
|
|
||||||
**Goal:**
|
|
||||||
|
|
||||||
Make component library design more robust and feature rich. Use s-expressions
|
|
||||||
to make component library files more readable.
|
|
||||||
|
|
||||||
**Task:**
|
|
||||||
- Use sweet component file format for component libraries.
|
|
||||||
|
|
||||||
**Dependencies:**
|
|
||||||
- [S-expression file format](#v5_sch_sexpr).
|
|
||||||
[Schematic and component I/O manager plugin](#v5_sch_plugin)
|
|
||||||
|
|
||||||
**Status:**
|
|
||||||
- Initial SWEET library file format document written.
|
|
||||||
|
|
||||||
## Component Library Editor Usability Improvements ## {#v5_lib_editor_usability}
|
|
||||||
**Goal:**
|
|
||||||
|
|
||||||
Make editing schematic symbol libraries easier to manage.
|
|
||||||
|
|
||||||
**Task:**
|
|
||||||
- Determine usability improvements in the library editor for components with
|
|
||||||
multiple units and/or alternate graphical representations.
|
|
||||||
- Replace current library/symbols selection process with new hybrid tree search
|
|
||||||
widget in new window pain for selection libraries and symbols. Provide drag
|
|
||||||
and drop symbol copy/move between libraries.
|
|
||||||
- Allow editing of symbol libraries not defined in footprint library table(s)
|
|
||||||
using the file/path dialog to open a library.
|
|
||||||
|
|
||||||
**Dependencies:**
|
|
||||||
- [Search Tree Control](#v5_re_search_control)
|
|
||||||
|
|
||||||
**Status:**
|
|
||||||
- Determined alternate UI designs using new hybrid search tree control.
|
|
||||||
|
|
||||||
## Component and Netlist Attributes ## {#v5_netlist_attributes}
|
|
||||||
**Goal:**
|
|
||||||
|
|
||||||
Provide a method of passing information to other tools via the net list.
|
|
||||||
|
|
||||||
**Task:**
|
|
||||||
- Add virtual components and attributes to netlist to define properties that
|
|
||||||
can be used by other tools besides the board editor.
|
|
||||||
- Attributes (properties) are automatically included as part of the new file
|
|
||||||
format.
|
|
||||||
|
|
||||||
**Dependencies:**
|
|
||||||
- [S-expression schematic file format](#v5_sch_sexpr).
|
|
||||||
|
|
||||||
**Status:**
|
|
||||||
- No progress.
|
|
||||||
|
|
||||||
|
|
||||||
# Circuit Simulation # {#simulation}
|
|
||||||
**Goal:**
|
|
||||||
|
|
||||||
Provide quality circuit simulation capabilities similar to commercial products.
|
|
||||||
|
|
||||||
**Task:**
|
|
||||||
- Evaluate and select simulation library (ngspice, gnucap, qucs, etc).
|
|
||||||
- Evaluate and select plotting library with wxWidgets support.
|
|
||||||
- Confirm current spice netlist export is up to the task and add missing
|
|
||||||
support for simulations.
|
|
||||||
- Use plotting library to handle simulator output in a consistent manor similar
|
|
||||||
to LTSpice.
|
|
||||||
- Develop a tool that allows fine tuning of components on the fly.
|
|
||||||
- Use plugin for the simulation code to allow support of different simulation
|
|
||||||
libraries.
|
|
||||||
- Create dialogs for configuring of simulation of Spice primitive components
|
|
||||||
such as voltage sources, current sources, etc.
|
|
||||||
- Create dialog(s) for configuration of simulation types transient, DC operating
|
|
||||||
point, AC analysis, etc.
|
|
||||||
|
|
||||||
**Dependencies:**
|
|
||||||
- None
|
|
||||||
|
|
||||||
**Status:**
|
|
||||||
- Complete ([announcement message](https://lists.launchpad.net/kicad-developers/msg25483.html))
|
|
||||||
|
|
||||||
|
|
||||||
# Pcbnew: Circuit Board Editor # {#v5_pcbnew}
|
|
||||||
This section covers the source code of the board editing application Pcbnew.
|
|
||||||
|
|
||||||
## Tool Framework ## {#v5_pcb_tool_framework}
|
|
||||||
**Goal:**
|
|
||||||
|
|
||||||
Unify all board editing tools under a single framework.
|
|
||||||
|
|
||||||
**Task:**
|
|
||||||
- Drop footprint edit mode.
|
|
||||||
- Port auto-router to GAL.
|
|
||||||
- Complete porting of all board editing tools to new tool framework so they
|
|
||||||
are available in the OpenGL and Cairo canvases.
|
|
||||||
- Remove all duplicate legacy editing tools.
|
|
||||||
|
|
||||||
**Dependencies:**
|
|
||||||
- In progress.
|
|
||||||
|
|
||||||
**Status:**
|
|
||||||
- Initial porting work in progress.
|
|
||||||
|
|
||||||
## Modeling ## {#v5_modeling}
|
|
||||||
|
|
||||||
**Goal:**
|
|
||||||
|
|
||||||
Provide improved solid modeling support for KiCad including the file formats
|
|
||||||
available in OpenCascade.
|
|
||||||
|
|
||||||
**Task:**
|
|
||||||
- Improve low level code design.
|
|
||||||
- Design plugin architecture to handle loading and saving 3D models.
|
|
||||||
- Back port existing 3D formats (IDF and S3D) to plugin
|
|
||||||
|
|
||||||
**Dependencies:**
|
|
||||||
- [Dynamic library plugin](#v5_plugin_base).
|
|
||||||
|
|
||||||
**Status:**
|
|
||||||
- Completed.
|
|
||||||
|
|
||||||
## Push and Shove Router Improvements ## {#v5_ps_router_improvements}
|
|
||||||
|
|
||||||
**Goal:**
|
|
||||||
|
|
||||||
Add finishing touches to push and shove router.
|
|
||||||
|
|
||||||
**Task:**
|
|
||||||
- Determine which features are feasible.
|
|
||||||
- Factor out KiCad-specific code from PNS_ROUTER class.
|
|
||||||
- Delete and backspace in idle mode
|
|
||||||
- Differential pair clearance fixes.
|
|
||||||
- Differential pair optimizer improvements (recognize differential pairs)
|
|
||||||
- Persistent differential pair gap/width setting.
|
|
||||||
- Walk around in drag mode.
|
|
||||||
- Optimize trace being dragged too. (currently no optimization)
|
|
||||||
- Backspace to erase last routed segment.
|
|
||||||
- Auto-finish traces (if time permits)
|
|
||||||
- Additional optimization pass for spring back algorithm using area-minimization
|
|
||||||
strategy. (improves tightness of routing)
|
|
||||||
- Restrict optimization area to view port (if user wants to)
|
|
||||||
- Support 45 degree tuning meanders.
|
|
||||||
- Respect trace/via locking!
|
|
||||||
- Keep out zone support.
|
|
||||||
|
|
||||||
**Dependencies:**
|
|
||||||
- None
|
|
||||||
|
|
||||||
**Status:**
|
|
||||||
- Feature feasibility determined.
|
|
||||||
- In Progress.
|
|
||||||
|
|
||||||
## Selection Filtering ## {#v5_pcb_selection_filtering}
|
|
||||||
**Goal:**
|
|
||||||
|
|
||||||
Make the selection tool easier for the user to determine which object(s) are
|
|
||||||
being selected by filtering.
|
|
||||||
|
|
||||||
**Task:**
|
|
||||||
- Provide filtered object selection by adding a third tab to the layer manager
|
|
||||||
or possibly some other UI element to provide filtered selection options.
|
|
||||||
|
|
||||||
**Dependencies:**
|
|
||||||
- None
|
|
||||||
|
|
||||||
**Status:**
|
|
||||||
- Initial design concept discussed.
|
|
||||||
|
|
||||||
## Segment End Point Snapping. ## {#v5_segment_snapping}
|
|
||||||
**Goal:**
|
|
||||||
|
|
||||||
It is not uncommon for board edge segment end points to inadvertently not
|
|
||||||
be closed causing issues for the 3D viewer and exporting to different file
|
|
||||||
formats due the board outline not being a fully enclosed polygon. This
|
|
||||||
feature would add segment end snapping support to allow the board outline
|
|
||||||
to be fully enclosed. This feature would only need to be supported by the
|
|
||||||
GAL rendering.
|
|
||||||
|
|
||||||
**Tasks**
|
|
||||||
- Mark board edge segment ends with a drag indicator to make it visible to the
|
|
||||||
user that the segment end does not have an endpoint with any other board edge
|
|
||||||
segment.
|
|
||||||
- Allow the user to snap the unconnected segment end to the nearest segment end
|
|
||||||
point.
|
|
||||||
- Automatically connect unconnected segments with and additional segment when
|
|
||||||
opening the 3D viewer or exporting the board to another format. Warn the
|
|
||||||
user that an addition segment has be added and should be verified.
|
|
||||||
|
|
||||||
**Dependencies:**
|
|
||||||
- None
|
|
||||||
|
|
||||||
**Progress:**
|
|
||||||
- Initial discussion.
|
|
||||||
|
|
||||||
## Stitching Via Support ## {#v5_pcb_stitching_vias}
|
|
||||||
**Goal:**
|
|
||||||
|
|
||||||
Add capability to add vias for stitching and thermal transfer purposes
|
|
||||||
that do not require being attached to tracks.
|
|
||||||
|
|
||||||
**Task:**
|
|
||||||
- Develop more robust connectivity checking algorithm.
|
|
||||||
- Create a UI element to allow the user to select a net from the list of
|
|
||||||
valid nets.
|
|
||||||
- Connection propagation fix for the current issue of vias that are not
|
|
||||||
connected to tracks being tagged as unassigned and removed.
|
|
||||||
- Manual via placement tool.
|
|
||||||
- Improve the DRC to handle cases of orphaned vias.
|
|
||||||
|
|
||||||
**Dependencies:**
|
|
||||||
- None
|
|
||||||
|
|
||||||
**Progress:**
|
|
||||||
- Patch available to fix via propagation issue.
|
|
||||||
|
|
||||||
|
|
||||||
# Documentation # {#v5_documentation}
|
|
||||||
This section defines the tasks for both the user and developer documentation.
|
|
||||||
|
|
||||||
## Grammar Check ## {#v5_doc_grammar}
|
|
||||||
**Goal:**
|
|
||||||
|
|
||||||
Improve user documentation readability and make life easier to for translators.
|
|
||||||
|
|
||||||
**Task:**
|
|
||||||
- Review and revise all of the English documentation so that it is update with
|
|
||||||
the current functionality of the code.
|
|
||||||
- Translate the update documentation into other languages.
|
|
||||||
|
|
||||||
**Dependencies:**
|
|
||||||
- None
|
|
||||||
|
|
||||||
**Status:**
|
|
||||||
- No progress.
|
|
||||||
|
|
||||||
## Maintenance ## {#v5_doc_maintenance}
|
|
||||||
**Task:**
|
|
||||||
- Keep screen shots current with the source changes.
|
|
||||||
|
|
||||||
**Dependencies:**
|
|
||||||
- None.
|
|
||||||
|
|
||||||
**Status:**
|
|
||||||
- No progress.
|
|
||||||
|
|
||||||
## Convert Developer Documentation to Markup/down Format ## {#v5_dev_doc_format}
|
|
||||||
**Goal:**
|
|
||||||
|
|
||||||
Improve developers documentation to make life easier for new developers to get
|
|
||||||
involved with the project.
|
|
||||||
|
|
||||||
**Task:**
|
|
||||||
- Convert platform build instructions from plain text to new format to be
|
|
||||||
merged with the developer documentation.
|
|
||||||
- Convert how to contribute to KiCad instructions from plain text to the new
|
|
||||||
format to merged with the developer documentation.
|
|
||||||
|
|
||||||
**Dependencies:**
|
|
||||||
- None.
|
|
||||||
|
|
||||||
**Status:**
|
|
||||||
- In progress. Most of the developer documentation has been converted to
|
|
||||||
[Doxygen markdown](http://www.doxygen.nl/manual/markdown.html)
|
|
||||||
and the [output][kicad-docs] is rebuilt automatically when a commit is
|
|
||||||
made to the KiCad repo.
|
|
||||||
|
|
||||||
[kicad-website]:http://kicad-pcb.org/
|
|
||||||
[kicad-docs]:http://ci.kicad-pcb.org/job/kicad-doxygen/ws/Documentation/doxygen/html/index.html
|
|
|
@ -54,10 +54,84 @@ Create perspectives to allow users to arrange dockable windows as they prefer.
|
||||||
**Status:**
|
**Status:**
|
||||||
- No progress.
|
- No progress.
|
||||||
|
|
||||||
|
## Object Properties and Introspection ## {#v6_object_props}
|
||||||
|
**Goal:**
|
||||||
|
|
||||||
|
Provide an object introspection system using properties.
|
||||||
|
|
||||||
|
**Task:**
|
||||||
|
- Select existing or develop property system.
|
||||||
|
- Add definable properties to base objects.
|
||||||
|
- Create introspection framework for manipulating object properties.
|
||||||
|
- Serialization of properties to and from files and/or other I/O structures.
|
||||||
|
- Create tool to edit property namespace/object name/name/type/value table.
|
||||||
|
|
||||||
|
**Dependencies:**
|
||||||
|
- None
|
||||||
|
|
||||||
|
**Status:**
|
||||||
|
- In progress.
|
||||||
|
|
||||||
|
|
||||||
# Eeschema: Schematic Editor # {#v6_eeschema}
|
# Eeschema: Schematic Editor # {#v6_eeschema}
|
||||||
This section applies to the source code for the Eeschema schematic editor.
|
This section applies to the source code for the Eeschema schematic editor.
|
||||||
|
|
||||||
|
## Coherent SCHEMATIC Object ## {#v6_sch_object}
|
||||||
|
**Goal:**
|
||||||
|
|
||||||
|
Clean up the code related to the schematic object(s) into a coherent object for
|
||||||
|
managing and manipulating the schematic that can be used by third party tools
|
||||||
|
and Python scripting.
|
||||||
|
|
||||||
|
**Task:**
|
||||||
|
- Move handling of root sheet object to SCHEMATIC object.
|
||||||
|
- Move SCH_SCREENS code into SCH_OBJECT.
|
||||||
|
- Build and maintain schematic hierarchy in SCHEMATIC object rather than
|
||||||
|
recreating on the fly every time the hierarchical information is required.
|
||||||
|
- Optionally build and maintain netlist during editing for extended editing
|
||||||
|
features.
|
||||||
|
- Add any missing functionality to the SCHEMATIC object.
|
||||||
|
|
||||||
|
**Dependencies:**
|
||||||
|
- None
|
||||||
|
|
||||||
|
**Status:**
|
||||||
|
- In progress.
|
||||||
|
|
||||||
|
## Implement Sweet (S-Expression) Symbol Libraries ## {#v6_sch_sweet}
|
||||||
|
**Goal:**
|
||||||
|
|
||||||
|
Make symbol library design more robust and feature rich. Use s-expressions
|
||||||
|
to make component library files more readable.
|
||||||
|
|
||||||
|
**Task:**
|
||||||
|
- Use sweet component file format for component libraries.
|
||||||
|
|
||||||
|
**Dependencies:**
|
||||||
|
- None
|
||||||
|
|
||||||
|
**Status:**
|
||||||
|
- Initial SWEET library file format document written.
|
||||||
|
|
||||||
|
## S-Expression File Format ## {#v6_sch_sexpr}
|
||||||
|
**Goal:**
|
||||||
|
|
||||||
|
Make schematic file format more readable, add new features, and take advantage
|
||||||
|
of the s-expression parser and formatter capability used in Pcbnew.
|
||||||
|
|
||||||
|
**Task:**
|
||||||
|
- Finalize feature set and file format.
|
||||||
|
- Discuss the possibility of dropping the unit-less proposal temporarily to get
|
||||||
|
the s-expression file format and SWEET library format implemented without
|
||||||
|
completely rewriting Eeschema.
|
||||||
|
- Add new s-expression file format to plugin.
|
||||||
|
|
||||||
|
**Dependencies:**
|
||||||
|
- [S-expression file format](#v6_sch_sweet).
|
||||||
|
|
||||||
|
**Status:**
|
||||||
|
- File format document initial draft complete.
|
||||||
|
|
||||||
## Move Common Schematic Code into a Shared Object ## {#v6_sch_shared_object}
|
## Move Common Schematic Code into a Shared Object ## {#v6_sch_shared_object}
|
||||||
**Goal:**
|
**Goal:**
|
||||||
|
|
||||||
|
@ -93,37 +167,22 @@ Improve the coverage and usability of the electrical rules checker (ERC).
|
||||||
**Status:**
|
**Status:**
|
||||||
- No progress.
|
- No progress.
|
||||||
|
|
||||||
## Implement GAL and New Tool Framework ## {#v6_sch_gal}
|
## Port Editing Tools to New Tool Framework ## {#v6_sch_tool_framework}
|
||||||
**Goal:**
|
|
||||||
|
|
||||||
Implement the GAL and the tool framework used by Pcbnew in Eechema to
|
|
||||||
provide advanced graphics and tool capabilities.
|
|
||||||
|
|
||||||
**Task:**
|
|
||||||
- Implement graphics abstraction layer along side current legacy rendering
|
|
||||||
framework.
|
|
||||||
|
|
||||||
**Dependencies:**
|
|
||||||
- None
|
|
||||||
|
|
||||||
**Status:**
|
|
||||||
- Initial Discussion..
|
|
||||||
|
|
||||||
## Port Editing Tools ## {#v6_sch_tool_framework}
|
|
||||||
**Goal:**
|
**Goal:**
|
||||||
|
|
||||||
Convert all editing tool to new tool framework.
|
Convert all editing tool to new tool framework.
|
||||||
|
|
||||||
-**Task:**
|
**Task:**
|
||||||
- Rewrite existing editing tools using the new tool framework.
|
- Rewrite existing editing tools using the new tool framework.
|
||||||
- Add new capabilities supported by the new tool framework to existing
|
- Add new capabilities supported by the new tool framework to existing
|
||||||
editing tools.
|
editing tools.
|
||||||
|
- Remove legacy tool framework.
|
||||||
|
|
||||||
-**Dependencies:**
|
**Dependencies:**
|
||||||
- [GAL and new tool framework port](#v6_sch_gal).
|
- None.
|
||||||
|
|
||||||
-**Status:**
|
**Status:**
|
||||||
- Initial Discussion..
|
- Schematic editor complete.
|
||||||
|
|
||||||
## Net Highlighting ## {#v6_sch_net_highlight}
|
## Net Highlighting ## {#v6_sch_net_highlight}
|
||||||
**Goal:**
|
**Goal:**
|
||||||
|
@ -134,28 +193,11 @@ Highlight wires, buses, and junctions when corresponding net in Pcbnew is select
|
||||||
- Implement highlight algorithm for net objects.
|
- Implement highlight algorithm for net objects.
|
||||||
- Highlight objects connected to net selected in Pcbnew.
|
- Highlight objects connected to net selected in Pcbnew.
|
||||||
|
|
||||||
**Dependencies:**
|
|
||||||
- [GAL and new tool framework port, maybe](#v6_sch_gal).
|
|
||||||
|
|
||||||
**Status:**
|
|
||||||
- No progress.
|
|
||||||
|
|
||||||
## Component Library Editor Improvements ## {#lib_editor_usability}
|
|
||||||
**Goal:**
|
|
||||||
|
|
||||||
Make editing components with multiple units and/or alternate graphical
|
|
||||||
representations easier.
|
|
||||||
|
|
||||||
**Task:**
|
|
||||||
- Determine usability improvements in the library editor for components with
|
|
||||||
multiple units and/or alternate graphical representations.
|
|
||||||
- Implement said usability improvements.
|
|
||||||
|
|
||||||
**Dependencies:**
|
**Dependencies:**
|
||||||
- None.
|
- None.
|
||||||
|
|
||||||
**Status:**
|
**Status:**
|
||||||
- No progress.
|
- Complete.
|
||||||
|
|
||||||
## Allow Use of System Fonts ## {#v6_sch_sys_fonts}
|
## Allow Use of System Fonts ## {#v6_sch_sys_fonts}
|
||||||
**Goal:**
|
**Goal:**
|
||||||
|
@ -170,33 +212,112 @@ for schematic text.
|
||||||
- Add support for selecting text object fonts.
|
- Add support for selecting text object fonts.
|
||||||
|
|
||||||
**Dependencies:**
|
**Dependencies:**
|
||||||
- [S-expression schematic file format](#sch_sexpr).
|
- [S-expression schematic file format](#v6_sch_sexpr).
|
||||||
|
|
||||||
**Status:**
|
**Status:**
|
||||||
- No progress.
|
- No progress.
|
||||||
|
|
||||||
|
## Symbol and Netlist Attributes ## {#v6_netlist_attributes}
|
||||||
|
**Goal:**
|
||||||
|
|
||||||
|
Provide a method of passing information to other tools via the net list.
|
||||||
|
|
||||||
|
**Task:**
|
||||||
|
- Add virtual components and attributes to netlist to define properties that
|
||||||
|
can be used by other tools besides the board editor.
|
||||||
|
- Attributes (properties) are automatically included as part of the new file
|
||||||
|
format.
|
||||||
|
|
||||||
|
**Dependencies:**
|
||||||
|
- [S-expression schematic file format](#v6_sch_sexpr).
|
||||||
|
|
||||||
|
**Status:**
|
||||||
|
- No progress.
|
||||||
|
|
||||||
|
## Orthogonal Wire Drag ## {#v6_orthogonal_drag}
|
||||||
|
**Goal:**
|
||||||
|
|
||||||
|
Keep wires and buses orthogonal when dragging a symbol.
|
||||||
|
|
||||||
|
**Task:**
|
||||||
|
- Add code to new tool framework to allow for orthogonal dragging of symbols.
|
||||||
|
|
||||||
|
**Dependencies:**
|
||||||
|
- [New tool framework](#v6_sch_tool_framework).
|
||||||
|
|
||||||
|
**Status:**
|
||||||
|
- No progress.
|
||||||
|
|
||||||
|
## Custom Wire and Bus Attributes ## {#v6_sch_bus_wire_attr}
|
||||||
|
**Goal:**
|
||||||
|
|
||||||
|
Allow for wires and buses to have different widths, colors, and line types.
|
||||||
|
|
||||||
|
**Task:**
|
||||||
|
- Add code to support custom wire and bus attributes.
|
||||||
|
- Add user interface element to support changing wire and bus attributes.
|
||||||
|
|
||||||
|
**Dependencies:**
|
||||||
|
- [S-Expression File Format](#v6_sch_sexpr).
|
||||||
|
|
||||||
|
**Status:**
|
||||||
|
- No progress.
|
||||||
|
|
||||||
|
## Connectivity Improvements ## {#v6_sch_connectivity}
|
||||||
|
**Goal:**
|
||||||
|
|
||||||
|
Support structured buses, real time netlist calculations, and other
|
||||||
|
connectivity improvements.
|
||||||
|
|
||||||
|
**Task:**
|
||||||
|
- Keep netlist up to date real time.
|
||||||
|
- Add support for structured bus definitions.
|
||||||
|
- Possible real time ERC checking.
|
||||||
|
|
||||||
|
**Dependencies:**
|
||||||
|
- None.
|
||||||
|
|
||||||
|
**Status:**
|
||||||
|
- Real time netlist and structured bus support complete.
|
||||||
|
|
||||||
|
## ERC Improvements ## {#v6_sch_erc}
|
||||||
|
**Goal:**
|
||||||
|
|
||||||
|
Improve ERC test coverage and other ERC usability features.
|
||||||
|
|
||||||
|
**Task:**
|
||||||
|
- Add missing ERC tests to improve coverage.
|
||||||
|
- Save ERC settings in project file.
|
||||||
|
- Add mechanism to allow import and export of ERC settings.
|
||||||
|
- ERC user interface improvements.
|
||||||
|
|
||||||
|
**Dependencies:**
|
||||||
|
- None.
|
||||||
|
|
||||||
|
**Status:**
|
||||||
|
- Preliminary specification draft complete.
|
||||||
|
|
||||||
|
## Python Support ## {#v6_sch_python}
|
||||||
|
**Goal:**
|
||||||
|
|
||||||
|
SWIG all schematic low level objects and coherent schematic object to
|
||||||
|
provide Python interface for manipulating schematic objects.
|
||||||
|
|
||||||
|
**Task:**-
|
||||||
|
- Create SWIG wrappers for all low level schematic, symbol library, and
|
||||||
|
coherent schematic object code.
|
||||||
|
- Add Python interpreter launcher.
|
||||||
|
|
||||||
|
**Dependencies:**
|
||||||
|
- [Coherent Schematic Object](#v6_sch_object).
|
||||||
|
|
||||||
|
**Status:**
|
||||||
|
- No Progress.
|
||||||
|
|
||||||
|
|
||||||
# CvPcb: Footprint Association Tool # {#v6_cvpcb}
|
# CvPcb: Footprint Association Tool # {#v6_cvpcb}
|
||||||
This section covers the source code of the footprint assignment tool CvPcb.
|
This section covers the source code of the footprint assignment tool CvPcb.
|
||||||
|
|
||||||
## Improved Footprint Search Tool ## {#v6_cvpcb_search}
|
|
||||||
|
|
||||||
**Goal:**
|
|
||||||
|
|
||||||
Provide advanced search features such as wild card and regular expression
|
|
||||||
searches using the type as you go feature of the current search dialog.
|
|
||||||
|
|
||||||
**Task:**
|
|
||||||
- Add code for wild card and regular expression pattern matching to search
|
|
||||||
container objects.
|
|
||||||
- Add search dialog to CvPcb to search container of footprint names.
|
|
||||||
|
|
||||||
**Dependencies:**
|
|
||||||
- [Search Tree Control](#v6_re_search_control)
|
|
||||||
|
|
||||||
**Status:**
|
|
||||||
- Pattern matching added to search container objects.
|
|
||||||
|
|
||||||
|
|
||||||
# Pcbnew: Circuit Board Editor # {#v6_pcbnew}
|
# Pcbnew: Circuit Board Editor # {#v6_pcbnew}
|
||||||
This section covers the source code of the board editing application Pcbnew.
|
This section covers the source code of the board editing application Pcbnew.
|
||||||
|
@ -208,14 +329,45 @@ This section covers the source code of the board editing application Pcbnew.
|
||||||
Add finishing touches to push and shove router.
|
Add finishing touches to push and shove router.
|
||||||
|
|
||||||
**Task:**
|
**Task:**
|
||||||
- Microwave tools to be added as parametrized shapes generated by Python
|
- Delete and backspace in idle mode
|
||||||
|
- Differential pair clearance fixes.
|
||||||
|
- Differential pair optimizer improvements (recognize differential pairs)
|
||||||
|
- Persistent differential pair gap/width setting.
|
||||||
|
- Walk around in drag mode.
|
||||||
|
- Optimize trace being dragged too. (currently no optimization)
|
||||||
|
- Auto-finish traces (if time permits)
|
||||||
|
- Additional optimization pass for spring back algorithm using area-minimization
|
||||||
|
strategy. (improves tightness of routing)
|
||||||
|
- Restrict optimization area to view port (if user wants to)
|
||||||
|
- Support 45 degree tuning meanders.
|
||||||
|
- Respect trace/via locking!
|
||||||
|
- Keep out zone support.
|
||||||
|
- Microwave tools to be added as parameterized shapes generated by Python
|
||||||
scripts.
|
scripts.
|
||||||
|
- BGA fan out support.
|
||||||
|
- Drag footprints with traces connected.
|
||||||
|
|
||||||
|
**Dependencies:**
|
||||||
|
- None.
|
||||||
|
|
||||||
|
**Status:**
|
||||||
|
- In progress.
|
||||||
|
|
||||||
|
## Selection Filtering ## {#v6_pcb_selection_filtering}
|
||||||
|
**Goal:**
|
||||||
|
|
||||||
|
Make the selection tool easier for the user to determine which object(s) are
|
||||||
|
being selected by filtering.
|
||||||
|
|
||||||
|
**Task:**
|
||||||
|
- Provide filtered object selection by adding a third tab to the layer manager
|
||||||
|
or possibly some other UI element to provide filtered selection options.
|
||||||
|
|
||||||
**Dependencies:**
|
**Dependencies:**
|
||||||
- None
|
- None
|
||||||
|
|
||||||
**Status:**
|
**Status:**
|
||||||
- None
|
- In progress.
|
||||||
|
|
||||||
## Design Rule Check (DRC) Improvements. ## {#v6_drc_improvements}
|
## Design Rule Check (DRC) Improvements. ## {#v6_drc_improvements}
|
||||||
**Goal:**
|
**Goal:**
|
||||||
|
@ -223,7 +375,6 @@ Add finishing touches to push and shove router.
|
||||||
Create additional DRC tests for improved error checking.
|
Create additional DRC tests for improved error checking.
|
||||||
|
|
||||||
**Task:**
|
**Task:**
|
||||||
- Replace geometry code with [unified geometry library](#v6_geometry_lib).
|
|
||||||
- Remove floating point code from clearance calculations to prevent rounding
|
- Remove floating point code from clearance calculations to prevent rounding
|
||||||
errors.
|
errors.
|
||||||
- Add checks for component, silk screen, and mask clearances.
|
- Add checks for component, silk screen, and mask clearances.
|
||||||
|
@ -232,7 +383,7 @@ Create additional DRC tests for improved error checking.
|
||||||
- Add option for saving and loading DRC options.
|
- Add option for saving and loading DRC options.
|
||||||
|
|
||||||
**Dependencies:**
|
**Dependencies:**
|
||||||
- [Unified geometry library.](#v6_geometry_lib)
|
- [Constraint Management System](#v6_pcb_constraint).
|
||||||
|
|
||||||
**Progress:**
|
**Progress:**
|
||||||
- In progress.
|
- In progress.
|
||||||
|
@ -273,7 +424,7 @@ does not have to do it in Eeschema and re-import the net list.
|
||||||
- Add support to handle net label back annotation changes.
|
- Add support to handle net label back annotation changes.
|
||||||
|
|
||||||
**Dependencies:**
|
**Dependencies:**
|
||||||
- None
|
- [S-Expression File Format](#v6_sch_sexpr).
|
||||||
|
|
||||||
**Status:**
|
**Status:**
|
||||||
- No progress.
|
- No progress.
|
||||||
|
@ -292,7 +443,7 @@ Add support for keepout zones on boards and footprints.
|
||||||
- [DRC Improvements.](#v6_drc_improvements)
|
- [DRC Improvements.](#v6_drc_improvements)
|
||||||
|
|
||||||
**Progress:**
|
**Progress:**
|
||||||
- Planning
|
- In progress.
|
||||||
|
|
||||||
## Clipboard Support ## {#v6_fp_edit_clipboard}
|
## Clipboard Support ## {#v6_fp_edit_clipboard}
|
||||||
**Goal:**
|
**Goal:**
|
||||||
|
@ -307,7 +458,7 @@ Provide clipboard cut and paste for footprints.
|
||||||
- None
|
- None
|
||||||
|
|
||||||
**Status:**
|
**Status:**
|
||||||
- No progress.
|
- Complete.
|
||||||
|
|
||||||
## Net Highlighting ## {#v6_pcb_net_highlight}
|
## Net Highlighting ## {#v6_pcb_net_highlight}
|
||||||
**Goal:**
|
**Goal:**
|
||||||
|
@ -323,7 +474,7 @@ Highlight rats nest links and/or traces when corresponding net in Eeschema is se
|
||||||
- None.
|
- None.
|
||||||
|
|
||||||
**Status:**
|
**Status:**
|
||||||
- No progress.
|
- Complete.
|
||||||
|
|
||||||
## Hatched Zone Filling ## {#v6_pcb_hatched_zones}
|
## Hatched Zone Filling ## {#v6_pcb_hatched_zones}
|
||||||
**Goal:**
|
**Goal:**
|
||||||
|
@ -339,7 +490,7 @@ with hatching.
|
||||||
- None.
|
- None.
|
||||||
|
|
||||||
**Status:**
|
**Status:**
|
||||||
- No progress.
|
- Complete.
|
||||||
|
|
||||||
## Board Stack Up Impedance Calculator ## {#v6_pcb_impedance_calc}
|
## Board Stack Up Impedance Calculator ## {#v6_pcb_impedance_calc}
|
||||||
**Goal:**
|
**Goal:**
|
||||||
|
@ -354,7 +505,7 @@ Maybe this should be included in the PCB calculator application.
|
||||||
- None.
|
- None.
|
||||||
|
|
||||||
**Status:**
|
**Status:**
|
||||||
- No progress.
|
- In progress.
|
||||||
|
|
||||||
## Net Class Improvements ## {#v6_pcb_net_class_improvements}
|
## Net Class Improvements ## {#v6_pcb_net_class_improvements}
|
||||||
**Goal:**
|
**Goal:**
|
||||||
|
@ -378,9 +529,10 @@ Add support for route impedance, color selection, etc in net class object.
|
||||||
## Ratsnest Improvements ## {#v6_pcb_ratsnest_improvements}
|
## Ratsnest Improvements ## {#v6_pcb_ratsnest_improvements}
|
||||||
**Goal:**
|
**Goal:**
|
||||||
|
|
||||||
Add support for per net color and visibility settings.
|
Add support for curved rats and per net color and visibility settings.
|
||||||
|
|
||||||
**Task:**
|
**Task:**
|
||||||
|
- Implement rat curving to minimize overlapped rats.
|
||||||
- Implement UI code to configure ratsnest color and visibility.
|
- Implement UI code to configure ratsnest color and visibility.
|
||||||
- Update ratsnest code to handle per net color and visibility.
|
- Update ratsnest code to handle per net color and visibility.
|
||||||
|
|
||||||
|
@ -388,23 +540,312 @@ Add support for per net color and visibility settings.
|
||||||
- None.
|
- None.
|
||||||
|
|
||||||
**Status:**
|
**Status:**
|
||||||
- No progress.
|
- Curved rat support complete.
|
||||||
|
|
||||||
|
## DXF Improvements ## {#v6_pcb_dxf_import}
|
||||||
# GerbView: Gerber File Viewer # {#v6_gerbview}
|
|
||||||
|
|
||||||
This section covers the source code for the GerbView gerber file viewer.
|
|
||||||
|
|
||||||
## Graphics Abstraction Layer ## {#v6_gerbview_gal}
|
|
||||||
**Goal:**
|
**Goal:**
|
||||||
|
|
||||||
Graphics rendering unification.
|
- Allow for anchor point setting and layer mapping support on DXF import and
|
||||||
|
export multiple board layers to a single DXF file.
|
||||||
|
|
||||||
**Task:**
|
**Task:**
|
||||||
- Port graphics rendering layer to GAL.
|
- Provide method to select DXF import anchor point.
|
||||||
|
- Add user interface to allow mapping DXF layers to board layers.
|
||||||
|
- Modify DXF plotting to export multiple layers to a single file.
|
||||||
|
|
||||||
|
**Dependencies:**
|
||||||
|
- None.
|
||||||
|
|
||||||
|
**Status:**
|
||||||
|
- No progress.
|
||||||
|
|
||||||
|
## Improve Dimension Tool ## {#v6_pcb_dim_tool}
|
||||||
|
**Goal:**
|
||||||
|
|
||||||
|
Make dimensions link to objects and change when objects are modified and add
|
||||||
|
basic mechanical constraints.
|
||||||
|
|
||||||
|
**Task:**
|
||||||
|
- Add code to link dimension to objects.
|
||||||
|
- Add basic mechanical constraints like linear distance and angle.
|
||||||
|
|
||||||
|
**Dependencies:**
|
||||||
|
- None.
|
||||||
|
|
||||||
|
**Status:**
|
||||||
|
- In progress.
|
||||||
|
|
||||||
|
## Constraint Management System ## {#v6_pcb_constraint}
|
||||||
|
**Goal:**
|
||||||
|
|
||||||
|
Implement full featured constraint management system to allow for complex
|
||||||
|
board constraints instead of netclass only constraints.
|
||||||
|
|
||||||
|
**Task:**
|
||||||
|
- Write specification to define requirement of new constraint system.
|
||||||
|
- Implement new constraint system including file format changes.
|
||||||
|
- Allow constraints to be defined in schematic editor and passed to board
|
||||||
|
editor via netlist.
|
||||||
|
- Update netlist file format to support constraints.
|
||||||
|
- Update DRC to test new constraints.
|
||||||
|
|
||||||
**Dependencies:**
|
**Dependencies:**
|
||||||
- None.
|
- None.
|
||||||
|
|
||||||
**Status**
|
**Status**
|
||||||
|
- No Progress.
|
||||||
|
|
||||||
|
## Append Board in Project Mode ## {#v6_pcb_append}
|
||||||
|
**Goal:**
|
||||||
|
|
||||||
|
Allow appending to the board when running Pcbnew in the project mode.
|
||||||
|
|
||||||
|
**Task:**
|
||||||
|
- Enable append board feature in project mode.
|
||||||
|
- Extend copy/paste feature to introduce paste special tool to add prefix
|
||||||
|
and/or suffix to nets of pasted/appended objects.
|
||||||
|
|
||||||
|
**Dependencies:**
|
||||||
|
- None.
|
||||||
|
|
||||||
|
**Status:**
|
||||||
- No progress.
|
- No progress.
|
||||||
|
|
||||||
|
## Grid and Auxiliary Origin Improvements ## {#v6_pcb_origin}
|
||||||
|
**Goal:**
|
||||||
|
|
||||||
|
Allow reset grid and auxiliary origin without hotkey only. Add support to
|
||||||
|
make all coordinates relative to the plot origin.
|
||||||
|
|
||||||
|
**Task:**
|
||||||
|
- Add reset grid and auxiliary origin commands to menu entry and/or toolbar
|
||||||
|
button.
|
||||||
|
- Add code to dialogs to allow coordinates to be specified relative to the
|
||||||
|
plot origin.
|
||||||
|
|
||||||
|
**Dependencies:**
|
||||||
|
- None.
|
||||||
|
|
||||||
|
**Status:**
|
||||||
|
- Relative coordinate entry in progress.
|
||||||
|
|
||||||
|
## Addition Mechanical Layers ## {#v6_pcb_mech_layers}
|
||||||
|
**Goal:**
|
||||||
|
|
||||||
|
Add more mechanical layers.
|
||||||
|
|
||||||
|
**Task:**
|
||||||
|
- Add remaining mechanical layers for a total of 32.
|
||||||
|
|
||||||
|
**Dependencies:**
|
||||||
|
- None.
|
||||||
|
|
||||||
|
**Status:**
|
||||||
|
- No progress.
|
||||||
|
|
||||||
|
## Layer Renaming ## {#v6_pcb_layer_rename}
|
||||||
|
**Goal:**
|
||||||
|
|
||||||
|
Allow mechanical layers to be renamed.
|
||||||
|
|
||||||
|
**Task:**
|
||||||
|
- Quote layer names in file format to support any printable characters in
|
||||||
|
layer names.
|
||||||
|
- Add user interface to allow mechanical layers to be renamed.
|
||||||
|
|
||||||
|
**Dependencies:**
|
||||||
|
- None.
|
||||||
|
|
||||||
|
**Status:**
|
||||||
|
- Quoted layer names complete.
|
||||||
|
|
||||||
|
## Stable Python API ## {#v6_pcb_python_api}
|
||||||
|
**Goal:**
|
||||||
|
|
||||||
|
Create a Python wrapper to hide the SWIG generated API.
|
||||||
|
|
||||||
|
**Task:**
|
||||||
|
- Document new Python API.
|
||||||
|
- Write Python API.
|
||||||
|
|
||||||
|
**Dependencies:**
|
||||||
|
- None.
|
||||||
|
|
||||||
|
**Status:**
|
||||||
|
- Initial technical specification drafted.
|
||||||
|
|
||||||
|
## Track Refining ## {#v6_pcb_track_refine}
|
||||||
|
**Goal:**
|
||||||
|
|
||||||
|
Add support for teardrops and automatically updating length tuning
|
||||||
|
meandering.
|
||||||
|
|
||||||
|
**Task:**
|
||||||
|
- Draft specification for track refining.
|
||||||
|
- Implement support for teardrops.
|
||||||
|
- Implement support for changing tuned length meandering.
|
||||||
|
|
||||||
|
**Dependencies:**
|
||||||
|
- None.
|
||||||
|
|
||||||
|
**Status:**
|
||||||
|
- Initial technical specification drafted.
|
||||||
|
|
||||||
|
## Groups and Rooms ## {#v6_pcb_groups}
|
||||||
|
**Goal:**
|
||||||
|
|
||||||
|
Support grouping board objects into reusable snippets.
|
||||||
|
|
||||||
|
**Task:**
|
||||||
|
- Write design specification.
|
||||||
|
- Update board file format to support grouped objects.
|
||||||
|
- Add user interface code to support grouped board objects.
|
||||||
|
|
||||||
|
**Dependencies:**
|
||||||
|
- None.
|
||||||
|
|
||||||
|
**Status:**
|
||||||
|
- Initial technical specification drafted.
|
||||||
|
|
||||||
|
## Pad Stack Support ## {#v6_pcb_padstack}
|
||||||
|
**Goal:**
|
||||||
|
|
||||||
|
Add padstack support.
|
||||||
|
|
||||||
|
**Task:**
|
||||||
|
- Write pad stack design specification.
|
||||||
|
- Update board file format to support pad stacks.
|
||||||
|
- Add user interface code to support designing pad stack objects.
|
||||||
|
- Update push and shove router to handle pad stacks.
|
||||||
|
- Update zone filling to handle pad stacks.
|
||||||
|
- Update DRC to handle pad stacks.
|
||||||
|
|
||||||
|
**Dependencies:**
|
||||||
|
- None.
|
||||||
|
|
||||||
|
**Status:**
|
||||||
|
- Initial technical specification drafted.
|
||||||
|
|
||||||
|
## Net Ties ## {#v6_pcb_net_ties}
|
||||||
|
**Goal:**
|
||||||
|
|
||||||
|
Add support for net ties.
|
||||||
|
|
||||||
|
**Task:**
|
||||||
|
- Write net tie design specification.
|
||||||
|
- Implement board file support for net ties.
|
||||||
|
- Implement schematic file support for net ties.
|
||||||
|
- Update ERC and DRC to handle net ties.
|
||||||
|
- Update netlist to pass net tie information from schematic to board.
|
||||||
|
- Add user interface support for net ties to editors.
|
||||||
|
|
||||||
|
**Dependencies:**
|
||||||
|
- [S-Expression File Format](#v6_sch_sexpr).
|
||||||
|
|
||||||
|
**Status:**
|
||||||
|
- No Progress.
|
||||||
|
|
||||||
|
## Anti-pad Improvements ## {#v6_pcb_anti_pad}
|
||||||
|
**Goal:**
|
||||||
|
|
||||||
|
Use anti-pads on vias and through hold pads on internal layers as required.
|
||||||
|
|
||||||
|
**Task:**-
|
||||||
|
- Revise zone filling algorithm to create anti-pad on internal layers.
|
||||||
|
|
||||||
|
**Dependencies:**
|
||||||
|
- None.
|
||||||
|
|
||||||
|
**Status:**
|
||||||
|
- No Progress.
|
||||||
|
|
||||||
|
## Thermal Relief Improvements ## {#v6_pcb_thermal_relief}
|
||||||
|
**Goal:**
|
||||||
|
|
||||||
|
Allow for custom thermal reliefs in zones and custom pad shapes.
|
||||||
|
|
||||||
|
**Task:**-
|
||||||
|
- Write technical specification to define requirements, alternate unions,
|
||||||
|
knockouts, union spokes, etc.
|
||||||
|
- Revise zone filling thermal relief support to handle new requirements.
|
||||||
|
- Update board file format for new thermal relief requirements.
|
||||||
|
- Add user interface support for thermal relief definitions.
|
||||||
|
|
||||||
|
**Dependencies:**
|
||||||
|
- None.
|
||||||
|
|
||||||
|
**Status:**
|
||||||
|
- No Progress.
|
||||||
|
|
||||||
|
## Merge KiCad2Step ## {#v6_pcb_kicad2step}
|
||||||
|
**Goal:**
|
||||||
|
|
||||||
|
Merge export to STEP file code from KiCad2Step so that conversion does
|
||||||
|
not run in a separate process.
|
||||||
|
|
||||||
|
**Task:**-
|
||||||
|
- Merge KiCad2Step code into Pcbnew code base.
|
||||||
|
- Remove unused parser code.
|
||||||
|
|
||||||
|
**Dependencies:**
|
||||||
|
- None.
|
||||||
|
|
||||||
|
**Status:**
|
||||||
|
- No Progress.
|
||||||
|
|
||||||
|
## 3D Model Improvements ## {#v6_pcb_3d_model_opacity}
|
||||||
|
**Goal:**
|
||||||
|
|
||||||
|
Add opacity to 3D model support and convert from path look up to library
|
||||||
|
table to access 3D models.
|
||||||
|
|
||||||
|
**Task:**-
|
||||||
|
- Add opacity support to footprint library file format.
|
||||||
|
- Add library table 3D model support to footprint library file format.
|
||||||
|
- Create remapping utility to map from path look up to library table look up.
|
||||||
|
- Add user interface support for 3D model opacity.
|
||||||
|
- Add user interface support accessing 3D models via library table.
|
||||||
|
|
||||||
|
**Dependencies:**
|
||||||
|
- None.
|
||||||
|
|
||||||
|
**Status:**
|
||||||
|
- No Progress.
|
||||||
|
|
||||||
|
## IPC-2581 Support ## {#v6_pcb_ipc_2581}
|
||||||
|
**Goal:**
|
||||||
|
|
||||||
|
Add support for exporting to and importing from IPC-2581.
|
||||||
|
|
||||||
|
**Task:**-
|
||||||
|
- Add IPC-2581 export code.
|
||||||
|
- Add IPC-2581 import code.
|
||||||
|
|
||||||
|
**Dependencies:**
|
||||||
|
- None.
|
||||||
|
|
||||||
|
**Status:**
|
||||||
|
- No Progress.
|
||||||
|
|
||||||
|
## Curved Trace Support ## {#v6_pcb}
|
||||||
|
**Goal:**
|
||||||
|
|
||||||
|
Add curved trace support to the board editor.
|
||||||
|
|
||||||
|
**Task:**-
|
||||||
|
- Add curved trace support to track object code.
|
||||||
|
- Add support to board file format for curved traces.
|
||||||
|
- Update zone fill algorithm to support curved fills.
|
||||||
|
- Update router to support curved traces.
|
||||||
|
- Update DRC to handle curved traces and fills.
|
||||||
|
|
||||||
|
**Dependencies:**
|
||||||
|
- None.
|
||||||
|
|
||||||
|
**Status:**
|
||||||
|
- No Progress.
|
||||||
|
|
||||||
|
|
||||||
|
# GerbView: Gerber File Viewer # {#v6_gerbview}
|
||||||
|
|
||||||
|
This section covers the source code for the GerbView gerber file viewer.
|
||||||
|
|
|
@ -3,14 +3,16 @@
|
||||||
This document is the KiCad Developer's road map document. It is a living
|
This document is the KiCad Developer's road map document. It is a living
|
||||||
document that should be maintained as the project progresses. The goal of
|
document that should be maintained as the project progresses. The goal of
|
||||||
this document is to provide an overview for developers of where the project
|
this document is to provide an overview for developers of where the project
|
||||||
is headed to prevent resource conflicts and endless rehashing of previously
|
is headed beyond the current development cycle road map (currently
|
||||||
discussed topics. It is broken into sections for each major component of
|
[version 6](./v6_road_map.html) to prevent resource conflicts and endless
|
||||||
the KiCad source code and documentation. It defines tasks that developers
|
rehashing of previously discussed topics. It is broken into sections for
|
||||||
an use to contribute to the project and provides updated status information.
|
each major component of the KiCad source code and documentation. It defines
|
||||||
Tasks should define clear objective and avoid vague generalizations so that
|
tasks that developers an use to contribute to the project and provides updated
|
||||||
a new developer can complete the task. It is not a place for developers to
|
status information. Tasks should define clear objectives and avoid vague
|
||||||
add their own personal wish list It should only be updated with approval
|
generalizations so that a new developer can complete the task. It is not a
|
||||||
of the project manager after discussion with the lead developers.
|
place for developers to add their own personal wish list It should only be
|
||||||
|
updated with approval of the project manager after discussion with the lead
|
||||||
|
developers.
|
||||||
|
|
||||||
Each entry in the road map is made up of four sections. The goal should
|
Each entry in the road map is made up of four sections. The goal should
|
||||||
be a brief description of the what the road map entry will accomplish. The
|
be a brief description of the what the road map entry will accomplish. The
|
||||||
|
@ -34,59 +36,16 @@ This section defines the tasks that affect all or most of KiCad or do not
|
||||||
fit under as specific part of the code such as the board editor or the
|
fit under as specific part of the code such as the board editor or the
|
||||||
schematic editor.
|
schematic editor.
|
||||||
|
|
||||||
## User Interface Modernization ## {#wxaui}
|
|
||||||
**Goal:**
|
|
||||||
|
|
||||||
Give KiCad a more modern user interface with dockable tool bars and windows.
|
|
||||||
Create perspectives to allow users to arrange dockable windows as they prefer.
|
|
||||||
|
|
||||||
**Task:**
|
|
||||||
- Take advantage of the advanced UI features in wxAui such as detaching and
|
|
||||||
hiding.
|
|
||||||
- Study ergonomics of various commercial/proprietary PCB applications (when
|
|
||||||
in doubt about any particular UI solution, check how it has been done in a
|
|
||||||
certain proprietary app that is very popular among OSHW folks and do exactly
|
|
||||||
opposite).
|
|
||||||
- Clean up menu structure. Menus must allow access to all features of the
|
|
||||||
program in a clear and logical way. Currently some functions of Pcbnew are
|
|
||||||
accessible only through tool bars
|
|
||||||
- Redesign dialogs, make sure they are following same style rules.
|
|
||||||
- Check quality of translations. Either fix or remove bad quality translations.
|
|
||||||
- Develop a global shortcut manager that allows the user assign arbitrary
|
|
||||||
shortcuts for any tool or action.
|
|
||||||
|
|
||||||
**Dependencies:**
|
|
||||||
- [wxWidgets 3](#wxwidgets3)
|
|
||||||
|
|
||||||
**Status:**
|
|
||||||
- No progress.
|
|
||||||
|
|
||||||
|
|
||||||
# Build Tools # {#build_tools}
|
# Build Tools # {#build_tools}
|
||||||
This section covers build tools for both the KiCad source as well as the
|
This section covers build tools for both the KiCad source as well as the
|
||||||
custom dependency builds required to build KiCad.
|
custom dependency builds required to build KiCad.
|
||||||
|
|
||||||
|
|
||||||
# Common Library # {#common_lib}
|
# Common Library # {#common_lib}
|
||||||
This section covers the source code shared between all of the KiCad
|
This section covers the source code shared between all of the KiCad
|
||||||
applications
|
applications
|
||||||
|
|
||||||
## Unified Rendering Framework ## {#unified_rendering}
|
|
||||||
**Goal:**
|
|
||||||
|
|
||||||
Provide a single framework for developing new tools. Port existing tools
|
|
||||||
to the new framework and remove the legacy framework tools.
|
|
||||||
|
|
||||||
**Task:**
|
|
||||||
- Port wxDC to GAL or get Cairo rendering to nearly the performance of the
|
|
||||||
current wxDC rendering so that we have a single framework to develop new
|
|
||||||
tools and we can continue to support systems that don't have a complete
|
|
||||||
OpenGL stack.
|
|
||||||
|
|
||||||
**Dependencies**
|
|
||||||
- [Tool framework](http://www.ohwr.org/projects/cern-kicad/wiki/WorkPackages)
|
|
||||||
|
|
||||||
**Status**
|
|
||||||
- No progress
|
|
||||||
|
|
||||||
# KiCad: Application Launcher # {#kicad}
|
# KiCad: Application Launcher # {#kicad}
|
||||||
This section applies to the source code for the KiCad application launcher.
|
This section applies to the source code for the KiCad application launcher.
|
||||||
|
@ -95,277 +54,19 @@ This section applies to the source code for the KiCad application launcher.
|
||||||
# Eeschema: Schematic Editor # {#eeschema}
|
# Eeschema: Schematic Editor # {#eeschema}
|
||||||
This section applies to the source code for the Eeschema schematic editor.
|
This section applies to the source code for the Eeschema schematic editor.
|
||||||
|
|
||||||
## Graphics Abstraction Layer Conversion ## {#sch_gal}
|
|
||||||
**Goal:**
|
|
||||||
|
|
||||||
Take advantage of advanced graphics rendering in Eeschema.
|
|
||||||
|
|
||||||
**Task:**
|
|
||||||
- Port graphics rendering to GAL.
|
|
||||||
|
|
||||||
**Dependencies:**
|
|
||||||
- None
|
|
||||||
|
|
||||||
**Status:**
|
|
||||||
- No progress.
|
|
||||||
|
|
||||||
## Port Editing Tools ## {#sch_tool_framework}
|
|
||||||
**Goal:**
|
|
||||||
|
|
||||||
Use standard tool framework across all applications.
|
|
||||||
|
|
||||||
**Task:**
|
|
||||||
- Rewrite editing tools using the new tool framework.
|
|
||||||
|
|
||||||
**Dependencies:**
|
|
||||||
- [GAL port](#sch_gal).
|
|
||||||
|
|
||||||
**Status:**
|
|
||||||
- No progress.
|
|
||||||
|
|
||||||
## Allow Use of System Fonts ## {#sch_sys_fonts}
|
|
||||||
**Goal:**
|
|
||||||
|
|
||||||
Currently the schematic editor uses the stroke drawn fonts which aren't really
|
|
||||||
necessary for accurated printing of schematics. Allow the use of system fonts
|
|
||||||
for schematic text.
|
|
||||||
|
|
||||||
**Task:**
|
|
||||||
- Determine which library for font handling makes the most sense, wxWidgets or
|
|
||||||
freetype.
|
|
||||||
- Add support for selecting text object fonts.
|
|
||||||
|
|
||||||
**Dependencies:**
|
|
||||||
- [S-expression schematic file format](#sch_sexpr).
|
|
||||||
|
|
||||||
**Status:**
|
|
||||||
- No progress.
|
|
||||||
|
|
||||||
# CvPcb: Footprint Association Tool # {#cvpcb}
|
# CvPcb: Footprint Association Tool # {#cvpcb}
|
||||||
This section covers the source code of the footprint assignment tool CvPcb.
|
This section covers the source code of the footprint assignment tool CvPcb.
|
||||||
|
|
||||||
|
|
||||||
# Pcbnew: Circuit Board Editor # {#pcbnew}
|
# Pcbnew: Circuit Board Editor # {#pcbnew}
|
||||||
This section covers the source code of the board editing application Pcbnew.
|
This section covers the source code of the board editing application Pcbnew.
|
||||||
|
|
||||||
## Model Export ## {#model_export}
|
|
||||||
|
|
||||||
**Goal:**
|
|
||||||
|
|
||||||
Provide improved solid modeling export to the file formats available in
|
|
||||||
OpenCascade.
|
|
||||||
|
|
||||||
**Task:**
|
|
||||||
- Add STEP 3D modeling capability.
|
|
||||||
- Add IGES 3D modeling capability.
|
|
||||||
- Add any other file formats supported by OpenCascade that make sense for
|
|
||||||
KiCad.
|
|
||||||
|
|
||||||
**Dependencies:**
|
|
||||||
- None
|
|
||||||
|
|
||||||
**Status:**
|
|
||||||
- None
|
|
||||||
|
|
||||||
## Linked Objects ## {#pcb_linked_objects}
|
|
||||||
**Goal:**
|
|
||||||
|
|
||||||
Provide a way to allow external objects such as footprints to be externally
|
|
||||||
linked in the board file so that changes in the footprint are automatically
|
|
||||||
updated. This will all a one to many object relationship which can pave the
|
|
||||||
way for real board modules.
|
|
||||||
|
|
||||||
**Task:**
|
|
||||||
- Add externally and internally linked objects to the file format to allow for
|
|
||||||
footprints and/or other board objects to be shared (one to many relationship)
|
|
||||||
instead of only supporting embedded objects (one to one relationship) that
|
|
||||||
can only be edited in place.
|
|
||||||
|
|
||||||
**Dependencies:**
|
|
||||||
- None.
|
|
||||||
|
|
||||||
**Status:**
|
|
||||||
- No progress.
|
|
||||||
|
|
||||||
## Pin and Part Swapping ## {#pcb_drc}
|
|
||||||
**Goal:**
|
|
||||||
|
|
||||||
Allow Pcbnew to perform pin and/or part swapping during layout so the user
|
|
||||||
does not have to do it in Eeschema and re-import the net list.
|
|
||||||
|
|
||||||
**Task:**
|
|
||||||
- Provide forward and back annotation between the schematic and board editors.
|
|
||||||
- Define netlist file format changes required to handle pin/part swapping.
|
|
||||||
- Update netlist file formatter and parser to handle file format changes.
|
|
||||||
- Develop a netlist comparison engine that will produce a netlist diff that
|
|
||||||
can be passed between the schematic and board editors.
|
|
||||||
- Create pin/part swap dialog to manipulate swappable pins and parts.
|
|
||||||
- Add support to handle net label back annotation changes.
|
|
||||||
|
|
||||||
**Dependencies:**
|
|
||||||
- [S-expression schematic file format](#sch_sexpr).
|
|
||||||
- [Convert to a single process application](#kiway).
|
|
||||||
|
|
||||||
**Status:**
|
|
||||||
- No progress.
|
|
||||||
|
|
||||||
## Clipboard Support ## {#fp_edit_clipboard}
|
|
||||||
**Goal:**
|
|
||||||
|
|
||||||
Provide clipboard cut and paste for footprints..
|
|
||||||
|
|
||||||
**Task:**
|
|
||||||
- Clipboard cut and paste to and from clipboard of footprints in footprint
|
|
||||||
editor.
|
|
||||||
|
|
||||||
**Dependencies:**
|
|
||||||
- None
|
|
||||||
|
|
||||||
**Status:**
|
|
||||||
- No progress.
|
|
||||||
|
|
||||||
## Segment End Point Snapping. ## {#segment_snapping}
|
|
||||||
**Goal:**
|
|
||||||
|
|
||||||
It is not uncommon for board edge segment end points to inadvertently not
|
|
||||||
be closed causing issues for the 3D viewer and exporting to different file
|
|
||||||
formats due the board outline not being a fully enclosed polygon. This
|
|
||||||
feature would add segment end snapping support to allow the board outline
|
|
||||||
to be fully enclosed. This feature would only need to be supported by the
|
|
||||||
GAL rendering.
|
|
||||||
|
|
||||||
**Tasks**
|
|
||||||
- Mark board edge segment ends with a drag indicator to make it visible to the
|
|
||||||
user that the segment end does not have an endpoint with any other board edge
|
|
||||||
segment.
|
|
||||||
- Allow the user to smap the unconnected segment end to the nearest segment end
|
|
||||||
point.
|
|
||||||
- Automatically connect unconnected segments with and additional segment when
|
|
||||||
opening the 3D viewer or exporting the board to another format. Warn the
|
|
||||||
user that an addition segment has be added and should be verified.
|
|
||||||
|
|
||||||
**Dependencies:**
|
|
||||||
- None
|
|
||||||
|
|
||||||
**Progress:**
|
|
||||||
- Initial discussion.
|
|
||||||
|
|
||||||
## Keepout Zones. ## {#keepout_zones}
|
|
||||||
**Goal:**
|
|
||||||
|
|
||||||
Add support for keepout zones on boards and footprints.
|
|
||||||
|
|
||||||
**Task:**
|
|
||||||
- Add keepout support to zone classes.
|
|
||||||
- Add keepout zone support to board editor.
|
|
||||||
- Add keepout zone support to library editor.
|
|
||||||
|
|
||||||
**Dependencies:**
|
|
||||||
- [DRC Improvements.](#drc_improvements)
|
|
||||||
|
|
||||||
**Progress:**
|
|
||||||
- Planning
|
|
||||||
|
|
||||||
|
|
||||||
## Net Highlighting ## {#pcb_net_highlight}
|
|
||||||
**Goal:**
|
|
||||||
|
|
||||||
Highlight rats nest links and/or traces when corresponding net in Eeschema is selected.
|
|
||||||
|
|
||||||
**Task:**
|
|
||||||
- Add communications link to handle net selection from Eeschema.
|
|
||||||
- Implement highlight algorithm for objects connected to the selected net.
|
|
||||||
- Highlight objects connected to net selected in Eeschema
|
|
||||||
|
|
||||||
**Dependencies:**
|
|
||||||
- None.
|
|
||||||
|
|
||||||
**Status:**
|
|
||||||
- No progress.
|
|
||||||
|
|
||||||
## Hatched Zone Filling ## {#pcb_hatched_zones}
|
|
||||||
**Goal:**
|
|
||||||
|
|
||||||
Currently Pcbnew only supports solid zone files. Add option to fill zones
|
|
||||||
with hatching.
|
|
||||||
|
|
||||||
**Task:**
|
|
||||||
- Determine zone fill method, required filling code, and file format requirements.
|
|
||||||
- Add hatch option and hatch configuration to zone dialog.
|
|
||||||
|
|
||||||
**Dependencies:**
|
|
||||||
- None.
|
|
||||||
|
|
||||||
**Status:**
|
|
||||||
- No progress.
|
|
||||||
|
|
||||||
|
|
||||||
## Board Stack Up Impedance Calculator ## {#pcb_impedance_calc}
|
|
||||||
**Goal:**
|
|
||||||
|
|
||||||
Provide a calculator to compute trace impedances using a full board stackup.
|
|
||||||
Maybe this should be included in the PCB calculator application.
|
|
||||||
|
|
||||||
**Task:**
|
|
||||||
- Design a trace impedance calculator that includes full board stackup.
|
|
||||||
|
|
||||||
**Dependencies:**
|
|
||||||
- None.
|
|
||||||
|
|
||||||
**Status:**
|
|
||||||
- No progress.
|
|
||||||
|
|
||||||
## Net Class Improvements ## {#pcb_net_class_improvements}
|
|
||||||
**Goal:**
|
|
||||||
|
|
||||||
Add support for route impedance, color selection, etc in net class object.
|
|
||||||
|
|
||||||
**Task:**
|
|
||||||
- Determine parameters to add to net class object.
|
|
||||||
- Implement file parser and formatter changes to support net class object
|
|
||||||
changes.
|
|
||||||
- Implement tools to work with new net class parameters.
|
|
||||||
- Create UI elements to configure new net class parameters.
|
|
||||||
- Update the render tab UI code to view traces by net class.
|
|
||||||
|
|
||||||
**Dependencies:**
|
|
||||||
- None.
|
|
||||||
|
|
||||||
**Status:**
|
|
||||||
- No progress.
|
|
||||||
|
|
||||||
## Ratsnest Improvements ## {#pcb_ratsnest_improvements}
|
|
||||||
**Goal:**
|
|
||||||
|
|
||||||
Add support for per net color and visibility settings.
|
|
||||||
|
|
||||||
**Task:**
|
|
||||||
- Implement UI code to configure ratsnest color and visibility.
|
|
||||||
- Update ratsnest code to handle per net color and visibility.
|
|
||||||
|
|
||||||
**Dependencies:**
|
|
||||||
- None.
|
|
||||||
|
|
||||||
**Status:**
|
|
||||||
- No progress.
|
|
||||||
|
|
||||||
|
|
||||||
# GerbView: Gerber File Viewer # {#gerbview}
|
# GerbView: Gerber File Viewer # {#gerbview}
|
||||||
|
|
||||||
This section covers the source code for the GerbView gerber file viewer.
|
This section covers the source code for the GerbView gerber file viewer.
|
||||||
|
|
||||||
## Graphics Abstraction Layer ## {#gerbview_gal}
|
|
||||||
**Goal:**
|
|
||||||
|
|
||||||
Graphics rendering unification.
|
|
||||||
|
|
||||||
**Task:**
|
|
||||||
- Port graphics rendering layer to GAL.
|
|
||||||
|
|
||||||
**Dependencies:**
|
|
||||||
- None.
|
|
||||||
|
|
||||||
**Status**
|
|
||||||
- No progress.
|
|
||||||
|
|
||||||
# Documentation # {#documentation}
|
# Documentation # {#documentation}
|
||||||
This section defines the tasks for both the user and developer documentation.
|
This section defines the tasks for both the user and developer documentation.
|
||||||
|
@ -380,6 +81,7 @@ This section defines the tasks for both the user and developer documentation.
|
||||||
**Status:**
|
**Status:**
|
||||||
- No progress.
|
- No progress.
|
||||||
|
|
||||||
|
|
||||||
# Unit Testing # {#unittest}
|
# Unit Testing # {#unittest}
|
||||||
**Goal:**
|
**Goal:**
|
||||||
|
|
||||||
|
|
|
@ -105,18 +105,18 @@ The major parts of tool's implementation are the functions used by the
|
||||||
when the GAL canvas is switched, and also just after tool registration.
|
when the GAL canvas is switched, and also just after tool registration.
|
||||||
Any resource claimed from the GAL view or the model must be released
|
Any resource claimed from the GAL view or the model must be released
|
||||||
in this function, as they could become invalid.
|
in this function, as they could become invalid.
|
||||||
* `SetTransitions()` function, which maps tool actions to functions
|
* `setTransitions()` function, which maps tool actions to functions
|
||||||
within the tool class.
|
within the tool class.
|
||||||
* One or more functions to call when actions are invoked. Many actions
|
* One or more functions to call when actions are invoked. Many actions
|
||||||
can invoke the same function if desired. The functions have the
|
can invoke the same function if desired. The functions have the
|
||||||
following signature:
|
following signature:
|
||||||
* int TOOL_CLASS::FunctionName( const TOOL_EVENT& aEvent )
|
* int TOOL_CLASS::FunctionName( const TOOL_EVENT& aEvent )
|
||||||
* Returning 0 means success.
|
* Returning 0 means success.
|
||||||
* These functions are called by the `TOOL_MANAGER` in case an associated
|
* These functions are called by the `TOOL_MANAGER` in case an associated
|
||||||
event arrives (association is created with TOOL_INTERACTIVE::Go() function).
|
event arrives (association is created with TOOL_INTERACTIVE::Go() function).
|
||||||
* These can generally be private, as they are not called directly
|
* These can generally be private, as they are not called directly
|
||||||
by any other code, but are invoked by the tool manager's coroutine
|
by any other code, but are invoked by the tool manager's coroutine
|
||||||
framework according to the `SetTransitions()` map.
|
framework according to the `setTransitions()` map.
|
||||||
|
|
||||||
### Interactive actions {#interactive-actions}
|
### Interactive actions {#interactive-actions}
|
||||||
|
|
||||||
|
@ -171,7 +171,7 @@ provide their own context menu. Tools that are called only from other
|
||||||
tools' interactive modes add their menu items to those tools' menus.
|
tools' interactive modes add their menu items to those tools' menus.
|
||||||
|
|
||||||
To use a `TOOL_MENU` in a top level tool, simply add one as a member
|
To use a `TOOL_MENU` in a top level tool, simply add one as a member
|
||||||
and initialise it with a reference to the tools at construction time:
|
and initialize it with a reference to the tools at construction time:
|
||||||
|
|
||||||
TOOL_NAME: public PCB_TOOL
|
TOOL_NAME: public PCB_TOOL
|
||||||
{
|
{
|
||||||
|
@ -215,7 +215,7 @@ The procedure of a commit is:
|
||||||
unless you are going to abort the commit.
|
unless you are going to abort the commit.
|
||||||
* When removing an item, call `Remove( item )`. You should not delete the
|
* When removing an item, call `Remove( item )`. You should not delete the
|
||||||
removed item, it will be stored in the undo buffer.
|
removed item, it will be stored in the undo buffer.
|
||||||
* Finalise the commit with `Push( "Description" )`. If you performed
|
* Finalize the commit with `Push( "Description" )`. If you performed
|
||||||
no modifications, additions or removals, this is a no-op, so you
|
no modifications, additions or removals, this is a no-op, so you
|
||||||
don't need to check if you made any changes before pushing.
|
don't need to check if you made any changes before pushing.
|
||||||
|
|
||||||
|
@ -284,7 +284,7 @@ In `pcbnew/tools/pcb_actions.h`, we add the following to the
|
||||||
static TOOL_ACTION uselessFixedCircle;
|
static TOOL_ACTION uselessFixedCircle;
|
||||||
|
|
||||||
Definitions of actions generally happen in the .cpp of the relevant tool.
|
Definitions of actions generally happen in the .cpp of the relevant tool.
|
||||||
It doesn't actually matter where the defintion occurs (the declaration
|
It doesn't actually matter where the definition occurs (the declaration
|
||||||
is enough to use the action), as long as it's linked in the end.
|
is enough to use the action), as long as it's linked in the end.
|
||||||
Similar tools should always be defined together.
|
Similar tools should always be defined together.
|
||||||
|
|
||||||
|
@ -337,11 +337,11 @@ the following class:
|
||||||
///> React to model/view changes
|
///> React to model/view changes
|
||||||
void Reset( RESET_REASON aReason ) override;
|
void Reset( RESET_REASON aReason ) override;
|
||||||
|
|
||||||
///> Basic initalization
|
///> Basic initialization
|
||||||
bool Init() override;
|
bool Init() override;
|
||||||
|
|
||||||
///> Bind handlers to corresponding TOOL_ACTIONs
|
///> Bind handlers to corresponding TOOL_ACTIONs
|
||||||
void SetTransitions() override;
|
void setTransitions() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
///> 'Move selected left' interactive tool
|
///> 'Move selected left' interactive tool
|
||||||
|
@ -392,7 +392,7 @@ Below you will find the contents of useless_tool.cpp:
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Tool-specific action defintions
|
* Tool-specific action definitions
|
||||||
*/
|
*/
|
||||||
TOOL_ACTION PCB_ACTIONS::uselessMoveItemLeft(
|
TOOL_ACTION PCB_ACTIONS::uselessMoveItemLeft(
|
||||||
"pcbnew.UselessTool.MoveItemLeft",
|
"pcbnew.UselessTool.MoveItemLeft",
|
||||||
|
@ -443,7 +443,7 @@ Below you will find the contents of useless_tool.cpp:
|
||||||
void USELESS_TOOL::moveLeftInt()
|
void USELESS_TOOL::moveLeftInt()
|
||||||
{
|
{
|
||||||
// we will call actions on the selection tool to get the current
|
// we will call actions on the selection tool to get the current
|
||||||
// selection. The selection tools will handle item deisambiguation
|
// selection. The selection tools will handle item disambiguation
|
||||||
SELECTION_TOOL* selectionTool = m_toolMgr->GetTool<SELECTION_TOOL>();
|
SELECTION_TOOL* selectionTool = m_toolMgr->GetTool<SELECTION_TOOL>();
|
||||||
assert( selectionTool );
|
assert( selectionTool );
|
||||||
|
|
||||||
|
@ -535,7 +535,7 @@ Below you will find the contents of useless_tool.cpp:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void USELESS_TOOL::SetTransitions()
|
void USELESS_TOOL::setTransitions()
|
||||||
{
|
{
|
||||||
Go( &USELESS_TOOL::fixedCircle, PCB_ACTIONS::uselessFixedCircle.MakeEvent() );
|
Go( &USELESS_TOOL::fixedCircle, PCB_ACTIONS::uselessFixedCircle.MakeEvent() );
|
||||||
Go( &USELESS_TOOL::moveLeft, PCB_ACTIONS::uselessMoveItemLeft.MakeEvent() );
|
Go( &USELESS_TOOL::moveLeft, PCB_ACTIONS::uselessMoveItemLeft.MakeEvent() );
|
||||||
|
|
Loading…
Reference in New Issue