KiCad PCB EDA Suite
pcb_base_edit_frame.h
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 <maciej.suminski@cern.ch>
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
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
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  * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
20  * or you may search the http://www.gnu.org 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  */
24 
25 #ifndef BASE_EDIT_FRAME_H
26 #define BASE_EDIT_FRAME_H
27 
28 #include <pcb_base_frame.h>
29 
31 class PCB_LAYER_WIDGET;
32 
37 {
38 public:
39  PCB_BASE_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent, FRAME_T aFrameType,
40  const wxString& aTitle, const wxPoint& aPos, const wxSize& aSize,
41  long aStyle, const wxString& aFrameName );
42 
43  virtual ~PCB_BASE_EDIT_FRAME();
44 
49  virtual BOARD_ITEM_CONTAINER* GetModel() const = 0;
50 
62  wxString CreateNewLibrary(const wxString& aLibName = wxEmptyString);
63 
70  bool AddLibrary(const wxString& aLibName = wxEmptyString);
71 
78  virtual void OnEditItemRequest( BOARD_ITEM* aItem ) = 0;
79 
80  // Undo buffer handling
81 
91  void SaveCopyInUndoList( BOARD_ITEM* aItemToCopy, UNDO_REDO_T aTypeCommand,
92  const wxPoint& aTransformPoint = wxPoint( 0, 0 ) ) override;
93 
103  void SaveCopyInUndoList( const PICKED_ITEMS_LIST& aItemsList, UNDO_REDO_T aTypeCommand,
104  const wxPoint& aTransformPoint = wxPoint( 0, 0 ) ) override;
105 
113  void RestoreCopyFromRedoList( wxCommandEvent& aEvent );
114 
122  void RestoreCopyFromUndoList( wxCommandEvent& aEvent );
123 
128  void RollbackFromUndo();
129 
140  bool aRedoCommand,
141  bool aRebuildRatsnet = true );
142 
147  bool UndoRedoBlocked() const
148  {
149  return m_undoRedoBlocked;
150  }
151 
156  void UndoRedoBlock( bool aBlock = true )
157  {
158  m_undoRedoBlocked = aBlock;
159  }
160 
168  void SetGridVisibility( bool aVisible ) override;
169 
174  int GetRotationAngle() const { return m_rotationAngle; }
175 
180  void SetRotationAngle( int aRotationAngle );
181 
182  void InstallTextOptionsFrame( BOARD_ITEM* aText );
184 
186  void ActivateGalCanvas() override;
187 
189  virtual void SetBoard( BOARD* aBoard ) override;
190 
191  void OnGridSettings( wxCommandEvent& aEvent ) override;
192 
193 protected:
196 
199 
200  void unitsChangeRefresh() override;
201 
204 };
205 
206 #endif
void RollbackFromUndo()
Performs an undo of the last edit WITHOUT logging a corresponding redo.
Definition: undo_redo.cpp:606
void RestoreCopyFromUndoList(wxCommandEvent &aEvent)
Function RestoreCopyFromUndoList Undo the last edit:
Definition: undo_redo.cpp:332
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)
void ActivateGalCanvas() override
Class BOARD_ITEM is a base class for any item which can be embedded within the BOARD container class,...
Class PCB_LAYER_WIDGET is here to implement the abstract functions of LAYER_WIDGET so they may be tie...
FRAME_T
Enum FRAME_T is the set of EDA_BASE_FRAME derivatives, typically stored in EDA_BASE_FRAME::m_Ident.
Definition: frame_type.h:34
UNDO_REDO_T
Undo Redo considerations: Basically we have 3 cases New item Deleted item Modified item there is also...
virtual void OnEditItemRequest(BOARD_ITEM *aItem)=0
Function OnEditItemRequest Install the corresponding dialog editor for the given item.
void InstallGraphicItemPropertiesDialog(BOARD_ITEM *aItem)
void UndoRedoBlock(bool aBlock=true)
Function UndoRedoBlock Enables/disable undo and redo operations.
void InstallTextOptionsFrame(BOARD_ITEM *aText)
Routine for main window class to launch text properties dialog.
bool m_undoRedoBlocked
Is undo/redo operation currently blocked?
void unitsChangeRefresh() override
Called when when the units setting has changed to allow for any derived classes to handle refreshing ...
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:390
bool AddLibrary(const wxString &aLibName=wxEmptyString)
Function AddLibrary Add an existing library to either the global or project library table.
PCB_LAYER_WIDGET * m_Layers
Layer manager. It is the responsibility of the child frames to instantiate this.
Class KIWAY is a minimalistic software bus for communications between various DLLs/DSOs (DSOs) within...
Definition: kiway.h:274
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:182
bool UndoRedoBlocked() const
Function UndoRedoBlocked Checks if the undo and redo operations are currently blocked.
int m_rotationAngle
User defined rotation angle (in tenths of a degree).
wxString CreateNewLibrary(const wxString &aLibName=wxEmptyString)
Function CreateNewLibrary If a library name is given, creates a new footprint library in the project ...
int GetRotationAngle() const
Function GetRotationAngle() Returns the angle used for rotate operations.
void SetGridVisibility(bool aVisible) override
Function SetGridVisibility()
Common, abstract interface for edit frames.
Class BOARD holds information pertinent to a Pcbnew printed circuit board.
Definition: class_board.h:161
virtual void SetBoard(BOARD *aBoard) override
void RestoreCopyFromRedoList(wxCommandEvent &aEvent)
Function RestoreCopyFromRedoList Redo the last edit:
Definition: undo_redo.cpp:361
virtual BOARD_ITEM_CONTAINER * GetModel() const =0
Function GetModel()
void OnGridSettings(wxCommandEvent &aEvent) override
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.