KiCad PCB EDA Suite
Loading...
Searching...
No Matches
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 * Copyright (C) 2020-2023 KiCad Developers, see AUTHORS.txt for contributors.
6 *
7 * @author Maciej Suminski <[email protected]>
8 *
9 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License
11 * as published by the Free Software Foundation; either version 2
12 * of the License, or (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, you may find one here:
21 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
22 * or you may search the http://www.gnu.org website for the version 2 license,
23 * or you may write to the Free Software Foundation, Inc.,
24 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
25 */
26
27#ifndef BASE_EDIT_FRAME_H
28#define BASE_EDIT_FRAME_H
29
30#include <pcb_base_frame.h>
31
36class PCB_TEXTBOX;
37class PCB_TEXT;
38class PCB_SHAPE;
39
44{
45public:
46 PCB_BASE_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent, FRAME_T aFrameType,
47 const wxString& aTitle, const wxPoint& aPos, const wxSize& aSize,
48 long aStyle, const wxString& aFrameName );
49
50 virtual ~PCB_BASE_EDIT_FRAME();
51
52 bool TryBefore( wxEvent& aEvent ) override;
53
54 void doCloseWindow() override;
55
67 wxString CreateNewLibrary( const wxString& aLibName = wxEmptyString,
68 const wxString& aProposedName = wxEmptyString );
69
70 wxString CreateNewProjectLibrary( const wxString& aLibName = wxEmptyString,
71 const wxString& aProposedName = wxEmptyString );
72
79 bool AddLibrary( const wxString& aLibName = wxEmptyString, FP_LIB_TABLE* aTable = nullptr );
80
87 virtual void OnEditItemRequest( BOARD_ITEM* aItem ) = 0;
88
97 void SaveCopyInUndoList( EDA_ITEM* aItemToCopy, UNDO_REDO aTypeCommand ) override;
98
107 void SaveCopyInUndoList( const PICKED_ITEMS_LIST& aItemsList, UNDO_REDO aCommandType ) override;
108
112 void AppendCopyToUndoList( const PICKED_ITEMS_LIST& aItemsList,
113 UNDO_REDO aCommandType ) override;
114
120 void RestoreCopyFromRedoList( wxCommandEvent& aEvent );
121
127 void RestoreCopyFromUndoList( wxCommandEvent& aEvent );
128
133 void RollbackFromUndo();
134
143
147 bool UndoRedoBlocked() const
148 {
149 return m_undoRedoBlocked;
150 }
151
155 void UndoRedoBlock( bool aBlock = true )
156 {
157 m_undoRedoBlocked = aBlock;
158 }
159
165 void SetGridVisibility( bool aVisible ) override;
166
167 void SetObjectVisible( GAL_LAYER_ID aLayer, bool aVisible = true );
168
172 virtual EDA_ANGLE GetRotationAngle() const;
173
177 //void SetRotationAngle( EDA_ANGLE aRotationAngle );
178
179 void ShowBitmapPropertiesDialog( BOARD_ITEM* aBitmap );
180 void ShowTextPropertiesDialog( PCB_TEXT* aText );
183
185 void ActivateGalCanvas() override;
186
188 virtual void SetBoard( BOARD* aBoard, PROGRESS_REPORTER* aReporter = nullptr ) override;
189
190 COLOR_SETTINGS* GetColorSettings( bool aForceRefresh = false ) const override;
191
192 /* full undo redo management : */
193
194 // use EDA_BASE_FRAME::ClearUndoRedoList()
195 // use EDA_BASE_FRAME::PushCommandToUndoList( PICKED_ITEMS_LIST* aItem )
196 // use EDA_BASE_FRAME::PushCommandToRedoList( PICKED_ITEMS_LIST* aItem )
197
209 void ClearUndoORRedoList( UNDO_REDO_LIST whichList, int aItemCount = -1 ) override;
210
212
219 wxString GetDesignRulesPath();
220
222
224
225 void UpdateProperties();
226
227 void ToggleProperties();
228
229 void GetContextualTextVars( BOARD_ITEM* aSourceItem, const wxString& aCrossRef,
230 wxArrayString* aTokens );
231
232protected:
238 FP_LIB_TABLE* selectLibTable( bool aOptional = false );
239
244 wxString createNewLibrary( const wxString& aLibName, const wxString& aProposedName,
245 FP_LIB_TABLE* aTable );
246
247 void handleActivateEvent( wxActivateEvent& aEvent ) override;
248
249 void saveCopyInUndoList( PICKED_ITEMS_LIST* commandToUndo, const PICKED_ITEMS_LIST& aItemsList,
250 UNDO_REDO aCommandType );
251
252 void unitsChangeRefresh() override;
253
254 virtual void onDarkModeToggle();
255
256protected:
258
262
263 wxAuiNotebook* m_tabbedPanel;
264
267};
268
269#endif
Abstract interface for BOARD_ITEMs capable of storing other items inside.
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
Definition: board_item.h:71
Information pertinent to a Pcbnew printed circuit board.
Definition: board.h:270
Color settings are a bit different than most of the settings objects in that there can be more than o...
UNDO_REDO_LIST
Specifies whether we are interacting with the undo or redo stacks.
A base class for most all the KiCad significant classes used in schematics and boards.
Definition: eda_item.h:85
A minimalistic software bus for communications between various DLLs/DSOs (DSOs) within the same KiCad...
Definition: kiway.h:279
Common, abstract interface for edit frames.
bool AddLibrary(const wxString &aLibName=wxEmptyString, FP_LIB_TABLE *aTable=nullptr)
Add an existing library to either the global or project library table.
void ClearUndoORRedoList(UNDO_REDO_LIST whichList, int aItemCount=-1) override
Free the undo or redo list from List element.
Definition: undo_redo.cpp:594
COLOR_SETTINGS * GetColorSettings(bool aForceRefresh=false) const override
Helper to retrieve the current color settings.
void RestoreCopyFromUndoList(wxCommandEvent &aEvent)
Undo the last edit:
Definition: undo_redo.cpp:313
wxString GetDesignRulesPath()
Return the absolute path to the design rules file for the currently-loaded board.
void saveCopyInUndoList(PICKED_ITEMS_LIST *commandToUndo, const PICKED_ITEMS_LIST &aItemsList, UNDO_REDO aCommandType)
Definition: undo_redo.cpp:155
void AppendCopyToUndoList(const PICKED_ITEMS_LIST &aItemsList, UNDO_REDO aCommandType) override
As SaveCopyInUndoList, but appends the changes to the last undo item on the stack.
Definition: undo_redo.cpp:301
bool m_darkMode
Panel with Layers and Object Inspector tabs.
wxString CreateNewLibrary(const wxString &aLibName=wxEmptyString, const wxString &aProposedName=wxEmptyString)
If a library name is given, creates a new footprint library in the project folder with the given name...
void doCloseWindow() override
void SaveCopyInUndoList(EDA_ITEM *aItemToCopy, UNDO_REDO aTypeCommand) override
Create a new entry in undo list of commands.
Definition: undo_redo.cpp:282
void ClearListAndDeleteItems(PICKED_ITEMS_LIST *aList)
Definition: undo_redo.cpp:618
void SetGridVisibility(bool aVisible) override
Override this function in the PCB_BASE_EDIT_FRAME to refill the layer widget.
virtual EDA_ANGLE GetRotationAngle() const
Return the angle used for rotate operations.
int ShowTextBoxPropertiesDialog(PCB_TEXTBOX *aTextBox)
virtual void OnEditItemRequest(BOARD_ITEM *aItem)=0
Install the corresponding dialog editor for the given item.
void unitsChangeRefresh() override
Called when when the units setting has changed to allow for any derived classes to handle refreshing ...
void RollbackFromUndo()
Perform an undo of the last edit without logging a corresponding redo.
Definition: undo_redo.cpp:628
bool TryBefore(wxEvent &aEvent) override
bool UndoRedoBlocked() const
Check if the undo and redo operations are currently blocked.
PROPERTIES_PANEL * GetPropertiesPanel()
virtual void SetBoard(BOARD *aBoard, PROGRESS_REPORTER *aReporter=nullptr) override
Set the #m_Pcb member in such as way as to ensure deleting any previous BOARD.
APPEARANCE_CONTROLS * GetAppearancePanel()
void PutDataInPreviousState(PICKED_ITEMS_LIST *aList)
Used in undo or redo command.
Definition: undo_redo.cpp:373
wxString createNewLibrary(const wxString &aLibName, const wxString &aProposedName, FP_LIB_TABLE *aTable)
Create a new library in the given table (presumed to be either the global or project library table).
void RestoreCopyFromRedoList(wxCommandEvent &aEvent)
Redo the last edit:
Definition: undo_redo.cpp:343
APPEARANCE_CONTROLS * m_appearancePanel
wxAuiNotebook * m_tabbedPanel
void SetObjectVisible(GAL_LAYER_ID aLayer, bool aVisible=true)
PANEL_SELECTION_FILTER * m_selectionFilterPanel
wxString CreateNewProjectLibrary(const wxString &aLibName=wxEmptyString, const wxString &aProposedName=wxEmptyString)
void GetContextualTextVars(BOARD_ITEM *aSourceItem, const wxString &aCrossRef, wxArrayString *aTokens)
FP_LIB_TABLE * selectLibTable(bool aOptional=false)
Prompts a user to select global or project library tables.
void handleActivateEvent(wxActivateEvent &aEvent) override
Handle a window activation event.
void ShowBitmapPropertiesDialog(BOARD_ITEM *aBitmap)
Set the angle used for rotate operations.
PROPERTIES_PANEL * m_propertiesPanel
void UndoRedoBlock(bool aBlock=true)
Enable/disable undo and redo operations.
virtual void onDarkModeToggle()
void ShowGraphicItemPropertiesDialog(PCB_SHAPE *aShape)
void ActivateGalCanvas() override
Set the #m_Pcb member in such as way as to ensure deleting any previous BOARD.
Base PCB main window class for Pcbnew, Gerbview, and CvPcb footprint viewer.
A holder to handle information on schematic or board items.
A progress reporter interface for use in multi-threaded environments.
FRAME_T
The set of EDA_BASE_FRAME derivatives, typically stored in EDA_BASE_FRAME::m_Ident.
Definition: frame_type.h:33
GAL_LAYER_ID
GAL layers are "virtual" layers, i.e.
Definition: layer_ids.h:190
UNDO_REDO
Undo Redo considerations: Basically we have 3 cases New item Deleted item Modified item there is also...