KiCad PCB EDA Suite
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
5  * Copyright (C) 2008 Wayne Stambaugh <>
6  * Copyright (C) 2004-2017 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
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  *
21  * or you may search the 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  */
27 #ifndef LIB_VIEW_FRAME_H__
29 #define LIB_VIEW_FRAME_H__
31 #include <sch_base_frame.h>
32 #include <sch_screen.h>
34 class wxListBox;
36 class LIB_ALIAS;
37 class LIB_PART;
45 {
46 public:
56  LIB_VIEW_FRAME( KIWAY* aKiway, wxWindow* aParent,
57  FRAME_T aFrameType, const wxString& aLibraryName = wxEmptyString );
68  bool ShowModal( wxString* aSymbol, wxWindow* aParent ) override;
70  void OnSize( wxSizeEvent& event ) override;
78  bool ReCreateListLib();
86  bool ReCreateListCmp();
87  void DisplayLibInfos();
88  void RedrawActiveWindow( wxDC* DC, bool EraseBg ) override;
89  void OnCloseWindow( wxCloseEvent& Event );
90  void CloseLibraryViewer( wxCommandEvent& event );
91  void ReCreateHToolbar() override;
92  void ReCreateVToolbar() override;
93  void ReCreateMenuBar() override;
95  void OnLeftClick( wxDC* DC, const wxPoint& MousePos ) override;
96  double BestZoom() override;
97  void ClickOnLibList( wxCommandEvent& event );
98  void ClickOnCmpList( wxCommandEvent& event );
99  void OnSetRelativeOffset( wxCommandEvent& event );
100  void OnSelectSymbol( wxCommandEvent& aEvent );
101  void OnShowElectricalType( wxCommandEvent& event );
103  bool GeneralControl( wxDC* aDC, const wxPoint& aPosition, EDA_KEY aHotKey ) override;
106  EDA_HOTKEY* GetHotKeyDescription( int aCommand ) const override;
116  bool OnHotKey( wxDC* aDC, int aHotKey, const wxPoint& aPosition, EDA_ITEM* aItem ) override;
118  void LoadSettings( wxConfigBase* aCfg ) override;
119  void SaveSettings( wxConfigBase* aCfg ) override;
128  void SetFilter( const SCHLIB_FILTER* aFilter );
135  void SetSelectedLibrary( const wxString& aLibName );
142  void SetSelectedComponent( const wxString& aComponentName );
144  // Accessors:
151  void SetUnitAndConvert( int aUnit, int aConvert );
152  int GetUnit() const { return m_unit; }
153  int GetConvert() const { return m_convert; }
156  void SetShowElectricalType( bool aShow ) { m_showPinElectricalTypeName = aShow; }
158  const BOX2I GetDocumentExtents() const override;
160 private:
165  virtual void OnActivate( wxActivateEvent& event ) override;
171  void ExportToSchematicLibraryPart( wxCommandEvent& event );
172  bool OnRightClick( const wxPoint& MousePos, wxMenu* PopMenu ) override;
173  void DClickOnCmpList( wxCommandEvent& event );
175  void onUpdateAltBodyStyleButton( wxUpdateUIEvent& aEvent );
176  void onUpdateNormalBodyStyleButton( wxUpdateUIEvent& aEvent );
177  void onUpdateDocButton( wxUpdateUIEvent& aEvent );
178  void OnUpdateElectricalType( wxUpdateUIEvent& aEvent );
179  void onUpdateUnitChoice( wxUpdateUIEvent& aEvent );
180  void onSelectNextSymbol( wxCommandEvent& aEvent );
181  void onSelectPreviousSymbol( wxCommandEvent& aEvent );
182  void onViewSymbolDocument( wxCommandEvent& aEvent );
183  void onSelectSymbolBodyStyle( wxCommandEvent& aEvent );
184  void onSelectSymbolUnit( wxCommandEvent& aEvent );
186  LIB_ALIAS* getSelectedAlias() const;
187  LIB_PART* getSelectedSymbol() const;
188  void updatePreviewSymbol();
190 // Private members:
191  wxChoice* m_unitChoice;
193  // List of libraries (for selection )
194  wxListBox* m_libList; // The list of libs
195  int m_libListWidth; // Last width of the window
197  // List of components in the selected library
198  wxListBox* m_cmpList; // The list of components
199  int m_cmpListWidth; // Last width of the window
201  // Filters to build list of libs/list of parts
203  wxArrayString m_allowedLibs;
205  // TODO(hzeller): looks like these members were chosen to be static to survive different
206  // instances of this browser and communicate it to the next instance. This looks like an
207  // ugly hack, and should be solved differently.
208  static wxString m_libraryName;
210  static wxString m_entryName;
212  static int m_unit;
213  static int m_convert;
229 };
231 #endif // LIB_VIEW_FRAME_H__
static int m_unit
static int m_convert
void SetFilter(const SCHLIB_FILTER *aFilter)
Set a filter to display only libraries and/or components which match the filter.
static wxString m_entryName
Part library alias object definition.
Hold a record identifying a symbol library accessed by the appropriate symbol library SCH_PLUGIN obje...
void SetUnitAndConvert(int aUnit, int aConvert)
Set unit and convert, and set flag preventing them from automatically resetting to 1.
bool m_selection_changed
Updated to true if a list rewrite on GUI activation resulted in the component selection changing,...
bool ShowModal(wxString *aSymbol, wxWindow *aParent) override
Function ShowModal.
bool GeneralControl(wxDC *aDC, const wxPoint &aPosition, EDA_KEY aHotKey) override
Perform application specific control using aDC at aPosition in logical units.
virtual void OnActivate(wxActivateEvent &event) override
Called when the frame is activated to reload the libraries and component lists that can be changed by...
LIB_ALIAS * m_previewItem
Enum FRAME_T is the set of EDA_BASE_FRAME derivatives, typically stored in EDA_BASE_FRAME::m_Ident.
Definition: frame_type.h:34
bool OnRightClick(const wxPoint &MousePos, wxMenu *PopMenu) override
Definition: viewlibs.cpp:177
EDA_HOTKEY * GetHotKeyDescription(int aCommand) const override
void onSelectPreviousSymbol(wxCommandEvent &aEvent)
Definition: viewlibs.cpp:104
void OnCloseWindow(wxCloseEvent &Event)
int GetUnit() const
void SetShowElectricalType(bool aShow)
void OnLeftClick(wxDC *DC, const wxPoint &MousePos) override
Definition: viewlibs.cpp:172
wxListBox * m_cmpList
wxArrayString m_allowedLibs
static wxString m_libraryName
void SetSelectedComponent(const wxString &aComponentName)
Set the selected component.
Symbol library viewer main window.
Definition: viewlib_frame.h:44
int GetConvert() const
void onUpdateAltBodyStyleButton(wxUpdateUIEvent &aEvent)
void OnSelectSymbol(wxCommandEvent &aEvent)
Definition: viewlibs.cpp:45
void onViewSymbolDocument(wxCommandEvent &aEvent)
Definition: viewlibs.cpp:126
bool m_showPinElectricalTypeName
the option to show the pin electrical name in the component editor
LIB_VIEW_FRAME(KIWAY *aKiway, wxWindow *aParent, FRAME_T aFrameType, const wxString &aLibraryName=wxEmptyString)
void ReCreateMenuBar() override
Function ReCreateMenuBar Creates recreates the menu bar.
LIB_PART * getSelectedSymbol() const
void onUpdateUnitChoice(wxUpdateUIEvent &aEvent)
void CloseLibraryViewer(wxCommandEvent &event)
bool OnHotKey(wxDC *aDC, int aHotKey, const wxPoint &aPosition, EDA_ITEM *aItem) override
Handle hot key events.
void RedrawActiveWindow(wxDC *DC, bool EraseBg) override
Definition: viewlibs.cpp:196
void onSelectSymbolBodyStyle(wxCommandEvent &aEvent)
Definition: viewlibs.cpp:139
Define a library symbol object.
void ReCreateHToolbar() override
Class KIWAY is a minimalistic software bus for communications between various DLLs/DSOs (DSOs) within...
Definition: kiway.h:258
uint32_t EDA_KEY
Definition: common.h:74
void OnSetRelativeOffset(wxCommandEvent &event)
const BOX2I GetDocumentExtents() const override
bool ReCreateListCmp()
Create or recreate the list of components in the currently selected library.
bool GetShowElectricalType() const
void ExportToSchematicLibraryPart(wxCommandEvent &event)
Function ExportToSchematicLibraryPart exports the current component to schematic and close the librar...
void DisplayLibInfos()
Definition: viewlibs.cpp:183
void ClickOnLibList(wxCommandEvent &event)
Definitions for the Eeschema program SCH_SCREEN class.
void onSelectNextSymbol(wxCommandEvent &aEvent)
Definition: viewlibs.cpp:90
void updatePreviewSymbol()
void SaveSettings(wxConfigBase *aCfg) override
Function SaveSettings saves common frame parameters to a configuration data file.
class EDA_HOTKEY is a class to handle hot key commands.
Definition: hotkeys_basic.h:59
void onUpdateNormalBodyStyleButton(wxUpdateUIEvent &aEvent)
void OnUpdateElectricalType(wxUpdateUIEvent &aEvent)
wxListBox * m_libList
void LoadSettings(wxConfigBase *aCfg) override
Function LoadSettings loads common frame parameters from a configuration file.
void ClickOnCmpList(wxCommandEvent &event)
Class EDA_ITEM is a base class for most all the KiCad significant classes, used in schematics and boa...
Definition: base_struct.h:154
wxChoice * m_unitChoice
double BestZoom() override
Return the zoom level which displays the full page on screen.
void ReCreateVToolbar() override
void onSelectSymbolUnit(wxCommandEvent &aEvent)
Definition: viewlibs.cpp:159
void OnShowElectricalType(wxCommandEvent &event)
void DClickOnCmpList(wxCommandEvent &event)
bool ReCreateListLib()
Creates or recreates a sorted list of currently loaded libraries.
A shim class between EDA_DRAW_FRAME and several derived classes: LIB_EDIT_FRAME, LIB_VIEW_FRAME,...
void onUpdateDocButton(wxUpdateUIEvent &aEvent)
Definition: viewlibs.cpp:118
LIB_ALIAS * getSelectedAlias() const
void SetSelectedLibrary(const wxString &aLibName)
Set the selected library in the library window.
void OnSize(wxSizeEvent &event) override
Recalculate the size of toolbars and display panel when the frame size changes.