Sync to main branch r6607
This commit is contained in:
commit
ae104a2b77
|
@ -980,12 +980,7 @@ void EDA_DRAW_PANEL::OnMouseWheel( wxMouseEvent& event )
|
|||
else if( wheelRotation > 0 )
|
||||
{
|
||||
if( event.ShiftDown() && !event.ControlDown() )
|
||||
{
|
||||
if( axis == 0 )
|
||||
cmd.SetId( ID_PAN_UP );
|
||||
else
|
||||
cmd.SetId( ID_PAN_RIGHT );
|
||||
}
|
||||
else if( event.ControlDown() && !event.ShiftDown() )
|
||||
cmd.SetId( ID_PAN_LEFT );
|
||||
else if( offCenterReq )
|
||||
|
@ -996,12 +991,7 @@ void EDA_DRAW_PANEL::OnMouseWheel( wxMouseEvent& event )
|
|||
else if( wheelRotation < 0 )
|
||||
{
|
||||
if( event.ShiftDown() && !event.ControlDown() )
|
||||
{
|
||||
if( axis == 0 )
|
||||
cmd.SetId( ID_PAN_DOWN );
|
||||
else
|
||||
cmd.SetId( ID_PAN_LEFT );
|
||||
}
|
||||
else if( event.ControlDown() && !event.ShiftDown() )
|
||||
cmd.SetId( ID_PAN_RIGHT );
|
||||
else if( offCenterReq )
|
||||
|
|
|
@ -121,14 +121,26 @@ static inline bool Collide( const SHAPE_RECT& aA, const SHAPE_CIRCLE& aB, int aC
|
|||
|
||||
static VECTOR2I pushoutForce( const SHAPE_CIRCLE& aA, const SEG& aB, int aClearance )
|
||||
{
|
||||
VECTOR2I nearest = aB.NearestPoint( aA.GetCenter() );
|
||||
VECTOR2I f (0, 0);
|
||||
VECTOR2I f( 0, 0 );
|
||||
|
||||
int dist = ( nearest - aA.GetCenter() ).EuclideanNorm();
|
||||
int min_dist = aClearance + aA.GetRadius();
|
||||
const VECTOR2I c = aA.GetCenter();
|
||||
const VECTOR2I nearest = aB.NearestPoint( c );
|
||||
|
||||
const int r = aA.GetRadius();
|
||||
|
||||
int dist = ( nearest - c ).EuclideanNorm();
|
||||
int min_dist = aClearance + r;
|
||||
|
||||
if( dist < min_dist )
|
||||
f = ( aA.GetCenter() - nearest ).Resize ( min_dist - dist + 10 );
|
||||
{
|
||||
for( int corr = 0; corr < 5; corr++ )
|
||||
{
|
||||
f = ( aA.GetCenter() - nearest ).Resize( min_dist - dist + corr );
|
||||
|
||||
if( aB.Distance( c + f ) >= min_dist )
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return f;
|
||||
}
|
||||
|
|
|
@ -488,10 +488,13 @@ bool PGM_BASE::initPgm()
|
|||
|
||||
ReadPdfBrowserInfos(); // needs m_common_settings
|
||||
|
||||
loadCommonSettings();
|
||||
|
||||
// Init user language *before* calling loadCommonSettings, because
|
||||
// env vars could be incorrectly initialized on Linux
|
||||
// (if the value contains some non ASCII7 chars, the env var is not initialized)
|
||||
SetLanguage( true );
|
||||
|
||||
loadCommonSettings();
|
||||
|
||||
// Set locale option for separator used in float numbers
|
||||
SetLocaleTo_Default();
|
||||
|
||||
|
@ -553,23 +556,8 @@ void PGM_BASE::loadCommonSettings()
|
|||
m_help_size.x = 500;
|
||||
m_help_size.y = 400;
|
||||
|
||||
wxString languageSel;
|
||||
|
||||
m_common_settings->Read( languageCfgKey, &languageSel );
|
||||
setLanguageId( wxLANGUAGE_DEFAULT );
|
||||
|
||||
m_common_settings->Read( showEnvVarWarningDialog, &m_show_env_var_dialog );
|
||||
|
||||
// Search for the current selection
|
||||
for( unsigned ii = 0; ii < DIM( s_Languages ); ii++ )
|
||||
{
|
||||
if( s_Languages[ii].m_Lang_Label == languageSel )
|
||||
{
|
||||
setLanguageId( s_Languages[ii].m_WX_Lang_Identifier );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
m_editor_name = m_common_settings->Read( wxT( "Editor" ) );
|
||||
|
||||
wxString entry, oldPath;
|
||||
|
@ -629,6 +617,26 @@ bool PGM_BASE::SetLanguage( bool first_time )
|
|||
{
|
||||
bool retv = true;
|
||||
|
||||
if( first_time )
|
||||
{
|
||||
setLanguageId( wxLANGUAGE_DEFAULT );
|
||||
// First time SetLanguage is called, the user selected language id is set
|
||||
// from commun user config settings
|
||||
wxString languageSel;
|
||||
|
||||
m_common_settings->Read( languageCfgKey, &languageSel );
|
||||
|
||||
// Search for the current selection
|
||||
for( unsigned ii = 0; ii < DIM( s_Languages ); ii++ )
|
||||
{
|
||||
if( s_Languages[ii].m_Lang_Label == languageSel )
|
||||
{
|
||||
setLanguageId( s_Languages[ii].m_WX_Lang_Identifier );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// dictionary file name without extend (full name is kicad.mo)
|
||||
wxString dictionaryName( wxT( "kicad" ) );
|
||||
|
||||
|
@ -652,12 +660,15 @@ bool PGM_BASE::SetLanguage( bool first_time )
|
|||
GetChars( dictionaryName ), GetChars( m_locale->GetName() ) );
|
||||
}
|
||||
|
||||
// how about a meaningful comment here.
|
||||
if( !first_time )
|
||||
{
|
||||
// If we are here, the user has selected an other language.
|
||||
// Therefore the new prefered language name is stored in common config.
|
||||
// Do NOT store the wxWidgets language Id, it can change between wxWidgets
|
||||
// versions, for a given language
|
||||
wxString languageSel;
|
||||
|
||||
// Search for the current selection
|
||||
// Search for the current selection language name
|
||||
for( unsigned ii = 0; ii < DIM( s_Languages ); ii++ )
|
||||
{
|
||||
if( s_Languages[ii].m_WX_Lang_Identifier == m_language_id )
|
||||
|
@ -670,7 +681,7 @@ bool PGM_BASE::SetLanguage( bool first_time )
|
|||
m_common_settings->Write( languageCfgKey, languageSel );
|
||||
}
|
||||
|
||||
// Test if floating point notation is working (bug in cross compilation, using wine)
|
||||
// Test if floating point notation is working (bug encountered in cross compilation)
|
||||
// Make a conversion double <=> string
|
||||
double dtst = 0.5;
|
||||
wxString msg;
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
* %TF.FileFunction,Copper,L1,Top*%
|
||||
*
|
||||
* Currently:
|
||||
* .FileFunction .FileFunction Identifies the file’s function in the PCB.
|
||||
* .FileFunction .FileFunction Identifies the file's function in the PCB.
|
||||
* Other Standard Attributes, not yet used in Gerbview:
|
||||
* .Part Identifies the part the file represents, e.g. a single PCB
|
||||
* .MD5 Sets the MD5 file signature or checksum.
|
||||
|
@ -46,8 +46,8 @@
|
|||
|
||||
/*
|
||||
* class X2_ATTRIBUTE
|
||||
* The attribute value consists of a number of substrings separated by a “,”
|
||||
*/
|
||||
* The attribute value consists of a number of substrings separated by a ","
|
||||
*/
|
||||
|
||||
X2_ATTRIBUTE::X2_ATTRIBUTE()
|
||||
{
|
||||
|
@ -162,8 +162,8 @@ bool X2_ATTRIBUTE::ParseAttribCmd( FILE* aFile, char *aBuffer, int aBuffSize, ch
|
|||
* Corresponding position substring:
|
||||
* Copper layer: L1, L2, L3...to indicate the layer position followed by Top, Inr or
|
||||
* Bot. L1 is always the top copper layer. E.g. L2,Inr.
|
||||
* Extra layer, e.g. solder mask: Top or Bot – defines the attachment of the layer.
|
||||
* Drill/rout layer: E.g. 1,4 – where 1 is the start and 4 is the end copper layer. The
|
||||
* Extra layer, e.g. solder mask: Top or Bot - defines the attachment of the layer.
|
||||
* Drill/rout layer: E.g. 1,4 - where 1 is the start and 4 is the end copper layer. The
|
||||
* pair 1,4 defines the span of the drill/rout file
|
||||
* Optional index. This can be used in instances where for example there are two solder
|
||||
* masks on the same side. The index counts from the PCB surface outwards.
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
* %TF.FileFunction,Copper,L1,Top*%
|
||||
*
|
||||
* Currently:
|
||||
* .FileFunction .FileFunction Identifies the file’s function in the PCB.
|
||||
* .FileFunction .FileFunction Identifies the file's function in the PCB.
|
||||
* Other Standard Attributes, not yet used in Gerbview:
|
||||
* .Part Identifies the part the file represents, e.g. a single PCB
|
||||
* .MD5 Sets the MD5 file signature or checksum.
|
||||
|
@ -48,7 +48,7 @@
|
|||
|
||||
/**
|
||||
* class X2_ATTRIBUTE
|
||||
* The attribute value consists of a number of substrings separated by a “,”
|
||||
* The attribute value consists of a number of substrings separated by a ","
|
||||
*/
|
||||
|
||||
class X2_ATTRIBUTE
|
||||
|
@ -138,8 +138,8 @@ public:
|
|||
* Corresponding position substring:
|
||||
* Copper layer: L1, L2, L3...to indicate the layer position followed by Top, Inr or
|
||||
* Bot. L1 is always the top copper layer. E.g. L2,Inr.
|
||||
* Extra layer, e.g. solder mask: Top or Bot – defines the attachment of the layer.
|
||||
* Drill/rout layer: E.g. 1,4 – where 1 is the start and 4 is the end copper layer. The
|
||||
* Extra layer, e.g. solder mask: Top or Bot - defines the attachment of the layer.
|
||||
* Drill/rout layer: E.g. 1,4 - where 1 is the start and 4 is the end copper layer. The
|
||||
* pair 1,4 defines the span of the drill/rout file
|
||||
* Optional index. This can be used in instances where for example there are two solder
|
||||
* masks on the same side. The index counts from the PCB surface outwards.
|
||||
|
|
|
@ -1,70 +0,0 @@
|
|||
/* Hershey Cyrillic definition
|
||||
* First shape has unicode value 0x410
|
||||
*/
|
||||
const static char* hershey_cyrillic[] =
|
||||
{
|
||||
"H\\RFK[ RRFY[ RRIX[ RMUVU RI[O[ RU[[[",
|
||||
"G]LFL[ RMFM[ RIFYFYLXF RMPUPXQYRZTZWYYXZU[I[ RUPWQXRYTYWXYWZU[",
|
||||
"G]LFL[ RMFM[ RIFUFXGYHZJZLYNXOUP RUFWGXHYJYLXNWOUP RMPUPXQYRZTZWYYXZU[I[ RUPWQXRYTYWXYWZU[",
|
||||
"I[NFN[ ROFO[ RKFZFZLYF RK[R[",
|
||||
"F^NFNLMTLXKZJ[ RXFX[ RYFY[ RKF\\F RG[\\[ RG[Gb RH[Gb R[[\\b R\\[\\b",
|
||||
"G\\LFL[ RMFM[ RSLST RIFYFYLXF RMPSP RI[Y[YUX[",
|
||||
"CbRFR[ RSFS[ ROFVF RGGHHGIFHFGGFHFIGJIKMLONPWPYOZM[I\\G]F^F_G_H^I]H^G RNPLQKSJXIZH[ RNPMQLSKXJZI[G[FZEX RWPYQZS[X\\Z][ RWPXQYSZX[Z\\[^[_Z`X RO[V[",
|
||||
"H\\LIKFKLLINGPFTFWGXIXLWNTOQO RTFVGWIWLVNTO RTOVPXRYTYWXYWZT[O[MZLYKWKVLUMVLW RWQXTXWWYVZT[",
|
||||
"F^KFK[ RLFL[ RXFX[ RYFY[ RHFOF RUF\\F RXHLY RH[O[ RU[\\[",
|
||||
"F^KFK[ RLFL[ RXFX[ RYFY[ RHFOF RUF\\F RXHLY RH[O[ RU[\\[ RN@N?M?M@NBPCTCVBW@",
|
||||
"F^KFK[ RLFL[ RHFOF RLPSPUOVMWIXGYFZF[G[HZIYHZG RSPUQVSWXXZY[ RSPTQUSVXWZX[Z[[Z\\X RH[O[",
|
||||
"E^MFMLLTKXJZI[H[GZGYHXIYHZ RXFX[ RYFY[ RJF\\F RU[\\[",
|
||||
"F_KFK[ RLFRX RKFR[ RYFR[ RYFY[ RZFZ[ RHFLF RYF]F RH[N[ RV[][",
|
||||
"F^KFK[ RLFL[ RXFX[ RYFY[ RHFOF RUF\\F RLPXP RH[O[ RU[\\[",
|
||||
"G]QFNGLIKKJOJRKVLXNZQ[S[VZXXYVZRZOYKXIVGSFQF RQFOGMILKKOKRLVMXOZQ[ RS[UZWXXVYRYOXKWIUGSF",
|
||||
"F^KFK[ RLFL[ RXFX[ RYFY[ RHF\\F RH[O[ RU[\\[",
|
||||
"G]LFL[ RMFM[ RIFUFXGYHZJZMYOXPUQMQ RUFWGXHYJYMXOWPUQ RI[P[",
|
||||
"G\\XIYLYFXIVGSFQFNGLIKKJNJSKVLXNZQ[S[VZXXYV RQFOGMILKKNKSLVMXOZQ[",
|
||||
"I\\RFR[ RSFS[ RLFKLKFZFZLYF RO[V[",
|
||||
"H]KFRV RLFSV RZFSVQYPZN[M[LZLYMXNYMZ RIFOF RVF\\F",
|
||||
"F_RFR[ RSFS[ ROFVF RPILJJLIOIRJULWPXUXYW[U\\R\\O[LYJUIPI RPIMJKLJOJRKUMWPX RUXXWZU[R[OZLXJUI RO[V[",
|
||||
"H\\KFX[ RLFY[ RYFK[ RIFOF RUF[F RI[O[ RU[[[",
|
||||
"F^KFK[ RLFL[ RXFX[ RYFY[ RHFOF RUF\\F RH[\\[ R[[\\b R\\[\\b",
|
||||
"F]KFKQLSOTRTUSWQ RLFLQMSOT RWFW[ RXFX[ RHFOF RTF[F RT[[[",
|
||||
"BcGFG[ RHFH[ RRFR[ RSFS[ R]F][ R^F^[ RDFKF ROFVF RZFaF RD[a[",
|
||||
"BcGFG[ RHFH[ RRFR[ RSFS[ R]F][ R^F^[ RDFKF ROFVF RZFaF RD[a[ R`[ab Ra[ab",
|
||||
"F`PFP[ RQFQ[ RIFHLHFTF RQPXP[Q\\R]T]W\\Y[ZX[M[ RXPZQ[R\\T\\W[YZZX[", /* Ъ */
|
||||
"CaHFH[ RIFI[ REFLF RIPPPSQTRUTUWTYSZP[E[ RPPRQSRTTTWSYRZP[ R[F[[ R\\F\\[ RXF_F RX[_[", /* Ы */
|
||||
"H]MFM[ RNFN[ RJFQF RNPUPXQYRZTZWYYXZU[J[ RUPWQXRYTYWXYWZU[", /* Ь */
|
||||
"H]LIKFKLLINGQFSFVGXIYKZNZSYVXXVZS[P[MZLYKWKVLUMVLW RSFUGWIXKYNYSXVWXUZS[ RPPYP", /* Э */
|
||||
"CbHFH[ RIFI[ REFLF RE[L[ RVFSGQIPKOOORPVQXSZV[X[[Z]X^V_R_O^K]I[GXFVF RVFTGRIQKPOPRQVRXTZV[ RX[ZZ\\X]V^R^O]K\\IZGXF RIPOP", /* Ю */
|
||||
"G]WFW[ RXFX[ R[FOFLGKHJJJLKNLOOPWP ROFMGLHKJKLLNMOOP RRPPQORLYKZJZIY RPQOSMZL[J[IYIX RT[[[", /* Я */
|
||||
"I]NONPMPMONNPMTMVNWOXQXXYZZ[ RWOWXXZZ[[[ RWQVRPSMTLVLXMZP[S[UZWX RPSNTMVMXNZP[", /* letter */
|
||||
"H\\XFWGQINKLNKQKULXNZQ[S[VZXXYUYSXPVNSMQMNNLPKS RXFWHUIQJNLLN RQMONMPLSLUMXOZQ[ RS[UZWXXUXSWPUNSM",
|
||||
"H\\MMM[ RNMN[ RJMUMXNYPYQXSUT RUMWNXPXQWSUT RNTUTXUYWYXXZU[J[ RUTWUXWXXWZU[",
|
||||
"HZMMM[ RNMN[ RJMXMXRWM RJ[Q[",
|
||||
"F]NMNQMWLZK[ RWMW[ RXMX[ RKM[M RI[H`H[[[[`Z[",
|
||||
"H[LSXSXQWOVNTMQMNNLPKSKULXNZQ[S[VZXX RWSWPVN RQMONMPLSLUMXOZQ[",
|
||||
"E`RMR[ RSMS[ ROMVM RJNIOHNIMJMKNMRNSPTUTWSXRZN[M\\M]N\\O[N RPTNUMVKZJ[ RPTNVLZK[I[HZGX RUTWUXVZZ[[ RUTWVYZZ[\\[]Z^X RO[V[",
|
||||
"I[MOLMLQMONNPMTMWNXPXQWSTT RTMVNWPWQVSTT RQTTTWUXWXXWZT[P[MZLXLWMVNWMX RTTVUWWWXVZT[",
|
||||
"G]LML[ RMMM[ RWMW[ RXMX[ RIMPM RTM[M RI[P[ RT[[[ RWNMZ",
|
||||
"G]LML[ RMMM[ RWMW[ RXMX[ RIMPM RTM[M RI[P[ RT[[[ RWNMZ ROGOFNFNGOIQJSJUIVG",
|
||||
"H\\MMM[ RNMN[ RJMQM RNTPTSSTRVNWMXMYNXOWN RPTSUTVVZW[ RPTRUSVUZV[X[YZZX RJ[Q[",
|
||||
"G]NMNQMWLZK[J[IZJYKZ RWMW[ RXMX[ RKM[M RT[[[",
|
||||
"G^LML[ RLMR[ RMMRY RXMR[ RXMX[ RYMY[ RIMMM RXM\\M RI[O[ RU[\\[",
|
||||
"G]LML[ RMMM[ RWMW[ RXMX[ RIMPM RTM[M RMTWT RI[P[ RT[[[",
|
||||
"H\\QMNNLPKSKULXNZQ[S[VZXXYUYSXPVNSMQM RQMONMPLSLUMXOZQ[ RS[UZWXXUXSWPUNSM",
|
||||
"G]LML[ RMMM[ RWMW[ RXMX[ RIM[M RI[P[ RT[[[",
|
||||
"G\\LMLb RMMMb RMPONQMSMVNXPYSYUXXVZS[Q[OZMX RSMUNWPXSXUWXUZS[ RIMMM RIbPb",
|
||||
"H[WPVQWRXQXPVNTMQMNNLPKSKULXNZQ[S[VZXX RQMONMPLSLUMXOZQ[",
|
||||
"I\\RMR[ RSMS[ RMMLRLMYMYRXM RO[V[",
|
||||
"I[LMR[ RMMRY RXMR[P_NaLbKbJaK`La RJMPM RTMZM",
|
||||
"H]RFRb RSFSb ROFSF RRPQNPMNMLNKQKWLZN[P[QZRX RNMMNLQLWMZN[ RWMXNYQYWXZW[ RSPTNUMWMYNZQZWYZW[U[TZSX RObVb",
|
||||
"H\\LMW[ RMMX[ RXML[ RJMPM RTMZM RJ[P[ RT[Z[",
|
||||
"G]LML[ RMMM[ RWMW[ RXMX[ RIMPM RTM[M RI[[[[`Z[",
|
||||
"G]LMLTMVPWRWUVWT RMMMTNVPW RWMW[ RXMX[ RIMPM RTM[M RT[[[",
|
||||
"CbHMH[ RIMI[ RRMR[ RSMS[ R\\M\\[ R]M][ REMLM ROMVM RYM`M RE[`[",
|
||||
"CbHMH[ RIMI[ RRMR[ RSMS[ R\\M\\[ R]M][ REMLM ROMVM RYM`M RE[`[``_[",
|
||||
"H]QMQ[ RRMR[ RLMKRKMUM RRTVTYUZWZXYZV[N[ RVTXUYWYXXZV[", /* ъ */
|
||||
"E_JMJ[ RKMK[ RGMNM RKTOTRUSWSXRZO[G[ ROTQURWRXQZO[ RYMY[ RZMZ[ RVM]M RV[][", /* ы */
|
||||
"J[OMO[ RPMP[ RLMSM RPTTTWUXWXXWZT[L[ RTTVUWWWXVZT[", /* ь */
|
||||
"H]LIKFKLLINGQFSFVGXIYKZNZSYVXXVZS[P[MZLYKWKVLUMVLW RSFUGWIXKYNYSXVWXUZS[ RPPYP", /* э */
|
||||
"DaIMI[ RJMJ[ RFMMM RF[M[ RVMSNQPPSPUQXSZV[X[[Z]X^U^S]P[NXMVM RVMTNRPQSQURXTZV[ RX[ZZ\\X]U]S\\PZNXM RJTPT", /* ю */
|
||||
"G\\VMV[ RWMW[ RZMOMLNKPKQLSOTVT ROMMNLPLQMSOT RTTQUPVNZM[ RTTRUQVOZN[L[KZJX RS[Z[" /* я */
|
||||
};
|
|
@ -63,7 +63,7 @@ public:
|
|||
{
|
||||
int rc = aClearance + m_radius;
|
||||
|
||||
return aSeg.Distance( m_center ) <= rc;
|
||||
return aSeg.Distance( m_center ) < rc;
|
||||
}
|
||||
|
||||
void SetRadius( int aRadius )
|
||||
|
|
|
@ -59,7 +59,7 @@ public:
|
|||
|
||||
bool Collide( const VECTOR2I& aP, int aClearance = 0 ) const
|
||||
{
|
||||
return m_seg.Distance( aP ) <= ( m_width + 1 ) / 2 + aClearance;
|
||||
return m_seg.Distance( aP ) < ( m_width + 1 ) / 2 + aClearance;
|
||||
}
|
||||
|
||||
void SetSeg( const SEG& aSeg )
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
/// Macros which export functions from a DLL/DSO.
|
||||
/// See: http://gcc.gnu.org/wiki/Visibility
|
||||
|
||||
#if defined(__MINGW32__)
|
||||
#if defined(_WIN32)
|
||||
#define APIEXPORT __declspec(dllexport)
|
||||
#define APIIMPORT __declspec(dllimport)
|
||||
#define APILOCAL
|
||||
|
|
|
@ -118,8 +118,10 @@ as such! As such, it is OK to use UTF8 characters:
|
|||
#define LIB_ENV_VAR wxT( "LD_LIBRARY_PATH" )
|
||||
#elif defined(__WXMAC__)
|
||||
#define LIB_ENV_VAR wxT( "DYLD_LIBRARY_PATH" )
|
||||
#elif defined(__MINGW32__)
|
||||
#elif defined(_WIN32)
|
||||
#define LIB_ENV_VAR wxT( "PATH" )
|
||||
#else
|
||||
#error Platform support missing
|
||||
#endif
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue