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 <viewlib_frame.h>
#include <kiway.h>
#include <widgets/grid_readonly_text_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

void InvokeSchEditSymbolLibTable ( KIWAY aKiway,
wxWindow *  aParent 
)

Definition at line 694 of file panel_sym_lib_table.cpp.

References 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, PANEL_SYM_LIB_TABLE::PANEL_SYM_LIB_TABLE(), KIWAY::Player(), KIWAY::Prj(), LIB_VIEW_FRAME::ReCreateListLib(), LIB_TABLE::Save(), and IO_ERROR::What().

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

695 {
697  wxString globalTablePath = SYMBOL_LIB_TABLE::GetGlobalTableFileName();
698  SYMBOL_LIB_TABLE* projectTable = aKiway->Prj().SchSymbolLibTable();
699  wxString projectPath = aKiway->Prj().GetProjectPath();
700  wxFileName projectTableFn( projectPath, SYMBOL_LIB_TABLE::GetSymbolLibTableFileName() );
701  wxString msg;
702 
703  DIALOG_EDIT_LIBRARY_TABLES dlg( aParent, _( "Symbol Libraries" ) );
704 
705  dlg.InstallPanel( new PANEL_SYM_LIB_TABLE( &dlg, globalTable, globalTablePath,
706  projectTable, projectTableFn.GetFullPath(),
707  aKiway->Prj().GetProjectPath() ) );
708 
709  if( dlg.ShowModal() == wxID_CANCEL )
710  return;
711 
712  if( dlg.m_GlobalTableChanged )
713  {
714  try
715  {
716  globalTable->Save( globalTablePath );
717  }
718  catch( const IO_ERROR& ioe )
719  {
720  msg.Printf( _( "Error saving global library table:\n\n%s" ), ioe.What() );
721  wxMessageBox( msg, _( "File Save Error" ), wxOK | wxICON_ERROR );
722  }
723  }
724 
725  if( dlg.m_ProjectTableChanged )
726  {
727 
728  try
729  {
730  projectTable->Save( projectTableFn.GetFullPath() );
731  }
732  catch( const IO_ERROR& ioe )
733  {
734  msg.Printf( _( "Error saving project-specific library table:\n\n%s" ), ioe.What() );
735  wxMessageBox( msg, _( "File Save Error" ), wxOK | wxICON_ERROR );
736  }
737  }
738 
739  auto editor = (LIB_EDIT_FRAME*) aKiway->Player( FRAME_SCH_LIB_EDITOR, false );
740 
741  if( editor )
742  editor->SyncLibraries( true );
743 
744  LIB_VIEW_FRAME* viewer = (LIB_VIEW_FRAME*) aKiway->Player( FRAME_SCH_VIEWER, false );
745 
746  if( viewer )
747  viewer->ReCreateListLib();
748 }
static const wxString & GetSymbolLibTableFileName()
static SYMBOL_LIB_TABLE & GetGlobalLibTable()
Symbol library viewer main window.
Definition: viewlib_frame.h:44
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:300
VTBL_ENTRY PROJECT & Prj() const
Function Prj returns the PROJECT associated with this KIWAY.
Definition: kiway.cpp:142
void Save(const wxString &aFileName) const
Write this library table to aFileName in s-expression form.
Dialog to show and edit symbol library tables.
virtual const wxString What() const
A composite of Problem() and Where()
Definition: exceptions.cpp:33
The symbol library editor main window.
VTBL_ENTRY const wxString GetProjectPath() const
Function GetProjectPath returns the full path of the project.
Definition: project.cpp:102
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.