Eeschema copy/cut/paste to ctrl+c/x/v cut is now undoable Highlight net is now at ctrl+b by default
This commit is contained in:
parent
65fea1b92b
commit
4fb2f80dd4
|
@ -867,6 +867,8 @@ bool EDA_DRAW_FRAME::HandleBlockBegin( wxDC* aDC, EDA_KEY aKey, const wxPoint& a
|
||||||
DisplayError( this, wxT( "No block to paste" ), 20 );
|
DisplayError( this, wxT( "No block to paste" ), 20 );
|
||||||
GetScreen()->m_BlockLocate.SetCommand( BLOCK_IDLE );
|
GetScreen()->m_BlockLocate.SetCommand( BLOCK_IDLE );
|
||||||
m_canvas->SetMouseCaptureCallback( NULL );
|
m_canvas->SetMouseCaptureCallback( NULL );
|
||||||
|
block->SetState( STATE_NO_BLOCK );
|
||||||
|
block->SetMessageBlock( this );
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -875,6 +877,8 @@ bool EDA_DRAW_FRAME::HandleBlockBegin( wxDC* aDC, EDA_KEY aKey, const wxPoint& a
|
||||||
block->ClearItemsList();
|
block->ClearItemsList();
|
||||||
DisplayError( this,
|
DisplayError( this,
|
||||||
wxT( "EDA_DRAW_FRAME::HandleBlockBegin() Err: m_mouseCaptureCallback NULL" ) );
|
wxT( "EDA_DRAW_FRAME::HandleBlockBegin() Err: m_mouseCaptureCallback NULL" ) );
|
||||||
|
block->SetState( STATE_NO_BLOCK );
|
||||||
|
block->SetMessageBlock( this );
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -304,6 +304,24 @@ bool SCH_EDIT_FRAME::HandleBlockEnd( wxDC* aDC )
|
||||||
block->ClearItemsList();
|
block->ClearItemsList();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case BLOCK_CUT:
|
||||||
|
GetScreen()->UpdatePickList();
|
||||||
|
DrawAndSizingBlockOutlines( m_canvas, aDC, wxDefaultPosition, false );
|
||||||
|
|
||||||
|
if( block->GetCount() )
|
||||||
|
{
|
||||||
|
wxPoint move_vector = -GetScreen()->m_BlockLocate.GetLastCursorPosition();
|
||||||
|
copyBlockItems( block->GetItems() );
|
||||||
|
MoveItemsInList( m_blockItems.GetItems(), move_vector );
|
||||||
|
DeleteItemsInList( m_canvas, block->GetItems() );
|
||||||
|
OnModify();
|
||||||
|
}
|
||||||
|
|
||||||
|
block->ClearItemsList();
|
||||||
|
GetScreen()->TestDanglingEnds();
|
||||||
|
m_canvas->Refresh();
|
||||||
|
break;
|
||||||
|
|
||||||
case BLOCK_PASTE:
|
case BLOCK_PASTE:
|
||||||
block->SetState( STATE_BLOCK_MOVE );
|
block->SetState( STATE_BLOCK_MOVE );
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -194,6 +194,8 @@ static EDA_HOTKEY HkCopyComponentOrText( _HKI( "Copy Component or Label" ),
|
||||||
|
|
||||||
static EDA_HOTKEY HkDrag( _HKI( "Drag Item" ), HK_DRAG, 'G', ID_SCH_DRAG_ITEM );
|
static EDA_HOTKEY HkDrag( _HKI( "Drag Item" ), HK_DRAG, 'G', ID_SCH_DRAG_ITEM );
|
||||||
static EDA_HOTKEY HkSaveBlock( _HKI( "Save Block" ), HK_SAVE_BLOCK, 'C' + GR_KB_CTRL, wxID_COPY );
|
static EDA_HOTKEY HkSaveBlock( _HKI( "Save Block" ), HK_SAVE_BLOCK, 'C' + GR_KB_CTRL, wxID_COPY );
|
||||||
|
static EDA_HOTKEY HkPasteBlock( _HKI( "Paste Block" ), HK_PASTE_BLOCK, 'V' + GR_KB_CTRL, wxID_PASTE );
|
||||||
|
static EDA_HOTKEY HkCutBlock( _HKI( "Cut Block" ), HK_CUT_BLOCK, 'X' + GR_KB_CTRL, wxID_CUT );
|
||||||
static EDA_HOTKEY HkMove2Drag( _HKI( "Move Block -> Drag Block" ),
|
static EDA_HOTKEY HkMove2Drag( _HKI( "Move Block -> Drag Block" ),
|
||||||
HK_MOVEBLOCK_TO_DRAGBLOCK, '\t', ID_POPUP_DRAG_BLOCK );
|
HK_MOVEBLOCK_TO_DRAGBLOCK, '\t', ID_POPUP_DRAG_BLOCK );
|
||||||
static EDA_HOTKEY HkInsert( _HKI( "Repeat Last Item" ), HK_REPEAT_LAST, WXK_INSERT );
|
static EDA_HOTKEY HkInsert( _HKI( "Repeat Last Item" ), HK_REPEAT_LAST, WXK_INSERT );
|
||||||
|
@ -230,7 +232,7 @@ static EDA_HOTKEY HkUpdatePcbFromSch( _HKI( "Update PCB from Schematic" ), HK_UP
|
||||||
|
|
||||||
// Higtlight connection
|
// Higtlight connection
|
||||||
static EDA_HOTKEY HkHighlightConnection( _HKI( "Highlight Connection" ), ID_HOTKEY_HIGHLIGHT,
|
static EDA_HOTKEY HkHighlightConnection( _HKI( "Highlight Connection" ), ID_HOTKEY_HIGHLIGHT,
|
||||||
'X' + GR_KB_CTRL );
|
'B' + GR_KB_CTRL );
|
||||||
|
|
||||||
// List of common hotkey descriptors
|
// List of common hotkey descriptors
|
||||||
static EDA_HOTKEY* common_Hotkey_List[] =
|
static EDA_HOTKEY* common_Hotkey_List[] =
|
||||||
|
@ -281,6 +283,8 @@ static EDA_HOTKEY* schematic_Hotkey_List[] =
|
||||||
&HkInsert,
|
&HkInsert,
|
||||||
&HkMove2Drag,
|
&HkMove2Drag,
|
||||||
&HkSaveBlock,
|
&HkSaveBlock,
|
||||||
|
&HkPasteBlock,
|
||||||
|
&HkCutBlock,
|
||||||
&HkMove,
|
&HkMove,
|
||||||
&HkCopyComponentOrText,
|
&HkCopyComponentOrText,
|
||||||
&HkAddComponent,
|
&HkAddComponent,
|
||||||
|
@ -471,7 +475,9 @@ bool SCH_EDIT_FRAME::OnHotKey( wxDC* aDC, int aHotKey, const wxPoint& aPosition,
|
||||||
case HK_ZOOM_AUTO:
|
case HK_ZOOM_AUTO:
|
||||||
case HK_ZOOM_SELECTION:
|
case HK_ZOOM_SELECTION:
|
||||||
case HK_MOVEBLOCK_TO_DRAGBLOCK: // Switch to drag mode, when block moving
|
case HK_MOVEBLOCK_TO_DRAGBLOCK: // Switch to drag mode, when block moving
|
||||||
|
case HK_PASTE_BLOCK:
|
||||||
case HK_SAVE_BLOCK: // Copy block to paste buffer.
|
case HK_SAVE_BLOCK: // Copy block to paste buffer.
|
||||||
|
case HK_CUT_BLOCK:
|
||||||
cmd.SetId( hotKey->m_IdMenuEvent );
|
cmd.SetId( hotKey->m_IdMenuEvent );
|
||||||
GetEventHandler()->ProcessEvent( cmd );
|
GetEventHandler()->ProcessEvent( cmd );
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -43,6 +43,8 @@ enum hotkey_id_commnand {
|
||||||
HK_LIBEDIT_MOVE_GRAPHIC_ITEM,
|
HK_LIBEDIT_MOVE_GRAPHIC_ITEM,
|
||||||
HK_MOVEBLOCK_TO_DRAGBLOCK,
|
HK_MOVEBLOCK_TO_DRAGBLOCK,
|
||||||
HK_SAVE_BLOCK,
|
HK_SAVE_BLOCK,
|
||||||
|
HK_PASTE_BLOCK,
|
||||||
|
HK_CUT_BLOCK,
|
||||||
HK_LIBEDIT_LOAD_PART,
|
HK_LIBEDIT_LOAD_PART,
|
||||||
HK_LIBEDIT_CREATE_PIN,
|
HK_LIBEDIT_CREATE_PIN,
|
||||||
HK_DELETE_PIN,
|
HK_DELETE_PIN,
|
||||||
|
|
|
@ -123,17 +123,23 @@ void SCH_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event )
|
||||||
SetRepeatItem( NULL );
|
SetRepeatItem( NULL );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case wxID_CUT:
|
case wxID_CUT: // save and delete block
|
||||||
|
|
||||||
if( screen->m_BlockLocate.GetCommand() != BLOCK_MOVE )
|
if( screen->m_BlockLocate.GetCommand() != BLOCK_MOVE )
|
||||||
break;
|
break;
|
||||||
|
screen->m_BlockLocate.SetCommand( BLOCK_CUT );
|
||||||
screen->m_BlockLocate.SetCommand( BLOCK_DELETE );
|
|
||||||
screen->m_BlockLocate.SetMessageBlock( this );
|
screen->m_BlockLocate.SetMessageBlock( this );
|
||||||
HandleBlockEnd( &dc );
|
HandleBlockEnd( &dc );
|
||||||
SetRepeatItem( NULL );
|
SetRepeatItem( NULL );
|
||||||
SetSheetNumberAndCount();
|
SetSheetNumberAndCount();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case wxID_COPY: // really this is a Save block for paste
|
||||||
|
screen->m_BlockLocate.SetCommand( BLOCK_SAVE );
|
||||||
|
screen->m_BlockLocate.SetMessageBlock( this );
|
||||||
|
HandleBlockEnd( &dc );
|
||||||
|
break;
|
||||||
|
|
||||||
case wxID_PASTE:
|
case wxID_PASTE:
|
||||||
HandleBlockBegin( &dc, BLOCK_PASTE, GetCrossHairPosition() );
|
HandleBlockBegin( &dc, BLOCK_PASTE, GetCrossHairPosition() );
|
||||||
break;
|
break;
|
||||||
|
@ -329,12 +335,6 @@ void SCH_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event )
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case wxID_COPY: // really this is a Save block for paste
|
|
||||||
screen->m_BlockLocate.SetCommand( BLOCK_SAVE );
|
|
||||||
screen->m_BlockLocate.SetMessageBlock( this );
|
|
||||||
HandleBlockEnd( &dc );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ID_POPUP_PLACE_BLOCK:
|
case ID_POPUP_PLACE_BLOCK:
|
||||||
m_canvas->SetAutoPanRequest( false );
|
m_canvas->SetAutoPanRequest( false );
|
||||||
m_canvas->MoveCursorToCrossHair();
|
m_canvas->MoveCursorToCrossHair();
|
||||||
|
|
|
@ -56,6 +56,7 @@ typedef enum {
|
||||||
BLOCK_SAVE,
|
BLOCK_SAVE,
|
||||||
BLOCK_DELETE,
|
BLOCK_DELETE,
|
||||||
BLOCK_PASTE,
|
BLOCK_PASTE,
|
||||||
|
BLOCK_CUT,
|
||||||
BLOCK_DRAG,
|
BLOCK_DRAG,
|
||||||
BLOCK_DRAG_ITEM, // like BLOCK_DRAG, when used to drag a selected component
|
BLOCK_DRAG_ITEM, // like BLOCK_DRAG, when used to drag a selected component
|
||||||
// and not using an area defined by a mouse drag
|
// and not using an area defined by a mouse drag
|
||||||
|
|
Loading…
Reference in New Issue