|
|
|
@ -29,6 +29,7 @@ |
|
|
|
#include <tool/tool_manager.h>
|
|
|
|
#include <tools/ee_actions.h>
|
|
|
|
#include <tools/ee_selection_tool.h>
|
|
|
|
#include <tools/symbol_editor_drawing_tools.h>
|
|
|
|
|
|
|
|
|
|
|
|
void SYMBOL_EDIT_FRAME::PushSymbolToUndoList( const wxString& aDescription, LIB_SYMBOL* aSymbolCopy, |
|
|
|
@ -37,6 +38,8 @@ void SYMBOL_EDIT_FRAME::PushSymbolToUndoList( const wxString& aDescription, LIB_ |
|
|
|
if( !aSymbolCopy ) |
|
|
|
return; |
|
|
|
|
|
|
|
auto* drawingTool = GetToolManager()->GetTool<SYMBOL_EDITOR_DRAWING_TOOLS>(); |
|
|
|
|
|
|
|
PICKED_ITEMS_LIST* lastcmd = new PICKED_ITEMS_LIST(); |
|
|
|
|
|
|
|
// Clear current flags (which can be temporary set by a current edit command).
|
|
|
|
@ -45,6 +48,7 @@ void SYMBOL_EDIT_FRAME::PushSymbolToUndoList( const wxString& aDescription, LIB_ |
|
|
|
aSymbolCopy->SetFlags( UR_TRANSIENT ); |
|
|
|
|
|
|
|
ITEM_PICKER wrapper( GetScreen(), aSymbolCopy, aUndoType ); |
|
|
|
wrapper.SetGroupId( drawingTool->GetLastPin() ); |
|
|
|
lastcmd->PushItem( wrapper ); |
|
|
|
lastcmd->SetDescription( aDescription ); |
|
|
|
PushCommandToUndoList( lastcmd ); |
|
|
|
@ -67,6 +71,8 @@ void SYMBOL_EDIT_FRAME::GetSymbolFromRedoList() |
|
|
|
if( GetRedoCommandCount() <= 0 ) |
|
|
|
return; |
|
|
|
|
|
|
|
auto* drawingTool = GetToolManager()->GetTool<SYMBOL_EDITOR_DRAWING_TOOLS>(); |
|
|
|
|
|
|
|
// Load the last redo entry
|
|
|
|
PICKED_ITEMS_LIST* redoCommand = PopCommandFromRedoList(); |
|
|
|
ITEM_PICKER redoWrapper = redoCommand->PopItem(); |
|
|
|
@ -75,6 +81,7 @@ void SYMBOL_EDIT_FRAME::GetSymbolFromRedoList() |
|
|
|
delete redoCommand; |
|
|
|
|
|
|
|
LIB_SYMBOL* symbol = (LIB_SYMBOL*) redoWrapper.GetItem(); |
|
|
|
KIID lastPin = redoWrapper.GetGroupId(); |
|
|
|
UNDO_REDO undoRedoType = redoWrapper.GetStatus(); |
|
|
|
wxCHECK( symbol, /* void */ ); |
|
|
|
symbol->ClearFlags( UR_TRANSIENT ); |
|
|
|
@ -85,6 +92,7 @@ void SYMBOL_EDIT_FRAME::GetSymbolFromRedoList() |
|
|
|
|
|
|
|
oldSymbol->SetFlags( UR_TRANSIENT ); |
|
|
|
ITEM_PICKER undoWrapper( GetScreen(), oldSymbol, undoRedoType ); |
|
|
|
undoWrapper.SetGroupId( drawingTool->GetLastPin() ); |
|
|
|
undoCommand->SetDescription( description ); |
|
|
|
undoCommand->PushItem( undoWrapper ); |
|
|
|
PushCommandToUndoList( undoCommand ); |
|
|
|
@ -94,6 +102,7 @@ void SYMBOL_EDIT_FRAME::GetSymbolFromRedoList() |
|
|
|
// <previous symbol> is now put in undo list and is owned by this list
|
|
|
|
// Just set the current symbol to the symbol which come from the redo list
|
|
|
|
m_symbol = symbol; |
|
|
|
drawingTool->SetLastPin( lastPin ); |
|
|
|
|
|
|
|
if( undoRedoType == UNDO_REDO::LIB_RENAME ) |
|
|
|
{ |
|
|
|
@ -118,6 +127,8 @@ void SYMBOL_EDIT_FRAME::GetSymbolFromUndoList() |
|
|
|
if( GetUndoCommandCount() <= 0 ) |
|
|
|
return; |
|
|
|
|
|
|
|
auto* drawingTool = GetToolManager()->GetTool<SYMBOL_EDITOR_DRAWING_TOOLS>(); |
|
|
|
|
|
|
|
// Load the last undo entry
|
|
|
|
PICKED_ITEMS_LIST* undoCommand = PopCommandFromUndoList(); |
|
|
|
wxString description = undoCommand->GetDescription(); |
|
|
|
@ -126,6 +137,7 @@ void SYMBOL_EDIT_FRAME::GetSymbolFromUndoList() |
|
|
|
delete undoCommand; |
|
|
|
|
|
|
|
LIB_SYMBOL* symbol = (LIB_SYMBOL*) undoWrapper.GetItem(); |
|
|
|
KIID lastPin = undoWrapper.GetGroupId(); |
|
|
|
UNDO_REDO undoRedoType = undoWrapper.GetStatus(); |
|
|
|
wxCHECK( symbol, /* void */ ); |
|
|
|
symbol->ClearFlags( UR_TRANSIENT ); |
|
|
|
@ -136,6 +148,7 @@ void SYMBOL_EDIT_FRAME::GetSymbolFromUndoList() |
|
|
|
|
|
|
|
oldSymbol->SetFlags( UR_TRANSIENT ); |
|
|
|
ITEM_PICKER redoWrapper( GetScreen(), oldSymbol, undoRedoType ); |
|
|
|
redoWrapper.SetGroupId( drawingTool->GetLastPin() ); |
|
|
|
redoCommand->PushItem( redoWrapper ); |
|
|
|
redoCommand->SetDescription( description ); |
|
|
|
PushCommandToRedoList( redoCommand ); |
|
|
|
@ -145,6 +158,7 @@ void SYMBOL_EDIT_FRAME::GetSymbolFromUndoList() |
|
|
|
// <previous symbol> is now put in redo list and is owned by this list.
|
|
|
|
// Just set the current symbol to the symbol which come from the undo list
|
|
|
|
m_symbol = symbol; |
|
|
|
drawingTool->SetLastPin( lastPin ); |
|
|
|
|
|
|
|
if( undoRedoType == UNDO_REDO::LIB_RENAME ) |
|
|
|
{ |
|
|
|
|