some enhancements.
This commit is contained in:
parent
5cd2fad850
commit
1547987157
Binary file not shown.
Binary file not shown.
|
@ -54,6 +54,112 @@
|
|||
#define FONT_DEFAULT_SIZE 10 /* Default font size.
|
||||
* The real font size will be computed at run time */
|
||||
|
||||
/* A small class to handle the list od existing translations.
|
||||
* the locale translation is automatic.
|
||||
* the selection of languages is mainly for mainteners's convenience (tests...)
|
||||
* To add a support to a new tranlation:
|
||||
* create a new icon (flag of the country) (see Lang_Fr.xpm as an exemple)
|
||||
* add a new item to s_Language_List[LANGUAGE_DESCR_COUNT]
|
||||
* and set LANGUAGE_DESCR_COUNT to the new value
|
||||
*/
|
||||
struct LANGUAGE_DESCR
|
||||
{
|
||||
int m_WX_Lang_Identifier; // wxWidget locale identifier (see wxWidget doc)
|
||||
int m_KI_Lang_Identifier; // kicad identifier used in menu selection (see id.h)
|
||||
const char** m_Lang_Icon; // the icon used in menus
|
||||
const wxChar* m_Lang_Label; // Label used in menus
|
||||
bool m_DoNotTranslate; // set to true if the m_Lang_Label must not be translated
|
||||
};
|
||||
|
||||
#define LANGUAGE_DESCR_COUNT 14
|
||||
static struct LANGUAGE_DESCR s_Language_List[LANGUAGE_DESCR_COUNT] =
|
||||
{
|
||||
{
|
||||
wxLANGUAGE_DEFAULT,
|
||||
ID_LANGUAGE_DEFAULT,
|
||||
lang_def_xpm,
|
||||
_( "Default" )
|
||||
},
|
||||
{
|
||||
wxLANGUAGE_ENGLISH,
|
||||
ID_LANGUAGE_ENGLISH,
|
||||
lang_en_xpm,
|
||||
wxT( "English" ),
|
||||
true
|
||||
},
|
||||
{
|
||||
wxLANGUAGE_FRENCH,
|
||||
ID_LANGUAGE_FRENCH,
|
||||
lang_fr_xpm,
|
||||
_( "French" )
|
||||
},
|
||||
{
|
||||
wxLANGUAGE_SPANISH,
|
||||
ID_LANGUAGE_SPANISH,
|
||||
lang_es_xpm,
|
||||
_( "Spanish" )
|
||||
},
|
||||
{
|
||||
wxLANGUAGE_PORTUGUESE,
|
||||
ID_LANGUAGE_PORTUGUESE,
|
||||
lang_pt_xpm,
|
||||
_( "Portuguese" )
|
||||
},
|
||||
{
|
||||
wxLANGUAGE_ITALIAN,
|
||||
ID_LANGUAGE_ITALIAN,
|
||||
lang_it_xpm,
|
||||
_( "Italian" )
|
||||
},
|
||||
{
|
||||
wxLANGUAGE_GERMAN,
|
||||
ID_LANGUAGE_GERMAN,
|
||||
lang_de_xpm,
|
||||
_( "German" )
|
||||
},
|
||||
{
|
||||
wxLANGUAGE_SLOVENIAN,
|
||||
ID_LANGUAGE_SLOVENIAN,
|
||||
lang_sl_xpm,
|
||||
_( "Slovenian" )
|
||||
},
|
||||
{
|
||||
wxLANGUAGE_HUNGARIAN,
|
||||
ID_LANGUAGE_HUNGARIAN,
|
||||
lang_hu_xpm,
|
||||
_( "Hungarian" )
|
||||
},
|
||||
{
|
||||
wxLANGUAGE_POLISH,
|
||||
ID_LANGUAGE_POLISH,
|
||||
lang_po_xpm,
|
||||
_( "Polish" )
|
||||
},
|
||||
{
|
||||
wxLANGUAGE_RUSSIAN,
|
||||
ID_LANGUAGE_RUSSIAN,
|
||||
lang_ru_xpm,
|
||||
_( "Russian" )
|
||||
},
|
||||
{
|
||||
wxLANGUAGE_KOREAN,
|
||||
ID_LANGUAGE_KOREAN,
|
||||
lang_ko_xpm,
|
||||
_( "Korean" )
|
||||
},
|
||||
{
|
||||
wxLANGUAGE_CHINESE_SIMPLIFIED,
|
||||
ID_LANGUAGE_CHINESE_SIMPLIFIED,
|
||||
lang_chinese_xpm,
|
||||
_( "Chinese simplified" )
|
||||
},
|
||||
{
|
||||
wxLANGUAGE_CATALAN,
|
||||
ID_LANGUAGE_CATALAN,
|
||||
lang_catalan_xpm,
|
||||
_( "Catalan" )
|
||||
}
|
||||
};
|
||||
|
||||
/**************************/
|
||||
/* WinEDA_App Constructor */
|
||||
|
@ -120,7 +226,7 @@ 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
|
||||
*/
|
||||
*/
|
||||
m_Env_Defined = wxGetEnv( wxT( "KICAD" ), &m_KicadEnv );
|
||||
if( m_Env_Defined ) // ensure m_KicadEnv ends by "/"
|
||||
{
|
||||
|
@ -147,10 +253,10 @@ void WinEDA_App::InitEDA_Appl( const wxString& name )
|
|||
g_MsgFont = new wxFont( g_StdFontPointSize, wxFONTFAMILY_ROMAN, wxNORMAL, wxNORMAL );
|
||||
g_DialogFont = new wxFont( g_DialogFontPointSize, wxFONTFAMILY_ROMAN, wxNORMAL, wxNORMAL );
|
||||
g_ItalicFont = new wxFont( g_DialogFontPointSize,
|
||||
wxFONTFAMILY_ROMAN,
|
||||
wxFONTSTYLE_ITALIC,
|
||||
wxNORMAL );
|
||||
g_FixedFont = new wxFont( g_FixedFontPointSize, wxFONTFAMILY_MODERN, wxNORMAL, wxNORMAL );
|
||||
wxFONTFAMILY_ROMAN,
|
||||
wxFONTSTYLE_ITALIC,
|
||||
wxNORMAL );
|
||||
g_FixedFont = new wxFont( g_FixedFontPointSize, wxFONTFAMILY_MODERN, wxNORMAL, wxNORMAL );
|
||||
|
||||
/* installation des gestionnaires de visu d'images (pour help) */
|
||||
wxImage::AddHandler( new wxPNGHandler );
|
||||
|
@ -190,8 +296,8 @@ void WinEDA_App::InitOnLineHelp()
|
|||
if( wxFileExists( fullfilename ) )
|
||||
{
|
||||
m_HtmlCtrl = new wxHtmlHelpController( wxHF_TOOLBAR |
|
||||
wxHF_CONTENTS | wxHF_PRINT | wxHF_OPEN_FILES
|
||||
/*| wxHF_SEARCH */ );
|
||||
wxHF_CONTENTS | wxHF_PRINT | wxHF_OPEN_FILES
|
||||
/*| wxHF_SEARCH */ );
|
||||
m_HtmlCtrl->UseConfig( m_EDA_CommonConfig );
|
||||
m_HtmlCtrl->SetTitleFormat( wxT( "Kicad Help" ) );
|
||||
m_HtmlCtrl->AddBook( fullfilename );
|
||||
|
@ -202,30 +308,34 @@ void WinEDA_App::InitOnLineHelp()
|
|||
/*******************************/
|
||||
bool WinEDA_App::SetBinDir()
|
||||
/*******************************/
|
||||
|
||||
// Find the path to the executable and store it in WinEDA_App::m_BinDir
|
||||
{
|
||||
|
||||
#ifdef __APPLE__
|
||||
// Derive path from location of the app bundle
|
||||
CFBundleRef mainBundle = CFBundleGetMainBundle();
|
||||
if (mainBundle == NULL) return false;
|
||||
CFURLRef urlref = CFBundleCopyBundleURL(mainBundle);
|
||||
if (urlref == NULL) return false;
|
||||
CFStringRef str = CFURLCopyFileSystemPath(urlref, kCFURLPOSIXPathStyle);
|
||||
if (str == NULL) return false;
|
||||
char *native_str = NULL;
|
||||
int len = CFStringGetMaximumSizeForEncoding(CFStringGetLength(str),
|
||||
kCFStringEncodingUTF8) + 1;
|
||||
native_str = new char[len];
|
||||
CFStringGetCString(str, native_str, len, kCFStringEncodingUTF8);
|
||||
m_BinDir = CONV_FROM_UTF8(native_str);
|
||||
delete[] native_str;
|
||||
|
||||
#elif defined(__UNIX__)
|
||||
// Derive path from location of the app bundle
|
||||
CFBundleRef mainBundle = CFBundleGetMainBundle();
|
||||
if( mainBundle == NULL )
|
||||
return false;
|
||||
CFURLRef urlref = CFBundleCopyBundleURL( mainBundle );
|
||||
if( urlref == NULL )
|
||||
return false;
|
||||
CFStringRef str = CFURLCopyFileSystemPath( urlref, kCFURLPOSIXPathStyle );
|
||||
if( str == NULL )
|
||||
return false;
|
||||
char* native_str = NULL;
|
||||
int len = CFStringGetMaximumSizeForEncoding( CFStringGetLength( str ),
|
||||
kCFStringEncodingUTF8 ) + 1;
|
||||
native_str = new char[len];
|
||||
CFStringGetCString( str, native_str, len, kCFStringEncodingUTF8 );
|
||||
m_BinDir = CONV_FROM_UTF8( native_str );
|
||||
delete[] native_str;
|
||||
|
||||
// Under Linux, if argv[0] doesn't the complete path to the executable,
|
||||
// it's necessary to obtain it using "which <filename>".
|
||||
FILE* ftmp;
|
||||
#elif defined (__UNIX__)
|
||||
|
||||
// Under Linux, if argv[0] doesn't the complete path to the executable,
|
||||
// it's necessary to obtain it using "which <filename>".
|
||||
FILE* ftmp;
|
||||
|
||||
#define TMP_FILE "/tmp/kicad.tmp"
|
||||
char Line[1024];
|
||||
|
@ -428,67 +538,19 @@ bool WinEDA_App::SetLanguage( bool first_time )
|
|||
void WinEDA_App::SetLanguageIdentifier( int menu_id )
|
||||
/**************************************************/
|
||||
|
||||
/* return in m_LanguageId the language id (wxWidgets language identifier)
|
||||
* from menu id (internal menu identifier)
|
||||
/* return in m_LanguageId the wxWidgets language identifier Id
|
||||
* from the kicad menu id (internal menu identifier)
|
||||
*/
|
||||
{
|
||||
switch( menu_id )
|
||||
unsigned int ii;
|
||||
|
||||
for( ii = 0; ii < LANGUAGE_DESCR_COUNT; ii++ )
|
||||
{
|
||||
case ID_LANGUAGE_ITALIAN:
|
||||
m_LanguageId = wxLANGUAGE_ITALIAN;
|
||||
break;
|
||||
|
||||
case ID_LANGUAGE_PORTUGUESE:
|
||||
m_LanguageId = wxLANGUAGE_PORTUGUESE;
|
||||
break;
|
||||
|
||||
case ID_LANGUAGE_RUSSIAN:
|
||||
m_LanguageId = wxLANGUAGE_RUSSIAN;
|
||||
break;
|
||||
|
||||
case ID_LANGUAGE_GERMAN:
|
||||
m_LanguageId = wxLANGUAGE_GERMAN;
|
||||
break;
|
||||
|
||||
case ID_LANGUAGE_SPANISH:
|
||||
m_LanguageId = wxLANGUAGE_SPANISH;
|
||||
break;
|
||||
|
||||
case ID_LANGUAGE_ENGLISH:
|
||||
m_LanguageId = wxLANGUAGE_ENGLISH;
|
||||
break;
|
||||
|
||||
case ID_LANGUAGE_FRENCH:
|
||||
m_LanguageId = wxLANGUAGE_FRENCH;
|
||||
break;
|
||||
|
||||
case ID_LANGUAGE_SLOVENIAN:
|
||||
m_LanguageId = wxLANGUAGE_SLOVENIAN;
|
||||
break;
|
||||
|
||||
case ID_LANGUAGE_HUNGARIAN:
|
||||
m_LanguageId = wxLANGUAGE_HUNGARIAN;
|
||||
break;
|
||||
|
||||
case ID_LANGUAGE_POLISH:
|
||||
m_LanguageId = wxLANGUAGE_POLISH;
|
||||
break;
|
||||
|
||||
case ID_LANGUAGE_KOREAN:
|
||||
m_LanguageId = wxLANGUAGE_KOREAN;
|
||||
break;
|
||||
|
||||
case ID_LANGUAGE_CATALAN:
|
||||
m_LanguageId = wxLANGUAGE_CATALAN;
|
||||
break;
|
||||
|
||||
case ID_LANGUAGE_CHINESE_SIMPLIFIED:
|
||||
m_LanguageId = wxLANGUAGE_CHINESE_SIMPLIFIED;
|
||||
break;
|
||||
|
||||
default:
|
||||
m_LanguageId = wxLANGUAGE_DEFAULT;
|
||||
break;
|
||||
if( menu_id == s_Language_List[ii].m_KI_Lang_Identifier )
|
||||
{
|
||||
m_LanguageId = s_Language_List[ii].m_WX_Lang_Identifier;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -500,163 +562,38 @@ wxMenu* WinEDA_App::SetLanguageList( wxMenu* MasterMenu )
|
|||
/* Create menu list for language choice.
|
||||
*/
|
||||
{
|
||||
wxMenuItem* item;
|
||||
wxMenuItem* item;
|
||||
unsigned int ii;
|
||||
|
||||
if( m_Language_Menu == NULL )
|
||||
{
|
||||
m_Language_Menu = new wxMenu;
|
||||
item = new wxMenuItem( m_Language_Menu, ID_LANGUAGE_DEFAULT,
|
||||
_( "Default" ), wxEmptyString, wxITEM_CHECK );
|
||||
SETBITMAPS( lang_def_xpm );
|
||||
m_Language_Menu->Append( item );
|
||||
|
||||
item = new wxMenuItem( m_Language_Menu, ID_LANGUAGE_ENGLISH,
|
||||
wxT( "English" ), wxEmptyString, wxITEM_CHECK );
|
||||
SETBITMAPS( lang_en_xpm );
|
||||
m_Language_Menu->Append( item );
|
||||
|
||||
item = new wxMenuItem( m_Language_Menu, ID_LANGUAGE_FRENCH,
|
||||
_( "French" ), wxEmptyString, wxITEM_CHECK );
|
||||
SETBITMAPS( lang_fr_xpm );
|
||||
m_Language_Menu->Append( item );
|
||||
|
||||
item = new wxMenuItem( m_Language_Menu, ID_LANGUAGE_SPANISH,
|
||||
_( "Spanish" ), wxEmptyString, wxITEM_CHECK );
|
||||
SETBITMAPS( lang_es_xpm );
|
||||
m_Language_Menu->Append( item );
|
||||
|
||||
item = new wxMenuItem( m_Language_Menu, ID_LANGUAGE_PORTUGUESE,
|
||||
_( "Portuguese" ), wxEmptyString, wxITEM_CHECK );
|
||||
SETBITMAPS( lang_pt_xpm );
|
||||
m_Language_Menu->Append( item );
|
||||
|
||||
|
||||
item = new wxMenuItem( m_Language_Menu, ID_LANGUAGE_ITALIAN,
|
||||
_( "Italian" ), wxEmptyString, wxITEM_CHECK );
|
||||
SETBITMAPS( lang_it_xpm );
|
||||
m_Language_Menu->Append( item );
|
||||
|
||||
item = new wxMenuItem( m_Language_Menu, ID_LANGUAGE_GERMAN,
|
||||
_( "German" ), wxEmptyString, wxITEM_CHECK );
|
||||
SETBITMAPS( lang_de_xpm );
|
||||
m_Language_Menu->Append( item );
|
||||
|
||||
item = new wxMenuItem( m_Language_Menu, ID_LANGUAGE_SLOVENIAN,
|
||||
_( "Slovenian" ), wxEmptyString, wxITEM_CHECK );
|
||||
SETBITMAPS( lang_sl_xpm );
|
||||
m_Language_Menu->Append( item );
|
||||
|
||||
item = new wxMenuItem( m_Language_Menu, ID_LANGUAGE_HUNGARIAN,
|
||||
_( "Hungarian" ), wxEmptyString, wxITEM_CHECK );
|
||||
SETBITMAPS( lang_hu_xpm );
|
||||
m_Language_Menu->Append( item );
|
||||
|
||||
item = new wxMenuItem( m_Language_Menu, ID_LANGUAGE_POLISH,
|
||||
_( "Polish" ), wxEmptyString, wxITEM_CHECK );
|
||||
SETBITMAPS( lang_po_xpm );
|
||||
m_Language_Menu->Append( item );
|
||||
|
||||
item = new wxMenuItem( m_Language_Menu, ID_LANGUAGE_RUSSIAN,
|
||||
_( "Russian" ), wxEmptyString, wxITEM_CHECK );
|
||||
SETBITMAPS( lang_ru_xpm );
|
||||
m_Language_Menu->Append( item );
|
||||
|
||||
item = new wxMenuItem( m_Language_Menu, ID_LANGUAGE_KOREAN,
|
||||
_( "Korean" ), wxEmptyString, wxITEM_CHECK );
|
||||
SETBITMAPS( lang_ko_xpm );
|
||||
m_Language_Menu->Append( item );
|
||||
|
||||
item = new wxMenuItem( m_Language_Menu, ID_LANGUAGE_CATALAN,
|
||||
_( "Catalan" ), wxEmptyString, wxITEM_CHECK );
|
||||
SETBITMAPS( lang_catalan_xpm );
|
||||
m_Language_Menu->Append( item );
|
||||
|
||||
item = new wxMenuItem( m_Language_Menu, ID_LANGUAGE_CHINESE_SIMPLIFIED,
|
||||
_( "Chinese simplified" ), wxEmptyString, wxITEM_CHECK );
|
||||
SETBITMAPS( lang_chinese_xpm );
|
||||
m_Language_Menu->Append( item );
|
||||
for( ii = 0; ii < LANGUAGE_DESCR_COUNT; ii++ )
|
||||
{
|
||||
wxString MenuLabel = s_Language_List[ii].m_DoNotTranslate ?
|
||||
s_Language_List[ii].m_Lang_Label :
|
||||
wxGetTranslation( s_Language_List[ii].m_Lang_Label );
|
||||
item = new wxMenuItem( m_Language_Menu, s_Language_List[ii].m_KI_Lang_Identifier,
|
||||
MenuLabel, wxEmptyString, wxITEM_CHECK );
|
||||
SETBITMAPS( s_Language_List[ii].m_Lang_Icon );
|
||||
m_Language_Menu->Append( item );
|
||||
}
|
||||
}
|
||||
|
||||
m_Language_Menu->Check( ID_LANGUAGE_CATALAN, FALSE );
|
||||
m_Language_Menu->Check( ID_LANGUAGE_CHINESE_SIMPLIFIED, FALSE );
|
||||
m_Language_Menu->Check( ID_LANGUAGE_KOREAN, FALSE );
|
||||
m_Language_Menu->Check( ID_LANGUAGE_RUSSIAN, FALSE );
|
||||
m_Language_Menu->Check( ID_LANGUAGE_POLISH, FALSE );
|
||||
m_Language_Menu->Check( ID_LANGUAGE_HUNGARIAN, FALSE );
|
||||
m_Language_Menu->Check( ID_LANGUAGE_SLOVENIAN, FALSE );
|
||||
m_Language_Menu->Check( ID_LANGUAGE_ITALIAN, FALSE );
|
||||
m_Language_Menu->Check( ID_LANGUAGE_PORTUGUESE, FALSE );
|
||||
m_Language_Menu->Check( ID_LANGUAGE_GERMAN, FALSE );
|
||||
m_Language_Menu->Check( ID_LANGUAGE_SPANISH, FALSE );
|
||||
m_Language_Menu->Check( ID_LANGUAGE_FRENCH, FALSE );
|
||||
m_Language_Menu->Check( ID_LANGUAGE_ENGLISH, FALSE );
|
||||
m_Language_Menu->Check( ID_LANGUAGE_DEFAULT, FALSE );
|
||||
|
||||
switch( m_LanguageId )
|
||||
for( ii = 0; ii < LANGUAGE_DESCR_COUNT; ii++ )
|
||||
{
|
||||
case wxLANGUAGE_CATALAN:
|
||||
m_Language_Menu->Check( ID_LANGUAGE_CATALAN, TRUE );
|
||||
break;
|
||||
|
||||
case wxLANGUAGE_CHINESE_SIMPLIFIED:
|
||||
m_Language_Menu->Check( ID_LANGUAGE_CHINESE_SIMPLIFIED, TRUE );
|
||||
break;
|
||||
|
||||
case wxLANGUAGE_KOREAN:
|
||||
m_Language_Menu->Check( ID_LANGUAGE_KOREAN, TRUE );
|
||||
break;
|
||||
|
||||
case wxLANGUAGE_RUSSIAN:
|
||||
m_Language_Menu->Check( ID_LANGUAGE_RUSSIAN, TRUE );
|
||||
break;
|
||||
|
||||
case wxLANGUAGE_GERMAN:
|
||||
m_Language_Menu->Check( ID_LANGUAGE_GERMAN, TRUE );
|
||||
break;
|
||||
|
||||
case wxLANGUAGE_FRENCH:
|
||||
m_Language_Menu->Check( ID_LANGUAGE_FRENCH, TRUE );
|
||||
break;
|
||||
|
||||
case wxLANGUAGE_ENGLISH:
|
||||
m_Language_Menu->Check( ID_LANGUAGE_ENGLISH, TRUE );
|
||||
break;
|
||||
|
||||
case wxLANGUAGE_SPANISH:
|
||||
m_Language_Menu->Check( ID_LANGUAGE_SPANISH, TRUE );
|
||||
break;
|
||||
|
||||
case wxLANGUAGE_PORTUGUESE:
|
||||
m_Language_Menu->Check( ID_LANGUAGE_PORTUGUESE, TRUE );
|
||||
break;
|
||||
|
||||
case wxLANGUAGE_ITALIAN:
|
||||
m_Language_Menu->Check( ID_LANGUAGE_ITALIAN, TRUE );
|
||||
break;
|
||||
|
||||
case wxLANGUAGE_SLOVENIAN:
|
||||
m_Language_Menu->Check( ID_LANGUAGE_SLOVENIAN, TRUE );
|
||||
break;
|
||||
|
||||
case wxLANGUAGE_HUNGARIAN:
|
||||
m_Language_Menu->Check( ID_LANGUAGE_HUNGARIAN, TRUE );
|
||||
break;
|
||||
|
||||
case wxLANGUAGE_POLISH:
|
||||
m_Language_Menu->Check( ID_LANGUAGE_POLISH, TRUE );
|
||||
break;
|
||||
|
||||
default:
|
||||
m_Language_Menu->Check( ID_LANGUAGE_DEFAULT, TRUE );
|
||||
break;
|
||||
if( m_LanguageId == s_Language_List[ii].m_WX_Lang_Identifier )
|
||||
m_Language_Menu->Check( s_Language_List[ii].m_KI_Lang_Identifier, true );
|
||||
else
|
||||
m_Language_Menu->Check( s_Language_List[ii].m_KI_Lang_Identifier, false );
|
||||
}
|
||||
|
||||
if( MasterMenu )
|
||||
{
|
||||
ADD_MENUITEM_WITH_HELP_AND_SUBMENU( MasterMenu, m_Language_Menu,
|
||||
ID_LANGUAGE_CHOICE, _( "Language" ),
|
||||
wxT( "For test only, use Default setup for normal use" ),
|
||||
language_xpm );
|
||||
ID_LANGUAGE_CHOICE, _( "Language" ),
|
||||
wxT( "For test only, use Default setup for normal use" ),
|
||||
language_xpm );
|
||||
}
|
||||
return m_Language_Menu;
|
||||
}
|
||||
|
@ -665,8 +602,9 @@ wxMenu* WinEDA_App::SetLanguageList( wxMenu* MasterMenu )
|
|||
/**********************/
|
||||
int WinEDA_App::OnRun()
|
||||
/**********************/
|
||||
|
||||
/* Run init scripts
|
||||
*/
|
||||
*/
|
||||
{
|
||||
#ifdef KICAD_PYTHON
|
||||
PyHandler::GetInstance()->RunScripts();
|
||||
|
|
|
@ -214,14 +214,14 @@ public:
|
|||
wxDC* DC, const wxPoint& pos );
|
||||
|
||||
// Pads sur modules
|
||||
void AddPad( MODULE* Module, wxDC* DC );
|
||||
void AddPad( MODULE* Module, bool draw );
|
||||
void DeletePad( D_PAD* Pad, wxDC* DC );
|
||||
void StartMovePad( D_PAD* Pad, wxDC* DC );
|
||||
void RotatePad( D_PAD* Pad, wxDC* DC );
|
||||
void PlacePad( D_PAD* Pad, wxDC* DC );
|
||||
void Export_Pad_Settings( D_PAD* pt_pad );
|
||||
void Import_Pad_Settings( D_PAD* pt_pad, wxDC* DC );
|
||||
void Global_Import_Pad_Settings( D_PAD* Pad, wxDC* DC );
|
||||
void Export_Pad_Settings( D_PAD* aPad );
|
||||
void Import_Pad_Settings( D_PAD* aPad, bool aDraw );
|
||||
void Global_Import_Pad_Settings( D_PAD* aPad, bool aDraw );
|
||||
|
||||
|
||||
// loading footprints
|
||||
|
|
|
@ -82,6 +82,23 @@ void D_PAD::ComputeRayon()
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Function GetBoundingBox
|
||||
* returns the bounding box of this pad
|
||||
* Mainly used to redraw the screen area occuped by the pad
|
||||
*/
|
||||
EDA_Rect D_PAD::GetBoundingBox()
|
||||
{
|
||||
// Calculate area:
|
||||
ComputeRayon(); // calculate the radius of the area, considered as a circle
|
||||
EDA_Rect area;
|
||||
area.SetOrigin(m_Pos);
|
||||
area.Inflate(m_Rayon, m_Rayon);
|
||||
|
||||
return area;
|
||||
}
|
||||
|
||||
|
||||
/*********************************************/
|
||||
const wxPoint D_PAD::ReturnShapePos()
|
||||
/*********************************************/
|
||||
|
@ -239,6 +256,9 @@ void D_PAD::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, const wxPoin
|
|||
int zoom;
|
||||
int fillpad = 0;
|
||||
wxPoint shape_pos;
|
||||
|
||||
if ( m_Flags & DO_NOT_DRAW )
|
||||
return;
|
||||
|
||||
wxASSERT( panel );
|
||||
|
||||
|
|
|
@ -172,6 +172,13 @@ public:
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Function GetBoundingBox
|
||||
* returns the bounding box of this Footprint
|
||||
* Mainly used to redraw the screen area occuped by the footprint
|
||||
*/
|
||||
EDA_Rect GetBoundingBox();
|
||||
|
||||
/**
|
||||
* Function Compare
|
||||
* compares two pads and return 0 if they are equal.
|
||||
|
|
|
@ -30,6 +30,7 @@ PCB_SCREEN::PCB_SCREEN( int idscreen ) : BASE_SCREEN( TYPESCREEN )
|
|||
m_Type = idscreen;
|
||||
SetGridList( g_GridList );
|
||||
SetZoomList( zoom_list );
|
||||
m_Grid = wxSize( 500, 500 ); /* pas de la grille en 1/10000 "*/
|
||||
Init();
|
||||
}
|
||||
|
||||
|
@ -50,7 +51,6 @@ void PCB_SCREEN::Init()
|
|||
m_Route_Layer_TOP = CMP_N; /* ref couches par defaut pour vias (Cu.. Cmp) */
|
||||
m_Route_Layer_BOTTOM = COPPER_LAYER_N;
|
||||
m_Zoom = 128; /* valeur */
|
||||
m_Grid = wxSize( 500, 500 ); /* pas de la grille en 1/10000 "*/
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -663,12 +663,12 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event )
|
|||
|
||||
case ID_POPUP_PCB_IMPORT_PAD_SETTINGS:
|
||||
DrawPanel->MouseToCursorSchema();
|
||||
Import_Pad_Settings( (D_PAD*) GetCurItem(), &dc );
|
||||
Import_Pad_Settings( (D_PAD*) GetCurItem(), true );
|
||||
break;
|
||||
|
||||
case ID_POPUP_PCB_GLOBAL_IMPORT_PAD_SETTINGS:
|
||||
DrawPanel->MouseToCursorSchema();
|
||||
Global_Import_Pad_Settings( (D_PAD*) GetCurItem(), &dc );
|
||||
Global_Import_Pad_Settings( (D_PAD*) GetCurItem(), true );
|
||||
break;
|
||||
|
||||
case ID_POPUP_PCB_EXPORT_PAD_SETTINGS:
|
||||
|
|
|
@ -442,8 +442,12 @@ void WinEDA_PadPropertiesFrame::PadPropertiesAccept( wxCommandEvent& event )
|
|||
Module = (MODULE*) CurrentPad->m_Parent;
|
||||
Module->m_LastEdit_Time = time( NULL );
|
||||
|
||||
if( m_DC )
|
||||
CurrentPad->Draw( m_Parent->DrawPanel, m_DC, GR_XOR );
|
||||
if( m_DC )// redraw the area where the pas was, without pad
|
||||
{
|
||||
CurrentPad->m_Flags |= DO_NOT_DRAW;
|
||||
m_Parent->DrawPanel->PostDirtyRect( CurrentPad->GetBoundingBox() );
|
||||
CurrentPad->m_Flags &= ~DO_NOT_DRAW;
|
||||
}
|
||||
CurrentPad->m_PadShape = g_Pad_Master.m_PadShape;
|
||||
CurrentPad->m_Attribut = g_Pad_Master.m_Attribut;
|
||||
if (CurrentPad->m_Pos != g_Pad_Master.m_Pos )
|
||||
|
@ -529,8 +533,8 @@ void WinEDA_PadPropertiesFrame::PadPropertiesAccept( wxCommandEvent& event )
|
|||
|
||||
Module->Set_Rectangle_Encadrement();
|
||||
CurrentPad->Display_Infos( m_Parent );
|
||||
if( m_DC )
|
||||
CurrentPad->Draw( m_Parent->DrawPanel, m_DC, GR_OR );
|
||||
if( m_DC )// redraw the area where the pas was
|
||||
m_Parent->DrawPanel->PostDirtyRect( CurrentPad->GetBoundingBox() );
|
||||
m_Parent->GetScreen()->SetModify();
|
||||
}
|
||||
|
||||
|
|
|
@ -98,7 +98,7 @@ void WinEDA_PcbFrame::Files_io( wxCommandEvent& event )
|
|||
Clear_Pcb(TRUE );
|
||||
wxSetWorkingDirectory( wxPathOnly( GetLastProject( id - ID_LOAD_FILE_1 ) ) );
|
||||
LoadOnePcbFile( GetLastProject( id - ID_LOAD_FILE_1 ).GetData(),
|
||||
FALSE );
|
||||
false );
|
||||
ReCreateAuxiliaryToolbar();
|
||||
break;
|
||||
|
||||
|
@ -211,7 +211,7 @@ int WinEDA_PcbFrame::LoadOnePcbFile( const wxString& FullFileName, bool Append )
|
|||
// Reload the corresponding configuration file:
|
||||
wxSetWorkingDirectory( wxPathOnly( GetScreen()->m_FileName ) );
|
||||
if( Append )
|
||||
ReadPcbFile( source, TRUE );
|
||||
ReadPcbFile( source, true );
|
||||
else
|
||||
{
|
||||
Read_Config( GetScreen()->m_FileName );
|
||||
|
@ -222,7 +222,7 @@ int WinEDA_PcbFrame::LoadOnePcbFile( const wxString& FullFileName, bool Append )
|
|||
m_DisplayModEdge = DisplayOpt.DisplayModEdge;
|
||||
m_DisplayPadFill = DisplayOpt.DisplayPadFill;
|
||||
|
||||
ReadPcbFile( source, FALSE );
|
||||
ReadPcbFile( source, false );
|
||||
}
|
||||
|
||||
fclose( source );
|
||||
|
@ -245,18 +245,18 @@ int WinEDA_PcbFrame::LoadOnePcbFile( const wxString& FullFileName, bool Append )
|
|||
/* reset the auto save timer */
|
||||
g_SaveTime = time( NULL );
|
||||
|
||||
|
||||
#if 0 && defined(DEBUG)
|
||||
// note this freezes up pcbnew when run under the kicad project
|
||||
|
||||
#if 0 && defined(DEBUG)
|
||||
// note this freezes up pcbnew when run under the kicad project
|
||||
// manager. runs fine from command prompt. This is because the kicad
|
||||
// project manager redirects stdout of the child pcbnew process to itself,
|
||||
// but never reads from that pipe, and that in turn eventually blocks
|
||||
// but never reads from that pipe, and that in turn eventually blocks
|
||||
// the pcbnew program when the pipe it is writing to gets full.
|
||||
|
||||
|
||||
// Output the board object tree to stdout, but please run from command prompt:
|
||||
m_Pcb->Show( 0, std::cout );
|
||||
#endif
|
||||
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -273,14 +273,14 @@ bool WinEDA_PcbFrame::SavePcbFile( const wxString& FileName )
|
|||
wxString upperTxt;
|
||||
wxString lowerTxt;
|
||||
wxString msg;
|
||||
|
||||
|
||||
bool saveok = TRUE;
|
||||
FILE* dest;
|
||||
|
||||
if( FileName == wxEmptyString )
|
||||
{
|
||||
msg = wxT( "*" ) + PcbExtBuffer;
|
||||
|
||||
|
||||
FullFileName = EDA_FileSelector( _( "Save board files:" ),
|
||||
wxEmptyString, /* Chemin par defaut */
|
||||
GetScreen()->m_FileName, /* nom fichier par defaut */
|
||||
|
@ -292,7 +292,7 @@ bool WinEDA_PcbFrame::SavePcbFile( const wxString& FileName )
|
|||
);
|
||||
if( FullFileName == wxEmptyString )
|
||||
return FALSE;
|
||||
|
||||
|
||||
GetScreen()->m_FileName = FullFileName;
|
||||
}
|
||||
else
|
||||
|
@ -327,7 +327,7 @@ bool WinEDA_PcbFrame::SavePcbFile( const wxString& FileName )
|
|||
}
|
||||
else
|
||||
{
|
||||
BackupFileName = wxEmptyString;
|
||||
BackupFileName = wxEmptyString;
|
||||
saveok = FALSE;
|
||||
}
|
||||
|
||||
|
@ -344,7 +344,7 @@ bool WinEDA_PcbFrame::SavePcbFile( const wxString& FileName )
|
|||
{
|
||||
GetScreen()->m_FileName = FullFileName;
|
||||
SetTitle( GetScreen()->m_FileName );
|
||||
|
||||
|
||||
SavePcbFormatAscii( dest );
|
||||
fclose( dest );
|
||||
}
|
||||
|
@ -364,9 +364,9 @@ bool WinEDA_PcbFrame::SavePcbFile( const wxString& FileName )
|
|||
lowerTxt += FullFileName;
|
||||
|
||||
Affiche_1_Parametre( this, 1, upperTxt, lowerTxt, CYAN );
|
||||
|
||||
|
||||
g_SaveTime = time( NULL ); /* Reset timer for the automatic saving */
|
||||
|
||||
|
||||
GetScreen()->ClrModify();
|
||||
return TRUE;
|
||||
}
|
||||
|
|
|
@ -38,7 +38,6 @@ class WinEDA_PadGlobalEditFrame : public wxDialog
|
|||
private:
|
||||
|
||||
WinEDA_BasePcbFrame* m_Parent;
|
||||
wxDC* m_DC;
|
||||
D_PAD* CurrentPad;
|
||||
wxCheckBox* m_Pad_Shape_Filter;
|
||||
wxCheckBox* m_Pad_Layer_Filter;
|
||||
|
@ -51,8 +50,7 @@ private:
|
|||
public:
|
||||
|
||||
// Constructor and destructor
|
||||
WinEDA_PadGlobalEditFrame( WinEDA_BasePcbFrame * parent,
|
||||
D_PAD * Pad, wxDC * DC, const wxPoint &pos );
|
||||
WinEDA_PadGlobalEditFrame( WinEDA_BasePcbFrame * parent, D_PAD * Pad );
|
||||
~WinEDA_PadGlobalEditFrame() { }
|
||||
|
||||
private:
|
||||
|
@ -72,10 +70,8 @@ END_EVENT_TABLE()
|
|||
|
||||
/********************************************************************************/
|
||||
WinEDA_PadGlobalEditFrame::WinEDA_PadGlobalEditFrame( WinEDA_BasePcbFrame* parent,
|
||||
D_PAD* Pad,
|
||||
wxDC* DC,
|
||||
const wxPoint& framepos ) :
|
||||
wxDialog( parent, -1, _( "Pads Global Edit" ), framepos, wxSize( 310, 235 ),
|
||||
D_PAD* Pad ) :
|
||||
wxDialog( parent, -1, _( "Pads Global Edit" ), wxDefaultPosition, wxSize( 310, 235 ),
|
||||
DIALOG_STYLE )
|
||||
/********************************************************************************/
|
||||
{
|
||||
|
@ -84,7 +80,6 @@ WinEDA_PadGlobalEditFrame::WinEDA_PadGlobalEditFrame( WinEDA_BasePcbFrame* paren
|
|||
|
||||
m_Parent = parent;
|
||||
SetFont( *g_DialogFont );
|
||||
m_DC = DC;
|
||||
Centre();
|
||||
|
||||
CurrentPad = Pad;
|
||||
|
@ -206,26 +201,24 @@ void WinEDA_PadGlobalEditFrame::PadPropertiesAccept( wxCommandEvent& event )
|
|||
|
||||
|
||||
/***************************************************************************/
|
||||
void WinEDA_BasePcbFrame::Global_Import_Pad_Settings( D_PAD* Pad, wxDC* DC )
|
||||
void WinEDA_BasePcbFrame::Global_Import_Pad_Settings( D_PAD* aPad, bool aDraw )
|
||||
/***************************************************************************/
|
||||
|
||||
/*
|
||||
* Routine de selection et de correction des dimensions des pastilles
|
||||
* de tous les modules
|
||||
* - semblables a l'module de reference selectionnee,
|
||||
* c.a.d de meme nom de librairie
|
||||
* - ou sur l'module localisee, selon le menu d'appel
|
||||
/** Function Global_Import_Pad_Settings
|
||||
* Function to change pad caracteristics for the given footprint
|
||||
* or alls footprints which look like the given footprint
|
||||
* @param aPad pad to use as pattern. The given footprint is the parent of this pad
|
||||
* @param aDraw: if true: redraws the footprint
|
||||
*/
|
||||
{
|
||||
D_PAD* pt_pad;
|
||||
MODULE* Module_Ref, * Module;
|
||||
int diag;
|
||||
bool Edit_Same_Modules = FALSE;
|
||||
|
||||
if( Pad == NULL )
|
||||
if( aPad == NULL )
|
||||
return;
|
||||
|
||||
Module = (MODULE*) Pad->m_Parent;
|
||||
Module = (MODULE*) aPad->m_Parent;
|
||||
|
||||
if( Module == NULL )
|
||||
{
|
||||
|
@ -237,8 +230,7 @@ void WinEDA_BasePcbFrame::Global_Import_Pad_Settings( D_PAD* Pad, wxDC* DC )
|
|||
|
||||
Module->Display_Infos( this );
|
||||
|
||||
WinEDA_PadGlobalEditFrame* frame = new WinEDA_PadGlobalEditFrame( this, Pad, DC,
|
||||
wxPoint( -1, -1 ) );
|
||||
WinEDA_PadGlobalEditFrame* frame = new WinEDA_PadGlobalEditFrame( this, aPad );
|
||||
|
||||
diag = frame->ShowModal();
|
||||
frame->Destroy();
|
||||
|
@ -266,9 +258,14 @@ void WinEDA_BasePcbFrame::Global_Import_Pad_Settings( D_PAD* Pad, wxDC* DC )
|
|||
Module->Display_Infos( this );
|
||||
|
||||
/* Effacement du module */
|
||||
Module->Draw( DrawPanel, DC, GR_XOR );
|
||||
if ( aDraw )
|
||||
{
|
||||
Module->m_Flags |= DO_NOT_DRAW;
|
||||
DrawPanel->PostDirtyRect( Module->GetBoundingBox() );
|
||||
Module->m_Flags &= ~DO_NOT_DRAW;
|
||||
}
|
||||
|
||||
pt_pad = (D_PAD*) Module->m_Pads;
|
||||
D_PAD* pt_pad = (D_PAD*) Module->m_Pads;
|
||||
for( ; pt_pad != NULL; pt_pad = (D_PAD*) pt_pad->Pnext )
|
||||
{
|
||||
/* Filtrage des modifications interdites */
|
||||
|
@ -345,7 +342,8 @@ void WinEDA_BasePcbFrame::Global_Import_Pad_Settings( D_PAD* Pad, wxDC* DC )
|
|||
}
|
||||
|
||||
Module->Set_Rectangle_Encadrement();
|
||||
Module->Draw( DrawPanel, DC, GR_OR );
|
||||
if ( aDraw )
|
||||
DrawPanel->PostDirtyRect( Module->GetBoundingBox() );
|
||||
}
|
||||
|
||||
GetScreen()->SetModify();
|
||||
|
|
|
@ -145,7 +145,9 @@ bool WinEDA_BasePcbFrame::Clear_Pcb( bool query )
|
|||
SetCurItem( NULL );
|
||||
|
||||
/* Init parametres de gestion */
|
||||
wxSize gridsize = GetScreen()->GetGrid();
|
||||
((PCB_SCREEN*)GetScreen())->Init();
|
||||
GetScreen()->SetGrid( gridsize );
|
||||
|
||||
g_HightLigt_Status = 0;
|
||||
|
||||
|
|
|
@ -355,19 +355,6 @@ int WinEDA_BasePcbFrame::ReadSetup( FILE* File, int* LineNum )
|
|||
continue;
|
||||
}
|
||||
|
||||
if( stricmp( Line, "GridSize" ) == 0 )
|
||||
{
|
||||
wxSize Grid;
|
||||
Grid.x = atoi( data );
|
||||
data = strtok( NULL, " =\n\r" );
|
||||
if( data )
|
||||
Grid.y = atoi( data );
|
||||
else
|
||||
Grid.y = Grid.x;
|
||||
GetScreen()->SetGrid( Grid );
|
||||
continue;
|
||||
}
|
||||
|
||||
if( stricmp( Line, "ZoneGridSize" ) == 0 )
|
||||
{
|
||||
g_GridRoutingSize = atoi( data );
|
||||
|
@ -518,23 +505,12 @@ static int WriteSetup( FILE* aFile, WinEDA_BasePcbFrame* aFrame, BOARD* aBoard )
|
|||
/******************************************************************************/
|
||||
{
|
||||
char text[1024];
|
||||
int ii, jj;
|
||||
int ii;
|
||||
|
||||
fprintf( aFile, "$SETUP\n" );
|
||||
sprintf( text, "InternalUnit %f INCH\n", 1.0 / PCB_INTERNAL_UNIT );
|
||||
fprintf( aFile, text );
|
||||
|
||||
if( aFrame->GetScreen()->m_UserGridIsON )
|
||||
ii = jj = -1;
|
||||
else
|
||||
{
|
||||
ii = aFrame->GetScreen()->GetGrid().x;
|
||||
jj = aFrame->GetScreen()->GetGrid().y;
|
||||
}
|
||||
|
||||
sprintf( text, "GridSize %d %d\n", ii, jj );
|
||||
fprintf( aFile, text );
|
||||
|
||||
sprintf( text, "UserGridSize %lf %lf %s\n",
|
||||
aFrame->GetScreen()->m_UserGrid.x, aFrame->GetScreen()->m_UserGrid.y,
|
||||
( g_UserGrid_Unit == 0 ) ? "INCH" : "mm" );
|
||||
|
@ -551,7 +527,7 @@ static int WriteSetup( FILE* aFile, WinEDA_BasePcbFrame* aFrame, BOARD* aBoard )
|
|||
}
|
||||
|
||||
fprintf( aFile, "TrackWidth %d\n", g_DesignSettings.m_CurrentTrackWidth );
|
||||
for( ii = 0; ii < HISTORY_NUMBER; ii++ )
|
||||
for( int ii = 0; ii < HISTORY_NUMBER; ii++ )
|
||||
{
|
||||
if( g_DesignSettings.m_TrackWidthHistory[ii] == 0 )
|
||||
break;
|
||||
|
|
|
@ -462,12 +462,12 @@ void WinEDA_ModuleEditFrame::Process_Special_Functions( wxCommandEvent& event )
|
|||
case ID_POPUP_PCB_IMPORT_PAD_SETTINGS:
|
||||
SaveCopyInUndoList( m_Pcb->m_Modules );
|
||||
DrawPanel->MouseToCursorSchema();
|
||||
Import_Pad_Settings( (D_PAD*) GetScreen()->GetCurItem(), &dc );
|
||||
Import_Pad_Settings( (D_PAD*) GetScreen()->GetCurItem(), true );
|
||||
break;
|
||||
|
||||
case ID_POPUP_PCB_GLOBAL_IMPORT_PAD_SETTINGS:
|
||||
SaveCopyInUndoList( m_Pcb->m_Modules );
|
||||
Global_Import_Pad_Settings( (D_PAD*) GetScreen()->GetCurItem(), &dc );
|
||||
Global_Import_Pad_Settings( (D_PAD*) GetScreen()->GetCurItem(), true );
|
||||
DrawPanel->MouseToCursorSchema();
|
||||
break;
|
||||
|
||||
|
|
|
@ -157,7 +157,7 @@ void WinEDA_ModuleEditFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos )
|
|||
if( m_Pcb->m_Modules )
|
||||
{
|
||||
SaveCopyInUndoList( m_Pcb->m_Modules );
|
||||
AddPad( m_Pcb->m_Modules, DC );
|
||||
AddPad( m_Pcb->m_Modules, true );
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
|
@ -132,7 +132,7 @@ void WinEDA_BasePcbFrame::Export_Pad_Settings( D_PAD* pt_pad )
|
|||
|
||||
|
||||
/***********************************************************************/
|
||||
void WinEDA_BasePcbFrame::Import_Pad_Settings( D_PAD* pt_pad, wxDC* DC )
|
||||
void WinEDA_BasePcbFrame::Import_Pad_Settings( D_PAD* aPad, bool aDraw )
|
||||
/***********************************************************************/
|
||||
|
||||
/* Met a jour les nouvelles valeurs de dimensions du pad pointe par pt_pad
|
||||
|
@ -141,29 +141,33 @@ void WinEDA_BasePcbFrame::Import_Pad_Settings( D_PAD* pt_pad, wxDC* DC )
|
|||
* - la position et les noms ne sont pas touches
|
||||
*/
|
||||
{
|
||||
if( DC )
|
||||
pt_pad->Draw( DrawPanel, DC, GR_XOR );
|
||||
if( aDraw )
|
||||
{
|
||||
aPad->m_Flags |= DO_NOT_DRAW;
|
||||
DrawPanel->PostDirtyRect( aPad->GetBoundingBox() );
|
||||
aPad->m_Flags &= ~DO_NOT_DRAW;
|
||||
}
|
||||
|
||||
pt_pad->m_PadShape = g_Pad_Master.m_PadShape;
|
||||
pt_pad->m_Masque_Layer = g_Pad_Master.m_Masque_Layer;
|
||||
pt_pad->m_Attribut = g_Pad_Master.m_Attribut;
|
||||
pt_pad->m_Orient = g_Pad_Master.m_Orient +
|
||||
( (MODULE*) pt_pad->m_Parent )->m_Orient;
|
||||
pt_pad->m_Size = g_Pad_Master.m_Size;
|
||||
pt_pad->m_DeltaSize = wxSize( 0, 0 );
|
||||
pt_pad->m_Offset = g_Pad_Master.m_Offset;
|
||||
pt_pad->m_Drill = g_Pad_Master.m_Drill;
|
||||
pt_pad->m_DrillShape = g_Pad_Master.m_DrillShape;
|
||||
aPad->m_PadShape = g_Pad_Master.m_PadShape;
|
||||
aPad->m_Masque_Layer = g_Pad_Master.m_Masque_Layer;
|
||||
aPad->m_Attribut = g_Pad_Master.m_Attribut;
|
||||
aPad->m_Orient = g_Pad_Master.m_Orient +
|
||||
( (MODULE*) aPad->m_Parent )->m_Orient;
|
||||
aPad->m_Size = g_Pad_Master.m_Size;
|
||||
aPad->m_DeltaSize = wxSize( 0, 0 );
|
||||
aPad->m_Offset = g_Pad_Master.m_Offset;
|
||||
aPad->m_Drill = g_Pad_Master.m_Drill;
|
||||
aPad->m_DrillShape = g_Pad_Master.m_DrillShape;
|
||||
|
||||
/* Traitement des cas particuliers : */
|
||||
switch( g_Pad_Master.m_PadShape )
|
||||
{
|
||||
case PAD_TRAPEZOID:
|
||||
pt_pad->m_DeltaSize = g_Pad_Master.m_DeltaSize;
|
||||
aPad->m_DeltaSize = g_Pad_Master.m_DeltaSize;
|
||||
break;
|
||||
|
||||
case PAD_CIRCLE:
|
||||
pt_pad->m_Size.y = pt_pad->m_Size.x;
|
||||
aPad->m_Size.y = aPad->m_Size.x;
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -171,21 +175,21 @@ void WinEDA_BasePcbFrame::Import_Pad_Settings( D_PAD* pt_pad, wxDC* DC )
|
|||
{
|
||||
case PAD_SMD:
|
||||
case PAD_CONN:
|
||||
pt_pad->m_Drill = wxSize( 0, 0 );
|
||||
pt_pad->m_Offset.x = 0;
|
||||
pt_pad->m_Offset.y = 0;
|
||||
aPad->m_Drill = wxSize( 0, 0 );
|
||||
aPad->m_Offset.x = 0;
|
||||
aPad->m_Offset.y = 0;
|
||||
}
|
||||
|
||||
pt_pad->ComputeRayon();
|
||||
aPad->ComputeRayon();
|
||||
|
||||
if( DC )
|
||||
pt_pad->Draw( DrawPanel, DC, GR_XOR );
|
||||
( (MODULE*) pt_pad->m_Parent )->m_LastEdit_Time = time( NULL );
|
||||
if( aDraw )
|
||||
DrawPanel->PostDirtyRect( aPad->GetBoundingBox() );
|
||||
( (MODULE*) aPad->m_Parent )->m_LastEdit_Time = time( NULL );
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************/
|
||||
void WinEDA_BasePcbFrame::AddPad( MODULE* Module, wxDC* DC )
|
||||
void WinEDA_BasePcbFrame::AddPad( MODULE* Module, bool draw )
|
||||
/***********************************************************/
|
||||
/* Routine d'ajout d'un pad sur l'module selectionnee */
|
||||
{
|
||||
|
@ -218,7 +222,7 @@ void WinEDA_BasePcbFrame::AddPad( MODULE* Module, wxDC* DC )
|
|||
}
|
||||
|
||||
/* Mise a jour des caract de la pastille : */
|
||||
Import_Pad_Settings( Pad, NULL );
|
||||
Import_Pad_Settings( Pad, false );
|
||||
Pad->m_Netname.Empty();
|
||||
|
||||
Pad->m_Pos = GetScreen()->m_Curseur;
|
||||
|
@ -248,7 +252,8 @@ void WinEDA_BasePcbFrame::AddPad( MODULE* Module, wxDC* DC )
|
|||
/* Redessin du module */
|
||||
Module->Set_Rectangle_Encadrement();
|
||||
Pad->Display_Infos( this );
|
||||
Module->Draw( DrawPanel, DC, GR_OR );
|
||||
if ( draw )
|
||||
DrawPanel->PostDirtyRect( Module->GetBoundingBox() );
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/********************************************************************************/
|
||||
/* onrightclick.cpp: fonctions de l'edition du PCB appel<65>es par le bouton droit */
|
||||
/********************************************************************************/
|
||||
/**************************************************/
|
||||
/* onrightclick.cpp: Right mouse button functions */
|
||||
/**************************************************/
|
||||
|
||||
#include "fctsys.h"
|
||||
|
||||
|
@ -86,8 +86,8 @@ static wxMenu* Append_Track_Width_List()
|
|||
if( g_DesignSettings.m_TrackWidthHistory[ii] == 0 )
|
||||
break;
|
||||
value = To_User_Unit( g_UnitMetric,
|
||||
g_DesignSettings.m_TrackWidthHistory[ii],
|
||||
PCB_INTERNAL_UNIT );
|
||||
g_DesignSettings.m_TrackWidthHistory[ii],
|
||||
PCB_INTERNAL_UNIT );
|
||||
if( g_UnitMetric == INCHES ) // Affichage en mils
|
||||
msg.Printf( _( "Track %.1f" ), value * 1000 );
|
||||
else
|
||||
|
@ -106,8 +106,8 @@ static wxMenu* Append_Track_Width_List()
|
|||
if( g_DesignSettings.m_ViaSizeHistory[ii] == 0 )
|
||||
break;
|
||||
value = To_User_Unit( g_UnitMetric,
|
||||
g_DesignSettings.m_ViaSizeHistory[ii],
|
||||
PCB_INTERNAL_UNIT );
|
||||
g_DesignSettings.m_ViaSizeHistory[ii],
|
||||
PCB_INTERNAL_UNIT );
|
||||
if( g_UnitMetric == INCHES )
|
||||
msg.Printf( _( "Via %.1f" ), value * 1000 );
|
||||
else
|
||||
|
@ -154,12 +154,12 @@ bool WinEDA_PcbFrame::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu )
|
|||
if( item && item->m_Flags )
|
||||
{
|
||||
ADD_MENUITEM( aPopMenu, ID_POPUP_CANCEL_CURRENT_COMMAND,
|
||||
_( "Cancel" ), cancel_xpm );
|
||||
_( "Cancel" ), cancel_xpm );
|
||||
}
|
||||
else
|
||||
{
|
||||
ADD_MENUITEM( aPopMenu, ID_POPUP_CLOSE_CURRENT_TOOL,
|
||||
_( "End Tool" ), cancel_tool_xpm );
|
||||
_( "End Tool" ), cancel_tool_xpm );
|
||||
}
|
||||
aPopMenu->AppendSeparator();
|
||||
}
|
||||
|
@ -168,7 +168,7 @@ bool WinEDA_PcbFrame::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu )
|
|||
if( item && item->m_Flags )
|
||||
{
|
||||
ADD_MENUITEM( aPopMenu, ID_POPUP_CANCEL_CURRENT_COMMAND,
|
||||
_( "Cancel" ), cancel_xpm );
|
||||
_( "Cancel" ), cancel_xpm );
|
||||
aPopMenu->AppendSeparator();
|
||||
}
|
||||
}
|
||||
|
@ -227,23 +227,23 @@ bool WinEDA_PcbFrame::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu )
|
|||
if( !( (MODULE*) item )->IsLocked() )
|
||||
{
|
||||
msg = AddHotkeyName( _(
|
||||
"Lock Module" ), s_Board_Editor_Hokeys_Descr,
|
||||
HK_LOCK_UNLOCK_FOOTPRINT );
|
||||
"Lock Module" ), s_Board_Editor_Hokeys_Descr,
|
||||
HK_LOCK_UNLOCK_FOOTPRINT );
|
||||
ADD_MENUITEM( aPopMenu, ID_POPUP_PCB_AUTOPLACE_FIXE_MODULE, msg,
|
||||
Locked_xpm );
|
||||
Locked_xpm );
|
||||
}
|
||||
else
|
||||
{
|
||||
msg = AddHotkeyName( _(
|
||||
"Unlock Module" ), s_Board_Editor_Hokeys_Descr,
|
||||
HK_LOCK_UNLOCK_FOOTPRINT );
|
||||
"Unlock Module" ), s_Board_Editor_Hokeys_Descr,
|
||||
HK_LOCK_UNLOCK_FOOTPRINT );
|
||||
ADD_MENUITEM( aPopMenu, ID_POPUP_PCB_AUTOPLACE_FREE_MODULE, msg,
|
||||
Unlocked_xpm );
|
||||
Unlocked_xpm );
|
||||
}
|
||||
|
||||
if( !flags )
|
||||
aPopMenu->Append( ID_POPUP_PCB_AUTOPLACE_CURRENT_MODULE,
|
||||
_( "Auto place Module" ) );
|
||||
_( "Auto place Module" ) );
|
||||
}
|
||||
|
||||
if( m_HTOOL_current_state == ID_TOOLBARH_PCB_AUTOROUTE )
|
||||
|
@ -265,12 +265,12 @@ bool WinEDA_PcbFrame::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu )
|
|||
if( !flags )
|
||||
{
|
||||
ADD_MENUITEM( aPopMenu, ID_POPUP_PCB_MOVE_DRAWING_REQUEST,
|
||||
_( "Move Drawing" ), move_xpm );
|
||||
_( "Move Drawing" ), move_xpm );
|
||||
}
|
||||
if( flags & IS_NEW )
|
||||
{
|
||||
ADD_MENUITEM( aPopMenu, ID_POPUP_PCB_STOP_CURRENT_DRAWING,
|
||||
_( "End Drawing" ), apply_xpm );
|
||||
_( "End Drawing" ), apply_xpm );
|
||||
}
|
||||
aPopMenu->Append( ID_POPUP_PCB_EDIT_DRAWING, _( "Edit Drawing" ) );
|
||||
aPopMenu->Append( ID_POPUP_PCB_DELETE_DRAWING, _( "Delete Drawing" ) );
|
||||
|
@ -278,11 +278,11 @@ bool WinEDA_PcbFrame::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu )
|
|||
|
||||
case TYPEZONE: // Item used to fill a zone
|
||||
ADD_MENUITEM( aPopMenu, ID_POPUP_PCB_DELETE_ZONE,
|
||||
_( "Delete Zone Filling" ), delete_xpm );
|
||||
_( "Delete Zone Filling" ), delete_xpm );
|
||||
break;
|
||||
|
||||
case TYPEZONE_CONTAINER: // Item used to handle a zone area (outlines, holes ...)
|
||||
if( flags & IS_NEW )
|
||||
if( flags & IS_NEW )
|
||||
{
|
||||
ADD_MENUITEM( aPopMenu, ID_POPUP_PCB_STOP_CURRENT_EDGE_ZONE,
|
||||
_( "Close Zone Outline" ), apply_xpm );
|
||||
|
@ -305,29 +305,29 @@ bool WinEDA_PcbFrame::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu )
|
|||
|
||||
case TYPEMARKER:
|
||||
ADD_MENUITEM( aPopMenu, ID_POPUP_PCB_DELETE_MARKER,
|
||||
_( "Delete Marker" ), delete_xpm );
|
||||
_( "Delete Marker" ), delete_xpm );
|
||||
break;
|
||||
|
||||
case TYPECOTATION:
|
||||
if( !flags )
|
||||
{
|
||||
ADD_MENUITEM( aPopMenu, ID_POPUP_PCB_EDIT_COTATION,
|
||||
_( "Edit Dimension" ), edit_xpm );
|
||||
_( "Edit Dimension" ), edit_xpm );
|
||||
}
|
||||
ADD_MENUITEM( aPopMenu, ID_POPUP_PCB_DELETE_COTATION,
|
||||
_( "Delete Dimension" ), delete_xpm );
|
||||
_( "Delete Dimension" ), delete_xpm );
|
||||
break;
|
||||
|
||||
case TYPEMIRE:
|
||||
if( !flags )
|
||||
{
|
||||
ADD_MENUITEM( aPopMenu, ID_POPUP_PCB_MOVE_MIRE_REQUEST,
|
||||
_( "Move Target" ), move_xpm );
|
||||
_( "Move Target" ), move_xpm );
|
||||
}
|
||||
ADD_MENUITEM( aPopMenu, ID_POPUP_PCB_EDIT_MIRE,
|
||||
_( "Edit Target" ), edit_xpm );
|
||||
_( "Edit Target" ), edit_xpm );
|
||||
ADD_MENUITEM( aPopMenu, ID_POPUP_PCB_DELETE_MIRE,
|
||||
_( "Delete Target" ), delete_xpm );
|
||||
_( "Delete Target" ), delete_xpm );
|
||||
break;
|
||||
|
||||
case TYPEEDGEMODULE:
|
||||
|
@ -360,9 +360,9 @@ bool WinEDA_PcbFrame::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu )
|
|||
if( !flags )
|
||||
{
|
||||
msg = AddHotkeyName( _( "Get and Move Footprint" ),
|
||||
s_Board_Editor_Hokeys_Descr, HK_GET_AND_MOVE_FOOTPRINT );
|
||||
s_Board_Editor_Hokeys_Descr, HK_GET_AND_MOVE_FOOTPRINT );
|
||||
ADD_MENUITEM( aPopMenu, ID_POPUP_PCB_GET_AND_MOVE_MODULE_REQUEST,
|
||||
msg, Move_Module_xpm );
|
||||
msg, Move_Module_xpm );
|
||||
}
|
||||
|
||||
/* Traitement des fonctions specifiques */
|
||||
|
@ -373,12 +373,12 @@ bool WinEDA_PcbFrame::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu )
|
|||
if( m_Pcb->m_ZoneDescriptorList.size() > 0 )
|
||||
{
|
||||
ADD_MENUITEM( aPopMenu, ID_POPUP_PCB_FILL_ALL_ZONES,
|
||||
_( "Fill or Refill All Zones" ), fill_zone_xpm );
|
||||
_( "Fill or Refill All Zones" ), fill_zone_xpm );
|
||||
aPopMenu->AppendSeparator();
|
||||
}
|
||||
|
||||
ADD_MENUITEM( aPopMenu, ID_POPUP_PCB_SELECT_LAYER,
|
||||
_( "Select Working Layer" ), Select_W_Layer_xpm );
|
||||
_( "Select Working Layer" ), Select_W_Layer_xpm );
|
||||
aPopMenu->AppendSeparator();
|
||||
}
|
||||
break;
|
||||
|
@ -386,12 +386,12 @@ bool WinEDA_PcbFrame::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu )
|
|||
case ID_TRACK_BUTT:
|
||||
{
|
||||
ADD_MENUITEM_WITH_SUBMENU( aPopMenu, Append_Track_Width_List(),
|
||||
ID_POPUP_PCB_SELECT_WIDTH,
|
||||
_( "Select Track Width" ), width_track_xpm );
|
||||
ID_POPUP_PCB_SELECT_WIDTH,
|
||||
_( "Select Track Width" ), width_track_xpm );
|
||||
ADD_MENUITEM( aPopMenu, ID_POPUP_PCB_SELECT_CU_LAYER,
|
||||
_( "Select Working Layer" ), Select_W_Layer_xpm );
|
||||
_( "Select Working Layer" ), Select_W_Layer_xpm );
|
||||
ADD_MENUITEM( aPopMenu, ID_POPUP_PCB_SELECT_LAYER_PAIR,
|
||||
_( "Select layer pair for vias" ), select_layer_pair_xpm );
|
||||
_( "Select layer pair for vias" ), select_layer_pair_xpm );
|
||||
aPopMenu->AppendSeparator();
|
||||
}
|
||||
break;
|
||||
|
@ -402,13 +402,13 @@ bool WinEDA_PcbFrame::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu )
|
|||
case ID_LINE_COMMENT_BUTT:
|
||||
case ID_PCB_COTATION_BUTT:
|
||||
ADD_MENUITEM( aPopMenu, ID_POPUP_PCB_SELECT_NO_CU_LAYER,
|
||||
_( "Select Working Layer" ), Select_W_Layer_xpm );
|
||||
_( "Select Working Layer" ), Select_W_Layer_xpm );
|
||||
aPopMenu->AppendSeparator();
|
||||
break;
|
||||
|
||||
case ID_COMPONENT_BUTT:
|
||||
ADD_MENUITEM( aPopMenu, ID_POPUP_PCB_DISPLAY_FOOTPRINT_DOC,
|
||||
_( "Footprint documentation" ), book_xpm );
|
||||
_( "Footprint documentation" ), book_xpm );
|
||||
aPopMenu->AppendSeparator();
|
||||
break;
|
||||
|
||||
|
@ -417,15 +417,15 @@ bool WinEDA_PcbFrame::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu )
|
|||
{
|
||||
wxMenu* commands = new wxMenu;
|
||||
ADD_MENUITEM_WITH_SUBMENU( aPopMenu, commands,
|
||||
ID_POPUP_PCB_AUTOPLACE_COMMANDS, _(
|
||||
"Glob Move and Place" ), move_xpm );
|
||||
ID_POPUP_PCB_AUTOPLACE_COMMANDS, _(
|
||||
"Glob Move and Place" ), move_xpm );
|
||||
ADD_MENUITEM( commands, ID_POPUP_PCB_AUTOPLACE_FREE_ALL_MODULES,
|
||||
_( "Unlock All Modules" ), Unlocked_xpm );
|
||||
_( "Unlock All Modules" ), Unlocked_xpm );
|
||||
ADD_MENUITEM( commands, ID_POPUP_PCB_AUTOPLACE_FIXE_ALL_MODULES,
|
||||
_( "Lock All Modules" ), Locked_xpm );
|
||||
_( "Lock All Modules" ), Locked_xpm );
|
||||
commands->AppendSeparator();
|
||||
ADD_MENUITEM( commands, ID_POPUP_PCB_AUTOMOVE_ALL_MODULES,
|
||||
_( "Move All Modules" ), move_xpm );
|
||||
_( "Move All Modules" ), move_xpm );
|
||||
commands->Append( ID_POPUP_PCB_AUTOMOVE_NEW_MODULES, _( "Move New Modules" ) );
|
||||
commands->AppendSeparator();
|
||||
commands->Append( ID_POPUP_PCB_AUTOPLACE_ALL_MODULES, _( "Autoplace All Modules" ) );
|
||||
|
@ -433,7 +433,7 @@ bool WinEDA_PcbFrame::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu )
|
|||
commands->Append( ID_POPUP_PCB_AUTOPLACE_NEXT_MODULE, _( "Autoplace Next Module" ) );
|
||||
commands->AppendSeparator();
|
||||
ADD_MENUITEM( commands, ID_POPUP_PCB_REORIENT_ALL_MODULES,
|
||||
_( "Orient All Modules" ), rotate_module_pos_xpm );
|
||||
_( "Orient All Modules" ), rotate_module_pos_xpm );
|
||||
aPopMenu->AppendSeparator();
|
||||
}
|
||||
|
||||
|
@ -442,7 +442,7 @@ bool WinEDA_PcbFrame::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu )
|
|||
wxMenu* commands = new wxMenu;
|
||||
aPopMenu->Append( ID_POPUP_PCB_AUTOROUTE_COMMANDS, _( "Global Autoroute" ), commands );
|
||||
ADD_MENUITEM( commands, ID_POPUP_PCB_SELECT_LAYER_PAIR,
|
||||
_( "Select layer pair" ), select_layer_pair_xpm );
|
||||
_( "Select layer pair" ), select_layer_pair_xpm );
|
||||
commands->AppendSeparator();
|
||||
commands->Append( ID_POPUP_PCB_AUTOROUTE_ALL_MODULES, _( "Autoroute All Modules" ) );
|
||||
commands->AppendSeparator();
|
||||
|
@ -451,19 +451,19 @@ bool WinEDA_PcbFrame::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu )
|
|||
{
|
||||
commands->AppendSeparator();
|
||||
commands->Append( ID_POPUP_PCB_AUTOROUTE_GET_AUTOROUTER,
|
||||
_( "Global AutoRouter" ) );
|
||||
_( "Global AutoRouter" ) );
|
||||
commands->Append( ID_POPUP_PCB_AUTOROUTE_GET_AUTOROUTER_DATA,
|
||||
_( "Read Global AutoRouter Data" ) );
|
||||
_( "Read Global AutoRouter Data" ) );
|
||||
}
|
||||
aPopMenu->AppendSeparator();
|
||||
}
|
||||
|
||||
if( locate_track )
|
||||
ADD_MENUITEM_WITH_SUBMENU( aPopMenu, Append_Track_Width_List(),
|
||||
ID_POPUP_PCB_SELECT_WIDTH, _( "Select Track Width" ),
|
||||
width_track_xpm );
|
||||
ID_POPUP_PCB_SELECT_WIDTH, _( "Select Track Width" ),
|
||||
width_track_xpm );
|
||||
ADD_MENUITEM( aPopMenu, ID_POPUP_PCB_SELECT_LAYER,
|
||||
_( "Select Working Layer" ), Select_W_Layer_xpm );
|
||||
_( "Select Working Layer" ), Select_W_Layer_xpm );
|
||||
aPopMenu->AppendSeparator();
|
||||
break;
|
||||
}
|
||||
|
@ -481,20 +481,20 @@ void WinEDA_PcbFrame::createPopUpBlockMenu( wxMenu* menu )
|
|||
*/
|
||||
{
|
||||
ADD_MENUITEM( menu, ID_POPUP_CANCEL_CURRENT_COMMAND,
|
||||
_( "Cancel Block" ), cancel_xpm );
|
||||
_( "Cancel Block" ), cancel_xpm );
|
||||
ADD_MENUITEM( menu, ID_POPUP_ZOOM_BLOCK,
|
||||
_( "Zoom Block (drag middle mouse)" ), zoom_selected_xpm );
|
||||
_( "Zoom Block (drag middle mouse)" ), zoom_selected_xpm );
|
||||
menu->AppendSeparator();
|
||||
ADD_MENUITEM( menu, ID_POPUP_PLACE_BLOCK,
|
||||
_( "Place Block" ), apply_xpm );
|
||||
_( "Place Block" ), apply_xpm );
|
||||
ADD_MENUITEM( menu, ID_POPUP_COPY_BLOCK,
|
||||
_( "Copy Block (shift + drag mouse)" ), copyblock_xpm );
|
||||
_( "Copy Block (shift + drag mouse)" ), copyblock_xpm );
|
||||
ADD_MENUITEM( menu, ID_POPUP_INVERT_BLOCK,
|
||||
_( "Flip Block (alt + drag mouse)" ), invert_module_xpm );
|
||||
_( "Flip Block (alt + drag mouse)" ), invert_module_xpm );
|
||||
ADD_MENUITEM( menu, ID_POPUP_ROTATE_BLOCK,
|
||||
_( "Rotate Block (ctrl + drag mouse)" ), rotate_pos_xpm );
|
||||
_( "Rotate Block (ctrl + drag mouse)" ), rotate_pos_xpm );
|
||||
ADD_MENUITEM( menu, ID_POPUP_DELETE_BLOCK,
|
||||
_( "Delete Block (shift+ctrl + drag mouse)" ), delete_xpm );
|
||||
_( "Delete Block (shift+ctrl + drag mouse)" ), delete_xpm );
|
||||
}
|
||||
|
||||
|
||||
|
@ -517,7 +517,7 @@ void WinEDA_PcbFrame::createPopupMenuForTracks( TRACK* Track, wxMenu* PopMenu )
|
|||
wxMenu* via_mnu = new wxMenu();
|
||||
|
||||
ADD_MENUITEM_WITH_SUBMENU( PopMenu, via_mnu,
|
||||
ID_POPUP_PCB_VIA_EDITING, _( "Edit Via" ), edit_xpm );
|
||||
ID_POPUP_PCB_VIA_EDITING, _( "Edit Via" ), edit_xpm );
|
||||
ADD_MENUITEM( via_mnu, ID_POPUP_PCB_VIA_HOLE_TO_DEFAULT,
|
||||
_( "Set via hole to Default" ), apply_xpm );
|
||||
msg = _( "Set via hole to a specific value. This specfic value is currently" );
|
||||
|
@ -528,13 +528,13 @@ void WinEDA_PcbFrame::createPopupMenuForTracks( TRACK* Track, wxMenu* PopMenu )
|
|||
msg = _( "Set alt via hole value. This value is currently" );
|
||||
msg << wxT(" ") << ReturnStringFromValue( g_UnitMetric, g_DesignSettings.m_ViaDrillCustomValue, m_InternalUnits );
|
||||
ADD_MENUITEM_WITH_HELP( via_mnu, ID_POPUP_PCB_VIA_HOLE_ENTER_VALUE,
|
||||
_( "Set the via hole alt value" ), msg, edit_xpm );
|
||||
_( "Set the via hole alt value" ), msg, edit_xpm );
|
||||
ADD_MENUITEM( via_mnu, ID_POPUP_PCB_VIA_HOLE_EXPORT, _(
|
||||
"Export Via hole to alt value" ), Export_Options_Pad_xpm );
|
||||
"Export Via hole to alt value" ), Export_Options_Pad_xpm );
|
||||
ADD_MENUITEM( via_mnu, ID_POPUP_PCB_VIA_HOLE_EXPORT_TO_OTHERS,
|
||||
_( "Export via hole to others id vias" ), global_options_pad_xpm );
|
||||
_( "Export via hole to others id vias" ), global_options_pad_xpm );
|
||||
ADD_MENUITEM( via_mnu, ID_POPUP_PCB_VIA_HOLE_RESET_TO_DEFAULT,
|
||||
_( "Set ALL via holes to default" ), apply_xpm );
|
||||
_( "Set ALL via holes to default" ), apply_xpm );
|
||||
if( !Track->IsDrillDefault() )
|
||||
{
|
||||
via_mnu->Enable( ID_POPUP_PCB_VIA_HOLE_EXPORT, FALSE );
|
||||
|
@ -547,27 +547,27 @@ void WinEDA_PcbFrame::createPopupMenuForTracks( TRACK* Track, wxMenu* PopMenu )
|
|||
if( Track->IsPointOnEnds( cursorPosition, -1 ) != 0 )
|
||||
{
|
||||
ADD_MENUITEM( PopMenu, ID_POPUP_PCB_MOVE_TRACK_NODE,
|
||||
_( "Move Node" ), move_xpm );
|
||||
_( "Move Node" ), move_xpm );
|
||||
}
|
||||
else
|
||||
{
|
||||
ADD_MENUITEM( PopMenu, ID_POPUP_PCB_DRAG_TRACK_SEGMENT_KEEP_SLOPE,
|
||||
_( "Drag Segments, keep slope" ), drag_segment_withslope_xpm );
|
||||
_( "Drag Segments, keep slope" ), drag_segment_withslope_xpm );
|
||||
ADD_MENUITEM( PopMenu, ID_POPUP_PCB_DRAG_TRACK_SEGMENT,
|
||||
_( "Drag Segment" ), drag_track_segment_xpm );
|
||||
_( "Drag Segment" ), drag_track_segment_xpm );
|
||||
#if 0
|
||||
ADD_MENUITEM( PopMenu, ID_POPUP_PCB_MOVE_TRACK_SEGMENT,
|
||||
_( "Move Segment" ), move_track_segment_xpm );
|
||||
_( "Move Segment" ), move_track_segment_xpm );
|
||||
#endif
|
||||
ADD_MENUITEM( PopMenu, ID_POPUP_PCB_BREAK_TRACK,
|
||||
_( "Break Track" ), Break_Line_xpm );
|
||||
_( "Break Track" ), Break_Line_xpm );
|
||||
}
|
||||
}
|
||||
}
|
||||
else if( flags & IS_DRAGGED ) // Drag via or node in progress
|
||||
{
|
||||
ADD_MENUITEM( PopMenu, ID_POPUP_PCB_PLACE_MOVED_TRACK_NODE,
|
||||
_( "Place Node" ), apply_xpm );
|
||||
_( "Place Node" ), apply_xpm );
|
||||
return;
|
||||
}
|
||||
else // Edition in progress
|
||||
|
@ -581,11 +581,11 @@ void WinEDA_PcbFrame::createPopupMenuForTracks( TRACK* Track, wxMenu* PopMenu )
|
|||
PopMenu->Append( ID_POPUP_PCB_PLACE_VIA, msg );
|
||||
|
||||
// See if we can place a Micro Via (4 or more layers, and start from an external layer):
|
||||
if( ((PCB_SCREEN*)GetScreen())->IsMicroViaAcceptable() )
|
||||
if( ( (PCB_SCREEN*) GetScreen() )->IsMicroViaAcceptable() )
|
||||
{
|
||||
msg = AddHotkeyName( _(
|
||||
"Place Micro Via" ), s_Board_Editor_Hokeys_Descr,
|
||||
HK_ADD_MICROVIA );
|
||||
"Place Micro Via" ), s_Board_Editor_Hokeys_Descr,
|
||||
HK_ADD_MICROVIA );
|
||||
PopMenu->Append( ID_POPUP_PCB_PLACE_MICROVIA, msg );
|
||||
}
|
||||
}
|
||||
|
@ -601,39 +601,39 @@ void WinEDA_PcbFrame::createPopupMenuForTracks( TRACK* Track, wxMenu* PopMenu )
|
|||
Track->Type()==TYPEVIA ? _( "Edit Via" ) : _( "Edit Segment" ), width_segment_xpm );
|
||||
|
||||
ADD_MENUITEM( track_mnu, ID_POPUP_PCB_EDIT_TRACK,
|
||||
_( "Edit Track" ), width_track_xpm );
|
||||
_( "Edit Track" ), width_track_xpm );
|
||||
ADD_MENUITEM( track_mnu, ID_POPUP_PCB_EDIT_NET,
|
||||
_( "Edit Net" ), width_net_xpm );
|
||||
_( "Edit Net" ), width_net_xpm );
|
||||
ADD_MENUITEM( track_mnu, ID_POPUP_PCB_EDIT_ALL_VIAS_AND_TRACK_SIZE,
|
||||
_( "Edit ALL Tracks and Vias" ), width_track_via_xpm );
|
||||
_( "Edit ALL Tracks and Vias" ), width_track_via_xpm );
|
||||
ADD_MENUITEM( track_mnu, ID_POPUP_PCB_EDIT_ALL_VIAS_SIZE,
|
||||
_( "Edit ALL Vias (no track)" ), width_vias_xpm );
|
||||
_( "Edit ALL Vias (no track)" ), width_vias_xpm );
|
||||
ADD_MENUITEM( track_mnu, ID_POPUP_PCB_EDIT_ALL_TRACK_SIZE,
|
||||
_( "Edit ALL Tracks (no via)" ), width_track_xpm );
|
||||
_( "Edit ALL Tracks (no via)" ), width_track_xpm );
|
||||
}
|
||||
|
||||
// Delete control:
|
||||
track_mnu = new wxMenu;
|
||||
ADD_MENUITEM_WITH_SUBMENU( PopMenu, track_mnu,
|
||||
ID_POPUP_PCB_DELETE_TRACK_MNU, _( "Delete" ), delete_xpm );
|
||||
ID_POPUP_PCB_DELETE_TRACK_MNU, _( "Delete" ), delete_xpm );
|
||||
|
||||
msg = AddHotkeyName( Track->Type()==TYPEVIA ? _( "Delete Via" ) : _( "Delete Segment" ),
|
||||
s_Board_Editor_Hokeys_Descr, HK_BACK_SPACE );
|
||||
s_Board_Editor_Hokeys_Descr, HK_BACK_SPACE );
|
||||
|
||||
ADD_MENUITEM( track_mnu, ID_POPUP_PCB_DELETE_TRACKSEG,
|
||||
msg, Delete_Line_xpm );
|
||||
msg, Delete_Line_xpm );
|
||||
if( !flags )
|
||||
{
|
||||
msg = AddHotkeyName( _( "Delete Track" ), s_Board_Editor_Hokeys_Descr, HK_DELETE );
|
||||
ADD_MENUITEM( track_mnu, ID_POPUP_PCB_DELETE_TRACK,
|
||||
msg, Delete_Track_xpm );
|
||||
msg, Delete_Track_xpm );
|
||||
ADD_MENUITEM( track_mnu, ID_POPUP_PCB_DELETE_TRACKNET,
|
||||
_( "Delete Net" ), Delete_Net_xpm );
|
||||
_( "Delete Net" ), Delete_Net_xpm );
|
||||
}
|
||||
track_mnu = new wxMenu;
|
||||
|
||||
ADD_MENUITEM_WITH_SUBMENU( PopMenu, track_mnu,
|
||||
ID_POPUP_PCB_SETFLAGS_TRACK_MNU, _( "Set Flags" ), Flag_xpm );
|
||||
ID_POPUP_PCB_SETFLAGS_TRACK_MNU, _( "Set Flags" ), Flag_xpm );
|
||||
track_mnu->Append( ID_POPUP_PCB_LOCK_ON_TRACKSEG, _( "Locked: Yes" ), wxEmptyString, TRUE );
|
||||
track_mnu->Append( ID_POPUP_PCB_LOCK_OFF_TRACKSEG, _( "Locked: No" ), wxEmptyString, TRUE );
|
||||
|
||||
|
@ -661,66 +661,66 @@ void WinEDA_PcbFrame::createPopUpMenuForZones( ZONE_CONTAINER* edge_zone, wxMenu
|
|||
/* Create the wxMenuitem list for zone outlines editing and zone filling
|
||||
*/
|
||||
{
|
||||
|
||||
if( edge_zone->m_Flags == IS_DRAGGED)
|
||||
if( edge_zone->m_Flags == IS_DRAGGED )
|
||||
{
|
||||
ADD_MENUITEM( aPopMenu, ID_POPUP_PCB_PLACE_DRAGGED_ZONE_OUTLINE_SEGMENT,
|
||||
_( "Place Edge Outline" ), apply_xpm );
|
||||
_( "Place Edge Outline" ), apply_xpm );
|
||||
}
|
||||
else if( edge_zone->m_Flags )
|
||||
{
|
||||
if( (edge_zone->m_Flags & IN_EDIT ) )
|
||||
ADD_MENUITEM( aPopMenu, ID_POPUP_PCB_PLACE_ZONE_CORNER,
|
||||
_( "Place Corner" ), apply_xpm );
|
||||
_( "Place Corner" ), apply_xpm );
|
||||
else
|
||||
ADD_MENUITEM( aPopMenu, ID_POPUP_PCB_PLACE_ZONE_OUTLINES,
|
||||
_( "Place Zone" ), apply_xpm );
|
||||
_( "Place Zone" ), apply_xpm );
|
||||
}
|
||||
else
|
||||
{
|
||||
wxMenu* zones_menu = new wxMenu();
|
||||
|
||||
ADD_MENUITEM_WITH_SUBMENU( aPopMenu, zones_menu,
|
||||
-1, _( "Zones" ), add_zone_xpm );
|
||||
int index;
|
||||
-1, _( "Zones" ), add_zone_xpm );
|
||||
int index;
|
||||
if( ( index = edge_zone->HitTestForCorner( GetScreen()->RefPos( true ) ) ) >= 0 )
|
||||
{
|
||||
ADD_MENUITEM( zones_menu, ID_POPUP_PCB_MOVE_ZONE_CORNER,
|
||||
_( "Move Corner" ), move_xpm );
|
||||
_( "Move Corner" ), move_xpm );
|
||||
ADD_MENUITEM( zones_menu, ID_POPUP_PCB_DELETE_ZONE_CORNER,
|
||||
_( "Delete Corner" ), delete_xpm );
|
||||
_( "Delete Corner" ), delete_xpm );
|
||||
}
|
||||
else if( ( index = edge_zone->HitTestForEdge( GetScreen()->RefPos( true ) ) ) >= 0 )
|
||||
{
|
||||
ADD_MENUITEM( zones_menu, ID_POPUP_PCB_ADD_ZONE_CORNER,
|
||||
_( "Create Corner" ), Add_Corner_xpm );
|
||||
_( "Create Corner" ), Add_Corner_xpm );
|
||||
ADD_MENUITEM( zones_menu, ID_POPUP_PCB_DRAG_ZONE_OUTLINE_SEGMENT,
|
||||
_( "Drag Outline Segment" ), drag_outline_segment_xpm );
|
||||
_( "Drag Outline Segment" ), drag_outline_segment_xpm );
|
||||
}
|
||||
|
||||
zones_menu->AppendSeparator();
|
||||
ADD_MENUITEM( zones_menu, ID_POPUP_PCB_ZONE_ADD_SIMILAR_ZONE,
|
||||
_( "Add Similar Zone" ), add_zone_xpm );
|
||||
_( "Add Similar Zone" ), add_zone_xpm );
|
||||
|
||||
ADD_MENUITEM( zones_menu, ID_POPUP_PCB_ZONE_ADD_CUTOUT_ZONE,
|
||||
_( "Add Cutout Area" ), add_zone_cutout );
|
||||
_( "Add Cutout Area" ), add_zone_cutout );
|
||||
zones_menu->AppendSeparator();
|
||||
|
||||
ADD_MENUITEM( zones_menu, ID_POPUP_PCB_FILL_ZONE,
|
||||
_( "Fill Zone" ), fill_zone_xpm );
|
||||
_( "Fill Zone" ), fill_zone_xpm );
|
||||
|
||||
ADD_MENUITEM( zones_menu, ID_POPUP_PCB_MOVE_ZONE_OUTLINES,
|
||||
_( "Move Zone" ), move_xpm );
|
||||
_( "Move Zone" ), move_xpm );
|
||||
|
||||
ADD_MENUITEM( zones_menu, ID_POPUP_PCB_EDIT_ZONE_PARAMS,
|
||||
_( "Edit Zone Params" ), edit_xpm );
|
||||
_( "Edit Zone Params" ), edit_xpm );
|
||||
|
||||
zones_menu->AppendSeparator();
|
||||
if( index >= 0 && edge_zone->m_Poly->IsCutoutContour( edge_zone->m_CornerSelection ) )
|
||||
ADD_MENUITEM( zones_menu, ID_POPUP_PCB_DELETE_ZONE_CUTOUT,
|
||||
_( "Delete Cutout" ), delete_xpm );
|
||||
_( "Delete Cutout" ), delete_xpm );
|
||||
|
||||
ADD_MENUITEM( zones_menu, ID_POPUP_PCB_DELETE_ZONE_CONTAINER,
|
||||
_( "Delete Zone Outline" ), delete_xpm );
|
||||
_( "Delete Zone Outline" ), delete_xpm );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -744,27 +744,27 @@ void WinEDA_PcbFrame::createPopUpMenuForFootprints( MODULE* aModule, wxMenu* men
|
|||
{
|
||||
msg = AddHotkeyName( _( "Move" ), s_Board_Editor_Hokeys_Descr, HK_MOVE_FOOTPRINT );
|
||||
ADD_MENUITEM( sub_menu_footprint, ID_POPUP_PCB_MOVE_MODULE_REQUEST,
|
||||
msg, Move_Module_xpm );
|
||||
msg, Move_Module_xpm );
|
||||
msg = AddHotkeyName( _( "Drag" ), s_Board_Editor_Hokeys_Descr, HK_DRAG_FOOTPRINT );
|
||||
ADD_MENUITEM( sub_menu_footprint, ID_POPUP_PCB_DRAG_MODULE_REQUEST,
|
||||
msg, Drag_Module_xpm );
|
||||
msg, Drag_Module_xpm );
|
||||
}
|
||||
msg = AddHotkeyName( _( "Rotate +" ), s_Board_Editor_Hokeys_Descr, HK_ROTATE_FOOTPRINT );
|
||||
ADD_MENUITEM( sub_menu_footprint, ID_POPUP_PCB_ROTATE_MODULE_CLOCKWISE,
|
||||
msg, rotate_module_pos_xpm );
|
||||
msg, rotate_module_pos_xpm );
|
||||
ADD_MENUITEM( sub_menu_footprint, ID_POPUP_PCB_ROTATE_MODULE_COUNTERCLOCKWISE,
|
||||
_( "Rotate -" ), rotate_module_neg_xpm );
|
||||
_( "Rotate -" ), rotate_module_neg_xpm );
|
||||
msg = AddHotkeyName( _( "Flip" ), s_Board_Editor_Hokeys_Descr, HK_FLIP_FOOTPRINT );
|
||||
ADD_MENUITEM( sub_menu_footprint, ID_POPUP_PCB_CHANGE_SIDE_MODULE,
|
||||
msg, invert_module_xpm );
|
||||
msg, invert_module_xpm );
|
||||
ADD_MENUITEM( sub_menu_footprint, ID_POPUP_PCB_EDIT_MODULE,
|
||||
_( "Edit" ), Edit_Module_xpm );
|
||||
_( "Edit" ), Edit_Module_xpm );
|
||||
|
||||
if( !flags )
|
||||
{
|
||||
sub_menu_footprint->AppendSeparator();
|
||||
ADD_MENUITEM( sub_menu_footprint, ID_POPUP_PCB_DELETE_MODULE,
|
||||
_( "Delete Module" ), Delete_Module_xpm );
|
||||
_( "Delete Module" ), Delete_Module_xpm );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -787,16 +787,16 @@ void WinEDA_PcbFrame::createPopUpMenuForFpTexts( TEXTE_MODULE* FpText, wxMenu* m
|
|||
|
||||
if( !flags )
|
||||
ADD_MENUITEM( sub_menu_Fp_text, ID_POPUP_PCB_MOVE_TEXTMODULE_REQUEST,
|
||||
_( "Move" ), Move_Field_xpm );
|
||||
_( "Move" ), Move_Field_xpm );
|
||||
|
||||
ADD_MENUITEM( sub_menu_Fp_text, ID_POPUP_PCB_ROTATE_TEXTMODULE,
|
||||
_( "Rotate" ), Rotate_Field_xpm );
|
||||
_( "Rotate" ), Rotate_Field_xpm );
|
||||
ADD_MENUITEM( sub_menu_Fp_text, ID_POPUP_PCB_EDIT_TEXTMODULE,
|
||||
_( "Edit" ), edit_text_xpm );
|
||||
_( "Edit" ), edit_text_xpm );
|
||||
|
||||
if( FpText->m_Type == TEXT_is_DIVERS )
|
||||
ADD_MENUITEM( sub_menu_Fp_text, ID_POPUP_PCB_DELETE_TEXTMODULE,
|
||||
_( "Delete" ), delete_xpm );
|
||||
_( "Delete" ), delete_xpm );
|
||||
|
||||
if( !flags )
|
||||
{
|
||||
|
@ -825,26 +825,33 @@ void WinEDA_PcbFrame::createPopUpMenuForFpPads( D_PAD* Pad, wxMenu* menu )
|
|||
if( !flags )
|
||||
{
|
||||
ADD_MENUITEM( sub_menu_Pad, ID_POPUP_PCB_MOVE_PAD_REQUEST,
|
||||
_( "Move" ), move_pad_xpm );
|
||||
_( "Move" ), move_pad_xpm );
|
||||
ADD_MENUITEM( sub_menu_Pad, ID_POPUP_PCB_DRAG_PAD_REQUEST,
|
||||
_( "Drag" ), drag_pad_xpm );
|
||||
_( "Drag" ), drag_pad_xpm );
|
||||
}
|
||||
ADD_MENUITEM( sub_menu_Pad, ID_POPUP_PCB_EDIT_PAD, _( "Edit Pad" ), options_pad_xpm );
|
||||
sub_menu_Pad->AppendSeparator();
|
||||
|
||||
ADD_MENUITEM( sub_menu_Pad, ID_POPUP_PCB_IMPORT_PAD_SETTINGS,
|
||||
_( "New Pad Settings" ), options_new_pad_xpm );
|
||||
ADD_MENUITEM( sub_menu_Pad, ID_POPUP_PCB_EXPORT_PAD_SETTINGS,
|
||||
_( "Export Pad Settings" ), Export_Options_Pad_xpm );
|
||||
ADD_MENUITEM_WITH_HELP( sub_menu_Pad, ID_POPUP_PCB_IMPORT_PAD_SETTINGS,
|
||||
_( "New Pad Settings" ),
|
||||
_( "Copy current pad settings to this pad" ),
|
||||
options_new_pad_xpm );
|
||||
ADD_MENUITEM_WITH_HELP( sub_menu_Pad, ID_POPUP_PCB_EXPORT_PAD_SETTINGS,
|
||||
_( "Export Pad Settings" ),
|
||||
_( "Copy this pad settings to current pad settings" ),
|
||||
Export_Options_Pad_xpm );
|
||||
|
||||
if( !flags )
|
||||
{
|
||||
ADD_MENUITEM( sub_menu_Pad, ID_POPUP_PCB_GLOBAL_IMPORT_PAD_SETTINGS,
|
||||
_( "Global Pad Settings" ), global_options_pad_xpm );
|
||||
ADD_MENUITEM_WITH_HELP( sub_menu_Pad, ID_POPUP_PCB_GLOBAL_IMPORT_PAD_SETTINGS,
|
||||
_( "Global Pad Settings" ),
|
||||
_(
|
||||
"Copy this pad settings to all pads in this footprint (or similar footprints)" ),
|
||||
global_options_pad_xpm );
|
||||
sub_menu_Pad->AppendSeparator();
|
||||
|
||||
ADD_MENUITEM( sub_menu_Pad, ID_POPUP_PCB_DELETE_PAD,
|
||||
_( "delete" ), Delete_Pad_xpm );
|
||||
_( "delete" ), Delete_Pad_xpm );
|
||||
}
|
||||
|
||||
if( m_HTOOL_current_state == ID_TOOLBARH_PCB_AUTOROUTE )
|
||||
|
@ -884,14 +891,14 @@ void WinEDA_PcbFrame::createPopUpMenuForTexts( TEXTE_PCB* Text, wxMenu* menu )
|
|||
if( !flags )
|
||||
{
|
||||
ADD_MENUITEM( sub_menu_Text, ID_POPUP_PCB_MOVE_TEXTEPCB_REQUEST,
|
||||
_( "Move" ), move_text_xpm );
|
||||
_( "Move" ), move_text_xpm );
|
||||
}
|
||||
ADD_MENUITEM( sub_menu_Text, ID_POPUP_PCB_ROTATE_TEXTEPCB,
|
||||
_( "Rotate" ), rotate_pos_xpm );
|
||||
_( "Rotate" ), rotate_pos_xpm );
|
||||
ADD_MENUITEM( sub_menu_Text, ID_POPUP_PCB_EDIT_TEXTEPCB,
|
||||
_( "Edit" ), edit_text_xpm );
|
||||
_( "Edit" ), edit_text_xpm );
|
||||
|
||||
sub_menu_Text->AppendSeparator();
|
||||
ADD_MENUITEM( sub_menu_Text, ID_POPUP_PCB_DELETE_TEXTEPCB,
|
||||
_( "Delete" ), delete_text_xpm );
|
||||
_( "Delete" ), delete_text_xpm );
|
||||
}
|
||||
|
|
|
@ -332,7 +332,7 @@ WinEDA_PlotFrame::WinEDA_PlotFrame( WinEDA_BasePcbFrame* parent ) :
|
|||
_( "Exclude contents of Edges_Pcb layer from all other layers" ) );
|
||||
LeftBoxSizer->Add( m_Exclude_Edges_Pcb, 0, wxGROW | wxALL, 1 );
|
||||
|
||||
// Option d'impression du cartouche:
|
||||
// Option to plot page references:
|
||||
if( m_Parent->m_Print_Sheet_Ref )
|
||||
{
|
||||
m_Plot_Sheet_Ref = new wxCheckBox( this, ID_PRINT_REF, _( "Print sheet ref" ) );
|
||||
|
|
|
@ -39,7 +39,8 @@
|
|||
#endif
|
||||
|
||||
#include "fctsys.h"
|
||||
#include "gr_basic.h"
|
||||
|
||||
//#include "gr_basic.h"
|
||||
|
||||
#include "common.h"
|
||||
|
||||
|
@ -51,17 +52,17 @@
|
|||
|
||||
#ifdef PCBNEW
|
||||
#include "pcbnew.h"
|
||||
extern float Scale_X, Scale_Y;
|
||||
static long s_SelectedLayers = CUIVRE_LAYER | CMP_LAYER |
|
||||
SILKSCREEN_LAYER_CMP | SILKSCREEN_LAYER_CU;
|
||||
static double s_ScaleList[] =
|
||||
{ 0, 0.5, 0.7, 0.999, 1.0, 1.4, 2.0, 3.0, 4.0 };
|
||||
#endif
|
||||
|
||||
#include "protos.h"
|
||||
|
||||
//#define DEFAULT_ORIENTATION_PAPER wxPORTRAIT
|
||||
#define DEFAULT_ORIENTATION_PAPER wxLANDSCAPE
|
||||
// For pcbnew:
|
||||
#define OPTKEY_LAYERBASE wxT( "PrintLayer_%d" )
|
||||
#define OPTKEY_PRINT_X_FINESCALE_ADJ wxT( "PrintXFineScaleAdj" )
|
||||
#define OPTKEY_PRINT_Y_FINESCALE_ADJ wxT( "PrintYFineScaleAdj" )
|
||||
#define OPTKEY_PRINT_SCALE wxT( "PrintScale" )
|
||||
#endif
|
||||
|
||||
#define DEFAULT_ORIENTATION_PAPER wxLANDSCAPE // other option is wxPORTRAIT
|
||||
#ifdef EESCHEMA
|
||||
#define WIDTH_MAX_VALUE 100
|
||||
#else
|
||||
|
@ -69,6 +70,14 @@ static double s_ScaleList[] =
|
|||
#endif
|
||||
#define WIDTH_MIN_VALUE 1
|
||||
|
||||
#ifdef PCBNEW
|
||||
extern float Scale_X, Scale_Y;
|
||||
static long s_SelectedLayers;
|
||||
static double s_ScaleList[] =
|
||||
{ 0, 0.5, 0.7, 0.999, 1.0, 1.4, 2.0, 3.0, 4.0 };
|
||||
#endif
|
||||
|
||||
|
||||
// static print data and page setup data, to remember settings during the session
|
||||
static wxPrintData* g_PrintData;
|
||||
|
||||
|
@ -82,6 +91,8 @@ static int s_Scale_Select = 3; // default selected scale = ScaleList[3]
|
|||
static bool s_PrintMirror;
|
||||
static bool s_Print_Sheet_Ref = TRUE;
|
||||
|
||||
|
||||
|
||||
/****************************************************************/
|
||||
/* frame de Preparation de l'impression (options, selections... */
|
||||
/****************************************************************/
|
||||
|
@ -101,17 +112,19 @@ public:
|
|||
WinEDA_DrawFrame* m_Parent;
|
||||
WinEDA_PrintFrame* m_PrintFrame;
|
||||
|
||||
EDA_Printout( WinEDA_PrintFrame * print_frame,
|
||||
WinEDA_DrawFrame * parent,
|
||||
const wxString &title,
|
||||
bool print_ref ) :
|
||||
wxPrintout( title ) {
|
||||
EDA_Printout( WinEDA_PrintFrame* print_frame,
|
||||
WinEDA_DrawFrame* parent,
|
||||
const wxString& title,
|
||||
bool print_ref ) :
|
||||
wxPrintout( title )
|
||||
{
|
||||
m_PrintFrame = print_frame;
|
||||
m_Parent = parent;
|
||||
s_PrintMaskLayer = 0xFFFFFFFF;
|
||||
m_Print_Sheet_Ref = print_ref;
|
||||
}
|
||||
|
||||
|
||||
bool OnPrintPage( int page );
|
||||
bool HasPage( int page );
|
||||
bool OnBeginDocument( int startPage, int endPage );
|
||||
|
@ -125,7 +138,7 @@ void WinEDA_DrawFrame::ToPrinter( wxCommandEvent& event )
|
|||
/*******************************************************/
|
||||
|
||||
/* Prepare les structures de donn<6E>es de gestion de l'impression
|
||||
* et affiche la fenetre de dialogue de gestion de l'impression des feuilles
|
||||
* et affiche la fenetre de dialogue de gestion de l'impression des feuilles
|
||||
*/
|
||||
{
|
||||
wxPoint pos = GetPosition();
|
||||
|
@ -173,6 +186,10 @@ void WinEDA_PrintFrame::SetOthersDatas()
|
|||
m_Print_Mirror->Enable( false );
|
||||
#endif
|
||||
|
||||
#if defined (PCBNEW)
|
||||
wxConfig* config = m_Parent->m_Parent->m_EDA_Config; // Current config used by application
|
||||
#endif
|
||||
|
||||
m_FineAdjustXscaleOpt->SetToolTip( _( "Set X scale adjust for exact scale plotting" ) );
|
||||
m_FineAdjustYscaleOpt->SetToolTip( _( "Set Y scale adjust for exact scale plotting" ) );
|
||||
if( s_Print_Black_and_White )
|
||||
|
@ -186,10 +203,10 @@ void WinEDA_PrintFrame::SetOthersDatas()
|
|||
for( ii = 0; ii < NB_LAYERS; ii++, mask <<= 1 )
|
||||
{
|
||||
m_BoxSelecLayer[ii] = new wxCheckBox( this, -1,
|
||||
#if defined(PCBNEW)
|
||||
((WinEDA_PcbFrame*)m_Parent)->m_Pcb->GetLayerName(ii) );
|
||||
#else
|
||||
ReturnLayerName( ii ) );
|
||||
#if defined (PCBNEW)
|
||||
( (WinEDA_PcbFrame*) m_Parent )->m_Pcb->GetLayerName( ii ) );
|
||||
#else
|
||||
ReturnLayerName( ii ) );
|
||||
#endif
|
||||
|
||||
if( mask & s_SelectedLayers )
|
||||
|
@ -203,11 +220,28 @@ void WinEDA_PrintFrame::SetOthersDatas()
|
|||
}
|
||||
|
||||
// Read the scale adjust option
|
||||
if( m_Parent->m_Parent->m_EDA_Config )
|
||||
if( config )
|
||||
{
|
||||
m_Parent->m_Parent->m_EDA_Config->Read( wxT( "PrintXFineScaleAdj" ), &m_XScaleAdjust );
|
||||
m_Parent->m_Parent->m_EDA_Config->Read( wxT( "PrintYFineScaleAdj" ), &m_YScaleAdjust );
|
||||
m_Parent->m_Parent->m_EDA_Config->Read( wxT( "PrintScale" ), &s_Scale_Select );
|
||||
config->Read( OPTKEY_PRINT_X_FINESCALE_ADJ, &m_XScaleAdjust );
|
||||
config->Read( OPTKEY_PRINT_Y_FINESCALE_ADJ, &m_YScaleAdjust );
|
||||
config->Read( OPTKEY_PRINT_SCALE, &s_Scale_Select );
|
||||
|
||||
s_SelectedLayers = 0;
|
||||
for( int layer = 0; layer<NB_LAYERS; ++layer )
|
||||
{
|
||||
wxString layerKey;
|
||||
bool option;
|
||||
|
||||
layerKey.Printf( OPTKEY_LAYERBASE, layer );
|
||||
|
||||
option = false;
|
||||
if( config->Read( layerKey, &option ) )
|
||||
{
|
||||
m_BoxSelecLayer[layer]->SetValue( option );
|
||||
if( option )
|
||||
s_SelectedLayers |= 1 << layer;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m_ScaleOption->SetSelection( s_Scale_Select );
|
||||
|
@ -287,9 +321,15 @@ void WinEDA_PrintFrame::OnClosePrintDialog()
|
|||
#ifdef PCBNEW
|
||||
if( Config )
|
||||
{
|
||||
Config->Write( wxT( "PrintXFineScaleAdj" ), m_XScaleAdjust );
|
||||
Config->Write( wxT( "PrintYFineScaleAdj" ), m_YScaleAdjust );
|
||||
Config->Write( wxT( "PrintScale" ), s_Scale_Select );
|
||||
Config->Write( OPTKEY_PRINT_X_FINESCALE_ADJ, m_XScaleAdjust );
|
||||
Config->Write( OPTKEY_PRINT_Y_FINESCALE_ADJ, m_YScaleAdjust );
|
||||
Config->Write( OPTKEY_PRINT_SCALE, s_Scale_Select );
|
||||
wxString layerKey;
|
||||
for( int layer = 0; layer<NB_LAYERS; ++layer )
|
||||
{
|
||||
layerKey.Printf( OPTKEY_LAYERBASE, layer );
|
||||
Config->Write( layerKey, m_BoxSelecLayer[layer]->IsChecked() );
|
||||
}
|
||||
}
|
||||
#endif
|
||||
EndModal( 0 );
|
||||
|
@ -334,7 +374,7 @@ void WinEDA_PrintFrame::SetPenWidth()
|
|||
/****************************************/
|
||||
|
||||
/* Get the new pen width value, and verify min et max value
|
||||
* NOTE: s_PrintPenMinWidth is in internal units
|
||||
* NOTE: s_PrintPenMinWidth is in internal units
|
||||
*/
|
||||
{
|
||||
s_PrintPenMinWidth = m_DialogPenWidth->GetValue();
|
||||
|
@ -357,11 +397,11 @@ void WinEDA_PrintFrame::OnPrintSetup( wxCommandEvent& event )
|
|||
/* Open a dialog box for printer setup (printer options, page size ...)
|
||||
*/
|
||||
{
|
||||
wxPrintDialogData printDialogData( * g_PrintData );
|
||||
wxPrintDialogData printDialogData( *g_PrintData );
|
||||
|
||||
if( printDialogData.Ok() )
|
||||
{
|
||||
wxPrintDialog printerDialog( this,& printDialogData );
|
||||
wxPrintDialog printerDialog( this, &printDialogData );
|
||||
|
||||
printerDialog.ShowModal();
|
||||
|
||||
|
@ -396,8 +436,8 @@ void WinEDA_PrintFrame::OnPrintPreview( wxCommandEvent& event )
|
|||
// Pass two printout objects: for preview, and possible printing.
|
||||
wxString title = BuildPrintTitle();
|
||||
wxPrintPreview* preview =
|
||||
new wxPrintPreview( new EDA_Printout (this, m_Parent, title, print_ref),
|
||||
new EDA_Printout (this, m_Parent, title, print_ref), g_PrintData );
|
||||
new wxPrintPreview( new EDA_Printout( this, m_Parent, title, print_ref ),
|
||||
new EDA_Printout( this, m_Parent, title, print_ref ), g_PrintData );
|
||||
|
||||
if( preview == NULL )
|
||||
{
|
||||
|
@ -418,7 +458,7 @@ void WinEDA_PrintFrame::OnPrintPreview( wxCommandEvent& event )
|
|||
WSize.y += 6;
|
||||
|
||||
wxPreviewFrame* frame = new wxPreviewFrame( preview, this,
|
||||
title, WPos, WSize );
|
||||
title, WPos, WSize );
|
||||
|
||||
frame->Initialize();
|
||||
frame->Show( TRUE );
|
||||
|
@ -450,15 +490,15 @@ void WinEDA_PrintFrame::EDA_PrintPage( wxCommandEvent& event )
|
|||
|
||||
SetPenWidth();
|
||||
|
||||
wxPrintDialogData printDialogData( * g_PrintData );
|
||||
wxPrintDialogData printDialogData( *g_PrintData );
|
||||
|
||||
wxPrinter printer(& printDialogData );
|
||||
wxPrinter printer( &printDialogData );
|
||||
|
||||
wxString title = BuildPrintTitle();
|
||||
EDA_Printout printout( this, m_Parent, title, print_ref );
|
||||
wxString title = BuildPrintTitle();
|
||||
EDA_Printout printout( this, m_Parent, title, print_ref );
|
||||
|
||||
#ifndef __WINDOWS__
|
||||
wxDC* dc = printout.GetDC();
|
||||
wxDC* dc = printout.GetDC();
|
||||
( (wxPostScriptDC*) dc )->SetResolution( 600 ); // Postscript DC resolution is 600 ppi
|
||||
#endif
|
||||
|
||||
|
@ -609,7 +649,7 @@ void EDA_Printout::DrawPage()
|
|||
/********************************/
|
||||
|
||||
/*
|
||||
* This is the real print function: print the active screen
|
||||
* This is the real print function: print the active screen
|
||||
*/
|
||||
{
|
||||
int tmpzoom;
|
||||
|
@ -728,7 +768,7 @@ void EDA_Printout::DrawPage()
|
|||
ftmp *= (float) PlotAreaSize.x / PageSize_in_mm.x; /* ftmp is in pixels */
|
||||
|
||||
/* because the pen size will be scaled by the dc scale, we modify the size
|
||||
* in order to keep the requested value */
|
||||
* in order to keep the requested value */
|
||||
dc->GetUserScale( &xdcscale, &ydcscale );
|
||||
ftmp /= xdcscale;
|
||||
SetPenMinWidth( (int) round( ftmp ) );
|
||||
|
@ -751,15 +791,13 @@ void EDA_Printout::DrawPage()
|
|||
if( m_Print_Sheet_Ref )
|
||||
m_Parent->TraceWorkSheet( dc, ActiveScreen, 0 );
|
||||
|
||||
|
||||
if( userscale == 1.0 ) // Draw the Sheet refs at optimum scale, and board at 1.0 scale
|
||||
{
|
||||
m_Print_Sheet_Ref = FALSE;
|
||||
dc->SetUserScale( accurate_Yscale, accurate_Yscale );
|
||||
}
|
||||
|
||||
if( s_PrintMirror )
|
||||
{ // To plot mirror, we revere the y axis, and modify the plot y origin
|
||||
{ // To plot mirror, we reverse the y axis, and modify the plot y origin
|
||||
double sx, sy;
|
||||
|
||||
dc->GetUserScale( &sx, &sy );
|
||||
|
@ -768,18 +806,18 @@ void EDA_Printout::DrawPage()
|
|||
sy /= userscale;
|
||||
|
||||
/* Plot offset y is moved by the y plot area size in order to have
|
||||
* the old draw area in the new draw area, because the draw origin has not moved
|
||||
* (this is the upper left corner) but the Y axis is reversed, therefore the plotting area
|
||||
* is the y coordinate values from - PlotAreaSize.y to 0 */
|
||||
* the old draw area in the new draw area, because the draw origin has not moved
|
||||
* (this is the upper left corner) but the Y axis is reversed, therefore the plotting area
|
||||
* is the y coordinate values from - PlotAreaSize.y to 0 */
|
||||
int ysize = (int) ( PlotAreaSize.y / sy );
|
||||
DrawOffset.y += ysize;
|
||||
|
||||
/* in order to keep the board position in the sheet
|
||||
* (when user scale <= 1) the y offset in moved by the distance between
|
||||
* the middle of the page and the middle of the board
|
||||
* This is equivalent to put the mirror axis to the board centre
|
||||
* for scales > 1, the DrawOffset was already computed to have the board centre
|
||||
* to the middle of the page.
|
||||
* (when user scale <= 1) the y offset in moved by the distance between
|
||||
* the middle of the page and the middle of the board
|
||||
* This is equivalent to put the mirror axis to the board centre
|
||||
* for scales > 1, the DrawOffset was already computed to have the board centre
|
||||
* to the middle of the page.
|
||||
*/
|
||||
wxPoint pcb_centre = pcbframe->m_Pcb->m_BoundaryBox.Centre();
|
||||
if( userscale <= 1.0 )
|
||||
|
|
Loading…
Reference in New Issue