Commit 8eff8df9 authored by dickelbeck's avatar dickelbeck

beautify

parent ce04867e
...@@ -277,10 +277,10 @@ wxString ReturnPcbLayerName( int layer_number, bool omitSpacePadding ) ...@@ -277,10 +277,10 @@ wxString ReturnPcbLayerName( int layer_number, bool omitSpacePadding )
*/ */
{ {
#if 0 && defined(DEBUG) #if 1 && defined(DEBUG)
// Dick: this code is working fine, but we have no place to store the layer names yet. // Dick: this code is working fine, but we have no place to store the layer names yet.
const unsigned LAYER_LIMIT = 29; const unsigned LAYER_LIMIT = 29;
// @todo: these layer names should be configurable on a per project basis. // @todo: these layer names should be configurable on a per project basis.
...@@ -288,17 +288,17 @@ wxString ReturnPcbLayerName( int layer_number, bool omitSpacePadding ) ...@@ -288,17 +288,17 @@ wxString ReturnPcbLayerName( int layer_number, bool omitSpacePadding )
// deriving the file names from the "configured" layer names. // deriving the file names from the "configured" layer names.
// The main idea is to use a single array of names, and then remove // The main idea is to use a single array of names, and then remove
// spaces on the fly from the names when writing to disk. // spaces on the fly from the names when writing to disk.
#if 1 // my specific layer names #if 1 // my specific layer names
static const wxString layer_name_list[] = { static const wxString layer_name_list[] = {
_( "H2 Bottom" ), _( "Power" ), _( "V2 Signal" ), _( "H1 Signal" ), _( "H2 Bottom" ), _( "Power" ), _( "V2 Signal" ), _( "H1 Signal" ),
_( "Ground" ), _( "Inner L5 " ), _( "Inner L6 " ), _( "Inner L7 " ), _( "Ground" ), _( "Inner L5" ), _( "Inner L6" ), _( "Inner L7" ),
_( "Inner L8 " ), _( "Inner L9 " ), _( "Inner L10" ), _( "Inner L11" ), _( "Inner L8" ), _( "Inner L9" ), _( "Inner L10" ), _( "Inner L11" ),
_( "Inner L12" ), _( "Inner L13" ), _( "Inner L14" ), _( "Component" ), _( "Inner L12" ), _( "Inner L13" ), _( "Inner L14" ), _( "Component" ),
_( "Adhes Cop" ), _( "Adhes Cmp" ), _( "SoldP Cop" ), _( "SoldP Cmp" ), _( "Adhes Cop" ), _( "Adhes Cmp" ), _( "SoldP Cop" ), _( "SoldP Cmp" ),
_( "SilkS Cop" ), _( "SilkS Cmp" ), _( "Mask Cop " ), _( "Mask Cmp " ), _( "SilkS Cop" ), _( "SilkS Cmp" ), _( "Mask Cop" ), _( "Mask Cmp" ),
_( "Drawings " ), _( "Comments " ), _( "Eco1 " ), _( "Eco2 " ), _( "Drawings " ), _( "Comments" ), _( "Eco1" ), _( "Eco2" ),
_( "Edges Pcb" ), _( "BAD INDEX" ), _( "Edges Pcb" ), _( "BAD INDEX" ),
}; };
#else #else
...@@ -319,22 +319,22 @@ wxString ReturnPcbLayerName( int layer_number, bool omitSpacePadding ) ...@@ -319,22 +319,22 @@ wxString ReturnPcbLayerName( int layer_number, bool omitSpacePadding )
layer_number = LAYER_LIMIT; layer_number = LAYER_LIMIT;
const wxString* p = &layer_name_list[layer_number]; const wxString* p = &layer_name_list[layer_number];
if( omitSpacePadding ) if( omitSpacePadding )
{ {
wxString ret = *p; // copy the string wxString ret = *p; // copy the string
// modify the copy // modify the copy
ret.Trim(); ret.Trim();
ret.Replace( wxT(" "), wxT("_") ); ret.Replace( wxT(" "), wxT("_") );
return ret; return ret;
} }
else else
return *p; return *p;
#else // long standing established code: #else // long standing established code:
static const wxString layer_name_list[] = { static const wxString layer_name_list[] = {
_( "Copper " ), _( "Inner L1 " ), _( "Inner L2 " ), _( "Inner L3 " ), _( "Copper " ), _( "Inner L1 " ), _( "Inner L2 " ), _( "Inner L3 " ),
_( "Inner L4 " ), _( "Inner L5 " ), _( "Inner L6 " ), _( "Inner L7 " ), _( "Inner L4 " ), _( "Inner L5 " ), _( "Inner L6 " ), _( "Inner L7 " ),
...@@ -346,7 +346,7 @@ wxString ReturnPcbLayerName( int layer_number, bool omitSpacePadding ) ...@@ -346,7 +346,7 @@ wxString ReturnPcbLayerName( int layer_number, bool omitSpacePadding )
_( "Edges Pcb" ), _( "--- " ), _( "--- " ), _( "--- " ) _( "Edges Pcb" ), _( "--- " ), _( "--- " ), _( "--- " )
}; };
// Same as layer_name_list, without space, not internationalized // Same as layer_name_list, without space, not internationalized
static const wxString layer_name_list_for_filename[] = { static const wxString layer_name_list_for_filename[] = {
wxT( "Copper" ), wxT( "InnerL1" ), wxT( "InnerL2" ), wxT( "InnerL3" ), wxT( "Copper" ), wxT( "InnerL1" ), wxT( "InnerL2" ), wxT( "InnerL3" ),
...@@ -358,16 +358,16 @@ wxString ReturnPcbLayerName( int layer_number, bool omitSpacePadding ) ...@@ -358,16 +358,16 @@ wxString ReturnPcbLayerName( int layer_number, bool omitSpacePadding )
wxT( "Drawings" ), wxT( "Comments" ), wxT( "Eco1" ), wxT( "Eco2" ), wxT( "Drawings" ), wxT( "Comments" ), wxT( "Eco1" ), wxT( "Eco2" ),
wxT( "EdgesPcb" ), wxT( "---" ), wxT( "---" ), wxT( "---" ) wxT( "EdgesPcb" ), wxT( "---" ), wxT( "---" ), wxT( "---" )
}; };
if( (unsigned) layer_number >= 31u ) if( (unsigned) layer_number >= 31u )
layer_number = 31; layer_number = 31;
return omitSpacePadding ? return omitSpacePadding ?
layer_name_list_for_filename[layer_number] : layer_name_list_for_filename[layer_number] :
layer_name_list[layer_number]; layer_name_list[layer_number];
#endif #endif
} }
...@@ -509,6 +509,6 @@ const wxString& valeur_param( int valeur, wxString& buf_texte ) ...@@ -509,6 +509,6 @@ const wxString& valeur_param( int valeur, wxString& buf_texte )
{ {
buf_texte.Printf( wxT( "%2.4f \"" ), valeur * 0.0001 ); buf_texte.Printf( wxT( "%2.4f \"" ), valeur * 0.0001 );
} }
return buf_texte; return buf_texte;
} }
...@@ -118,8 +118,8 @@ void WinEDA_App::InitEDA_Appl( const wxString& name ) ...@@ -118,8 +118,8 @@ void WinEDA_App::InitEDA_Appl( const wxString& name )
/* Init kicad environment /* Init kicad environment
* the environment variable KICAD (if exists) gives the kicad path: * the environment variable KICAD (if exists) gives the kicad path:
* something like set KICAD=d:\kicad * something like set KICAD=d:\kicad
*/ */
m_Env_Defined = wxGetEnv( wxT( "KICAD" ), &m_KicadEnv ); m_Env_Defined = wxGetEnv( wxT( "KICAD" ), &m_KicadEnv );
if( m_Env_Defined ) // ensure m_KicadEnv ends by "/" if( m_Env_Defined ) // ensure m_KicadEnv ends by "/"
{ {
...@@ -214,7 +214,7 @@ bool WinEDA_App::SetBinDir() ...@@ -214,7 +214,7 @@ bool WinEDA_App::SetBinDir()
if (str == NULL) return false; if (str == NULL) return false;
char *native_str = NULL; char *native_str = NULL;
int len = CFStringGetMaximumSizeForEncoding(CFStringGetLength(str), int len = CFStringGetMaximumSizeForEncoding(CFStringGetLength(str),
kCFStringEncodingUTF8) + 1; kCFStringEncodingUTF8) + 1;
native_str = new char[len]; native_str = new char[len];
CFStringGetCString(str, native_str, len, kCFStringEncodingUTF8); CFStringGetCString(str, native_str, len, kCFStringEncodingUTF8);
m_BinDir = CONV_FROM_UTF8(native_str); m_BinDir = CONV_FROM_UTF8(native_str);
...@@ -222,7 +222,7 @@ bool WinEDA_App::SetBinDir() ...@@ -222,7 +222,7 @@ bool WinEDA_App::SetBinDir()
#elif defined(__UNIX__) #elif defined(__UNIX__)
// Under Linux, if argv[0] doesn't the complete path to the executable, // Under Linux, if argv[0] doesn't the complete path to the executable,
// it's necessary to obtain it using "which <filename>". // it's necessary to obtain it using "which <filename>".
FILE* ftmp; FILE* ftmp;
...@@ -270,7 +270,8 @@ void WinEDA_App::GetSettings() ...@@ -270,7 +270,8 @@ void WinEDA_App::GetSettings()
wxString Line, Ident; wxString Line, Ident;
unsigned ii; unsigned ii;
m_HelpSize.x = 500; m_HelpSize.y = 400; m_HelpSize.x = 500;
m_HelpSize.y = 400;
if( m_EDA_CommonConfig ) if( m_EDA_CommonConfig )
{ {
...@@ -285,8 +286,11 @@ void WinEDA_App::GetSettings() ...@@ -285,8 +286,11 @@ void WinEDA_App::GetSettings()
for( ii = 0; ii < 10; ii++ ) for( ii = 0; ii < 10; ii++ )
{ {
Ident = wxT( "LastProject" ); if( ii ) Ident = wxT( "LastProject" );
if( ii )
Ident << ii; Ident << ii;
if( m_EDA_Config->Read( Ident, &Line ) ) if( m_EDA_Config->Read( Ident, &Line ) )
m_LastProject.Add( Line ); m_LastProject.Add( Line );
} }
...@@ -299,6 +303,7 @@ void WinEDA_App::GetSettings() ...@@ -299,6 +303,7 @@ void WinEDA_App::GetSettings()
Line = m_EDA_Config->Read( wxT( "SdtFontType" ), wxEmptyString ); Line = m_EDA_Config->Read( wxT( "SdtFontType" ), wxEmptyString );
if( !Line.IsEmpty() ) if( !Line.IsEmpty() )
g_StdFont->SetFaceName( Line ); g_StdFont->SetFaceName( Line );
ii = m_EDA_Config->Read( wxT( "SdtFontStyle" ), wxFONTFAMILY_ROMAN ); ii = m_EDA_Config->Read( wxT( "SdtFontStyle" ), wxFONTFAMILY_ROMAN );
g_StdFont->SetStyle( ii ); g_StdFont->SetStyle( ii );
ii = m_EDA_Config->Read( wxT( "SdtFontWeight" ), wxNORMAL ); ii = m_EDA_Config->Read( wxT( "SdtFontWeight" ), wxNORMAL );
...@@ -309,6 +314,7 @@ void WinEDA_App::GetSettings() ...@@ -309,6 +314,7 @@ void WinEDA_App::GetSettings()
Line = m_EDA_Config->Read( wxT( "MsgFontType" ), wxEmptyString ); Line = m_EDA_Config->Read( wxT( "MsgFontType" ), wxEmptyString );
if( !Line.IsEmpty() ) if( !Line.IsEmpty() )
g_MsgFont->SetFaceName( Line ); g_MsgFont->SetFaceName( Line );
ii = m_EDA_Config->Read( wxT( "MsgFontStyle" ), wxFONTFAMILY_ROMAN ); ii = m_EDA_Config->Read( wxT( "MsgFontStyle" ), wxFONTFAMILY_ROMAN );
g_MsgFont->SetStyle( ii ); g_MsgFont->SetStyle( ii );
ii = m_EDA_Config->Read( wxT( "MsgFontWeight" ), wxNORMAL ); ii = m_EDA_Config->Read( wxT( "MsgFontWeight" ), wxNORMAL );
...@@ -318,6 +324,7 @@ void WinEDA_App::GetSettings() ...@@ -318,6 +324,7 @@ void WinEDA_App::GetSettings()
Line = m_EDA_Config->Read( wxT( "DialogFontType" ), wxEmptyString ); Line = m_EDA_Config->Read( wxT( "DialogFontType" ), wxEmptyString );
if( !Line.IsEmpty() ) if( !Line.IsEmpty() )
g_DialogFont->SetFaceName( Line ); g_DialogFont->SetFaceName( Line );
ii = m_EDA_Config->Read( wxT( "DialogFontStyle" ), wxFONTFAMILY_ROMAN ); ii = m_EDA_Config->Read( wxT( "DialogFontStyle" ), wxFONTFAMILY_ROMAN );
g_DialogFont->SetStyle( ii ); g_DialogFont->SetStyle( ii );
ii = m_EDA_Config->Read( wxT( "DialogFontWeight" ), wxNORMAL ); ii = m_EDA_Config->Read( wxT( "DialogFontWeight" ), wxNORMAL );
...@@ -343,7 +350,6 @@ void WinEDA_App::SaveSettings() ...@@ -343,7 +350,6 @@ void WinEDA_App::SaveSettings()
{ {
unsigned int ii; unsigned int ii;
if( m_EDA_Config == NULL ) if( m_EDA_Config == NULL )
return; return;
......
/**************************************************/ /**************************************************/
/* projet_config : routines de trace du cartouche */ /* projet_config : routines de trace du cartouche */
/**************************************************/ /**************************************************/
#include "fctsys.h" #include "fctsys.h"
#include "gr_basic.h" #include "gr_basic.h"
...@@ -13,341 +13,386 @@ ...@@ -13,341 +13,386 @@
/*********************************************************************/ /*********************************************************************/
static bool ReCreatePrjConfig(const wxString & local_config_filename, static bool ReCreatePrjConfig( const wxString& local_config_filename,
const wxString & GroupName, bool ForceUseLocalConfig) const wxString& GroupName, bool ForceUseLocalConfig )
/*********************************************************************/ /*********************************************************************/
/* Cree ou recree la configuration locale de kicad (filename.pro) /* Cree ou recree la configuration locale de kicad (filename.pro)
initialise: * initialise:
g_Prj_Config * g_Prj_Config
g_Prj_Config_LocalFilename * g_Prj_Config_LocalFilename
g_Prj_Default_Config_FullFilename * g_Prj_Default_Config_FullFilename
return: * return:
TRUE si config locale * TRUE si config locale
FALSE si default config * FALSE si default config
*/ */
{ {
// free old config // free old config
if ( g_Prj_Config ) delete g_Prj_Config; if( g_Prj_Config )
g_Prj_Config = NULL; delete g_Prj_Config;
g_Prj_Config = NULL;
// Init local Config filename
if ( local_config_filename.IsEmpty() ) g_Prj_Config_LocalFilename = wxT("kicad"); // Init local Config filename
else g_Prj_Config_LocalFilename = local_config_filename; if( local_config_filename.IsEmpty() )
g_Prj_Config_LocalFilename = wxT( "kicad" );
ChangeFileNameExt( g_Prj_Config_LocalFilename, g_Prj_Config_Filename_ext ); else
g_Prj_Config_LocalFilename = local_config_filename;
// Init local config filename
if ( ForceUseLocalConfig || wxFileExists(g_Prj_Config_LocalFilename) ) ChangeFileNameExt( g_Prj_Config_LocalFilename, g_Prj_Config_Filename_ext );
{
g_Prj_Default_Config_FullFilename.Empty(); // Init local config filename
g_Prj_Config = new wxFileConfig(wxEmptyString, wxEmptyString, if( ForceUseLocalConfig || wxFileExists( g_Prj_Config_LocalFilename ) )
g_Prj_Config_LocalFilename, wxEmptyString, {
wxCONFIG_USE_RELATIVE_PATH); g_Prj_Default_Config_FullFilename.Empty();
g_Prj_Config->DontCreateOnDemand(); g_Prj_Config = new wxFileConfig( wxEmptyString, wxEmptyString,
g_Prj_Config_LocalFilename, wxEmptyString,
if ( ForceUseLocalConfig ) return TRUE; wxCONFIG_USE_RELATIVE_PATH );
// Test de la bonne version du fichier (ou groupe) de configuration g_Prj_Config->DontCreateOnDemand();
int version = -1, def_version = 0;
g_Prj_Config->SetPath(GroupName); if( ForceUseLocalConfig )
version = g_Prj_Config->Read( wxT("version"), def_version); return TRUE;
g_Prj_Config->SetPath(UNIX_STRING_DIR_SEP);
if ( version > 0 ) return TRUE; // Test de la bonne version du fichier (ou groupe) de configuration
else delete g_Prj_Config; // Version incorrecte int version = -1, def_version = 0;
} g_Prj_Config->SetPath( GroupName );
version = g_Prj_Config->Read( wxT( "version" ), def_version );
g_Prj_Config->SetPath( UNIX_STRING_DIR_SEP );
// Fichier local non trouve ou invalide if( version > 0 )
g_Prj_Config_LocalFilename.Empty(); return TRUE;
g_Prj_Default_Config_FullFilename = else
ReturnKicadDatasPath() + delete g_Prj_Config; // Version incorrecte
wxT("template/kicad") + }
g_Prj_Config_Filename_ext;
// Recreate new config // Fichier local non trouve ou invalide
g_Prj_Config = new wxFileConfig(wxEmptyString, wxEmptyString, g_Prj_Config_LocalFilename.Empty();
wxEmptyString, g_Prj_Default_Config_FullFilename, g_Prj_Default_Config_FullFilename =
wxCONFIG_USE_RELATIVE_PATH); ReturnKicadDatasPath() +
g_Prj_Config->DontCreateOnDemand(); wxT( "template/kicad" ) +
g_Prj_Config_Filename_ext;
return FALSE;
// Recreate new config
g_Prj_Config = new wxFileConfig( wxEmptyString, wxEmptyString,
wxEmptyString, g_Prj_Default_Config_FullFilename,
wxCONFIG_USE_RELATIVE_PATH );
g_Prj_Config->DontCreateOnDemand();
return FALSE;
} }
/***************************************************************************************/ /***************************************************************************************/
void WinEDA_App::WriteProjectConfig(const wxString & local_config_filename, void WinEDA_App::WriteProjectConfig( const wxString& local_config_filename,
const wxString & GroupName, PARAM_CFG_BASE ** List) const wxString& GroupName, PARAM_CFG_BASE** List )
/***************************************************************************************/ /***************************************************************************************/
/* enregistrement de la config "projet"*/ /* enregistrement de la config "projet"*/
{ {
const PARAM_CFG_BASE * pt_cfg; const PARAM_CFG_BASE* pt_cfg;
wxString msg; wxString msg;
ReCreatePrjConfig(local_config_filename, GroupName, ReCreatePrjConfig( local_config_filename, GroupName,
FORCE_LOCAL_CONFIG); FORCE_LOCAL_CONFIG );
/* Write date ( surtout pour eviter bug de wxFileConfig
qui se trompe de rubrique si declaration [xx] en premiere ligne /* Write date ( surtout pour eviter bug de wxFileConfig
(en fait si groupe vide) */ * qui se trompe de rubrique si declaration [xx] en premiere ligne
g_Prj_Config->SetPath(UNIX_STRING_DIR_SEP); * (en fait si groupe vide) */
msg = DateAndTime(); g_Prj_Config->SetPath( UNIX_STRING_DIR_SEP );
g_Prj_Config->Write( wxT("update"), msg); msg = DateAndTime();
msg = GetAppName();
g_Prj_Config->Write( wxT("last_client"), msg); g_Prj_Config->Write( wxT( "update" ), msg );
msg = GetAppName();
/* ecriture de la configuration */
g_Prj_Config->DeleteGroup(GroupName); // Erase all datas g_Prj_Config->Write( wxT( "last_client" ), msg );
g_Prj_Config->Flush();
/* ecriture de la configuration */
g_Prj_Config->SetPath(GroupName); g_Prj_Config->DeleteGroup( GroupName ); // Erase all datas
g_Prj_Config->Write( wxT("version"), CONFIG_VERSION); g_Prj_Config->Flush();
g_Prj_Config->SetPath(UNIX_STRING_DIR_SEP);
g_Prj_Config->SetPath( GroupName );
for( ; *List != NULL ; List++) g_Prj_Config->Write( wxT( "version" ), CONFIG_VERSION );
{ g_Prj_Config->SetPath( UNIX_STRING_DIR_SEP );
pt_cfg = *List;
if ( pt_cfg->m_Group ) g_Prj_Config->SetPath(pt_cfg->m_Group); for( ; *List != NULL; List++ )
else g_Prj_Config->SetPath(GroupName); {
pt_cfg = *List;
switch( pt_cfg->m_Type ) if( pt_cfg->m_Group )
{ g_Prj_Config->SetPath( pt_cfg->m_Group );
case PARAM_INT: else
#undef PTCFG g_Prj_Config->SetPath( GroupName );
#define PTCFG ((PARAM_CFG_INT *)pt_cfg)
if (PTCFG->m_Pt_param == NULL) break; switch( pt_cfg->m_Type )
if ( pt_cfg->m_Setup) {
m_EDA_Config->Write(pt_cfg->m_Ident, *PTCFG->m_Pt_param); case PARAM_INT:
else #undef PTCFG
g_Prj_Config->Write(pt_cfg->m_Ident, *PTCFG->m_Pt_param); #define PTCFG ( (PARAM_CFG_INT*) pt_cfg )
break; if( PTCFG->m_Pt_param == NULL )
break;
case PARAM_SETCOLOR:
#undef PTCFG if( pt_cfg->m_Setup )
#define PTCFG ((PARAM_CFG_SETCOLOR *)pt_cfg) m_EDA_Config->Write( pt_cfg->m_Ident, *PTCFG->m_Pt_param );
if (PTCFG->m_Pt_param == NULL) break; else
if ( pt_cfg->m_Setup) g_Prj_Config->Write( pt_cfg->m_Ident, *PTCFG->m_Pt_param );
m_EDA_Config->Write(pt_cfg->m_Ident, *PTCFG->m_Pt_param); break;
else
g_Prj_Config->Write(pt_cfg->m_Ident, *PTCFG->m_Pt_param); case PARAM_SETCOLOR:
break; #undef PTCFG
#define PTCFG ( (PARAM_CFG_SETCOLOR*) pt_cfg )
case PARAM_DOUBLE: if( PTCFG->m_Pt_param == NULL )
#undef PTCFG break;
#define PTCFG ((PARAM_CFG_DOUBLE *)pt_cfg)
if (PTCFG->m_Pt_param == NULL) break; if( pt_cfg->m_Setup )
if ( pt_cfg->m_Setup) m_EDA_Config->Write( pt_cfg->m_Ident, *PTCFG->m_Pt_param );
m_EDA_Config->Write(pt_cfg->m_Ident, *PTCFG->m_Pt_param); else
else g_Prj_Config->Write( pt_cfg->m_Ident, *PTCFG->m_Pt_param );
g_Prj_Config->Write(pt_cfg->m_Ident, *PTCFG->m_Pt_param); break;
break;
case PARAM_DOUBLE:
case PARAM_BOOL: #undef PTCFG
#undef PTCFG #define PTCFG ( (PARAM_CFG_DOUBLE*) pt_cfg )
#define PTCFG ((PARAM_CFG_BOOL *)pt_cfg) if( PTCFG->m_Pt_param == NULL )
if (PTCFG->m_Pt_param == NULL) break; break;
if ( pt_cfg->m_Setup)
m_EDA_Config->Write(pt_cfg->m_Ident, (int)*PTCFG->m_Pt_param); if( pt_cfg->m_Setup )
else m_EDA_Config->Write( pt_cfg->m_Ident, *PTCFG->m_Pt_param );
g_Prj_Config->Write(pt_cfg->m_Ident, (int)*PTCFG->m_Pt_param); else
break; g_Prj_Config->Write( pt_cfg->m_Ident, *PTCFG->m_Pt_param );
break;
case PARAM_WXSTRING:
#undef PTCFG case PARAM_BOOL:
#define PTCFG ((PARAM_CFG_WXSTRING *)pt_cfg) #undef PTCFG
if (PTCFG->m_Pt_param == NULL) break; #define PTCFG ( (PARAM_CFG_BOOL*) pt_cfg )
if ( pt_cfg->m_Setup) if( PTCFG->m_Pt_param == NULL )
m_EDA_Config->Write(pt_cfg->m_Ident, *PTCFG->m_Pt_param); break;
else
g_Prj_Config->Write(pt_cfg->m_Ident, *PTCFG->m_Pt_param); if( pt_cfg->m_Setup )
break; m_EDA_Config->Write( pt_cfg->m_Ident, (int) *PTCFG->m_Pt_param );
else
case PARAM_LIBNAME_LIST: g_Prj_Config->Write( pt_cfg->m_Ident, (int) *PTCFG->m_Pt_param );
{ break;
#undef PTCFG
#define PTCFG ((PARAM_CFG_LIBNAME_LIST *)pt_cfg) case PARAM_WXSTRING:
if (PTCFG->m_Pt_param == NULL) break; #undef PTCFG
wxArrayString * libname_list = PTCFG->m_Pt_param; #define PTCFG ( (PARAM_CFG_WXSTRING*) pt_cfg )
if ( libname_list == NULL ) break; if( PTCFG->m_Pt_param == NULL )
unsigned indexlib = 0; break;
wxString cle_config;
for ( ; indexlib < libname_list->GetCount(); indexlib++ ) if( pt_cfg->m_Setup )
{ m_EDA_Config->Write( pt_cfg->m_Ident, *PTCFG->m_Pt_param );
cle_config = pt_cfg->m_Ident; else
// We use indexlib+1 because first lib name is LibName1 g_Prj_Config->Write( pt_cfg->m_Ident, *PTCFG->m_Pt_param );
cle_config << (indexlib+1); break;
g_Prj_Config->Write(cle_config, libname_list->Item(indexlib));
} case PARAM_LIBNAME_LIST:
break; {
} #undef PTCFG
#define PTCFG ( (PARAM_CFG_LIBNAME_LIST*) pt_cfg )
case PARAM_COMMAND_ERASE: // Erase all datas if( PTCFG->m_Pt_param == NULL )
if ( pt_cfg->m_Ident ) break;
{
m_EDA_Config->DeleteGroup(pt_cfg->m_Ident); wxArrayString* libname_list = PTCFG->m_Pt_param;
g_Prj_Config->DeleteGroup(pt_cfg->m_Ident); if( libname_list == NULL )
} break;
break;
} unsigned indexlib = 0;
} wxString cle_config;
for( ; indexlib < libname_list->GetCount(); indexlib++ )
g_Prj_Config->SetPath(UNIX_STRING_DIR_SEP); {
delete g_Prj_Config; cle_config = pt_cfg->m_Ident;
g_Prj_Config = NULL;
// We use indexlib+1 because first lib name is LibName1
cle_config << (indexlib + 1);
g_Prj_Config->Write( cle_config, libname_list->Item( indexlib ) );
}
break;
}
case PARAM_COMMAND_ERASE: // Erase all datas
if( pt_cfg->m_Ident )
{
m_EDA_Config->DeleteGroup( pt_cfg->m_Ident );
g_Prj_Config->DeleteGroup( pt_cfg->m_Ident );
}
break;
}
}
g_Prj_Config->SetPath( UNIX_STRING_DIR_SEP );
delete g_Prj_Config;
g_Prj_Config = NULL;
} }
/***************************************************************************************/ /***************************************************************************************/
bool WinEDA_App::ReadProjectConfig(const wxString & local_config_filename, bool WinEDA_App::ReadProjectConfig( const wxString& local_config_filename,
const wxString & GroupName, PARAM_CFG_BASE ** List, const wxString& GroupName, PARAM_CFG_BASE** List,
bool Load_Only_if_New) bool Load_Only_if_New )
/***************************************************************************************/ /***************************************************************************************/
/* Lecture de la config "projet" /* Lecture de la config "projet"
*** si Load_Only_if_New == TRUE, elle n'est lue que si elle *** si Load_Only_if_New == TRUE, elle n'est lue que si elle
*** est differente de la config actuelle (dates differentes) *** est differente de la config actuelle (dates differentes)
*
return: * return:
TRUE si lue. * TRUE si lue.
Met a jour en plus: * Met a jour en plus:
g_EDA_Appl->m_CurrentOptionFileDateAndTime * g_EDA_Appl->m_CurrentOptionFileDateAndTime
g_EDA_Appl->m_CurrentOptionFile * g_EDA_Appl->m_CurrentOptionFile
*/ */
{ {
const PARAM_CFG_BASE * pt_cfg; const PARAM_CFG_BASE* pt_cfg;
wxString timestamp; wxString timestamp;
if ( List == NULL )return FALSE; if( List == NULL )
return FALSE;
ReCreatePrjConfig(local_config_filename, GroupName, FALSE);
ReCreatePrjConfig( local_config_filename, GroupName, FALSE );
g_Prj_Config->SetPath(UNIX_STRING_DIR_SEP);
timestamp = g_Prj_Config->Read( wxT("update") ); g_Prj_Config->SetPath( UNIX_STRING_DIR_SEP );
if ( Load_Only_if_New && ( !timestamp.IsEmpty() ) && timestamp = g_Prj_Config->Read( wxT( "update" ) );
(timestamp == g_EDA_Appl->m_CurrentOptionFileDateAndTime) ) if( Load_Only_if_New && ( !timestamp.IsEmpty() )
{ && (timestamp == g_EDA_Appl->m_CurrentOptionFileDateAndTime) )
return FALSE; {
} return FALSE;
}
g_EDA_Appl->m_CurrentOptionFileDateAndTime = timestamp;
g_EDA_Appl->m_CurrentOptionFileDateAndTime = timestamp;
if ( ! g_Prj_Default_Config_FullFilename.IsEmpty() )
g_EDA_Appl->m_CurrentOptionFile = g_Prj_Default_Config_FullFilename; if( !g_Prj_Default_Config_FullFilename.IsEmpty() )
else g_EDA_Appl->m_CurrentOptionFile = g_Prj_Default_Config_FullFilename;
{ else
if ( wxPathOnly(g_Prj_Config_LocalFilename).IsEmpty() ) {
g_EDA_Appl->m_CurrentOptionFile = if( wxPathOnly( g_Prj_Config_LocalFilename ).IsEmpty() )
wxGetCwd() + STRING_DIR_SEP + g_Prj_Config_LocalFilename; g_EDA_Appl->m_CurrentOptionFile =
else wxGetCwd() + STRING_DIR_SEP + g_Prj_Config_LocalFilename;
g_EDA_Appl->m_CurrentOptionFile = g_Prj_Config_LocalFilename; else
} g_EDA_Appl->m_CurrentOptionFile = g_Prj_Config_LocalFilename;
}
for( ; *List != NULL ; List++)
{ for( ; *List != NULL; List++ )
pt_cfg = *List; {
if ( pt_cfg->m_Group ) g_Prj_Config->SetPath(pt_cfg->m_Group); pt_cfg = *List;
else g_Prj_Config->SetPath(GroupName); if( pt_cfg->m_Group )
switch( pt_cfg->m_Type ) g_Prj_Config->SetPath( pt_cfg->m_Group );
{ else
case PARAM_INT: g_Prj_Config->SetPath( GroupName );
{
#undef PTCFG switch( pt_cfg->m_Type )
#define PTCFG ((PARAM_CFG_INT *)pt_cfg) {
int itmp; case PARAM_INT:
if ( pt_cfg->m_Setup) {
itmp = m_EDA_Config->Read(pt_cfg->m_Ident, PTCFG->m_Default ); #undef PTCFG
else #define PTCFG ( (PARAM_CFG_INT*) pt_cfg )
itmp = g_Prj_Config->Read(pt_cfg->m_Ident, PTCFG->m_Default ); int itmp;
if( (itmp < PTCFG->m_Min) || (itmp > PTCFG->m_Max) ) if( pt_cfg->m_Setup )
itmp = PTCFG->m_Default; itmp = m_EDA_Config->Read( pt_cfg->m_Ident, PTCFG->m_Default );
*PTCFG->m_Pt_param = itmp; else
break; itmp = g_Prj_Config->Read( pt_cfg->m_Ident, PTCFG->m_Default );
}
if( (itmp < PTCFG->m_Min) || (itmp > PTCFG->m_Max) )
case PARAM_SETCOLOR: itmp = PTCFG->m_Default;
{
#undef PTCFG *PTCFG->m_Pt_param = itmp;
#define PTCFG ((PARAM_CFG_SETCOLOR *)pt_cfg) break;
int itmp; }
if ( pt_cfg->m_Setup)
itmp = m_EDA_Config->Read(pt_cfg->m_Ident, PTCFG->m_Default ); case PARAM_SETCOLOR:
else {
itmp = g_Prj_Config->Read(pt_cfg->m_Ident, PTCFG->m_Default ); #undef PTCFG
if( (itmp < 0) || (itmp > MAX_COLOR) ) #define PTCFG ( (PARAM_CFG_SETCOLOR*) pt_cfg )
itmp = PTCFG->m_Default; int itmp;
*PTCFG->m_Pt_param = itmp; if( pt_cfg->m_Setup )
break; itmp = m_EDA_Config->Read( pt_cfg->m_Ident, PTCFG->m_Default );
} else
itmp = g_Prj_Config->Read( pt_cfg->m_Ident, PTCFG->m_Default );
case PARAM_DOUBLE:
{ if( (itmp < 0) || (itmp > MAX_COLOR) )
#undef PTCFG itmp = PTCFG->m_Default;
#define PTCFG ((PARAM_CFG_DOUBLE *)pt_cfg)
double ftmp = 0; wxString msg; *PTCFG->m_Pt_param = itmp;
if ( pt_cfg->m_Setup) break;
msg = m_EDA_Config->Read(pt_cfg->m_Ident, wxT("") ); }
else
msg = g_Prj_Config->Read(pt_cfg->m_Ident, wxT("") ); case PARAM_DOUBLE:
{
if ( msg.IsEmpty() ) ftmp = PTCFG->m_Default; #undef PTCFG
else #define PTCFG ( (PARAM_CFG_DOUBLE*) pt_cfg )
{ double ftmp = 0; wxString msg;
msg.ToDouble(&ftmp); if( pt_cfg->m_Setup )
if( (ftmp < PTCFG->m_Min) || (ftmp > PTCFG->m_Max) ) msg = m_EDA_Config->Read( pt_cfg->m_Ident, wxT( "" ) );
ftmp = PTCFG->m_Default; else
} msg = g_Prj_Config->Read( pt_cfg->m_Ident, wxT( "" ) );
*PTCFG->m_Pt_param = ftmp;
break; if( msg.IsEmpty() )
} ftmp = PTCFG->m_Default;
else
case PARAM_BOOL: {
{ msg.ToDouble( &ftmp );
#undef PTCFG if( (ftmp < PTCFG->m_Min) || (ftmp > PTCFG->m_Max) )
#define PTCFG ((PARAM_CFG_BOOL *)pt_cfg) ftmp = PTCFG->m_Default;
int itmp; }
if ( pt_cfg->m_Setup) *PTCFG->m_Pt_param = ftmp;
itmp = m_EDA_Config->Read(pt_cfg->m_Ident, PTCFG->m_Default ); break;
else }
itmp = g_Prj_Config->Read(pt_cfg->m_Ident, PTCFG->m_Default );
*PTCFG->m_Pt_param = itmp ? TRUE : FALSE; case PARAM_BOOL:
break; {
} #undef PTCFG
#define PTCFG ( (PARAM_CFG_BOOL*) pt_cfg )
case PARAM_WXSTRING: int itmp;
{ if( pt_cfg->m_Setup )
#undef PTCFG itmp = m_EDA_Config->Read( pt_cfg->m_Ident, PTCFG->m_Default );
#define PTCFG ((PARAM_CFG_WXSTRING *)pt_cfg) else
if (PTCFG->m_Pt_param == NULL) break; itmp = g_Prj_Config->Read( pt_cfg->m_Ident, PTCFG->m_Default );
if ( pt_cfg->m_Setup)
*PTCFG->m_Pt_param = m_EDA_Config->Read(pt_cfg->m_Ident ); *PTCFG->m_Pt_param = itmp ? TRUE : FALSE;
else break;
*PTCFG->m_Pt_param = g_Prj_Config->Read(pt_cfg->m_Ident ); }
break;
} case PARAM_WXSTRING:
{
case PARAM_LIBNAME_LIST: #undef PTCFG
{ #define PTCFG ( (PARAM_CFG_WXSTRING*) pt_cfg )
#undef PTCFG if( PTCFG->m_Pt_param == NULL )
#define PTCFG ((PARAM_CFG_LIBNAME_LIST *)pt_cfg) break;
int indexlib = 1; // We start indexlib to 1 because first lib name is LibName1
wxString libname, id_lib; if( pt_cfg->m_Setup )
wxArrayString * libname_list = PTCFG->m_Pt_param; *PTCFG->m_Pt_param = m_EDA_Config->Read( pt_cfg->m_Ident );
while ( 1 ) else
{ *PTCFG->m_Pt_param = g_Prj_Config->Read( pt_cfg->m_Ident );
id_lib = pt_cfg->m_Ident; id_lib << indexlib; indexlib++; break;
libname = g_Prj_Config->Read(id_lib, wxT("") ); }
if( libname.IsEmpty() ) break;
libname_list->Add(libname); case PARAM_LIBNAME_LIST:
} {
break; #undef PTCFG
} #define PTCFG ( (PARAM_CFG_LIBNAME_LIST*) pt_cfg )
int indexlib = 1; // We start indexlib to 1 because first lib name is LibName1
case PARAM_COMMAND_ERASE: wxString libname, id_lib;
break; wxArrayString* libname_list = PTCFG->m_Pt_param;
} while( 1 )
} {
id_lib = pt_cfg->m_Ident; id_lib << indexlib; indexlib++;
delete g_Prj_Config; libname = g_Prj_Config->Read( id_lib, wxT( "" ) );
g_Prj_Config = NULL; if( libname.IsEmpty() )
break;
return TRUE; libname_list->Add( libname );
}
break;
}
case PARAM_COMMAND_ERASE:
break;
}
}
delete g_Prj_Config;
g_Prj_Config = NULL;
return TRUE;
} }
...@@ -355,114 +400,124 @@ wxString timestamp; ...@@ -355,114 +400,124 @@ wxString timestamp;
/* Constructeurs des descripteurs de structs de configuration */ /* Constructeurs des descripteurs de structs de configuration */
/**************************************************************/ /**************************************************************/
PARAM_CFG_BASE::PARAM_CFG_BASE(const wxChar * ident, const paramcfg_id type, PARAM_CFG_BASE::PARAM_CFG_BASE( const wxChar* ident, const paramcfg_id type,
const wxChar * group) const wxChar* group )
{ {
m_Ident = ident; m_Ident = ident;
m_Type = type; m_Type = type;
m_Group = group; m_Group = group;
m_Setup = FALSE; m_Setup = FALSE;
} }
PARAM_CFG_INT::PARAM_CFG_INT(const wxChar * ident, int * ptparam, PARAM_CFG_INT::PARAM_CFG_INT( const wxChar* ident, int* ptparam,
int default_val, int min, int max, int default_val, int min, int max,
const wxChar * group) const wxChar* group ) :
: PARAM_CFG_BASE(ident, PARAM_INT, group) PARAM_CFG_BASE( ident, PARAM_INT, group )
{ {
m_Pt_param = ptparam; m_Pt_param = ptparam;
m_Default = default_val; m_Default = default_val;
m_Min = min; m_Min = min;
m_Max = max; m_Max = max;
} }
PARAM_CFG_INT::PARAM_CFG_INT(bool Insetup, const wxChar * ident, int * ptparam,
int default_val, int min, int max, PARAM_CFG_INT::PARAM_CFG_INT( bool Insetup, const wxChar* ident, int* ptparam,
const wxChar * group) int default_val, int min, int max,
: PARAM_CFG_BASE(ident, PARAM_INT, group) const wxChar* group ) :
PARAM_CFG_BASE( ident, PARAM_INT, group )
{ {
m_Pt_param = ptparam; m_Pt_param = ptparam;
m_Default = default_val; m_Default = default_val;
m_Min = min; m_Min = min;
m_Max = max; m_Max = max;
m_Setup = Insetup; m_Setup = Insetup;
} }
PARAM_CFG_SETCOLOR::PARAM_CFG_SETCOLOR(const wxChar * ident, int * ptparam,
int default_val, const wxChar * group) PARAM_CFG_SETCOLOR::PARAM_CFG_SETCOLOR( const wxChar* ident, int* ptparam,
: PARAM_CFG_BASE(ident, PARAM_SETCOLOR, group) int default_val, const wxChar* group ) :
PARAM_CFG_BASE( ident, PARAM_SETCOLOR, group )
{ {
m_Pt_param = ptparam; m_Pt_param = ptparam;
m_Default = default_val; m_Default = default_val;
} }
PARAM_CFG_SETCOLOR::PARAM_CFG_SETCOLOR(bool Insetup, const wxChar * ident, int * ptparam,
int default_val, const wxChar * group) PARAM_CFG_SETCOLOR::PARAM_CFG_SETCOLOR( bool Insetup, const wxChar* ident, int* ptparam,
: PARAM_CFG_BASE(ident, PARAM_SETCOLOR, group) int default_val, const wxChar* group ) :
PARAM_CFG_BASE( ident, PARAM_SETCOLOR, group )
{ {
m_Pt_param = ptparam; m_Pt_param = ptparam;
m_Default = default_val; m_Default = default_val;
m_Setup = Insetup; m_Setup = Insetup;
} }
PARAM_CFG_DOUBLE::PARAM_CFG_DOUBLE(const wxChar * ident, double * ptparam,
double default_val, double min , double max, PARAM_CFG_DOUBLE::PARAM_CFG_DOUBLE( const wxChar* ident, double* ptparam,
const wxChar * group) double default_val, double min, double max,
: PARAM_CFG_BASE(ident, PARAM_DOUBLE, group) const wxChar* group ) :
PARAM_CFG_BASE( ident, PARAM_DOUBLE, group )
{ {
m_Pt_param = ptparam; m_Pt_param = ptparam;
m_Default = default_val; m_Default = default_val;
m_Min = min; m_Min = min;
m_Max = max; m_Max = max;
} }
PARAM_CFG_DOUBLE::PARAM_CFG_DOUBLE(bool Insetup, const wxChar * ident, double * ptparam,
double default_val, double min , double max,
const wxChar * group) PARAM_CFG_DOUBLE::PARAM_CFG_DOUBLE( bool Insetup, const wxChar* ident, double* ptparam,
: PARAM_CFG_BASE(ident, PARAM_DOUBLE, group) double default_val, double min, double max,
const wxChar* group ) :
PARAM_CFG_BASE( ident, PARAM_DOUBLE, group )
{ {
m_Pt_param = ptparam; m_Pt_param = ptparam;
m_Default = default_val; m_Default = default_val;
m_Min = min; m_Min = min;
m_Max = max; m_Max = max;
m_Setup = Insetup; m_Setup = Insetup;
} }
PARAM_CFG_BOOL::PARAM_CFG_BOOL(const wxChar * ident, bool * ptparam,
int default_val, const wxChar * group) PARAM_CFG_BOOL::PARAM_CFG_BOOL( const wxChar* ident, bool* ptparam,
: PARAM_CFG_BASE(ident, PARAM_BOOL, group) int default_val, const wxChar* group ) :
PARAM_CFG_BASE( ident, PARAM_BOOL, group )
{ {
m_Pt_param = ptparam; m_Pt_param = ptparam;
m_Default = default_val ? TRUE : FALSE; m_Default = default_val ? TRUE : FALSE;
} }
PARAM_CFG_BOOL::PARAM_CFG_BOOL(bool Insetup, const wxChar * ident, bool * ptparam,
int default_val, const wxChar * group) PARAM_CFG_BOOL::PARAM_CFG_BOOL( bool Insetup, const wxChar* ident, bool* ptparam,
: PARAM_CFG_BASE(ident, PARAM_BOOL, group) int default_val, const wxChar* group ) :
PARAM_CFG_BASE( ident, PARAM_BOOL, group )
{ {
m_Pt_param = ptparam; m_Pt_param = ptparam;
m_Default = default_val ? TRUE : FALSE; m_Default = default_val ? TRUE : FALSE;
m_Setup = Insetup; m_Setup = Insetup;
} }
PARAM_CFG_WXSTRING::PARAM_CFG_WXSTRING(const wxChar * ident,
wxString * ptparam, const wxChar * group) PARAM_CFG_WXSTRING::PARAM_CFG_WXSTRING( const wxChar* ident,
: PARAM_CFG_BASE(ident, PARAM_WXSTRING, group) wxString* ptparam, const wxChar* group ) :
PARAM_CFG_BASE( ident, PARAM_WXSTRING, group )
{ {
m_Pt_param = ptparam; m_Pt_param = ptparam;
} }
PARAM_CFG_WXSTRING::PARAM_CFG_WXSTRING(bool Insetup, const wxChar * ident,
wxString * ptparam, const wxChar * group) PARAM_CFG_WXSTRING::PARAM_CFG_WXSTRING( bool Insetup, const wxChar* ident,
: PARAM_CFG_BASE(ident, PARAM_WXSTRING, group) wxString* ptparam, const wxChar* group ) :
PARAM_CFG_BASE( ident, PARAM_WXSTRING, group )
{ {
m_Pt_param = ptparam; m_Pt_param = ptparam;
m_Setup = Insetup; m_Setup = Insetup;
} }
PARAM_CFG_LIBNAME_LIST::PARAM_CFG_LIBNAME_LIST(const wxChar * ident,
wxArrayString * ptparam, const wxChar * group) PARAM_CFG_LIBNAME_LIST::PARAM_CFG_LIBNAME_LIST( const wxChar* ident,
: PARAM_CFG_BASE(ident, PARAM_LIBNAME_LIST, group) wxArrayString* ptparam, const wxChar* group ) :
PARAM_CFG_BASE( ident, PARAM_LIBNAME_LIST, group )
{ {
m_Pt_param = ptparam; m_Pt_param = ptparam;
} }
/***********************************/ /***********************************/
/** pcbcfg() : configuration **/ /** pcbcfg() : configuration **/
/***********************************/ /***********************************/
/* lit ou met a jour la configuration de PCBNEW */ /* lit ou met a jour la configuration de PCBNEW */
...@@ -21,193 +21,200 @@ ...@@ -21,193 +21,200 @@
/* Variables locales */ /* Variables locales */
#define HOTKEY_FILENAME wxT("pcbnew") #define HOTKEY_FILENAME wxT( "pcbnew" )
/***********************************************************/ /***********************************************************/
void WinEDA_PcbFrame::Process_Config(wxCommandEvent& event) void WinEDA_PcbFrame::Process_Config( wxCommandEvent& event )
/***********************************************************/ /***********************************************************/
{ {
int id = event.GetId(); int id = event.GetId();
wxPoint pos; wxPoint pos;
wxClientDC dc(DrawPanel);
wxString FullFileName; wxClientDC dc( DrawPanel );
DrawPanel->PrepareGraphicContext(&dc); wxString FullFileName;
pos = GetPosition(); DrawPanel->PrepareGraphicContext( &dc );
pos.x += 20; pos.y += 20;
pos = GetPosition();
switch( id ) pos.x += 20;
{ pos.y += 20;
case ID_COLORS_SETUP :
DisplayColorSetupFrame(this, pos); switch( id )
break; {
case ID_COLORS_SETUP:
case ID_CONFIG_REQ : // Creation de la fenetre de configuration DisplayColorSetupFrame( this, pos );
InstallConfigFrame(pos); break;
break;
case ID_CONFIG_REQ: // Creation de la fenetre de configuration
case ID_PCB_TRACK_SIZE_SETUP: InstallConfigFrame( pos );
case ID_PCB_LOOK_SETUP: break;
case ID_OPTIONS_SETUP:
case ID_PCB_DRAWINGS_WIDTHS_SETUP: case ID_PCB_TRACK_SIZE_SETUP:
InstallPcbOptionsFrame(pos, &dc, id); case ID_PCB_LOOK_SETUP:
break; case ID_OPTIONS_SETUP:
case ID_PCB_DRAWINGS_WIDTHS_SETUP:
case ID_PCB_PAD_SETUP: InstallPcbOptionsFrame( pos, &dc, id );
InstallPadOptionsFrame( NULL, NULL, pos); break;
break;
case ID_PCB_PAD_SETUP:
case ID_CONFIG_SAVE: InstallPadOptionsFrame( NULL, NULL, pos );
Update_config(this); break;
break;
case ID_CONFIG_SAVE:
case ID_CONFIG_READ: Update_config( this );
FullFileName = GetScreen()->m_FileName.AfterLast('/'); break;
ChangeFileNameExt(FullFileName, g_Prj_Config_Filename_ext);
FullFileName = EDA_FileSelector(_("Read config file"), case ID_CONFIG_READ:
wxPathOnly(GetScreen()->m_FileName),/* Chemin par defaut */ FullFileName = GetScreen()->m_FileName.AfterLast( '/' );
FullFileName, /* nom fichier par defaut */ ChangeFileNameExt( FullFileName, g_Prj_Config_Filename_ext );
g_Prj_Config_Filename_ext, /* extension par defaut */ FullFileName = EDA_FileSelector( _( "Read config file" ),
FullFileName, /* Masque d'affichage */ wxPathOnly( GetScreen()->m_FileName ), /* Chemin par defaut */
this, FullFileName, /* nom fichier par defaut */
wxFD_OPEN, g_Prj_Config_Filename_ext, /* extension par defaut */
TRUE /* ne change pas de repertoire courant */ FullFileName, /* Masque d'affichage */
); this,
if ( FullFileName.IsEmpty()) break; wxFD_OPEN,
if ( ! wxFileExists(FullFileName) ) TRUE /* ne change pas de repertoire courant */
{ );
wxString msg; if( FullFileName.IsEmpty() )
msg.Printf(_("File %s not found"), FullFileName.GetData()); break;
DisplayError(this, msg); break; if( !wxFileExists( FullFileName ) )
} {
Read_Config(FullFileName ); wxString msg;
break; msg.Printf( _( "File %s not found" ), FullFileName.GetData() );
DisplayError( this, msg ); break;
case ID_PREFERENCES_CREATE_CONFIG_HOTKEYS: }
FullFileName = ReturnHotkeyConfigFilePath( g_ConfigFileLocationChoice ); Read_Config( FullFileName );
FullFileName += HOTKEY_FILENAME; break;
FullFileName += DEFAULT_HOTKEY_FILENAME_EXT;
WriteHotkeyConfigFile(FullFileName, s_Pcbnew_Editor_Hokeys_Descr, true); case ID_PREFERENCES_CREATE_CONFIG_HOTKEYS:
break; FullFileName = ReturnHotkeyConfigFilePath( g_ConfigFileLocationChoice );
FullFileName += HOTKEY_FILENAME;
case ID_PREFERENCES_READ_CONFIG_HOTKEYS: FullFileName += DEFAULT_HOTKEY_FILENAME_EXT;
Read_Hotkey_Config( this, true); WriteHotkeyConfigFile( FullFileName, s_Pcbnew_Editor_Hokeys_Descr, true );
break; break;
case ID_PREFERENCES_EDIT_CONFIG_HOTKEYS: case ID_PREFERENCES_READ_CONFIG_HOTKEYS:
{ Read_Hotkey_Config( this, true );
FullFileName = ReturnHotkeyConfigFilePath( g_ConfigFileLocationChoice ); break;
FullFileName += HOTKEY_FILENAME;
FullFileName += DEFAULT_HOTKEY_FILENAME_EXT; case ID_PREFERENCES_EDIT_CONFIG_HOTKEYS:
wxString editorname = GetEditorName(); {
if ( !editorname.IsEmpty() ) FullFileName = ReturnHotkeyConfigFilePath( g_ConfigFileLocationChoice );
ExecuteFile(this, editorname, FullFileName); FullFileName += HOTKEY_FILENAME;
break; FullFileName += DEFAULT_HOTKEY_FILENAME_EXT;
} wxString editorname = GetEditorName();
if( !editorname.IsEmpty() )
case ID_PREFERENCES_HOTKEY_PATH_IS_HOME: ExecuteFile( this, editorname, FullFileName );
case ID_PREFERENCES_HOTKEY_PATH_IS_KICAD: break;
HandleHotkeyConfigMenuSelection( this, id ); }
break;
case ID_PREFERENCES_HOTKEY_PATH_IS_HOME:
case ID_PREFERENCES_HOTKEY_SHOW_CURRENT_LIST: // Display Current hotkey list for eeschema case ID_PREFERENCES_HOTKEY_PATH_IS_KICAD:
DisplayHotkeyList( this, s_Board_Editor_Hokeys_Descr ); HandleHotkeyConfigMenuSelection( this, id );
break; break;
default: case ID_PREFERENCES_HOTKEY_SHOW_CURRENT_LIST: // Display Current hotkey list for eeschema
DisplayError(this, wxT("WinEDA_PcbFrame::Process_Config internal error")); DisplayHotkeyList( this, s_Board_Editor_Hokeys_Descr );
} break;
default:
DisplayError( this, wxT( "WinEDA_PcbFrame::Process_Config internal error" ) );
}
} }
/***************************************************************/ /***************************************************************/
bool Read_Hotkey_Config( WinEDA_DrawFrame * frame, bool verbose ) bool Read_Hotkey_Config( WinEDA_DrawFrame* frame, bool verbose )
/***************************************************************/ /***************************************************************/
/* /*
* Read the hotkey files config for pcbnew and module_edit * Read the hotkey files config for pcbnew and module_edit
*/ */
{ {
wxString FullFileName = ReturnHotkeyConfigFilePath( g_ConfigFileLocationChoice ); wxString FullFileName = ReturnHotkeyConfigFilePath( g_ConfigFileLocationChoice );
FullFileName += HOTKEY_FILENAME;
FullFileName += DEFAULT_HOTKEY_FILENAME_EXT; FullFileName += HOTKEY_FILENAME;
return frame->ReadHotkeyConfigFile(FullFileName, s_Pcbnew_Editor_Hokeys_Descr, verbose); FullFileName += DEFAULT_HOTKEY_FILENAME_EXT;
return frame->ReadHotkeyConfigFile( FullFileName, s_Pcbnew_Editor_Hokeys_Descr, verbose );
} }
/**************************************************************************/ /**************************************************************************/
bool Read_Config(const wxString & project_name) bool Read_Config( const wxString& project_name )
/*************************************************************************/ /*************************************************************************/
/* lit la configuration, si elle n'a pas deja ete lue
1 - lit <nom fichier brd>.pro
2 - si non trouve lit <chemin de *.exe>/kicad.pro
3 - si non trouve: init des variables aux valeurs par defaut
Retourne TRUE si lu, FALSE si config non lue ou non modifie /* lit la configuration, si elle n'a pas deja ete lue
*/ * 1 - lit <nom fichier brd>.pro
* 2 - si non trouve lit <chemin de *.exe>/kicad.pro
* 3 - si non trouve: init des variables aux valeurs par defaut
*
* Retourne TRUE si lu, FALSE si config non lue ou non modifie
*/
{ {
wxString FullFileName; wxString FullFileName;
int ii; int ii;
g_Prj_Config_Filename_ext = wxT(".pro"); g_Prj_Config_Filename_ext = wxT( ".pro" );
FullFileName = project_name; FullFileName = project_name;
ChangeFileNameExt(FullFileName, g_Prj_Config_Filename_ext); ChangeFileNameExt( FullFileName, g_Prj_Config_Filename_ext );
/* Init des valeurs par defaut */ /* Init des valeurs par defaut */
g_LibName_List.Clear(); g_LibName_List.Clear();
g_EDA_Appl->ReadProjectConfig( FullFileName, g_EDA_Appl->ReadProjectConfig( FullFileName,
GROUP, ParamCfgList, FALSE); GROUP, ParamCfgList, FALSE );
/* Traitement des variables particulieres: */ /* Traitement des variables particulieres: */
SetRealLibraryPath( wxT("modules") ); SetRealLibraryPath( wxT( "modules" ) );
if (ScreenPcb) if( ScreenPcb )
{ {
ScreenPcb->m_Diviseur_Grille = Pcbdiv_grille; ScreenPcb->m_Diviseur_Grille = Pcbdiv_grille;
ScreenPcb->m_UserGrid = g_UserGrid; ScreenPcb->m_UserGrid = g_UserGrid;
ScreenPcb->m_UserGridUnit = g_UserGrid_Unit; ScreenPcb->m_UserGridUnit = g_UserGrid_Unit;
} }
g_DesignSettings.m_TrackWidthHistory[0] = g_DesignSettings.m_CurrentTrackWidth; g_DesignSettings.m_TrackWidthHistory[0] = g_DesignSettings.m_CurrentTrackWidth;
g_DesignSettings.m_ViaSizeHistory[0] = g_DesignSettings.m_CurrentViaSize; g_DesignSettings.m_ViaSizeHistory[0] = g_DesignSettings.m_CurrentViaSize;
for ( ii = 1; ii < HISTORY_NUMBER; ii++) for( ii = 1; ii < HISTORY_NUMBER; ii++ )
{ {
g_DesignSettings.m_TrackWidthHistory[ii] = 0; g_DesignSettings.m_TrackWidthHistory[ii] = 0;
g_DesignSettings.m_ViaSizeHistory[ii] = 0; g_DesignSettings.m_ViaSizeHistory[ii] = 0;
} }
return TRUE; return TRUE;
} }
/**********************************************************/ /**********************************************************/
void WinEDA_PcbFrame::Update_config(wxWindow * displayframe) void WinEDA_PcbFrame::Update_config( wxWindow* displayframe )
/***********************************************************/ /***********************************************************/
/* enregistrement de la config */ /* enregistrement de la config */
{ {
wxString FullFileName; wxString FullFileName;
wxString mask; wxString mask;
mask = wxT("*") + g_Prj_Config_Filename_ext; mask = wxT( "*" ) + g_Prj_Config_Filename_ext;
FullFileName = GetScreen()->m_FileName.AfterLast('/'); FullFileName = GetScreen()->m_FileName.AfterLast( '/' );
ChangeFileNameExt(FullFileName, g_Prj_Config_Filename_ext); ChangeFileNameExt( FullFileName, g_Prj_Config_Filename_ext );
FullFileName = EDA_FileSelector(_("Save preferences"), FullFileName = EDA_FileSelector( _( "Save preferences" ),
wxPathOnly(GetScreen()->m_FileName), /* Chemin par defaut */ wxPathOnly( GetScreen()->m_FileName ), /* Chemin par defaut */
FullFileName, /* nom fichier par defaut */ FullFileName, /* nom fichier par defaut */
g_Prj_Config_Filename_ext, /* extension par defaut */ g_Prj_Config_Filename_ext, /* extension par defaut */
mask, /* Masque d'affichage */ mask, /* Masque d'affichage */
displayframe, displayframe,
wxFD_SAVE, wxFD_SAVE,
TRUE TRUE
); );
if ( FullFileName.IsEmpty() ) return; if( FullFileName.IsEmpty() )
return;
Pcbdiv_grille = GetScreen()->m_Diviseur_Grille;
Pcbdiv_grille = GetScreen()->m_Diviseur_Grille;
/* ecriture de la configuration */
g_EDA_Appl->WriteProjectConfig(FullFileName, wxT("/pcbnew"), ParamCfgList); /* ecriture de la configuration */
g_EDA_Appl->WriteProjectConfig( FullFileName, wxT( "/pcbnew" ), ParamCfgList );
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment