KiCad PCB EDA Suite
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
symbol_viewer_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) 2016 Jean-Pierre Charras, jp.charras at wanadoo.fr
5 * Copyright (C) 2008 Wayne Stambaugh <stambaughw@gmail.com>
6 * Copyright The KiCad Developers, see AUTHORS.txt for contributors.
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
27#ifndef LIB_VIEW_FRAME_H__
28#define LIB_VIEW_FRAME_H__
29
30#include <sch_base_frame.h>
31#include <sch_screen.h>
32#include <tool/selection.h>
33
34class WX_LISTBOX;
35class wxSearchCtrl;
37class LIB_SYMBOL;
39
40
45{
46public:
47
54 SYMBOL_VIEWER_FRAME( KIWAY* aKiway, wxWindow* aParent );
55
57
58 void OnSize( wxSizeEvent& event ) override;
59
66 bool ReCreateLibList();
67
74 bool ReCreateSymbolList();
75
76 void DisplayLibInfos();
77 void doCloseWindow() override;
78 void CloseLibraryViewer( wxCommandEvent& event );
79
80 void ClickOnLibList( wxCommandEvent& event );
81 void ClickOnSymbolList( wxCommandEvent& event );
82
83 void LoadSettings( APP_SETTINGS_BASE* aCfg ) override;
84 void SaveSettings( APP_SETTINGS_BASE* aCfg ) override;
85
87
88 void CommonSettingsChanged( int aFlags ) override;
89
93 void SetSelectedLibrary( const wxString& aLibName,
94 const wxString& aSubLibName = wxEmptyString );
95
99 void SetSelectedSymbol( const wxString& aSymbolName );
100
101 // Accessors:
108 void SetUnitAndBodyStyle( int aUnit, int aBodyStyle );
109 int GetUnit() const { return m_unit; }
110 int GetBodyStyle() const { return m_bodyStyle; }
111
113
114 const BOX2I GetDocumentExtents( bool aIncludeAllVisible = true ) const override;
115
116 SELECTION& GetCurrentSelection() override;
117
118 void KiwayMailIn( KIWAY_EXPRESS& mail ) override;
119
120protected:
121 void configureToolbars() override;
122
123 void setupUIConditions() override;
124
125 void doReCreateMenuBar() override;
126
127private:
128 // Set up the tool framework.
129 void setupTools();
130
135 void OnActivate( wxActivateEvent& event );
136
137 void DClickOnSymbolList( wxCommandEvent& event );
138
139 void onUpdateUnitChoice( wxUpdateUIEvent& aEvent );
140
141 void OnLibFilter( wxCommandEvent& aEvent );
142 void OnSymFilter( wxCommandEvent& aEvent );
143 void OnCharHook( wxKeyEvent& aEvent ) override;
144
145 void onSelectNextSymbol( wxCommandEvent& aEvent );
146 void onSelectPreviousSymbol( wxCommandEvent& aEvent );
147 void onSelectSymbolUnit( wxCommandEvent& aEvent );
148
149 void updatePreviewSymbol();
150
151 void loadAllLibraries();
152
153private:
154 wxChoice* m_unitChoice;
155
156 wxSearchCtrl* m_libFilter;
157 WX_LISTBOX* m_libList; // The list of libraries.
158 int m_libListWidth; // Last width of the window.
159
160 wxSearchCtrl* m_symbolFilter;
161 WX_LISTBOX* m_symbolList; // The list of symbols.
162 int m_symbolListWidth; // Last width of the window.
163
164 // Filters to build list of libs/list of symbols.
166 wxArrayString m_allowedLibs;
167
169
170 static int m_unit;
171 static int m_bodyStyle;
172 static bool m_show_progress;
173
179
180 std::unique_ptr<LIB_SYMBOL> m_previewItem;
181
182 DECLARE_EVENT_TABLE()
183};
184
185#endif // LIB_VIEW_FRAME_H__
186
APP_SETTINGS_BASE is a settings class that should be derived for each standalone KiCad application.
Definition: app_settings.h:92
Carry a payload from one KIWAY_PLAYER to another within a PROJECT.
Definition: kiway_express.h:40
A minimalistic software bus for communications between various DLLs/DSOs (DSOs) within the same KiCad...
Definition: kiway.h:285
A logical library item identifier and consists of various portions much like a URI.
Definition: lib_id.h:49
Define a library symbol object.
Definition: lib_symbol.h:85
A shim class between EDA_DRAW_FRAME and several derived classes: SYMBOL_EDIT_FRAME,...
Helper object to filter a list of libraries.
Hold a record identifying a symbol library accessed by the appropriate symbol library SCH_IO object i...
Symbol library viewer main window.
void OnLibFilter(wxCommandEvent &aEvent)
std::unique_ptr< LIB_SYMBOL > m_previewItem
void CloseLibraryViewer(wxCommandEvent &event)
void onSelectNextSymbol(wxCommandEvent &aEvent)
wxSearchCtrl * m_libFilter
void SetSelectedLibrary(const wxString &aLibName, const wxString &aSubLibName=wxEmptyString)
Set the selected library in the library window.
void ClickOnLibList(wxCommandEvent &event)
void onUpdateUnitChoice(wxUpdateUIEvent &aEvent)
void DClickOnSymbolList(wxCommandEvent &event)
void OnActivate(wxActivateEvent &event)
Called when the frame is activated to reload the libraries and symbol lists that can be changed by th...
void OnSymFilter(wxCommandEvent &aEvent)
void setupUIConditions() override
Setup the UI conditions for the various actions and their controls in this frame.
void doCloseWindow() override
void SetSelectedSymbol(const wxString &aSymbolName)
Set the selected symbol.
void KiwayMailIn(KIWAY_EXPRESS &mail) override
Receive KIWAY_EXPRESS messages from other players.
bool ReCreateLibList()
Create o recreates a sorted list of currently loaded libraries.
SELECTION & GetCurrentSelection() override
Get the current selection from the canvas area.
void ClickOnSymbolList(wxCommandEvent &event)
const BOX2I GetDocumentExtents(bool aIncludeAllVisible=true) const override
Return bounding box of document with option to not include some items.
void SetUnitAndBodyStyle(int aUnit, int aBodyStyle)
Set unit and convert, and set flag preventing them from automatically resetting to 1.
wxSearchCtrl * m_symbolFilter
void LoadSettings(APP_SETTINGS_BASE *aCfg) override
Load common frame parameters from a configuration file.
static LIB_ID m_currentSymbol
WINDOW_SETTINGS * GetWindowSettings(APP_SETTINGS_BASE *aCfg) override
Return a pointer to the window settings for this frame.
void OnCharHook(wxKeyEvent &aEvent) override
Capture the key event before it is sent to the GUI.
LIB_SYMBOL * GetSelectedSymbol() const
void onSelectSymbolUnit(wxCommandEvent &aEvent)
void OnSize(wxSizeEvent &event) override
Recalculate the size of toolbars and display panel when the frame size changes.
void configureToolbars() override
void onSelectPreviousSymbol(wxCommandEvent &aEvent)
void SaveSettings(APP_SETTINGS_BASE *aCfg) override
Save common frame parameters to a configuration data file.
bool m_selection_changed
Updated to true if a list rewrite on GUI activation resulted in the symbol selection changing,...
bool ReCreateSymbolList()
Create or recreate the list of symbols in the currently selected library.
void CommonSettingsChanged(int aFlags) override
Notification event that some of the common (suite-wide) settings have changed.
Store the common settings that are saved and loaded for each window / frame.
Definition: app_settings.h:74