From b2a4cbeddae81969fa3544176f7afe7d1c74a96f Mon Sep 17 00:00:00 2001 From: Jeff Young Date: Thu, 18 Feb 2021 00:07:28 +0000 Subject: [PATCH] Add conditions for rotate/group/lock items in toolbar. Also fixes cut/copy/delete conditions to allow use in immediate mode. --- eeschema/sch_edit_frame.cpp | 5 ++ eeschema/symbol_editor/symbol_edit_frame.cpp | 86 ++++++++------------ pcbnew/footprint_edit_frame.cpp | 14 +++- pcbnew/pcb_edit_frame.cpp | 15 +++- 4 files changed, 60 insertions(+), 60 deletions(-) diff --git a/eeschema/sch_edit_frame.cpp b/eeschema/sch_edit_frame.cpp index dfd6f90137..a373b23f85 100644 --- a/eeschema/sch_edit_frame.cpp +++ b/eeschema/sch_edit_frame.cpp @@ -396,6 +396,11 @@ void SCH_EDIT_FRAME::setupUIConditions() mgr->SetConditions( ACTIONS::duplicate, ENABLE( hasElements ) ); mgr->SetConditions( ACTIONS::selectAll, ENABLE( hasElements ) ); + mgr->SetConditions( EE_ACTIONS::rotateCW, ENABLE( hasElements ) ); + mgr->SetConditions( EE_ACTIONS::rotateCCW, ENABLE( hasElements ) ); + mgr->SetConditions( EE_ACTIONS::mirrorH, ENABLE( hasElements ) ); + mgr->SetConditions( EE_ACTIONS::mirrorV, ENABLE( hasElements ) ); + mgr->SetConditions( ACTIONS::zoomTool, CHECK( cond.CurrentTool( ACTIONS::zoomTool ) ) ); mgr->SetConditions( ACTIONS::selectionTool, CHECK( cond.CurrentTool( ACTIONS::selectionTool ) ) ); diff --git a/eeschema/symbol_editor/symbol_edit_frame.cpp b/eeschema/symbol_editor/symbol_edit_frame.cpp index 854c560509..0f2323cbf8 100644 --- a/eeschema/symbol_editor/symbol_edit_frame.cpp +++ b/eeschema/symbol_editor/symbol_edit_frame.cpp @@ -379,54 +379,40 @@ void SYMBOL_EDIT_FRAME::setupUIConditions() return !sel.GetLibNickname().empty() && !sel.GetLibItemName().empty(); }; - mgr->SetConditions( ACTIONS::saveAll, - ENABLE( schematicModifiedCond || libModifiedCondition ) ); - mgr->SetConditions( ACTIONS::save, - ENABLE( schematicModifiedCond || libModifiedCondition ) ); - mgr->SetConditions( EE_ACTIONS::saveLibraryAs, ENABLE( libSelectedCondition ) ); - mgr->SetConditions( EE_ACTIONS::saveSymbolAs, ENABLE( saveSymbolAsCondition ) ); - mgr->SetConditions( EE_ACTIONS::newSymbol, ENABLE( !libSelectedCondition || canEditLib ) ); - mgr->SetConditions( EE_ACTIONS::importSymbol, ENABLE( !libSelectedCondition || canEditLib ) ); + mgr->SetConditions( ACTIONS::saveAll, ENABLE( schematicModifiedCond || libModifiedCondition ) ); + mgr->SetConditions( ACTIONS::save, ENABLE( schematicModifiedCond || libModifiedCondition ) ); + mgr->SetConditions( EE_ACTIONS::saveLibraryAs, ENABLE( libSelectedCondition ) ); + mgr->SetConditions( EE_ACTIONS::saveSymbolAs, ENABLE( saveSymbolAsCondition ) ); + mgr->SetConditions( EE_ACTIONS::newSymbol, ENABLE( !libSelectedCondition || canEditLib ) ); + mgr->SetConditions( EE_ACTIONS::importSymbol, ENABLE( !libSelectedCondition || canEditLib ) ); - mgr->SetConditions( ACTIONS::undo, - ENABLE( haveSymbolCond && cond.UndoAvailable() ) ); - mgr->SetConditions( ACTIONS::redo, - ENABLE( haveSymbolCond && cond.RedoAvailable() ) ); - mgr->SetConditions( ACTIONS::revert, - ENABLE( haveSymbolCond && libModifiedCondition ) ); + mgr->SetConditions( ACTIONS::undo, ENABLE( haveSymbolCond && cond.UndoAvailable() ) ); + mgr->SetConditions( ACTIONS::redo, ENABLE( haveSymbolCond && cond.RedoAvailable() ) ); + mgr->SetConditions( ACTIONS::revert, ENABLE( haveSymbolCond && libModifiedCondition ) ); - mgr->SetConditions( ACTIONS::toggleGrid, - CHECK( cond.GridVisible() ) ); - mgr->SetConditions( ACTIONS::toggleCursorStyle, - CHECK( cond.FullscreenCursor() ) ); - mgr->SetConditions( ACTIONS::millimetersUnits, - CHECK( cond.Units( EDA_UNITS::MILLIMETRES ) ) ); - mgr->SetConditions( ACTIONS::inchesUnits, - CHECK( cond.Units( EDA_UNITS::INCHES ) ) ); - mgr->SetConditions( ACTIONS::milsUnits, - CHECK( cond.Units( EDA_UNITS::MILS ) ) ); - mgr->SetConditions( ACTIONS::acceleratedGraphics, - CHECK( cond.CanvasType( EDA_DRAW_PANEL_GAL::GAL_TYPE_OPENGL ) ) ); - mgr->SetConditions( ACTIONS::standardGraphics, - CHECK( cond.CanvasType( EDA_DRAW_PANEL_GAL::GAL_TYPE_CAIRO ) ) ); + mgr->SetConditions( ACTIONS::toggleGrid, CHECK( cond.GridVisible() ) ); + mgr->SetConditions( ACTIONS::toggleCursorStyle, CHECK( cond.FullscreenCursor() ) ); + mgr->SetConditions( ACTIONS::millimetersUnits, CHECK( cond.Units( EDA_UNITS::MILLIMETRES ) ) ); + mgr->SetConditions( ACTIONS::inchesUnits, CHECK( cond.Units( EDA_UNITS::INCHES ) ) ); + mgr->SetConditions( ACTIONS::milsUnits, CHECK( cond.Units( EDA_UNITS::MILS ) ) ); - mgr->SetConditions( ACTIONS::cut, - ENABLE( isEditableCond && SELECTION_CONDITIONS::NotEmpty ) ); - mgr->SetConditions( ACTIONS::copy, - ENABLE( haveSymbolCond && SELECTION_CONDITIONS::NotEmpty ) ); - mgr->SetConditions( ACTIONS::paste, - ENABLE( isEditableCond && SELECTION_CONDITIONS::Idle ) ); - mgr->SetConditions( ACTIONS::doDelete, - ENABLE( isEditableCond && SELECTION_CONDITIONS::NotEmpty ) ); - mgr->SetConditions( ACTIONS::duplicate, - ENABLE( isEditableCond && SELECTION_CONDITIONS::NotEmpty ) ); - mgr->SetConditions( ACTIONS::selectAll, - ENABLE( haveSymbolCond ) ); + mgr->SetConditions( ACTIONS::acceleratedGraphics, CHECK( cond.CanvasType( EDA_DRAW_PANEL_GAL::GAL_TYPE_OPENGL ) ) ); + mgr->SetConditions( ACTIONS::standardGraphics, CHECK( cond.CanvasType( EDA_DRAW_PANEL_GAL::GAL_TYPE_CAIRO ) ) ); - mgr->SetConditions( ACTIONS::zoomTool, - CHECK( cond.CurrentTool( ACTIONS::zoomTool ) ) ); - mgr->SetConditions( ACTIONS::selectionTool, - CHECK( cond.CurrentTool( ACTIONS::selectionTool ) ) ); + mgr->SetConditions( ACTIONS::cut, ENABLE( isEditableCond ) ); + mgr->SetConditions( ACTIONS::copy, ENABLE( haveSymbolCond ) ); + mgr->SetConditions( ACTIONS::paste, ENABLE( isEditableCond && SELECTION_CONDITIONS::Idle ) ); + mgr->SetConditions( ACTIONS::doDelete, ENABLE( isEditableCond ) ); + mgr->SetConditions( ACTIONS::duplicate, ENABLE( isEditableCond ) ); + mgr->SetConditions( ACTIONS::selectAll, ENABLE( haveSymbolCond ) ); + + mgr->SetConditions( EE_ACTIONS::rotateCW, ENABLE( isEditableCond ) ); + mgr->SetConditions( EE_ACTIONS::rotateCCW, ENABLE( isEditableCond ) ); + mgr->SetConditions( EE_ACTIONS::mirrorH, ENABLE( isEditableCond ) ); + mgr->SetConditions( EE_ACTIONS::mirrorV, ENABLE( isEditableCond ) ); + + mgr->SetConditions( ACTIONS::zoomTool, CHECK( cond.CurrentTool( ACTIONS::zoomTool ) ) ); + mgr->SetConditions( ACTIONS::selectionTool, CHECK( cond.CurrentTool( ACTIONS::selectionTool ) ) ); auto pinTypeCond = [this] ( const SELECTION& ) @@ -480,8 +466,7 @@ void SYMBOL_EDIT_FRAME::setupUIConditions() }; mgr->SetConditions( EE_ACTIONS::showDatasheet, ENABLE( haveDatasheetCond ) ); - mgr->SetConditions( EE_ACTIONS::symbolProperties, - ENABLE( canEditProperties && haveSymbolCond ) ); + mgr->SetConditions( EE_ACTIONS::symbolProperties, ENABLE( canEditProperties && haveSymbolCond ) ); mgr->SetConditions( EE_ACTIONS::runERC, ENABLE( haveSymbolCond ) ); mgr->SetConditions( EE_ACTIONS::pinTable, ENABLE( isEditableCond && haveSymbolCond ) ); @@ -498,14 +483,11 @@ void SYMBOL_EDIT_FRAME::setupUIConditions() mgr->SetConditions( ACTIONS::deleteTool, EDIT_TOOL( ACTIONS::deleteTool ) ); mgr->SetConditions( EE_ACTIONS::placeSymbolPin, EDIT_TOOL( EE_ACTIONS::placeSymbolPin ) ); mgr->SetConditions( EE_ACTIONS::placeSymbolText, EDIT_TOOL( EE_ACTIONS::placeSymbolText ) ); - mgr->SetConditions( EE_ACTIONS::drawSymbolRectangle, - EDIT_TOOL( EE_ACTIONS::drawSymbolRectangle ) ); - mgr->SetConditions( EE_ACTIONS::drawSymbolCircle, - EDIT_TOOL( EE_ACTIONS::drawSymbolCircle ) ); + mgr->SetConditions( EE_ACTIONS::drawSymbolRectangle, EDIT_TOOL( EE_ACTIONS::drawSymbolRectangle ) ); + mgr->SetConditions( EE_ACTIONS::drawSymbolCircle, EDIT_TOOL( EE_ACTIONS::drawSymbolCircle ) ); mgr->SetConditions( EE_ACTIONS::drawSymbolArc, EDIT_TOOL( EE_ACTIONS::drawSymbolArc ) ); mgr->SetConditions( EE_ACTIONS::drawSymbolLines, EDIT_TOOL( EE_ACTIONS::drawSymbolLines ) ); - mgr->SetConditions( EE_ACTIONS::placeSymbolAnchor, - EDIT_TOOL( EE_ACTIONS::placeSymbolAnchor ) ); + mgr->SetConditions( EE_ACTIONS::placeSymbolAnchor, EDIT_TOOL( EE_ACTIONS::placeSymbolAnchor ) ); #undef CHECK #undef ENABLE diff --git a/pcbnew/footprint_edit_frame.cpp b/pcbnew/footprint_edit_frame.cpp index f39da18f4d..6757a7e5d6 100644 --- a/pcbnew/footprint_edit_frame.cpp +++ b/pcbnew/footprint_edit_frame.cpp @@ -998,14 +998,20 @@ void FOOTPRINT_EDIT_FRAME::setupUIConditions() mgr->SetConditions( ACTIONS::acceleratedGraphics, CHECK( cond.CanvasType( EDA_DRAW_PANEL_GAL::GAL_TYPE_OPENGL ) ) ); mgr->SetConditions( ACTIONS::standardGraphics, CHECK( cond.CanvasType( EDA_DRAW_PANEL_GAL::GAL_TYPE_CAIRO ) ) ); - mgr->SetConditions( ACTIONS::cut, ENABLE( SELECTION_CONDITIONS::NotEmpty ) ); - mgr->SetConditions( ACTIONS::copy, ENABLE( SELECTION_CONDITIONS::NotEmpty ) ); + mgr->SetConditions( ACTIONS::cut, ENABLE( cond.HasItems() ) ); + mgr->SetConditions( ACTIONS::copy, ENABLE( cond.HasItems() ) ); mgr->SetConditions( ACTIONS::paste, ENABLE( SELECTION_CONDITIONS::Idle && cond.NoActiveTool() ) ); mgr->SetConditions( ACTIONS::pasteSpecial, ENABLE( SELECTION_CONDITIONS::Idle && cond.NoActiveTool() ) ); - mgr->SetConditions( ACTIONS::doDelete, ENABLE( SELECTION_CONDITIONS::NotEmpty ) ); - mgr->SetConditions( ACTIONS::duplicate, ENABLE( SELECTION_CONDITIONS::NotEmpty ) ); + mgr->SetConditions( ACTIONS::doDelete, ENABLE( cond.HasItems() ) ); + mgr->SetConditions( ACTIONS::duplicate, ENABLE( cond.HasItems() ) ); mgr->SetConditions( ACTIONS::selectAll, ENABLE( cond.HasItems() ) ); + mgr->SetConditions( PCB_ACTIONS::rotateCw, ENABLE( cond.HasItems() ) ); + mgr->SetConditions( PCB_ACTIONS::rotateCcw, ENABLE( cond.HasItems() ) ); + mgr->SetConditions( PCB_ACTIONS::mirror, ENABLE( cond.HasItems() ) ); + mgr->SetConditions( PCB_ACTIONS::group, ENABLE( SELECTION_CONDITIONS::MoreThan( 1 ) ) ); + mgr->SetConditions( PCB_ACTIONS::ungroup, ENABLE( cond.HasItems() ) ); + mgr->SetConditions( PCB_ACTIONS::padDisplayMode, CHECK( !cond.PadFillDisplay() ) ); mgr->SetConditions( PCB_ACTIONS::textOutlines, CHECK( !cond.TextFillDisplay() ) ); mgr->SetConditions( PCB_ACTIONS::graphicsOutlines, CHECK( !cond.GraphicsFillDisplay() ) ); diff --git a/pcbnew/pcb_edit_frame.cpp b/pcbnew/pcb_edit_frame.cpp index d5ce4bfb73..4f1a32a5a4 100644 --- a/pcbnew/pcb_edit_frame.cpp +++ b/pcbnew/pcb_edit_frame.cpp @@ -518,13 +518,20 @@ void PCB_EDIT_FRAME::setupUIConditions() mgr->SetConditions( ACTIONS::acceleratedGraphics, CHECK( cond.CanvasType( EDA_DRAW_PANEL_GAL::GAL_TYPE_OPENGL ) ) ); mgr->SetConditions( ACTIONS::standardGraphics, CHECK( cond.CanvasType( EDA_DRAW_PANEL_GAL::GAL_TYPE_CAIRO ) ) ); - mgr->SetConditions( ACTIONS::cut, ENABLE( SELECTION_CONDITIONS::NotEmpty ) ); - mgr->SetConditions( ACTIONS::copy, ENABLE( SELECTION_CONDITIONS::NotEmpty ) ); + mgr->SetConditions( ACTIONS::cut, ENABLE( cond.HasItems() ) ); + mgr->SetConditions( ACTIONS::copy, ENABLE( cond.HasItems() ) ); mgr->SetConditions( ACTIONS::paste, ENABLE( SELECTION_CONDITIONS::Idle && cond.NoActiveTool() ) ); mgr->SetConditions( ACTIONS::pasteSpecial, ENABLE( SELECTION_CONDITIONS::Idle && cond.NoActiveTool() ) ); mgr->SetConditions( ACTIONS::selectAll, ENABLE( cond.HasItems() ) ); - mgr->SetConditions( ACTIONS::doDelete, ENABLE( SELECTION_CONDITIONS::NotEmpty ) ); - mgr->SetConditions( ACTIONS::duplicate, ENABLE( SELECTION_CONDITIONS::NotEmpty ) ); + mgr->SetConditions( ACTIONS::doDelete, ENABLE( cond.HasItems() ) ); + mgr->SetConditions( ACTIONS::duplicate, ENABLE( cond.HasItems() ) ); + + mgr->SetConditions( PCB_ACTIONS::rotateCw, ENABLE( cond.HasItems() ) ); + mgr->SetConditions( PCB_ACTIONS::rotateCcw, ENABLE( cond.HasItems() ) ); + mgr->SetConditions( PCB_ACTIONS::group, ENABLE( SELECTION_CONDITIONS::MoreThan( 1 ) ) ); + mgr->SetConditions( PCB_ACTIONS::ungroup, ENABLE( cond.HasItems() ) ); + mgr->SetConditions( PCB_ACTIONS::lock, ENABLE( cond.HasItems() ) ); + mgr->SetConditions( PCB_ACTIONS::unlock, ENABLE( cond.HasItems() ) ); mgr->SetConditions( PCB_ACTIONS::padDisplayMode, CHECK( !cond.PadFillDisplay() ) ); mgr->SetConditions( PCB_ACTIONS::viaDisplayMode, CHECK( !cond.ViaFillDisplay() ) );