Added support for pads, texts and graphics removal in module editor (GAL).
This commit is contained in:
parent
5dc1f92608
commit
637919a699
|
@ -278,8 +278,11 @@ FOOTPRINT_EDIT_FRAME::FOOTPRINT_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
|
|||
m_toolManager->RegisterTool( new DRAWING_TOOL );
|
||||
m_toolManager->RegisterTool( new POINT_EDITOR );
|
||||
m_toolManager->RegisterTool( new PCBNEW_CONTROL );
|
||||
|
||||
m_toolManager->GetTool<SELECTION_TOOL>()->EditModules( true );
|
||||
m_toolManager->GetTool<EDIT_TOOL>()->EditModules( true );
|
||||
m_toolManager->GetTool<DRAWING_TOOL>()->EditModules( true );
|
||||
|
||||
m_toolManager->ResetTools( TOOL_BASE::RUN );
|
||||
m_toolManager->InvokeTool( "pcbnew.InteractiveSelection" );
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
#include "edit_tool.h"
|
||||
|
||||
EDIT_TOOL::EDIT_TOOL() :
|
||||
TOOL_INTERACTIVE( "pcbnew.InteractiveEdit" ), m_selectionTool( NULL )
|
||||
TOOL_INTERACTIVE( "pcbnew.InteractiveEdit" ), m_selectionTool( NULL ), m_editModules( false )
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -448,11 +448,40 @@ void EDIT_TOOL::remove( BOARD_ITEM* aItem )
|
|||
}
|
||||
break;
|
||||
|
||||
// These are not supposed to be removed
|
||||
case PCB_PAD_T:
|
||||
// Default removal procedure
|
||||
case PCB_MODULE_TEXT_T:
|
||||
{
|
||||
if( m_editModules )
|
||||
{
|
||||
TEXTE_MODULE* text = static_cast<TEXTE_MODULE*>( aItem );
|
||||
|
||||
switch( text->GetType() )
|
||||
{
|
||||
case TEXTE_MODULE::TEXT_is_REFERENCE:
|
||||
DisplayError( getEditFrame<PCB_BASE_FRAME>(), _( "Cannot delete REFERENCE!" ) );
|
||||
return;
|
||||
|
||||
case TEXTE_MODULE::TEXT_is_VALUE:
|
||||
DisplayError( getEditFrame<PCB_BASE_FRAME>(), _( "Cannot delete VALUE!" ) );
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
/* no break */
|
||||
|
||||
case PCB_PAD_T:
|
||||
case PCB_MODULE_EDGE_T:
|
||||
if( m_editModules )
|
||||
{
|
||||
MODULE* module = static_cast<MODULE*>( aItem->GetParent() );
|
||||
module->SetLastEditTime();
|
||||
|
||||
board->m_Status_Pcb = 0; // it is done in the legacy view
|
||||
aItem->DeleteStructure();
|
||||
}
|
||||
|
||||
return;
|
||||
break;
|
||||
|
||||
case PCB_LINE_T: // a segment not on copper layers
|
||||
case PCB_TEXT_T: // a text on a layer
|
||||
|
|
|
@ -91,6 +91,17 @@ public:
|
|||
*/
|
||||
int Remove( TOOL_EVENT& aEvent );
|
||||
|
||||
/**
|
||||
* Function EditModules()
|
||||
* Toggles edit module mode. When enabled, one may select parts of modules individually
|
||||
* (graphics, pads, etc.), so they can be modified.
|
||||
* @param aEnabled decides if the mode should be enabled.
|
||||
*/
|
||||
void EditModules( bool aEnabled )
|
||||
{
|
||||
m_editModules = aEnabled;
|
||||
}
|
||||
|
||||
private:
|
||||
///> Selection tool used for obtaining selected items
|
||||
SELECTION_TOOL* m_selectionTool;
|
||||
|
@ -105,6 +116,9 @@ private:
|
|||
///> of edit reference point).
|
||||
VECTOR2I m_cursor;
|
||||
|
||||
/// Edit module mode flag
|
||||
bool m_editModules;
|
||||
|
||||
///> Removes and frees a single BOARD_ITEM.
|
||||
void remove( BOARD_ITEM* aItem );
|
||||
|
||||
|
|
Loading…
Reference in New Issue