bool FOOTPRINT_EDIT_FRAME::DeleteModuleFromCurrentLibrary() { wxString nickname = GetCurrentLib(); // Legacy libraries are readable, but modifying legacy format is not allowed // So prompt the user if he try to delete a footprint from a legacy lib wxString libfullname = Prj().PcbFootprintLibs()->FindRow(nickname)->GetFullURI(); IO_MGR::PCB_FILE_T piType = IO_MGR::GuessPluginTypeFromLibPath( libfullname ); if( piType == IO_MGR::LEGACY ) { DisplayInfoMessage( this, INFO_LEGACY_LIB_WARN_DELETE ); return false; } if( !Prj().PcbFootprintLibs()->IsFootprintLibWritable( nickname ) ) { wxString msg = wxString::Format( _( "Library '%s' is read only" ), GetChars( nickname ) ); DisplayError( this, msg ); return false; } wxString fpid_txt = PCB_BASE_FRAME::SelectFootprint( this, nickname, wxEmptyString, wxEmptyString, Prj().PcbFootprintLibs() ); if( !fpid_txt ) return false; FPID fpid( fpid_txt ); wxString fpname = fpid.GetFootprintName(); // Confirmation wxString msg = wxString::Format( FMT_OK_DELETE, fpname.GetData(), nickname.GetData() ); if( !IsOK( this, msg ) ) return false; try { Prj().PcbFootprintLibs()->FootprintDelete( nickname, fpname ); } catch( const IO_ERROR& ioe ) { DisplayError( this, ioe.errorText ); return false; } msg.Printf( FMT_MOD_DELETED, fpname.GetData(), nickname.GetData() ); SetStatusText( msg ); return true; }
bool FOOTPRINT_EDIT_FRAME::DeleteModuleFromCurrentLibrary() { wxString nickname = getLibNickName(); if( !FootprintLibs()->IsFootprintLibWritable( nickname ) ) { wxString msg = wxString::Format( _( "Library '%s' is read only" ), GetChars( nickname ) ); DisplayError( this, msg ); return false; } wxString fpid_txt = PCB_BASE_FRAME::SelectFootprint( this, nickname, wxEmptyString, wxEmptyString, FootprintLibs() ); if( !fpid_txt ) return false; FPID fpid( fpid_txt ); wxString fpname = fpid.GetFootprintName(); // Confirmation wxString msg = wxString::Format( FMT_OK_DELETE, fpname.GetData(), nickname.GetData() ); if( !IsOK( this, msg ) ) return false; try { FootprintLibs()->FootprintDelete( nickname, fpname ); } catch( const IO_ERROR& ioe ) { DisplayError( this, ioe.errorText ); return false; } msg.Printf( FMT_MOD_DELETED, fpname.GetData(), nickname.GetData() ); SetStatusText( msg ); return true; }