KiCad PCB EDA Suite
menubar_pcb_editor.cpp
Go to the documentation of this file.
1/*
2 * This program source code file is part of KiCad, a free EDA CAD application.
3 *
4 * Copyright (C) 2017 Jean-Pierre Charras, jp.charras at wanadoo.fr
5 * Copyright (C) 2012 SoftPLC Corporation, Dick Hollenbeck <[email protected]>
6 * Copyright (C) 2012 Wayne Stambaugh <[email protected]>
7 * Copyright (C) 1992-2022 KiCad Developers, see AUTHORS.txt for contributors.
8 *
9 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License
11 * as published by the Free Software Foundation; either version 2
12 * of the License, or (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, you may find one here:
21 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
22 * or you may search the http://www.gnu.org website for the version 2 license,
23 * or you may write to the Free Software Foundation, Inc.,
24 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
25 */
26
27#include <advanced_config.h>
28#include <bitmaps.h>
29#include <filehistory.h>
30#include <kiface_base.h>
31#include <menus_helpers.h>
32#include <pcb_edit_frame.h>
33#include <pcbnew_id.h>
34#include <python_scripting.h>
35#include <tool/action_manager.h>
36#include <tool/actions.h>
37#include <tool/tool_manager.h>
38#include <tools/pcb_actions.h>
40#include <widgets/wx_menubar.h>
41
42
44{
46 // wxWidgets handles the Mac Application menu behind the scenes, but that means
47 // we always have to start from scratch with a new wxMenuBar.
48 wxMenuBar* oldMenuBar = GetMenuBar();
49 WX_MENUBAR* menuBar = new WX_MENUBAR();
50
51 // Recreate all menus:
52
53 //-- File menu -----------------------------------------------------------
54 //
55 ACTION_MENU* fileMenu = new ACTION_MENU( false, selTool );
56 static ACTION_MENU* openRecentMenu;
57
58 if( Kiface().IsSingle() ) // not when under a project mgr
59 {
60 FILE_HISTORY& fileHistory = GetFileHistory();
61
62 // Create the menu if it does not exist. Adding a file to/from the history
63 // will automatically refresh the menu.
64 if( !openRecentMenu )
65 {
66 openRecentMenu = new ACTION_MENU( false, selTool );
67 openRecentMenu->SetIcon( BITMAPS::recent );
68
69 fileHistory.UseMenu( openRecentMenu );
70 fileHistory.AddFilesToMenu();
71 }
72
73 // Ensure the title is up to date after changing language
74 openRecentMenu->SetTitle( _( "Open Recent" ) );
75 fileHistory.UpdateClearText( openRecentMenu, _( "Clear Recent Files" ) );
76
77 fileMenu->Add( ACTIONS::doNew );
78 fileMenu->Add( ACTIONS::open );
79
80 wxMenuItem* item = fileMenu->Add( openRecentMenu->Clone() );
81
82 // Add the file menu condition here since it needs the item ID for the submenu
84 cond.Enable( FILE_HISTORY::FileHistoryNotEmpty( fileHistory ) );
85 RegisterUIUpdateHandler( item->GetId(), cond );
86 }
87
88 fileMenu->Add( PCB_ACTIONS::appendBoard );
89 fileMenu->AppendSeparator();
90
91 fileMenu->Add( ACTIONS::save );
92
93 // Save as menu:
94 // under a project mgr we do not want to modify the board filename
95 // to keep consistency with the project mgr which expects files names same as prj name
96 // for main files
97 if( Kiface().IsSingle() )
98 fileMenu->Add( ACTIONS::saveAs );
99 else
100 fileMenu->Add( ACTIONS::saveCopy );
101
102 fileMenu->Add( ACTIONS::revert );
103
104 fileMenu->AppendSeparator();
105 fileMenu->Add( _( "Resc&ue" ),
106 _( "Clear board and get last rescue file automatically saved by PCB editor" ),
109
110 // Import submenu
111 ACTION_MENU* submenuImport = new ACTION_MENU( false, selTool );
112 submenuImport->SetTitle( _( "Import" ) );
113 submenuImport->SetIcon( BITMAPS::import );
114
115 submenuImport->Add( PCB_ACTIONS::importNetlist, ACTION_MENU::NORMAL, _( "Netlist..." ) );
116 submenuImport->Add( PCB_ACTIONS::importSpecctraSession, ACTION_MENU::NORMAL, _( "Specctra Session..." ) );
117 submenuImport->Add( PCB_ACTIONS::placeImportedGraphics, ACTION_MENU::NORMAL, _( "Graphics..." ) );
118 submenuImport->Add( _( "Non-KiCad Board File..." ),
119 _( "Import board file from other applications" ),
121
122 fileMenu->AppendSeparator();
123 fileMenu->Add( submenuImport );
124
125 // Export submenu
126 ACTION_MENU* submenuExport = new ACTION_MENU( false, selTool );
127 submenuExport->SetTitle( _( "Export" ) );
128 submenuExport->SetIcon( BITMAPS::export_file );
129
130 submenuExport->Add( PCB_ACTIONS::exportSpecctraDSN, ACTION_MENU::NORMAL, _( "Specctra DSN..." ) );
131 submenuExport->Add( _( "GenCAD..." ), _( "Export GenCAD board representation" ),
133 submenuExport->Add( _( "VRML..." ), _( "Export VRML 3D board representation" ),
135 submenuExport->Add( _( "IDFv3..." ), _( "Export IDF 3D board representation" ),
137 submenuExport->Add( _( "STEP..." ), _( "Export STEP 3D board representation" ),
139 submenuExport->Add( _( "SVG..." ), _( "Export SVG board representation" ),
141 submenuExport->Add( _( "Footprint Association (.cmp) File..." ),
142 _( "Export footprint association file (*.cmp) for schematic back annotation" ),
144 submenuExport->Add( _( "Hyperlynx..." ), wxEmptyString,
146
147 if( ADVANCED_CFG::GetCfg().m_ShowPcbnewExportNetlist && m_exportNetlistAction )
148 submenuExport->Add( *m_exportNetlistAction );
149
150 submenuExport->AppendSeparator();
151 submenuExport->Add( _( "Footprints to Library..." ),
152 _( "Add footprints used on board to an existing footprint library\n"
153 "(does not remove other footprints from this library)" ),
155
156 submenuExport->Add( _( "Footprints to New Library..." ),
157 _( "Create a new footprint library containing the footprints used on board\n"
158 "(if the library already exists it will be replaced)" ),
160
161 fileMenu->Add( submenuExport );
162
163 // Fabrication Outputs submenu
164 ACTION_MENU* submenuFabOutputs = new ACTION_MENU( false, selTool );
165 submenuFabOutputs->SetTitle( _( "Fabrication Outputs" ) );
166 submenuFabOutputs->SetIcon( BITMAPS::fabrication );
167
168 submenuFabOutputs->Add( PCB_ACTIONS::generateGerbers );
169 submenuFabOutputs->Add( PCB_ACTIONS::generateDrillFiles );
170 submenuFabOutputs->Add( PCB_ACTIONS::generatePosFile );
171 submenuFabOutputs->Add( PCB_ACTIONS::generateReportFile );
172 submenuFabOutputs->Add( PCB_ACTIONS::generateD356File );
173 submenuFabOutputs->Add( PCB_ACTIONS::generateBOM );
174 fileMenu->Add( submenuFabOutputs );
175
176 fileMenu->AppendSeparator();
177 fileMenu->Add( PCB_ACTIONS::boardSetup );
178
179 fileMenu->AppendSeparator();
180 fileMenu->Add( ACTIONS::pageSettings );
181 fileMenu->Add( ACTIONS::print );
182 fileMenu->Add( ACTIONS::plot );
183
184 fileMenu->AppendSeparator();
185 fileMenu->AddQuitOrClose( &Kiface(), _( "PCB Editor" ) );
186
187 //-- Edit menu -----------------------------------------------------------
188 //
189 ACTION_MENU* editMenu = new ACTION_MENU( false, selTool );
190
191 editMenu->Add( ACTIONS::undo );
192 editMenu->Add( ACTIONS::redo );
193
194 editMenu->AppendSeparator();
195 editMenu->Add( ACTIONS::cut );
196 editMenu->Add( ACTIONS::copy );
197 editMenu->Add( ACTIONS::paste );
198 editMenu->Add( ACTIONS::pasteSpecial );
199 editMenu->Add( ACTIONS::doDelete );
200
201 editMenu->AppendSeparator();
202 editMenu->Add( ACTIONS::selectAll );
203
204 editMenu->AppendSeparator();
205 editMenu->Add( ACTIONS::find );
206
207 editMenu->AppendSeparator();
211 editMenu->Add( PCB_ACTIONS::swapLayers );
212
213 editMenu->AppendSeparator();
214 editMenu->Add( PCB_ACTIONS::zoneFillAll );
215 editMenu->Add( PCB_ACTIONS::zoneUnfillAll );
216
217 editMenu->AppendSeparator();
218 editMenu->Add( ACTIONS::deleteTool );
220
221
222 //----- View menu -----------------------------------------------------------
223 //
224 ACTION_MENU* viewMenu = new ACTION_MENU( false, selTool );
225
227
228 if( ADVANCED_CFG::GetCfg().m_ShowPropertiesPanel )
230
233 viewMenu->Add( ACTIONS::show3DViewer );
234
235 viewMenu->AppendSeparator();
236 viewMenu->Add( ACTIONS::zoomInCenter );
237 viewMenu->Add( ACTIONS::zoomOutCenter );
238 viewMenu->Add( ACTIONS::zoomFitScreen );
239 viewMenu->Add( ACTIONS::zoomFitObjects );
240 viewMenu->Add( ACTIONS::zoomTool );
241 viewMenu->Add( ACTIONS::zoomRedraw );
242
243 viewMenu->AppendSeparator();
245 viewMenu->Add( ACTIONS::gridProperties );
247
248 // Units submenu
249 ACTION_MENU* unitsSubMenu = new ACTION_MENU( false, selTool );
250 unitsSubMenu->SetTitle( _( "&Units" ) );
251 unitsSubMenu->SetIcon( BITMAPS::unit_mm );
253 unitsSubMenu->Add( ACTIONS::milsUnits, ACTION_MENU::CHECK );
255 viewMenu->Add( unitsSubMenu );
256
258
259 viewMenu->AppendSeparator();
262
263 viewMenu->AppendSeparator();
264 // Drawing Mode Submenu
265 ACTION_MENU* drawingModeSubMenu = new ACTION_MENU( false, selTool );
266 drawingModeSubMenu->SetTitle( _( "&Drawing Mode" ) );
267 drawingModeSubMenu->SetIcon( BITMAPS::add_zone );
268
271
272 if( ADVANCED_CFG::GetCfg().m_ExtraZoneDisplayModes )
273 {
276 }
277
278 drawingModeSubMenu->AppendSeparator();
279 drawingModeSubMenu->Add( PCB_ACTIONS::padDisplayMode, ACTION_MENU::CHECK );
280 drawingModeSubMenu->Add( PCB_ACTIONS::viaDisplayMode, ACTION_MENU::CHECK );
282
283 drawingModeSubMenu->AppendSeparator();
285 drawingModeSubMenu->Add( PCB_ACTIONS::textOutlines, ACTION_MENU::CHECK );
286
287 viewMenu->Add( drawingModeSubMenu );
288
289 // Contrast Mode Submenu
290 ACTION_MENU* contrastModeSubMenu = new ACTION_MENU( false, selTool );
291 contrastModeSubMenu->SetTitle( _( "&Contrast Mode" ) );
292 contrastModeSubMenu->SetIcon( BITMAPS::contrast_mode );
293
294 contrastModeSubMenu->Add( ACTIONS::highContrastMode, ACTION_MENU::CHECK );
295 contrastModeSubMenu->Add( PCB_ACTIONS::layerAlphaDec );
296 contrastModeSubMenu->Add( PCB_ACTIONS::layerAlphaInc );
297 viewMenu->Add( contrastModeSubMenu );
298
300
301#ifdef __APPLE__
302 viewMenu->AppendSeparator();
303#endif
304
305 //-- Place Menu ----------------------------------------------------------
306 //
307 ACTION_MENU* placeMenu = new ACTION_MENU( false, selTool );
308
309 placeMenu->Add( PCB_ACTIONS::placeFootprint );
310 placeMenu->Add( PCB_ACTIONS::drawVia );
311 placeMenu->Add( PCB_ACTIONS::drawZone );
312 placeMenu->Add( PCB_ACTIONS::drawRuleArea );
313
314 ACTION_MENU* muwaveSubmenu = new ACTION_MENU( false, selTool );
315 muwaveSubmenu->SetTitle( _( "Add Microwave Shape" ) );
316 muwaveSubmenu->SetIcon( BITMAPS::mw_add_line );
317 muwaveSubmenu->Add( PCB_ACTIONS::microwaveCreateLine );
318 muwaveSubmenu->Add( PCB_ACTIONS::microwaveCreateGap );
319 muwaveSubmenu->Add( PCB_ACTIONS::microwaveCreateStub );
322 placeMenu->Add( muwaveSubmenu );
323
324 placeMenu->AppendSeparator();
325 placeMenu->Add( PCB_ACTIONS::drawLine );
326 placeMenu->Add( PCB_ACTIONS::drawArc );
327 placeMenu->Add( PCB_ACTIONS::drawRectangle );
328 placeMenu->Add( PCB_ACTIONS::drawCircle );
329 placeMenu->Add( PCB_ACTIONS::drawPolygon );
330 placeMenu->Add( PCB_ACTIONS::placeImage );
331 placeMenu->Add( PCB_ACTIONS::placeText );
332 placeMenu->Add( PCB_ACTIONS::drawTextBox );
333
334 placeMenu->AppendSeparator();
339 placeMenu->Add( PCB_ACTIONS::drawLeader );
340
341 placeMenu->AppendSeparator();
343 placeMenu->Add( PCB_ACTIONS::placeStackup );
344
345 placeMenu->AppendSeparator();
346 placeMenu->Add( PCB_ACTIONS::drillOrigin );
347 placeMenu->Add( ACTIONS::gridSetOrigin );
348
349 placeMenu->AppendSeparator();
350
351 ACTION_MENU* autoplaceSubmenu = new ACTION_MENU( false, selTool );
352 autoplaceSubmenu->SetTitle( _( "Auto-Place Footprints" ) );
353 autoplaceSubmenu->SetIcon( BITMAPS::mode_module );
354
357
358 placeMenu->Add( autoplaceSubmenu );
359
360
361 //-- Route Menu ----------------------------------------------------------
362 //
363 ACTION_MENU* routeMenu = new ACTION_MENU( false, selTool );
364
365 routeMenu->Add( PCB_ACTIONS::selectLayerPair );
366
367 routeMenu->AppendSeparator();
369 routeMenu->Add( PCB_ACTIONS::routeDiffPair );
370
371 routeMenu->AppendSeparator();
375
376 routeMenu->AppendSeparator();
378
379
380 //-- Inspect Menu --------------------------------------------------------
381 //
382 ACTION_MENU* inspectMenu = new ACTION_MENU( false, selTool );
383
384 inspectMenu->Add( PCB_ACTIONS::listNets );
385 inspectMenu->Add( PCB_ACTIONS::boardStatistics );
386 inspectMenu->Add( ACTIONS::measureTool );
387
388 inspectMenu->AppendSeparator();
389 inspectMenu->Add( PCB_ACTIONS::runDRC );
390 inspectMenu->Add( ACTIONS::prevMarker );
391 inspectMenu->Add( ACTIONS::nextMarker );
392 inspectMenu->Add( ACTIONS::excludeMarker );
393
394 inspectMenu->AppendSeparator();
395 inspectMenu->Add( PCB_ACTIONS::inspectClearance );
396 inspectMenu->Add( PCB_ACTIONS::inspectConstraints );
397
398
399 //-- Tools menu ----------------------------------------------------------
400 //
401 ACTION_MENU* toolsMenu = new ACTION_MENU( false, selTool );
402
403 wxMenuItem* update = toolsMenu->Add( ACTIONS::updatePcbFromSchematic );
404 update->Enable( !Kiface().IsSingle() );
405
406 toolsMenu->Add( PCB_ACTIONS::showEeschema );
407
408 toolsMenu->AppendSeparator();
409 toolsMenu->Add( ACTIONS::showFootprintEditor );
411
412 // Add/remove teardrops menuitems:
413 toolsMenu->AppendSeparator();
414 toolsMenu->Add( _( "Add Teardrops..." ), "", ID_RUN_TEARDROP_TOOL, BITMAPS::via );
415 toolsMenu->Add( _( "Remove Teardrops" ), "", ID_REMOVE_TEARDROP_TOOL, BITMAPS::via );
416
417 toolsMenu->AppendSeparator();
420 toolsMenu->Add( PCB_ACTIONS::cleanupGraphics );
421 toolsMenu->Add( PCB_ACTIONS::repairBoard );
422
423 toolsMenu->AppendSeparator();
424 toolsMenu->Add( PCB_ACTIONS::boardReannotate );
425 update = toolsMenu->Add( ACTIONS::updateSchematicFromPcb );
426 update->Enable( !Kiface().IsSingle() );
427
428 if( SCRIPTING::IsWxAvailable() )
429 {
430 toolsMenu->AppendSeparator();
432 }
433
434 ACTION_MENU* submenuActionPlugins = new ACTION_MENU( false, selTool );
435 submenuActionPlugins->SetTitle( _( "External Plugins" ) );
436 submenuActionPlugins->SetIcon( BITMAPS::puzzle_piece );
437
438 submenuActionPlugins->Add( PCB_ACTIONS::pluginsReload );
439 submenuActionPlugins->Add( PCB_ACTIONS::pluginsShowFolder );
440
441 // Populate the Action Plugin sub-menu: Must be done before Add
442 // Since the object is cloned by Add
443 submenuActionPlugins->AppendSeparator();
444 buildActionPluginMenus( submenuActionPlugins );
445
446 toolsMenu->AppendSeparator();
447 toolsMenu->Add( submenuActionPlugins );
448
449 //-- Preferences menu ----------------------------------------------------
450 //
451 ACTION_MENU* prefsMenu = new ACTION_MENU( false, selTool );
452
453 prefsMenu->Add( ACTIONS::configurePaths );
455
456 // We can't use ACTIONS::showPreferences yet because wxWidgets moves this on
457 // Mac, and it needs the wxID_PREFERENCES id to find it.
458 prefsMenu->Add( _( "Preferences..." ) + wxT( "\tCtrl+," ),
459 _( "Show preferences for all open tools" ),
460 wxID_PREFERENCES,
462
463 prefsMenu->AppendSeparator();
464 AddMenuLanguageList( prefsMenu, selTool );
465
466
467 //--MenuBar -----------------------------------------------------------
468 //
469 menuBar->Append( fileMenu, _( "&File" ) );
470 menuBar->Append( editMenu, _( "&Edit" ) );
471 menuBar->Append( viewMenu, _( "&View" ) );
472 menuBar->Append( placeMenu, _( "&Place" ) );
473 menuBar->Append( routeMenu, _( "Ro&ute" ) );
474 menuBar->Append( inspectMenu, _( "&Inspect" ) );
475 menuBar->Append( toolsMenu, _( "&Tools" ) );
476 menuBar->Append( prefsMenu, _( "P&references" ) );
477 AddStandardHelpMenu( menuBar );
478
479 SetMenuBar( menuBar );
480 delete oldMenuBar;
481
482}
KIFACE_BASE & Kiface()
Global KIFACE_BASE "get" accessor.
@ library_archive_as
@ contrast_mode
@ puzzle_piece
@ import_brd_file
@ library_archive
static TOOL_ACTION gridProperties
Definition: actions.h:144
static TOOL_ACTION updatePcbFromSchematic
Definition: actions.h:167
static TOOL_ACTION toggleGrid
Definition: actions.h:143
static TOOL_ACTION paste
Definition: actions.h:69
static TOOL_ACTION excludeMarker
Definition: actions.h:89
static TOOL_ACTION nextMarker
Definition: actions.h:88
static TOOL_ACTION zoomRedraw
Definition: actions.h:92
static TOOL_ACTION millimetersUnits
Definition: actions.h:149
static TOOL_ACTION revert
Definition: actions.h:55
static TOOL_ACTION show3DViewer
Definition: actions.h:162
static TOOL_ACTION zoomOutCenter
Definition: actions.h:96
static TOOL_ACTION togglePolarCoords
Definition: actions.h:152
static TOOL_ACTION saveAs
Definition: actions.h:52
static TOOL_ACTION copy
Definition: actions.h:68
static TOOL_ACTION pasteSpecial
Definition: actions.h:70
static TOOL_ACTION milsUnits
Definition: actions.h:148
static TOOL_ACTION showFootprintLibTable
Definition: actions.h:181
static TOOL_ACTION plot
Definition: actions.h:58
static TOOL_ACTION open
Definition: actions.h:50
static TOOL_ACTION pageSettings
Definition: actions.h:56
static TOOL_ACTION showSearch
Definition: actions.h:77
static TOOL_ACTION undo
Definition: actions.h:65
static TOOL_ACTION prevMarker
Definition: actions.h:87
static TOOL_ACTION inchesUnits
Definition: actions.h:147
static TOOL_ACTION highContrastMode
Definition: actions.h:105
static TOOL_ACTION toggleCursorStyle
Definition: actions.h:104
static TOOL_ACTION measureTool
Definition: actions.h:157
static TOOL_ACTION doDelete
Definition: actions.h:73
static TOOL_ACTION save
Definition: actions.h:51
static TOOL_ACTION zoomFitScreen
Definition: actions.h:98
static TOOL_ACTION redo
Definition: actions.h:66
static TOOL_ACTION deleteTool
Definition: actions.h:74
static TOOL_ACTION zoomTool
Definition: actions.h:101
static TOOL_ACTION updateSchematicFromPcb
Definition: actions.h:168
static TOOL_ACTION showFootprintEditor
Definition: actions.h:166
static TOOL_ACTION print
Definition: actions.h:57
static TOOL_ACTION doNew
Definition: actions.h:47
static TOOL_ACTION zoomFitObjects
Definition: actions.h:99
static TOOL_ACTION zoomInCenter
Definition: actions.h:95
static TOOL_ACTION saveCopy
Definition: actions.h:53
static TOOL_ACTION cut
Definition: actions.h:67
static TOOL_ACTION gridSetOrigin
Definition: actions.h:140
static TOOL_ACTION configurePaths
Definition: actions.h:179
static TOOL_ACTION showFootprintBrowser
Definition: actions.h:165
static TOOL_ACTION selectAll
Definition: actions.h:71
static TOOL_ACTION find
Definition: actions.h:78
Defines the structure of a menu based on ACTIONs.
Definition: action_menu.h:49
void AddQuitOrClose(KIFACE_BASE *aKiface, wxString aAppname="")
Add either a standard Quit or Close item to the menu.
static constexpr bool CHECK
Definition: action_menu.h:189
ACTION_MENU * Clone() const
Create a deep, recursive copy of this ACTION_MENU.
void SetTitle(const wxString &aTitle) override
Set title for the menu.
Definition: action_menu.cpp:87
static constexpr bool NORMAL
Definition: action_menu.h:188
void SetIcon(BITMAPS aIcon)
Assign an icon for the entry.
Definition: action_menu.cpp:73
wxMenuItem * Add(const wxString &aLabel, int aId, BITMAPS aIcon)
Add a wxWidgets-style entry to the menu.
static const ADVANCED_CFG & GetCfg()
Get the singleton instance's config, which is shared by all consumers.
FILE_HISTORY & GetFileHistory()
Get the frame's main file history.
virtual void RegisterUIUpdateHandler(int aID, const ACTION_CONDITIONS &aConditions) override
Register a UI update handler for the control with ID aID.
void AddStandardHelpMenu(wxMenuBar *aMenuBar)
Adds the standard KiCad help menu to the menubar.
This class implements a file history object to store a list of files, that can then be added to a men...
Definition: filehistory.h:43
static SELECTION_CONDITION FileHistoryNotEmpty(const FILE_HISTORY &aHistory)
Create a SELECTION_CONDITION that can be used to enable a menu item when the file history has items i...
void UpdateClearText(wxMenu *aMenu, wxString aClearText)
Update the text displayed on the menu item that clears the entire menu.
void AddFilesToMenu() override
Add the files to all registered menus.
Definition: filehistory.h:98
static TOOL_ACTION editTracksAndVias
Definition: pcb_actions.h:359
static TOOL_ACTION drawRuleArea
Definition: pcb_actions.h:185
static TOOL_ACTION microwaveCreateGap
Definition: pcb_actions.h:455
static TOOL_ACTION placeText
Definition: pcb_actions.h:176
static TOOL_ACTION swapLayers
Definition: pcb_actions.h:368
static TOOL_ACTION generateBOM
Definition: pcb_actions.h:381
static TOOL_ACTION drawOrthogonalDimension
Definition: pcb_actions.h:181
static TOOL_ACTION listNets
Definition: pcb_actions.h:383
static TOOL_ACTION drawRectangle
Definition: pcb_actions.h:172
static TOOL_ACTION padDisplayMode
Definition: pcb_actions.h:280
static TOOL_ACTION routerSettingsDialog
Activation of the Push and Shove settings dialogs.
Definition: pcb_actions.h:231
static TOOL_ACTION showRatsnest
Definition: pcb_actions.h:275
static TOOL_ACTION zoneFillAll
Definition: pcb_actions.h:344
static TOOL_ACTION showLayersManager
Definition: pcb_actions.h:389
static TOOL_ACTION generateDrillFiles
Definition: pcb_actions.h:377
static TOOL_ACTION drawCircle
Definition: pcb_actions.h:173
static TOOL_ACTION routeDiffPair
Activation of the Push and Shove router (differential pair mode)
Definition: pcb_actions.h:211
static TOOL_ACTION placeImage
Definition: pcb_actions.h:175
static TOOL_ACTION generateD356File
Definition: pcb_actions.h:380
static TOOL_ACTION exportSpecctraDSN
Definition: pcb_actions.h:374
static TOOL_ACTION routerTuneDiffPair
Activation of the Push and Shove router (diff pair tuning mode)
Definition: pcb_actions.h:217
static TOOL_ACTION drawTextBox
Definition: pcb_actions.h:177
static TOOL_ACTION layerAlphaDec
Definition: pcb_actions.h:325
static TOOL_ACTION drawPolygon
Definition: pcb_actions.h:171
static TOOL_ACTION zoneDisplayFilled
Definition: pcb_actions.h:282
static TOOL_ACTION drawRadialDimension
Definition: pcb_actions.h:180
static TOOL_ACTION showProperties
Definition: pcb_actions.h:390
static TOOL_ACTION routerTuneDiffPairSkew
Activation of the Push and Shove router (skew tuning mode)
Definition: pcb_actions.h:220
static TOOL_ACTION cleanupTracksAndVias
Definition: pcb_actions.h:362
static TOOL_ACTION viaDisplayMode
Definition: pcb_actions.h:281
static TOOL_ACTION editTextAndGraphics
Definition: pcb_actions.h:360
static TOOL_ACTION drawLeader
Definition: pcb_actions.h:182
static TOOL_ACTION placeCharacteristics
Definition: pcb_actions.h:188
static TOOL_ACTION pluginsShowFolder
Definition: pcb_actions.h:355
static TOOL_ACTION autoplaceOffboardComponents
Definition: pcb_actions.h:516
static TOOL_ACTION layerAlphaInc
Definition: pcb_actions.h:324
static TOOL_ACTION inspectConstraints
Definition: pcb_actions.h:493
static TOOL_ACTION generatePosFile
Definition: pcb_actions.h:378
static TOOL_ACTION globalDeletions
Definition: pcb_actions.h:361
static TOOL_ACTION drillOrigin
Definition: pcb_actions.h:484
static TOOL_ACTION routerTuneSingleTrace
Activation of the Push and Shove router (tune single line mode)
Definition: pcb_actions.h:214
static TOOL_ACTION repairBoard
Definition: pcb_actions.h:490
static TOOL_ACTION trackDisplayMode
Definition: pcb_actions.h:279
static TOOL_ACTION selectLayerPair
Definition: pcb_actions.h:161
static TOOL_ACTION microwaveCreateStubArc
Definition: pcb_actions.h:459
static TOOL_ACTION generateGerbers
Definition: pcb_actions.h:376
static TOOL_ACTION inspectClearance
Definition: pcb_actions.h:492
static TOOL_ACTION zoneDisplayTriangulated
Definition: pcb_actions.h:285
static TOOL_ACTION generateReportFile
Definition: pcb_actions.h:379
static TOOL_ACTION updateFootprints
Definition: pcb_actions.h:365
static TOOL_ACTION autoplaceSelectedComponents
Definition: pcb_actions.h:517
static TOOL_ACTION placeImportedGraphics
Definition: pcb_actions.h:191
static TOOL_ACTION removeUnusedPads
Definition: pcb_actions.h:369
static TOOL_ACTION zoneDisplayFractured
Definition: pcb_actions.h:284
static TOOL_ACTION drawVia
Definition: pcb_actions.h:184
static TOOL_ACTION drawArc
Definition: pcb_actions.h:174
static TOOL_ACTION runDRC
Definition: pcb_actions.h:384
static TOOL_ACTION graphicsOutlines
Display footprint graphics as outlines.
Definition: pcb_actions.h:438
static TOOL_ACTION importNetlist
Definition: pcb_actions.h:371
static TOOL_ACTION pluginsReload
Scripting Actions.
Definition: pcb_actions.h:354
static TOOL_ACTION changeFootprints
Definition: pcb_actions.h:367
static TOOL_ACTION boardSetup
Definition: pcb_actions.h:358
static TOOL_ACTION showEeschema
Definition: pcb_actions.h:487
static TOOL_ACTION drawCenterDimension
Definition: pcb_actions.h:179
static TOOL_ACTION zoneUnfillAll
Definition: pcb_actions.h:347
static TOOL_ACTION appendBoard
Definition: pcb_actions.h:486
static TOOL_ACTION microwaveCreateStub
Definition: pcb_actions.h:457
static TOOL_ACTION microwaveCreateLine
Definition: pcb_actions.h:463
static TOOL_ACTION flipBoard
Definition: pcb_actions.h:330
static TOOL_ACTION zoneDisplayOutline
Definition: pcb_actions.h:283
static TOOL_ACTION ratsnestLineMode
Definition: pcb_actions.h:276
static TOOL_ACTION textOutlines
Display texts as lines.
Definition: pcb_actions.h:441
static TOOL_ACTION microwaveCreateFunctionShape
Definition: pcb_actions.h:461
static TOOL_ACTION boardReannotate
Definition: pcb_actions.h:489
static TOOL_ACTION placeFootprint
Definition: pcb_actions.h:190
static TOOL_ACTION routeSingleTrack
Activation of the Push and Shove router.
Definition: pcb_actions.h:208
static TOOL_ACTION boardStatistics
Definition: pcb_actions.h:488
static TOOL_ACTION showPythonConsole
Definition: pcb_actions.h:391
static TOOL_ACTION drawLine
Definition: pcb_actions.h:170
static TOOL_ACTION placeStackup
Definition: pcb_actions.h:189
static TOOL_ACTION cleanupGraphics
Definition: pcb_actions.h:363
static TOOL_ACTION drawAlignedDimension
Definition: pcb_actions.h:178
static TOOL_ACTION drawZone
Definition: pcb_actions.h:183
static TOOL_ACTION importSpecctraSession
Definition: pcb_actions.h:373
void buildActionPluginMenus(ACTION_MENU *aActionMenu)
Fill action menu with all registered action plugins.
TOOL_ACTION * m_exportNetlistAction
The export board netlist tool action object.
void ReCreateMenuBar() override
Recreates the menu bar.
The selection tool: currently supports:
TOOL_MANAGER * m_toolManager
Definition: tools_holder.h:170
Wrapper around a wxMenuBar object that prevents the accelerator table from being used.
Definition: wx_menubar.h:46
#define _(s)
@ ID_GEN_PLOT_SVG
Definition: id.h:95
void AddMenuLanguageList(ACTION_MENU *aMasterMenu, TOOL_INTERACTIVE *aControlTool)
Function AddMenuLanguageList creates a menu list for language choice, and add it as submenu to Master...
Macros and inline functions to create menus items in menubars or popup menus.
@ ID_GEN_EXPORT_FILE_HYPERLYNX
Definition: pcbnew_id.h:88
@ ID_IMPORT_NON_KICAD_BOARD
Definition: pcbnew_id.h:19
@ ID_MENU_RECOVER_BOARD_AUTOSAVE
Definition: pcbnew_id.h:81
@ ID_RUN_TEARDROP_TOOL
Definition: pcbnew_id.h:119
@ ID_PCB_GEN_CMP_FILE
Definition: pcbnew_id.h:93
@ ID_MENU_EXPORT_FOOTPRINTS_TO_NEW_LIBRARY
Definition: pcbnew_id.h:83
@ ID_MENU_EXPORT_FOOTPRINTS_TO_LIBRARY
Definition: pcbnew_id.h:82
@ ID_GEN_EXPORT_FILE_VRML
Definition: pcbnew_id.h:86
@ ID_REMOVE_TEARDROP_TOOL
Definition: pcbnew_id.h:120
@ ID_GEN_EXPORT_FILE_STEP
Definition: pcbnew_id.h:87
@ ID_GEN_EXPORT_FILE_IDF3
Definition: pcbnew_id.h:85
@ ID_GEN_EXPORT_FILE_GENCADFORMAT
Definition: pcbnew_id.h:89
Functors that can be used to figure out how the action controls should be displayed in the UI and if ...
ACTION_CONDITIONS & Enable(const SELECTION_CONDITION &aCondition)