kicad/cvpcb/menucfg.cpp

335 lines
10 KiB
C++

/***************************************/
/** menucfg : configuration de CVPCB **/
/***************************************/
/* cree et/ou affiche et modifie la configuration de CVPCB */
#include "fctsys.h"
#include "appl_wxstruct.h"
#include "common.h"
#include "confirm.h"
#include "gestfich.h"
#include "cvpcb.h"
#include "protos.h"
#include "cvstruct.h"
/*****************************************/
/* classe pour la frame de Configuration */
/*****************************************/
#include "dialog_cvpcb_config.cpp"
/***************************************************/
void WinEDA_CvpcbFrame::CreateConfigWindow()
/***************************************************/
/* Creation de la fenetre de configuration de CVPCB */
{
KiConfigCvpcbFrame* ConfigFrame = new KiConfigCvpcbFrame( this );
ConfigFrame->ShowModal(); ConfigFrame->Destroy();
}
/*********************************************/
void KiConfigCvpcbFrame::SetDialogDatas()
/*********************************************/
{
m_ListLibr->InsertItems( g_LibName_List, 0 );
m_ListEquiv->InsertItems( g_ListName_Equ, 0 );
m_LibDirCtrl = new WinEDA_EnterText( this,
_( "Lib Dir:" ), g_UserLibDirBuffer,
m_RightBoxSizer, wxDefaultSize );
m_NetInputExtCtrl = new WinEDA_EnterText( this,
_( "Net Input Ext:" ),
NetInExtBuffer,
m_NetExtBoxSizer, wxDefaultSize );
wxString DocModuleFileName =
wxGetApp().m_EDA_CommonConfig->Read( DOC_FOOTPRINTS_LIST_KEY,
DEFAULT_FOOTPRINTS_LIST_FILENAME );
m_TextHelpModulesFileName = new WinEDA_EnterText( this,
_( "Module Doc File:" ),
DocModuleFileName,
m_RightBoxSizer,
wxDefaultSize );
/* Create info on Files ext */
wxStaticText* StaticText;
wxString text;
text.Printf( wxT( "%s %s" ), _( "Cmp ext:" ), g_ExtCmpBuffer.GetData() );
StaticText = new wxStaticText( this, -1, text );
m_FileExtList->Add(
StaticText,
wxGROW | wxLEFT | wxRIGHT | wxTOP | wxBOTTOM |
wxADJUST_MINSIZE );
text.Printf( wxT( "%s %s" ), _( "Lib ext:" ), LibExtBuffer.GetData() );
StaticText = new wxStaticText( this, -1, text );
m_FileExtList->Add(
StaticText,
wxGROW | wxLEFT | wxRIGHT | wxTOP | wxBOTTOM |
wxADJUST_MINSIZE );
text.Printf( wxT( "%s %s" ), _( "NetOut ext:" ), NetExtBuffer.GetData() );
StaticText = new wxStaticText( this, -1, text );
m_FileExtList->Add(
StaticText,
wxGROW | wxLEFT | wxRIGHT | wxTOP | wxBOTTOM |
wxADJUST_MINSIZE );
text.Printf( wxT( "%s %s" ), _( "Equiv ext:" ),
g_EquivExtBuffer.GetData() );
StaticText = new wxStaticText( this, -1, text );
m_FileExtList->Add(
StaticText,
wxGROW | wxLEFT | wxRIGHT | wxTOP | wxBOTTOM |
wxADJUST_MINSIZE );
text.Printf( wxT( "%s %s" ), _( "Retro ext:" ), ExtRetroBuffer.GetData() );
StaticText = new wxStaticText( this, -1, text );
m_FileExtList->Add(
StaticText,
wxGROW | wxLEFT | wxRIGHT | wxTOP | wxBOTTOM |
wxADJUST_MINSIZE );
}
/********************************************************/
void KiConfigCvpcbFrame::AcceptCfg( wxCommandEvent& event )
/********************************************************/
{
Update();
Close();
}
/**********************************/
void KiConfigCvpcbFrame::Update()
/**********************************/
{
wxString msg;
if( !m_DoUpdate )
return;
NetInExtBuffer = m_NetInputExtCtrl->GetValue();
wxGetApp().m_EDA_CommonConfig->Write( DOC_FOOTPRINTS_LIST_KEY,
m_TextHelpModulesFileName->GetValue() );
msg = m_LibDirCtrl->GetValue();
if( msg != g_UserLibDirBuffer )
{
g_UserLibDirBuffer = m_LibDirCtrl->GetValue();
SetRealLibraryPath( wxT( "modules" ) );
listlib();
ListModIsModified = 1;
m_Parent->BuildFootprintListBox();
}
}
/****************************************************/
void KiConfigCvpcbFrame::SaveCfg( wxCommandEvent& event )
/****************************************************/
{
Update();
Save_Config( this );
}
/******************************************************/
void KiConfigCvpcbFrame::ReadOldCfg( wxCommandEvent& event )
/******************************************************/
{
wxString line;
NetInNameBuffer.Replace( WIN_STRING_DIR_SEP, UNIX_STRING_DIR_SEP );
wxString FullFileName = NetInNameBuffer.AfterLast( '/' );
ChangeFileNameExt( FullFileName, g_Prj_Config_Filename_ext );
FullFileName = EDA_FileSelector( _( "Read config file" ),
wxGetCwd(), /* Chemin par defaut */
FullFileName, /* nom fichier par defaut */
g_Prj_Config_Filename_ext, /* extension par defaut */
FullFileName, /* Masque d'affichage */
this,
wxFD_OPEN,
TRUE /* ne change pas de repertoire courant */
);
if( FullFileName.IsEmpty() )
return;
if( !wxFileExists( FullFileName ) )
{
line.Printf( _( "File %s not found" ), FullFileName.GetData() );
DisplayError( this, line ); return;
}
Read_Config( FullFileName );
m_DoUpdate = FALSE;
Close( TRUE );
}
/*******************************************************/
void KiConfigCvpcbFrame::LibDelFct( wxCommandEvent& event )
/*******************************************************/
{
int ii;
ii = m_ListLibr->GetSelection();
if( ii < 0 )
return;
ListModIsModified = 1;
g_LibName_List.RemoveAt( ii );
/* suppression de la reference dans la liste des librairies */
m_ListLibr->Delete( ii );
g_UserLibDirBuffer = m_LibDirCtrl->GetValue();
SetRealLibraryPath( wxT( "modules" ) );
listlib();
m_Parent->BuildFootprintListBox();
}
/********************************************************/
void KiConfigCvpcbFrame::LibAddFct( wxCommandEvent& event )
/********************************************************/
{
int ii;
wxString FullFileName, ShortLibName, mask;
ii = m_ListLibr->GetSelection();
if( event.GetId() == ADD_LIB ) /* Ajout apres selection */
{
ii++;
}
if( ii < 0 )
ii = 0;
Update();
mask = wxT( "*" ) + LibExtBuffer;
wxFileDialog FilesDialog( this, _( "Library files:" ), g_RealLibDirBuffer,
wxEmptyString, mask,
wxFD_DEFAULT_STYLE | wxFD_MULTIPLE );
FilesDialog.ShowModal();
wxArrayString Filenames;
FilesDialog.GetPaths( Filenames );
if( Filenames.GetCount() == 0 )
return;
for( unsigned jj = 0; jj < Filenames.GetCount(); jj++ )
{
FullFileName = Filenames[jj];
ShortLibName = MakeReducedFileName( FullFileName,
g_RealLibDirBuffer,
LibExtBuffer );
//Add or insert new library name
if( g_LibName_List.Index( ShortLibName ) == wxNOT_FOUND )
{
ListModIsModified = 1;
g_LibName_List.Insert( ShortLibName, ii++ );
}
else
{
wxString msg;
msg << wxT( "<" ) << ShortLibName << wxT( "> : " ) << _(
"Library already in use" );
DisplayError( this, msg );
}
}
g_UserLibDirBuffer = m_LibDirCtrl->GetValue();
SetRealLibraryPath( wxT( "modules" ) );
listlib();
m_Parent->BuildFootprintListBox();
m_ListLibr->Clear();
m_ListLibr->InsertItems( g_LibName_List, 0 );
}
/********************************************************/
void KiConfigCvpcbFrame::EquDelFct( wxCommandEvent& event )
/********************************************************/
{
int ii;
ii = m_ListEquiv->GetSelection();
if( ii < 0 )
return;
g_ListName_Equ.RemoveAt( ii );
m_ListEquiv->Delete( ii );
}
/********************************************************/
void KiConfigCvpcbFrame::EquAddFct( wxCommandEvent& event )
/********************************************************/
{
int ii;
wxString FullFileName, ShortLibName, mask;
ii = m_ListEquiv->GetSelection();
if( event.GetId() == ADD_EQU )
ii++; /* Ajout apres selection */
if( ii < 0 )
ii = 0;
Update();
mask = wxT( "*" ) + g_EquivExtBuffer;
wxFileDialog FilesDialog( this, _( "Equiv Files:" ), g_RealLibDirBuffer,
wxEmptyString, mask,
wxFD_DEFAULT_STYLE | wxFD_MULTIPLE );
FilesDialog.ShowModal();
wxArrayString Filenames;
FilesDialog.GetFilenames( Filenames );
if( Filenames.GetCount() == 0 )
return;
for( unsigned jj = 0; jj < Filenames.GetCount(); jj++ )
{
FullFileName = Filenames[jj];
ShortLibName = MakeReducedFileName( FullFileName,
g_RealLibDirBuffer,
g_EquivExtBuffer );
//Add or insert new equiv library name
if( g_ListName_Equ.Index( ShortLibName ) == wxNOT_FOUND )
{
g_ListName_Equ.Insert( ShortLibName, ii++ );
}
else
{
wxString msg;
msg << wxT( "<" ) << ShortLibName << wxT( "> : " ) << _(
"Library already in use" );
DisplayError( this, msg );
}
}
/* Update display list */
g_UserLibDirBuffer = m_LibDirCtrl->GetValue();
SetRealLibraryPath( wxT( "modules" ) );
listlib();
m_ListEquiv->Clear();
m_ListEquiv->InsertItems( g_ListName_Equ, 0 );
}