KiCad PCB EDA Suite
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-2021 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 <config_params.h>
31#include <eda_draw_frame.h>
32#include <base_screen.h>
33#include "pl_editor_layout.h"
34#include "pl_draw_panel_gal.h"
35
38class DS_DATA_ITEM;
39class wxChoice;
40
41
46{
47public:
48 PL_EDITOR_FRAME( KIWAY* aKiway, wxWindow* aParent );
50
52
57
58 bool OpenProjectFiles( const std::vector<wxString>& aFileSet, int aCtl ) override;
59
65 bool LoadDrawingSheetFile( const wxString& aFullFileName );
66
72 bool SaveDrawingSheetFile( const wxString& aFullFileName );
73
79 bool InsertDrawingSheetFile( const wxString& aFullFileName );
80
86 bool IsContentModified() const override;
87
91 void OnExit( wxCommandEvent& aEvent );
92
93 bool canCloseWindow( wxCloseEvent& aCloseEvent ) override;
94 void doCloseWindow() override;
95
96 // The Tool Framework initialization
97 void setupTools();
98
99 // Virtual basic functions:
100 void ReCreateHToolbar() override;
101 void UpdateToolbarControlSizes() override;
102
103 void SetPageSettings(const PAGE_INFO&) override;
104 const PAGE_INFO& GetPageSettings () const override;
105 const wxSize GetPageSizeIU() const override;
106
107 PL_DRAW_PANEL_GAL* GetCanvas() const override;
108 SELECTION& GetCurrentSelection() override;
109
110 const VECTOR2I& GetGridOrigin() const override { return m_grid_origin; }
111 void SetGridOrigin( const VECTOR2I& aPoint ) override { m_grid_origin = aPoint; }
112
118
119 const TITLE_BLOCK& GetTitleBlock() const override;
120 void SetTitleBlock( const TITLE_BLOCK& aTitleBlock ) override;
121
122 void CommonSettingsChanged( bool aEnvVarsChanged, bool aTextVarsChanged ) override;
123
124 void DisplayGridMsg() override;
125
126 void UpdateStatusBar() override;
127
131 void OnNewDrawingSheet();
132
136 void ReCreateVToolbar() override;
137
143 void ReCreateOptToolbar() override;
144
145 void ReCreateMenuBar() 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
191 void OnSelectTitleBlockDisplayMode( wxCommandEvent& event );
192
196 void ToPrinter( bool doPreview );
197
198 void Files_io( wxCommandEvent& event );
199
205 virtual void PrintPage( const RENDER_SETTINGS* aSettings ) override;
206
207 void OnFileHistory( wxCommandEvent& event );
208 void OnClearFileHistory( wxCommandEvent& aEvent );
209
215 wxString GetCurrentFileName() const override;
216
220 void SetCurrentFileName( const wxString& aName );
221
225 void HardRedraw() override;
226
235 DS_DATA_ITEM* AddDrawingSheetItem( int aType );
236
240 void OnModify() override
241 {
243
245 }
246
250 void SaveCopyInUndoList();
251
258
265
270 void RollbackFromUndo();
271
272 void ClearUndoORRedoList( UNDO_REDO_LIST whichList, int aItemCount = -1 ) override;
273
274protected:
276
277 void setupUIConditions() override;
278
280
283
284private:
286
287 int m_propertiesFrameWidth; // the last width (in pixels) of m_propertiesPagelayout
288
289 wxChoice* m_originSelectBox; // Corner origin choice for coordinates
290 int m_originSelectChoice; // the last choice for m_originSelectBox
291 wxChoice* m_pageSelectBox; // The page number sel'ector (page 1 or other pages
292 // useful when there are some items which are
293 wxString m_mruImagePath; // Most recently used path for placing a new image
294 // only on page 1, not on page 1
296
297 void DoWithAcceptedFiles() override;
298};
299
300#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:101
void SetContentModified(bool aModified=true)
Definition: base_screen.h:59
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.
virtual void OnModify()
Must be called after a model change in order to set the "modify" flag and do other frame-specific pro...
The base class for create windows for drawing purpose.
virtual BASE_SCREEN * GetScreen() const
Return a pointer to a BASE_SCREEN or one of its derivatives.
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:273
Describe the page size and margins of a paper page on which to eventually print or plot.
Definition: page_info.h:54
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.
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 ReCreateMenuBar() override
Recreates the menu bar.
const wxSize GetPageSizeIU() const override
Works off of GetPageSettings() to return the size of the paper page in the internal units of this par...
void ReCreateOptToolbar() override
Create or update the left vertical toolbar.
PL_EDITOR_FRAME(KIWAY *aKiway, wxWindow *aParent)
void OnSelectTitleBlockDisplayMode(wxCommandEvent &event)
Toggle the display mode between the normal mode and the editor mode: In normal mode,...
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:
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.
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 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 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