KiCad PCB EDA Suite
panel_sym_lib_table.cpp File Reference
#include <set>
#include <wx/regex.h>
#include <fctsys.h>
#include <project.h>
#include <panel_sym_lib_table.h>
#include <lib_id.h>
#include <symbol_lib_table.h>
#include <lib_table_lexer.h>
#include <grid_tricks.h>
#include <widgets/wx_grid.h>
#include <confirm.h>
#include <bitmaps.h>
#include <lib_table_grid.h>
#include <wildcards_and_files_ext.h>
#include <env_paths.h>
#include <lib_edit_frame.h>
#include <sch_edit_frame.h>
#include <viewlib_frame.h>
#include <kiway.h>
#include <sch_screen.h>
#include <widgets/grid_readonly_text_helpers.h>
#include <widgets/grid_text_button_helpers.h>

Go to the source code of this file.

Classes

class  SYMBOL_LIB_TABLE_GRID
 Build a wxGridTableBase by wrapping an SYMBOL_LIB_TABLE object. More...
 
class  SYMBOL_GRID_TRICKS
 

Functions

void InvokeSchEditSymbolLibTable (KIWAY *aKiway, wxWindow *aParent)
 

Function Documentation

◆ InvokeSchEditSymbolLibTable()

void InvokeSchEditSymbolLibTable ( KIWAY aKiway,
wxWindow *  aParent 
)

Definition at line 704 of file panel_sym_lib_table.cpp.

705 {
707  wxString globalTablePath = SYMBOL_LIB_TABLE::GetGlobalTableFileName();
708  SYMBOL_LIB_TABLE* projectTable = aKiway->Prj().SchSymbolLibTable();
709  wxString projectPath = aKiway->Prj().GetProjectPath();
710  wxFileName projectTableFn( projectPath, SYMBOL_LIB_TABLE::GetSymbolLibTableFileName() );
711  wxString msg;
712 
713  DIALOG_EDIT_LIBRARY_TABLES dlg( aParent, _( "Symbol Libraries" ) );
714 
715  dlg.InstallPanel( new PANEL_SYM_LIB_TABLE( &dlg, globalTable, globalTablePath,
716  projectTable, projectTableFn.GetFullPath(),
717  aKiway->Prj().GetProjectPath() ) );
718 
719  if( dlg.ShowModal() == wxID_CANCEL )
720  return;
721 
722  if( dlg.m_GlobalTableChanged )
723  {
724  try
725  {
726  globalTable->Save( globalTablePath );
727  }
728  catch( const IO_ERROR& ioe )
729  {
730  msg.Printf( _( "Error saving global library table:\n\n%s" ), ioe.What() );
731  wxMessageBox( msg, _( "File Save Error" ), wxOK | wxICON_ERROR );
732  }
733  }
734 
735  if( dlg.m_ProjectTableChanged )
736  {
737 
738  try
739  {
740  projectTable->Save( projectTableFn.GetFullPath() );
741  }
742  catch( const IO_ERROR& ioe )
743  {
744  msg.Printf( _( "Error saving project-specific library table:\n\n%s" ), ioe.What() );
745  wxMessageBox( msg, _( "File Save Error" ), wxOK | wxICON_ERROR );
746  }
747  }
748 
749  SCH_SCREENS schematic;
750 
751  schematic.UpdateSymbolLinks( true ); // Update all symbol library links for all sheets.
752 
753  SCH_EDIT_FRAME* schEditor = (SCH_EDIT_FRAME*) aKiway->Player( FRAME_SCH, false );
754 
755  if( schEditor )
756  schEditor->SyncView();
757 
758  auto editor = (LIB_EDIT_FRAME*) aKiway->Player( FRAME_SCH_LIB_EDITOR, false );
759 
760  if( editor )
761  editor->SyncLibraries( true );
762 
763  LIB_VIEW_FRAME* viewer = (LIB_VIEW_FRAME*) aKiway->Player( FRAME_SCH_VIEWER, false );
764 
765  if( viewer )
766  viewer->ReCreateListLib();
767 }
static const wxString & GetSymbolLibTableFileName()
static SYMBOL_LIB_TABLE & GetGlobalLibTable()
VTBL_ENTRY PROJECT & Prj() const
Function Prj returns the PROJECT associated with this KIWAY.
Definition: kiway.cpp:163
Schematic editor (Eeschema) main window.
VTBL_ENTRY const wxString GetProjectPath() const
Function GetProjectPath returns the full path of the project.
Definition: project.cpp:102
Symbol library viewer main window.
Definition: viewlib_frame.h:43
VTBL_ENTRY KIWAY_PLAYER * Player(FRAME_T aFrameType, bool doCreate=true, wxTopLevelWindow *aParent=NULL)
Function Player returns the KIWAY_PLAYER* given a FRAME_T.
Definition: kiway.cpp:321
virtual const wxString What() const
A composite of Problem() and Where()
Definition: exceptions.cpp:33
void SyncView()
Mark all items for refresh.
Dialog to show and edit symbol library tables.
The symbol library editor main window.
void UpdateSymbolLinks(bool aForce=false)
Initialize or reinitialize the weak reference to the LIB_PART for each SCH_COMPONENT found in the ful...
void Save(const wxString &aFileName) const
Write this library table to aFileName in s-expression form.
bool ReCreateListLib()
Creates or recreates a sorted list of currently loaded libraries.
Struct IO_ERROR is a class used to hold an error message and may be used when throwing exceptions con...
Definition: ki_exception.h:76
static wxString GetGlobalTableFileName()
Fetch the global symbol library table file name.
Container class that holds multiple SCH_SCREEN objects in a hierarchy.
Definition: sch_screen.h:493

References FRAME_SCH, FRAME_SCH_LIB_EDITOR, FRAME_SCH_VIEWER, SYMBOL_LIB_TABLE::GetGlobalLibTable(), SYMBOL_LIB_TABLE::GetGlobalTableFileName(), PROJECT::GetProjectPath(), SYMBOL_LIB_TABLE::GetSymbolLibTableFileName(), DIALOG_EDIT_LIBRARY_TABLES::InstallPanel(), DIALOG_EDIT_LIBRARY_TABLES::m_GlobalTableChanged, DIALOG_EDIT_LIBRARY_TABLES::m_ProjectTableChanged, KIWAY::Player(), KIWAY::Prj(), LIB_VIEW_FRAME::ReCreateListLib(), LIB_TABLE::Save(), SCH_BASE_FRAME::SyncView(), SCH_SCREENS::UpdateSymbolLinks(), and IO_ERROR::What().

Referenced by SCH::IFACE::CreateWindow(), and SCH_BASE_FRAME::OnEditSymbolLibTable().