kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #31310
Re: [RFC] pcbnew internals refactoring for testing
Tom,
I fine with all of this except the boost option change. Copying the
boost files into the KiCad source is not really removing boost. Why not
just create a simple header that includes the boost option header and
your OPT() macro. Wouldn't this work just as well when we transition to
C++17? Boost isn't going away any time soon so I see no advantage to
copying boost code into KiCad.
Cheers,
Wayne
On 11/1/2017 6:58 PM, Tomasz Wlostowski wrote:
> Hi all,
>
> Here's a patch set [1] that refactors some internal PCBnew stuff (mostly
> GAL & tool framework related), focusing on testability. The goal is to
> be able to use the BOARD class, GAL view and tools without the
> GUI-related code for the purpose of developing automated tests and
> easier development of new tools, which could be then tested outside
> pcbnew environment.
>
>
> The changes include:
> - replaced boost::optional with leaner STL-based implementation
> - replace CLASS_MIRE with CLASS_PCB_TARGET for naming clarity
> - implemented SELECTION_TOOL's own GetCollectorsGuide() to avoid
> dependency on PCB_BASE_FRAME
> - implemented BOARD-specific view Add()/Remove()/Update() methods in
> PCB_VIEW, moved to libpcbcommon
> - split BOARD_ITEM::SwapData to use polymorphic per-item methods
> - remove PNS router dependency on PCB_EDIT_FRAME
> - make BOARD_COMMIT independent from pcbnew
> - remove link-time dependency between PCB_BASE_FRAME and EDA_3D_VIEWER
> - allow to run TOOL_MANAGER and SELECTION_TOOL without a host wxFrame
> - moved BOARD_COMMIT, PCB_GENERAL_SETTINGS and
> TransformShapeWithClearanceToPolygon() to libpcbcommon
> - replaced manual plugin registration with link-time plugin binding
> - derive PCB-specific PCB_VIEW from VIEW with the intention of moving
> PCB_EDIT_FRAME entries used by the tools (e.g. GetActiveLayer) there
> - renamed pcbstruct.h to pcb_display_options.h,
> DISPLAY_OPTIONS->PCB_DISPLAY_OPTIONS
> - removed dependency of libpcbcommon on 3d-viewer.
>
> After these changes, one can use a PCB GAL canvas with any GAL tools in
> a simple test program. I included an example in qa/pcb_test_window.
> I'm considering this approach for the development of eeschema's GAL
> support: - factoring out schematic model code independent from
> eeschema's current GUI
> - implement sch painter/view
> - implement the tools
> - merge when done.
>
> Let me know what you think about these patches (test builds will be
> greatly appreciated!). I would like to merge them as soon as possible to
> avoid tedious rebasing.
>
> Cheers
> Tom
>
> [1] https://github.com/twlostow/kicad-dev/tree/tom-refactor-oct31-rebase
>
> _______________________________________________
> Mailing list: https://launchpad.net/~kicad-developers
> Post to : kicad-developers@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~kicad-developers
> More help : https://help.launchpad.net/ListHelp
>
Follow ups
References