modedit_undo_redo.cpp 2.38 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
	/********************************************/
	/*  library editor: undo and redo functions */
	/********************************************/

#include "fctsys.h"
#include "gr_basic.h"

#include "common.h"
#include "pcbnew.h"
#include "id.h"

#include "protos.h"


/**************************************************************************/
void WinEDA_ModuleEditFrame::SaveCopyInUndoList(EDA_BaseStruct * ItemToCopy,
		int unused_flag)
/************************************************************************/
{
EDA_BaseStruct * item;
MODULE * CopyItem;

	CopyItem = new MODULE(m_Pcb);
	CopyItem->Copy((MODULE*)ItemToCopy);
	CopyItem->m_Parent = m_Pcb;

	GetScreen()->AddItemToUndoList((EDA_BaseStruct *)CopyItem);
	/* Clear current flags (which can be temporary set by a current edit command) */
	for ( item = CopyItem->m_Drawings; item != NULL; item = item->Pnext )
		item->m_Flags = 0;
	

	/* Clear redo list, because after new save there is no redo to do */
	while ( GetScreen()->m_RedoList )
	{
		item = GetScreen()->m_RedoList->Pnext;
		delete GetScreen()->m_RedoList;
		GetScreen()->m_RedoList = item;
	}
}

/*********************************************************/
void WinEDA_ModuleEditFrame::GetComponentFromRedoList(void)
plyatov's avatar
plyatov committed
44
/*********************************************************/
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
/* Redo the last edition:
	- Place the current edited library component in undo list
	- Get old version of the current edited library component
*/
{
	if ( GetScreen()->m_RedoList == NULL ) return;
		
	GetScreen()->AddItemToUndoList(m_Pcb->m_Modules);
	m_Pcb->m_Modules =
		(MODULE *) GetScreen()->GetItemFromRedoList();
	if ( m_Pcb->m_Modules ) m_Pcb->m_Modules->Pnext = NULL;
	GetScreen()->m_CurrentItem = NULL;;
	GetScreen()->SetModify();
	ReCreateHToolbar();
	SetToolbars();
plyatov's avatar
plyatov committed
60
}
61

plyatov's avatar
plyatov committed
62
/*********************************************************/
63
void WinEDA_ModuleEditFrame::GetComponentFromUndoList(void)
plyatov's avatar
plyatov committed
64
/*********************************************************/
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
/* Undo the last edition:
	- Place the current edited library component in Redo list
	- Get old version of the current edited library component
*/
{
	if ( GetScreen()->m_UndoList == NULL ) return;
		
	GetScreen()->AddItemToRedoList(m_Pcb->m_Modules);
	m_Pcb->m_Modules =
		(MODULE *) GetScreen()->GetItemFromUndoList();

	if ( m_Pcb->m_Modules ) m_Pcb->m_Modules->Pnext = NULL;
	GetScreen()->SetModify();
	GetScreen()->m_CurrentItem = NULL;;
	ReCreateHToolbar();
	SetToolbars();
plyatov's avatar
plyatov committed
81
}