KiCad PCB EDA Suite
Go to the documentation of this file.
1 /*
2  * This program source code file is part of KiCad, a free EDA CAD application.
3  *
4  * Copyright (C) 2014 CERN
5  * @author Maciej Suminski <>
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License
9  * as published by the Free Software Foundation; either version 2
10  * of the License, or (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, you may find one here:
19  *
20  * or you may search the website for the version 2 license,
21  * or you may write to the Free Software Foundation, Inc.,
22  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
23  */
25 #ifndef BASE_EDIT_FRAME_H
26 #define BASE_EDIT_FRAME_H
28 #include <wxBasePcbFrame.h>
36 {
37 public:
38  PCB_BASE_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent, FRAME_T aFrameType,
39  const wxString& aTitle, const wxPoint& aPos, const wxSize& aSize,
40  long aStyle, const wxString& aFrameName ) :
41  PCB_BASE_FRAME( aKiway, aParent, aFrameType, aTitle, aPos, aSize, aStyle, aFrameName ),
42  m_rotationAngle( 900 ), m_undoRedoBlocked( false )
43  {}
45  virtual ~PCB_BASE_EDIT_FRAME() {};
51  virtual BOARD_ITEM_CONTAINER* GetModel() const = 0;
62  wxString CreateNewLibrary();
70  virtual void OnEditItemRequest( wxDC* aDC, BOARD_ITEM* aItem ) = 0;
72  // Undo buffer handling
83  void SaveCopyInUndoList( BOARD_ITEM* aItemToCopy, UNDO_REDO_T aTypeCommand,
84  const wxPoint& aTransformPoint = wxPoint( 0, 0 ) ) override;
95  void SaveCopyInUndoList( const PICKED_ITEMS_LIST& aItemsList, UNDO_REDO_T aTypeCommand,
96  const wxPoint& aTransformPoint = wxPoint( 0, 0 ) ) override;
104  void RestoreCopyFromRedoList( wxCommandEvent& aEvent );
113  void RestoreCopyFromUndoList( wxCommandEvent& aEvent );
126  bool aRedoCommand,
127  bool aRebuildRatsnet = true );
133  bool UndoRedoBlocked() const
134  {
135  return m_undoRedoBlocked;
136  }
142  void UndoRedoBlock( bool aBlock = true )
143  {
144  m_undoRedoBlocked = aBlock;
145  }
151  int GetRotationAngle() const { return m_rotationAngle; }
157  void SetRotationAngle( int aRotationAngle );
160  void UseGalCanvas( bool aEnable ) override;
163  virtual void SetBoard( BOARD* aBoard ) override;
165 protected:
178  void createArray();
189  void duplicateItem( BOARD_ITEM* aItem, bool aIncrement );
201  virtual void duplicateItems( bool aIncrement ) = 0;
202 };
204 #endif
void RestoreCopyFromUndoList(wxCommandEvent &aEvent)
Function RestoreCopyFromUndoList Undo the last edition:
Definition: undo_redo.cpp:319
PCB_BASE_EDIT_FRAME(KIWAY *aKiway, wxWindow *aParent, FRAME_T aFrameType, const wxString &aTitle, const wxPoint &aPos, const wxSize &aSize, long aStyle, const wxString &aFrameName)
Class BOARD_ITEM is a base class for any item which can be embedded within the BOARD container class...
Enum FRAME_T is the set of EDA_BASE_FRAME derivatives, typically stored in EDA_BASE_FRAME::m_Ident.
Definition: frame_type.h:34
virtual void OnEditItemRequest(wxDC *aDC, BOARD_ITEM *aItem)=0
Function OnEditItemRequest Install the corresponding dialog editor for the given item.
void duplicateItem(BOARD_ITEM *aItem, bool aIncrement)
Function duplicateItem Duplicate the specified item This function is shared between pcbnew and modedi...
Definition: edit.cpp:1641
void UndoRedoBlock(bool aBlock=true)
Function UndoRedoBlock Enables/disable undo and redo operations.
bool m_undoRedoBlocked
Is undo/redo operation currently blocked?
wxString CreateNewLibrary()
Function CreateNewLibrary prompts user for a library path, then creates a new footprint library at th...
Definition: librairi.cpp:439
void UseGalCanvas(bool aEnable) override
virtual void duplicateItems(bool aIncrement)=0
Function duplicateItems Find and duplicate the currently selected items.
Undo Redo considerations: Basically we have 3 cases New item Deleted item Modified item there is also...
Classes used in Pcbnew, CvPcb and GerbView.
void PutDataInPreviousState(PICKED_ITEMS_LIST *aList, bool aRedoCommand, bool aRebuildRatsnet=true)
Function PutDataInPreviousState Used in undo or redo command.
Definition: undo_redo.cpp:377
int GetRotationAngle() const
Function GetRotationAngle() Returns the angle used for rotate operations.
Class KIWAY is a minimalistic software bus for communications between various DLLs/DSOs (DSOs) within...
Definition: kiway.h:257
void createArray()
Function createArray Create an array of the selected item (invokes the dialogue) This function is sha...
Definition: edit.cpp:1725
Class PICKED_ITEMS_LIST is a holder to handle information on schematic or board items.
void SaveCopyInUndoList(BOARD_ITEM *aItemToCopy, UNDO_REDO_T aTypeCommand, const wxPoint &aTransformPoint=wxPoint(0, 0)) override
Function SaveCopyInUndoList Creates a new entry in undo list of commands.
Definition: undo_redo.cpp:172
int m_rotationAngle
User defined rotation angle (in tenths of a degree).
Common, abstract interface for edit frames.
Class BOARD holds information pertinent to a Pcbnew printed circuit board.
Definition: class_board.h:169
virtual void SetBoard(BOARD *aBoard) override
void RestoreCopyFromRedoList(wxCommandEvent &aEvent)
Function RestoreCopyFromRedoList Redo the last edition:
Definition: undo_redo.cpp:348
virtual BOARD_ITEM_CONTAINER * GetModel() const =0
Function GetModel()
Abstract interface for BOARD_ITEMs capable of storing other items inside.
void SetRotationAngle(int aRotationAngle)
Function SetRotationAngle() Sets the angle used for rotate operations.
class PCB_BASE_FRAME basic PCB main window class for Pcbnew, Gerbview, and CvPcb footprint viewer...
bool UndoRedoBlocked() const
Function UndoRedoBlocked Checks if the undo and redo operations are currently blocked.