KiCad PCB EDA Suite
Loading...
Searching...
No Matches
pl_editor_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) 2013 CERN
5 * Copyright (C) 2016-2023 KiCad Developers, see AUTHORS.txt for contributors.
6 * @author Jean-Pierre Charras, jp.charras at wanadoo.fr
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * as published by the Free Software Foundation; either version 2
11 * of the License, or (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, you may find one here:
20 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
21 * or you may search the http://www.gnu.org website for the version 2 license,
22 * or you may write to the Free Software Foundation, Inc.,
23 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
24 */
25
26#ifndef _PL_EDITOR_FRAME_H
27#define _PL_EDITOR_FRAME_H
28
29
30#include <eda_draw_frame.h>
31#include <base_screen.h>
32#include "pl_editor_layout.h"
33#include "pl_draw_panel_gal.h"
34
35#include <memory>
36
39class DS_DATA_ITEM;
40class wxChoice;
42
43
48{
49public:
50 PL_EDITOR_FRAME( KIWAY* aKiway, wxWindow* aParent );
52
54
59
60 bool OpenProjectFiles( const std::vector<wxString>& aFileSet, int aCtl ) override;
61
67 bool LoadDrawingSheetFile( const wxString& aFullFileName );
68
74 bool SaveDrawingSheetFile( const wxString& aFullFileName );
75
81 bool InsertDrawingSheetFile( const wxString& aFullFileName );
82
88 bool IsContentModified() const override;
89
93 void OnExit( wxCommandEvent& aEvent );
94
95 bool canCloseWindow( wxCloseEvent& aCloseEvent ) override;
96 void doCloseWindow() override;
97
98 // The Tool Framework initialization
99 void setupTools();
100
101 // Virtual basic functions:
102 void ReCreateHToolbar() override;
103 void UpdateToolbarControlSizes() override;
104
105 void SetPageSettings(const PAGE_INFO&) override;
106 const PAGE_INFO& GetPageSettings () const override;
107 const VECTOR2I GetPageSizeIU() const override;
108
109 PL_DRAW_PANEL_GAL* GetCanvas() const override;
110 SELECTION& GetCurrentSelection() override;
111
112 const VECTOR2I& GetGridOrigin() const override { return m_grid_origin; }
113 void SetGridOrigin( const VECTOR2I& aPoint ) override { m_grid_origin = aPoint; }
114
120
121 const TITLE_BLOCK& GetTitleBlock() const override;
122 void SetTitleBlock( const TITLE_BLOCK& aTitleBlock ) override;
123
124 void CommonSettingsChanged( bool aEnvVarsChanged, bool aTextVarsChanged ) override;
125
126 void DisplayGridMsg() override;
127
128 void UpdateStatusBar() override;
129
133 void OnNewDrawingSheet();
134
138 void ReCreateVToolbar() override;
139
145 void ReCreateOptToolbar() override;
146
147 const PL_EDITOR_LAYOUT& GetPageLayout() const { return m_pageLayout; }
149
150 const BOX2I GetDocumentExtents( bool aIncludeAllVisible = true ) const override;
151
160 bool GetPageNumberOption() const;
161
165 void UpdateTitleAndInfo();
166
170 void UpdateMsgPanelInfo();
171
172 void LoadSettings( APP_SETTINGS_BASE* aCfg ) override;
173
174 void SaveSettings( APP_SETTINGS_BASE* aCfg ) override;
175
176 void OnSelectPage( wxCommandEvent& event );
177
182 void OnSelectCoordOriginCorner( wxCommandEvent& event );
183
187 void ToPrinter( bool doPreview );
188
189 void Files_io( wxCommandEvent& event );
190
196 virtual void PrintPage( const RENDER_SETTINGS* aSettings ) override;
197
198 void OnFileHistory( wxCommandEvent& event );
199 void OnClearFileHistory( wxCommandEvent& aEvent );
200
206 wxString GetCurrentFileName() const override;
207
211 void SetCurrentFileName( const wxString& aName );
212
216 void HardRedraw() override;
217
226 DS_DATA_ITEM* AddDrawingSheetItem( int aType );
227
231 void OnModify() override;
232
236 void SaveCopyInUndoList();
237
244
251
256 void RollbackFromUndo();
257
258 void ClearUndoORRedoList( UNDO_REDO_LIST whichList, int aItemCount = -1 ) override;
259
260protected:
262
263 void setupUIConditions() override;
264
265 void doReCreateMenuBar() override;
266
267 void DoWithAcceptedFiles() override;
268
270
271private:
272 void handleActivateEvent( wxActivateEvent& aEvent ) override;
273 void handleIconizeEvent( wxIconizeEvent& aEvent ) override;
274
275protected:
278
279private:
281
282 int m_propertiesFrameWidth; // last width (in pixels) of m_propertiesPagelayout
283
284 wxChoice* m_originSelectBox; // Corner origin choice for coordinates
285 int m_originSelectChoice; // the last choice for m_originSelectBox
286 wxChoice* m_pageSelectBox; // The page number sel'ector (page 1 or other pages
287 // useful when there are some items which are
288 wxString m_mruImagePath; // Most recently used path for placing a new image
289 // only on page 1, not on page 1
291
292 std::unique_ptr<NL_PL_EDITOR_PLUGIN> m_spaceMouse;
293};
294
295#endif /* _PL_EDITOR_FRAME_H */
BASE_SCREEN class implementation.
APP_SETTINGS_BASE is a settings class that should be derived for each standalone KiCad application.
Definition: app_settings.h:92
Drawing sheet structure type definitions.
Definition: ds_data_item.h:96
UNDO_REDO_LIST
Specifies whether we are interacting with the undo or redo stacks.
The base class for create windows for drawing purpose.
Container for all the knowledge about how graphical objects are drawn on any output surface/device.
A minimalistic software bus for communications between various DLLs/DSOs (DSOs) within the same KiCad...
Definition: kiway.h:284
The class that implements the public interface to the SpaceMouse plug-in.
Describe the page size and margins of a paper page on which to eventually print or plot.
Definition: page_info.h:59
The main window used in the drawing sheet editor.
void ShowDesignInspector()
Show the dialog displaying the list of DS_DATA_ITEM items in the page layout.
bool OpenProjectFiles(const std::vector< wxString > &aFileSet, int aCtl) override
Open a project or set of files given by aFileList.
void OnNewDrawingSheet()
Must be called to initialize parameters when a new drawing sheet is loaded.
std::unique_ptr< NL_PL_EDITOR_PLUGIN > m_spaceMouse
void OnModify() override
Must be called after a change in order to set the "modify" flag.
void SetCurrentFileName(const wxString &aName)
Store the current layout description file filename.
bool IsContentModified() const override
Get if the drawing sheet has been modified but not saved.
void Files_io(wxCommandEvent &event)
void GetLayoutFromRedoList()
Redo the last edit:
PL_EDITOR_LAYOUT & GetPageLayout()
void ToPrinter(bool doPreview)
Open a dialog frame to print layers.
void ReCreateOptToolbar() override
Create or update the left vertical toolbar.
void UpdateMsgPanelInfo()
Display the size of the sheet to the message panel.
const BOX2I GetDocumentExtents(bool aIncludeAllVisible=true) const override
Returns bbox of document with option to not include some items.
wxString m_mruImagePath
void doCloseWindow() override
VECTOR2I ReturnCoordOriginCorner() const
Calculate the position (in page, in iu) of the corner used as coordinate origin of items.
void OnClearFileHistory(wxCommandEvent &aEvent)
void SetPageSettings(const PAGE_INFO &) override
DS_DATA_ITEM * AddDrawingSheetItem(int aType)
Add a new item to the drawing sheet item list.
wxString GetCurrentFileName() const override
void GetLayoutFromUndoList()
Undo the last edit:
void doReCreateMenuBar() override
bool canCloseWindow(wxCloseEvent &aCloseEvent) override
void OnFileHistory(wxCommandEvent &event)
VECTOR2I m_grid_origin
void UpdateStatusBar() override
Update the status bar information.
void SetGridOrigin(const VECTOR2I &aPoint) override
void OnSelectPage(wxCommandEvent &event)
void RollbackFromUndo()
Apply the last command in Undo List without stacking a Redo.
const TITLE_BLOCK & GetTitleBlock() const override
void DoWithAcceptedFiles() override
Execute action on accepted dropped file.
void UpdateTitleAndInfo()
Display the short filename (if exists) loaded file on the caption of the main window.
const VECTOR2I GetPageSizeIU() const override
Works off of GetPageSettings() to return the size of the paper page in the internal units of this par...
virtual void PrintPage(const RENDER_SETTINGS *aSettings) override
Print a page.
void OnSelectCoordOriginCorner(wxCommandEvent &event)
Called when the user select one of the 4 page corner as corner reference (or the left top paper corne...
void handleActivateEvent(wxActivateEvent &aEvent) override
Handle a window activation event.
void LoadSettings(APP_SETTINGS_BASE *aCfg) override
Load common frame parameters from a configuration file.
bool SaveDrawingSheetFile(const wxString &aFullFileName)
Save the current layout in a .kicad_wks drawing sheet file.
void ReCreateHToolbar() override
SELECTION & GetCurrentSelection() override
Get the current selection from the canvas area.
PL_EDITOR_LAYOUT m_pageLayout
bool InsertDrawingSheetFile(const wxString &aFullFileName)
Load a .kicad_wks drawing sheet file, and add items to the current layout list.
void SaveCopyInUndoList()
Save a copy of the description (in a S expr string) for Undo/redo commands.
bool GetPageNumberOption() const
Drawing sheet editor can show the title block using a page number 1 or another number.
void UpdateToolbarControlSizes() override
Update the sizes of any controls in the toolbars of the frame.
void CommonSettingsChanged(bool aEnvVarsChanged, bool aTextVarsChanged) override
Notification event that some of the common (suite-wide) settings have changed.
void handleIconizeEvent(wxIconizeEvent &aEvent) override
Handle a window iconize event.
void HardRedraw() override
Refresh the library tree and redraw the window.
void DisplayGridMsg() override
Display current grid size in the status bar.
void SaveSettings(APP_SETTINGS_BASE *aCfg) override
Save common frame parameters to a configuration data file.
PROPERTIES_FRAME * GetPropertiesFrame()
wxChoice * m_originSelectBox
const PAGE_INFO & GetPageSettings() const override
const PL_EDITOR_LAYOUT & GetPageLayout() const
void setupUIConditions() override
Setup the UI conditions for the various actions and their controls in this frame.
PROPERTIES_FRAME * m_propertiesPagelayout
The last filename chosen to be proposed to the user.
wxChoice * m_pageSelectBox
PL_DRAW_PANEL_GAL * GetCanvas() const override
Return a pointer to GAL-based canvas of given EDA draw frame.
void ClearUndoORRedoList(UNDO_REDO_LIST whichList, int aItemCount=-1) override
Remove the aItemCount of old commands from aList and delete commands, pickers and picked items if nee...
void ReCreateVToolbar() override
Create or update the right vertical toolbar.
const VECTOR2I & GetGridOrigin() const override
Return the absolute coordinates of the origin of the snap grid.
void SetTitleBlock(const TITLE_BLOCK &aTitleBlock) override
void OnExit(wxCommandEvent &aEvent)
Event handler for the wxID_EXIT and wxID_CLOSE events.
bool LoadDrawingSheetFile(const wxString &aFullFileName)
Load a .kicad_wks drawing sheet file.
PROPERTIES_FRAME display properties of the current item.
Hold the information shown in the lower right corner of a plot, printout, or editing view.
Definition: title_block.h:41