Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
K
kicad-source-mirror
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Elphel
kicad-source-mirror
Commits
8eff8df9
Commit
8eff8df9
authored
Feb 19, 2008
by
dickelbeck
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
beautify
parent
ce04867e
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
649 additions
and
581 deletions
+649
-581
common.cpp
common/common.cpp
+18
-18
edaappl.cpp
common/edaappl.cpp
+13
-7
projet_config.cpp
common/projet_config.cpp
+452
-397
pcbcfg.cpp
pcbnew/pcbcfg.cpp
+166
-159
No files found.
common/common.cpp
View file @
8eff8df9
...
...
@@ -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.
const
unsigned
LAYER_LIMIT
=
29
;
// @todo: these layer names should be configurable on a per project basis.
...
...
@@ -288,17 +288,17 @@ wxString ReturnPcbLayerName( int layer_number, bool omitSpacePadding )
// deriving the file names from the "configured" layer names.
// 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.
#if 1 // my specific layer names
#if 1 // my specific layer names
static
const
wxString
layer_name_list
[]
=
{
_
(
"H2 Bottom"
),
_
(
"Power"
),
_
(
"V2 Signal"
),
_
(
"H1 Signal"
),
_( "Ground" ), _( "Inner L5
" ), _( "Inner L6 " ), _( "Inner L7
" ),
_( "Inner L8
" ), _( "Inner L9 " ),
_( "Inner L10" ), _( "Inner L11" ),
_
(
"Ground"
),
_
(
"Inner L5
"
),
_
(
"Inner L6"
),
_
(
"Inner L7
"
),
_
(
"Inner L8
"
),
_
(
"Inner L9"
),
_
(
"Inner L10"
),
_
(
"Inner L11"
),
_
(
"Inner L12"
),
_
(
"Inner L13"
),
_
(
"Inner L14"
),
_
(
"Component"
),
_
(
"Adhes Cop"
),
_
(
"Adhes Cmp"
),
_
(
"SoldP Cop"
),
_
(
"SoldP Cmp"
),
_( "SilkS Cop" ), _( "SilkS Cmp" ), _( "Mask Cop
" ), _( "Mask Cmp
" ),
_( "Drawings " ), _( "Comments
" ), _( "Eco1 " ), _( "Eco2
" ),
_
(
"SilkS Cop"
),
_
(
"SilkS Cmp"
),
_
(
"Mask Cop
"
),
_
(
"Mask Cmp
"
),
_
(
"Drawings "
),
_
(
"Comments
"
),
_
(
"Eco1"
),
_
(
"Eco2
"
),
_
(
"Edges Pcb"
),
_
(
"BAD INDEX"
),
};
#else
...
...
@@ -319,22 +319,22 @@ wxString ReturnPcbLayerName( int layer_number, bool omitSpacePadding )
layer_number
=
LAYER_LIMIT
;
const
wxString
*
p
=
&
layer_name_list
[
layer_number
];
if
(
omitSpacePadding
)
{
wxString
ret
=
*
p
;
// copy the string
// modify the copy
ret
.
Trim
();
ret
.
Replace
(
wxT
(
" "
),
wxT
(
"_"
)
);
return
ret
;
}
else
return
*
p
;
#else // long standing established code:
static
const
wxString
layer_name_list
[]
=
{
_
(
"Copper "
),
_
(
"Inner L1 "
),
_
(
"Inner L2 "
),
_
(
"Inner L3 "
),
_
(
"Inner L4 "
),
_
(
"Inner L5 "
),
_
(
"Inner L6 "
),
_
(
"Inner L7 "
),
...
...
@@ -346,7 +346,7 @@ wxString ReturnPcbLayerName( int layer_number, bool omitSpacePadding )
_
(
"Edges Pcb"
),
_
(
"--- "
),
_
(
"--- "
),
_
(
"--- "
)
};
// Same as layer_name_list, without space, not internationalized
static
const
wxString
layer_name_list_for_filename
[]
=
{
wxT
(
"Copper"
),
wxT
(
"InnerL1"
),
wxT
(
"InnerL2"
),
wxT
(
"InnerL3"
),
...
...
@@ -358,16 +358,16 @@ wxString ReturnPcbLayerName( int layer_number, bool omitSpacePadding )
wxT
(
"Drawings"
),
wxT
(
"Comments"
),
wxT
(
"Eco1"
),
wxT
(
"Eco2"
),
wxT
(
"EdgesPcb"
),
wxT
(
"---"
),
wxT
(
"---"
),
wxT
(
"---"
)
};
if
(
(
unsigned
)
layer_number
>=
31u
)
layer_number
=
31
;
return
omitSpacePadding
?
return
omitSpacePadding
?
layer_name_list_for_filename
[
layer_number
]
:
layer_name_list
[
layer_number
];
#endif
}
...
...
@@ -509,6 +509,6 @@ const wxString& valeur_param( int valeur, wxString& buf_texte )
{
buf_texte
.
Printf
(
wxT
(
"%2.4f
\"
"
),
valeur
*
0.0001
);
}
return
buf_texte
;
}
common/edaappl.cpp
View file @
8eff8df9
...
...
@@ -118,8 +118,8 @@ void WinEDA_App::InitEDA_Appl( const wxString& name )
/* Init kicad environment
* 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
);
if
(
m_Env_Defined
)
// ensure m_KicadEnv ends by "/"
{
...
...
@@ -214,7 +214,7 @@ bool WinEDA_App::SetBinDir()
if
(
str
==
NULL
)
return
false
;
char
*
native_str
=
NULL
;
int
len
=
CFStringGetMaximumSizeForEncoding
(
CFStringGetLength
(
str
),
kCFStringEncodingUTF8
)
+
1
;
kCFStringEncodingUTF8
)
+
1
;
native_str
=
new
char
[
len
];
CFStringGetCString
(
str
,
native_str
,
len
,
kCFStringEncodingUTF8
);
m_BinDir
=
CONV_FROM_UTF8
(
native_str
);
...
...
@@ -222,7 +222,7 @@ bool WinEDA_App::SetBinDir()
#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>".
FILE
*
ftmp
;
...
...
@@ -270,7 +270,8 @@ void WinEDA_App::GetSettings()
wxString
Line
,
Ident
;
unsigned
ii
;
m_HelpSize
.
x
=
500
;
m_HelpSize
.
y
=
400
;
m_HelpSize
.
x
=
500
;
m_HelpSize
.
y
=
400
;
if
(
m_EDA_CommonConfig
)
{
...
...
@@ -285,8 +286,11 @@ void WinEDA_App::GetSettings()
for
(
ii
=
0
;
ii
<
10
;
ii
++
)
{
Ident
=
wxT
(
"LastProject"
);
if
(
ii
)
Ident
=
wxT
(
"LastProject"
);
if
(
ii
)
Ident
<<
ii
;
if
(
m_EDA_Config
->
Read
(
Ident
,
&
Line
)
)
m_LastProject
.
Add
(
Line
);
}
...
...
@@ -299,6 +303,7 @@ void WinEDA_App::GetSettings()
Line
=
m_EDA_Config
->
Read
(
wxT
(
"SdtFontType"
),
wxEmptyString
);
if
(
!
Line
.
IsEmpty
()
)
g_StdFont
->
SetFaceName
(
Line
);
ii
=
m_EDA_Config
->
Read
(
wxT
(
"SdtFontStyle"
),
wxFONTFAMILY_ROMAN
);
g_StdFont
->
SetStyle
(
ii
);
ii
=
m_EDA_Config
->
Read
(
wxT
(
"SdtFontWeight"
),
wxNORMAL
);
...
...
@@ -309,6 +314,7 @@ void WinEDA_App::GetSettings()
Line
=
m_EDA_Config
->
Read
(
wxT
(
"MsgFontType"
),
wxEmptyString
);
if
(
!
Line
.
IsEmpty
()
)
g_MsgFont
->
SetFaceName
(
Line
);
ii
=
m_EDA_Config
->
Read
(
wxT
(
"MsgFontStyle"
),
wxFONTFAMILY_ROMAN
);
g_MsgFont
->
SetStyle
(
ii
);
ii
=
m_EDA_Config
->
Read
(
wxT
(
"MsgFontWeight"
),
wxNORMAL
);
...
...
@@ -318,6 +324,7 @@ void WinEDA_App::GetSettings()
Line
=
m_EDA_Config
->
Read
(
wxT
(
"DialogFontType"
),
wxEmptyString
);
if
(
!
Line
.
IsEmpty
()
)
g_DialogFont
->
SetFaceName
(
Line
);
ii
=
m_EDA_Config
->
Read
(
wxT
(
"DialogFontStyle"
),
wxFONTFAMILY_ROMAN
);
g_DialogFont
->
SetStyle
(
ii
);
ii
=
m_EDA_Config
->
Read
(
wxT
(
"DialogFontWeight"
),
wxNORMAL
);
...
...
@@ -343,7 +350,6 @@ void WinEDA_App::SaveSettings()
{
unsigned
int
ii
;
if
(
m_EDA_Config
==
NULL
)
return
;
...
...
common/projet_config.cpp
View file @
8eff8df9
/**************************************************/
/* projet_config : routines de trace du cartouche */
/**************************************************/
/**************************************************/
/* projet_config : routines de trace du cartouche */
/**************************************************/
#include "fctsys.h"
#include "gr_basic.h"
...
...
@@ -13,341 +13,386 @@
/*********************************************************************/
static
bool
ReCreatePrjConfig
(
const
wxString
&
local_config_filename
,
const
wxString
&
GroupName
,
bool
ForceUseLocalConfig
)
static
bool
ReCreatePrjConfig
(
const
wxString
&
local_config_filename
,
const
wxString
&
GroupName
,
bool
ForceUseLocalConfig
)
/*********************************************************************/
/* Cree ou recree la configuration locale de kicad (filename.pro)
initialise:
g_Prj_Config
g_Prj_Config_LocalFilename
g_Prj_Default_Config_FullFilename
return:
TRUE si config locale
FALSE si default config
*/
*
initialise:
*
g_Prj_Config
*
g_Prj_Config_LocalFilename
*
g_Prj_Default_Config_FullFilename
*
return:
*
TRUE si config locale
*
FALSE si default config
*/
{
// free old config
if
(
g_Prj_Config
)
delete
g_Prj_Config
;
g_Prj_Config
=
NULL
;
// Init local Config filename
if
(
local_config_filename
.
IsEmpty
()
)
g_Prj_Config_LocalFilename
=
wxT
(
"kicad"
);
else
g_Prj_Config_LocalFilename
=
local_config_filename
;
ChangeFileNameExt
(
g_Prj_Config_LocalFilename
,
g_Prj_Config_Filename_ext
);
// Init local config filename
if
(
ForceUseLocalConfig
||
wxFileExists
(
g_Prj_Config_LocalFilename
)
)
{
g_Prj_Default_Config_FullFilename
.
Empty
();
g_Prj_Config
=
new
wxFileConfig
(
wxEmptyString
,
wxEmptyString
,
g_Prj_Config_LocalFilename
,
wxEmptyString
,
wxCONFIG_USE_RELATIVE_PATH
);
g_Prj_Config
->
DontCreateOnDemand
();
if
(
ForceUseLocalConfig
)
return
TRUE
;
// Test de la bonne version du fichier (ou groupe) de configuration
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
);
if
(
version
>
0
)
return
TRUE
;
else
delete
g_Prj_Config
;
// Version incorrecte
}
// Fichier local non trouve ou invalide
g_Prj_Config_LocalFilename
.
Empty
();
g_Prj_Default_Config_FullFilename
=
ReturnKicadDatasPath
()
+
wxT
(
"template/kicad"
)
+
g_Prj_Config_Filename_ext
;
// 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
;
// free old config
if
(
g_Prj_Config
)
delete
g_Prj_Config
;
g_Prj_Config
=
NULL
;
// Init local Config filename
if
(
local_config_filename
.
IsEmpty
()
)
g_Prj_Config_LocalFilename
=
wxT
(
"kicad"
);
else
g_Prj_Config_LocalFilename
=
local_config_filename
;
ChangeFileNameExt
(
g_Prj_Config_LocalFilename
,
g_Prj_Config_Filename_ext
);
// Init local config filename
if
(
ForceUseLocalConfig
||
wxFileExists
(
g_Prj_Config_LocalFilename
)
)
{
g_Prj_Default_Config_FullFilename
.
Empty
();
g_Prj_Config
=
new
wxFileConfig
(
wxEmptyString
,
wxEmptyString
,
g_Prj_Config_LocalFilename
,
wxEmptyString
,
wxCONFIG_USE_RELATIVE_PATH
);
g_Prj_Config
->
DontCreateOnDemand
();
if
(
ForceUseLocalConfig
)
return
TRUE
;
// Test de la bonne version du fichier (ou groupe) de configuration
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
);
if
(
version
>
0
)
return
TRUE
;
else
delete
g_Prj_Config
;
// Version incorrecte
}
// Fichier local non trouve ou invalide
g_Prj_Config_LocalFilename
.
Empty
();
g_Prj_Default_Config_FullFilename
=
ReturnKicadDatasPath
()
+
wxT
(
"template/kicad"
)
+
g_Prj_Config_Filename_ext
;
// 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
,
const
wxString
&
GroupName
,
PARAM_CFG_BASE
**
List
)
void
WinEDA_App
::
WriteProjectConfig
(
const
wxString
&
local_config_filename
,
const
wxString
&
GroupName
,
PARAM_CFG_BASE
**
List
)
/***************************************************************************************/
/* enregistrement de la config "projet"*/
{
const
PARAM_CFG_BASE
*
pt_cfg
;
wxString
msg
;
ReCreatePrjConfig
(
local_config_filename
,
GroupName
,
FORCE_LOCAL_CONFIG
);
/* Write date ( surtout pour eviter bug de wxFileConfig
qui se trompe de rubrique si declaration [xx] en premiere ligne
(en fait si groupe vide) */
g_Prj_Config
->
SetPath
(
UNIX_STRING_DIR_SEP
);
msg
=
DateAndTime
();
g_Prj_Config
->
Write
(
wxT
(
"update"
),
msg
);
msg
=
GetAppName
();
g_Prj_Config
->
Write
(
wxT
(
"last_client"
),
msg
);
/* ecriture de la configuration */
g_Prj_Config
->
DeleteGroup
(
GroupName
);
// Erase all datas
g_Prj_Config
->
Flush
();
g_Prj_Config
->
SetPath
(
GroupName
);
g_Prj_Config
->
Write
(
wxT
(
"version"
),
CONFIG_VERSION
);
g_Prj_Config
->
SetPath
(
UNIX_STRING_DIR_SEP
);
for
(
;
*
List
!=
NULL
;
List
++
)
{
pt_cfg
=
*
List
;
if
(
pt_cfg
->
m_Group
)
g_Prj_Config
->
SetPath
(
pt_cfg
->
m_Group
);
else
g_Prj_Config
->
SetPath
(
GroupName
);
switch
(
pt_cfg
->
m_Type
)
{
case
PARAM_INT
:
#undef PTCFG
#define PTCFG ((PARAM_CFG_INT *)pt_cfg)
if
(
PTCFG
->
m_Pt_param
==
NULL
)
break
;
if
(
pt_cfg
->
m_Setup
)
m_EDA_Config
->
Write
(
pt_cfg
->
m_Ident
,
*
PTCFG
->
m_Pt_param
);
else
g_Prj_Config
->
Write
(
pt_cfg
->
m_Ident
,
*
PTCFG
->
m_Pt_param
);
break
;
case
PARAM_SETCOLOR
:
#undef PTCFG
#define PTCFG ((PARAM_CFG_SETCOLOR *)pt_cfg)
if
(
PTCFG
->
m_Pt_param
==
NULL
)
break
;
if
(
pt_cfg
->
m_Setup
)
m_EDA_Config
->
Write
(
pt_cfg
->
m_Ident
,
*
PTCFG
->
m_Pt_param
);
else
g_Prj_Config
->
Write
(
pt_cfg
->
m_Ident
,
*
PTCFG
->
m_Pt_param
);
break
;
case
PARAM_DOUBLE
:
#undef PTCFG
#define PTCFG ((PARAM_CFG_DOUBLE *)pt_cfg)
if
(
PTCFG
->
m_Pt_param
==
NULL
)
break
;
if
(
pt_cfg
->
m_Setup
)
m_EDA_Config
->
Write
(
pt_cfg
->
m_Ident
,
*
PTCFG
->
m_Pt_param
);
else
g_Prj_Config
->
Write
(
pt_cfg
->
m_Ident
,
*
PTCFG
->
m_Pt_param
);
break
;
case
PARAM_BOOL
:
#undef PTCFG
#define PTCFG ((PARAM_CFG_BOOL *)pt_cfg)
if
(
PTCFG
->
m_Pt_param
==
NULL
)
break
;
if
(
pt_cfg
->
m_Setup
)
m_EDA_Config
->
Write
(
pt_cfg
->
m_Ident
,
(
int
)
*
PTCFG
->
m_Pt_param
);
else
g_Prj_Config
->
Write
(
pt_cfg
->
m_Ident
,
(
int
)
*
PTCFG
->
m_Pt_param
);
break
;
case
PARAM_WXSTRING
:
#undef PTCFG
#define PTCFG ((PARAM_CFG_WXSTRING *)pt_cfg)
if
(
PTCFG
->
m_Pt_param
==
NULL
)
break
;
if
(
pt_cfg
->
m_Setup
)
m_EDA_Config
->
Write
(
pt_cfg
->
m_Ident
,
*
PTCFG
->
m_Pt_param
);
else
g_Prj_Config
->
Write
(
pt_cfg
->
m_Ident
,
*
PTCFG
->
m_Pt_param
);
break
;
case
PARAM_LIBNAME_LIST
:
{
#undef PTCFG
#define PTCFG ((PARAM_CFG_LIBNAME_LIST *)pt_cfg)
if
(
PTCFG
->
m_Pt_param
==
NULL
)
break
;
wxArrayString
*
libname_list
=
PTCFG
->
m_Pt_param
;
if
(
libname_list
==
NULL
)
break
;
unsigned
indexlib
=
0
;
wxString
cle_config
;
for
(
;
indexlib
<
libname_list
->
GetCount
();
indexlib
++
)
{
cle_config
=
pt_cfg
->
m_Ident
;
// 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
;
const
PARAM_CFG_BASE
*
pt_cfg
;
wxString
msg
;
ReCreatePrjConfig
(
local_config_filename
,
GroupName
,
FORCE_LOCAL_CONFIG
);
/* Write date ( surtout pour eviter bug de wxFileConfig
* qui se trompe de rubrique si declaration [xx] en premiere ligne
* (en fait si groupe vide) */
g_Prj_Config
->
SetPath
(
UNIX_STRING_DIR_SEP
);
msg
=
DateAndTime
();
g_Prj_Config
->
Write
(
wxT
(
"update"
),
msg
);
msg
=
GetAppName
();
g_Prj_Config
->
Write
(
wxT
(
"last_client"
),
msg
);
/* ecriture de la configuration */
g_Prj_Config
->
DeleteGroup
(
GroupName
);
// Erase all datas
g_Prj_Config
->
Flush
();
g_Prj_Config
->
SetPath
(
GroupName
);
g_Prj_Config
->
Write
(
wxT
(
"version"
),
CONFIG_VERSION
);
g_Prj_Config
->
SetPath
(
UNIX_STRING_DIR_SEP
);
for
(
;
*
List
!=
NULL
;
List
++
)
{
pt_cfg
=
*
List
;
if
(
pt_cfg
->
m_Group
)
g_Prj_Config
->
SetPath
(
pt_cfg
->
m_Group
);
else
g_Prj_Config
->
SetPath
(
GroupName
);
switch
(
pt_cfg
->
m_Type
)
{
case
PARAM_INT
:
#undef PTCFG
#define PTCFG ( (PARAM_CFG_INT*) pt_cfg )
if
(
PTCFG
->
m_Pt_param
==
NULL
)
break
;
if
(
pt_cfg
->
m_Setup
)
m_EDA_Config
->
Write
(
pt_cfg
->
m_Ident
,
*
PTCFG
->
m_Pt_param
);
else
g_Prj_Config
->
Write
(
pt_cfg
->
m_Ident
,
*
PTCFG
->
m_Pt_param
);
break
;
case
PARAM_SETCOLOR
:
#undef PTCFG
#define PTCFG ( (PARAM_CFG_SETCOLOR*) pt_cfg )
if
(
PTCFG
->
m_Pt_param
==
NULL
)
break
;
if
(
pt_cfg
->
m_Setup
)
m_EDA_Config
->
Write
(
pt_cfg
->
m_Ident
,
*
PTCFG
->
m_Pt_param
);
else
g_Prj_Config
->
Write
(
pt_cfg
->
m_Ident
,
*
PTCFG
->
m_Pt_param
);
break
;
case
PARAM_DOUBLE
:
#undef PTCFG
#define PTCFG ( (PARAM_CFG_DOUBLE*) pt_cfg )
if
(
PTCFG
->
m_Pt_param
==
NULL
)
break
;
if
(
pt_cfg
->
m_Setup
)
m_EDA_Config
->
Write
(
pt_cfg
->
m_Ident
,
*
PTCFG
->
m_Pt_param
);
else
g_Prj_Config
->
Write
(
pt_cfg
->
m_Ident
,
*
PTCFG
->
m_Pt_param
);
break
;
case
PARAM_BOOL
:
#undef PTCFG
#define PTCFG ( (PARAM_CFG_BOOL*) pt_cfg )
if
(
PTCFG
->
m_Pt_param
==
NULL
)
break
;
if
(
pt_cfg
->
m_Setup
)
m_EDA_Config
->
Write
(
pt_cfg
->
m_Ident
,
(
int
)
*
PTCFG
->
m_Pt_param
);
else
g_Prj_Config
->
Write
(
pt_cfg
->
m_Ident
,
(
int
)
*
PTCFG
->
m_Pt_param
);
break
;
case
PARAM_WXSTRING
:
#undef PTCFG
#define PTCFG ( (PARAM_CFG_WXSTRING*) pt_cfg )
if
(
PTCFG
->
m_Pt_param
==
NULL
)
break
;
if
(
pt_cfg
->
m_Setup
)
m_EDA_Config
->
Write
(
pt_cfg
->
m_Ident
,
*
PTCFG
->
m_Pt_param
);
else
g_Prj_Config
->
Write
(
pt_cfg
->
m_Ident
,
*
PTCFG
->
m_Pt_param
);
break
;
case
PARAM_LIBNAME_LIST
:
{
#undef PTCFG
#define PTCFG ( (PARAM_CFG_LIBNAME_LIST*) pt_cfg )
if
(
PTCFG
->
m_Pt_param
==
NULL
)
break
;
wxArrayString
*
libname_list
=
PTCFG
->
m_Pt_param
;
if
(
libname_list
==
NULL
)
break
;
unsigned
indexlib
=
0
;
wxString
cle_config
;
for
(
;
indexlib
<
libname_list
->
GetCount
();
indexlib
++
)
{
cle_config
=
pt_cfg
->
m_Ident
;
// 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
,
const
wxString
&
GroupName
,
PARAM_CFG_BASE
**
List
,
bool
Load_Only_if_New
)
bool
WinEDA_App
::
ReadProjectConfig
(
const
wxString
&
local_config_filename
,
const
wxString
&
GroupName
,
PARAM_CFG_BASE
**
List
,
bool
Load_Only_if_New
)
/***************************************************************************************/
/* Lecture de la config "projet"
*** si Load_Only_if_New == TRUE, elle n'est lue que si elle
*** est differente de la config actuelle (dates differentes)
return:
TRUE si lue.
Met a jour en plus:
g_EDA_Appl->m_CurrentOptionFileDateAndTime
g_EDA_Appl->m_CurrentOptionFile
*/
*** si Load_Only_if_New == TRUE, elle n'est lue que si elle
*** est differente de la config actuelle (dates differentes)
*
*
return:
*
TRUE si lue.
*
Met a jour en plus:
*
g_EDA_Appl->m_CurrentOptionFileDateAndTime
*
g_EDA_Appl->m_CurrentOptionFile
*/
{
const
PARAM_CFG_BASE
*
pt_cfg
;
wxString
timestamp
;
if
(
List
==
NULL
)
return
FALSE
;
ReCreatePrjConfig
(
local_config_filename
,
GroupName
,
FALSE
);
g_Prj_Config
->
SetPath
(
UNIX_STRING_DIR_SEP
);
timestamp
=
g_Prj_Config
->
Read
(
wxT
(
"update"
)
);
if
(
Load_Only_if_New
&&
(
!
timestamp
.
IsEmpty
()
)
&&
(
timestamp
==
g_EDA_Appl
->
m_CurrentOptionFileDateAndTime
)
)
{
return
FALSE
;
}
g_EDA_Appl
->
m_CurrentOptionFileDateAndTime
=
timestamp
;
if
(
!
g_Prj_Default_Config_FullFilename
.
IsEmpty
()
)
g_EDA_Appl
->
m_CurrentOptionFile
=
g_Prj_Default_Config_FullFilename
;
else
{
if
(
wxPathOnly
(
g_Prj_Config_LocalFilename
).
IsEmpty
()
)
g_EDA_Appl
->
m_CurrentOptionFile
=
wxGetCwd
()
+
STRING_DIR_SEP
+
g_Prj_Config_LocalFilename
;
else
g_EDA_Appl
->
m_CurrentOptionFile
=
g_Prj_Config_LocalFilename
;
}
for
(
;
*
List
!=
NULL
;
List
++
)
{
pt_cfg
=
*
List
;
if
(
pt_cfg
->
m_Group
)
g_Prj_Config
->
SetPath
(
pt_cfg
->
m_Group
);
else
g_Prj_Config
->
SetPath
(
GroupName
);
switch
(
pt_cfg
->
m_Type
)
{
case
PARAM_INT
:
{
#undef PTCFG
#define PTCFG ((PARAM_CFG_INT *)pt_cfg)
int
itmp
;
if
(
pt_cfg
->
m_Setup
)
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
);
if
(
(
itmp
<
PTCFG
->
m_Min
)
||
(
itmp
>
PTCFG
->
m_Max
)
)
itmp
=
PTCFG
->
m_Default
;
*
PTCFG
->
m_Pt_param
=
itmp
;
break
;
}
case
PARAM_SETCOLOR
:
{
#undef PTCFG
#define PTCFG ((PARAM_CFG_SETCOLOR *)pt_cfg)
int
itmp
;
if
(
pt_cfg
->
m_Setup
)
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
);
if
(
(
itmp
<
0
)
||
(
itmp
>
MAX_COLOR
)
)
itmp
=
PTCFG
->
m_Default
;
*
PTCFG
->
m_Pt_param
=
itmp
;
break
;
}
case
PARAM_DOUBLE
:
{
#undef PTCFG
#define PTCFG ((PARAM_CFG_DOUBLE *)pt_cfg)
double
ftmp
=
0
;
wxString
msg
;
if
(
pt_cfg
->
m_Setup
)
msg
=
m_EDA_Config
->
Read
(
pt_cfg
->
m_Ident
,
wxT
(
""
)
);
else
msg
=
g_Prj_Config
->
Read
(
pt_cfg
->
m_Ident
,
wxT
(
""
)
);
if
(
msg
.
IsEmpty
()
)
ftmp
=
PTCFG
->
m_Default
;
else
{
msg
.
ToDouble
(
&
ftmp
);
if
(
(
ftmp
<
PTCFG
->
m_Min
)
||
(
ftmp
>
PTCFG
->
m_Max
)
)
ftmp
=
PTCFG
->
m_Default
;
}
*
PTCFG
->
m_Pt_param
=
ftmp
;
break
;
}
case
PARAM_BOOL
:
{
#undef PTCFG
#define PTCFG ((PARAM_CFG_BOOL *)pt_cfg)
int
itmp
;
if
(
pt_cfg
->
m_Setup
)
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
);
*
PTCFG
->
m_Pt_param
=
itmp
?
TRUE
:
FALSE
;
break
;
}
case
PARAM_WXSTRING
:
{
#undef PTCFG
#define PTCFG ((PARAM_CFG_WXSTRING *)pt_cfg)
if
(
PTCFG
->
m_Pt_param
==
NULL
)
break
;
if
(
pt_cfg
->
m_Setup
)
*
PTCFG
->
m_Pt_param
=
m_EDA_Config
->
Read
(
pt_cfg
->
m_Ident
);
else
*
PTCFG
->
m_Pt_param
=
g_Prj_Config
->
Read
(
pt_cfg
->
m_Ident
);
break
;
}
case
PARAM_LIBNAME_LIST
:
{
#undef PTCFG
#define PTCFG ((PARAM_CFG_LIBNAME_LIST *)pt_cfg)
int
indexlib
=
1
;
// We start indexlib to 1 because first lib name is LibName1
wxString
libname
,
id_lib
;
wxArrayString
*
libname_list
=
PTCFG
->
m_Pt_param
;
while
(
1
)
{
id_lib
=
pt_cfg
->
m_Ident
;
id_lib
<<
indexlib
;
indexlib
++
;
libname
=
g_Prj_Config
->
Read
(
id_lib
,
wxT
(
""
)
);
if
(
libname
.
IsEmpty
()
)
break
;
libname_list
->
Add
(
libname
);
}
break
;
}
case
PARAM_COMMAND_ERASE
:
break
;
}
}
delete
g_Prj_Config
;
g_Prj_Config
=
NULL
;
return
TRUE
;
const
PARAM_CFG_BASE
*
pt_cfg
;
wxString
timestamp
;
if
(
List
==
NULL
)
return
FALSE
;
ReCreatePrjConfig
(
local_config_filename
,
GroupName
,
FALSE
);
g_Prj_Config
->
SetPath
(
UNIX_STRING_DIR_SEP
);
timestamp
=
g_Prj_Config
->
Read
(
wxT
(
"update"
)
);
if
(
Load_Only_if_New
&&
(
!
timestamp
.
IsEmpty
()
)
&&
(
timestamp
==
g_EDA_Appl
->
m_CurrentOptionFileDateAndTime
)
)
{
return
FALSE
;
}
g_EDA_Appl
->
m_CurrentOptionFileDateAndTime
=
timestamp
;
if
(
!
g_Prj_Default_Config_FullFilename
.
IsEmpty
()
)
g_EDA_Appl
->
m_CurrentOptionFile
=
g_Prj_Default_Config_FullFilename
;
else
{
if
(
wxPathOnly
(
g_Prj_Config_LocalFilename
).
IsEmpty
()
)
g_EDA_Appl
->
m_CurrentOptionFile
=
wxGetCwd
()
+
STRING_DIR_SEP
+
g_Prj_Config_LocalFilename
;
else
g_EDA_Appl
->
m_CurrentOptionFile
=
g_Prj_Config_LocalFilename
;
}
for
(
;
*
List
!=
NULL
;
List
++
)
{
pt_cfg
=
*
List
;
if
(
pt_cfg
->
m_Group
)
g_Prj_Config
->
SetPath
(
pt_cfg
->
m_Group
);
else
g_Prj_Config
->
SetPath
(
GroupName
);
switch
(
pt_cfg
->
m_Type
)
{
case
PARAM_INT
:
{
#undef PTCFG
#define PTCFG ( (PARAM_CFG_INT*) pt_cfg )
int
itmp
;
if
(
pt_cfg
->
m_Setup
)
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
);
if
(
(
itmp
<
PTCFG
->
m_Min
)
||
(
itmp
>
PTCFG
->
m_Max
)
)
itmp
=
PTCFG
->
m_Default
;
*
PTCFG
->
m_Pt_param
=
itmp
;
break
;
}
case
PARAM_SETCOLOR
:
{
#undef PTCFG
#define PTCFG ( (PARAM_CFG_SETCOLOR*) pt_cfg )
int
itmp
;
if
(
pt_cfg
->
m_Setup
)
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
);
if
(
(
itmp
<
0
)
||
(
itmp
>
MAX_COLOR
)
)
itmp
=
PTCFG
->
m_Default
;
*
PTCFG
->
m_Pt_param
=
itmp
;
break
;
}
case
PARAM_DOUBLE
:
{
#undef PTCFG
#define PTCFG ( (PARAM_CFG_DOUBLE*) pt_cfg )
double
ftmp
=
0
;
wxString
msg
;
if
(
pt_cfg
->
m_Setup
)
msg
=
m_EDA_Config
->
Read
(
pt_cfg
->
m_Ident
,
wxT
(
""
)
);
else
msg
=
g_Prj_Config
->
Read
(
pt_cfg
->
m_Ident
,
wxT
(
""
)
);
if
(
msg
.
IsEmpty
()
)
ftmp
=
PTCFG
->
m_Default
;
else
{
msg
.
ToDouble
(
&
ftmp
);
if
(
(
ftmp
<
PTCFG
->
m_Min
)
||
(
ftmp
>
PTCFG
->
m_Max
)
)
ftmp
=
PTCFG
->
m_Default
;
}
*
PTCFG
->
m_Pt_param
=
ftmp
;
break
;
}
case
PARAM_BOOL
:
{
#undef PTCFG
#define PTCFG ( (PARAM_CFG_BOOL*) pt_cfg )
int
itmp
;
if
(
pt_cfg
->
m_Setup
)
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
);
*
PTCFG
->
m_Pt_param
=
itmp
?
TRUE
:
FALSE
;
break
;
}
case
PARAM_WXSTRING
:
{
#undef PTCFG
#define PTCFG ( (PARAM_CFG_WXSTRING*) pt_cfg )
if
(
PTCFG
->
m_Pt_param
==
NULL
)
break
;
if
(
pt_cfg
->
m_Setup
)
*
PTCFG
->
m_Pt_param
=
m_EDA_Config
->
Read
(
pt_cfg
->
m_Ident
);
else
*
PTCFG
->
m_Pt_param
=
g_Prj_Config
->
Read
(
pt_cfg
->
m_Ident
);
break
;
}
case
PARAM_LIBNAME_LIST
:
{
#undef PTCFG
#define PTCFG ( (PARAM_CFG_LIBNAME_LIST*) pt_cfg )
int
indexlib
=
1
;
// We start indexlib to 1 because first lib name is LibName1
wxString
libname
,
id_lib
;
wxArrayString
*
libname_list
=
PTCFG
->
m_Pt_param
;
while
(
1
)
{
id_lib
=
pt_cfg
->
m_Ident
;
id_lib
<<
indexlib
;
indexlib
++
;
libname
=
g_Prj_Config
->
Read
(
id_lib
,
wxT
(
""
)
);
if
(
libname
.
IsEmpty
()
)
break
;
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;
/* Constructeurs des descripteurs de structs de configuration */
/**************************************************************/
PARAM_CFG_BASE
::
PARAM_CFG_BASE
(
const
wxChar
*
ident
,
const
paramcfg_id
type
,
const
wxChar
*
group
)
PARAM_CFG_BASE
::
PARAM_CFG_BASE
(
const
wxChar
*
ident
,
const
paramcfg_id
type
,
const
wxChar
*
group
)
{
m_Ident
=
ident
;
m_Type
=
type
;
m_Group
=
group
;
m_Setup
=
FALSE
;
m_Ident
=
ident
;
m_Type
=
type
;
m_Group
=
group
;
m_Setup
=
FALSE
;
}
PARAM_CFG_INT
::
PARAM_CFG_INT
(
const
wxChar
*
ident
,
int
*
ptparam
,
int
default_val
,
int
min
,
int
max
,
const
wxChar
*
group
)
:
PARAM_CFG_BASE
(
ident
,
PARAM_INT
,
group
)
PARAM_CFG_INT
::
PARAM_CFG_INT
(
const
wxChar
*
ident
,
int
*
ptparam
,
int
default_val
,
int
min
,
int
max
,
const
wxChar
*
group
)
:
PARAM_CFG_BASE
(
ident
,
PARAM_INT
,
group
)
{
m_Pt_param
=
ptparam
;
m_Default
=
default_val
;
m_Min
=
min
;
m_Max
=
max
;
m_Pt_param
=
ptparam
;
m_Default
=
default_val
;
m_Min
=
min
;
m_Max
=
max
;
}
PARAM_CFG_INT
::
PARAM_CFG_INT
(
bool
Insetup
,
const
wxChar
*
ident
,
int
*
ptparam
,
int
default_val
,
int
min
,
int
max
,
const
wxChar
*
group
)
:
PARAM_CFG_BASE
(
ident
,
PARAM_INT
,
group
)
PARAM_CFG_INT
::
PARAM_CFG_INT
(
bool
Insetup
,
const
wxChar
*
ident
,
int
*
ptparam
,
int
default_val
,
int
min
,
int
max
,
const
wxChar
*
group
)
:
PARAM_CFG_BASE
(
ident
,
PARAM_INT
,
group
)
{
m_Pt_param
=
ptparam
;
m_Default
=
default_val
;
m_Min
=
min
;
m_Max
=
max
;
m_Setup
=
Insetup
;
m_Pt_param
=
ptparam
;
m_Default
=
default_val
;
m_Min
=
min
;
m_Max
=
max
;
m_Setup
=
Insetup
;
}
PARAM_CFG_SETCOLOR
::
PARAM_CFG_SETCOLOR
(
const
wxChar
*
ident
,
int
*
ptparam
,
int
default_val
,
const
wxChar
*
group
)
:
PARAM_CFG_BASE
(
ident
,
PARAM_SETCOLOR
,
group
)
PARAM_CFG_SETCOLOR
::
PARAM_CFG_SETCOLOR
(
const
wxChar
*
ident
,
int
*
ptparam
,
int
default_val
,
const
wxChar
*
group
)
:
PARAM_CFG_BASE
(
ident
,
PARAM_SETCOLOR
,
group
)
{
m_Pt_param
=
ptparam
;
m_Default
=
default_val
;
m_Pt_param
=
ptparam
;
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_BASE
(
ident
,
PARAM_SETCOLOR
,
group
)
PARAM_CFG_SETCOLOR
::
PARAM_CFG_SETCOLOR
(
bool
Insetup
,
const
wxChar
*
ident
,
int
*
ptparam
,
int
default_val
,
const
wxChar
*
group
)
:
PARAM_CFG_BASE
(
ident
,
PARAM_SETCOLOR
,
group
)
{
m_Pt_param
=
ptparam
;
m_Default
=
default_val
;
m_Setup
=
Insetup
;
m_Pt_param
=
ptparam
;
m_Default
=
default_val
;
m_Setup
=
Insetup
;
}
PARAM_CFG_DOUBLE
::
PARAM_CFG_DOUBLE
(
const
wxChar
*
ident
,
double
*
ptparam
,
double
default_val
,
double
min
,
double
max
,
const
wxChar
*
group
)
:
PARAM_CFG_BASE
(
ident
,
PARAM_DOUBLE
,
group
)
PARAM_CFG_DOUBLE
::
PARAM_CFG_DOUBLE
(
const
wxChar
*
ident
,
double
*
ptparam
,
double
default_val
,
double
min
,
double
max
,
const
wxChar
*
group
)
:
PARAM_CFG_BASE
(
ident
,
PARAM_DOUBLE
,
group
)
{
m_Pt_param
=
ptparam
;
m_Default
=
default_val
;
m_Min
=
min
;
m_Max
=
max
;
m_Pt_param
=
ptparam
;
m_Default
=
default_val
;
m_Min
=
min
;
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_BASE
(
ident
,
PARAM_DOUBLE
,
group
)
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_BASE
(
ident
,
PARAM_DOUBLE
,
group
)
{
m_Pt_param
=
ptparam
;
m_Default
=
default_val
;
m_Min
=
min
;
m_Max
=
max
;
m_Setup
=
Insetup
;
m_Pt_param
=
ptparam
;
m_Default
=
default_val
;
m_Min
=
min
;
m_Max
=
max
;
m_Setup
=
Insetup
;
}
PARAM_CFG_BOOL
::
PARAM_CFG_BOOL
(
const
wxChar
*
ident
,
bool
*
ptparam
,
int
default_val
,
const
wxChar
*
group
)
:
PARAM_CFG_BASE
(
ident
,
PARAM_BOOL
,
group
)
PARAM_CFG_BOOL
::
PARAM_CFG_BOOL
(
const
wxChar
*
ident
,
bool
*
ptparam
,
int
default_val
,
const
wxChar
*
group
)
:
PARAM_CFG_BASE
(
ident
,
PARAM_BOOL
,
group
)
{
m_Pt_param
=
ptparam
;
m_Default
=
default_val
?
TRUE
:
FALSE
;
m_Pt_param
=
ptparam
;
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_BASE
(
ident
,
PARAM_BOOL
,
group
)
PARAM_CFG_BOOL
::
PARAM_CFG_BOOL
(
bool
Insetup
,
const
wxChar
*
ident
,
bool
*
ptparam
,
int
default_val
,
const
wxChar
*
group
)
:
PARAM_CFG_BASE
(
ident
,
PARAM_BOOL
,
group
)
{
m_Pt_param
=
ptparam
;
m_Default
=
default_val
?
TRUE
:
FALSE
;
m_Setup
=
Insetup
;
m_Pt_param
=
ptparam
;
m_Default
=
default_val
?
TRUE
:
FALSE
;
m_Setup
=
Insetup
;
}
PARAM_CFG_WXSTRING
::
PARAM_CFG_WXSTRING
(
const
wxChar
*
ident
,
wxString
*
ptparam
,
const
wxChar
*
group
)
:
PARAM_CFG_BASE
(
ident
,
PARAM_WXSTRING
,
group
)
PARAM_CFG_WXSTRING
::
PARAM_CFG_WXSTRING
(
const
wxChar
*
ident
,
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_BASE
(
ident
,
PARAM_WXSTRING
,
group
)
PARAM_CFG_WXSTRING
::
PARAM_CFG_WXSTRING
(
bool
Insetup
,
const
wxChar
*
ident
,
wxString
*
ptparam
,
const
wxChar
*
group
)
:
PARAM_CFG_BASE
(
ident
,
PARAM_WXSTRING
,
group
)
{
m_Pt_param
=
ptparam
;
m_Setup
=
Insetup
;
m_Pt_param
=
ptparam
;
m_Setup
=
Insetup
;
}
PARAM_CFG_LIBNAME_LIST
::
PARAM_CFG_LIBNAME_LIST
(
const
wxChar
*
ident
,
wxArrayString
*
ptparam
,
const
wxChar
*
group
)
:
PARAM_CFG_BASE
(
ident
,
PARAM_LIBNAME_LIST
,
group
)
PARAM_CFG_LIBNAME_LIST
::
PARAM_CFG_LIBNAME_LIST
(
const
wxChar
*
ident
,
wxArrayString
*
ptparam
,
const
wxChar
*
group
)
:
PARAM_CFG_BASE
(
ident
,
PARAM_LIBNAME_LIST
,
group
)
{
m_Pt_param
=
ptparam
;
m_Pt_param
=
ptparam
;
}
pcbnew/pcbcfg.cpp
View file @
8eff8df9
/***********************************/
/** pcbcfg() : configuration **/
/***********************************/
/***********************************/
/** pcbcfg() : configuration **/
/***********************************/
/* lit ou met a jour la configuration de PCBNEW */
...
...
@@ -21,193 +21,200 @@
/* 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
();
wxPoint
pos
;
wxClientDC
dc
(
DrawPanel
);
wxString
FullFileName
;
DrawPanel
->
PrepareGraphicContext
(
&
dc
);
pos
=
GetPosition
();
pos
.
x
+=
20
;
pos
.
y
+=
20
;
switch
(
id
)
{
case
ID_COLORS_SETUP
:
DisplayColorSetupFrame
(
this
,
pos
);
break
;
case
ID_CONFIG_REQ
:
// Creation de la fenetre de configuration
InstallConfigFrame
(
pos
);
break
;
case
ID_PCB_TRACK_SIZE_SETUP
:
case
ID_PCB_LOOK_SETUP
:
case
ID_OPTIONS_SETUP
:
case
ID_PCB_DRAWINGS_WIDTHS_SETUP
:
InstallPcbOptionsFrame
(
pos
,
&
dc
,
id
);
break
;
case
ID_PCB_PAD_SETUP
:
InstallPadOptionsFrame
(
NULL
,
NULL
,
pos
);
break
;
case
ID_CONFIG_SAVE
:
Update_config
(
this
);
break
;
case
ID_CONFIG_READ
:
FullFileName
=
GetScreen
()
->
m_FileName
.
AfterLast
(
'/'
);
ChangeFileNameExt
(
FullFileName
,
g_Prj_Config_Filename_ext
);
FullFileName
=
EDA_FileSelector
(
_
(
"Read config file"
),
wxPathOnly
(
GetScreen
()
->
m_FileName
),
/* 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
())
break
;
if
(
!
wxFileExists
(
FullFileName
)
)
{
wxString
msg
;
msg
.
Printf
(
_
(
"File %s not found"
),
FullFileName
.
GetData
());
DisplayError
(
this
,
msg
);
break
;
}
Read_Config
(
FullFileName
);
break
;
case
ID_PREFERENCES_CREATE_CONFIG_HOTKEYS
:
FullFileName
=
ReturnHotkeyConfigFilePath
(
g_ConfigFileLocationChoice
);
FullFileName
+=
HOTKEY_FILENAME
;
FullFileName
+=
DEFAULT_HOTKEY_FILENAME_EXT
;
WriteHotkeyConfigFile
(
FullFileName
,
s_Pcbnew_Editor_Hokeys_Descr
,
true
);
break
;
case
ID_PREFERENCES_READ_CONFIG_HOTKEYS
:
Read_Hotkey_Config
(
this
,
true
);
break
;
case
ID_PREFERENCES_EDIT_CONFIG_HOTKEYS
:
{
FullFileName
=
ReturnHotkeyConfigFilePath
(
g_ConfigFileLocationChoice
);
FullFileName
+=
HOTKEY_FILENAME
;
FullFileName
+=
DEFAULT_HOTKEY_FILENAME_EXT
;
wxString
editorname
=
GetEditorName
();
if
(
!
editorname
.
IsEmpty
()
)
ExecuteFile
(
this
,
editorname
,
FullFileName
);
break
;
}
case
ID_PREFERENCES_HOTKEY_PATH_IS_HOME
:
case
ID_PREFERENCES_HOTKEY_PATH_IS_KICAD
:
HandleHotkeyConfigMenuSelection
(
this
,
id
);
break
;
case
ID_PREFERENCES_HOTKEY_SHOW_CURRENT_LIST
:
// Display Current hotkey list for eeschema
DisplayHotkeyList
(
this
,
s_Board_Editor_Hokeys_Descr
);
break
;
default
:
DisplayError
(
this
,
wxT
(
"WinEDA_PcbFrame::Process_Config internal error"
));
}
int
id
=
event
.
GetId
();
wxPoint
pos
;
wxClientDC
dc
(
DrawPanel
);
wxString
FullFileName
;
DrawPanel
->
PrepareGraphicContext
(
&
dc
);
pos
=
GetPosition
();
pos
.
x
+=
20
;
pos
.
y
+=
20
;
switch
(
id
)
{
case
ID_COLORS_SETUP
:
DisplayColorSetupFrame
(
this
,
pos
);
break
;
case
ID_CONFIG_REQ
:
// Creation de la fenetre de configuration
InstallConfigFrame
(
pos
);
break
;
case
ID_PCB_TRACK_SIZE_SETUP
:
case
ID_PCB_LOOK_SETUP
:
case
ID_OPTIONS_SETUP
:
case
ID_PCB_DRAWINGS_WIDTHS_SETUP
:
InstallPcbOptionsFrame
(
pos
,
&
dc
,
id
);
break
;
case
ID_PCB_PAD_SETUP
:
InstallPadOptionsFrame
(
NULL
,
NULL
,
pos
);
break
;
case
ID_CONFIG_SAVE
:
Update_config
(
this
);
break
;
case
ID_CONFIG_READ
:
FullFileName
=
GetScreen
()
->
m_FileName
.
AfterLast
(
'/'
);
ChangeFileNameExt
(
FullFileName
,
g_Prj_Config_Filename_ext
);
FullFileName
=
EDA_FileSelector
(
_
(
"Read config file"
),
wxPathOnly
(
GetScreen
()
->
m_FileName
),
/* 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
()
)
break
;
if
(
!
wxFileExists
(
FullFileName
)
)
{
wxString
msg
;
msg
.
Printf
(
_
(
"File %s not found"
),
FullFileName
.
GetData
()
);
DisplayError
(
this
,
msg
);
break
;
}
Read_Config
(
FullFileName
);
break
;
case
ID_PREFERENCES_CREATE_CONFIG_HOTKEYS
:
FullFileName
=
ReturnHotkeyConfigFilePath
(
g_ConfigFileLocationChoice
);
FullFileName
+=
HOTKEY_FILENAME
;
FullFileName
+=
DEFAULT_HOTKEY_FILENAME_EXT
;
WriteHotkeyConfigFile
(
FullFileName
,
s_Pcbnew_Editor_Hokeys_Descr
,
true
);
break
;
case
ID_PREFERENCES_READ_CONFIG_HOTKEYS
:
Read_Hotkey_Config
(
this
,
true
);
break
;
case
ID_PREFERENCES_EDIT_CONFIG_HOTKEYS
:
{
FullFileName
=
ReturnHotkeyConfigFilePath
(
g_ConfigFileLocationChoice
);
FullFileName
+=
HOTKEY_FILENAME
;
FullFileName
+=
DEFAULT_HOTKEY_FILENAME_EXT
;
wxString
editorname
=
GetEditorName
();
if
(
!
editorname
.
IsEmpty
()
)
ExecuteFile
(
this
,
editorname
,
FullFileName
);
break
;
}
case
ID_PREFERENCES_HOTKEY_PATH_IS_HOME
:
case
ID_PREFERENCES_HOTKEY_PATH_IS_KICAD
:
HandleHotkeyConfigMenuSelection
(
this
,
id
);
break
;
case
ID_PREFERENCES_HOTKEY_SHOW_CURRENT_LIST
:
// Display Current hotkey list for eeschema
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
*/
*/
{
wxString
FullFileName
=
ReturnHotkeyConfigFilePath
(
g_ConfigFileLocationChoice
);
FullFileName
+=
HOTKEY_FILENAME
;
FullFileName
+=
DEFAULT_HOTKEY_FILENAME_EXT
;
return
frame
->
ReadHotkeyConfigFile
(
FullFileName
,
s_Pcbnew_Editor_Hokeys_Descr
,
verbose
);
wxString
FullFileName
=
ReturnHotkeyConfigFilePath
(
g_ConfigFileLocationChoice
);
FullFileName
+=
HOTKEY_FILENAME
;
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
;
int
ii
;
wxString
FullFileName
;
int
ii
;
g_Prj_Config_Filename_ext
=
wxT
(
".pro"
);
FullFileName
=
project_name
;
ChangeFileNameExt
(
FullFileName
,
g_Prj_Config_Filename_ext
);
g_Prj_Config_Filename_ext
=
wxT
(
".pro"
);
FullFileName
=
project_name
;
ChangeFileNameExt
(
FullFileName
,
g_Prj_Config_Filename_ext
);
/* Init des valeurs par defaut */
g_LibName_List
.
Clear
();
/* Init des valeurs par defaut */
g_LibName_List
.
Clear
();
g_EDA_Appl
->
ReadProjectConfig
(
FullFileName
,
GROUP
,
ParamCfgList
,
FALSE
);
g_EDA_Appl
->
ReadProjectConfig
(
FullFileName
,
GROUP
,
ParamCfgList
,
FALSE
);
/* Traitement des variables particulieres: */
/* Traitement des variables particulieres: */
SetRealLibraryPath
(
wxT
(
"modules"
)
);
SetRealLibraryPath
(
wxT
(
"modules"
)
);
if
(
ScreenPcb
)
{
ScreenPcb
->
m_Diviseur_Grille
=
Pcbdiv_grille
;
ScreenPcb
->
m_UserGrid
=
g_UserGrid
;
ScreenPcb
->
m_UserGridUnit
=
g_UserGrid_Unit
;
}
if
(
ScreenPcb
)
{
ScreenPcb
->
m_Diviseur_Grille
=
Pcbdiv_grille
;
ScreenPcb
->
m_UserGrid
=
g_UserGrid
;
ScreenPcb
->
m_UserGridUnit
=
g_UserGrid_Unit
;
}
g_DesignSettings
.
m_TrackWidthHistory
[
0
]
=
g_DesignSettings
.
m_CurrentTrackWidth
;
g_DesignSettings
.
m_ViaSizeHistory
[
0
]
=
g_DesignSettings
.
m_CurrentViaSize
;
for
(
ii
=
1
;
ii
<
HISTORY_NUMBER
;
ii
++
)
{
g_DesignSettings
.
m_TrackWidthHistory
[
ii
]
=
0
;
g_DesignSettings
.
m_ViaSizeHistory
[
ii
]
=
0
;
}
g_DesignSettings
.
m_TrackWidthHistory
[
0
]
=
g_DesignSettings
.
m_CurrentTrackWidth
;
g_DesignSettings
.
m_ViaSizeHistory
[
0
]
=
g_DesignSettings
.
m_CurrentViaSize
;
for
(
ii
=
1
;
ii
<
HISTORY_NUMBER
;
ii
++
)
{
g_DesignSettings
.
m_TrackWidthHistory
[
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 */
{
wxString
FullFileName
;
wxString
mask
;
mask
=
wxT
(
"*"
)
+
g_Prj_Config_Filename_ext
;
FullFileName
=
GetScreen
()
->
m_FileName
.
AfterLast
(
'/'
);
ChangeFileNameExt
(
FullFileName
,
g_Prj_Config_Filename_ext
);
FullFileName
=
EDA_FileSelector
(
_
(
"Save preferences"
),
wxPathOnly
(
GetScreen
()
->
m_FileName
),
/* Chemin par defaut */
FullFileName
,
/* nom fichier par defaut */
g_Prj_Config_Filename_ext
,
/* extension par defaut */
mask
,
/* Masque d'affichage */
displayframe
,
wxFD_SAVE
,
TRUE
);
if
(
FullFileName
.
IsEmpty
()
)
return
;
Pcbdiv_grille
=
GetScreen
()
->
m_Diviseur_Grille
;
/* ecriture de la configuration */
g_EDA_Appl
->
WriteProjectConfig
(
FullFileName
,
wxT
(
"/pcbnew"
),
ParamCfgList
);
wxString
FullFileName
;
wxString
mask
;
mask
=
wxT
(
"*"
)
+
g_Prj_Config_Filename_ext
;
FullFileName
=
GetScreen
()
->
m_FileName
.
AfterLast
(
'/'
);
ChangeFileNameExt
(
FullFileName
,
g_Prj_Config_Filename_ext
);
FullFileName
=
EDA_FileSelector
(
_
(
"Save preferences"
),
wxPathOnly
(
GetScreen
()
->
m_FileName
),
/* Chemin par defaut */
FullFileName
,
/* nom fichier par defaut */
g_Prj_Config_Filename_ext
,
/* extension par defaut */
mask
,
/* Masque d'affichage */
displayframe
,
wxFD_SAVE
,
TRUE
);
if
(
FullFileName
.
IsEmpty
()
)
return
;
Pcbdiv_grille
=
GetScreen
()
->
m_Diviseur_Grille
;
/* ecriture de la configuration */
g_EDA_Appl
->
WriteProjectConfig
(
FullFileName
,
wxT
(
"/pcbnew"
),
ParamCfgList
);
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment