You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2449 lines
101 KiB

  1. /*
  2. * This program source code file is part of KiCad, a free EDA CAD application.
  3. *
  4. * Copyright (C) 2013-2023 CERN
  5. * Copyright (C) 2016-2023 KiCad Developers, see AUTHORS.txt for contributors.
  6. * @author Maciej Suminski <maciej.suminski@cern.ch>
  7. *
  8. * This program is free software; you can redistribute it and/or
  9. * modify it under the terms of the GNU General Public License
  10. * as published by the Free Software Foundation; either version 2
  11. * of the License, or (at your option) any later version.
  12. *
  13. * This program is distributed in the hope that it will be useful,
  14. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16. * GNU General Public License for more details.
  17. *
  18. * You should have received a copy of the GNU General Public License
  19. * along with this program; if not, you may find one here:
  20. * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
  21. * or you may search the http://www.gnu.org website for the version 2 license,
  22. * or you may write to the Free Software Foundation, Inc.,
  23. * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
  24. */
  25. #include "pcb_actions.h"
  26. #include "tool/tool_action.h"
  27. #include "tool/tool_event.h"
  28. #include <pcbnew_id.h>
  29. #include <bitmaps.h>
  30. #include <layer_ids.h>
  31. #include <microwave/microwave_tool.h>
  32. #include <pcb_reference_image.h>
  33. #include <tool/tool_manager.h>
  34. #include <tools/pcb_selection_tool.h>
  35. #include <router/pns_router.h>
  36. #include <router/pns_routing_settings.h>
  37. // Actions, being statically-defined, require specialized I18N handling. We continue to
  38. // use the _() macro so that string harvesting by the I18N framework doesn't have to be
  39. // specialized, but we don't translate on initialization and instead do it in the getters.
  40. #undef _
  41. #define _(s) s
  42. // clang-format off
  43. // CONVERT_TOOL
  44. //
  45. TOOL_ACTION PCB_ACTIONS::convertToPoly( TOOL_ACTION_ARGS()
  46. .Name( "pcbnew.Convert.convertToPoly" )
  47. .Scope( AS_GLOBAL )
  48. .FriendlyName( _( "Create Polygon from Selection..." ) )
  49. .Tooltip( _( "Creates a graphic polygon from the selection" ) )
  50. .Icon( BITMAPS::add_graphical_polygon ) );
  51. TOOL_ACTION PCB_ACTIONS::convertToZone( TOOL_ACTION_ARGS()
  52. .Name( "pcbnew.Convert.convertToZone" )
  53. .Scope( AS_GLOBAL )
  54. .FriendlyName( _( "Create Zone from Selection..." ) )
  55. .Tooltip( _( "Creates a copper zone from the selection" ) )
  56. .Icon( BITMAPS::add_zone ) );
  57. TOOL_ACTION PCB_ACTIONS::convertToKeepout( TOOL_ACTION_ARGS()
  58. .Name( "pcbnew.Convert.convertToKeepout" )
  59. .Scope( AS_GLOBAL )
  60. .FriendlyName( _( "Create Rule Area from Selection..." ) )
  61. .Tooltip( _( "Creates a rule area from the selection" ) )
  62. .Icon( BITMAPS::add_keepout_area ) );
  63. TOOL_ACTION PCB_ACTIONS::convertToLines( TOOL_ACTION_ARGS()
  64. .Name( "pcbnew.Convert.convertToLines" )
  65. .Scope( AS_GLOBAL )
  66. .FriendlyName( _( "Create Lines from Selection..." ) )
  67. .Tooltip( _( "Creates graphic lines from the selection" ) )
  68. .Icon( BITMAPS::add_line ) );
  69. TOOL_ACTION PCB_ACTIONS::convertToArc( TOOL_ACTION_ARGS()
  70. .Name( "pcbnew.Convert.convertToArc" )
  71. .Scope( AS_GLOBAL )
  72. .FriendlyName( _( "Create Arc from Selection" ) )
  73. .Tooltip( _( "Creates an arc from the selected line segment" ) )
  74. .Icon( BITMAPS::add_arc ) );
  75. TOOL_ACTION PCB_ACTIONS::convertToTracks( TOOL_ACTION_ARGS()
  76. .Name( "pcbnew.Convert.convertToTracks" )
  77. .Scope( AS_GLOBAL )
  78. .FriendlyName( _( "Create Tracks from Selection" ) )
  79. .Tooltip( _( "Creates tracks from the selected graphic lines" ) )
  80. .Icon( BITMAPS::add_tracks ) );
  81. // DRAWING_TOOL
  82. //
  83. TOOL_ACTION PCB_ACTIONS::drawLine( TOOL_ACTION_ARGS()
  84. .Name( "pcbnew.InteractiveDrawing.line" )
  85. .Scope( AS_GLOBAL )
  86. .DefaultHotkey( MD_SHIFT + MD_CTRL + 'L' )
  87. .LegacyHotkeyName( "Draw Line" )
  88. .FriendlyName( _( "Draw Line" ) )
  89. .Tooltip( _( "Draw a line" ) )
  90. .Icon( BITMAPS::add_graphical_segments )
  91. .Flags( AF_ACTIVATE ) );
  92. TOOL_ACTION PCB_ACTIONS::drawPolygon( TOOL_ACTION_ARGS()
  93. .Name( "pcbnew.InteractiveDrawing.graphicPolygon" )
  94. .Scope( AS_GLOBAL )
  95. .DefaultHotkey( MD_SHIFT + MD_CTRL + 'P' )
  96. .LegacyHotkeyName( "Draw Graphic Polygon" )
  97. .FriendlyName( _( "Draw Graphic Polygon" ) )
  98. .Tooltip( _( "Draw a graphic polygon" ) )
  99. .Icon( BITMAPS::add_graphical_polygon )
  100. .Flags( AF_ACTIVATE )
  101. .Parameter( ZONE_MODE::GRAPHIC_POLYGON ) );
  102. TOOL_ACTION PCB_ACTIONS::drawRectangle( TOOL_ACTION_ARGS()
  103. .Name( "pcbnew.InteractiveDrawing.rectangle" )
  104. .Scope( AS_GLOBAL )
  105. .FriendlyName( _( "Draw Rectangle" ) )
  106. .Tooltip( _( "Draw a rectangle" ) )
  107. .Icon( BITMAPS::add_rectangle )
  108. .Flags( AF_ACTIVATE ) );
  109. TOOL_ACTION PCB_ACTIONS::drawCircle( TOOL_ACTION_ARGS()
  110. .Name( "pcbnew.InteractiveDrawing.circle" )
  111. .Scope( AS_GLOBAL )
  112. .DefaultHotkey( MD_SHIFT + MD_CTRL + 'C' )
  113. .LegacyHotkeyName( "Draw Circle" )
  114. .FriendlyName( _( "Draw Circle" ) )
  115. .Tooltip( _( "Draw a circle" ) )
  116. .Icon( BITMAPS::add_circle )
  117. .Flags( AF_ACTIVATE ) );
  118. TOOL_ACTION PCB_ACTIONS::drawArc( TOOL_ACTION_ARGS()
  119. .Name( "pcbnew.InteractiveDrawing.arc" )
  120. .Scope( AS_GLOBAL )
  121. .DefaultHotkey( MD_SHIFT + MD_CTRL + 'A' )
  122. .LegacyHotkeyName( "Draw Arc" )
  123. .FriendlyName( _( "Draw Arc" ) )
  124. .Tooltip( _( "Draw an arc" ) )
  125. .Icon( BITMAPS::add_arc )
  126. .Flags( AF_ACTIVATE ) );
  127. TOOL_ACTION PCB_ACTIONS::placeCharacteristics( TOOL_ACTION_ARGS()
  128. .Name( "pcbnew.InteractiveDrawing.placeCharacteristics" )
  129. .Scope( AS_GLOBAL )
  130. .LegacyHotkeyName( "Add Board Characteristics" )
  131. .FriendlyName( _( "Add Board Characteristics" ) )
  132. .Tooltip( _( "Add a board characteristics table on a graphic layer" ) )
  133. .Flags( AF_ACTIVATE ) );
  134. TOOL_ACTION PCB_ACTIONS::placeStackup( TOOL_ACTION_ARGS()
  135. .Name( "pcbnew.InteractiveDrawing.placeStackup" )
  136. .Scope( AS_GLOBAL )
  137. .LegacyHotkeyName( "Add Stackup Table" )
  138. .FriendlyName( _( "Add Stackup Table" ) )
  139. .Tooltip( _( "Add a board stackup table on a graphic layer" ) )
  140. .Flags( AF_ACTIVATE ) );
  141. TOOL_ACTION PCB_ACTIONS::placeReferenceImage( TOOL_ACTION_ARGS()
  142. .Name( "pcbnew.InteractiveDrawing.placeReferenceImage" )
  143. .Scope( AS_GLOBAL )
  144. .FriendlyName( _( "Add Reference Image" ) )
  145. .Tooltip( _( "Add a bitmap image to be used as a reference (image will not be included in any output)" ) )
  146. .Icon( BITMAPS::image )
  147. .Flags( AF_ACTIVATE )
  148. .Parameter<PCB_REFERENCE_IMAGE*>( nullptr ) );
  149. TOOL_ACTION PCB_ACTIONS::placeText( TOOL_ACTION_ARGS()
  150. .Name( "pcbnew.InteractiveDrawing.text" )
  151. .Scope( AS_GLOBAL )
  152. .DefaultHotkey( MD_SHIFT + MD_CTRL + 'T' )
  153. .LegacyHotkeyName( "Add Text" )
  154. .FriendlyName( _( "Add Text" ) )
  155. .Tooltip( _( "Add a text item" ) )
  156. .Icon( BITMAPS::text )
  157. .Flags( AF_ACTIVATE ) );
  158. TOOL_ACTION PCB_ACTIONS::drawTextBox( TOOL_ACTION_ARGS()
  159. .Name( "pcbnew.InteractiveDrawing.textbox" )
  160. .Scope( AS_GLOBAL )
  161. .FriendlyName( _( "Add Text Box" ) )
  162. .Tooltip( _( "Add a wrapped text item" ) )
  163. .Icon( BITMAPS::add_textbox )
  164. .Flags( AF_ACTIVATE ) );
  165. TOOL_ACTION PCB_ACTIONS::spacingIncrease( TOOL_ACTION_ARGS()
  166. .Name( "pcbnew.lengthTuner.SpacingIncrease" )
  167. .Scope( AS_GLOBAL )
  168. .DefaultHotkey( '1' )
  169. .LegacyHotkeyName( "Increase meander spacing by one step." )
  170. .FriendlyName( _( "Increase Spacing" ) )
  171. .Tooltip( _( "Increase tuning pattern spacing by one step." ) )
  172. .Icon( BITMAPS::router_len_tuner_dist_incr ) );
  173. TOOL_ACTION PCB_ACTIONS::spacingDecrease( TOOL_ACTION_ARGS()
  174. .Name( "pcbnew.lengthTuner.SpacingDecrease" )
  175. .Scope( AS_GLOBAL )
  176. .DefaultHotkey( '2' )
  177. .LegacyHotkeyName( "Decrease meander spacing by one step." )
  178. .FriendlyName( _( "Decrease Spacing" ) )
  179. .Tooltip( _( "Decrease tuning pattern spacing by one step." ) )
  180. .Icon( BITMAPS::router_len_tuner_dist_decr ) );
  181. TOOL_ACTION PCB_ACTIONS::amplIncrease( TOOL_ACTION_ARGS()
  182. .Name( "pcbnew.lengthTuner.AmplIncrease" )
  183. .Scope( AS_GLOBAL )
  184. .DefaultHotkey( '3' )
  185. .LegacyHotkeyName( "Increase meander amplitude by one step." )
  186. .FriendlyName( _( "Increase Amplitude" ) )
  187. .Tooltip( _( "Increase tuning pattern amplitude by one step." ) )
  188. .Icon( BITMAPS::router_len_tuner_amplitude_incr ) );
  189. TOOL_ACTION PCB_ACTIONS::amplDecrease( TOOL_ACTION_ARGS()
  190. .Name( "pcbnew.lengthTuner.AmplDecrease" )
  191. .Scope( AS_GLOBAL )
  192. .DefaultHotkey( '4' )
  193. .LegacyHotkeyName( "Decrease meander amplitude by one step." )
  194. .FriendlyName( _( "Decrease Amplitude" ) )
  195. .Tooltip( _( "Decrease tuning pattern amplitude by one step." ) )
  196. .Icon( BITMAPS::router_len_tuner_amplitude_decr ) );
  197. TOOL_ACTION PCB_ACTIONS::drawAlignedDimension( TOOL_ACTION_ARGS()
  198. .Name( "pcbnew.InteractiveDrawing.alignedDimension" )
  199. .Scope( AS_GLOBAL )
  200. .DefaultHotkey( MD_SHIFT + MD_CTRL + 'H' )
  201. .LegacyHotkeyName( "Add Dimension" )
  202. .FriendlyName( _( "Add Aligned Dimension" ) )
  203. .Tooltip( _( "Add an aligned linear dimension" ) )
  204. .Icon( BITMAPS::add_aligned_dimension )
  205. .Flags( AF_ACTIVATE ) );
  206. TOOL_ACTION PCB_ACTIONS::drawCenterDimension( TOOL_ACTION_ARGS()
  207. .Name( "pcbnew.InteractiveDrawing.centerDimension" )
  208. .Scope( AS_GLOBAL )
  209. .FriendlyName( _( "Add Center Dimension" ) )
  210. .Tooltip( _( "Add a center dimension" ) )
  211. .Icon( BITMAPS::add_center_dimension )
  212. .Flags( AF_ACTIVATE ) );
  213. TOOL_ACTION PCB_ACTIONS::drawRadialDimension( TOOL_ACTION_ARGS()
  214. .Name( "pcbnew.InteractiveDrawing.radialDimension" )
  215. .Scope( AS_GLOBAL )
  216. .FriendlyName( _( "Add Radial Dimension" ) )
  217. .Tooltip( _( "Add a radial dimension" ) )
  218. .Icon( BITMAPS::add_radial_dimension )
  219. .Flags( AF_ACTIVATE ) );
  220. TOOL_ACTION PCB_ACTIONS::drawOrthogonalDimension( TOOL_ACTION_ARGS()
  221. .Name( "pcbnew.InteractiveDrawing.orthogonalDimension" )
  222. .Scope( AS_GLOBAL )
  223. .FriendlyName( _( "Add Orthogonal Dimension" ) )
  224. .Tooltip( _( "Add an orthogonal dimension" ) )
  225. .Icon( BITMAPS::add_orthogonal_dimension )
  226. .Flags( AF_ACTIVATE ) );
  227. TOOL_ACTION PCB_ACTIONS::drawLeader( TOOL_ACTION_ARGS()
  228. .Name( "pcbnew.InteractiveDrawing.leader" )
  229. .Scope( AS_GLOBAL )
  230. .FriendlyName( _( "Add Leader" ) )
  231. .Tooltip( _( "Add a leader dimension" ) )
  232. .Icon( BITMAPS::add_leader )
  233. .Flags( AF_ACTIVATE ) );
  234. TOOL_ACTION PCB_ACTIONS::drawZone( TOOL_ACTION_ARGS()
  235. .Name( "pcbnew.InteractiveDrawing.zone" )
  236. .Scope( AS_GLOBAL )
  237. #ifdef __WXOSX_MAC__
  238. .DefaultHotkey( MD_ALT + 'Z' )
  239. #else
  240. .DefaultHotkey( MD_SHIFT + MD_CTRL + 'Z' )
  241. #endif
  242. .LegacyHotkeyName( "Add Filled Zone" )
  243. .FriendlyName( _( "Add Filled Zone" ) )
  244. .Tooltip( _( "Add a filled zone" ) )
  245. .Icon( BITMAPS::add_zone )
  246. .Flags( AF_ACTIVATE )
  247. .Parameter( ZONE_MODE::ADD ) );
  248. TOOL_ACTION PCB_ACTIONS::drawVia( TOOL_ACTION_ARGS()
  249. .Name( "pcbnew.InteractiveDrawing.via" )
  250. .Scope( AS_GLOBAL )
  251. .DefaultHotkey( MD_SHIFT + MD_CTRL + 'V' )
  252. .LegacyHotkeyName( "Add Vias" )
  253. .FriendlyName( _( "Add Vias" ) )
  254. .Tooltip( _( "Add free-standing vias" ) )
  255. .Icon( BITMAPS::add_via )
  256. .Flags( AF_ACTIVATE ) );
  257. TOOL_ACTION PCB_ACTIONS::drawRuleArea( TOOL_ACTION_ARGS()
  258. .Name( "pcbnew.InteractiveDrawing.ruleArea" )
  259. .Scope( AS_GLOBAL )
  260. .DefaultHotkey( MD_SHIFT + MD_CTRL + 'K' )
  261. .LegacyHotkeyName( "Add Keepout Area" )
  262. .FriendlyName( _( "Add Rule Area" ) )
  263. .Tooltip( _( "Add a rule area (keepout)" ) )
  264. .Icon( BITMAPS::add_keepout_area )
  265. .Flags( AF_ACTIVATE )
  266. .Parameter( ZONE_MODE::ADD ) );
  267. TOOL_ACTION PCB_ACTIONS::drawZoneCutout( TOOL_ACTION_ARGS()
  268. .Name( "pcbnew.InteractiveDrawing.zoneCutout" )
  269. .Scope( AS_GLOBAL )
  270. .DefaultHotkey( MD_SHIFT + 'C' )
  271. .LegacyHotkeyName( "Add a Zone Cutout" )
  272. .FriendlyName( _( "Add a Zone Cutout" ) )
  273. .Tooltip( _( "Add a cutout area of an existing zone" ) )
  274. .Icon( BITMAPS::add_zone_cutout )
  275. .Flags( AF_ACTIVATE )
  276. .Parameter( ZONE_MODE::CUTOUT ) );
  277. TOOL_ACTION PCB_ACTIONS::drawSimilarZone( TOOL_ACTION_ARGS()
  278. .Name( "pcbnew.InteractiveDrawing.similarZone" )
  279. .Scope( AS_GLOBAL )
  280. .DefaultHotkey( MD_SHIFT + MD_CTRL + '.' )
  281. .LegacyHotkeyName( "Add a Similar Zone" )
  282. .FriendlyName( _( "Add a Similar Zone" ) )
  283. .Tooltip( _( "Add a zone with the same settings as an existing zone" ) )
  284. .Icon( BITMAPS::add_zone )
  285. .Flags( AF_ACTIVATE )
  286. .Parameter( ZONE_MODE::SIMILAR ) );
  287. TOOL_ACTION PCB_ACTIONS::placeImportedGraphics( TOOL_ACTION_ARGS()
  288. .Name( "pcbnew.InteractiveDrawing.placeImportedGraphics" )
  289. .Scope( AS_GLOBAL )
  290. .DefaultHotkey( MD_SHIFT + MD_CTRL + 'F' )
  291. .LegacyHotkeyName( "Place DXF" )
  292. .FriendlyName( _( "Import Graphics..." ) )
  293. .Tooltip( _( "Import 2D drawing file" ) )
  294. .Icon( BITMAPS::import_vector )
  295. .Flags( AF_ACTIVATE ) );
  296. TOOL_ACTION PCB_ACTIONS::setAnchor( TOOL_ACTION_ARGS()
  297. .Name( "pcbnew.InteractiveDrawing.setAnchor" )
  298. .Scope( AS_GLOBAL )
  299. .DefaultHotkey( MD_SHIFT + MD_CTRL + 'N' )
  300. .LegacyHotkeyName( "Place the Footprint Anchor" )
  301. .FriendlyName( _( "Place the Footprint Anchor" ) )
  302. .Tooltip( _( "Set the coordinate origin point (anchor) of the footprint" ) )
  303. .Icon( BITMAPS::anchor )
  304. .Flags( AF_ACTIVATE ) );
  305. TOOL_ACTION PCB_ACTIONS::incWidth( TOOL_ACTION_ARGS()
  306. .Name( "pcbnew.InteractiveDrawing.incWidth" )
  307. .Scope( AS_CONTEXT )
  308. .DefaultHotkey( MD_CTRL + '+' )
  309. .LegacyHotkeyName( "Increase Line Width" )
  310. .FriendlyName( _( "Increase Line Width" ) )
  311. .Tooltip( _( "Increase the line width" ) ) );
  312. TOOL_ACTION PCB_ACTIONS::decWidth( TOOL_ACTION_ARGS()
  313. .Name( "pcbnew.InteractiveDrawing.decWidth" )
  314. .Scope( AS_CONTEXT )
  315. .DefaultHotkey( MD_CTRL + '-' )
  316. .LegacyHotkeyName( "Decrease Line Width" )
  317. .FriendlyName( _( "Decrease Line Width" ) )
  318. .Tooltip( _( "Decrease the line width" ) ) );
  319. TOOL_ACTION PCB_ACTIONS::arcPosture( TOOL_ACTION_ARGS()
  320. .Name( "pcbnew.InteractiveDrawing.arcPosture" )
  321. .Scope( AS_CONTEXT )
  322. .DefaultHotkey( '/' )
  323. .LegacyHotkeyName( "Switch Track Posture" )
  324. .FriendlyName( _( "Switch Arc Posture" ) )
  325. .Tooltip( _( "Switch the arc posture" ) ) );
  326. TOOL_ACTION PCB_ACTIONS::magneticSnapActiveLayer( TOOL_ACTION_ARGS()
  327. .Name( "common.Control.magneticSnapActiveLayer" )
  328. .Scope( AS_GLOBAL )
  329. .FriendlyName( _( "Snap to Objects on the Active Layer Only" ) )
  330. .Tooltip( _( "Enables snapping to objects on the active layer only" ) ) );
  331. TOOL_ACTION PCB_ACTIONS::magneticSnapAllLayers( TOOL_ACTION_ARGS()
  332. .Name( "common.Control.magneticSnapAllLayers" )
  333. .Scope( AS_GLOBAL )
  334. .FriendlyName( _( "Snap to Objects on All Layers" ) )
  335. .Tooltip( _( "Enables snapping to objects on all visible layers" ) ) );
  336. TOOL_ACTION PCB_ACTIONS::magneticSnapToggle( TOOL_ACTION_ARGS()
  337. .Name( "common.Control.magneticSnapToggle" )
  338. .Scope( AS_GLOBAL )
  339. .DefaultHotkey( MD_SHIFT + 'S' )
  340. .FriendlyName( _( "Toggle Snapping Between Active and All Layers" ) )
  341. .Tooltip( _( "Toggles between snapping on all visible layers and only the active area" ) ) );
  342. TOOL_ACTION PCB_ACTIONS::deleteLastPoint( TOOL_ACTION_ARGS()
  343. .Name( "pcbnew.InteractiveDrawing.deleteLastPoint" )
  344. .Scope( AS_CONTEXT )
  345. .DefaultHotkey( WXK_BACK )
  346. .FriendlyName( _( "Delete Last Point" ) )
  347. .Tooltip( _( "Delete the last point added to the current item" ) )
  348. .Icon( BITMAPS::undo ) );
  349. TOOL_ACTION PCB_ACTIONS::closeOutline( TOOL_ACTION_ARGS()
  350. .Name( "pcbnew.InteractiveDrawing.closeOutline" )
  351. .Scope( AS_CONTEXT )
  352. .FriendlyName( _( "Close Outline" ) )
  353. .Tooltip( _( "Close the in progress outline" ) )
  354. .Icon( BITMAPS::checked_ok ) );
  355. // DRC
  356. //
  357. TOOL_ACTION PCB_ACTIONS::runDRC( TOOL_ACTION_ARGS()
  358. .Name( "pcbnew.DRCTool.runDRC" )
  359. .Scope( AS_GLOBAL )
  360. .FriendlyName( _( "Design Rules Checker" ) )
  361. .Tooltip( _( "Show the design rules checker window" ) )
  362. .Icon( BITMAPS::erc ) );
  363. // EDIT_TOOL
  364. //
  365. TOOL_ACTION PCB_ACTIONS::editFpInFpEditor( TOOL_ACTION_ARGS()
  366. .Name( "pcbnew.EditorControl.EditFpInFpEditor" )
  367. .Scope( AS_GLOBAL )
  368. .DefaultHotkey( MD_CTRL + 'E' )
  369. .LegacyHotkeyName( "Edit with Footprint Editor" )
  370. .FriendlyName( _( "Open in Footprint Editor" ) )
  371. .Tooltip( _( "Opens the selected footprint in the Footprint Editor" ) )
  372. .Icon( BITMAPS::module_editor ) );
  373. TOOL_ACTION PCB_ACTIONS::editLibFpInFpEditor( TOOL_ACTION_ARGS()
  374. .Name( "pcbnew.EditorControl.EditLibFpInFpEditor" )
  375. .Scope( AS_GLOBAL )
  376. .DefaultHotkey( MD_CTRL + MD_SHIFT + 'E' )
  377. .FriendlyName( _( "Edit Library Footprint..." ) )
  378. .Tooltip( _( "Opens the selected footprint in the Footprint Editor" ) )
  379. .Icon( BITMAPS::module_editor ) );
  380. TOOL_ACTION PCB_ACTIONS::getAndPlace( TOOL_ACTION_ARGS()
  381. .Name( "pcbnew.InteractiveEdit.FindMove" )
  382. .Scope( AS_GLOBAL )
  383. .DefaultHotkey( 'T' )
  384. .LegacyHotkeyName( "Get and Move Footprint" )
  385. .FriendlyName( _( "Get and Move Footprint" ) )
  386. .Tooltip( _( "Selects a footprint by reference designator and places it under the cursor for moving" ) )
  387. .Icon( BITMAPS::move )
  388. .Flags( AF_ACTIVATE ) );
  389. TOOL_ACTION PCB_ACTIONS::move( TOOL_ACTION_ARGS()
  390. .Name( "pcbnew.InteractiveMove.move" )
  391. .Scope( AS_GLOBAL )
  392. .DefaultHotkey( 'M' )
  393. .LegacyHotkeyName( "Move Item" )
  394. .FriendlyName( _( "Move" ) )
  395. .Tooltip( _( "Moves the selected item(s)" ) )
  396. .Icon( BITMAPS::move )
  397. .Flags( AF_ACTIVATE )
  398. .Parameter( ACTIONS::CURSOR_EVENT_TYPE::CURSOR_NONE ) );
  399. TOOL_ACTION PCB_ACTIONS::moveIndividually( TOOL_ACTION_ARGS()
  400. .Name( "pcbnew.InteractiveMove.moveIndividually" )
  401. .Scope( AS_GLOBAL )
  402. .DefaultHotkey( MD_CTRL + 'M' )
  403. .FriendlyName( _( "Move Individually" ) )
  404. .Tooltip( _( "Moves the selected items one-by-one" ) )
  405. .Icon( BITMAPS::move )
  406. .Flags( AF_ACTIVATE )
  407. .Parameter( ACTIONS::CURSOR_EVENT_TYPE::CURSOR_NONE ) );
  408. TOOL_ACTION PCB_ACTIONS::moveWithReference( TOOL_ACTION_ARGS()
  409. .Name( "pcbnew.InteractiveMove.moveWithReference" )
  410. .Scope( AS_GLOBAL )
  411. .FriendlyName( _( "Move with Reference" ) )
  412. .Tooltip( _( "Moves the selected item(s) with a specified starting point" ) )
  413. .Icon( BITMAPS::move )
  414. .Flags( AF_ACTIVATE )
  415. .Parameter( ACTIONS::CURSOR_EVENT_TYPE::CURSOR_NONE ) );
  416. TOOL_ACTION PCB_ACTIONS::copyWithReference( TOOL_ACTION_ARGS()
  417. .Name( "pcbnew.InteractiveMove.copyWithReference" )
  418. .Scope( AS_GLOBAL )
  419. .FriendlyName( _( "Copy with Reference" ) )
  420. .Tooltip( _( "Copy selected item(s) to clipboard with a specified starting point" ) )
  421. .Icon( BITMAPS::copy )
  422. .Flags( AF_ACTIVATE ) );
  423. TOOL_ACTION PCB_ACTIONS::duplicateIncrement(TOOL_ACTION_ARGS()
  424. .Name( "pcbnew.InteractiveEdit.duplicateIncrementPads" )
  425. .Scope( AS_GLOBAL )
  426. .DefaultHotkey( MD_SHIFT + MD_CTRL + 'D' )
  427. .LegacyHotkeyName( "Duplicate Item and Increment" )
  428. .FriendlyName( _( "Duplicate and Increment" ) )
  429. .Tooltip( _( "Duplicates the selected item(s), incrementing pad numbers" ) )
  430. .Icon( BITMAPS::duplicate ) );
  431. TOOL_ACTION PCB_ACTIONS::moveExact( TOOL_ACTION_ARGS()
  432. .Name( "pcbnew.InteractiveEdit.moveExact" )
  433. .Scope( AS_GLOBAL )
  434. .DefaultHotkey( MD_SHIFT + 'M' )
  435. .LegacyHotkeyName( "Move Item Exactly" )
  436. .FriendlyName( _( "Move Exactly..." ) )
  437. .Tooltip( _( "Moves the selected item(s) by an exact amount" ) )
  438. .Icon( BITMAPS::move_exactly ) );
  439. TOOL_ACTION PCB_ACTIONS::pointEditorMoveCorner( TOOL_ACTION_ARGS()
  440. .Name( "pcbnew.InteractiveEdit.moveCorner" )
  441. .Scope( AS_GLOBAL )
  442. .FriendlyName( _( "Move Corner To..." ) )
  443. .Tooltip( _( "Move the active corner to an exact location" ) )
  444. .Icon( BITMAPS::move_exactly ) );
  445. TOOL_ACTION PCB_ACTIONS::pointEditorMoveMidpoint( TOOL_ACTION_ARGS()
  446. .Name( "pcbnew.InteractiveEdit.moveMidpoint" )
  447. .Scope( AS_GLOBAL )
  448. .FriendlyName( _( "Move Midpoint To..." ) )
  449. .Tooltip( _( "Move the active midpoint to an exact location" ) )
  450. .Icon( BITMAPS::move_exactly ) );
  451. TOOL_ACTION PCB_ACTIONS::createArray( TOOL_ACTION_ARGS()
  452. .Name( "pcbnew.InteractiveEdit.createArray" )
  453. .Scope( AS_GLOBAL )
  454. .DefaultHotkey( MD_CTRL + 'T' )
  455. .LegacyHotkeyName( "Create Array" )
  456. .FriendlyName( _( "Create Array..." ) )
  457. .Icon( BITMAPS::array )
  458. .Flags( AF_ACTIVATE ) );
  459. TOOL_ACTION PCB_ACTIONS::rotateCw( TOOL_ACTION_ARGS()
  460. .Name( "pcbnew.InteractiveEdit.rotateCw" )
  461. .Scope( AS_GLOBAL )
  462. .DefaultHotkey( MD_SHIFT + 'R' )
  463. // Don't be tempted to remove "Modern Toolset only". It's in the legacy property name.
  464. .LegacyHotkeyName( "Rotate Item Clockwise (Modern Toolset only)" )
  465. .FriendlyName( _( "Rotate Clockwise" ) )
  466. .Tooltip( _( "Rotates selected item(s) clockwise" ) )
  467. .Icon( BITMAPS::rotate_cw )
  468. .Flags( AF_NONE )
  469. .Parameter( -1 ) );
  470. TOOL_ACTION PCB_ACTIONS::rotateCcw( TOOL_ACTION_ARGS()
  471. .Name( "pcbnew.InteractiveEdit.rotateCcw" )
  472. .Scope( AS_GLOBAL )
  473. .DefaultHotkey( 'R' )
  474. .LegacyHotkeyName( "Rotate Item" )
  475. .FriendlyName( _( "Rotate Counterclockwise" ) )
  476. .Tooltip( _( "Rotates selected item(s) counterclockwise" ) )
  477. .Icon( BITMAPS::rotate_ccw )
  478. .Flags( AF_NONE )
  479. .Parameter( 1 ) );
  480. TOOL_ACTION PCB_ACTIONS::flip( TOOL_ACTION_ARGS()
  481. .Name( "pcbnew.InteractiveEdit.flip" )
  482. .Scope( AS_GLOBAL )
  483. .DefaultHotkey( 'F' )
  484. .LegacyHotkeyName( "Flip Item" )
  485. .FriendlyName( _( "Change Side / Flip" ) )
  486. .Tooltip( _( "Flips selected item(s) to opposite side of board" ) )
  487. .Icon( BITMAPS::swap_layer ) );
  488. TOOL_ACTION PCB_ACTIONS::mirrorH( TOOL_ACTION_ARGS()
  489. .Name( "pcbnew.InteractiveEdit.mirrorHoriontally" )
  490. .Scope( AS_GLOBAL )
  491. .FriendlyName( _( "Mirror Horizontally" ) )
  492. .Tooltip( _( "Mirrors selected item across the Y axis" ) )
  493. .Icon( BITMAPS::mirror_h ) );
  494. TOOL_ACTION PCB_ACTIONS::mirrorV( TOOL_ACTION_ARGS()
  495. .Name( "pcbnew.InteractiveEdit.mirrorVertically" )
  496. .Scope( AS_GLOBAL )
  497. .FriendlyName( _( "Mirror Vertically" ) )
  498. .Tooltip( _( "Mirrors selected item across the X axis" ) )
  499. .Icon( BITMAPS::mirror_v ) );
  500. TOOL_ACTION PCB_ACTIONS::swap( TOOL_ACTION_ARGS()
  501. .Name( "pcbnew.InteractiveEdit.swap" )
  502. .Scope( AS_GLOBAL )
  503. .DefaultHotkey( 'S' )
  504. .FriendlyName( _( "Swap" ) )
  505. .Tooltip( _( "Swaps selected items' positions" ) )
  506. .Icon( BITMAPS::swap ) );
  507. TOOL_ACTION PCB_ACTIONS::packAndMoveFootprints( TOOL_ACTION_ARGS()
  508. .Name( "pcbnew.InteractiveEdit.packAndMoveFootprints" )
  509. .Scope( AS_GLOBAL )
  510. .DefaultHotkey( 'P' )
  511. .FriendlyName( _( "Pack and Move Footprints" ) )
  512. .Tooltip( _( "Sorts selected footprints by reference, packs based on size and initiates movement" ) )
  513. .Icon( BITMAPS::pack_footprints ) );
  514. TOOL_ACTION PCB_ACTIONS::skip( TOOL_ACTION_ARGS()
  515. .Name( "pcbnew.InteractiveEdit.skip" )
  516. .Scope( AS_CONTEXT )
  517. .DefaultHotkey( WXK_TAB )
  518. .FriendlyName( _( "Skip" ) )
  519. .Tooltip( _( "Skip item" ) )
  520. .Icon( BITMAPS::right ) );
  521. TOOL_ACTION PCB_ACTIONS::changeTrackWidth( TOOL_ACTION_ARGS()
  522. .Name( "pcbnew.InteractiveEdit.changeTrackWidth" )
  523. .Scope( AS_GLOBAL )
  524. .FriendlyName( _( "Change Track Width" ) )
  525. .Tooltip( _( "Updates selected track & via sizes" ) ) );
  526. TOOL_ACTION PCB_ACTIONS::filletTracks( TOOL_ACTION_ARGS()
  527. .Name( "pcbnew.InteractiveEdit.filletTracks" )
  528. .Scope( AS_GLOBAL )
  529. .FriendlyName( _( "Fillet Tracks" ) )
  530. .Tooltip( _( "Adds arcs tangent to the selected straight track segments" ) ) );
  531. TOOL_ACTION PCB_ACTIONS::filletLines( TOOL_ACTION_ARGS()
  532. .Name( "pcbnew.InteractiveEdit.filletLines" )
  533. .Scope( AS_GLOBAL )
  534. .FriendlyName( _( "Fillet Lines..." ) )
  535. .Tooltip( _( "Adds arcs tangent to the selected lines" ) )
  536. .Icon( BITMAPS::fillet ) );
  537. TOOL_ACTION PCB_ACTIONS::chamferLines( TOOL_ACTION_ARGS()
  538. .Name( "pcbnew.InteractiveEdit.chamferLines" )
  539. .Scope( AS_GLOBAL )
  540. .FriendlyName( _( "Chamfer Lines..." ) )
  541. .Tooltip( _( "Cut away corners between selected lines" ) )
  542. .Icon( BITMAPS::chamfer ) );
  543. TOOL_ACTION PCB_ACTIONS::healShapes( TOOL_ACTION_ARGS()
  544. .Name( "pcbnew.InteractiveEdit.healShapes" )
  545. .Scope( AS_GLOBAL )
  546. .FriendlyName( _( "Heal Shapes" ) )
  547. .Tooltip( _( "Connect shapes, possibly extending or cutting them, or adding extra geometry" ) )
  548. .Icon( BITMAPS::heal_shapes ) );
  549. TOOL_ACTION PCB_ACTIONS::extendLines( TOOL_ACTION_ARGS()
  550. .Name( "pcbnew.InteractiveEdit.extendLines" )
  551. .Scope( AS_GLOBAL )
  552. .FriendlyName( _( "Extend Lines to Meet" ) )
  553. .Tooltip( _( "Extend lines to meet each other" ) ) );
  554. TOOL_ACTION PCB_ACTIONS::mergePolygons( TOOL_ACTION_ARGS()
  555. .Name( "pcbnew.InteractiveEdit.mergePolygons" )
  556. .Scope( AS_GLOBAL )
  557. .FriendlyName( _( "Merge Polygons" ) )
  558. .Tooltip( _( "Merge selected polygons into a single polygon" ) )
  559. .Icon( BITMAPS::merge_polygons ) );
  560. TOOL_ACTION PCB_ACTIONS::subtractPolygons( TOOL_ACTION_ARGS()
  561. .Name( "pcbnew.InteractiveEdit.subtractPolygons" )
  562. .Scope( AS_GLOBAL )
  563. .FriendlyName( _( "Subtract Polygons" ) )
  564. .Tooltip( _( "Subtract selected polygons from the last one selected" ) )
  565. .Icon( BITMAPS::subtract_polygons ) );
  566. TOOL_ACTION PCB_ACTIONS::intersectPolygons( TOOL_ACTION_ARGS()
  567. .Name( "pcbnew.InteractiveEdit.intersectPolygons" )
  568. .Scope( AS_GLOBAL )
  569. .FriendlyName( _( "Intersect Polygons" ) )
  570. .Tooltip( _( "Create the intersection of the selected polygons" ) )
  571. .Icon( BITMAPS::intersect_polygons ) );
  572. TOOL_ACTION PCB_ACTIONS::deleteFull( TOOL_ACTION_ARGS()
  573. .Name( "pcbnew.InteractiveEdit.deleteFull" )
  574. .Scope( AS_GLOBAL )
  575. .DefaultHotkey( MD_SHIFT + WXK_DELETE )
  576. .LegacyHotkeyName( "Delete Full Track" )
  577. .FriendlyName( _( "Delete Full Track" ) )
  578. .Tooltip( _( "Deletes selected item(s) and copper connections" ) )
  579. .Icon( BITMAPS::delete_cursor )
  580. .Flags( AF_NONE )
  581. .Parameter( PCB_ACTIONS::REMOVE_FLAGS::ALT ) );
  582. TOOL_ACTION PCB_ACTIONS::properties( TOOL_ACTION_ARGS()
  583. .Name( "pcbnew.InteractiveEdit.properties" )
  584. .Scope( AS_GLOBAL )
  585. .DefaultHotkey( 'E' )
  586. .LegacyHotkeyName( "Edit Item" )
  587. .FriendlyName( _( "Properties..." ) )
  588. .Tooltip( _( "Displays item properties dialog" ) )
  589. .Icon( BITMAPS::edit ) );
  590. // FOOTPRINT_EDITOR_CONTROL
  591. //
  592. TOOL_ACTION PCB_ACTIONS::showFootprintTree( TOOL_ACTION_ARGS()
  593. .Name( "pcbnew.ModuleEditor.showFootprintTree" )
  594. .Scope( AS_GLOBAL )
  595. .FriendlyName( _( "Show Footprint Tree" ) )
  596. .Icon( BITMAPS::search_tree ) );
  597. TOOL_ACTION PCB_ACTIONS::hideFootprintTree( TOOL_ACTION_ARGS()
  598. .Name( "pcbnew.ModuleEditor.hideFootprintTree" )
  599. .Scope( AS_GLOBAL )
  600. .FriendlyName( _( "Hide Footprint Tree" ) )
  601. .Icon( BITMAPS::search_tree ) );
  602. TOOL_ACTION PCB_ACTIONS::newFootprint( TOOL_ACTION_ARGS()
  603. .Name( "pcbnew.ModuleEditor.newFootprint" )
  604. .Scope( AS_GLOBAL )
  605. .DefaultHotkey( MD_CTRL + 'N' )
  606. .LegacyHotkeyName( "New" )
  607. .FriendlyName( _( "New Footprint..." ) )
  608. .Tooltip( _( "Create a new, empty footprint" ) )
  609. .Icon( BITMAPS::new_footprint ) );
  610. TOOL_ACTION PCB_ACTIONS::createFootprint( TOOL_ACTION_ARGS()
  611. .Name( "pcbnew.ModuleEditor.createFootprint" )
  612. .Scope( AS_GLOBAL )
  613. .FriendlyName( _( "Create Footprint..." ) )
  614. .Tooltip( _( "Create a new footprint using the Footprint Wizard" ) )
  615. .Icon( BITMAPS::module_wizard ) );
  616. TOOL_ACTION PCB_ACTIONS::editFootprint( TOOL_ACTION_ARGS()
  617. .Name( "pcbnew.ModuleEditor.editFootprint" )
  618. .Scope( AS_GLOBAL )
  619. .FriendlyName( _( "Edit Footprint" ) )
  620. .Tooltip( _( "Show selected footprint on editor canvas" ) )
  621. .Icon( BITMAPS::edit ) );
  622. TOOL_ACTION PCB_ACTIONS::duplicateFootprint( TOOL_ACTION_ARGS()
  623. .Name( "pcbnew.ModuleEditor.duplicateFootprint" )
  624. .Scope( AS_GLOBAL )
  625. .FriendlyName( _( "Duplicate Footprint" ) )
  626. .Tooltip( _( "Make a copy of the selected footprint" ) )
  627. .Icon( BITMAPS::duplicate ) );
  628. TOOL_ACTION PCB_ACTIONS::renameFootprint( TOOL_ACTION_ARGS()
  629. .Name( "pcbnew.ModuleEditor.renameFootprint" )
  630. .Scope( AS_GLOBAL )
  631. .FriendlyName( _( "Rename Footprint..." ) )
  632. .Tooltip( _( "Rename the selected footprint" ) )
  633. .Icon( BITMAPS::edit ) );
  634. TOOL_ACTION PCB_ACTIONS::deleteFootprint( TOOL_ACTION_ARGS()
  635. .Name( "pcbnew.ModuleEditor.deleteFootprint" )
  636. .Scope( AS_GLOBAL )
  637. .FriendlyName( _( "Delete Footprint from Library" ) )
  638. .Tooltip( _( "Delete Footprint from Library" ) )
  639. .Icon( BITMAPS::trash ) );
  640. TOOL_ACTION PCB_ACTIONS::cutFootprint( TOOL_ACTION_ARGS()
  641. .Name( "pcbnew.ModuleEditor.cutFootprint" )
  642. .Scope( AS_GLOBAL )
  643. .FriendlyName( _( "Cut Footprint" ) )
  644. .Icon( BITMAPS::cut ) );
  645. TOOL_ACTION PCB_ACTIONS::copyFootprint( TOOL_ACTION_ARGS()
  646. .Name( "pcbnew.ModuleEditor.copyFootprint" )
  647. .Scope( AS_GLOBAL )
  648. .FriendlyName( _( "Copy Footprint" ) )
  649. .Icon( BITMAPS::copy ) );
  650. TOOL_ACTION PCB_ACTIONS::pasteFootprint( TOOL_ACTION_ARGS()
  651. .Name( "pcbnew.ModuleEditor.pasteFootprint" )
  652. .Scope( AS_GLOBAL )
  653. .FriendlyName( _( "Paste Footprint" ) )
  654. .Icon( BITMAPS::paste ) );
  655. TOOL_ACTION PCB_ACTIONS::importFootprint( TOOL_ACTION_ARGS()
  656. .Name( "pcbnew.ModuleEditor.importFootprint" )
  657. .Scope( AS_GLOBAL )
  658. .FriendlyName( _( "Import Footprint..." ) )
  659. .Tooltip( _( "Import footprint from file" ) )
  660. .Icon( BITMAPS::import_module ) );
  661. TOOL_ACTION PCB_ACTIONS::exportFootprint( TOOL_ACTION_ARGS()
  662. .Name( "pcbnew.ModuleEditor.exportFootprint" )
  663. .Scope( AS_GLOBAL )
  664. .FriendlyName( _( "Export Current Footprint..." ) )
  665. .Tooltip( _( "Export edited footprint to file" ) )
  666. .Icon( BITMAPS::export_module ) );
  667. TOOL_ACTION PCB_ACTIONS::footprintProperties( TOOL_ACTION_ARGS()
  668. .Name( "pcbnew.ModuleEditor.footprintProperties" )
  669. .Scope( AS_GLOBAL )
  670. .FriendlyName( _( "Footprint Properties..." ) )
  671. .Icon( BITMAPS::module_options ) );
  672. TOOL_ACTION PCB_ACTIONS::checkFootprint( TOOL_ACTION_ARGS()
  673. .Name( "pcbnew.ModuleEditor.checkFootprint" )
  674. .Scope( AS_GLOBAL )
  675. .FriendlyName( _( "Footprint Checker" ) )
  676. .Tooltip( _( "Show the footprint checker window" ) )
  677. .Icon( BITMAPS::erc ) );
  678. // GLOBAL_EDIT_TOOL
  679. //
  680. TOOL_ACTION PCB_ACTIONS::updateFootprint( TOOL_ACTION_ARGS()
  681. .Name( "pcbnew.GlobalEdit.updateFootprint" )
  682. .Scope( AS_GLOBAL )
  683. .FriendlyName( _( "Update Footprint..." ) )
  684. .Tooltip( _( "Update footprint to include any changes from the library" ) )
  685. .Icon( BITMAPS::refresh ) );
  686. TOOL_ACTION PCB_ACTIONS::updateFootprints( TOOL_ACTION_ARGS()
  687. .Name( "pcbnew.GlobalEdit.updateFootprints" )
  688. .Scope( AS_GLOBAL )
  689. .FriendlyName( _( "Update Footprints from Library..." ) )
  690. .Tooltip( _( "Update footprints to include any changes from the library" ) )
  691. .Icon( BITMAPS::refresh ) );
  692. TOOL_ACTION PCB_ACTIONS::removeUnusedPads( TOOL_ACTION_ARGS()
  693. .Name( "pcbnew.GlobalEdit.removeUnusedPads" )
  694. .Scope( AS_GLOBAL )
  695. .FriendlyName( _( "Remove Unused Pads..." ) )
  696. .Tooltip( _( "Remove or restore the unconnected inner layers on through hole pads and vias" ) )
  697. .Icon( BITMAPS::pads_remove ) );
  698. TOOL_ACTION PCB_ACTIONS::changeFootprint( TOOL_ACTION_ARGS()
  699. .Name( "pcbnew.GlobalEdit.changeFootprint" )
  700. .Scope( AS_GLOBAL )
  701. .FriendlyName( _( "Change Footprint..." ) )
  702. .Tooltip( _( "Assign a different footprint from the library" ) )
  703. .Icon( BITMAPS::exchange ) );
  704. TOOL_ACTION PCB_ACTIONS::changeFootprints( TOOL_ACTION_ARGS()
  705. .Name( "pcbnew.GlobalEdit.changeFootprints" )
  706. .Scope( AS_GLOBAL )
  707. .FriendlyName( _( "Change Footprints..." ) )
  708. .Tooltip( _( "Assign different footprints from the library" ) )
  709. .Icon( BITMAPS::exchange ) );
  710. TOOL_ACTION PCB_ACTIONS::swapLayers( TOOL_ACTION_ARGS()
  711. .Name( "pcbnew.GlobalEdit.swapLayers" )
  712. .Scope( AS_GLOBAL )
  713. .FriendlyName( _( "Swap Layers..." ) )
  714. .Tooltip( _( "Move tracks or drawings from one layer to another" ) )
  715. .Icon( BITMAPS::swap_layer ) );
  716. TOOL_ACTION PCB_ACTIONS::editTracksAndVias( TOOL_ACTION_ARGS()
  717. .Name( "pcbnew.GlobalEdit.editTracksAndVias" )
  718. .Scope( AS_GLOBAL )
  719. .FriendlyName( _( "Edit Track & Via Properties..." ) )
  720. .Tooltip( _( "Edit track and via properties globally across board" ) )
  721. .Icon( BITMAPS::width_track_via ) );
  722. TOOL_ACTION PCB_ACTIONS::editTextAndGraphics( TOOL_ACTION_ARGS()
  723. .Name( "pcbnew.GlobalEdit.editTextAndGraphics" )
  724. .Scope( AS_GLOBAL )
  725. .FriendlyName( _( "Edit Text & Graphics Properties..." ) )
  726. .Tooltip( _( "Edit Text and graphics properties globally across board" ) )
  727. .Icon( BITMAPS::text ) );
  728. TOOL_ACTION PCB_ACTIONS::editTeardrops( TOOL_ACTION_ARGS()
  729. .Name( "pcbnew.GlobalEdit.editTeardrops" )
  730. .Scope( AS_GLOBAL )
  731. .FriendlyName( _( "Edit Teardrops..." ) )
  732. .Tooltip( _( "Add, remove or edit teardrops globally across board" ) )
  733. .Icon( BITMAPS::via ) );
  734. TOOL_ACTION PCB_ACTIONS::globalDeletions( TOOL_ACTION_ARGS()
  735. .Name( "pcbnew.GlobalEdit.globalDeletions" )
  736. .Scope( AS_GLOBAL )
  737. .FriendlyName( _( "Global Deletions..." ) )
  738. .Tooltip( _( "Delete tracks, footprints and graphic items from board" ) )
  739. .Icon( BITMAPS::general_deletions ) );
  740. TOOL_ACTION PCB_ACTIONS::cleanupTracksAndVias( TOOL_ACTION_ARGS()
  741. .Name( "pcbnew.GlobalEdit.cleanupTracksAndVias" )
  742. .Scope( AS_GLOBAL )
  743. .FriendlyName( _( "Cleanup Tracks & Vias..." ) )
  744. .Tooltip( _( "Cleanup redundant items, shorting items, etc." ) )
  745. .Icon( BITMAPS::cleanup_tracks_and_vias ) );
  746. TOOL_ACTION PCB_ACTIONS::cleanupGraphics( TOOL_ACTION_ARGS()
  747. .Name( "pcbnew.GlobalEdit.cleanupGraphics" )
  748. .Scope( AS_GLOBAL )
  749. .FriendlyName( _( "Cleanup Graphics..." ) )
  750. .Tooltip( _( "Cleanup redundant items, etc." ) )
  751. .Icon( BITMAPS::cleanup_graphics ) );
  752. // MICROWAVE_TOOL
  753. //
  754. TOOL_ACTION PCB_ACTIONS::microwaveCreateGap( TOOL_ACTION_ARGS()
  755. .Name( "pcbnew.MicrowaveTool.createGap" )
  756. .Scope( AS_GLOBAL )
  757. .FriendlyName( _( "Add Microwave Gap" ) )
  758. .Tooltip( _( "Create gap of specified length for microwave applications" ) )
  759. .Icon( BITMAPS::mw_add_gap )
  760. .Flags( AF_ACTIVATE )
  761. .Parameter( MICROWAVE_FOOTPRINT_SHAPE::GAP ) );
  762. TOOL_ACTION PCB_ACTIONS::microwaveCreateStub( TOOL_ACTION_ARGS()
  763. .Name( "pcbnew.MicrowaveTool.createStub" )
  764. .Scope( AS_GLOBAL )
  765. .FriendlyName( _( "Add Microwave Stub" ) )
  766. .Tooltip( _( "Create stub of specified length for microwave applications" ) )
  767. .Icon( BITMAPS::mw_add_stub )
  768. .Flags( AF_ACTIVATE )
  769. .Parameter( MICROWAVE_FOOTPRINT_SHAPE::STUB ) );
  770. TOOL_ACTION PCB_ACTIONS::microwaveCreateStubArc( TOOL_ACTION_ARGS()
  771. .Name( "pcbnew.MicrowaveTool.createStubArc" )
  772. .Scope( AS_GLOBAL )
  773. .FriendlyName( _( "Add Microwave Arc Stub" ) )
  774. .Tooltip( _( "Create stub (arc) of specified size for microwave applications" ) )
  775. .Icon( BITMAPS::mw_add_stub_arc )
  776. .Flags( AF_ACTIVATE )
  777. .Parameter( MICROWAVE_FOOTPRINT_SHAPE::STUB_ARC ) );
  778. TOOL_ACTION PCB_ACTIONS::microwaveCreateFunctionShape( TOOL_ACTION_ARGS()
  779. .Name( "pcbnew.MicrowaveTool.createFunctionShape" )
  780. .Scope( AS_GLOBAL )
  781. .FriendlyName( _( "Add Microwave Polygonal Shape" ) )
  782. .Tooltip( _( "Create a microwave polygonal shape from a list of vertices" ) )
  783. .Icon( BITMAPS::mw_add_shape )
  784. .Flags( AF_ACTIVATE )
  785. .Parameter( MICROWAVE_FOOTPRINT_SHAPE::FUNCTION_SHAPE ) );
  786. TOOL_ACTION PCB_ACTIONS::microwaveCreateLine( TOOL_ACTION_ARGS()
  787. .Name( "pcbnew.MicrowaveTool.createLine" )
  788. .Scope( AS_GLOBAL )
  789. .FriendlyName( _( "Add Microwave Line" ) )
  790. .Tooltip( _( "Create line of specified length for microwave applications" ) )
  791. .Icon( BITMAPS::mw_add_line )
  792. .Flags( AF_ACTIVATE ) );
  793. // PAD_TOOL
  794. //
  795. TOOL_ACTION PCB_ACTIONS::copyPadSettings( TOOL_ACTION_ARGS()
  796. .Name( "pcbnew.PadTool.CopyPadSettings" )
  797. .Scope( AS_GLOBAL )
  798. .FriendlyName( _( "Copy Pad Properties to Default" ) )
  799. .Tooltip( _( "Copy current pad's properties" ) )
  800. .Icon( BITMAPS::copy_pad_settings ) );
  801. TOOL_ACTION PCB_ACTIONS::applyPadSettings( TOOL_ACTION_ARGS()
  802. .Name( "pcbnew.PadTool.ApplyPadSettings" )
  803. .Scope( AS_GLOBAL )
  804. .FriendlyName( _( "Paste Default Pad Properties to Selected" ) )
  805. .Tooltip( _( "Replace the current pad's properties with those copied earlier" ) )
  806. .Icon( BITMAPS::apply_pad_settings ) );
  807. TOOL_ACTION PCB_ACTIONS::pushPadSettings( TOOL_ACTION_ARGS()
  808. .Name( "pcbnew.PadTool.PushPadSettings" )
  809. .Scope( AS_GLOBAL )
  810. .FriendlyName( _( "Push Pad Properties to Other Pads..." ) )
  811. .Tooltip( _( "Copy the current pad's properties to other pads" ) )
  812. .Icon( BITMAPS::push_pad_settings ) );
  813. TOOL_ACTION PCB_ACTIONS::enumeratePads( TOOL_ACTION_ARGS()
  814. .Name( "pcbnew.PadTool.enumeratePads" )
  815. .Scope( AS_GLOBAL )
  816. .FriendlyName( _( "Renumber Pads..." ) )
  817. .Tooltip( _( "Renumber pads by clicking on them in the desired order" ) )
  818. .Icon( BITMAPS::pad_enumerate )
  819. .Flags( AF_ACTIVATE ) );
  820. TOOL_ACTION PCB_ACTIONS::placePad( TOOL_ACTION_ARGS()
  821. .Name( "pcbnew.PadTool.placePad" )
  822. .Scope( AS_GLOBAL )
  823. .FriendlyName( _( "Add Pad" ) )
  824. .Tooltip( _( "Add a pad" ) )
  825. .Icon( BITMAPS::pad )
  826. .Flags( AF_ACTIVATE ) );
  827. TOOL_ACTION PCB_ACTIONS::explodePad( TOOL_ACTION_ARGS()
  828. .Name( "pcbnew.PadTool.explodePad" )
  829. .Scope( AS_GLOBAL )
  830. .DefaultHotkey( MD_CTRL + 'E' )
  831. .FriendlyName( _( "Edit Pad as Graphic Shapes" ) )
  832. .Tooltip( _( "Ungroups a custom-shaped pad for editing as individual graphic shapes" ) )
  833. .Icon( BITMAPS::custom_pad_to_primitives ) );
  834. TOOL_ACTION PCB_ACTIONS::recombinePad( TOOL_ACTION_ARGS()
  835. .Name( "pcbnew.PadTool.recombinePad" )
  836. .Scope( AS_GLOBAL )
  837. .DefaultHotkey( MD_CTRL + 'E' )
  838. .FriendlyName( _( "Finish Pad Edit" ) )
  839. .Tooltip( _( "Regroups all touching graphic shapes into the edited pad" ) )
  840. .Icon( BITMAPS::custom_pad_to_primitives ) );
  841. TOOL_ACTION PCB_ACTIONS::defaultPadProperties( TOOL_ACTION_ARGS()
  842. .Name( "pcbnew.PadTool.defaultPadProperties" )
  843. .Scope( AS_GLOBAL )
  844. .FriendlyName( _( "Default Pad Properties..." ) )
  845. .Tooltip( _( "Edit the pad properties used when creating new pads" ) )
  846. .Icon( BITMAPS::options_pad ) );
  847. // SCRIPTING TOOL
  848. //
  849. TOOL_ACTION PCB_ACTIONS::pluginsReload( TOOL_ACTION_ARGS()
  850. .Name( "pcbnew.ScriptingTool.pluginsReload" )
  851. .Scope( AS_GLOBAL )
  852. .FriendlyName( _( "Refresh Plugins" ) )
  853. .Tooltip( _( "Reload all python plugins and refresh plugin menus" ) )
  854. .Icon( BITMAPS::reload ) );
  855. TOOL_ACTION PCB_ACTIONS::pluginsShowFolder( TOOL_ACTION_ARGS()
  856. .Name( "pcbnew.ScriptingTool.pluginsShowFolder" )
  857. .Scope( AS_GLOBAL )
  858. #ifdef __WXMAC__
  859. .FriendlyName( _( "Reveal Plugin Folder in Finder" ) )
  860. .Tooltip( _( "Reveals the plugins folder in a Finder window" ) )
  861. #else
  862. .FriendlyName( _( "Open Plugin Directory" ) )
  863. .Tooltip( _( "Opens the directory in the default system file manager" ) )
  864. #endif
  865. .Icon( BITMAPS::directory_open ) );
  866. // BOARD_EDITOR_CONTROL
  867. //
  868. TOOL_ACTION PCB_ACTIONS::boardSetup( TOOL_ACTION_ARGS()
  869. .Name( "pcbnew.EditorControl.boardSetup" )
  870. .Scope( AS_GLOBAL )
  871. .FriendlyName( _( "Board Setup..." ) )
  872. .Tooltip( _( "Edit board setup including layers, design rules and various defaults" ) )
  873. .Icon( BITMAPS::options_board ) );
  874. TOOL_ACTION PCB_ACTIONS::importNetlist( TOOL_ACTION_ARGS()
  875. .Name( "pcbnew.EditorControl.importNetlist" )
  876. .Scope( AS_GLOBAL )
  877. .FriendlyName( _( "Import Netlist..." ) )
  878. .Tooltip( _( "Read netlist and update board connectivity" ) )
  879. .Icon( BITMAPS::netlist ) );
  880. TOOL_ACTION PCB_ACTIONS::importSpecctraSession( TOOL_ACTION_ARGS()
  881. .Name( "pcbnew.EditorControl.importSpecctraSession" )
  882. .Scope( AS_GLOBAL )
  883. .FriendlyName( _( "Import Specctra Session..." ) )
  884. .Tooltip( _( "Import routed Specctra session (*.ses) file" ) )
  885. .Icon( BITMAPS::import ) );
  886. TOOL_ACTION PCB_ACTIONS::exportSpecctraDSN( TOOL_ACTION_ARGS()
  887. .Name( "pcbnew.EditorControl.exportSpecctraDSN" )
  888. .Scope( AS_GLOBAL )
  889. .FriendlyName( _( "Export Specctra DSN..." ) )
  890. .Tooltip( _( "Export Specctra DSN routing info" ) )
  891. .Icon( BITMAPS::export_dsn ) );
  892. TOOL_ACTION PCB_ACTIONS::generateGerbers( TOOL_ACTION_ARGS()
  893. .Name( "pcbnew.EditorControl.generateGerbers" )
  894. .Scope( AS_GLOBAL )
  895. .FriendlyName( _( "Gerbers (.gbr)..." ) )
  896. .Tooltip( _( "Generate Gerbers for fabrication" ) )
  897. .Icon( BITMAPS::post_gerber ) );
  898. TOOL_ACTION PCB_ACTIONS::generateDrillFiles( TOOL_ACTION_ARGS()
  899. .Name( "pcbnew.EditorControl.generateDrillFiles" )
  900. .Scope( AS_GLOBAL )
  901. .FriendlyName( _( "Drill Files (.drl)..." ) )
  902. .Tooltip( _( "Generate Excellon drill file(s)" ) )
  903. .Icon( BITMAPS::post_drill ) );
  904. TOOL_ACTION PCB_ACTIONS::generatePosFile( TOOL_ACTION_ARGS()
  905. .Name( "pcbnew.EditorControl.generatePosFile" )
  906. .Scope( AS_GLOBAL )
  907. .FriendlyName( _( "Component Placement (.pos, .gbr)..." ) )
  908. .Tooltip( _( "Generate component placement file(s) for pick and place" ) )
  909. .Icon( BITMAPS::post_compo ) );
  910. TOOL_ACTION PCB_ACTIONS::generateReportFile( TOOL_ACTION_ARGS()
  911. .Name( "pcbnew.EditorControl.generateReportFile" )
  912. .Scope( AS_GLOBAL )
  913. .FriendlyName( _( "Footprint Report (.rpt)..." ) )
  914. .Tooltip( _( "Create report of all footprints from current board" ) )
  915. .Icon( BITMAPS::post_rpt ) );
  916. TOOL_ACTION PCB_ACTIONS::generateIPC2581File( TOOL_ACTION_ARGS()
  917. .Name( "pcbnew.EditorControl.generateIPC2581File" )
  918. .Scope( AS_GLOBAL )
  919. .FriendlyName( _( "IPC-2581 File (.xml)..." ) )
  920. .Tooltip( _( "Generate an IPC-2581 file" ) )
  921. .Icon( BITMAPS::post_xml ) );
  922. TOOL_ACTION PCB_ACTIONS::generateD356File( TOOL_ACTION_ARGS()
  923. .Name( "pcbnew.EditorControl.generateD356File" )
  924. .Scope( AS_GLOBAL )
  925. .FriendlyName( _( "IPC-D-356 Netlist File..." ) )
  926. .Tooltip( _( "Generate IPC-D-356 netlist file" ) )
  927. .Icon( BITMAPS::post_d356 ) );
  928. TOOL_ACTION PCB_ACTIONS::generateBOM( TOOL_ACTION_ARGS()
  929. .Name( "pcbnew.EditorControl.generateBOM" )
  930. .Scope( AS_GLOBAL )
  931. .FriendlyName( _( "Bill of Materials..." ) )
  932. .Tooltip( _( "Create bill of materials from board" ) )
  933. .Icon( BITMAPS::post_bom ) );
  934. // Track & via size control
  935. TOOL_ACTION PCB_ACTIONS::trackWidthInc( TOOL_ACTION_ARGS()
  936. .Name( "pcbnew.EditorControl.trackWidthInc" )
  937. .Scope( AS_GLOBAL )
  938. .DefaultHotkey( 'W' )
  939. .LegacyHotkeyName( "Switch Track Width To Next" )
  940. .FriendlyName( _( "Switch Track Width to Next" ) )
  941. .Tooltip( _( "Change track width to next pre-defined size" ) ) );
  942. TOOL_ACTION PCB_ACTIONS::trackWidthDec( TOOL_ACTION_ARGS()
  943. .Name( "pcbnew.EditorControl.trackWidthDec" )
  944. .Scope( AS_GLOBAL )
  945. .DefaultHotkey( MD_SHIFT + 'W' )
  946. .LegacyHotkeyName( "Switch Track Width To Previous" )
  947. .FriendlyName( _( "Switch Track Width to Previous" ) )
  948. .Tooltip( _( "Change track width to previous pre-defined size" ) ) );
  949. TOOL_ACTION PCB_ACTIONS::viaSizeInc( TOOL_ACTION_ARGS()
  950. .Name( "pcbnew.EditorControl.viaSizeInc" )
  951. .Scope( AS_GLOBAL )
  952. .DefaultHotkey( '\'' )
  953. .LegacyHotkeyName( "Increase Via Size" )
  954. .FriendlyName( _( "Increase Via Size" ) )
  955. .Tooltip( _( "Change via size to next pre-defined size" ) ) );
  956. TOOL_ACTION PCB_ACTIONS::viaSizeDec( TOOL_ACTION_ARGS()
  957. .Name( "pcbnew.EditorControl.viaSizeDec" )
  958. .Scope( AS_GLOBAL )
  959. .DefaultHotkey( '\\' )
  960. .LegacyHotkeyName( "Decrease Via Size" )
  961. .FriendlyName( _( "Decrease Via Size" ) )
  962. .Tooltip( _( "Change via size to previous pre-defined size" ) ) );
  963. TOOL_ACTION PCB_ACTIONS::trackViaSizeChanged( TOOL_ACTION_ARGS()
  964. .Name( "pcbnew.EditorControl.trackViaSizeChanged" )
  965. .Scope( AS_GLOBAL )
  966. .Flags( AF_NOTIFY ) );
  967. TOOL_ACTION PCB_ACTIONS::assignNetClass( TOOL_ACTION_ARGS()
  968. .Name( "pcbnew.EditorControl.assignNetclass" )
  969. .Scope( AS_GLOBAL )
  970. .FriendlyName( _( "Assign Netclass..." ) )
  971. .Tooltip( _( "Assign a netclass to nets matching a pattern" ) )
  972. .Icon( BITMAPS::netlist ) );
  973. TOOL_ACTION PCB_ACTIONS::zoneMerge( TOOL_ACTION_ARGS()
  974. .Name( "pcbnew.EditorControl.zoneMerge" )
  975. .Scope( AS_GLOBAL )
  976. .FriendlyName( _( "Merge Zones" ) )
  977. .Tooltip( _( "Merge zones" ) ) );
  978. TOOL_ACTION PCB_ACTIONS::zoneDuplicate( TOOL_ACTION_ARGS()
  979. .Name( "pcbnew.EditorControl.zoneDuplicate" )
  980. .Scope( AS_GLOBAL )
  981. .FriendlyName( _( "Duplicate Zone onto Layer..." ) )
  982. .Tooltip( _( "Duplicate zone outline onto a different layer" ) )
  983. .Icon( BITMAPS::zone_duplicate ) );
  984. TOOL_ACTION PCB_ACTIONS::placeFootprint( TOOL_ACTION_ARGS()
  985. .Name( "pcbnew.EditorControl.placeFootprint" )
  986. .Scope( AS_GLOBAL )
  987. .DefaultHotkey( 'A' )
  988. .LegacyHotkeyName( "Add Footprint" )
  989. .FriendlyName( _( "Add Footprint" ) )
  990. .Tooltip( _( "Add a footprint" ) )
  991. .Icon( BITMAPS::module )
  992. .Flags( AF_ACTIVATE )
  993. .Parameter<FOOTPRINT*>( nullptr ) );
  994. TOOL_ACTION PCB_ACTIONS::drillOrigin( TOOL_ACTION_ARGS()
  995. .Name( "pcbnew.EditorControl.drillOrigin" )
  996. .Scope( AS_GLOBAL )
  997. .FriendlyName( _( "Drill/Place File Origin" ) )
  998. .Tooltip( _( "Place origin point for drill files and component placement files" ) )
  999. .Icon( BITMAPS::set_origin )
  1000. .Flags( AF_ACTIVATE ) );
  1001. TOOL_ACTION PCB_ACTIONS::drillResetOrigin( TOOL_ACTION_ARGS()
  1002. .Name( "pcbnew.EditorControl.drillResetOrigin" )
  1003. .Scope( AS_GLOBAL )
  1004. .LegacyHotkeyName( "Reset Drill Origin" )
  1005. .FriendlyName( _( "Reset Drill Origin" ) ) );
  1006. TOOL_ACTION PCB_ACTIONS::toggleLock( TOOL_ACTION_ARGS()
  1007. .Name( "pcbnew.EditorControl.toggleLock" )
  1008. .Scope( AS_GLOBAL )
  1009. .DefaultHotkey( 'L' )
  1010. .LegacyHotkeyName( "Lock/Unlock Footprint" )
  1011. .FriendlyName( _( "Toggle Lock" ) )
  1012. .Tooltip( _( "Lock or unlock selected items" ) )
  1013. .Icon( BITMAPS::lock_unlock ) );
  1014. TOOL_ACTION PCB_ACTIONS::toggleHV45Mode( TOOL_ACTION_ARGS()
  1015. .Name( "pcbnew.EditorControl.toggle45" )
  1016. .Scope( AS_GLOBAL )
  1017. .DefaultHotkey( MD_SHIFT + ' ' )
  1018. .FriendlyName( _( "Constrain to H, V, 45" ) )
  1019. .Tooltip( _( "Limit actions to horizontal, vertical, or 45 degrees from the starting point" ) )
  1020. .Icon( BITMAPS::hv45mode ) );
  1021. TOOL_ACTION PCB_ACTIONS::lock( TOOL_ACTION_ARGS()
  1022. .Name( "pcbnew.EditorControl.lock" )
  1023. .Scope( AS_GLOBAL )
  1024. .FriendlyName( _( "Lock" ) )
  1025. .Tooltip( _( "Prevent items from being moved and/or resized on the canvas" ) )
  1026. .Icon( BITMAPS::locked ) );
  1027. TOOL_ACTION PCB_ACTIONS::unlock( TOOL_ACTION_ARGS()
  1028. .Name( "pcbnew.EditorControl.unlock" )
  1029. .Scope( AS_GLOBAL )
  1030. .FriendlyName( _( "Unlock" ) )
  1031. .Tooltip( _( "Allow items to be moved and/or resized on the canvas" ) )
  1032. .Icon( BITMAPS::unlocked ) );
  1033. TOOL_ACTION PCB_ACTIONS::group( TOOL_ACTION_ARGS()
  1034. .Name( "pcbnew.EditorControl.group" )
  1035. .Scope( AS_GLOBAL )
  1036. .FriendlyName( _( "Group Items" ) )
  1037. .Tooltip( _( "Group the selected items so that they are treated as a single item" ) )
  1038. .Icon( BITMAPS::group ) );
  1039. TOOL_ACTION PCB_ACTIONS::ungroup( TOOL_ACTION_ARGS()
  1040. .Name( "pcbnew.EditorControl.ungroup" )
  1041. .Scope( AS_GLOBAL )
  1042. .FriendlyName( _( "Ungroup Items" ) )
  1043. .Tooltip( _( "Ungroup any selected groups" ) )
  1044. .Icon( BITMAPS::group_ungroup ) );
  1045. TOOL_ACTION PCB_ACTIONS::removeFromGroup( TOOL_ACTION_ARGS()
  1046. .Name( "pcbnew.EditorControl.removeFromGroup" )
  1047. .Scope( AS_GLOBAL )
  1048. .FriendlyName( _( "Remove Items" ) )
  1049. .Tooltip( _( "Remove items from group" ) )
  1050. .Icon( BITMAPS::group_remove ) );
  1051. TOOL_ACTION PCB_ACTIONS::groupEnter( TOOL_ACTION_ARGS()
  1052. .Name( "pcbnew.EditorControl.groupEnter" )
  1053. .Scope( AS_GLOBAL )
  1054. .FriendlyName( _( "Enter Group" ) )
  1055. .Tooltip( _( "Enter the group to edit items" ) )
  1056. .Icon( BITMAPS::group_enter ) );
  1057. TOOL_ACTION PCB_ACTIONS::groupLeave( TOOL_ACTION_ARGS()
  1058. .Name( "pcbnew.EditorControl.groupLeave" )
  1059. .Scope( AS_GLOBAL )
  1060. .FriendlyName( _( "Leave Group" ) )
  1061. .Tooltip( _( "Leave the current group" ) )
  1062. .Icon( BITMAPS::group_leave ) );
  1063. TOOL_ACTION PCB_ACTIONS::appendBoard( TOOL_ACTION_ARGS()
  1064. .Name( "pcbnew.EditorControl.appendBoard" )
  1065. .Scope( AS_GLOBAL )
  1066. .FriendlyName( _( "Append Board..." ) )
  1067. .Tooltip( _( "Open another board and append its contents to this board" ) )
  1068. .Icon( BITMAPS::add_board ) );
  1069. TOOL_ACTION PCB_ACTIONS::highlightNet( TOOL_ACTION_ARGS()
  1070. .Name( "pcbnew.EditorControl.highlightNet" )
  1071. .Scope( AS_GLOBAL )
  1072. .DefaultHotkey( '`' )
  1073. // Don't be tempted to remove "Modern Toolset only". It's in the legacy property name.
  1074. .LegacyHotkeyName( "Toggle Highlight of Selected Net (Modern Toolset only)" )
  1075. .FriendlyName( _( "Highlight Net" ) )
  1076. .Tooltip( _( "Highlight net under cursor" ) )
  1077. .Icon( BITMAPS::net_highlight )
  1078. .Parameter<int>( 0 ) );
  1079. TOOL_ACTION PCB_ACTIONS::toggleLastNetHighlight( TOOL_ACTION_ARGS()
  1080. .Name( "pcbnew.EditorControl.toggleLastNetHighlight" )
  1081. .Scope( AS_GLOBAL )
  1082. .FriendlyName( _( "Toggle Last Net Highlight" ) )
  1083. .Tooltip( _( "Toggle between last two highlighted nets" ) )
  1084. .Parameter<int>( 0 ) );
  1085. TOOL_ACTION PCB_ACTIONS::clearHighlight( TOOL_ACTION_ARGS()
  1086. .Name( "pcbnew.EditorControl.clearHighlight" )
  1087. .Scope( AS_GLOBAL )
  1088. .DefaultHotkey( '~' )
  1089. .FriendlyName( _( "Clear Net Highlighting" ) )
  1090. .Tooltip( _( "Clear any existing net highlighting" ) ) );
  1091. TOOL_ACTION PCB_ACTIONS::toggleNetHighlight( TOOL_ACTION_ARGS()
  1092. .Name( "pcbnew.EditorControl.toggleNetHighlight" )
  1093. .Scope( AS_GLOBAL )
  1094. .DefaultHotkey( MD_ALT + '`' )
  1095. .FriendlyName( _( "Toggle Net Highlight" ) )
  1096. .Tooltip( _( "Toggle net highlighting" ) )
  1097. .Icon( BITMAPS::net_highlight )
  1098. .Parameter<int>( 0 ) );
  1099. TOOL_ACTION PCB_ACTIONS::highlightNetSelection( TOOL_ACTION_ARGS()
  1100. .Name( "pcbnew.EditorControl.highlightNetSelection" )
  1101. .Scope( AS_GLOBAL )
  1102. .FriendlyName( _( "Highlight Net" ) )
  1103. .Tooltip( _( "Highlight all copper items on the selected net(s)" ) )
  1104. .Icon( BITMAPS::net_highlight )
  1105. .Parameter<int>( 0 ) );
  1106. TOOL_ACTION PCB_ACTIONS::highlightItem( TOOL_ACTION_ARGS()
  1107. .Name( "pcbnew.EditorControl.highlightItem" )
  1108. .Scope( AS_GLOBAL ) );
  1109. TOOL_ACTION PCB_ACTIONS::hideNetInRatsnest( TOOL_ACTION_ARGS()
  1110. .Name( "pcbnew.EditorControl.hideNet" )
  1111. .Scope( AS_GLOBAL )
  1112. .FriendlyName( _( "Hide Net in Ratsnest" ) )
  1113. .Tooltip( _( "Hide the selected net in the ratsnest of unconnected net lines/arcs" ) )
  1114. .Icon( BITMAPS::hide_ratsnest )
  1115. .Parameter<int>( 0 ) ); // Default to hiding selected net
  1116. TOOL_ACTION PCB_ACTIONS::showNetInRatsnest( TOOL_ACTION_ARGS()
  1117. .Name( "pcbnew.EditorControl.showNet" )
  1118. .Scope( AS_GLOBAL )
  1119. .FriendlyName( _( "Show Net in Ratsnest" ) )
  1120. .Tooltip( _( "Show the selected net in the ratsnest of unconnected net lines/arcs" ) )
  1121. .Icon( BITMAPS::show_ratsnest )
  1122. .Parameter<int>( 0 ) ); // Default to showing selected net
  1123. TOOL_ACTION PCB_ACTIONS::showEeschema( TOOL_ACTION_ARGS()
  1124. .Name( "pcbnew.EditorControl.showEeschema" )
  1125. .Scope( AS_GLOBAL )
  1126. .FriendlyName( _( "Switch to Schematic Editor" ) )
  1127. .Tooltip( _( "Open schematic in schematic editor" ) )
  1128. .Icon( BITMAPS::icon_eeschema_24 ) );
  1129. // PCB_CONTROL
  1130. //
  1131. TOOL_ACTION PCB_ACTIONS::localRatsnestTool( TOOL_ACTION_ARGS()
  1132. .Name( "pcbnew.Control.localRatsnestTool" )
  1133. .Scope( AS_GLOBAL )
  1134. .FriendlyName( _( "Local Ratsnest" ) )
  1135. .Tooltip( _( "Toggle ratsnest display of selected item(s)" ) )
  1136. .Icon( BITMAPS::tool_ratsnest )
  1137. .Flags( AF_ACTIVATE ) );
  1138. TOOL_ACTION PCB_ACTIONS::hideLocalRatsnest( TOOL_ACTION_ARGS()
  1139. .Name( "pcbnew.Control.hideDynamicRatsnest" )
  1140. .Scope( AS_GLOBAL ) );
  1141. TOOL_ACTION PCB_ACTIONS::updateLocalRatsnest( TOOL_ACTION_ARGS()
  1142. .Name( "pcbnew.Control.updateLocalRatsnest" )
  1143. .Scope( AS_GLOBAL )
  1144. .Parameter( VECTOR2I() ) );
  1145. TOOL_ACTION PCB_ACTIONS::listNets( TOOL_ACTION_ARGS()
  1146. .Name( "pcbnew.Control.listNets" )
  1147. .Scope( AS_GLOBAL )
  1148. .FriendlyName( _( "Net Inspector" ) )
  1149. .Tooltip( _( "Show the net inspector" ) )
  1150. .Icon( BITMAPS::list_nets ) );
  1151. TOOL_ACTION PCB_ACTIONS::showPythonConsole( TOOL_ACTION_ARGS()
  1152. .Name( "pcbnew.Control.showPythonConsole" )
  1153. .Scope( AS_GLOBAL )
  1154. .FriendlyName( _( "Scripting Console" ) )
  1155. .Tooltip( _( "Show the Python scripting console" ) )
  1156. .Icon( BITMAPS::py_script ) );
  1157. TOOL_ACTION PCB_ACTIONS::showLayersManager( TOOL_ACTION_ARGS()
  1158. .Name( "pcbnew.Control.showLayersManager" )
  1159. .Scope( AS_GLOBAL )
  1160. .FriendlyName( _( "Show Appearance Manager" ) )
  1161. .Tooltip( _( "Show/hide the appearance manager" ) )
  1162. .Icon( BITMAPS::layers_manager ) );
  1163. TOOL_ACTION PCB_ACTIONS::flipBoard( TOOL_ACTION_ARGS()
  1164. .Name( "pcbnew.Control.flipBoard" )
  1165. .Scope( AS_GLOBAL )
  1166. .FriendlyName( _( "Flip Board View" ) )
  1167. .Tooltip( _( "View board from the opposite side" ) )
  1168. .Icon( BITMAPS::flip_board ) );
  1169. // Display modes
  1170. TOOL_ACTION PCB_ACTIONS::showRatsnest( TOOL_ACTION_ARGS()
  1171. .Name( "pcbnew.Control.showRatsnest" )
  1172. .Scope( AS_GLOBAL )
  1173. .FriendlyName( _( "Show Ratsnest" ) )
  1174. .Tooltip( _( "Show board ratsnest" ) )
  1175. .Icon( BITMAPS::general_ratsnest ) );
  1176. TOOL_ACTION PCB_ACTIONS::ratsnestLineMode( TOOL_ACTION_ARGS()
  1177. .Name( "pcbnew.Control.ratsnestLineMode" )
  1178. .Scope( AS_GLOBAL )
  1179. .FriendlyName( _( "Curved Ratsnest Lines" ) )
  1180. .Tooltip( _( "Show ratsnest with curved lines" ) )
  1181. .Icon( BITMAPS::curved_ratsnest ) );
  1182. TOOL_ACTION PCB_ACTIONS::ratsnestModeCycle( TOOL_ACTION_ARGS()
  1183. .Name( "pcbnew.Control.ratsnestModeCycle" )
  1184. .Scope( AS_GLOBAL )
  1185. .FriendlyName( _( "Ratsnest Mode (3-state)" ) )
  1186. .Tooltip( _( "Cycle between showing ratsnests for all layers, just visible layers, and none" ) ) );
  1187. TOOL_ACTION PCB_ACTIONS::netColorModeCycle( TOOL_ACTION_ARGS()
  1188. .Name( "pcbnew.Control.netColorMode" )
  1189. .Scope( AS_GLOBAL )
  1190. .FriendlyName( _( "Net Color Mode (3-state)" ) )
  1191. .Tooltip( _( "Cycle between using net and netclass colors for all nets, just ratsnests, and none" ) ) );
  1192. TOOL_ACTION PCB_ACTIONS::trackDisplayMode( TOOL_ACTION_ARGS()
  1193. .Name( "pcbnew.Control.trackDisplayMode" )
  1194. .Scope( AS_GLOBAL )
  1195. .DefaultHotkey( 'K' )
  1196. .LegacyHotkeyName( "Track Display Mode" )
  1197. .FriendlyName( _( "Sketch Tracks" ) )
  1198. .Tooltip( _( "Show tracks in outline mode" ) )
  1199. .Icon( BITMAPS::showtrack ) );
  1200. TOOL_ACTION PCB_ACTIONS::padDisplayMode( TOOL_ACTION_ARGS()
  1201. .Name( "pcbnew.Control.padDisplayMode" )
  1202. .Scope( AS_GLOBAL )
  1203. .FriendlyName( _( "Sketch Pads" ) )
  1204. .Tooltip( _( "Show pads in outline mode" ) )
  1205. .Icon( BITMAPS::pad_sketch ) );
  1206. TOOL_ACTION PCB_ACTIONS::viaDisplayMode( TOOL_ACTION_ARGS()
  1207. .Name( "pcbnew.Control.viaDisplayMode" )
  1208. .Scope( AS_GLOBAL )
  1209. .FriendlyName( _( "Sketch Vias" ) )
  1210. .Tooltip( _( "Show vias in outline mode" ) )
  1211. .Icon( BITMAPS::via_sketch ) );
  1212. TOOL_ACTION PCB_ACTIONS::graphicsOutlines( TOOL_ACTION_ARGS()
  1213. .Name( "pcbnew.Control.graphicOutlines" )
  1214. .Scope( AS_GLOBAL )
  1215. .FriendlyName( _( "Sketch Graphic Items" ) )
  1216. .Tooltip( _( "Show graphic items in outline mode" ) )
  1217. .Icon( BITMAPS::show_mod_edge ) );
  1218. TOOL_ACTION PCB_ACTIONS::textOutlines( TOOL_ACTION_ARGS()
  1219. .Name( "pcbnew.Control.textOutlines" )
  1220. .Scope( AS_GLOBAL )
  1221. .FriendlyName( _( "Sketch Text Items" ) )
  1222. .Tooltip( _( "Show footprint texts in line mode" ) )
  1223. .Icon( BITMAPS::text_sketch ) );
  1224. TOOL_ACTION PCB_ACTIONS::showPadNumbers( TOOL_ACTION_ARGS()
  1225. .Name( "pcbnew.Control.showPadNumbers" )
  1226. .Scope( AS_GLOBAL )
  1227. .FriendlyName( _( "Show Pad Numbers" ) )
  1228. .Tooltip( _( "Show pad numbers" ) )
  1229. .Icon( BITMAPS::pad_number ) );
  1230. TOOL_ACTION PCB_ACTIONS::zoneDisplayFilled( TOOL_ACTION_ARGS()
  1231. .Name( "pcbnew.Control.zoneDisplayEnable" )
  1232. .Scope( AS_GLOBAL )
  1233. .FriendlyName( _( "Draw Zone Fills" ) )
  1234. .Tooltip( _( "Show filled areas of zones" ) )
  1235. .Icon( BITMAPS::show_zone ) );
  1236. TOOL_ACTION PCB_ACTIONS::zoneDisplayOutline( TOOL_ACTION_ARGS()
  1237. .Name( "pcbnew.Control.zoneDisplayDisable" )
  1238. .Scope( AS_GLOBAL )
  1239. .FriendlyName( _( "Draw Zone Outlines" ) )
  1240. .Tooltip( _( "Show only zone boundaries" ) )
  1241. .Icon( BITMAPS::show_zone_disable ) );
  1242. TOOL_ACTION PCB_ACTIONS::zoneDisplayFractured( TOOL_ACTION_ARGS()
  1243. .Name( "pcbnew.Control.zoneDisplayOutlines" )
  1244. .Scope( AS_GLOBAL )
  1245. .FriendlyName( _( "Draw Zone Fill Fracture Borders" ) )
  1246. .Icon( BITMAPS::show_zone_outline_only ) );
  1247. TOOL_ACTION PCB_ACTIONS::zoneDisplayTriangulated( TOOL_ACTION_ARGS()
  1248. .Name( "pcbnew.Control.zoneDisplayTesselation" )
  1249. .Scope( AS_GLOBAL )
  1250. .FriendlyName( _( "Draw Zone Fill Triangulation" ) )
  1251. .Icon( BITMAPS::show_zone_triangulation ) );
  1252. TOOL_ACTION PCB_ACTIONS::zoneDisplayToggle( TOOL_ACTION_ARGS()
  1253. .Name( "pcbnew.Control.zoneDisplayToggle" )
  1254. .Scope( AS_GLOBAL )
  1255. .FriendlyName( _( "Toggle Zone Display" ) )
  1256. .Tooltip( _( "Cycle between showing zone fills and just their outlines" ) )
  1257. .Icon( BITMAPS::show_zone ) );
  1258. // Layer control
  1259. // Translate aLayer to the action that switches to it
  1260. TOOL_ACTION* PCB_ACTIONS::LayerIDToAction( PCB_LAYER_ID aLayer )
  1261. {
  1262. switch( aLayer )
  1263. {
  1264. case F_Cu: return &PCB_ACTIONS::layerTop;
  1265. case In1_Cu: return &PCB_ACTIONS::layerInner1;
  1266. case In2_Cu: return &PCB_ACTIONS::layerInner2;
  1267. case In3_Cu: return &PCB_ACTIONS::layerInner3;
  1268. case In4_Cu: return &PCB_ACTIONS::layerInner4;
  1269. case In5_Cu: return &PCB_ACTIONS::layerInner5;
  1270. case In6_Cu: return &PCB_ACTIONS::layerInner6;
  1271. case In7_Cu: return &PCB_ACTIONS::layerInner7;
  1272. case In8_Cu: return &PCB_ACTIONS::layerInner8;
  1273. case In9_Cu: return &PCB_ACTIONS::layerInner9;
  1274. case In10_Cu: return &PCB_ACTIONS::layerInner10;
  1275. case In11_Cu: return &PCB_ACTIONS::layerInner11;
  1276. case In12_Cu: return &PCB_ACTIONS::layerInner12;
  1277. case In13_Cu: return &PCB_ACTIONS::layerInner13;
  1278. case In14_Cu: return &PCB_ACTIONS::layerInner14;
  1279. case In15_Cu: return &PCB_ACTIONS::layerInner15;
  1280. case In16_Cu: return &PCB_ACTIONS::layerInner16;
  1281. case In17_Cu: return &PCB_ACTIONS::layerInner17;
  1282. case In18_Cu: return &PCB_ACTIONS::layerInner18;
  1283. case In19_Cu: return &PCB_ACTIONS::layerInner19;
  1284. case In20_Cu: return &PCB_ACTIONS::layerInner20;
  1285. case In21_Cu: return &PCB_ACTIONS::layerInner21;
  1286. case In22_Cu: return &PCB_ACTIONS::layerInner22;
  1287. case In23_Cu: return &PCB_ACTIONS::layerInner23;
  1288. case In24_Cu: return &PCB_ACTIONS::layerInner24;
  1289. case In25_Cu: return &PCB_ACTIONS::layerInner25;
  1290. case In26_Cu: return &PCB_ACTIONS::layerInner26;
  1291. case In27_Cu: return &PCB_ACTIONS::layerInner27;
  1292. case In28_Cu: return &PCB_ACTIONS::layerInner28;
  1293. case In29_Cu: return &PCB_ACTIONS::layerInner29;
  1294. case In30_Cu: return &PCB_ACTIONS::layerInner30;
  1295. case B_Cu: return &PCB_ACTIONS::layerBottom;
  1296. default: return nullptr;
  1297. }
  1298. }
  1299. // Implemented as an accessor + static variable to ensure it is initialized when used
  1300. // in static action constructors
  1301. TOOL_ACTION_GROUP PCB_ACTIONS::layerDirectSwitchActions()
  1302. {
  1303. static TOOL_ACTION_GROUP s_toolActionGroup( "pcbnew.Control.DirectLayerActions" );
  1304. return s_toolActionGroup;
  1305. }
  1306. TOOL_ACTION PCB_ACTIONS::layerTop( TOOL_ACTION_ARGS()
  1307. .Name( "pcbnew.Control.layerTop" )
  1308. .Scope( AS_GLOBAL )
  1309. .Group( PCB_ACTIONS::layerDirectSwitchActions() )
  1310. .DefaultHotkey( WXK_PAGEUP )
  1311. .LegacyHotkeyName( "Switch to Component (F.Cu) layer" )
  1312. .FriendlyName( _( "Switch to Component (F.Cu) layer" ) )
  1313. .Flags( AF_NOTIFY )
  1314. .Parameter( F_Cu ) );
  1315. TOOL_ACTION PCB_ACTIONS::layerInner1( TOOL_ACTION_ARGS()
  1316. .Name( "pcbnew.Control.layerInner1" )
  1317. .Scope( AS_GLOBAL )
  1318. .Group( PCB_ACTIONS::layerDirectSwitchActions() )
  1319. .LegacyHotkeyName( "Switch to Inner layer 1" )
  1320. .FriendlyName( _( "Switch to Inner Layer 1" ) )
  1321. .Flags( AF_NOTIFY )
  1322. .Parameter( In1_Cu ) );
  1323. TOOL_ACTION PCB_ACTIONS::layerInner2( TOOL_ACTION_ARGS()
  1324. .Name( "pcbnew.Control.layerInner2" )
  1325. .Scope( AS_GLOBAL )
  1326. .Group( PCB_ACTIONS::layerDirectSwitchActions() )
  1327. .LegacyHotkeyName( "Switch to Inner layer 2" )
  1328. .FriendlyName( _( "Switch to Inner Layer 2" ) )
  1329. .Flags( AF_NOTIFY )
  1330. .Parameter( In2_Cu ) );
  1331. TOOL_ACTION PCB_ACTIONS::layerInner3( TOOL_ACTION_ARGS()
  1332. .Name( "pcbnew.Control.layerInner3" )
  1333. .Scope( AS_GLOBAL )
  1334. .Group( PCB_ACTIONS::layerDirectSwitchActions() )
  1335. .LegacyHotkeyName( "Switch to Inner layer 3" )
  1336. .FriendlyName( _( "Switch to Inner Layer 3" ) )
  1337. .Flags( AF_NOTIFY )
  1338. .Parameter( In3_Cu ) );
  1339. TOOL_ACTION PCB_ACTIONS::layerInner4( TOOL_ACTION_ARGS()
  1340. .Name( "pcbnew.Control.layerInner4" )
  1341. .Scope( AS_GLOBAL )
  1342. .Group( PCB_ACTIONS::layerDirectSwitchActions() )
  1343. .LegacyHotkeyName( "Switch to Inner layer 4" )
  1344. .FriendlyName( _( "Switch to Inner Layer 4" ) )
  1345. .Flags( AF_NOTIFY )
  1346. .Parameter( In4_Cu ) );
  1347. TOOL_ACTION PCB_ACTIONS::layerInner5( TOOL_ACTION_ARGS()
  1348. .Name( "pcbnew.Control.layerInner5" )
  1349. .Scope( AS_GLOBAL )
  1350. .Group( PCB_ACTIONS::layerDirectSwitchActions() )
  1351. .LegacyHotkeyName( "Switch to Inner layer 5" )
  1352. .FriendlyName( _( "Switch to Inner Layer 5" ) )
  1353. .Flags( AF_NOTIFY )
  1354. .Parameter( In5_Cu ) );
  1355. TOOL_ACTION PCB_ACTIONS::layerInner6( TOOL_ACTION_ARGS()
  1356. .Name( "pcbnew.Control.layerInner6" )
  1357. .Scope( AS_GLOBAL )
  1358. .Group( PCB_ACTIONS::layerDirectSwitchActions() )
  1359. .LegacyHotkeyName( "Switch to Inner layer 6" )
  1360. .FriendlyName( _( "Switch to Inner Layer 6" ) )
  1361. .Flags( AF_NOTIFY )
  1362. .Parameter( In6_Cu ) );
  1363. TOOL_ACTION PCB_ACTIONS::layerInner7( TOOL_ACTION_ARGS()
  1364. .Name( "pcbnew.Control.layerInner7" )
  1365. .Scope( AS_GLOBAL )
  1366. .Group( PCB_ACTIONS::layerDirectSwitchActions() )
  1367. .FriendlyName( _( "Switch to Inner Layer 7" ) )
  1368. .Flags( AF_NOTIFY )
  1369. .Parameter( In7_Cu ) );
  1370. TOOL_ACTION PCB_ACTIONS::layerInner8( TOOL_ACTION_ARGS()
  1371. .Name( "pcbnew.Control.layerInner8" )
  1372. .Scope( AS_GLOBAL )
  1373. .Group( PCB_ACTIONS::layerDirectSwitchActions() )
  1374. .FriendlyName( _( "Switch to Inner Layer 8" ) )
  1375. .Flags( AF_NOTIFY )
  1376. .Parameter( In8_Cu ) );
  1377. TOOL_ACTION PCB_ACTIONS::layerInner9( TOOL_ACTION_ARGS()
  1378. .Name( "pcbnew.Control.layerInner9" )
  1379. .Scope( AS_GLOBAL )
  1380. .Group( PCB_ACTIONS::layerDirectSwitchActions() )
  1381. .FriendlyName( _( "Switch to Inner Layer 9" ) )
  1382. .Flags( AF_NOTIFY )
  1383. .Parameter( In9_Cu ) );
  1384. TOOL_ACTION PCB_ACTIONS::layerInner10( TOOL_ACTION_ARGS()
  1385. .Name( "pcbnew.Control.layerInner10" )
  1386. .Scope( AS_GLOBAL )
  1387. .Group( PCB_ACTIONS::layerDirectSwitchActions() )
  1388. .FriendlyName( _( "Switch to Inner Layer 10" ) )
  1389. .Flags( AF_NOTIFY )
  1390. .Parameter( In10_Cu ) );
  1391. TOOL_ACTION PCB_ACTIONS::layerInner11( TOOL_ACTION_ARGS()
  1392. .Name( "pcbnew.Control.layerInner11" )
  1393. .Scope( AS_GLOBAL )
  1394. .Group( PCB_ACTIONS::layerDirectSwitchActions() )
  1395. .FriendlyName( _( "Switch to Inner Layer 11" ) )
  1396. .Flags( AF_NOTIFY )
  1397. .Parameter( In11_Cu ) );
  1398. TOOL_ACTION PCB_ACTIONS::layerInner12( TOOL_ACTION_ARGS()
  1399. .Name( "pcbnew.Control.layerInner12" )
  1400. .Scope( AS_GLOBAL )
  1401. .Group( PCB_ACTIONS::layerDirectSwitchActions() )
  1402. .FriendlyName( _( "Switch to Inner Layer 12" ) )
  1403. .Flags( AF_NOTIFY )
  1404. .Parameter( In12_Cu ) );
  1405. TOOL_ACTION PCB_ACTIONS::layerInner13( TOOL_ACTION_ARGS()
  1406. .Name( "pcbnew.Control.layerInner13" )
  1407. .Scope( AS_GLOBAL )
  1408. .Group( PCB_ACTIONS::layerDirectSwitchActions() )
  1409. .FriendlyName( _( "Switch to Inner Layer 13" ) )
  1410. .Flags( AF_NOTIFY )
  1411. .Parameter( In13_Cu ) );
  1412. TOOL_ACTION PCB_ACTIONS::layerInner14( TOOL_ACTION_ARGS()
  1413. .Name( "pcbnew.Control.layerInner14" )
  1414. .Scope( AS_GLOBAL )
  1415. .Group( PCB_ACTIONS::layerDirectSwitchActions() )
  1416. .FriendlyName( _( "Switch to Inner Layer 14" ) )
  1417. .Flags( AF_NOTIFY )
  1418. .Parameter( In14_Cu ) );
  1419. TOOL_ACTION PCB_ACTIONS::layerInner15( TOOL_ACTION_ARGS()
  1420. .Name( "pcbnew.Control.layerInner15" )
  1421. .Scope( AS_GLOBAL )
  1422. .Group( PCB_ACTIONS::layerDirectSwitchActions() )
  1423. .FriendlyName( _( "Switch to Inner Layer 15" ) )
  1424. .Flags( AF_NOTIFY )
  1425. .Parameter( In15_Cu ) );
  1426. TOOL_ACTION PCB_ACTIONS::layerInner16( TOOL_ACTION_ARGS()
  1427. .Name( "pcbnew.Control.layerInner16" )
  1428. .Scope( AS_GLOBAL )
  1429. .Group( PCB_ACTIONS::layerDirectSwitchActions() )
  1430. .FriendlyName( _( "Switch to Inner Layer 16" ) )
  1431. .Flags( AF_NOTIFY )
  1432. .Parameter( In16_Cu ) );
  1433. TOOL_ACTION PCB_ACTIONS::layerInner17( TOOL_ACTION_ARGS()
  1434. .Name( "pcbnew.Control.layerInner17" )
  1435. .Scope( AS_GLOBAL )
  1436. .Group( PCB_ACTIONS::layerDirectSwitchActions() )
  1437. .FriendlyName( _( "Switch to Inner Layer 17" ) )
  1438. .Flags( AF_NOTIFY )
  1439. .Parameter( In17_Cu ) );
  1440. TOOL_ACTION PCB_ACTIONS::layerInner18( TOOL_ACTION_ARGS()
  1441. .Name( "pcbnew.Control.layerInner18" )
  1442. .Scope( AS_GLOBAL )
  1443. .Group( PCB_ACTIONS::layerDirectSwitchActions() )
  1444. .FriendlyName( _( "Switch to Inner Layer 18" ) )
  1445. .Flags( AF_NOTIFY )
  1446. .Parameter( In18_Cu ) );
  1447. TOOL_ACTION PCB_ACTIONS::layerInner19( TOOL_ACTION_ARGS()
  1448. .Name( "pcbnew.Control.layerInner19" )
  1449. .Scope( AS_GLOBAL )
  1450. .Group( PCB_ACTIONS::layerDirectSwitchActions() )
  1451. .FriendlyName( _( "Switch to Inner Layer 19" ) )
  1452. .Flags( AF_NOTIFY )
  1453. .Parameter( In19_Cu ) );
  1454. TOOL_ACTION PCB_ACTIONS::layerInner20( TOOL_ACTION_ARGS()
  1455. .Name( "pcbnew.Control.layerInner20" )
  1456. .Scope( AS_GLOBAL )
  1457. .Group( PCB_ACTIONS::layerDirectSwitchActions() )
  1458. .FriendlyName( _( "Switch to Inner Layer 20" ) )
  1459. .Flags( AF_NOTIFY )
  1460. .Parameter( In20_Cu ) );
  1461. TOOL_ACTION PCB_ACTIONS::layerInner21( TOOL_ACTION_ARGS()
  1462. .Name( "pcbnew.Control.layerInner21" )
  1463. .Scope( AS_GLOBAL )
  1464. .Group( PCB_ACTIONS::layerDirectSwitchActions() )
  1465. .FriendlyName( _( "Switch to Inner Layer 21" ) )
  1466. .Flags( AF_NOTIFY )
  1467. .Parameter( In21_Cu ) );
  1468. TOOL_ACTION PCB_ACTIONS::layerInner22( TOOL_ACTION_ARGS()
  1469. .Name( "pcbnew.Control.layerInner22" )
  1470. .Scope( AS_GLOBAL )
  1471. .Group( PCB_ACTIONS::layerDirectSwitchActions() )
  1472. .FriendlyName( _( "Switch to Inner Layer 22" ) )
  1473. .Flags( AF_NOTIFY )
  1474. .Parameter( In22_Cu ) );
  1475. TOOL_ACTION PCB_ACTIONS::layerInner23( TOOL_ACTION_ARGS()
  1476. .Name( "pcbnew.Control.layerInner23" )
  1477. .Scope( AS_GLOBAL )
  1478. .Group( PCB_ACTIONS::layerDirectSwitchActions() )
  1479. .FriendlyName( _( "Switch to Inner Layer 23" ) )
  1480. .Flags( AF_NOTIFY )
  1481. .Parameter( In23_Cu ) );
  1482. TOOL_ACTION PCB_ACTIONS::layerInner24( TOOL_ACTION_ARGS()
  1483. .Name( "pcbnew.Control.layerInner24" )
  1484. .Scope( AS_GLOBAL )
  1485. .Group( PCB_ACTIONS::layerDirectSwitchActions() )
  1486. .FriendlyName( _( "Switch to Inner Layer 24" ) )
  1487. .Flags( AF_NOTIFY )
  1488. .Parameter( In24_Cu ) );
  1489. TOOL_ACTION PCB_ACTIONS::layerInner25( TOOL_ACTION_ARGS()
  1490. .Name( "pcbnew.Control.layerInner25" )
  1491. .Scope( AS_GLOBAL )
  1492. .Group( PCB_ACTIONS::layerDirectSwitchActions() )
  1493. .FriendlyName( _( "Switch to Inner Layer 25" ) )
  1494. .Flags( AF_NOTIFY )
  1495. .Parameter( In25_Cu ) );
  1496. TOOL_ACTION PCB_ACTIONS::layerInner26( TOOL_ACTION_ARGS()
  1497. .Name( "pcbnew.Control.layerInner26" )
  1498. .Scope( AS_GLOBAL )
  1499. .Group( PCB_ACTIONS::layerDirectSwitchActions() )
  1500. .FriendlyName( _( "Switch to Inner Layer 26" ) )
  1501. .Flags( AF_NOTIFY )
  1502. .Parameter( In26_Cu ) );
  1503. TOOL_ACTION PCB_ACTIONS::layerInner27( TOOL_ACTION_ARGS()
  1504. .Name( "pcbnew.Control.layerInner27" )
  1505. .Scope( AS_GLOBAL )
  1506. .Group( PCB_ACTIONS::layerDirectSwitchActions() )
  1507. .FriendlyName( _( "Switch to Inner Layer 27" ) )
  1508. .Flags( AF_NOTIFY )
  1509. .Parameter( In27_Cu ) );
  1510. TOOL_ACTION PCB_ACTIONS::layerInner28( TOOL_ACTION_ARGS()
  1511. .Name( "pcbnew.Control.layerInner28" )
  1512. .Scope( AS_GLOBAL )
  1513. .Group( PCB_ACTIONS::layerDirectSwitchActions() )
  1514. .FriendlyName( _( "Switch to Inner Layer 28" ) )
  1515. .Flags( AF_NOTIFY )
  1516. .Parameter( In28_Cu ) );
  1517. TOOL_ACTION PCB_ACTIONS::layerInner29( TOOL_ACTION_ARGS()
  1518. .Name( "pcbnew.Control.layerInner29" )
  1519. .Scope( AS_GLOBAL )
  1520. .Group( PCB_ACTIONS::layerDirectSwitchActions() )
  1521. .FriendlyName( _( "Switch to Inner Layer 29" ) )
  1522. .Flags( AF_NOTIFY )
  1523. .Parameter( In29_Cu ) );
  1524. TOOL_ACTION PCB_ACTIONS::layerInner30( TOOL_ACTION_ARGS()
  1525. .Name( "pcbnew.Control.layerInner30" )
  1526. .Scope( AS_GLOBAL )
  1527. .Group( PCB_ACTIONS::layerDirectSwitchActions() )
  1528. .FriendlyName( _( "Switch to Inner Layer 30" ) )
  1529. .Flags( AF_NOTIFY )
  1530. .Parameter( In30_Cu ) );
  1531. TOOL_ACTION PCB_ACTIONS::layerBottom( TOOL_ACTION_ARGS()
  1532. .Name( "pcbnew.Control.layerBottom" )
  1533. .Scope( AS_GLOBAL )
  1534. .Group( PCB_ACTIONS::layerDirectSwitchActions() )
  1535. .DefaultHotkey( WXK_PAGEDOWN )
  1536. .LegacyHotkeyName( "Switch to Copper (B.Cu) layer" )
  1537. .FriendlyName( _( "Switch to Copper (B.Cu) Layer" ) )
  1538. .Flags( AF_NOTIFY )
  1539. .Parameter( B_Cu ) );
  1540. TOOL_ACTION PCB_ACTIONS::layerNext( TOOL_ACTION_ARGS()
  1541. .Name( "pcbnew.Control.layerNext" )
  1542. .Scope( AS_GLOBAL )
  1543. .DefaultHotkey( '+' )
  1544. .LegacyHotkeyName( "Switch to Next Layer" )
  1545. .FriendlyName( _( "Switch to Next Layer" ) )
  1546. .Flags( AF_NOTIFY ) );
  1547. TOOL_ACTION PCB_ACTIONS::layerPrev( TOOL_ACTION_ARGS()
  1548. .Name( "pcbnew.Control.layerPrev" )
  1549. .Scope( AS_GLOBAL )
  1550. .DefaultHotkey( '-' )
  1551. .LegacyHotkeyName( "Switch to Previous Layer" )
  1552. .FriendlyName( _( "Switch to Previous Layer" ) )
  1553. .Flags( AF_NOTIFY ) );
  1554. TOOL_ACTION PCB_ACTIONS::layerToggle( TOOL_ACTION_ARGS()
  1555. .Name( "pcbnew.Control.layerToggle" )
  1556. .Scope( AS_GLOBAL )
  1557. .DefaultHotkey( 'V' )
  1558. .LegacyHotkeyName( "Add Through Via" )
  1559. .FriendlyName( _( "Toggle Layer" ) )
  1560. .Tooltip( _( "Switch between layers in active layer pair" ) )
  1561. .Flags( AF_NOTIFY ) );
  1562. TOOL_ACTION PCB_ACTIONS::layerAlphaInc( TOOL_ACTION_ARGS()
  1563. .Name( "pcbnew.Control.layerAlphaInc" )
  1564. .Scope( AS_GLOBAL )
  1565. .DefaultHotkey( '}' )
  1566. // Don't be tempted to remove "Modern Toolset only". It's in the legacy property name.
  1567. .LegacyHotkeyName( "Increment Layer Transparency (Modern Toolset only)" )
  1568. .FriendlyName( _( "Increase Layer Opacity" ) )
  1569. .Tooltip( _( "Make the current layer less transparent" ) )
  1570. .Icon( BITMAPS::contrast_mode ) );
  1571. TOOL_ACTION PCB_ACTIONS::layerAlphaDec( TOOL_ACTION_ARGS()
  1572. .Name( "pcbnew.Control.layerAlphaDec" )
  1573. .Scope( AS_GLOBAL )
  1574. .DefaultHotkey( '{' )
  1575. // Don't be tempted to remove "Modern Toolset only". It's in the legacy property name.
  1576. .LegacyHotkeyName( "Decrement Layer Transparency (Modern Toolset only)" )
  1577. .FriendlyName( _( "Decrease Layer Opacity" ) )
  1578. .Tooltip( _( "Make the current layer more transparent" ) )
  1579. .Icon( BITMAPS::contrast_mode ) );
  1580. TOOL_ACTION PCB_ACTIONS::layerChanged( TOOL_ACTION_ARGS()
  1581. .Name( "pcbnew.Control.layerChanged" )
  1582. .Scope( AS_GLOBAL )
  1583. .Flags( AF_NOTIFY ) );
  1584. //Show board statistics tool
  1585. TOOL_ACTION PCB_ACTIONS::boardStatistics( TOOL_ACTION_ARGS()
  1586. .Name( "pcbnew.InspectionTool.ShowBoardStatistics" )
  1587. .Scope( AS_GLOBAL )
  1588. .FriendlyName( _( "Show Board Statistics" ) )
  1589. .Tooltip( _( "Shows board statistics" ) ) );
  1590. TOOL_ACTION PCB_ACTIONS::inspectClearance( TOOL_ACTION_ARGS()
  1591. .Name( "pcbnew.InspectionTool.InspectClearance" )
  1592. .Scope( AS_GLOBAL )
  1593. .FriendlyName( _( "Clearance Resolution" ) )
  1594. .Tooltip( _( "Show clearance resolution for the active layer between two selected objects" ) )
  1595. .Icon( BITMAPS::mw_add_gap ) );
  1596. TOOL_ACTION PCB_ACTIONS::inspectConstraints( TOOL_ACTION_ARGS()
  1597. .Name( "pcbnew.InspectionTool.InspectConstraints" )
  1598. .Scope( AS_GLOBAL )
  1599. .FriendlyName( _( "Constraints Resolution" ) )
  1600. .Tooltip( _( "Show constraints resolution for the selected object" ) )
  1601. .Icon( BITMAPS::mw_add_gap ) );
  1602. TOOL_ACTION PCB_ACTIONS::diffFootprint( TOOL_ACTION_ARGS()
  1603. .Name( "pcbnew.InspectionTool.DiffFootprint" )
  1604. .Scope( AS_GLOBAL )
  1605. .FriendlyName( _( "Compare Footprint with Library" ) )
  1606. .Tooltip( _( "Show differences between board footprint and its library equivalent" ) )
  1607. .Icon( BITMAPS::library ) );
  1608. TOOL_ACTION PCB_ACTIONS::showFootprintAssociations( TOOL_ACTION_ARGS()
  1609. .Name( "pcbnew.InspectionTool.ShowFootprintAssociations" )
  1610. .Scope( AS_GLOBAL )
  1611. .FriendlyName( _( "Show Footprint Associations" ) )
  1612. .Tooltip( _( "Show footprint library and schematic symbol associations" ) )
  1613. .Icon( BITMAPS::edit_cmp_symb_links ) );
  1614. //Geographic re-annotation tool
  1615. TOOL_ACTION PCB_ACTIONS::boardReannotate( TOOL_ACTION_ARGS()
  1616. .Name( "pcbnew.ReannotateTool.ShowReannotateDialog" )
  1617. .Scope( AS_GLOBAL )
  1618. .FriendlyName( _( "Geographical Reannotate..." ) )
  1619. .Tooltip( _( "Reannotate PCB in geographical order" ) )
  1620. .Icon( BITMAPS::annotate ) );
  1621. TOOL_ACTION PCB_ACTIONS::repairBoard( TOOL_ACTION_ARGS()
  1622. .Name( "pcbnew.Control.repairBoard" )
  1623. .Scope( AS_GLOBAL )
  1624. .FriendlyName( _( "Repair Board" ) )
  1625. .Tooltip( _( "Run various diagnostics and attempt to repair board" ) )
  1626. .Icon( BITMAPS::rescue )
  1627. .Parameter( false ) ); // Don't repair quietly
  1628. TOOL_ACTION PCB_ACTIONS::repairFootprint( TOOL_ACTION_ARGS()
  1629. .Name( "pcbnew.ModuleEditor.repairFootprint" )
  1630. .Scope( AS_GLOBAL )
  1631. .FriendlyName( _( "Repair Footprint" ) )
  1632. .Tooltip( _( "Run various diagnostics and attempt to repair footprint" ) ) );
  1633. // PLACEMENT_TOOL
  1634. //
  1635. TOOL_ACTION PCB_ACTIONS::alignTop( TOOL_ACTION_ARGS()
  1636. .Name( "pcbnew.AlignAndDistribute.alignTop" )
  1637. .Scope( AS_GLOBAL )
  1638. .FriendlyName( _( "Align to Top" ) )
  1639. .Tooltip( _( "Aligns selected items to the top edge of the item under the cursor" ) )
  1640. .Icon( BITMAPS::align_items_top ) );
  1641. TOOL_ACTION PCB_ACTIONS::alignBottom( TOOL_ACTION_ARGS()
  1642. .Name( "pcbnew.AlignAndDistribute.alignBottom" )
  1643. .Scope( AS_GLOBAL )
  1644. .FriendlyName( _( "Align to Bottom" ) )
  1645. .Tooltip( _( "Aligns selected items to the bottom edge of the item under the cursor" ) )
  1646. .Icon( BITMAPS::align_items_bottom ) );
  1647. TOOL_ACTION PCB_ACTIONS::alignLeft( TOOL_ACTION_ARGS()
  1648. .Name( "pcbnew.AlignAndDistribute.alignLeft" )
  1649. .Scope( AS_GLOBAL )
  1650. .FriendlyName( _( "Align to Left" ) )
  1651. .Tooltip( _( "Aligns selected items to the left edge of the item under the cursor" ) )
  1652. .Icon( BITMAPS::align_items_left ) );
  1653. TOOL_ACTION PCB_ACTIONS::alignRight( TOOL_ACTION_ARGS()
  1654. .Name( "pcbnew.AlignAndDistribute.alignRight" )
  1655. .Scope( AS_GLOBAL )
  1656. .FriendlyName( _( "Align to Right" ) )
  1657. .Tooltip( _( "Aligns selected items to the right edge of the item under the cursor" ) )
  1658. .Icon( BITMAPS::align_items_right ) );
  1659. TOOL_ACTION PCB_ACTIONS::alignCenterY( TOOL_ACTION_ARGS()
  1660. .Name( "pcbnew.AlignAndDistribute.alignCenterY" )
  1661. .Scope( AS_GLOBAL )
  1662. .FriendlyName( _( "Align to Vertical Center" ) )
  1663. .Tooltip( _( "Aligns selected items to the vertical center of the item under the cursor" ) )
  1664. .Icon( BITMAPS::align_items_center ) );
  1665. TOOL_ACTION PCB_ACTIONS::alignCenterX( TOOL_ACTION_ARGS()
  1666. .Name( "pcbnew.AlignAndDistribute.alignCenterX" )
  1667. .Scope( AS_GLOBAL )
  1668. .FriendlyName( _( "Align to Horizontal Center" ) )
  1669. .Tooltip( _( "Aligns selected items to the horizontal center of the item under the cursor" ) )
  1670. .Icon( BITMAPS::align_items_middle ) );
  1671. TOOL_ACTION PCB_ACTIONS::distributeHorizontally( TOOL_ACTION_ARGS()
  1672. .Name( "pcbnew.AlignAndDistribute.distributeHorizontally" )
  1673. .Scope( AS_GLOBAL )
  1674. .FriendlyName( _( "Distribute Horizontally" ) )
  1675. .Tooltip( _( "Distributes selected items between the left-most item and the right-most item" ) )
  1676. .Icon( BITMAPS::distribute_horizontal ) );
  1677. TOOL_ACTION PCB_ACTIONS::distributeVertically( TOOL_ACTION_ARGS()
  1678. .Name( "pcbnew.AlignAndDistribute.distributeVertically" )
  1679. .Scope( AS_GLOBAL )
  1680. .FriendlyName( _( "Distribute Vertically" ) )
  1681. .Tooltip( _( "Distributes selected items between the top-most item and the bottom-most item" ) )
  1682. .Icon( BITMAPS::distribute_vertical ) );
  1683. // PCB_POINT_EDITOR
  1684. //
  1685. TOOL_ACTION PCB_ACTIONS::pointEditorAddCorner( TOOL_ACTION_ARGS()
  1686. .Name( "pcbnew.PointEditor.addCorner" )
  1687. .Scope( AS_GLOBAL )
  1688. #ifdef __WXMAC__
  1689. .DefaultHotkey( WXK_F1 )
  1690. #else
  1691. .DefaultHotkey( WXK_INSERT )
  1692. #endif
  1693. .FriendlyName( _( "Create Corner" ) )
  1694. .Tooltip( _( "Create a corner" ) )
  1695. .Icon( BITMAPS::add_corner ) );
  1696. TOOL_ACTION PCB_ACTIONS::pointEditorRemoveCorner( TOOL_ACTION_ARGS()
  1697. .Name( "pcbnew.PointEditor.removeCorner" )
  1698. .Scope( AS_GLOBAL )
  1699. .FriendlyName( _( "Remove Corner" ) )
  1700. .Tooltip( _( "Remove corner" ) )
  1701. .Icon( BITMAPS::delete_cursor ) );
  1702. TOOL_ACTION PCB_ACTIONS::pointEditorArcKeepCenter( TOOL_ACTION_ARGS()
  1703. .Name( "pcbnew.PointEditor.arcKeepCenter" )
  1704. .Scope( AS_GLOBAL )
  1705. .FriendlyName( _( "Keep Arc Center, Adjust Radius" ) )
  1706. .Tooltip( _( "Switch arc editing mode to keep center, adjust radius and endpoints" ) )
  1707. .Parameter( ARC_EDIT_MODE::KEEP_CENTER_ADJUST_ANGLE_RADIUS ) );
  1708. TOOL_ACTION PCB_ACTIONS::pointEditorArcKeepEndpoint( TOOL_ACTION_ARGS()
  1709. .Name( "pcbnew.PointEditor.arcKeepEndpoint" )
  1710. .Scope( AS_GLOBAL )
  1711. .FriendlyName( _( "Keep Arc Endpoints or Direction of Starting Point" ) )
  1712. .Tooltip( _( "Switch arc editing mode to keep endpoints, or to keep direction of the other point" ) )
  1713. .Parameter( ARC_EDIT_MODE::KEEP_ENDPOINTS_OR_START_DIRECTION ) );
  1714. // GROUP_TOOL
  1715. //
  1716. TOOL_ACTION PCB_ACTIONS::groupProperties( TOOL_ACTION_ARGS()
  1717. .Name( "pcbnew.Groups.groupProperties" )
  1718. .Scope( AS_GLOBAL ) );
  1719. TOOL_ACTION PCB_ACTIONS::pickNewGroupMember( TOOL_ACTION_ARGS()
  1720. .Name( "pcbnew.Groups.selectNewGroupMember" )
  1721. .Scope( AS_GLOBAL ) );
  1722. // POSITION_RELATIVE_TOOL
  1723. //
  1724. TOOL_ACTION PCB_ACTIONS::positionRelative( TOOL_ACTION_ARGS()
  1725. .Name( "pcbnew.PositionRelative.positionRelative" )
  1726. .Scope( AS_GLOBAL )
  1727. .DefaultHotkey( MD_SHIFT + 'P' )
  1728. .LegacyHotkeyName( "Position Item Relative" )
  1729. .FriendlyName( _( "Position Relative To..." ) )
  1730. .Tooltip( _( "Positions the selected item(s) by an exact amount relative to another" ) )
  1731. .Icon( BITMAPS::move_relative ) );
  1732. TOOL_ACTION PCB_ACTIONS::selectpositionRelativeItem( TOOL_ACTION_ARGS()
  1733. .Name( "pcbnew.PositionRelative.selectpositionRelativeItem" )
  1734. .Scope( AS_GLOBAL ) );
  1735. // PCB_SELECTION_TOOL
  1736. //
  1737. TOOL_ACTION PCB_ACTIONS::selectionActivate( TOOL_ACTION_ARGS()
  1738. .Name( "pcbnew.InteractiveSelection" )
  1739. .Scope( AS_GLOBAL )
  1740. // No description, not shown anywhere
  1741. .Flags( AF_ACTIVATE ) );
  1742. TOOL_ACTION PCB_ACTIONS::selectionCursor( TOOL_ACTION_ARGS()
  1743. .Name( "pcbnew.InteractiveSelection.Cursor" )
  1744. .Scope( AS_GLOBAL )
  1745. .Parameter<CLIENT_SELECTION_FILTER>( nullptr ) );
  1746. TOOL_ACTION PCB_ACTIONS::selectItem( TOOL_ACTION_ARGS()
  1747. .Name( "pcbnew.InteractiveSelection.SelectItem" )
  1748. .Scope( AS_GLOBAL ) );
  1749. TOOL_ACTION PCB_ACTIONS::selectItems( TOOL_ACTION_ARGS()
  1750. .Name( "pcbnew.InteractiveSelection.SelectItems" )
  1751. .Scope( AS_GLOBAL ) );
  1752. TOOL_ACTION PCB_ACTIONS::unselectItem( TOOL_ACTION_ARGS()
  1753. .Name( "pcbnew.InteractiveSelection.UnselectItem" )
  1754. .Scope( AS_GLOBAL ) );
  1755. TOOL_ACTION PCB_ACTIONS::unselectItems( TOOL_ACTION_ARGS()
  1756. .Name( "pcbnew.InteractiveSelection.UnselectItems" )
  1757. .Scope( AS_GLOBAL ) );
  1758. TOOL_ACTION PCB_ACTIONS::reselectItem( TOOL_ACTION_ARGS()
  1759. .Name( "pcbnew.InteractiveSelection.ReselectItem" )
  1760. .Scope( AS_GLOBAL ) );
  1761. TOOL_ACTION PCB_ACTIONS::selectionClear( TOOL_ACTION_ARGS()
  1762. .Name( "pcbnew.InteractiveSelection.Clear" )
  1763. .Scope( AS_GLOBAL ) );
  1764. TOOL_ACTION PCB_ACTIONS::selectionMenu( TOOL_ACTION_ARGS()
  1765. .Name( "pcbnew.InteractiveSelection.SelectionMenu" )
  1766. .Scope( AS_GLOBAL ) );
  1767. TOOL_ACTION PCB_ACTIONS::selectConnection( TOOL_ACTION_ARGS()
  1768. .Name( "pcbnew.InteractiveSelection.SelectConnection" )
  1769. .Scope( AS_GLOBAL )
  1770. .DefaultHotkey( 'U' )
  1771. .LegacyHotkeyName( "Select Single Track" )
  1772. .FriendlyName( _( "Select/Expand Connection" ) )
  1773. .Tooltip( _( "Selects a connection or expands an existing selection to junctions, pads, or entire connections" ) )
  1774. .Icon( BITMAPS::add_tracks ) );
  1775. TOOL_ACTION PCB_ACTIONS::unrouteSelected( TOOL_ACTION_ARGS()
  1776. .Name( "pcbnew.InteractiveSelection.unrouteSelected" )
  1777. .Scope( AS_GLOBAL )
  1778. .FriendlyName( _( "Unroute Selected" ) )
  1779. .Tooltip( _( "Unroutes selected items to the nearest pad." ) )
  1780. .Icon( BITMAPS::general_deletions ) );
  1781. TOOL_ACTION PCB_ACTIONS::syncSelection( TOOL_ACTION_ARGS()
  1782. .Name( "pcbnew.InteractiveSelection.SyncSelection" )
  1783. .Scope( AS_GLOBAL ) );
  1784. TOOL_ACTION PCB_ACTIONS::syncSelectionWithNets( TOOL_ACTION_ARGS()
  1785. .Name( "pcbnew.InteractiveSelection.SyncSelectionWithNets" )
  1786. .Scope( AS_GLOBAL ) );
  1787. TOOL_ACTION PCB_ACTIONS::selectNet( TOOL_ACTION_ARGS()
  1788. .Name( "pcbnew.InteractiveSelection.SelectNet" )
  1789. .Scope( AS_GLOBAL )
  1790. .FriendlyName( _( "Select All Tracks in Net" ) )
  1791. .Tooltip( _( "Selects all tracks & vias belonging to the same net." ) )
  1792. .Parameter<int>( 0 ) );
  1793. TOOL_ACTION PCB_ACTIONS::deselectNet( TOOL_ACTION_ARGS()
  1794. .Name( "pcbnew.InteractiveSelection.DeselectNet" )
  1795. .Scope( AS_GLOBAL )
  1796. .FriendlyName( _( "Deselect All Tracks in Net" ) )
  1797. .Tooltip( _( "Deselects all tracks & vias belonging to the same net." ) )
  1798. .Parameter<int>( 0 ) );
  1799. TOOL_ACTION PCB_ACTIONS::selectUnconnected( TOOL_ACTION_ARGS()
  1800. .Name( "pcbnew.InteractiveSelection.SelectUnconnected" )
  1801. .Scope( AS_GLOBAL )
  1802. .DefaultHotkey( 'O' )
  1803. .FriendlyName( _( "Select All Unconnected Footprints" ) )
  1804. .Tooltip( _( "Selects all unconnected footprints belonging to each selected net." ) ) );
  1805. TOOL_ACTION PCB_ACTIONS::grabUnconnected( TOOL_ACTION_ARGS()
  1806. .Name( "pcbnew.InteractiveSelection.GrabUnconnected" )
  1807. .Scope( AS_GLOBAL )
  1808. .DefaultHotkey( MD_SHIFT + 'O' )
  1809. .FriendlyName( _( "Grab Nearest Unconnected Footprints" ) )
  1810. .Tooltip( _( "Selects and initiates moving the nearest unconnected footprint on each selected net." ) ) );
  1811. TOOL_ACTION PCB_ACTIONS::selectOnSheetFromEeschema( TOOL_ACTION_ARGS()
  1812. .Name( "pcbnew.InteractiveSelection.SelectOnSheet" )
  1813. .Scope( AS_GLOBAL )
  1814. .FriendlyName( _( "Sheet" ) )
  1815. .Tooltip( _( "Selects all footprints and tracks in the schematic sheet" ) )
  1816. .Icon( BITMAPS::select_same_sheet ) );
  1817. TOOL_ACTION PCB_ACTIONS::selectSameSheet( TOOL_ACTION_ARGS()
  1818. .Name( "pcbnew.InteractiveSelection.SelectSameSheet" )
  1819. .Scope( AS_GLOBAL )
  1820. .FriendlyName( _( "Items in Same Hierarchical Sheet" ) )
  1821. .Tooltip( _( "Selects all footprints and tracks in the same schematic sheet" ) )
  1822. .Icon( BITMAPS::select_same_sheet ) );
  1823. TOOL_ACTION PCB_ACTIONS::selectOnSchematic( TOOL_ACTION_ARGS()
  1824. .Name( "pcbnew.InteractiveSelection.SelectOnSchematic" )
  1825. .Scope( AS_GLOBAL )
  1826. .FriendlyName( _( "Select on Schematic" ) )
  1827. .Tooltip( _( "Selects corresponding items in Schematic editor" ) )
  1828. .Icon( BITMAPS::select_same_sheet ) );
  1829. TOOL_ACTION PCB_ACTIONS::filterSelection( TOOL_ACTION_ARGS()
  1830. .Name( "pcbnew.InteractiveSelection.FilterSelection" )
  1831. .Scope( AS_GLOBAL )
  1832. .FriendlyName( _( "Filter Selected Items..." ) )
  1833. .Tooltip( _( "Remove items from the selection by type" ) )
  1834. .Icon( BITMAPS::filter ) );
  1835. // ZONE_FILLER_TOOL
  1836. //
  1837. TOOL_ACTION PCB_ACTIONS::zoneFill( TOOL_ACTION_ARGS()
  1838. .Name( "pcbnew.ZoneFiller.zoneFill" )
  1839. .Scope( AS_GLOBAL )
  1840. .FriendlyName( _( "Draft Fill Selected Zone(s)" ) )
  1841. .Tooltip( _( "Update copper fill of selected zone(s) without regard to other interacting zones" ) )
  1842. .Icon( BITMAPS::fill_zone )
  1843. .Parameter<ZONE*>( nullptr ) );
  1844. TOOL_ACTION PCB_ACTIONS::zoneFillAll( TOOL_ACTION_ARGS()
  1845. .Name( "pcbnew.ZoneFiller.zoneFillAll" )
  1846. .Scope( AS_GLOBAL )
  1847. .DefaultHotkey( 'B' )
  1848. .LegacyHotkeyName( "Fill or Refill All Zones" )
  1849. .FriendlyName( _( "Fill All Zones" ) )
  1850. .Tooltip( _( "Update copper fill of all zones" ) )
  1851. .Icon( BITMAPS::fill_zone ) );
  1852. TOOL_ACTION PCB_ACTIONS::zoneFillDirty( TOOL_ACTION_ARGS()
  1853. .Name( "pcbnew.ZoneFiller.zoneFillDirty" )
  1854. .Scope( AS_CONTEXT ) );
  1855. TOOL_ACTION PCB_ACTIONS::zoneUnfill( TOOL_ACTION_ARGS()
  1856. .Name( "pcbnew.ZoneFiller.zoneUnfill" )
  1857. .Scope( AS_GLOBAL )
  1858. .FriendlyName( _( "Unfill Selected Zone(s)" ) )
  1859. .Tooltip( _( "Remove copper fill from selected zone(s)" ) )
  1860. .Icon( BITMAPS::zone_unfill ) );
  1861. TOOL_ACTION PCB_ACTIONS::zoneUnfillAll( TOOL_ACTION_ARGS()
  1862. .Name( "pcbnew.ZoneFiller.zoneUnfillAll" )
  1863. .Scope( AS_GLOBAL )
  1864. .DefaultHotkey( MD_CTRL + 'B' )
  1865. .LegacyHotkeyName( "Remove Filled Areas in All Zones" )
  1866. .FriendlyName( _( "Unfill All Zones" ) )
  1867. .Tooltip( _( "Remove copper fill from all zones" ) )
  1868. .Icon( BITMAPS::zone_unfill ) );
  1869. // AUTOPLACER_TOOL
  1870. //
  1871. TOOL_ACTION PCB_ACTIONS::autoplaceSelectedComponents( TOOL_ACTION_ARGS()
  1872. .Name( "pcbnew.Autoplacer.autoplaceSelected" )
  1873. .Scope( AS_GLOBAL )
  1874. .FriendlyName( _( "Place Selected Footprints" ) )
  1875. .Tooltip( _( "Performs automatic placement of selected components" ) ) );
  1876. TOOL_ACTION PCB_ACTIONS::autoplaceOffboardComponents( TOOL_ACTION_ARGS()
  1877. .Name( "pcbnew.Autoplacer.autoplaceOffboard" )
  1878. .Scope( AS_GLOBAL )
  1879. .FriendlyName( _( "Place Off-Board Footprints" ) )
  1880. .Tooltip( _( "Performs automatic placement of components outside board area" ) ) );
  1881. // ROUTER_TOOL
  1882. //
  1883. TOOL_ACTION PCB_ACTIONS::routeSingleTrack( TOOL_ACTION_ARGS()
  1884. .Name( "pcbnew.InteractiveRouter.SingleTrack" )
  1885. .Scope( AS_GLOBAL )
  1886. .DefaultHotkey( 'X' )
  1887. .LegacyHotkeyName( "Add New Track" )
  1888. .FriendlyName( _( "Route Single Track" ) )
  1889. .Tooltip( _( "Route tracks" ) )
  1890. .Icon( BITMAPS::add_tracks )
  1891. .Flags( AF_ACTIVATE )
  1892. .Parameter( PNS::PNS_MODE_ROUTE_SINGLE ) );
  1893. TOOL_ACTION PCB_ACTIONS::routeDiffPair( TOOL_ACTION_ARGS()
  1894. .Name( "pcbnew.InteractiveRouter.DiffPair" )
  1895. .Scope( AS_GLOBAL )
  1896. .DefaultHotkey( '6' )
  1897. // Don't be tempted to remove "Modern Toolset only". It's in the legacy property name.
  1898. .LegacyHotkeyName( "Route Differential Pair (Modern Toolset only)" )
  1899. .FriendlyName( _( "Route Differential Pair" ) )
  1900. .Tooltip( _( "Route differential pairs" ) )
  1901. .Icon( BITMAPS::ps_diff_pair )
  1902. .Flags( AF_ACTIVATE )
  1903. .Parameter( PNS::PNS_MODE_ROUTE_DIFF_PAIR ) );
  1904. TOOL_ACTION PCB_ACTIONS::routerSettingsDialog( TOOL_ACTION_ARGS()
  1905. .Name( "pcbnew.InteractiveRouter.SettingsDialog" )
  1906. .Scope( AS_GLOBAL )
  1907. .DefaultHotkey( MD_CTRL + '<' )
  1908. .LegacyHotkeyName( "Routing Options" )
  1909. .FriendlyName( _( "Interactive Router Settings..." ) )
  1910. .Tooltip( _( "Open Interactive Router settings" ) )
  1911. .Icon( BITMAPS::tools ) );
  1912. TOOL_ACTION PCB_ACTIONS::routerDiffPairDialog( TOOL_ACTION_ARGS()
  1913. .Name( "pcbnew.InteractiveRouter.DiffPairDialog" )
  1914. .Scope( AS_GLOBAL )
  1915. .FriendlyName( _( "Differential Pair Dimensions..." ) )
  1916. .Tooltip( _( "Open Differential Pair Dimension settings" ) )
  1917. .Icon( BITMAPS::ps_diff_pair_gap ) );
  1918. TOOL_ACTION PCB_ACTIONS::routerHighlightMode( TOOL_ACTION_ARGS()
  1919. .Name( "pcbnew.InteractiveRouter.HighlightMode" )
  1920. .Scope( AS_GLOBAL )
  1921. .FriendlyName( _( "Router Highlight Mode" ) )
  1922. .Tooltip( _( "Switch router to highlight mode" ) )
  1923. .Flags( AF_NONE )
  1924. .Parameter( PNS::RM_MarkObstacles ) );
  1925. TOOL_ACTION PCB_ACTIONS::routerShoveMode( TOOL_ACTION_ARGS()
  1926. .Name( "pcbnew.InteractiveRouter.ShoveMode" )
  1927. .Scope( AS_GLOBAL )
  1928. .FriendlyName( _( "Router Shove Mode" ) )
  1929. .Tooltip( _( "Switch router to shove mode" ) )
  1930. .Flags( AF_NONE )
  1931. .Parameter( PNS::RM_Shove ) );
  1932. TOOL_ACTION PCB_ACTIONS::routerWalkaroundMode( TOOL_ACTION_ARGS()
  1933. .Name( "pcbnew.InteractiveRouter.WalkaroundMode" )
  1934. .Scope( AS_GLOBAL )
  1935. .FriendlyName( _( "Router Walkaround Mode" ) )
  1936. .Tooltip( _( "Switch router to walkaround mode" ) )
  1937. .Flags( AF_NONE )
  1938. .Parameter( PNS::RM_Walkaround ) );
  1939. TOOL_ACTION PCB_ACTIONS::cycleRouterMode( TOOL_ACTION_ARGS()
  1940. .Name( "pcbnew.InteractiveRouter.CycleRouterMode" )
  1941. .Scope( AS_GLOBAL )
  1942. .FriendlyName( _( "Cycle Router Mode" ) )
  1943. .Tooltip( _( "Cycle router to the next mode" ) ) );
  1944. TOOL_ACTION PCB_ACTIONS::selectLayerPair( TOOL_ACTION_ARGS()
  1945. .Name( "pcbnew.InteractiveRouter.SelectLayerPair" )
  1946. .Scope( AS_GLOBAL )
  1947. .FriendlyName( _( "Set Layer Pair..." ) )
  1948. .Tooltip( _( "Change active layer pair for routing" ) )
  1949. .Icon( BITMAPS::select_layer_pair )
  1950. .Flags( AF_ACTIVATE ) );
  1951. TOOL_ACTION PCB_ACTIONS::tuneSingleTrack( TOOL_ACTION_ARGS()
  1952. .Name( "pcbnew.LengthTuner.TuneSingleTrack" )
  1953. .Scope( AS_GLOBAL )
  1954. .DefaultHotkey( '7' )
  1955. // Don't be tempted to remove "Modern Toolset only". It's in the legacy property name.
  1956. .LegacyHotkeyName( "Tune Single Track (Modern Toolset only)" )
  1957. .FriendlyName( _( "Tune Length of a Single Track" ) )
  1958. .Tooltip( _( "Tune length of a single track" ) )
  1959. .Icon( BITMAPS::ps_tune_length )
  1960. .Flags( AF_ACTIVATE )
  1961. .Parameter( PNS::PNS_MODE_TUNE_SINGLE ) );
  1962. TOOL_ACTION PCB_ACTIONS::tuneDiffPair( TOOL_ACTION_ARGS()
  1963. .Name( "pcbnew.LengthTuner.TuneDiffPair" )
  1964. .Scope( AS_GLOBAL )
  1965. .DefaultHotkey( '8' )
  1966. // Don't be tempted to remove "Modern Toolset only". It's in the legacy property name.
  1967. .LegacyHotkeyName( "Tune Differential Pair Length (Modern Toolset only)" )
  1968. .FriendlyName( _( "Tune Length of a Differential Pair" ) )
  1969. .Tooltip( _( "Tune length of a differential pair" ) )
  1970. .Icon( BITMAPS::ps_diff_pair_tune_length )
  1971. .Flags( AF_ACTIVATE )
  1972. .Parameter( PNS::PNS_MODE_TUNE_DIFF_PAIR ) );
  1973. TOOL_ACTION PCB_ACTIONS::tuneSkew( TOOL_ACTION_ARGS()
  1974. .Name( "pcbnew.LengthTuner.TuneDiffPairSkew" )
  1975. .Scope( AS_GLOBAL )
  1976. .DefaultHotkey( '9' )
  1977. // Don't be tempted to remove "Modern Toolset only". It's in the legacy property name.
  1978. .LegacyHotkeyName( "Tune Differential Pair Skew (Modern Toolset only)" )
  1979. .FriendlyName( _( "Tune Skew of a Differential Pair" ) )
  1980. .Tooltip( _( "Tune skew of a differential pair" ) )
  1981. .Icon( BITMAPS::ps_diff_pair_tune_phase )
  1982. .Flags( AF_ACTIVATE )
  1983. .Parameter( PNS::PNS_MODE_TUNE_DIFF_PAIR_SKEW ) );
  1984. TOOL_ACTION PCB_ACTIONS::routerInlineDrag( TOOL_ACTION_ARGS()
  1985. .Name( "pcbnew.InteractiveRouter.InlineDrag" )
  1986. .Scope( AS_CONTEXT )
  1987. .Parameter<int>( PNS::DM_ANY ) );
  1988. TOOL_ACTION PCB_ACTIONS::routerUndoLastSegment( TOOL_ACTION_ARGS()
  1989. .Name( "pcbnew.InteractiveRouter.UndoLastSegment" )
  1990. .Scope( AS_CONTEXT )
  1991. .DefaultHotkey( WXK_BACK )
  1992. .FriendlyName( _( "Undo Last Segment" ) )
  1993. .Tooltip( _( "Walks the current track back one segment." ) ) );
  1994. TOOL_ACTION PCB_ACTIONS::routerContinueFromEnd( TOOL_ACTION_ARGS()
  1995. .Name( "pcbnew.InteractiveRouter.ContinueFromEnd" )
  1996. .Scope( AS_CONTEXT )
  1997. .DefaultHotkey( MD_CTRL + 'E' )
  1998. .FriendlyName( _( "Route From Other End" ) )
  1999. .Tooltip( _( "Commits current segments and starts next segment from nearest ratsnest end." ) ) );
  2000. TOOL_ACTION PCB_ACTIONS::routerAttemptFinish( TOOL_ACTION_ARGS()
  2001. .Name( "pcbnew.InteractiveRouter.AttemptFinish" )
  2002. .Scope( AS_CONTEXT )
  2003. .DefaultHotkey( 'F' )
  2004. .FriendlyName( _( "Attempt Finish" ) )
  2005. .Tooltip( _( "Attempts to complete current route to nearest ratsnest end." ) )
  2006. .Parameter<bool*>( nullptr ) );
  2007. TOOL_ACTION PCB_ACTIONS::routerRouteSelected( TOOL_ACTION_ARGS()
  2008. .Name( "pcbnew.InteractiveRouter.RouteSelected" )
  2009. .Scope( AS_GLOBAL )
  2010. .DefaultHotkey( MD_SHIFT + 'X' )
  2011. .FriendlyName( _( "Route Selected" ) )
  2012. .Tooltip( _( "Sequentially route selected items from ratsnest anchor." ) )
  2013. .Flags( AF_ACTIVATE )
  2014. .Parameter( PNS::PNS_MODE_ROUTE_SINGLE ) );
  2015. TOOL_ACTION PCB_ACTIONS::routerRouteSelectedFromEnd( TOOL_ACTION_ARGS()
  2016. .Name( "pcbnew.InteractiveRouter.RouteSelectedFromEnd" )
  2017. .Scope( AS_GLOBAL )
  2018. .DefaultHotkey( MD_SHIFT + 'E' )
  2019. .FriendlyName( _( "Route Selected From Other End" ) )
  2020. .Tooltip( _( "Sequentially route selected items from other end of ratsnest anchor." ) )
  2021. .Flags( AF_ACTIVATE )
  2022. .Parameter( PNS::PNS_MODE_ROUTE_SINGLE ) );
  2023. TOOL_ACTION PCB_ACTIONS::routerAutorouteSelected( TOOL_ACTION_ARGS()
  2024. .Name( "pcbnew.InteractiveRouter.Autoroute" )
  2025. .Scope( AS_GLOBAL )
  2026. .DefaultHotkey( MD_SHIFT + 'F' )
  2027. .FriendlyName( _( "Attempt Finish Selected (Autoroute)" ) )
  2028. .Tooltip( _( "Sequentially attempt to automatically route all selected pads." ) )
  2029. .Flags( AF_ACTIVATE )
  2030. .Parameter( PNS::PNS_MODE_ROUTE_SINGLE ) );
  2031. TOOL_ACTION PCB_ACTIONS::breakTrack( TOOL_ACTION_ARGS()
  2032. .Name( "pcbnew.InteractiveRouter.BreakTrack" )
  2033. .Scope( AS_GLOBAL )
  2034. .FriendlyName( _( "Break Track" ) )
  2035. .Tooltip( _( "Splits the track segment into two segments connected at the cursor position." ) )
  2036. .Icon( BITMAPS::break_line ) );
  2037. TOOL_ACTION PCB_ACTIONS::drag45Degree( TOOL_ACTION_ARGS()
  2038. .Name( "pcbnew.InteractiveRouter.Drag45Degree" )
  2039. .Scope( AS_GLOBAL )
  2040. .DefaultHotkey( 'D' )
  2041. .LegacyHotkeyName( "Drag Track Keep Slope" )
  2042. .FriendlyName( _( "Drag 45 Degree Mode" ) )
  2043. .Tooltip( _( "Drags the track segment while keeping connected tracks at 45 degrees." ) )
  2044. .Icon( BITMAPS::drag_segment_withslope ) );
  2045. TOOL_ACTION PCB_ACTIONS::dragFreeAngle( TOOL_ACTION_ARGS()
  2046. .Name( "pcbnew.InteractiveRouter.DragFreeAngle" )
  2047. .Scope( AS_GLOBAL )
  2048. .DefaultHotkey( 'G' )
  2049. .LegacyHotkeyName( "Drag Item" )
  2050. .FriendlyName( _( "Drag Free Angle" ) )
  2051. .Tooltip( _( "Drags the nearest joint in the track without restricting the track angle." ) )
  2052. .Icon( BITMAPS::drag_segment ) );
  2053. // GENERATOR_TOOL
  2054. //
  2055. TOOL_ACTION PCB_ACTIONS::regenerateAllTuning( TOOL_ACTION_ARGS()
  2056. .Name( "pcbnew.Generator.regenerateAllTuning" )
  2057. .Scope( AS_GLOBAL )
  2058. .FriendlyName( _( "Update All Tuning Patterns" ) )
  2059. .Tooltip( _( "Attempt to re-tune existing tuning patterns within their bounds" ) )
  2060. .Icon( BITMAPS::router_len_tuner )
  2061. .Parameter( wxString( wxS( "tuning_pattern" ) ) ) );
  2062. TOOL_ACTION PCB_ACTIONS::regenerateAll( TOOL_ACTION_ARGS()
  2063. .Name( "pcbnew.Generator.regenerateAll" )
  2064. .Scope( AS_GLOBAL )
  2065. .FriendlyName( _( "Rebuild All Generators" ) )
  2066. .Tooltip( _( "Rebuilds geometry of all generators" ) )
  2067. .Icon( BITMAPS::refresh )
  2068. .Parameter( wxString( wxS( "*" ) ) ) );
  2069. TOOL_ACTION PCB_ACTIONS::regenerateSelected( TOOL_ACTION_ARGS()
  2070. .Name( "pcbnew.Generator.regenerateSelected" )
  2071. .Scope( AS_GLOBAL )
  2072. .FriendlyName( _( "Rebuild Selected Generators" ) )
  2073. .Tooltip( _( "Rebuilds geometry of selected generator(s)" ) )
  2074. .Icon( BITMAPS::refresh ) );
  2075. TOOL_ACTION PCB_ACTIONS::genStartEdit( TOOL_ACTION_ARGS()
  2076. .Name( "pcbnew.Generator.genStartEdit" )
  2077. .Scope( AS_CONTEXT ) );
  2078. TOOL_ACTION PCB_ACTIONS::genUpdateEdit( TOOL_ACTION_ARGS()
  2079. .Name( "pcbnew.Generator.genUpdateEdit" )
  2080. .Scope( AS_CONTEXT ) );
  2081. TOOL_ACTION PCB_ACTIONS::genPushEdit( TOOL_ACTION_ARGS()
  2082. .Name( "pcbnew.Generator.genPushEdit" )
  2083. .Scope( AS_CONTEXT ) );
  2084. TOOL_ACTION PCB_ACTIONS::genRevertEdit( TOOL_ACTION_ARGS()
  2085. .Name( "pcbnew.Generator.genRevertEdit" )
  2086. .Scope( AS_CONTEXT ) );
  2087. TOOL_ACTION PCB_ACTIONS::genRemove( TOOL_ACTION_ARGS()
  2088. .Name( "pcbnew.Generator.genRemove" )
  2089. .Scope( AS_CONTEXT ) );
  2090. TOOL_ACTION PCB_ACTIONS::generatorsShowManager( TOOL_ACTION_ARGS()
  2091. .Name( "pcbnew.Generator.showManager" )
  2092. .Scope( AS_GLOBAL )
  2093. .FriendlyName( _( "Generators Manager" ) )
  2094. .Tooltip( _( "Show a manager dialog for Generator objects" ) )
  2095. .Icon( BITMAPS::pin_table ) );
  2096. // LENGTH_TUNER_TOOL
  2097. //
  2098. TOOL_ACTION PCB_ACTIONS::lengthTunerSettings( TOOL_ACTION_ARGS()
  2099. .Name( "pcbnew.LengthTuner.Settings" )
  2100. .Scope( AS_CONTEXT )
  2101. .DefaultHotkey( MD_CTRL + 'L' )
  2102. // Don't be tempted to remove "Modern Toolset only". It's in the legacy property name.
  2103. .LegacyHotkeyName( "Length Tuning Settings (Modern Toolset only)" )
  2104. .MenuText( _( "Length Tuning Settings..." ) )
  2105. .Tooltip( _( "Displays tuning pattern properties dialog" ) )
  2106. .Icon( BITMAPS::router_len_tuner_setup ) );
  2107. TOOL_ACTION PCB_ACTIONS::ddAppendBoard( TOOL_ACTION_ARGS()
  2108. .Name( "pcbnew.Control.DdAppendBoard" )
  2109. .Scope( AS_GLOBAL ) );
  2110. TOOL_ACTION PCB_ACTIONS::ddImportFootprint( TOOL_ACTION_ARGS()
  2111. .Name( "pcbnew.Control.ddImportFootprint" )
  2112. .Scope( AS_GLOBAL ) );
  2113. const TOOL_EVENT PCB_EVENTS::SnappingModeChangedByKeyEvent( TC_MESSAGE, TA_ACTION,
  2114. "common.Interactive.snappingModeChangedByKey" );