From 5a391836a0e14c547c650048adcc7268aaad24ae Mon Sep 17 00:00:00 2001 From: charras Date: Wed, 29 Jul 2009 13:52:44 +0000 Subject: [PATCH] pcbnew: Starting work on undo/redo in pcbnew. Only some delete item commands are stored in undo/redo stack --- include/class_pcb_screen.h | 72 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 include/class_pcb_screen.h diff --git a/include/class_pcb_screen.h b/include/class_pcb_screen.h new file mode 100644 index 0000000000..d0139c0baa --- /dev/null +++ b/include/class_pcb_screen.h @@ -0,0 +1,72 @@ +/**************************************************************/ +/* pcbstruct.h : definition des structures de donnees type PCB */ +/**************************************************************/ + +#ifndef __CLASSPCB_SCREEN_H__ +#define __CLASSPCB_SCREEN_H__ + +# + +/* Handle info to display a board */ +class PCB_SCREEN : public BASE_SCREEN +{ +public: + int m_Active_Layer; /* ref couche active */ + int m_Route_Layer_TOP; /* ref couches actives */ + int m_Route_Layer_BOTTOM; /* pour placement vias et routage 2 couches */ + +public: + PCB_SCREEN(); + ~PCB_SCREEN(); + + PCB_SCREEN* Next() { return (PCB_SCREEN*) Pnext; } + void Init(); + void SetNextZoom(); + void SetPreviousZoom(); + void SetLastZoom(); + + virtual int GetInternalUnits( void ); + + /** + * Function GetCurItem + * returns the currently selected BOARD_ITEM, overriding BASE_SCREEN::GetCurItem(). + * @return BOARD_ITEM* - the one selected, or NULL. + */ + BOARD_ITEM* GetCurItem() const { return (BOARD_ITEM*) BASE_SCREEN::GetCurItem(); } + + /** + * Function SetCurItem + * sets the currently selected object, m_CurrentItem. + * @param aItem Any object derived from BOARD_ITEM + */ + void SetCurItem( BOARD_ITEM* aItem ) { BASE_SCREEN::SetCurItem( aItem ); } + + + /* Return true if a microvia can be put on board + * A microvia ia a small via restricted to 2 near neighbour layers + * because its is hole is made by laser which can penetrate only one layer + * It is mainly used to connect BGA to the first inner layer + * And it is allowed from an external layer to the first inner layer + */ + bool IsMicroViaAcceptable( void ); + + /* full undo redo management : */ + // use BASE_SCREEN::ClearUndoRedoList() + // use BASE_SCREEN::PushCommandToUndoList( PICKED_ITEMS_LIST* aItem ) + // use BASE_SCREEN::PushCommandToRedoList( PICKED_ITEMS_LIST* aItem ) + + /** Function ClearUndoORRedoList + * free the undo or redo list from List element + * Wrappers are deleted. + * datas pointed by wrappers are deleted if not in use in schematic + * i.e. when they are copy of a schematic item or they are no more in use (DELETED) + * @param aList = the UNDO_REDO_CONTAINER to clear + * @param aItemCount = the count of items to remove. < 0 for all items + * items are removed from the beginning of the list. + * So this function can be called to remove old commands + */ + void ClearUndoORRedoList( UNDO_REDO_CONTAINER& aList, int aItemCount = -1 ); +}; + + +#endif /* __CLASSPCB_SCREEN_H__ */