diff --git a/3d-viewer/3d_viewer/3d_menubar.cpp b/3d-viewer/3d_viewer/3d_menubar.cpp index b73db43f59..a765119b6b 100644 --- a/3d-viewer/3d_viewer/3d_menubar.cpp +++ b/3d-viewer/3d_viewer/3d_menubar.cpp @@ -138,7 +138,7 @@ void EDA_3D_VIEWER_FRAME::CreateMenuBar() gridSubmenu->Add( EDA_3D_ACTIONS::show2_5mmGrid, ACTION_MENU::CHECK); gridSubmenu->Add( EDA_3D_ACTIONS::show1mmGrid, ACTION_MENU::CHECK); - prefsMenu->Add( gridSubmenu ); + prefsMenu->Add( gridSubmenu, false ); //-- Menubar ------------------------------------------------------------- // diff --git a/common/tool/action_menu.cpp b/common/tool/action_menu.cpp index 79925aa5c0..54a733ef41 100644 --- a/common/tool/action_menu.cpp +++ b/common/tool/action_menu.cpp @@ -181,9 +181,9 @@ wxMenuItem* ACTION_MENU::Add( const TOOL_ACTION& aAction, bool aIsCheckmarkEntry } -wxMenuItem* ACTION_MENU::Add( ACTION_MENU* aMenu ) +wxMenuItem* ACTION_MENU::Add( ACTION_MENU* aMenu, bool aClone ) { - ACTION_MENU* menuCopy = aMenu->Clone(); + ACTION_MENU* menuCopy = aClone ? aMenu->Clone() : aMenu; m_submenus.push_back( menuCopy ); wxASSERT_MSG( !menuCopy->m_title.IsEmpty(), "Set a title for ACTION_MENU using SetTitle()" ); diff --git a/eeschema/menubar.cpp b/eeschema/menubar.cpp index 5910cdb2b0..55f14c8233 100644 --- a/eeschema/menubar.cpp +++ b/eeschema/menubar.cpp @@ -107,7 +107,7 @@ void SCH_EDIT_FRAME::ReCreateMenuBar() BITMAPS::import_document ); submenuImport->Add( EE_ACTIONS::importFPAssignments, ACTION_MENU::NORMAL, _( "Footprint Assignments..." ) ); - fileMenu->Add( submenuImport ); + fileMenu->Add( submenuImport, false ); // Export submenu @@ -116,7 +116,7 @@ void SCH_EDIT_FRAME::ReCreateMenuBar() submenuExport->SetIcon( BITMAPS::export_file ); submenuExport->Add( EE_ACTIONS::drawSheetOnClipboard, ACTION_MENU::NORMAL, _( "Drawing to Clipboard" ) ); submenuExport->Add( EE_ACTIONS::exportNetlist, ACTION_MENU::NORMAL, _( "Netlist..." ) ); - fileMenu->Add( submenuExport ); + fileMenu->Add( submenuExport, false ); fileMenu->AppendSeparator(); fileMenu->Add( EE_ACTIONS::schematicSetup ); @@ -184,7 +184,7 @@ void SCH_EDIT_FRAME::ReCreateMenuBar() unitsSubMenu->Add( ACTIONS::inchesUnits, ACTION_MENU::CHECK ); unitsSubMenu->Add( ACTIONS::milsUnits, ACTION_MENU::CHECK ); unitsSubMenu->Add( ACTIONS::millimetersUnits, ACTION_MENU::CHECK ); - viewMenu->Add( unitsSubMenu ); + viewMenu->Add( unitsSubMenu, false ); viewMenu->Add( ACTIONS::toggleCursorStyle, ACTION_MENU::CHECK ); diff --git a/eeschema/symbol_editor/menubar_symbol_editor.cpp b/eeschema/symbol_editor/menubar_symbol_editor.cpp index ac4263b7f0..9104016d68 100644 --- a/eeschema/symbol_editor/menubar_symbol_editor.cpp +++ b/eeschema/symbol_editor/menubar_symbol_editor.cpp @@ -70,7 +70,7 @@ void SYMBOL_EDIT_FRAME::ReCreateMenuBar() submenuExport->Add( EE_ACTIONS::exportSymbol, ACTION_MENU::NORMAL, _( "Symbol..." ) ); submenuExport->Add( EE_ACTIONS::exportSymbolView, ACTION_MENU::NORMAL, _( "View as PNG..." ) ); submenuExport->Add( EE_ACTIONS::exportSymbolAsSVG, ACTION_MENU::NORMAL, _( "Symbol as SVG..." ) ); - fileMenu->Add( submenuExport ); + fileMenu->Add( submenuExport, false ); fileMenu->AppendSeparator(); fileMenu->Add( EE_ACTIONS::symbolProperties ); @@ -125,7 +125,7 @@ void SYMBOL_EDIT_FRAME::ReCreateMenuBar() unitsSubMenu->Add( ACTIONS::inchesUnits, ACTION_MENU::CHECK ); unitsSubMenu->Add( ACTIONS::milsUnits, ACTION_MENU::CHECK ); unitsSubMenu->Add( ACTIONS::millimetersUnits, ACTION_MENU::CHECK ); - viewMenu->Add( unitsSubMenu ); + viewMenu->Add( unitsSubMenu, false ); viewMenu->Add( ACTIONS::toggleCursorStyle, ACTION_MENU::CHECK ); diff --git a/gerbview/menubar.cpp b/gerbview/menubar.cpp index a43fa405ff..302e9e9213 100644 --- a/gerbview/menubar.cpp +++ b/gerbview/menubar.cpp @@ -178,7 +178,7 @@ void GERBVIEW_FRAME::ReCreateMenuBar() unitsSubMenu->Add( ACTIONS::milsUnits, ACTION_MENU::CHECK ); unitsSubMenu->Add( ACTIONS::millimetersUnits, ACTION_MENU::CHECK ); - viewMenu->Add( unitsSubMenu ); + viewMenu->Add( unitsSubMenu, false ); viewMenu->AppendSeparator(); viewMenu->Add( GERBVIEW_ACTIONS::flashedDisplayOutlines, ACTION_MENU::CHECK ); diff --git a/include/tool/action_menu.h b/include/tool/action_menu.h index 8b281ebb03..3d8b94db12 100644 --- a/include/tool/action_menu.h +++ b/include/tool/action_menu.h @@ -105,8 +105,9 @@ public: * handle icons. * * @param aMenu is the submenu to be added. + * @param aClone is whether or not the submenu should be copied from a reference submenu */ - wxMenuItem* Add( ACTION_MENU* aMenu ); + wxMenuItem* Add( ACTION_MENU* aMenu, bool aClone = true ); /** * Add a standard close item to the menu with the accelerator key CTRL-W. diff --git a/kicad/menubar.cpp b/kicad/menubar.cpp index 227d74601b..f4b7748f49 100644 --- a/kicad/menubar.cpp +++ b/kicad/menubar.cpp @@ -95,21 +95,21 @@ void KICAD_MANAGER_FRAME::ReCreateMenuBar() fileMenu->AppendSeparator(); //Import Sub-menu - ACTION_MENU* importMenu = new ACTION_MENU( false, controlTool ); - importMenu->SetTitle( _( "Import Non-KiCad Project..." ) ); - importMenu->SetIcon( BITMAPS::import_project ); + ACTION_MENU* importSubMenu = new ACTION_MENU( false, controlTool ); + importSubMenu->SetTitle( _( "Import Non-KiCad Project..." ) ); + importSubMenu->SetIcon( BITMAPS::import_project ); - importMenu->Add( _( "CADSTAR Project..." ), + importSubMenu->Add( _( "CADSTAR Project..." ), _( "Import CADSTAR Archive Schematic and PCB (*.csa, *.cpa)" ), ID_IMPORT_CADSTAR_ARCHIVE_PROJECT, BITMAPS::import_project ); - importMenu->Add( _( "EAGLE Project..." ), + importSubMenu->Add( _( "EAGLE Project..." ), _( "Import EAGLE CAD XML schematic and board" ), ID_IMPORT_EAGLE_PROJECT, BITMAPS::import_project ); - fileMenu->Add( importMenu ); + fileMenu->Add( importSubMenu, false ); fileMenu->AppendSeparator(); fileMenu->Add( _( "&Archive Project..." ), diff --git a/pagelayout_editor/menubar.cpp b/pagelayout_editor/menubar.cpp index c4994daec2..1763022e87 100644 --- a/pagelayout_editor/menubar.cpp +++ b/pagelayout_editor/menubar.cpp @@ -118,7 +118,7 @@ void PL_EDITOR_FRAME::ReCreateMenuBar() unitsSubMenu->Add( ACTIONS::inchesUnits, ACTION_MENU::CHECK ); unitsSubMenu->Add( ACTIONS::milsUnits, ACTION_MENU::CHECK ); unitsSubMenu->Add( ACTIONS::millimetersUnits, ACTION_MENU::CHECK ); - viewMenu->Add( unitsSubMenu ); + viewMenu->Add( unitsSubMenu, false ); viewMenu->Add( ACTIONS::toggleCursorStyle, ACTION_MENU::CHECK ); diff --git a/pcbnew/menubar_footprint_editor.cpp b/pcbnew/menubar_footprint_editor.cpp index 37a088f83f..6eadd7fdfd 100644 --- a/pcbnew/menubar_footprint_editor.cpp +++ b/pcbnew/menubar_footprint_editor.cpp @@ -68,7 +68,7 @@ void FOOTPRINT_EDIT_FRAME::ReCreateMenuBar() submenuImport->Add( PCB_ACTIONS::importFootprint, ACTION_MENU::NORMAL, _( "Footprint..." ) ); submenuImport->Add( PCB_ACTIONS::placeImportedGraphics, ACTION_MENU::NORMAL, _( "Graphics..." ) ); - fileMenu->Add( submenuImport ); + fileMenu->Add( submenuImport, false ); ACTION_MENU* submenuExport = new ACTION_MENU( false, selTool ); submenuExport->SetTitle( _( "Export" ) ); @@ -80,7 +80,7 @@ void FOOTPRINT_EDIT_FRAME::ReCreateMenuBar() ID_FPEDIT_SAVE_PNG, BITMAPS::export_png ); - fileMenu->Add( submenuExport ); + fileMenu->Add( submenuExport, false ); fileMenu->AppendSeparator(); fileMenu->Add( PCB_ACTIONS::footprintProperties ); @@ -140,7 +140,7 @@ void FOOTPRINT_EDIT_FRAME::ReCreateMenuBar() unitsSubMenu->Add( ACTIONS::inchesUnits, ACTION_MENU::CHECK ); unitsSubMenu->Add( ACTIONS::milsUnits, ACTION_MENU::CHECK ); unitsSubMenu->Add( ACTIONS::millimetersUnits, ACTION_MENU::CHECK ); - viewMenu->Add( unitsSubMenu ); + viewMenu->Add( unitsSubMenu, false ); viewMenu->Add( ACTIONS::toggleCursorStyle, ACTION_MENU::CHECK ); @@ -153,7 +153,7 @@ void FOOTPRINT_EDIT_FRAME::ReCreateMenuBar() drawingModeSubMenu->Add( PCB_ACTIONS::padDisplayMode, ACTION_MENU::CHECK ); drawingModeSubMenu->Add( PCB_ACTIONS::graphicsOutlines, ACTION_MENU::CHECK ); drawingModeSubMenu->Add( PCB_ACTIONS::textOutlines, ACTION_MENU::CHECK ); - viewMenu->Add( drawingModeSubMenu ); + viewMenu->Add( drawingModeSubMenu, false ); // Contrast Mode Submenu ACTION_MENU* contrastModeSubMenu = new ACTION_MENU( false, selTool ); @@ -163,7 +163,7 @@ void FOOTPRINT_EDIT_FRAME::ReCreateMenuBar() contrastModeSubMenu->Add( ACTIONS::highContrastMode, ACTION_MENU::CHECK ); contrastModeSubMenu->Add( PCB_ACTIONS::layerAlphaDec ); contrastModeSubMenu->Add( PCB_ACTIONS::layerAlphaInc ); - viewMenu->Add( contrastModeSubMenu ); + viewMenu->Add( contrastModeSubMenu, false ); viewMenu->Add( PCB_ACTIONS::flipBoard, ACTION_MENU::CHECK ); diff --git a/pcbnew/menubar_pcb_editor.cpp b/pcbnew/menubar_pcb_editor.cpp index 5901e37e34..a35756d6de 100644 --- a/pcbnew/menubar_pcb_editor.cpp +++ b/pcbnew/menubar_pcb_editor.cpp @@ -119,7 +119,7 @@ void PCB_EDIT_FRAME::ReCreateMenuBar() } fileMenu->AppendSeparator(); - fileMenu->Add( submenuImport ); + fileMenu->Add( submenuImport, false ); // Export submenu ACTION_MENU* submenuExport = new ACTION_MENU( false, selTool ); @@ -157,7 +157,7 @@ void PCB_EDIT_FRAME::ReCreateMenuBar() "(if the library already exists it will be replaced)" ), ID_MENU_EXPORT_FOOTPRINTS_TO_NEW_LIBRARY, BITMAPS::library_archive_as ); - fileMenu->Add( submenuExport ); + fileMenu->Add( submenuExport, false ); // Fabrication Outputs submenu ACTION_MENU* submenuFabOutputs = new ACTION_MENU( false, selTool ); @@ -170,7 +170,7 @@ void PCB_EDIT_FRAME::ReCreateMenuBar() submenuFabOutputs->Add( PCB_ACTIONS::generateReportFile ); submenuFabOutputs->Add( PCB_ACTIONS::generateD356File ); submenuFabOutputs->Add( PCB_ACTIONS::generateBOM ); - fileMenu->Add( submenuFabOutputs ); + fileMenu->Add( submenuFabOutputs, false ); fileMenu->AppendSeparator(); fileMenu->Add( PCB_ACTIONS::boardSetup ); @@ -246,7 +246,7 @@ void PCB_EDIT_FRAME::ReCreateMenuBar() unitsSubMenu->Add( ACTIONS::inchesUnits, ACTION_MENU::CHECK ); unitsSubMenu->Add( ACTIONS::milsUnits, ACTION_MENU::CHECK ); unitsSubMenu->Add( ACTIONS::millimetersUnits, ACTION_MENU::CHECK ); - viewMenu->Add( unitsSubMenu ); + viewMenu->Add( unitsSubMenu, false ); viewMenu->Add( ACTIONS::toggleCursorStyle, ACTION_MENU::CHECK ); @@ -278,7 +278,7 @@ void PCB_EDIT_FRAME::ReCreateMenuBar() drawingModeSubMenu->Add( PCB_ACTIONS::graphicsOutlines, ACTION_MENU::CHECK ); drawingModeSubMenu->Add( PCB_ACTIONS::textOutlines, ACTION_MENU::CHECK ); - viewMenu->Add( drawingModeSubMenu ); + viewMenu->Add( drawingModeSubMenu, false ); // Contrast Mode Submenu ACTION_MENU* contrastModeSubMenu = new ACTION_MENU( false, selTool ); @@ -288,7 +288,7 @@ void PCB_EDIT_FRAME::ReCreateMenuBar() contrastModeSubMenu->Add( ACTIONS::highContrastMode, ACTION_MENU::CHECK ); contrastModeSubMenu->Add( PCB_ACTIONS::layerAlphaDec ); contrastModeSubMenu->Add( PCB_ACTIONS::layerAlphaInc ); - viewMenu->Add( contrastModeSubMenu ); + viewMenu->Add( contrastModeSubMenu, false ); viewMenu->Add( PCB_ACTIONS::flipBoard, ACTION_MENU::CHECK ); @@ -313,7 +313,7 @@ void PCB_EDIT_FRAME::ReCreateMenuBar() muwaveSubmenu->Add( PCB_ACTIONS::microwaveCreateStub ); muwaveSubmenu->Add( PCB_ACTIONS::microwaveCreateStubArc ); muwaveSubmenu->Add( PCB_ACTIONS::microwaveCreateFunctionShape ); - placeMenu->Add( muwaveSubmenu ); + placeMenu->Add( muwaveSubmenu, false ); placeMenu->AppendSeparator(); placeMenu->Add( PCB_ACTIONS::drawLine ); @@ -349,7 +349,7 @@ void PCB_EDIT_FRAME::ReCreateMenuBar() autoplaceSubmenu->Add( PCB_ACTIONS::autoplaceOffboardComponents ); autoplaceSubmenu->Add( PCB_ACTIONS::autoplaceSelectedComponents ); - placeMenu->Add( autoplaceSubmenu ); + placeMenu->Add( autoplaceSubmenu, false ); //-- Route Menu ---------------------------------------------------------- @@ -444,7 +444,7 @@ void PCB_EDIT_FRAME::ReCreateMenuBar() buildActionPluginMenus( submenuActionPlugins ); toolsMenu->AppendSeparator(); - toolsMenu->Add( submenuActionPlugins ); + toolsMenu->Add( submenuActionPlugins, false ); //-- Preferences menu ---------------------------------------------------- //