Give user opportunity to add exported library to lib table.

Fixes: lp:1788490
* https://bugs.launchpad.net/kicad/+bug/1788490
This commit is contained in:
Jeff Young 2018-08-23 12:48:14 +01:00
parent a9c8a7b69c
commit 11f746b53e
3 changed files with 33 additions and 14 deletions

View File

@ -1565,15 +1565,25 @@ void LIB_EDIT_FRAME::SyncLibraries( bool aProgress )
}
SYMBOL_LIB_TABLE* LIB_EDIT_FRAME::selectSymLibTable()
SYMBOL_LIB_TABLE* LIB_EDIT_FRAME::selectSymLibTable( bool aOptional )
{
wxArrayString libTableNames;
libTableNames.Add( _( "Global" ) );
libTableNames.Add( _( "Project" ) );
switch( SelectSingleOption( this, _( "Select Library Table" ),
_( "Choose the Library Table to add the library to:" ),
libTableNames ) )
wxSingleChoiceDialog dlg( this, _( "Choose the Library Table to add the library to:" ),
_( "Add To Library Table" ), libTableNames );
if( aOptional )
{
dlg.FindWindow( wxID_CANCEL )->SetLabel( _( "Skip" ) );
dlg.FindWindow( wxID_OK )->SetLabel( _( "Add" ) );
}
if( dlg.ShowModal() != wxID_OK )
return nullptr;
switch( dlg.GetSelection() )
{
case 0: return &SYMBOL_LIB_TABLE::GetGlobalLibTable();
case 1: return Prj().SchSymbolLibTable();

View File

@ -711,9 +711,10 @@ private:
/**
* Displays a dialog asking the user to select a symbol library table.
* @param aOptional if set the Cancel button will be relabelled "Skip".
* @return Pointer to the selected symbol library table or nullptr if cancelled.
*/
SYMBOL_LIB_TABLE* selectSymLibTable();
SYMBOL_LIB_TABLE* selectSymLibTable( bool aOptional = false );
///> Creates a backup copy of a file with requested extension
bool backupFile( const wxFileName& aOriginalFile, const wxString& aBackupExt );

View File

@ -3,7 +3,7 @@
*
* Copyright (C) 2016 Jean-Pierre Charras, jp.charras at wanadoo.fr
* Copyright (C) 2008 Wayne Stambaugh <stambaughw@gmail.com>
* Copyright (C) 2004-2017 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 2004-2018 KiCad Developers, see AUTHORS.txt for contributors.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@ -23,23 +23,16 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
/**
* @file lib_export.cpp
* @brief Eeschema library maintenance routines to backup modified libraries and
* create, edit, and delete components.
*/
#include <fctsys.h>
#include <class_drawpanel.h>
#include <confirm.h>
#include <symbol_lib_table.h>
#include <general.h>
#include <lib_edit_frame.h>
#include <class_library.h>
#include <wildcards_and_files_ext.h>
#include <eeschema_id.h>
#include <lib_manager.h>
#include <wx/filename.h>
@ -191,4 +184,19 @@ void LIB_EDIT_FRAME::OnExportPart( wxCommandEvent& event )
msg.Printf( _( "Symbol \"%s\" saved in library \"%s\"" ), part->GetName(), fn.GetFullPath() );
SetStatusText( msg );
// See if the user wants it added to a library table (global or project)
SYMBOL_LIB_TABLE* libTable = selectSymLibTable( true );
if( libTable )
{
if( !m_libMgr->AddLibrary( fn.GetFullPath(), libTable ) )
{
DisplayError( this, _( "Could not open the library file." ) );
return;
}
bool globalTable = ( libTable == &SYMBOL_LIB_TABLE::GetGlobalLibTable() );
saveSymbolLibTables( globalTable, !globalTable );
}
}