Footprint library table fixes.

* Pcbnew: catch exceptions when saving changes to footprint library table.
* Pcbnew: update footprint viewer library list if open when footprint library
  table changes.
* CvPcb: update library list when footprint library table changes.
* Minor coding policy fixes.
This commit is contained in:
Wayne Stambaugh 2013-11-11 20:05:23 -05:00
parent 76fed4f995
commit 5821d4bc48
5 changed files with 48 additions and 14 deletions

View File

@ -514,12 +514,24 @@ void CVPCB_MAINFRAME::ConfigCvpcb( wxCommandEvent& event )
#if defined( USE_FP_LIB_TABLE )
void CVPCB_MAINFRAME::OnEditFootprintLibraryTable( wxCommandEvent& aEvent )
{
bool tableChanged = false;
int r = InvokePcbLibTableEditor( this, m_globalFootprintTable, m_footprintLibTable );
if( r & 1 )
{
try
{
FILE_OUTPUTFORMATTER sf( FP_LIB_TABLE::GetGlobalTableFileName() );
m_globalFootprintTable->Format( &sf, 0 );
tableChanged = true;
}
catch( IO_ERROR& ioe )
{
wxString msg;
msg.Printf( _( "Error occurred saving the global footprint library "
"table:\n\n%s" ), ioe.errorText.GetData() );
wxMessageBox( msg, _( "File Save Error" ), wxOK | wxICON_ERROR );
}
}
if( r & 2 )
@ -528,9 +540,23 @@ void CVPCB_MAINFRAME::OnEditFootprintLibraryTable( wxCommandEvent& aEvent )
fn.SetName( FP_LIB_TABLE::GetFileName() );
fn.SetExt( wxEmptyString );
try
{
FILE_OUTPUTFORMATTER sf( fn.GetFullPath() );
m_footprintLibTable->Format( &sf, 0 );
tableChanged = true;
}
catch( IO_ERROR& ioe )
{
wxString msg;
msg.Printf( _( "Error occurred saving the global footprint library "
"table:\n\n%s" ), ioe.errorText.GetData() );
wxMessageBox( msg, _( "File Save Error" ), wxOK | wxICON_ERROR );
}
}
if( tableChanged )
BuildLIBRARY_LISTBOX();
}
#endif

View File

@ -95,10 +95,6 @@ public:
virtual EDA_COLOR_T GetGridColor( void ) const;
private:
void OnSize( wxSizeEvent& event );
/**
* Function ReCreateLibraryList
*
@ -107,6 +103,10 @@ private:
*/
void ReCreateLibraryList();
private:
void OnSize( wxSizeEvent& event );
void ReCreateFootprintList();
void OnIterateFootprintList( wxCommandEvent& event );
void DisplayLibInfos();

View File

@ -87,6 +87,7 @@ void PCB_EDIT_FRAME::Process_Config( wxCommandEvent& event )
case ID_PCB_LIB_TABLE_EDIT:
{
bool tableChanged = false;
int r = InvokePcbLibTableEditor( this, m_globalFootprintTable, m_footprintLibTable );
if( r & 1 )
@ -95,6 +96,7 @@ void PCB_EDIT_FRAME::Process_Config( wxCommandEvent& event )
{
FILE_OUTPUTFORMATTER sf( FP_LIB_TABLE::GetGlobalTableFileName() );
m_globalFootprintTable->Format( &sf, 0 );
tableChanged = true;
}
catch( IO_ERROR& ioe )
{
@ -114,6 +116,7 @@ void PCB_EDIT_FRAME::Process_Config( wxCommandEvent& event )
try
{
m_footprintLibTable->Save( fn );
tableChanged = true;
}
catch( IO_ERROR& ioe )
{
@ -123,6 +126,11 @@ void PCB_EDIT_FRAME::Process_Config( wxCommandEvent& event )
wxMessageBox( msg, _( "File Save Error" ), wxOK | wxICON_ERROR );
}
}
if( tableChanged && FOOTPRINT_VIEWER_FRAME::GetActiveFootprintViewer() != NULL )
{
FOOTPRINT_VIEWER_FRAME::GetActiveFootprintViewer()->ReCreateLibraryList();
}
}
break;