kicad/pcbnew/router
Jeff Young 2f23aa9556 Implement a more robust tool stacking architecture.
We were running into various corner conditions where a tool's event
loop would exit while the tool was still active, or the tool would
get popped while we were still in the event loop.  (A lot of these
had to do with the POINT_EDITOR's, but not all of them.)

The new architecture:
1) tools always do a Push()/Pop()
2) everyone is responsible for their own pops; no more stack-clearing
on a cancel
3) CancelInteractive events go to all tools to facilitate (2)
2019-06-27 17:01:31 +01:00
..
CMakeLists.txt router: copy m_maxClearance when cloning/branching PNS::NODEs 2019-04-23 12:00:54 +02:00
length_tuner_tool.cpp Implement a more robust tool stacking architecture. 2019-06-27 17:01:31 +01:00
length_tuner_tool.h Immediate actions for PlEditor, PcbNew, etc. 2019-06-25 11:34:28 +01:00
pns_algo_base.cpp Remove PNS_ prefix from most types inside namespace PNS 2016-09-06 16:06:06 +02:00
pns_algo_base.h Coverity fixes 2017-03-11 22:20:08 +01:00
pns_debug_decorator.h Remove PNS_ prefix from most types inside namespace PNS 2016-09-06 16:06:06 +02:00
pns_diff_pair.cpp router: DP_GATEWAYS::FilterByOrientation() should have exactly opposite filtering condition! 2018-10-18 14:29:19 +02:00
pns_diff_pair.h Fix unnecessary value parameter detected by clang-tidy. - Replace value parameter by const reference parameter or move-assignement in some cases 2018-01-09 18:55:51 -05:00
pns_diff_pair_placer.cpp router: Take track width in dp from dp 2019-02-04 03:48:08 +01:00
pns_diff_pair_placer.h router: allow placing tracks/diff pairs without continuing routing by Shift+L-Click 2018-06-19 19:30:03 +02:00
pns_dp_meander_placer.cpp router: don't cross DP lines when length tuning, fix swap pair polarity bug 2018-10-18 13:48:43 +02:00
pns_dp_meander_placer.h router: don't cross DP lines when length tuning, fix swap pair polarity bug 2018-10-18 13:48:43 +02:00
pns_dragger.cpp pcbnew: Do not allow drag to violate DRC without permission 2018-09-27 13:08:22 -07:00
pns_dragger.h Few improvements to the GAL router: 2017-08-07 14:28:46 +02:00
pns_index.cpp router: copy m_maxClearance when cloning/branching PNS::NODEs 2019-04-23 12:00:54 +02:00
pns_index.h router: copy m_maxClearance when cloning/branching PNS::NODEs 2019-04-23 12:00:54 +02:00
pns_item.cpp router: treat negative net indices as always colliding 2018-02-17 18:25:20 +01:00
pns_item.h router: don't create incorrect non-45 degree connections when routing a track that doesn't have a net assigned 2019-02-03 12:37:27 +01:00
pns_itemset.cpp Remove PNS_ prefix from most types inside namespace PNS 2016-09-06 16:06:06 +02:00
pns_itemset.h Code cleanup: Fixing assignment operators 2018-09-20 20:15:47 -07:00
pns_joint.h Revert "pcbnew: Adding copy constructors to PNS items" 2018-10-09 14:50:20 -07:00
pns_kicad_iface.cpp pcbnew: Move pads to std::deque 2019-06-01 16:23:54 -07:00
pns_kicad_iface.h Insert EE_TOOL_BASE under SchEdit and LibEdit tools, and fix errant rename scope which clobbered PCBNew's PICKER_TOOL. 2019-05-12 13:47:08 +01:00
pns_layerset.h Code cleanup: Fixing assignment operators 2018-09-20 20:15:47 -07:00
pns_line.cpp router: correct walkaround corner case when both ends of the line lie on the hull edge 2019-02-03 11:22:18 +01:00
pns_line.h Code cleanup: Fixing assignment operators 2018-09-20 20:15:47 -07:00
pns_line_placer.cpp pcbnew: Allow DRC violations when marked 2019-06-09 13:03:08 -07:00
pns_line_placer.h router: allow placing tracks/diff pairs without continuing routing by Shift+L-Click 2018-06-19 19:30:03 +02:00
pns_logger.cpp Setting custom pad shape to be outline for PNS 2018-05-04 08:23:20 -07:00
pns_logger.h Fix unnecessary value parameter detected by clang-tidy. - Replace value parameter by const reference parameter or move-assignement in some cases 2018-01-09 18:55:51 -05:00
pns_meander.cpp Fix a bug in how we check for differential pair tuning. 2018-05-21 13:49:40 +01:00
pns_meander.h Remove PNS_ prefix from most types inside namespace PNS 2016-09-06 16:06:06 +02:00
pns_meander_placer.cpp Eradicate g_userUnit from router. 2018-07-17 15:12:26 +01:00
pns_meander_placer.h Eradicate g_userUnit from router. 2018-07-17 15:12:26 +01:00
pns_meander_placer_base.cpp Remove PNS_ prefix from most types inside namespace PNS 2016-09-06 16:06:06 +02:00
pns_meander_placer_base.h Eradicate g_userUnit from router. 2018-07-17 15:12:26 +01:00
pns_meander_skew_placer.cpp Eradicate g_userUnit from router. 2018-07-17 15:12:26 +01:00
pns_meander_skew_placer.h Eradicate g_userUnit from router. 2018-07-17 15:12:26 +01:00
pns_node.cpp router: copy m_maxClearance when cloning/branching PNS::NODEs 2019-04-23 12:00:54 +02:00
pns_node.h pcbnew: Set dp clearance based on netclass 2018-06-18 14:23:25 -07:00
pns_optimizer.cpp Adjusting the breakout optimizer for custom pads 2018-05-04 08:23:20 -07:00
pns_optimizer.h Adjusting the breakout optimizer for custom pads 2018-05-04 08:23:20 -07:00
pns_placement_algo.h router: allow placing tracks/diff pairs without continuing routing by Shift+L-Click 2018-06-19 19:30:03 +02:00
pns_router.cpp pcbnew: Show clearance when editing tracks 2019-04-07 21:25:28 -07:00
pns_router.h pcbnew: Show clearance when editing tracks 2019-04-07 21:25:28 -07:00
pns_routing_settings.cpp Few improvements to the GAL router: 2017-08-07 14:28:46 +02:00
pns_routing_settings.h Change "Automatic neckdown" to "Optimize pad connections". 2018-02-15 17:02:44 +01:00
pns_segment.h Revert "pcbnew: Adding copy constructors to PNS items" 2018-10-09 14:50:20 -07:00
pns_shove.cpp router: allow placing via without track in shove mode 2018-05-08 15:18:10 +02:00
pns_shove.h refactoring: wrapped boost::optional in OPT<> class for the purpose of easier transition to C++17 in the future 2017-11-03 23:59:02 +01:00
pns_sizes_settings.cpp Honour diff-pair dimension changes while routing. 2018-09-18 20:37:00 +01:00
pns_sizes_settings.h refactoring: wrapped boost::optional in OPT<> class for the purpose of easier transition to C++17 in the future 2017-11-03 23:59:02 +01:00
pns_solid.cpp Setting custom pad shape to be outline for PNS 2018-05-04 08:23:20 -07:00
pns_solid.h Revert "pcbnew: Adding copy constructors to PNS items" 2018-10-09 14:50:20 -07:00
pns_tool_base.cpp Eradicate globals for PCB_GENERAL_SETTINGS. 2019-06-26 21:54:03 +01:00
pns_tool_base.h Insert EE_TOOL_BASE under SchEdit and LibEdit tools, and fix errant rename scope which clobbered PCBNew's PICKER_TOOL. 2019-05-12 13:47:08 +01:00
pns_topology.cpp pcbnew: Fix minor miscalculation in dp length 2018-10-09 05:37:48 -07:00
pns_topology.h Remove PNS_ prefix from most types inside namespace PNS 2016-09-06 16:06:06 +02:00
pns_tune_status_popup.cpp Push KIWAY_HOLDER down a level so we can move a bunch of stuff that doesn't belong there out. 2019-06-10 23:46:00 +01:00
pns_tune_status_popup.h Bring PICKER_TOOL in line with other tools. 2018-08-23 00:58:01 +01:00
pns_utils.cpp Setting custom pad shape to be outline for PNS 2018-05-04 08:23:20 -07:00
pns_utils.h Setting custom pad shape to be outline for PNS 2018-05-04 08:23:20 -07:00
pns_via.cpp Remove PNS_ prefix from most types inside namespace PNS 2016-09-06 16:06:06 +02:00
pns_via.h Revert "pcbnew: Adding copy constructors to PNS items" 2018-10-09 14:50:20 -07:00
pns_walkaround.cpp router: prevent a very unlikely infinite loop in PNS::LINE::Walkaround() causing an OOM&segfault 2018-05-02 15:06:08 -07:00
pns_walkaround.h Add more "override" markers. 2016-09-25 13:59:41 -04:00
range.h Code formatting. 2015-02-18 17:53:46 +01:00
ranged_num.h Code formatting. 2015-02-18 17:53:46 +01:00
router_preview_item.cpp Fix segfault when routing. 2018-10-09 11:08:56 +01:00
router_preview_item.h Display clearance for routed tracks (GAL) 2017-01-27 19:11:12 +01:00
router_tool.cpp Implement a more robust tool stacking architecture. 2019-06-27 17:01:31 +01:00
router_tool.h Immediate actions for PlEditor, PcbNew, etc. 2019-06-25 11:34:28 +01:00
time_limit.cpp Move PNS router code into namespace PNS 2016-09-06 16:06:06 +02:00
time_limit.h Move PNS router code into namespace PNS 2016-09-06 16:06:06 +02:00