Add context menu item for clearing net highlighting.
In selection tools, drawing tools, router tool, line_wire_bus tool. Fixes https://gitlab.com/kicad/code/kicad/issues/11920
This commit is contained in:
parent
33801c9134
commit
e122dc38bd
|
@ -86,7 +86,7 @@ int COMMON_TOOLS::SelectionTool( const TOOL_EVENT& aEvent )
|
||||||
// Since selection tools are run permanently underneath the toolStack, this is really
|
// Since selection tools are run permanently underneath the toolStack, this is really
|
||||||
// just a cancel of whatever other tools might be running.
|
// just a cancel of whatever other tools might be running.
|
||||||
|
|
||||||
m_toolMgr->ProcessEvent( TOOL_EVENT( TC_COMMAND, TA_CANCEL_TOOL ) );
|
m_toolMgr->ProcessEvent( TOOL_EVENT( TC_COMMAND, TA_CANCEL_TOOL, ID_SEL_TOOL ) );
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -206,7 +206,15 @@ bool EE_SELECTION_TOOL::Init()
|
||||||
&& editFrame->GetCurrentSheet().Last() != &editFrame->Schematic().Root();
|
&& editFrame->GetCurrentSheet().Last() != &editFrame->Schematic().Root();
|
||||||
};
|
};
|
||||||
|
|
||||||
auto haveSymbolCondition =
|
auto haveHighlight =
|
||||||
|
[&]( const SELECTION& sel )
|
||||||
|
{
|
||||||
|
SCH_EDIT_FRAME* editFrame = dynamic_cast<SCH_EDIT_FRAME*>( m_frame );
|
||||||
|
|
||||||
|
return editFrame && editFrame->GetHighlightedConnection() != nullptr;
|
||||||
|
};
|
||||||
|
|
||||||
|
auto haveSymbol =
|
||||||
[&]( const SELECTION& sel )
|
[&]( const SELECTION& sel )
|
||||||
{
|
{
|
||||||
return m_isSymbolEditor &&
|
return m_isSymbolEditor &&
|
||||||
|
@ -215,9 +223,12 @@ bool EE_SELECTION_TOOL::Init()
|
||||||
|
|
||||||
auto& menu = m_menu.GetMenu();
|
auto& menu = m_menu.GetMenu();
|
||||||
|
|
||||||
menu.AddItem( EE_ACTIONS::enterSheet, sheetSelection && EE_CONDITIONS::Idle, 1 );
|
menu.AddItem( EE_ACTIONS::clearHighlight, haveHighlight && EE_CONDITIONS::Idle, 1 );
|
||||||
menu.AddItem( EE_ACTIONS::selectOnPCB, crossProbingSelection && EE_CONDITIONS::Idle, 1 );
|
menu.AddSeparator( haveHighlight && EE_CONDITIONS::Idle, 1 );
|
||||||
menu.AddItem( EE_ACTIONS::leaveSheet, belowRootSheetCondition, 1 );
|
|
||||||
|
menu.AddItem( EE_ACTIONS::enterSheet, sheetSelection && EE_CONDITIONS::Idle, 2 );
|
||||||
|
menu.AddItem( EE_ACTIONS::selectOnPCB, crossProbingSelection && EE_CONDITIONS::Idle, 2 );
|
||||||
|
menu.AddItem( EE_ACTIONS::leaveSheet, belowRootSheetCondition, 2 );
|
||||||
|
|
||||||
menu.AddSeparator( 100 );
|
menu.AddSeparator( 100 );
|
||||||
menu.AddItem( EE_ACTIONS::drawWire, schEditCondition && EE_CONDITIONS::Empty, 100 );
|
menu.AddItem( EE_ACTIONS::drawWire, schEditCondition && EE_CONDITIONS::Empty, 100 );
|
||||||
|
@ -243,10 +254,8 @@ bool EE_SELECTION_TOOL::Init()
|
||||||
menu.AddItem( EE_ACTIONS::editPageNumber, schEditSheetPageNumberCondition, 250 );
|
menu.AddItem( EE_ACTIONS::editPageNumber, schEditSheetPageNumberCondition, 250 );
|
||||||
|
|
||||||
menu.AddSeparator( 400 );
|
menu.AddSeparator( 400 );
|
||||||
menu.AddItem( EE_ACTIONS::symbolProperties,
|
menu.AddItem( EE_ACTIONS::symbolProperties, haveSymbol && EE_CONDITIONS::Empty, 400 );
|
||||||
haveSymbolCondition && EE_CONDITIONS::Empty, 400 );
|
menu.AddItem( EE_ACTIONS::pinTable, haveSymbol && EE_CONDITIONS::Empty, 400 );
|
||||||
menu.AddItem( EE_ACTIONS::pinTable,
|
|
||||||
haveSymbolCondition && EE_CONDITIONS::Empty, 400 );
|
|
||||||
|
|
||||||
menu.AddSeparator( 1000 );
|
menu.AddSeparator( 1000 );
|
||||||
m_frame->AddStandardSubMenus( m_menu );
|
m_frame->AddStandardSubMenus( m_menu );
|
||||||
|
@ -576,7 +585,7 @@ int EE_SELECTION_TOOL::Main( const TOOL_EVENT& aEvent )
|
||||||
{
|
{
|
||||||
ClearSelection();
|
ClearSelection();
|
||||||
}
|
}
|
||||||
else if( evt->FirstResponder() == this )
|
else if( evt->FirstResponder() == this && evt->GetCommandId() != (int) ID_SEL_TOOL )
|
||||||
{
|
{
|
||||||
SCH_EDITOR_CONTROL* editor = m_toolMgr->GetTool<SCH_EDITOR_CONTROL>();
|
SCH_EDITOR_CONTROL* editor = m_toolMgr->GetTool<SCH_EDITOR_CONTROL>();
|
||||||
|
|
||||||
|
|
|
@ -178,6 +178,14 @@ bool SCH_EDIT_TOOL::Init()
|
||||||
|
|
||||||
auto sheetSelection = E_C::Count( 1 ) && E_C::OnlyType( SCH_SHEET_T );
|
auto sheetSelection = E_C::Count( 1 ) && E_C::OnlyType( SCH_SHEET_T );
|
||||||
|
|
||||||
|
auto haveHighlight =
|
||||||
|
[&]( const SELECTION& sel )
|
||||||
|
{
|
||||||
|
SCH_EDIT_FRAME* editFrame = dynamic_cast<SCH_EDIT_FRAME*>( m_frame );
|
||||||
|
|
||||||
|
return editFrame && editFrame->GetHighlightedConnection() != nullptr;
|
||||||
|
};
|
||||||
|
|
||||||
auto anyTextTool =
|
auto anyTextTool =
|
||||||
[this]( const SELECTION& aSel )
|
[this]( const SELECTION& aSel )
|
||||||
{
|
{
|
||||||
|
@ -394,8 +402,11 @@ bool SCH_EDIT_TOOL::Init()
|
||||||
//
|
//
|
||||||
CONDITIONAL_MENU& drawMenu = drawingTools->GetToolMenu().GetMenu();
|
CONDITIONAL_MENU& drawMenu = drawingTools->GetToolMenu().GetMenu();
|
||||||
|
|
||||||
drawMenu.AddItem( EE_ACTIONS::enterSheet, sheetSelection && EE_CONDITIONS::Idle, 1 );
|
drawMenu.AddItem( EE_ACTIONS::clearHighlight, haveHighlight && EE_CONDITIONS::Idle, 1 );
|
||||||
drawMenu.AddSeparator( sheetSelection && EE_CONDITIONS::Idle, 1 );
|
drawMenu.AddSeparator( haveHighlight && EE_CONDITIONS::Idle, 1 );
|
||||||
|
|
||||||
|
drawMenu.AddItem( EE_ACTIONS::enterSheet, sheetSelection && EE_CONDITIONS::Idle, 1 );
|
||||||
|
drawMenu.AddSeparator( sheetSelection && EE_CONDITIONS::Idle, 1 );
|
||||||
|
|
||||||
drawMenu.AddItem( EE_ACTIONS::rotateCCW, orientCondition, 200 );
|
drawMenu.AddItem( EE_ACTIONS::rotateCCW, orientCondition, 200 );
|
||||||
drawMenu.AddItem( EE_ACTIONS::rotateCW, orientCondition, 200 );
|
drawMenu.AddItem( EE_ACTIONS::rotateCW, orientCondition, 200 );
|
||||||
|
@ -404,7 +415,7 @@ bool SCH_EDIT_TOOL::Init()
|
||||||
|
|
||||||
drawMenu.AddItem( EE_ACTIONS::properties, propertiesCondition, 200 );
|
drawMenu.AddItem( EE_ACTIONS::properties, propertiesCondition, 200 );
|
||||||
|
|
||||||
CONDITIONAL_MENU* editDrawItemSubMenu = new CONDITIONAL_MENU(drawingTools);
|
CONDITIONAL_MENU* editDrawItemSubMenu = new CONDITIONAL_MENU( drawingTools );
|
||||||
editDrawItemSubMenu->SetTitle( _( "Edit Main Fields" ) );
|
editDrawItemSubMenu->SetTitle( _( "Edit Main Fields" ) );
|
||||||
editDrawItemSubMenu->SetIcon( BITMAPS::right );
|
editDrawItemSubMenu->SetIcon( BITMAPS::right );
|
||||||
drawMenu.AddMenu( editDrawItemSubMenu, E_C::SingleSymbol, 200 );
|
drawMenu.AddMenu( editDrawItemSubMenu, E_C::SingleSymbol, 200 );
|
||||||
|
@ -413,9 +424,9 @@ bool SCH_EDIT_TOOL::Init()
|
||||||
editDrawItemSubMenu->AddItem( EE_ACTIONS::editValue, E_C::SingleSymbol, 200 );
|
editDrawItemSubMenu->AddItem( EE_ACTIONS::editValue, E_C::SingleSymbol, 200 );
|
||||||
editDrawItemSubMenu->AddItem( EE_ACTIONS::editFootprint, E_C::SingleSymbol, 200 );
|
editDrawItemSubMenu->AddItem( EE_ACTIONS::editFootprint, E_C::SingleSymbol, 200 );
|
||||||
|
|
||||||
drawMenu.AddItem( EE_ACTIONS::toggleDeMorgan, E_C::SingleDeMorganSymbol, 200 );
|
drawMenu.AddItem( EE_ACTIONS::toggleDeMorgan, E_C::SingleDeMorganSymbol, 200 );
|
||||||
|
|
||||||
drawMenu.AddItem( EE_ACTIONS::autoplaceFields, autoplaceCondition, 200 );
|
drawMenu.AddItem( EE_ACTIONS::autoplaceFields, autoplaceCondition, 200 );
|
||||||
|
|
||||||
std::shared_ptr<SYMBOL_UNIT_MENU> symUnitMenu2 = std::make_shared<SYMBOL_UNIT_MENU>();
|
std::shared_ptr<SYMBOL_UNIT_MENU> symUnitMenu2 = std::make_shared<SYMBOL_UNIT_MENU>();
|
||||||
symUnitMenu2->SetTool( drawingTools );
|
symUnitMenu2->SetTool( drawingTools );
|
||||||
|
@ -441,7 +452,7 @@ bool SCH_EDIT_TOOL::Init()
|
||||||
|
|
||||||
selToolMenu.AddItem( EE_ACTIONS::properties, propertiesCondition, 200 );
|
selToolMenu.AddItem( EE_ACTIONS::properties, propertiesCondition, 200 );
|
||||||
|
|
||||||
CONDITIONAL_MENU* editSelItemSubMenu = new CONDITIONAL_MENU(moveTool);
|
CONDITIONAL_MENU* editSelItemSubMenu = new CONDITIONAL_MENU( moveTool );
|
||||||
editSelItemSubMenu->SetTitle( _( "Edit Main Fields" ) );
|
editSelItemSubMenu->SetTitle( _( "Edit Main Fields" ) );
|
||||||
editSelItemSubMenu->SetIcon( BITMAPS::right );
|
editSelItemSubMenu->SetIcon( BITMAPS::right );
|
||||||
selToolMenu.AddMenu( editSelItemSubMenu, E_C::SingleSymbol, 200 );
|
selToolMenu.AddMenu( editSelItemSubMenu, E_C::SingleSymbol, 200 );
|
||||||
|
@ -450,8 +461,8 @@ bool SCH_EDIT_TOOL::Init()
|
||||||
editSelItemSubMenu->AddItem( EE_ACTIONS::editValue, E_C::SingleSymbol, 200 );
|
editSelItemSubMenu->AddItem( EE_ACTIONS::editValue, E_C::SingleSymbol, 200 );
|
||||||
editSelItemSubMenu->AddItem( EE_ACTIONS::editFootprint, E_C::SingleSymbol, 200 );
|
editSelItemSubMenu->AddItem( EE_ACTIONS::editFootprint, E_C::SingleSymbol, 200 );
|
||||||
|
|
||||||
selToolMenu.AddItem( EE_ACTIONS::autoplaceFields, autoplaceCondition, 200 );
|
selToolMenu.AddItem( EE_ACTIONS::autoplaceFields, autoplaceCondition, 200 );
|
||||||
selToolMenu.AddItem( EE_ACTIONS::toggleDeMorgan, E_C::SingleSymbol, 200 );
|
selToolMenu.AddItem( EE_ACTIONS::toggleDeMorgan, E_C::SingleSymbol, 200 );
|
||||||
|
|
||||||
std::shared_ptr<SYMBOL_UNIT_MENU> symUnitMenu3 = std::make_shared<SYMBOL_UNIT_MENU>();
|
std::shared_ptr<SYMBOL_UNIT_MENU> symUnitMenu3 = std::make_shared<SYMBOL_UNIT_MENU>();
|
||||||
symUnitMenu3->SetTool( m_selectionTool );
|
symUnitMenu3->SetTool( m_selectionTool );
|
||||||
|
@ -462,16 +473,17 @@ bool SCH_EDIT_TOOL::Init()
|
||||||
selToolMenu.AddItem( EE_ACTIONS::changeSymbol, E_C::SingleSymbolOrPower, 200 );
|
selToolMenu.AddItem( EE_ACTIONS::changeSymbol, E_C::SingleSymbolOrPower, 200 );
|
||||||
selToolMenu.AddItem( EE_ACTIONS::updateSymbol, E_C::SingleSymbolOrPower, 200 );
|
selToolMenu.AddItem( EE_ACTIONS::updateSymbol, E_C::SingleSymbolOrPower, 200 );
|
||||||
|
|
||||||
CONDITIONAL_MENU* convertToSelSubMenu = new CONDITIONAL_MENU(m_selectionTool);
|
CONDITIONAL_MENU* convertToSubMenu = new CONDITIONAL_MENU( m_selectionTool );
|
||||||
convertToSelSubMenu->SetTitle( _( "Change To" ) );
|
convertToSubMenu->SetTitle( _( "Change To" ) );
|
||||||
convertToSelSubMenu->SetIcon( BITMAPS::right );
|
convertToSubMenu->SetIcon( BITMAPS::right );
|
||||||
selToolMenu.AddMenu( convertToSelSubMenu, toChangeCondition, 200 );
|
selToolMenu.AddMenu( convertToSubMenu, toChangeCondition, 200 );
|
||||||
|
|
||||||
|
convertToSubMenu->AddItem( EE_ACTIONS::toLabel, toLabelCondition, 200 );
|
||||||
|
convertToSubMenu->AddItem( EE_ACTIONS::toCLabel, toCLabelCondition, 200 );
|
||||||
|
convertToSubMenu->AddItem( EE_ACTIONS::toHLabel, toHLabelCondition, 200 );
|
||||||
|
convertToSubMenu->AddItem( EE_ACTIONS::toGLabel, toGLabelCondition, 200 );
|
||||||
|
convertToSubMenu->AddItem( EE_ACTIONS::toText, toTextCondition, 200 );
|
||||||
|
|
||||||
convertToSelSubMenu->AddItem( EE_ACTIONS::toLabel, toLabelCondition, 200 );
|
|
||||||
convertToSelSubMenu->AddItem( EE_ACTIONS::toCLabel, toCLabelCondition, 200 );
|
|
||||||
convertToSelSubMenu->AddItem( EE_ACTIONS::toHLabel, toHLabelCondition, 200 );
|
|
||||||
convertToSelSubMenu->AddItem( EE_ACTIONS::toGLabel, toGLabelCondition, 200 );
|
|
||||||
convertToSelSubMenu->AddItem( EE_ACTIONS::toText, toTextCondition, 200 );
|
|
||||||
selToolMenu.AddItem( EE_ACTIONS::cleanupSheetPins, sheetHasUndefinedPins, 250 );
|
selToolMenu.AddItem( EE_ACTIONS::cleanupSheetPins, sheetHasUndefinedPins, 250 );
|
||||||
|
|
||||||
selToolMenu.AddSeparator( 300 );
|
selToolMenu.AddSeparator( 300 );
|
||||||
|
|
|
@ -202,41 +202,52 @@ bool SCH_LINE_WIRE_BUS_TOOL::Init()
|
||||||
auto busSelection = EE_CONDITIONS::MoreThan( 0 )
|
auto busSelection = EE_CONDITIONS::MoreThan( 0 )
|
||||||
&& EE_CONDITIONS::OnlyType( SCH_ITEM_LOCATE_BUS_T );
|
&& EE_CONDITIONS::OnlyType( SCH_ITEM_LOCATE_BUS_T );
|
||||||
|
|
||||||
|
auto haveHighlight =
|
||||||
|
[&]( const SELECTION& sel )
|
||||||
|
{
|
||||||
|
SCH_EDIT_FRAME* editFrame = dynamic_cast<SCH_EDIT_FRAME*>( m_frame );
|
||||||
|
|
||||||
|
return editFrame && editFrame->GetHighlightedConnection() != nullptr;
|
||||||
|
};
|
||||||
|
|
||||||
auto& ctxMenu = m_menu.GetMenu();
|
auto& ctxMenu = m_menu.GetMenu();
|
||||||
|
|
||||||
// Build the tool menu
|
// Build the tool menu
|
||||||
//
|
//
|
||||||
ctxMenu.AddItem( EE_ACTIONS::leaveSheet, belowRootSheetCondition, 2 );
|
ctxMenu.AddItem( EE_ACTIONS::clearHighlight, haveHighlight && EE_CONDITIONS::Idle, 1 );
|
||||||
|
ctxMenu.AddSeparator( haveHighlight && EE_CONDITIONS::Idle, 1 );
|
||||||
|
|
||||||
|
ctxMenu.AddItem( EE_ACTIONS::leaveSheet, belowRootSheetCondition, 2 );
|
||||||
|
|
||||||
ctxMenu.AddSeparator( 10 );
|
ctxMenu.AddSeparator( 10 );
|
||||||
ctxMenu.AddItem( EE_ACTIONS::drawWire, wireOrBusTool && EE_CONDITIONS::Idle, 10 );
|
ctxMenu.AddItem( EE_ACTIONS::drawWire, wireOrBusTool && EE_CONDITIONS::Idle, 10 );
|
||||||
ctxMenu.AddItem( EE_ACTIONS::drawBus, wireOrBusTool && EE_CONDITIONS::Idle, 10 );
|
ctxMenu.AddItem( EE_ACTIONS::drawBus, wireOrBusTool && EE_CONDITIONS::Idle, 10 );
|
||||||
ctxMenu.AddItem( EE_ACTIONS::drawLines, lineTool && EE_CONDITIONS::Idle, 10 );
|
ctxMenu.AddItem( EE_ACTIONS::drawLines, lineTool && EE_CONDITIONS::Idle, 10 );
|
||||||
|
|
||||||
ctxMenu.AddItem( EE_ACTIONS::undoLastSegment, EE_CONDITIONS::ShowAlways, 10 );
|
ctxMenu.AddItem( EE_ACTIONS::undoLastSegment, EE_CONDITIONS::ShowAlways, 10 );
|
||||||
ctxMenu.AddItem( EE_ACTIONS::switchSegmentPosture, EE_CONDITIONS::ShowAlways, 10 );
|
ctxMenu.AddItem( EE_ACTIONS::switchSegmentPosture, EE_CONDITIONS::ShowAlways, 10 );
|
||||||
|
|
||||||
ctxMenu.AddItem( EE_ACTIONS::finishWire, IsDrawingWire, 10 );
|
ctxMenu.AddItem( EE_ACTIONS::finishWire, IsDrawingWire, 10 );
|
||||||
ctxMenu.AddItem( EE_ACTIONS::finishBus, IsDrawingBus, 10 );
|
ctxMenu.AddItem( EE_ACTIONS::finishBus, IsDrawingBus, 10 );
|
||||||
ctxMenu.AddItem( EE_ACTIONS::finishLine, IsDrawingLine, 10 );
|
ctxMenu.AddItem( EE_ACTIONS::finishLine, IsDrawingLine, 10 );
|
||||||
|
|
||||||
std::shared_ptr<BUS_UNFOLD_MENU> busUnfoldMenu = std::make_shared<BUS_UNFOLD_MENU>();
|
std::shared_ptr<BUS_UNFOLD_MENU> busUnfoldMenu = std::make_shared<BUS_UNFOLD_MENU>();
|
||||||
busUnfoldMenu->SetTool( this );
|
busUnfoldMenu->SetTool( this );
|
||||||
m_menu.AddSubMenu( busUnfoldMenu );
|
m_menu.AddSubMenu( busUnfoldMenu );
|
||||||
ctxMenu.AddMenu( busUnfoldMenu.get(), EE_CONDITIONS::Idle, 10 );
|
ctxMenu.AddMenu( busUnfoldMenu.get(), EE_CONDITIONS::Idle, 10 );
|
||||||
|
|
||||||
ctxMenu.AddSeparator( 100 );
|
ctxMenu.AddSeparator( 100 );
|
||||||
ctxMenu.AddItem( EE_ACTIONS::placeJunction, wireOrBusTool && EE_CONDITIONS::Idle, 100 );
|
ctxMenu.AddItem( EE_ACTIONS::placeJunction, wireOrBusTool && EE_CONDITIONS::Idle, 100 );
|
||||||
ctxMenu.AddItem( EE_ACTIONS::placeLabel, wireOrBusTool && EE_CONDITIONS::Idle, 100 );
|
ctxMenu.AddItem( EE_ACTIONS::placeLabel, wireOrBusTool && EE_CONDITIONS::Idle, 100 );
|
||||||
ctxMenu.AddItem( EE_ACTIONS::placeClassLabel, wireOrBusTool && EE_CONDITIONS::Idle, 100 );
|
ctxMenu.AddItem( EE_ACTIONS::placeClassLabel, wireOrBusTool && EE_CONDITIONS::Idle, 100 );
|
||||||
ctxMenu.AddItem( EE_ACTIONS::placeGlobalLabel, wireOrBusTool && EE_CONDITIONS::Idle, 100 );
|
ctxMenu.AddItem( EE_ACTIONS::placeGlobalLabel, wireOrBusTool && EE_CONDITIONS::Idle, 100 );
|
||||||
ctxMenu.AddItem( EE_ACTIONS::placeHierLabel, wireOrBusTool && EE_CONDITIONS::Idle, 100 );
|
ctxMenu.AddItem( EE_ACTIONS::placeHierLabel, wireOrBusTool && EE_CONDITIONS::Idle, 100 );
|
||||||
ctxMenu.AddItem( EE_ACTIONS::breakWire, wireOrBusTool && EE_CONDITIONS::Idle, 100 );
|
ctxMenu.AddItem( EE_ACTIONS::breakWire, wireOrBusTool && EE_CONDITIONS::Idle, 100 );
|
||||||
ctxMenu.AddItem( EE_ACTIONS::breakBus, wireOrBusTool && EE_CONDITIONS::Idle, 100 );
|
ctxMenu.AddItem( EE_ACTIONS::breakBus, wireOrBusTool && EE_CONDITIONS::Idle, 100 );
|
||||||
|
|
||||||
ctxMenu.AddSeparator( 200 );
|
ctxMenu.AddSeparator( 200 );
|
||||||
ctxMenu.AddItem( EE_ACTIONS::selectNode, wireOrBusTool && EE_CONDITIONS::Idle, 200 );
|
ctxMenu.AddItem( EE_ACTIONS::selectNode, wireOrBusTool && EE_CONDITIONS::Idle, 200 );
|
||||||
ctxMenu.AddItem( EE_ACTIONS::selectConnection, wireOrBusTool && EE_CONDITIONS::Idle, 200 );
|
ctxMenu.AddItem( EE_ACTIONS::selectConnection, wireOrBusTool && EE_CONDITIONS::Idle, 200 );
|
||||||
|
|
||||||
// Add bus unfolding to the selection tool
|
// Add bus unfolding to the selection tool
|
||||||
//
|
//
|
||||||
|
@ -245,7 +256,7 @@ bool SCH_LINE_WIRE_BUS_TOOL::Init()
|
||||||
std::shared_ptr<BUS_UNFOLD_MENU> selBusUnfoldMenu = std::make_shared<BUS_UNFOLD_MENU>();
|
std::shared_ptr<BUS_UNFOLD_MENU> selBusUnfoldMenu = std::make_shared<BUS_UNFOLD_MENU>();
|
||||||
selBusUnfoldMenu->SetTool( m_selectionTool );
|
selBusUnfoldMenu->SetTool( m_selectionTool );
|
||||||
m_selectionTool->GetToolMenu().AddSubMenu( selBusUnfoldMenu );
|
m_selectionTool->GetToolMenu().AddSubMenu( selBusUnfoldMenu );
|
||||||
selToolMenu.AddMenu( selBusUnfoldMenu.get(), busSelection && EE_CONDITIONS::Idle, 100 );
|
selToolMenu.AddMenu( selBusUnfoldMenu.get(), busSelection && EE_CONDITIONS::Idle, 100 );
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
42
include/id.h
42
include/id.h
|
@ -71,9 +71,7 @@
|
||||||
|
|
||||||
enum main_id
|
enum main_id
|
||||||
{
|
{
|
||||||
ID_RUN_PCB = wxID_HIGHEST,
|
ID_APPEND_PROJECT = wxID_HIGHEST,
|
||||||
|
|
||||||
ID_APPEND_PROJECT,
|
|
||||||
ID_LOAD_FILE,
|
ID_LOAD_FILE,
|
||||||
ID_NEW_BOARD,
|
ID_NEW_BOARD,
|
||||||
ID_SAVE_BOARD,
|
ID_SAVE_BOARD,
|
||||||
|
@ -88,11 +86,7 @@ enum main_id
|
||||||
ID_FILE_LIST_EMPTY,
|
ID_FILE_LIST_EMPTY,
|
||||||
ID_FILE_LIST_CLEAR,
|
ID_FILE_LIST_CLEAR,
|
||||||
|
|
||||||
ID_PREFERENCES_HOTKEY_SHOW_CURRENT_LIST,
|
|
||||||
ID_PREFERENCES_CONFIGURE_PATHS,
|
|
||||||
ID_PREFERENCES_RESET_PANEL,
|
ID_PREFERENCES_RESET_PANEL,
|
||||||
ID_EDIT_SYMBOL_LIBRARY_TABLE,
|
|
||||||
ID_EDIT_FOOTPRINT_LIBRARY_TABLE,
|
|
||||||
|
|
||||||
ID_GEN_PLOT,
|
ID_GEN_PLOT,
|
||||||
ID_GEN_PLOT_PS,
|
ID_GEN_PLOT_PS,
|
||||||
|
@ -102,17 +96,13 @@ enum main_id
|
||||||
ID_GEN_PLOT_DXF,
|
ID_GEN_PLOT_DXF,
|
||||||
ID_GEN_PLOT_PDF,
|
ID_GEN_PLOT_PDF,
|
||||||
|
|
||||||
ID_GEN_EXPORT_FILE,
|
|
||||||
ID_GEN_IMPORT_FILE,
|
|
||||||
|
|
||||||
// id for toolbars
|
// id for toolbars
|
||||||
ID_H_TOOLBAR,
|
ID_H_TOOLBAR,
|
||||||
ID_V_TOOLBAR,
|
ID_V_TOOLBAR,
|
||||||
ID_OPT_TOOLBAR,
|
ID_OPT_TOOLBAR,
|
||||||
ID_AUX_TOOLBAR,
|
ID_AUX_TOOLBAR,
|
||||||
|
|
||||||
ID_EDIT_HOTKEY,
|
ID_SEL_TOOL,
|
||||||
ID_NO_TOOL_SELECTED,
|
|
||||||
|
|
||||||
ID_LANGUAGE_CHOICE,
|
ID_LANGUAGE_CHOICE,
|
||||||
ID_LANGUAGE_DANISH,
|
ID_LANGUAGE_DANISH,
|
||||||
|
@ -152,17 +142,12 @@ enum main_id
|
||||||
ID_LANGUAGE_UKRANIAN,
|
ID_LANGUAGE_UKRANIAN,
|
||||||
ID_LANGUAGE_CHOICE_END,
|
ID_LANGUAGE_CHOICE_END,
|
||||||
|
|
||||||
// Popup Menu (mouse Right button) (id consecutifs)
|
|
||||||
|
|
||||||
ID_ON_ZOOM_SELECT,
|
ID_ON_ZOOM_SELECT,
|
||||||
ID_POPUP_ZOOM_START_RANGE, // first zoom id
|
|
||||||
ID_POPUP_CANCEL,
|
ID_ON_GRID_SELECT,
|
||||||
ID_POPUP_ZOOM_IN,
|
ID_GRID_SETTINGS,
|
||||||
ID_POPUP_ZOOM_OUT,
|
|
||||||
ID_POPUP_ZOOM_SELECT,
|
// Popup Menu (mouse Right button) (id consecutifs)
|
||||||
ID_POPUP_ZOOM_CENTER,
|
|
||||||
ID_POPUP_ZOOM_PAGE,
|
|
||||||
ID_POPUP_ZOOM_REDRAW,
|
|
||||||
|
|
||||||
/* Reserve IDs for popup menu zoom levels. If you need more
|
/* Reserve IDs for popup menu zoom levels. If you need more
|
||||||
* levels of zoom, change ID_POPUP_ZOOM_LEVEL_END. Note that more
|
* levels of zoom, change ID_POPUP_ZOOM_LEVEL_END. Note that more
|
||||||
|
@ -176,19 +161,6 @@ enum main_id
|
||||||
ID_POPUP_GRID_START,
|
ID_POPUP_GRID_START,
|
||||||
ID_POPUP_GRID_END = ID_POPUP_ZOOM_LEVEL_START + 99,
|
ID_POPUP_GRID_END = ID_POPUP_ZOOM_LEVEL_START + 99,
|
||||||
|
|
||||||
ID_ON_GRID_SELECT,
|
|
||||||
ID_GRID_SETTINGS,
|
|
||||||
|
|
||||||
ID_ZOOM_BEGIN,
|
|
||||||
ID_VIEWER_ZOOM_IN = ID_ZOOM_BEGIN,
|
|
||||||
ID_VIEWER_ZOOM_OUT,
|
|
||||||
ID_VIEWER_ZOOM_PAGE,
|
|
||||||
ID_VIEWER_ZOOM_REDRAW,
|
|
||||||
// zoom commands for non center zooming
|
|
||||||
ID_OFFCENTER_ZOOM_IN,
|
|
||||||
ID_OFFCENTER_ZOOM_OUT,
|
|
||||||
ID_ZOOM_END,
|
|
||||||
|
|
||||||
// KiFace server for standalone operation
|
// KiFace server for standalone operation
|
||||||
ID_EDA_SOCKET_EVENT_SERV,
|
ID_EDA_SOCKET_EVENT_SERV,
|
||||||
ID_EDA_SOCKET_EVENT,
|
ID_EDA_SOCKET_EVENT,
|
||||||
|
|
|
@ -43,6 +43,7 @@ using namespace std::placeholders;
|
||||||
#include <connectivity/connectivity_algo.h>
|
#include <connectivity/connectivity_algo.h>
|
||||||
#include <confirm.h>
|
#include <confirm.h>
|
||||||
#include <bitmaps.h>
|
#include <bitmaps.h>
|
||||||
|
#include <painter.h>
|
||||||
#include <tool/action_menu.h>
|
#include <tool/action_menu.h>
|
||||||
#include <tool/tool_manager.h>
|
#include <tool/tool_manager.h>
|
||||||
#include <tool/tool_menu.h>
|
#include <tool/tool_menu.h>
|
||||||
|
@ -445,15 +446,25 @@ bool ROUTER_TOOL::Init()
|
||||||
m_diffPairMenu->SetTool( this );
|
m_diffPairMenu->SetTool( this );
|
||||||
m_menu.AddSubMenu( m_diffPairMenu );
|
m_menu.AddSubMenu( m_diffPairMenu );
|
||||||
|
|
||||||
|
auto haveHighlight =
|
||||||
|
[&]( const SELECTION& sel )
|
||||||
|
{
|
||||||
|
KIGFX::RENDER_SETTINGS* cfg = m_toolMgr->GetView()->GetPainter()->GetSettings();
|
||||||
|
|
||||||
|
return !cfg->GetHighlightNetCodes().empty();
|
||||||
|
};
|
||||||
|
|
||||||
auto notRoutingCond =
|
auto notRoutingCond =
|
||||||
[this]( const SELECTION& )
|
[this]( const SELECTION& )
|
||||||
{
|
{
|
||||||
return !m_router->RoutingInProgress();
|
return !m_router->RoutingInProgress();
|
||||||
};
|
};
|
||||||
|
|
||||||
menu.AddItem( ACTIONS::cancelInteractive, SELECTION_CONDITIONS::ShowAlways );
|
menu.AddItem( ACTIONS::cancelInteractive, SELECTION_CONDITIONS::ShowAlways, 1 );
|
||||||
|
menu.AddSeparator( 1 );
|
||||||
|
|
||||||
menu.AddSeparator();
|
menu.AddItem( PCB_ACTIONS::clearHighlight, haveHighlight, 2 );
|
||||||
|
menu.AddSeparator( haveHighlight, 2 );
|
||||||
|
|
||||||
menu.AddItem( PCB_ACTIONS::routeSingleTrack, notRoutingCond );
|
menu.AddItem( PCB_ACTIONS::routeSingleTrack, notRoutingCond );
|
||||||
menu.AddItem( PCB_ACTIONS::routeDiffPair, notRoutingCond );
|
menu.AddItem( PCB_ACTIONS::routeDiffPair, notRoutingCond );
|
||||||
|
|
|
@ -181,42 +181,57 @@ DRAWING_TOOL::~DRAWING_TOOL()
|
||||||
|
|
||||||
bool DRAWING_TOOL::Init()
|
bool DRAWING_TOOL::Init()
|
||||||
{
|
{
|
||||||
auto activeToolFunctor = [this]( const SELECTION& aSel )
|
auto haveHighlight =
|
||||||
{
|
[&]( const SELECTION& sel )
|
||||||
return m_mode != MODE::NONE;
|
{
|
||||||
};
|
KIGFX::RENDER_SETTINGS* cfg = m_toolMgr->GetView()->GetPainter()->GetSettings();
|
||||||
|
|
||||||
|
return !cfg->GetHighlightNetCodes().empty();
|
||||||
|
};
|
||||||
|
|
||||||
|
auto activeToolFunctor =
|
||||||
|
[this]( const SELECTION& aSel )
|
||||||
|
{
|
||||||
|
return m_mode != MODE::NONE;
|
||||||
|
};
|
||||||
|
|
||||||
// some interactive drawing tools can undo the last point
|
// some interactive drawing tools can undo the last point
|
||||||
auto canUndoPoint = [this]( const SELECTION& aSel )
|
auto canUndoPoint =
|
||||||
{
|
[this]( const SELECTION& aSel )
|
||||||
return ( m_mode == MODE::ARC
|
{
|
||||||
|| m_mode == MODE::ZONE
|
return ( m_mode == MODE::ARC
|
||||||
|| m_mode == MODE::KEEPOUT
|
|| m_mode == MODE::ZONE
|
||||||
|| m_mode == MODE::GRAPHIC_POLYGON );
|
|| m_mode == MODE::KEEPOUT
|
||||||
};
|
|| m_mode == MODE::GRAPHIC_POLYGON );
|
||||||
|
};
|
||||||
|
|
||||||
// functor for tools that can automatically close the outline
|
// functor for tools that can automatically close the outline
|
||||||
auto canCloseOutline = [this]( const SELECTION& aSel )
|
auto canCloseOutline =
|
||||||
{
|
[this]( const SELECTION& aSel )
|
||||||
return ( m_mode == MODE::ZONE
|
{
|
||||||
|| m_mode == MODE::KEEPOUT
|
return ( m_mode == MODE::ZONE
|
||||||
|| m_mode == MODE::GRAPHIC_POLYGON );
|
|| m_mode == MODE::KEEPOUT
|
||||||
};
|
|| m_mode == MODE::GRAPHIC_POLYGON );
|
||||||
|
};
|
||||||
|
|
||||||
auto viaToolActive = [this]( const SELECTION& aSel )
|
auto viaToolActive =
|
||||||
{
|
[this]( const SELECTION& aSel )
|
||||||
return m_mode == MODE::VIA;
|
{
|
||||||
};
|
return m_mode == MODE::VIA;
|
||||||
|
};
|
||||||
|
|
||||||
auto& ctxMenu = m_menu.GetMenu();
|
auto& ctxMenu = m_menu.GetMenu();
|
||||||
|
|
||||||
// cancel current tool goes in main context menu at the top if present
|
// cancel current tool goes in main context menu at the top if present
|
||||||
ctxMenu.AddItem( ACTIONS::cancelInteractive, activeToolFunctor, 1 );
|
ctxMenu.AddItem( ACTIONS::cancelInteractive, activeToolFunctor, 1 );
|
||||||
ctxMenu.AddSeparator( 1 );
|
ctxMenu.AddSeparator( 1 );
|
||||||
|
|
||||||
|
ctxMenu.AddItem( PCB_ACTIONS::clearHighlight, haveHighlight, 2 );
|
||||||
|
ctxMenu.AddSeparator( haveHighlight, 2 );
|
||||||
|
|
||||||
// tool-specific actions
|
// tool-specific actions
|
||||||
ctxMenu.AddItem( PCB_ACTIONS::closeOutline, canCloseOutline, 200 );
|
ctxMenu.AddItem( PCB_ACTIONS::closeOutline, canCloseOutline, 200 );
|
||||||
ctxMenu.AddItem( PCB_ACTIONS::deleteLastPoint, canUndoPoint, 200 );
|
ctxMenu.AddItem( PCB_ACTIONS::deleteLastPoint, canUndoPoint, 200 );
|
||||||
|
|
||||||
ctxMenu.AddCheckItem( PCB_ACTIONS::toggleHV45Mode, SELECTION_CONDITIONS::ShowAlways, 250 );
|
ctxMenu.AddCheckItem( PCB_ACTIONS::toggleHV45Mode, SELECTION_CONDITIONS::ShowAlways, 250 );
|
||||||
ctxMenu.AddSeparator( 500 );
|
ctxMenu.AddSeparator( 500 );
|
||||||
|
@ -224,7 +239,7 @@ bool DRAWING_TOOL::Init()
|
||||||
std::shared_ptr<VIA_SIZE_MENU> viaSizeMenu = std::make_shared<VIA_SIZE_MENU>();
|
std::shared_ptr<VIA_SIZE_MENU> viaSizeMenu = std::make_shared<VIA_SIZE_MENU>();
|
||||||
viaSizeMenu->SetTool( this );
|
viaSizeMenu->SetTool( this );
|
||||||
m_menu.AddSubMenu( viaSizeMenu );
|
m_menu.AddSubMenu( viaSizeMenu );
|
||||||
ctxMenu.AddMenu( viaSizeMenu.get(), viaToolActive, 500 );
|
ctxMenu.AddMenu( viaSizeMenu.get(), viaToolActive, 500 );
|
||||||
|
|
||||||
ctxMenu.AddSeparator( 500 );
|
ctxMenu.AddSeparator( 500 );
|
||||||
|
|
||||||
|
|
|
@ -159,6 +159,14 @@ bool PCB_SELECTION_TOOL::Init()
|
||||||
return !frame->ToolStackIsEmpty();
|
return !frame->ToolStackIsEmpty();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
auto haveHighlight =
|
||||||
|
[&]( const SELECTION& sel )
|
||||||
|
{
|
||||||
|
KIGFX::RENDER_SETTINGS* cfg = m_toolMgr->GetView()->GetPainter()->GetSettings();
|
||||||
|
|
||||||
|
return !cfg->GetHighlightNetCodes().empty();
|
||||||
|
};
|
||||||
|
|
||||||
auto inGroupCondition =
|
auto inGroupCondition =
|
||||||
[this] ( const SELECTION& )
|
[this] ( const SELECTION& )
|
||||||
{
|
{
|
||||||
|
@ -172,8 +180,10 @@ bool PCB_SELECTION_TOOL::Init()
|
||||||
}
|
}
|
||||||
|
|
||||||
// "Cancel" goes at the top of the context menu when a tool is active
|
// "Cancel" goes at the top of the context menu when a tool is active
|
||||||
menu.AddItem( ACTIONS::cancelInteractive, activeToolCondition, 1 );
|
menu.AddItem( ACTIONS::cancelInteractive, activeToolCondition, 1 );
|
||||||
menu.AddItem( PCB_ACTIONS::groupLeave, inGroupCondition, 1 );
|
menu.AddItem( PCB_ACTIONS::groupLeave, inGroupCondition, 1 );
|
||||||
|
menu.AddItem( PCB_ACTIONS::clearHighlight, haveHighlight, 1 );
|
||||||
|
|
||||||
menu.AddSeparator( 1 );
|
menu.AddSeparator( 1 );
|
||||||
|
|
||||||
if( frame )
|
if( frame )
|
||||||
|
|
Loading…
Reference in New Issue