130 lines
3.7 KiB
C++
130 lines
3.7 KiB
C++
/*
|
|
* This program source code file is part of KiCad, a free EDA CAD application.
|
|
*
|
|
* Copyright (C) 2023 Jon Evans <jon@craftyjon.com>
|
|
* Copyright (C) 2023 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 as published by the
|
|
* Free Software Foundation, either version 3 of the License, or (at your
|
|
* option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along
|
|
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#include <dialogs/dialog_database_lib_settings.h>
|
|
#include <sch_plugins/database/sch_database_plugin.h>
|
|
#include <database/database_lib_settings.h>
|
|
|
|
|
|
DIALOG_DATABASE_LIB_SETTINGS::DIALOG_DATABASE_LIB_SETTINGS( wxWindow* aParent,
|
|
SCH_DATABASE_PLUGIN* aPlugin ) :
|
|
DIALOG_DATABASE_LIB_SETTINGS_BASE( aParent ),
|
|
m_plugin( aPlugin )
|
|
{
|
|
Layout();
|
|
SetupStandardButtons();
|
|
finishDialogSettings();
|
|
}
|
|
|
|
|
|
bool DIALOG_DATABASE_LIB_SETTINGS::TransferDataToWindow()
|
|
{
|
|
wxCommandEvent dummy;
|
|
DATABASE_LIB_SETTINGS* settings = m_plugin->Settings();
|
|
|
|
m_txtConnectionString->SetValue( settings->m_Source.connection_string );
|
|
|
|
if( !settings->m_Source.connection_string.empty() )
|
|
{
|
|
m_rbConnectionString->SetValue( true );
|
|
OnConnectionStringSelected( dummy );
|
|
}
|
|
else
|
|
{
|
|
m_rbDSN->SetValue( true );
|
|
OnDSNSelected( dummy );
|
|
m_txtDSN->SetValue( settings->m_Source.dsn );
|
|
m_txtUser->SetValue( settings->m_Source.username );
|
|
m_txtPassword->SetValue( settings->m_Source.password );
|
|
}
|
|
|
|
m_spinCacheSize->SetValue( settings->m_Cache.max_size );
|
|
m_spinCacheTimeout->SetValue( settings->m_Cache.max_age );
|
|
|
|
if( hasPotentiallyValidConfig() )
|
|
OnBtnTest( dummy );
|
|
|
|
return true;
|
|
}
|
|
|
|
|
|
bool DIALOG_DATABASE_LIB_SETTINGS::TransferDataFromWindow()
|
|
{
|
|
return true;
|
|
}
|
|
|
|
|
|
void DIALOG_DATABASE_LIB_SETTINGS::OnDSNSelected( wxCommandEvent& aEvent )
|
|
{
|
|
m_txtConnectionString->Disable();
|
|
m_txtDSN->Enable();
|
|
m_txtUser->Enable();
|
|
m_txtPassword->Enable();
|
|
}
|
|
|
|
|
|
void DIALOG_DATABASE_LIB_SETTINGS::OnConnectionStringSelected( wxCommandEvent& aEvent )
|
|
{
|
|
m_txtConnectionString->Enable();
|
|
m_txtDSN->Disable();
|
|
m_txtUser->Disable();
|
|
m_txtPassword->Disable();
|
|
}
|
|
|
|
|
|
void DIALOG_DATABASE_LIB_SETTINGS::OnBtnTest( wxCommandEvent& aEvent )
|
|
{
|
|
wxString errorMsg;
|
|
|
|
if( m_plugin->TestConnection( &errorMsg ) )
|
|
{
|
|
m_stConnectionTestStatus->SetLabel( _( "Connected to database successfully" ) );
|
|
|
|
wxCommandEvent dummy;
|
|
OnBtnReloadConfig( dummy );
|
|
}
|
|
else
|
|
{
|
|
m_stConnectionTestStatus->SetLabel( wxString::Format( _( "Database connection failed: %s" ),
|
|
errorMsg ) );
|
|
}
|
|
}
|
|
|
|
|
|
void DIALOG_DATABASE_LIB_SETTINGS::OnBtnReloadConfig( wxCommandEvent& aEvent )
|
|
{
|
|
if( !m_plugin->TestConnection() )
|
|
{
|
|
m_stLibrariesStatus->SetLabel( _( "No connection to database" ) );
|
|
return;
|
|
}
|
|
|
|
std::vector<wxString> libs;
|
|
m_plugin->GetSubLibraryNames( libs );
|
|
|
|
m_stLibrariesStatus->SetLabel( wxString::Format( _( "Loaded %zu libraries" ), libs.size() ) );
|
|
}
|
|
|
|
|
|
bool DIALOG_DATABASE_LIB_SETTINGS::hasPotentiallyValidConfig()
|
|
{
|
|
return ( m_rbDSN->GetValue() && !m_txtDSN->IsEmpty() ) || !m_txtConnectionString->IsEmpty();
|
|
}
|