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
52d35351
Commit
52d35351
authored
Dec 31, 2013
by
Dick Hollenbeck
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
minor tidying
parent
f9ab5d2c
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
91 additions
and
97 deletions
+91
-97
edaappl.cpp
common/edaappl.cpp
+78
-84
macros.h
include/macros.h
+13
-13
No files found.
common/edaappl.cpp
View file @
52d35351
...
...
@@ -61,54 +61,49 @@ static const wxChar* CommonConfigPath = wxT( "kicad_common" );
# define TMP_FILE "/tmp/kicad.tmp"
#endif
/* Just add new languages to the list. This macro will properly recalculate
* the size of the array. */
#define LANGUAGE_DESCR_COUNT ( sizeof( s_Language_List ) / sizeof( struct LANGUAGE_DESCR ) )
// some key strings used to store parameters in config
static
wxString
backgroundColorKey
(
wxT
(
"BackgroundColor"
)
);
static
wxString
showPageLimitsKey
(
wxT
(
"ShowPageLimits"
)
);
static
wxString
workingDirKey
(
wxT
(
"WorkingDir"
)
)
;
static
wxString
languageCfgKey
(
wxT
(
"LanguageID"
)
);
static
wxString
kicadFpLibPath
(
wxT
(
"KicadFootprintLibraryPath"
)
);
static
const
wxChar
backgroundColorKey
[]
=
wxT
(
"BackgroundColor"
);
static
const
wxChar
showPageLimitsKey
[]
=
wxT
(
"ShowPageLimits"
);
static
const
wxChar
workingDirKey
[]
=
wxT
(
"WorkingDir"
)
;
static
const
wxChar
languageCfgKey
[]
=
wxT
(
"LanguageID"
);
static
const
wxChar
kicadFpLibPath
[]
=
wxT
(
"KicadFootprintLibraryPath"
);
/**
* A small class to handle the list o
n
existing translations.
*
t
he locale translation is automatic.
*
t
he selection of languages is mainly for maintainer's convenience
* A small class to handle the list o
f
existing translations.
*
T
he locale translation is automatic.
*
T
he selection of languages is mainly for maintainer's convenience
* To add a support to a new translation:
* create a new icon (flag of the country) (see Lang_Fr.xpm as an example)
* add a new item to s_Language_List[LANGUAGE_DESCR_COUNT]
* and set LANGUAGE_DESCR_COUNT to the new value
* add a new item to s_Languages[].
*/
struct
LANGUAGE_DESCR
{
/// wxWidgets locale identifier (See wxWidgets doc)
int
m_WX_Lang_Identifier
;
int
m_WX_Lang_Identifier
;
/// KiCad identifier used in menu selection (See id.h)
int
m_KI_Lang_Identifier
;
int
m_KI_Lang_Identifier
;
/// The menu language icons
BITMAP_DEF
m_Lang_Icon
;
BITMAP_DEF
m_Lang_Icon
;
/// Labels used in menus
const
wxChar
*
m_Lang_Label
;
/// Set to true if the m_Lang_Label must not be translated
bool
m_DoNotTranslate
;
bool
m_DoNotTranslate
;
};
/**
*
Language list struct
*
Variable s_Languages
* Note: because this list is not created on the fly, wxTranslation
* must be called when a language name must be displayed after translation.
* Do
don
change this behavior, because m_Lang_Label is also used as key in config
* Do
not
change this behavior, because m_Lang_Label is also used as key in config
*/
static
struct
LANGUAGE_DESCR
s_Language_List
[]
=
static
LANGUAGE_DESCR
s_Languages
[]
=
{
// Default language
{
...
...
@@ -262,6 +257,7 @@ static struct LANGUAGE_DESCR s_Language_List[] =
lang_jp_xpm
,
_
(
"Japanese"
)
},
// Bulgarian language
{
wxLANGUAGE_BULGARIAN
,
...
...
@@ -290,28 +286,17 @@ EDA_APP::~EDA_APP()
SaveSettings
();
// delete user datas
if
(
m_projectSettings
)
delete
m_projectSettings
;
if
(
m_commonSettings
)
delete
m_commonSettings
;
delete
m_projectSettings
;
delete
m_commonSettings
;
delete
m_settings
;
if
(
m_Checker
)
delete
m_Checker
;
if
(
m_oneInstancePerFileChecker
)
delete
m_oneInstancePerFileChecker
;
delete
m_Checker
;
delete
m_oneInstancePerFileChecker
;
delete
m_Locale
;
}
void
EDA_APP
::
InitEDA_Appl
(
const
wxString
&
aName
,
EDA_APP_T
aId
)
{
wxString
EnvLang
;
m_Id
=
aId
;
m_Checker
=
new
wxSingleInstanceChecker
(
aName
.
Lower
()
+
wxT
(
"-"
)
+
wxGetUserId
()
);
...
...
@@ -342,8 +327,11 @@ void EDA_APP::InitEDA_Appl( const wxString& aName, EDA_APP_T aId )
SetVendorName
(
wxT
(
"KiCad"
)
);
SetAppName
(
aName
.
Lower
()
);
SetTitle
(
aName
);
m_settings
=
new
wxConfig
();
wxASSERT
(
m_settings
!=
NULL
);
m_commonSettings
=
new
wxConfig
(
CommonConfigPath
);
wxASSERT
(
m_commonSettings
!=
NULL
);
...
...
@@ -365,11 +353,11 @@ void EDA_APP::InitEDA_Appl( const wxString& aName, EDA_APP_T aId )
m_LanguageId
=
wxLANGUAGE_DEFAULT
;
// Search for the current selection
for
(
unsigned
i
nt
ii
=
0
;
ii
<
LANGUAGE_DESCR_COUNT
;
ii
++
)
for
(
unsigned
i
i
=
0
;
ii
<
DIM
(
s_Languages
)
;
ii
++
)
{
if
(
s_Language
_List
[
ii
].
m_Lang_Label
==
languageSel
)
if
(
s_Language
s
[
ii
].
m_Lang_Label
==
languageSel
)
{
m_LanguageId
=
s_Language
_List
[
ii
].
m_WX_Lang_Identifier
;
m_LanguageId
=
s_Language
s
[
ii
].
m_WX_Lang_Identifier
;
break
;
}
}
...
...
@@ -387,8 +375,7 @@ void EDA_APP::InitEDA_Appl( const wxString& aName, EDA_APP_T aId )
void
EDA_APP
::
SetHtmlHelpController
(
wxHtmlHelpController
*
aController
)
{
if
(
m_HtmlCtrl
)
delete
m_HtmlCtrl
;
delete
m_HtmlCtrl
;
m_HtmlCtrl
=
aController
;
}
...
...
@@ -459,8 +446,8 @@ bool EDA_APP::SetBinDir()
#endif
// Use unix notation for paths. I am not sure this is a good idea,
// but it simplif
y compatibility between Windows and Unices
// However it is a potential problem in path handling under Windows
// but it simplif
ies compatibility between Windows and Unices.
// However it is a potential problem in path handling under Windows
.
m_BinDir
.
Replace
(
WIN_STRING_DIR_SEP
,
UNIX_STRING_DIR_SEP
);
// Remove file name form command line:
...
...
@@ -471,9 +458,8 @@ bool EDA_APP::SetBinDir()
}
void
EDA_APP
::
SetDefaultSearchPaths
(
void
)
void
EDA_APP
::
SetDefaultSearchPaths
()
{
size_t
i
;
wxString
path
=
m_BinDir
;
wxPathList
tmp
;
...
...
@@ -529,7 +515,7 @@ void EDA_APP::SetDefaultSearchPaths( void )
tmp
.
Add
(
wxT
(
DEFAULT_INSTALL_PATH
)
);
// Add kicad, kicad/share, share, and share/kicad to each possible base path.
for
(
i
=
0
;
i
<
tmp
.
GetCount
();
i
++
)
for
(
unsigned
i
=
0
;
i
<
tmp
.
GetCount
();
i
++
)
{
fn
=
wxFileName
(
tmp
[
i
],
wxEmptyString
);
...
...
@@ -550,7 +536,7 @@ void EDA_APP::SetDefaultSearchPaths( void )
}
// Remove all non-existent paths from the list.
for
(
i
=
0
;
i
<
m_searchPaths
.
GetCount
();
i
++
)
for
(
unsigned
i
=
0
;
i
<
m_searchPaths
.
GetCount
();
i
++
)
{
if
(
!
wxFileName
::
IsDirReadable
(
m_searchPaths
[
i
]
)
)
{
...
...
@@ -587,7 +573,7 @@ void EDA_APP::SetDefaultSearchPaths( void )
}
// Add PCB library file path to search path list.
if
(
(
m_Id
==
APP_PCBNEW_T
)
||
(
m_Id
==
APP_CVPCB_T
)
)
if
(
m_Id
==
APP_PCBNEW_T
||
m_Id
==
APP_CVPCB_T
)
{
fn
.
AppendDir
(
wxT
(
"modules"
)
);
...
...
@@ -633,21 +619,20 @@ void EDA_APP::GetSettings( bool aReopenLastUsedDirectory )
{
wxASSERT
(
m_settings
!=
NULL
&&
m_commonSettings
!=
NULL
);
wxString
Line
;
m_HelpSize
.
x
=
500
;
m_HelpSize
.
y
=
400
;
wxString
languageSel
;
m_commonSettings
->
Read
(
languageCfgKey
,
&
languageSel
);
m_LanguageId
=
wxLANGUAGE_DEFAULT
;
// Search for the current selection
for
(
unsigned
i
nt
ii
=
0
;
ii
<
LANGUAGE_DESCR_COUNT
;
ii
++
)
for
(
unsigned
i
i
=
0
;
ii
<
DIM
(
s_Languages
)
;
ii
++
)
{
if
(
s_Language
_List
[
ii
].
m_Lang_Label
==
languageSel
)
if
(
s_Language
s
[
ii
].
m_Lang_Label
==
languageSel
)
{
m_LanguageId
=
s_Language
_List
[
ii
].
m_WX_Lang_Identifier
;
m_LanguageId
=
s_Language
s
[
ii
].
m_WX_Lang_Identifier
;
break
;
}
}
...
...
@@ -660,9 +645,11 @@ void EDA_APP::GetSettings( bool aReopenLastUsedDirectory )
if
(
aReopenLastUsedDirectory
)
{
if
(
m_settings
->
Read
(
workingDirKey
,
&
Line
)
&&
wxDirExists
(
Line
)
)
wxString
dir
;
if
(
m_settings
->
Read
(
workingDirKey
,
&
dir
)
&&
wxDirExists
(
dir
)
)
{
wxSetWorkingDirectory
(
Line
);
wxSetWorkingDirectory
(
dir
);
}
}
...
...
@@ -685,14 +672,14 @@ void EDA_APP::GetSettings( bool aReopenLastUsedDirectory )
while
(
1
)
{
upath
=
m_commonSettings
->
Read
(
wxString
::
Format
(
wxT
(
"LibraryPath%d"
),
i
),
wxT
(
""
)
);
upath
=
m_commonSettings
->
Read
(
wxString
::
Format
(
wxT
(
"LibraryPath%d"
),
i
),
wxT
(
""
)
);
if
(
upath
.
IsSameAs
(
wxT
(
""
)
)
)
break
;
m_libSearchPaths
.
Add
(
upath
);
i
++
;
i
++
;
}
}
...
...
@@ -700,6 +687,7 @@ void EDA_APP::GetSettings( bool aReopenLastUsedDirectory )
void
EDA_APP
::
SaveSettings
()
{
wxASSERT
(
m_settings
!=
NULL
);
m_settings
->
Write
(
showPageLimitsKey
,
g_ShowPageLimits
);
m_settings
->
Write
(
workingDirKey
,
wxGetCwd
()
);
m_settings
->
Write
(
backgroundColorKey
,
(
long
)
g_DrawBgColor
);
...
...
@@ -731,6 +719,7 @@ bool EDA_APP::SetLanguage( bool first_time )
m_LanguageId
=
wxLANGUAGE_DEFAULT
;
delete
m_Locale
;
m_Locale
=
new
wxLocale
;
m_Locale
->
Init
();
retv
=
false
;
...
...
@@ -746,11 +735,11 @@ bool EDA_APP::SetLanguage( bool first_time )
wxString
languageSel
;
// Search for the current selection
for
(
unsigned
i
nt
ii
=
0
;
ii
<
LANGUAGE_DESCR_COUNT
;
ii
++
)
for
(
unsigned
i
i
=
0
;
ii
<
DIM
(
s_Languages
)
;
ii
++
)
{
if
(
s_Language
_List
[
ii
].
m_WX_Lang_Identifier
==
m_LanguageId
)
if
(
s_Language
s
[
ii
].
m_WX_Lang_Identifier
==
m_LanguageId
)
{
languageSel
=
s_Language
_List
[
ii
].
m_Lang_Label
;
languageSel
=
s_Language
s
[
ii
].
m_Lang_Label
;
break
;
}
}
...
...
@@ -762,11 +751,14 @@ bool EDA_APP::SetLanguage( bool first_time )
// Make a conversion double <=> string
double
dtst
=
0.5
;
wxString
msg
;
extern
bool
g_DisableFloatingPointLocalNotation
;
// See common.cpp
g_DisableFloatingPointLocalNotation
=
false
;
msg
<<
dtst
;
double
result
;
msg
.
ToDouble
(
&
result
);
msg
.
ToDouble
(
&
result
);
if
(
result
!=
dtst
)
// string to double encode/decode does not work! Bug detected
{
...
...
@@ -788,27 +780,25 @@ bool EDA_APP::SetLanguage( bool first_time )
void
EDA_APP
::
SetLanguageIdentifier
(
int
menu_id
)
{
wxLogDebug
(
wxT
(
"Select language ID %d from %zd possible languages."
),
menu_id
,
LANGUAGE_DESCR_COUNT
);
menu_id
,
DIM
(
s_Languages
)
);
for
(
unsigned
i
nt
ii
=
0
;
ii
<
LANGUAGE_DESCR_COUNT
;
ii
++
)
for
(
unsigned
i
i
=
0
;
ii
<
DIM
(
s_Languages
)
;
ii
++
)
{
if
(
menu_id
==
s_Language
_List
[
ii
].
m_KI_Lang_Identifier
)
if
(
menu_id
==
s_Language
s
[
ii
].
m_KI_Lang_Identifier
)
{
m_LanguageId
=
s_Language
_List
[
ii
].
m_WX_Lang_Identifier
;
m_LanguageId
=
s_Language
s
[
ii
].
m_WX_Lang_Identifier
;
break
;
}
}
}
void
EDA_APP
::
SetLanguagePath
(
void
)
void
EDA_APP
::
SetLanguagePath
()
{
size_t
i
;
// Add defined search paths to locale paths
if
(
!
m_searchPaths
.
IsEmpty
()
)
{
for
(
i
=
0
;
i
<
m_searchPaths
.
GetCount
();
i
++
)
for
(
unsigned
i
=
0
;
i
<
m_searchPaths
.
GetCount
();
i
++
)
{
wxFileName
fn
(
m_searchPaths
[
i
],
wxEmptyString
);
...
...
@@ -843,7 +833,6 @@ void EDA_APP::AddMenuLanguageList( wxMenu* MasterMenu )
{
wxMenu
*
menu
=
NULL
;
wxMenuItem
*
item
;
unsigned
int
ii
;
item
=
MasterMenu
->
FindItem
(
ID_LANGUAGE_CHOICE
);
...
...
@@ -852,17 +841,17 @@ void EDA_APP::AddMenuLanguageList( wxMenu* MasterMenu )
menu
=
new
wxMenu
;
for
(
ii
=
0
;
ii
<
LANGUAGE_DESCR_COUNT
;
ii
++
)
for
(
unsigned
ii
=
0
;
ii
<
DIM
(
s_Languages
)
;
ii
++
)
{
wxString
label
;
if
(
s_Language
_List
[
ii
].
m_DoNotTranslate
)
label
=
s_Language
_List
[
ii
].
m_Lang_Label
;
if
(
s_Language
s
[
ii
].
m_DoNotTranslate
)
label
=
s_Language
s
[
ii
].
m_Lang_Label
;
else
label
=
wxGetTranslation
(
s_Language
_List
[
ii
].
m_Lang_Label
);
label
=
wxGetTranslation
(
s_Language
s
[
ii
].
m_Lang_Label
);
AddMenuItem
(
menu
,
s_Language
_List
[
ii
].
m_KI_Lang_Identifier
,
label
,
KiBitmap
(
s_Language
_List
[
ii
].
m_Lang_Icon
),
AddMenuItem
(
menu
,
s_Language
s
[
ii
].
m_KI_Lang_Identifier
,
label
,
KiBitmap
(
s_Language
s
[
ii
].
m_Lang_Icon
),
wxITEM_CHECK
);
}
...
...
@@ -873,18 +862,18 @@ void EDA_APP::AddMenuLanguageList( wxMenu* MasterMenu )
KiBitmap
(
language_xpm
)
);
// Set Check mark on current selected language
for
(
ii
=
0
;
ii
<
LANGUAGE_DESCR_COUNT
;
ii
++
)
for
(
unsigned
ii
=
0
;
ii
<
DIM
(
s_Languages
)
;
ii
++
)
{
if
(
m_LanguageId
==
s_Language
_List
[
ii
].
m_WX_Lang_Identifier
)
menu
->
Check
(
s_Language
_List
[
ii
].
m_KI_Lang_Identifier
,
true
);
if
(
m_LanguageId
==
s_Language
s
[
ii
].
m_WX_Lang_Identifier
)
menu
->
Check
(
s_Language
s
[
ii
].
m_KI_Lang_Identifier
,
true
);
else
menu
->
Check
(
s_Language
_List
[
ii
].
m_KI_Lang_Identifier
,
false
);
menu
->
Check
(
s_Language
s
[
ii
].
m_KI_Lang_Identifier
,
false
);
}
}
wxString
EDA_APP
::
FindFileInSearchPaths
(
const
wxString
&
filename
,
const
wxArrayString
*
subdirs
)
wxString
EDA_APP
::
FindFileInSearchPaths
(
const
wxString
&
filename
,
const
wxArrayString
*
subdirs
)
{
size_t
i
,
j
;
wxFileName
fn
;
...
...
@@ -909,7 +898,7 @@ wxString EDA_APP::FindFileInSearchPaths( const wxString& filename,
}
wxString
EDA_APP
::
GetHelpFile
(
void
)
wxString
EDA_APP
::
GetHelpFile
()
{
wxString
fn
;
wxArrayString
subdirs
,
altsubdirs
;
...
...
@@ -950,6 +939,7 @@ wxString EDA_APP::GetHelpFile( void )
// Step 1 : Try to find help file in help/<canonical name>
subdirs
.
Add
(
m_Locale
->
GetCanonicalName
()
);
altsubdirs
.
Add
(
m_Locale
->
GetCanonicalName
()
);
fn
=
FindFileInSearchPaths
(
m_HelpFileName
,
&
altsubdirs
);
if
(
!
fn
)
...
...
@@ -964,6 +954,7 @@ wxString EDA_APP::GetHelpFile( void )
// wxLocale::GetName() does not return always the short name
subdirs
.
Add
(
m_Locale
->
GetName
().
BeforeLast
(
'_'
)
);
altsubdirs
.
Add
(
m_Locale
->
GetName
().
BeforeLast
(
'_'
)
);
fn
=
FindFileInSearchPaths
(
m_HelpFileName
,
&
altsubdirs
);
if
(
!
fn
)
...
...
@@ -977,6 +968,7 @@ wxString EDA_APP::GetHelpFile( void )
altsubdirs
.
RemoveAt
(
altsubdirs
.
GetCount
()
-
1
);
subdirs
.
Add
(
_T
(
"en"
)
);
altsubdirs
.
Add
(
_T
(
"en"
)
);
fn
=
FindFileInSearchPaths
(
m_HelpFileName
,
&
altsubdirs
);
if
(
!
fn
)
...
...
@@ -1002,6 +994,7 @@ wxString EDA_APP::ReturnLastVisitedLibraryPath( const wxString& aSubPathToSearch
if
(
pcount
)
{
unsigned
ipath
=
0
;
if
(
m_libSearchPaths
[
0
]
==
wxGetCwd
()
)
ipath
=
1
;
...
...
@@ -1207,3 +1200,4 @@ bool EDA_APP::SetFootprintLibTablePath()
return
false
;
}
include/macros.h
View file @
52d35351
...
...
@@ -34,22 +34,22 @@ static inline wxString FROM_UTF8( const char* cstring )
/**
* Function GetChars
* returns a wxChar* to the actual character data within a wxString, and is
* helpful for passing strings to wxString::Printf(wxT("%s"), GetChars(wxString) )
* returns a wxChar* to the actual wxChar* data within a wxString, and is
* helpful for passing strings to wxString::Printf() and wxString::Format().
* It can also be passed a UTF8 parameter which will be converted to wxString
* by the compiler.
* <p>
* wxChar is defined to be
* Example: wxString::Format( wxT( "%s" ), GetChars( UTF( "some text" ) ) );
* <p>
* When wxWidgets is properly built for KiCad, a const wxChar* points to either:
* <ul>
* <li>
standard C style char when wxUSE_UNICODE==0
</li>
* <li>
wchar_t when wxUSE_UNICODE==1 (the default)
. </li>
* <li>
32 bit unicode characters on linux/OSX or
</li>
* <li>
16 bit UTF16 characters on windows
. </li>
* </ul>
* i.e. it depends on how the wxWidgets library was compiled.
* ( wxUSE_UNICODE is defined in wxWidgets, inside setup.h.
* for version >= 2.9 wxUSE_UNICODE is always defined to 1 )
* There was a period
* during the development of wxWidgets 2.9 when GetData() was missing, so this
* function was used to provide insulation from that design change. It may
* no longer be needed, and is harmless. GetData() seems to be an acceptable
* alternative in all cases now.
* Note that you cannot pass 8 bit strings to wxString::Format() or Printf() so this
* is a useful conversion function to wxChar*, which is needed by wxString::Format().
*
* @return const wxChar* - a pointer to the UNICODE or UTF16 (on windows) text.
*/
static
inline
const
wxChar
*
GetChars
(
const
wxString
&
s
)
{
...
...
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