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 
36 class PL_DRAW_PANEL_GAL;
37 class PROPERTIES_FRAME;
38 class DS_DATA_ITEM;
39 class wxChoice;
40 
41 
46 {
47 public:
48  PL_EDITOR_FRAME( KIWAY* aKiway, wxWindow* aParent );
50 
52 
56  void ShowDesignInspector();
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 wxPoint& GetGridOrigin() const override { return m_grid_origin; }
111  void SetGridOrigin( const wxPoint& aPoint ) override { m_grid_origin = aPoint; }
112 
117  wxPoint ReturnCoordOriginCorner() const;
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 
167  void InstallPreferences( PAGED_DIALOG* aParent, PANEL_HOTKEYS_EDITOR* aHotkeysPanel ) override;
168 
169  void LoadSettings( APP_SETTINGS_BASE* aCfg ) override;
170 
171  void SaveSettings( APP_SETTINGS_BASE* aCfg ) override;
172 
173  void OnSelectPage( wxCommandEvent& event );
174 
179  void OnSelectCoordOriginCorner( wxCommandEvent& event );
180 
188  void OnSelectTitleBlockDisplayMode( wxCommandEvent& event );
189 
193  void ToPrinter( bool doPreview );
194 
195  void Files_io( wxCommandEvent& event );
196 
202  virtual void PrintPage( const RENDER_SETTINGS* aSettings ) override;
203 
204  void OnFileHistory( wxCommandEvent& event );
205  void OnClearFileHistory( wxCommandEvent& aEvent );
206 
212  wxString GetCurrentFileName() const override;
213 
217  void SetCurrentFileName( const wxString& aName );
218 
222  void HardRedraw() override;
223 
232  DS_DATA_ITEM* AddDrawingSheetItem( int aType );
233 
237  void OnModify()
238  {
240  }
241 
245  void SaveCopyInUndoList();
246 
252  void GetLayoutFromRedoList();
253 
259  void GetLayoutFromUndoList();
260 
265  void RollbackFromUndo();
266 
267  void ClearUndoORRedoList( UNDO_REDO_LIST whichList, int aItemCount = -1 ) override;
268 
269 protected:
270  bool saveCurrentPageLayout();
271 
272  void setupUIConditions() override;
273 
275 
278 
279 private:
281 
282  int m_propertiesFrameWidth; // the 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  // only on page 1, not on page 1
289  wxPoint m_grid_origin;
290 };
291 
292 #endif /* _PL_EDITOR_FRAME_H */
void OnFileHistory(wxCommandEvent &event)
void ToPrinter(bool doPreview)
Open a dialog frame to print layers.
virtual void PrintPage(const RENDER_SETTINGS *aSettings) override
Print a page.
PROPERTIES_FRAME * GetPropertiesFrame()
void HardRedraw() override
Refresh the library tree and redraw the window.
PL_DRAW_PANEL_GAL * GetCanvas() const override
Return a pointer to GAL-based canvas of given EDA draw frame.
const PAGE_INFO & GetPageSettings() const override
void SaveSettings(APP_SETTINGS_BASE *aCfg) override
Save common frame parameters to a configuration data file.
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...
Container for all the knowledge about how graphical objects are drawn on any output surface/device.
void SetTitleBlock(const TITLE_BLOCK &aTitleBlock) override
void ReCreateVToolbar() override
Create or update the right vertical toolbar.
wxPoint ReturnCoordOriginCorner() const
Calculate the position (in page, in iu) of the corner used as coordinate origin of items.
void ReCreateMenuBar() override
Recreates the menu bar.
PROPERTIES_FRAME display properties of the current item.
The main window used in the drawing sheet editor.
void UpdateStatusBar() override
Update the status bar information.
bool canCloseWindow(wxCloseEvent &aCloseEvent) override
void OnClearFileHistory(wxCommandEvent &aEvent)
PL_EDITOR_LAYOUT & GetPageLayout()
void GetLayoutFromRedoList()
Redo the last edit:
bool SaveDrawingSheetFile(const wxString &aFullFileName)
Save the current layout in a .kicad_wks drawing sheet file.
void UpdateToolbarControlSizes() override
Update the sizes of any controls in the toolbars of the frame.
The base class for create windows for drawing purpose.
Hold the information shown in the lower right corner of a plot, printout, or editing view.
Definition: title_block.h:40
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 OnModify()
Must be called after a change in order to set the "modify" flag.
bool InsertDrawingSheetFile(const wxString &aFullFileName)
Load a .kicad_wks drawing sheet file, and add items to the current layout list.
void CommonSettingsChanged(bool aEnvVarsChanged, bool aTextVarsChanged) override
Notification event that some of the common (suite-wide) settings have changed.
wxString GetCurrentFileName() const override
void SetPageSettings(const PAGE_INFO &) override
APP_SETTINGS_BASE is a settings class that should be derived for each standalone KiCad application.
Definition: app_settings.h:99
PL_EDITOR_FRAME(KIWAY *aKiway, wxWindow *aParent)
bool OpenProjectFiles(const std::vector< wxString > &aFileSet, int aCtl) override
Open a project or set of files given by aFileList.
void OnExit(wxCommandEvent &aEvent)
Event handler for the wxID_EXIT and wxID_CLOSE events.
Describe the page size and margins of a paper page on which to eventually print or plot.
Definition: page_info.h:53
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 ShowDesignInspector()
Show the dialog displaying the list of DS_DATA_ITEM items in the page layout.
bool IsContentModified() const override
Get if the drawing sheet has been modified but not saved.
A minimalistic software bus for communications between various DLLs/DSOs (DSOs) within the same KiCad...
Definition: kiway.h:260
const TITLE_BLOCK & GetTitleBlock() const override
SELECTION & GetCurrentSelection() override
Get the current selection from the canvas area.
void doCloseWindow() override
PL_EDITOR_LAYOUT m_pageLayout
bool GetPageNumberOption() const
Drawing sheet editor can show the title block using a page number 1 or another number.
const wxPoint & GetGridOrigin() const override
Return the absolute coordinates of the origin of the snap grid.
void OnSelectPage(wxCommandEvent &event)
void InstallPreferences(PAGED_DIALOG *aParent, PANEL_HOTKEYS_EDITOR *aHotkeysPanel) override
Allow a frame to load its preference panels (if any) into the preferences dialog.
wxChoice * m_pageSelectBox
UNDO_REDO_LIST
Specifies whether we are interacting with the undo or redo stacks.
void SetContentModified(bool aModified=true)
Definition: base_screen.h:59
void SetCurrentFileName(const wxString &aName)
Store the current layout description file filename.
void LoadSettings(APP_SETTINGS_BASE *aCfg) override
Load common frame parameters from a configuration file.
void ReCreateOptToolbar() override
Create or update the left vertical toolbar.
void UpdateTitleAndInfo()
Display the short filename (if exists) loaded file on the caption of the main window.
Drawing sheet structure type definitions.
Definition: ds_data_item.h:95
PROPERTIES_FRAME * m_propertiesPagelayout
The last filename chosen to be proposed to the user.
void DisplayGridMsg() override
Display current grid size in the status bar.
void SetGridOrigin(const wxPoint &aPoint) override
void OnNewDrawingSheet()
Must be called to initialize parameters when a new drawing sheet is loaded.
void SaveCopyInUndoList()
Save a copy of the description (in a S expr string) for Undo/redo commands.
const BOX2I GetDocumentExtents(bool aIncludeAllVisible=true) const override
Returns bbox of document with option to not include some items.
void setupUIConditions() override
Setup the UI conditions for the various actions and their controls in this frame.
BASE_SCREEN class implementation.
const PL_EDITOR_LAYOUT & GetPageLayout() const
void RollbackFromUndo()
Apply the last command in Undo List without stacking a Redo.
DS_DATA_ITEM * AddDrawingSheetItem(int aType)
Add a new item to the drawing sheet item list.
virtual BASE_SCREEN * GetScreen() const
Return a pointer to a BASE_SCREEN or one of its derivatives.
void OnSelectTitleBlockDisplayMode(wxCommandEvent &event)
Toggle the display mode between the normal mode and the editor mode: In normal mode,...
void GetLayoutFromUndoList()
Undo the last edit:
void ReCreateHToolbar() override
wxChoice * m_originSelectBox
bool LoadDrawingSheetFile(const wxString &aFullFileName)
Load a .kicad_wks drawing sheet file.
void Files_io(wxCommandEvent &event)