Loading common/about_kicad.cpp +25 −10 Original line number Original line Diff line number Diff line Loading @@ -58,13 +58,19 @@ InitKiCadAbout( wxAboutDialogInfo& info ) << ( wxT( " Ansi\n" ) ); << ( wxT( " Ansi\n" ) ); #endif #endif /* Check for wxMSW */ #define FreeBSD /************************** * Check Operating System * **************************/ #if defined __WINDOWS__ #if defined __WINDOWS__ description << ( wxT( "on Windows" ) ); description << ( wxT( "on Windows" ) ); /* Check for wxMAC */ /* Check for wxMAC */ # elif defined __WXMAC__ # elif defined __WXMAC__ description << ( wxT( "\non Macintosch" ) ); description << ( wxT( "on Macintosch" ) ); /* Linux 64 bits */ /* Linux 64 bits */ # elif defined _LP64 && __LINUX__ # elif defined _LP64 && __LINUX__ Loading @@ -73,10 +79,19 @@ InitKiCadAbout( wxAboutDialogInfo& info ) /* Linux 32 bits */ /* Linux 32 bits */ # elif defined __LINUX__ # elif defined __LINUX__ description << ( wxT( "on 32 Bits GNU/Linux" ) ); description << ( wxT( "on 32 Bits GNU/Linux" ) ); /* OpenBSD */ # elif defined __OpenBSD__ description << ( wxT ("on OpenBSD") ); /* FreeBSD */ # elif defined __FreeBSD__ description << ( wxT ("on FreeBSD") ); #endif #endif /* Websites */ /* Websites */ description << wxT( "\n\nKiCad on the web\n" ); description << wxT( "\n\nKiCad on the web\n\n" ); description << wxT( "http://iut-tice.ujf-grenoble.fr/kicad \n" ); description << wxT( "http://iut-tice.ujf-grenoble.fr/kicad \n" ); description << wxT( "http://kicad.sourceforge.net \n" ); description << wxT( "http://kicad.sourceforge.net \n" ); description << wxT( "http://www.kicadlib.org" ); description << wxT( "http://www.kicadlib.org" ); Loading Loading @@ -113,15 +128,15 @@ InitKiCadAbout( wxAboutDialogInfo& info ) info.AddTranslator( SetMsg( wxT( "Polish (PL) Mateusz Skowroński <skowri@gmail.com>" ) ) ); info.AddTranslator( SetMsg( wxT( "Polish (PL) Mateusz Skowroński <skowri@gmail.com>" ) ) ); info.AddTranslator( SetMsg( wxT( "Portuguese (PT) Renie Marquet <reniemarquet@uol.com.br>" ) ) ); info.AddTranslator( SetMsg( wxT( "Portuguese (PT) Renie Marquet <reniemarquet@uol.com.br>" ) ) ); info.AddTranslator( SetMsg( wxT( "Russian (RU) Igor Plyatov <plyatov@gmail.com>" ) ) ); info.AddTranslator( SetMsg( wxT( "Russian (RU) Igor Plyatov <plyatov@gmail.com>" ) ) ); info.AddTranslator( SetMsg( wxT( "Spanish (ES) Pedro Martin del Valle <pkicad@yahoo.es>" ) ) ); info.AddTranslator( SetMsg( wxT( "Spanish (ES) Iñigo Zuluaga <inigo_zuluaga@yahoo.es>" ) ) ); /* TODO are these all russian translators, placed them here now TODO /* TODO are these all russian translators, placed them here now TODO TODO or else align them below other language maintainer with mail adres TODO*/ TODO or else align them below other language maintainer with mail adres TODO*/ info.AddTranslator( SetMsg( wxT( " Remy Halvick" ) ) ); info.AddTranslator( SetMsg( wxT( "\n\nRemy Halvick" ) ) ); info.AddTranslator( SetMsg( wxT( "David Briscoe" ) ) ); info.AddTranslator( SetMsg( wxT( "David Briscoe" ) ) ); info.AddTranslator( SetMsg( wxT( "Dominique Laigle" ) ) ); info.AddTranslator( SetMsg( wxT( "Dominique Laigle" ) ) ); info.AddTranslator( SetMsg( wxT( "Paul Burke" ) ) ); info.AddTranslator( SetMsg( wxT( "Paul Burke" ) ) ); info.AddTranslator( SetMsg( wxT( " Pedro Martin del Valle" ) ) ); info.AddTranslator( SetMsg( wxT( " Iñigo Zuluaga" ) ) ); /* Add programm credits for icons */ /* Add programm credits for icons */ info.AddArtist( wxT( "Icons by Iñigo Zuluaga" ) ); info.AddArtist( wxT( "Icons by Iñigo Zuluaga" ) ); Loading common/edaappl.cpp +654 −514 Original line number Original line Diff line number Diff line /***************/ /* TODO ENGLISH BRIEF TODO */ /* edaappl.cpp */ /*** /***************/ * @file edaapl.cpp * @brief methodes relative a la classe winEDA_App, communes /* * ROLE: methodes relative a la classe winEDA_App, communes * aux environements window et linux * aux environements window et linux */ ***/ #define EDA_BASE #define EDA_BASE #define COMMON_GLOBL #define COMMON_GLOBL Loading @@ -27,34 +26,61 @@ #include "bitmaps.h" #include "bitmaps.h" #define FONT_DEFAULT_SIZE 10 /* Default font size. #ifdef __UNIX__ * The real font size will be computed at run time */ # 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 ) ) /* A small class to handle the list od existing translations. /* Default font size */ #define FONT_DEFAULT_SIZE 10 /* Default font size. */ /*** * @brief 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 locale translation is automatic. * the selection of languages is mainly for mainteners's convenience (tests...) * the selection of languages is mainly for mainteners's convenience (tests...)\n * To add a support to a new tranlation: * To add a support to a new tranlation: * create a new icon (flag of the country) (see Lang_Fr.xpm as an exemple) * 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] * add a new item to s_Language_List[LANGUAGE_DESCR_COUNT] * and set LANGUAGE_DESCR_COUNT to the new value * and set LANGUAGE_DESCR_COUNT to the new value */ ***/ struct LANGUAGE_DESCR 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) /* wxWidgets locale identifier (See wxWidgets doc) */ const char** m_Lang_Icon; // the icon used in menus int m_WX_Lang_Identifier; const wxChar* m_Lang_Label; // Label used in menus /* KiCad identifier used in menu selection (See id.h) */ bool m_DoNotTranslate; // set to true if the m_Lang_Label must not be translated int m_KI_Lang_Identifier; /* The menu language icons */ const char** 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; }; }; static struct LANGUAGE_DESCR s_Language_List[] = /*** * @brief Language list struct ***/ static struct LANGUAGE_DESCR s_Language_List[] = { { /* Default language */ { { wxLANGUAGE_DEFAULT, wxLANGUAGE_DEFAULT, ID_LANGUAGE_DEFAULT, ID_LANGUAGE_DEFAULT, lang_def_xpm, lang_def_xpm, _( "Default" ) _( "Default" ) }, }, /* English language */ { { wxLANGUAGE_ENGLISH, wxLANGUAGE_ENGLISH, ID_LANGUAGE_ENGLISH, ID_LANGUAGE_ENGLISH, Loading @@ -62,84 +88,112 @@ static struct LANGUAGE_DESCR s_Language_List[] = wxT( "English" ), wxT( "English" ), true true }, }, /* French language */ { { wxLANGUAGE_FRENCH, wxLANGUAGE_FRENCH, ID_LANGUAGE_FRENCH, ID_LANGUAGE_FRENCH, lang_fr_xpm, lang_fr_xpm, _( "French" ) _( "French" ) }, }, /* Spanish language */ { { wxLANGUAGE_SPANISH, wxLANGUAGE_SPANISH, ID_LANGUAGE_SPANISH, ID_LANGUAGE_SPANISH, lang_es_xpm, lang_es_xpm, _( "Spanish" ) _( "Spanish" ) }, }, /* Portugese language */ { { wxLANGUAGE_PORTUGUESE, wxLANGUAGE_PORTUGUESE, ID_LANGUAGE_PORTUGUESE, ID_LANGUAGE_PORTUGUESE, lang_pt_xpm, lang_pt_xpm, _( "Portuguese" ) _( "Portuguese" ) }, }, /* Italian language */ { { wxLANGUAGE_ITALIAN, wxLANGUAGE_ITALIAN, ID_LANGUAGE_ITALIAN, ID_LANGUAGE_ITALIAN, lang_it_xpm, lang_it_xpm, _( "Italian" ) _( "Italian" ) }, }, /* German language */ { { wxLANGUAGE_GERMAN, wxLANGUAGE_GERMAN, ID_LANGUAGE_GERMAN, ID_LANGUAGE_GERMAN, lang_de_xpm, lang_de_xpm, _( "German" ) _( "German" ) }, }, /* Slovenian language */ { { wxLANGUAGE_SLOVENIAN, wxLANGUAGE_SLOVENIAN, ID_LANGUAGE_SLOVENIAN, ID_LANGUAGE_SLOVENIAN, lang_sl_xpm, lang_sl_xpm, _( "Slovenian" ) _( "Slovenian" ) }, }, /* Hungarian language */ { { wxLANGUAGE_HUNGARIAN, wxLANGUAGE_HUNGARIAN, ID_LANGUAGE_HUNGARIAN, ID_LANGUAGE_HUNGARIAN, lang_hu_xpm, lang_hu_xpm, _( "Hungarian" ) _( "Hungarian" ) }, }, /* Polish language */ { { wxLANGUAGE_POLISH, wxLANGUAGE_POLISH, ID_LANGUAGE_POLISH, ID_LANGUAGE_POLISH, lang_pl_xpm, lang_pl_xpm, _( "Polish" ) _( "Polish" ) }, }, /* Czech language */ { { wxLANGUAGE_CZECH, wxLANGUAGE_CZECH, ID_LANGUAGE_CZECH, ID_LANGUAGE_CZECH, lang_cs_xpm, lang_cs_xpm, _( "Czech" ) _( "Czech" ) }, }, /* Russian language */ { { wxLANGUAGE_RUSSIAN, wxLANGUAGE_RUSSIAN, ID_LANGUAGE_RUSSIAN, ID_LANGUAGE_RUSSIAN, lang_ru_xpm, lang_ru_xpm, _( "Russian" ) _( "Russian" ) }, }, /* Korean language */ { { wxLANGUAGE_KOREAN, wxLANGUAGE_KOREAN, ID_LANGUAGE_KOREAN, ID_LANGUAGE_KOREAN, lang_ko_xpm, lang_ko_xpm, _( "Korean" ) _( "Korean" ) }, }, /* Chinese simplified */ { { wxLANGUAGE_CHINESE_SIMPLIFIED, wxLANGUAGE_CHINESE_SIMPLIFIED, ID_LANGUAGE_CHINESE_SIMPLIFIED, ID_LANGUAGE_CHINESE_SIMPLIFIED, lang_chinese_xpm, lang_chinese_xpm, _( "Chinese simplified" ) _( "Chinese simplified" ) }, }, /* Catalan language */ { { wxLANGUAGE_CATALAN, wxLANGUAGE_CATALAN, ID_LANGUAGE_CATALAN, ID_LANGUAGE_CATALAN, lang_catalan_xpm, lang_catalan_xpm, _( "Catalan" ) _( "Catalan" ) }, }, /* Dutch language */ { { wxLANGUAGE_DUTCH, wxLANGUAGE_DUTCH, ID_LANGUAGE_DUTCH, ID_LANGUAGE_DUTCH, Loading @@ -148,15 +202,12 @@ static struct LANGUAGE_DESCR s_Language_List[] = } } }; }; /* 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 ) ) /**************************/ /* WinEDA_App Constructor */ /**************************/ /*** * @brief WinEDA_App Constructor * @details TODO * @return none ***/ WinEDA_App::WinEDA_App() WinEDA_App::WinEDA_App() { { m_Checker = NULL; m_Checker = NULL; Loading @@ -168,15 +219,13 @@ WinEDA_App::WinEDA_App() m_LanguageId = wxLANGUAGE_DEFAULT; m_LanguageId = wxLANGUAGE_DEFAULT; m_Language_Menu = NULL; m_Language_Menu = NULL; m_Locale = NULL; m_Locale = NULL; m_PdfBrowserIsDefault = TRUE; m_PdfBrowserIsDefault = TRUE; } } /*************************/ /*** /* WinEDA_App Destructor */ * @brief WinEDA_App Destructor /*************************/ ***/ WinEDA_App::~WinEDA_App() WinEDA_App::~WinEDA_App() { { SaveSettings(); SaveSettings(); Loading @@ -196,9 +245,14 @@ WinEDA_App::~WinEDA_App() } } /**************************************************/ void WinEDA_App::InitEDA_Appl( const wxString& name ) /*** /***************************************************/ * @brief TODO * @param name TODO * @return none ***/ void WinEDA_App::InitEDA_Appl( const wxString& name ) { { wxString ident; wxString ident; wxString EnvLang; wxString EnvLang; Loading Loading @@ -228,31 +282,49 @@ void WinEDA_App::InitEDA_Appl( const wxString& name ) #error Help files format not defined #error Help files format not defined #endif #endif // Init parameters for configuration /* Init parameters for configuration */ SetVendorName( wxT( "kicad" ) ); SetVendorName( wxT( "kicad" ) ); SetAppName( name ); SetAppName( name ); m_EDA_Config = new wxConfig( name ); m_EDA_Config = new wxConfig( name ); m_EDA_CommonConfig = new wxConfig( wxT( "kicad_common" ) ); m_EDA_CommonConfig = new wxConfig( wxT( "kicad_common" ) ); /* Create the fontes used in dialogs and messages */ /* Create the fonts used in dialogs and messages */ g_StdFontPointSize = FONT_DEFAULT_SIZE; g_StdFontPointSize = FONT_DEFAULT_SIZE; g_MsgFontPointSize = FONT_DEFAULT_SIZE; g_MsgFontPointSize = FONT_DEFAULT_SIZE; g_DialogFontPointSize = FONT_DEFAULT_SIZE; g_DialogFontPointSize = FONT_DEFAULT_SIZE; g_FixedFontPointSize = FONT_DEFAULT_SIZE; g_FixedFontPointSize = FONT_DEFAULT_SIZE; g_StdFont = new wxFont( g_StdFontPointSize, wxFONTFAMILY_ROMAN, wxNORMAL, wxNORMAL ); g_StdFont = new wxFont( g_MsgFont = new wxFont( g_StdFontPointSize, wxFONTFAMILY_ROMAN, g_StdFontPointSize, wxNORMAL, wxNORMAL ); wxFONTFAMILY_ROMAN, g_DialogFont = new wxFont( g_DialogFontPointSize, wxFONTFAMILY_ROMAN, wxNORMAL, wxNORMAL, wxNORMAL ); wxNORMAL ); g_ItalicFont = new wxFont( g_DialogFontPointSize, 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, wxFONTFAMILY_ROMAN, wxFONTSTYLE_ITALIC, wxFONTSTYLE_ITALIC, wxNORMAL ); wxNORMAL ); g_FixedFont = new wxFont( g_FixedFontPointSize, wxFONTFAMILY_MODERN, wxNORMAL, wxNORMAL ); /* installation des gestionnaires de visu d'images (pour help) */ g_FixedFont = new wxFont( g_FixedFontPointSize, wxFONTFAMILY_MODERN, wxNORMAL, wxNORMAL ); /* TODO installation des gestionnaires de visu d'images (pour help) TODO*/ wxImage::AddHandler( new wxPNGHandler ); wxImage::AddHandler( new wxPNGHandler ); wxImage::AddHandler( new wxGIFHandler ); wxImage::AddHandler( new wxGIFHandler ); wxImage::AddHandler( new wxJPEGHandler ); wxImage::AddHandler( new wxJPEGHandler ); Loading @@ -260,7 +332,6 @@ void WinEDA_App::InitEDA_Appl( const wxString& name ) // Analyse the command line & init binary path // Analyse the command line & init binary path SetBinDir(); SetBinDir(); ReadPdfBrowserInfos(); ReadPdfBrowserInfos(); // Internationalisation: loading the kicad suitable Dictionnary // Internationalisation: loading the kicad suitable Dictionnary Loading @@ -272,7 +343,8 @@ void WinEDA_App::InitEDA_Appl( const wxString& name ) { { } } SetLocaleTo_Default(); // Set locale option for separator used in float numbers /* Set locale option for separator used in float numbers */ SetLocaleTo_Default(); #ifdef KICAD_PYTHON #ifdef KICAD_PYTHON PyHandler::GetInstance()->SetAppName( name ); PyHandler::GetInstance()->SetAppName( name ); Loading @@ -280,18 +352,22 @@ void WinEDA_App::InitEDA_Appl( const wxString& name ) } } /*** * @brief Init online help * @return none ***/ /*****************************************/ /*****************************************/ void WinEDA_App::InitOnLineHelp() void WinEDA_App::InitOnLineHelp() /*****************************************/ /*****************************************/ /* Init On Line Help */ { { wxString fullfilename = FindKicadHelpPath(); wxString fullfilename = FindKicadHelpPath(); #if defined ONLINE_HELP_FILES_FORMAT_IS_HTML #if defined ONLINE_HELP_FILES_FORMAT_IS_HTML m_HelpFileName = fullfilename + wxT( ".html" ); m_HelpFileName = fullfilename + wxT( ".html" ); fullfilename += wxT( "kicad.hhp" ); fullfilename += wxT( "kicad.hhp" ); if( wxFileExists( fullfilename ) ) if( wxFileExists( fullfilename ) ) { { m_HtmlCtrl = new wxHtmlHelpController( wxHF_TOOLBAR | wxHF_CONTENTS | m_HtmlCtrl = new wxHtmlHelpController( wxHF_TOOLBAR | wxHF_CONTENTS | Loading @@ -301,47 +377,56 @@ void WinEDA_App::InitOnLineHelp() m_HtmlCtrl->SetTitleFormat( wxT( "Kicad Help" ) ); m_HtmlCtrl->SetTitleFormat( wxT( "Kicad Help" ) ); m_HtmlCtrl->AddBook( fullfilename ); m_HtmlCtrl->AddBook( fullfilename ); } } #elif defined ONLINE_HELP_FILES_FORMAT_IS_PDF #elif defined ONLINE_HELP_FILES_FORMAT_IS_PDF m_HtmlCtrl = NULL; m_HtmlCtrl = NULL; #else #else #error Help files format not defined #error Help files format not defined #endif #endif } } /*** * @brief Find the path to the executable and store it in WinEDA_App::m_BinDir * @return TODO ***/ /*******************************/ /*******************************/ bool WinEDA_App::SetBinDir() bool WinEDA_App::SetBinDir() /*******************************/ /*******************************/ // Find the path to the executable and store it in WinEDA_App::m_BinDir { { /* Apple MacOSx */ #ifdef __APPLE__ #ifdef __APPLE__ // Derive path from location of the app bundle /* Derive path from location of the app bundle */ CFBundleRef mainBundle = CFBundleGetMainBundle(); CFBundleRef mainBundle = CFBundleGetMainBundle(); if( mainBundle == NULL ) if( mainBundle == NULL ) return false; return false; CFURLRef urlref = CFBundleCopyBundleURL( mainBundle ); CFURLRef urlref = CFBundleCopyBundleURL( mainBundle ); if( urlref == NULL ) if( urlref == NULL ) return false; return false; CFStringRef str = CFURLCopyFileSystemPath( urlref, kCFURLPOSIXPathStyle ); CFStringRef str = CFURLCopyFileSystemPath( urlref, kCFURLPOSIXPathStyle ); if( str == NULL ) if( str == NULL ) return false; return false; char* native_str = NULL; char* native_str = NULL; int len = CFStringGetMaximumSizeForEncoding( CFStringGetLength( str ), int len = CFStringGetMaximumSizeForEncoding( CFStringGetLength( str ), kCFStringEncodingUTF8 ) + 1; kCFStringEncodingUTF8 ) + 1; native_str = new char[len]; native_str = new char[len]; CFStringGetCString( str, native_str, len, kCFStringEncodingUTF8 ); CFStringGetCString( str, native_str, len, kCFStringEncodingUTF8 ); m_BinDir = CONV_FROM_UTF8( native_str ); m_BinDir = CONV_FROM_UTF8( native_str ); delete[] native_str; delete[] native_str; /* Linux and Unix */ #elif defined (__UNIX__) #elif defined (__UNIX__) // Under Linux, if argv[0] doesn't the complete path to the executable, // Under Linux, if argv[0] doesn't the complete path to the executable, // it's necessary to obtain it using "which <filename>". // it's necessary to obtain it using "which <filename>". FILE* ftmp; FILE* ftmp; #define TMP_FILE "/tmp/kicad.tmp" char Line[1024]; char Line[1024]; char FileName[1024]; char FileName[1024]; wxString str_arg0; wxString str_arg0; Loading @@ -353,6 +438,7 @@ bool WinEDA_App::SetBinDir() { { sprintf( FileName, "which %s > %s", CONV_TO_UTF8( str_arg0 ), TMP_FILE ); sprintf( FileName, "which %s > %s", CONV_TO_UTF8( str_arg0 ), TMP_FILE ); ii = system( FileName ); ii = system( FileName ); if( ( ftmp = fopen( TMP_FILE, "rt" ) ) != NULL ) if( ( ftmp = fopen( TMP_FILE, "rt" ) ) != NULL ) { { fgets( Line, 1000, ftmp ); fgets( Line, 1000, ftmp ); Loading @@ -363,9 +449,10 @@ bool WinEDA_App::SetBinDir() } } else else m_BinDir = argv[0]; m_BinDir = argv[0]; #else #else m_BinDir = argv[0]; m_BinDir = argv[0]; #endif #endif /* __UNIX__ */ m_BinDir.Replace( WIN_STRING_DIR_SEP, UNIX_STRING_DIR_SEP ); m_BinDir.Replace( WIN_STRING_DIR_SEP, UNIX_STRING_DIR_SEP ); while( m_BinDir.Last() != '/' ) while( m_BinDir.Last() != '/' ) Loading @@ -375,12 +462,14 @@ bool WinEDA_App::SetBinDir() } } /*** * @brief Get application settings * @return none ***/ /*********************************/ /*********************************/ void WinEDA_App::GetSettings() void WinEDA_App::GetSettings() /*********************************/ /*********************************/ /* Get the last setup used (fontes, files opened...) */ { { wxString Line, Ident; wxString Line, Ident; unsigned ii; unsigned ii; Loading @@ -399,7 +488,7 @@ void WinEDA_App::GetSettings() if( !m_EDA_Config ) if( !m_EDA_Config ) return; return; /* Last 10 project settings */ for( ii = 0; ii < 10; ii++ ) for( ii = 0; ii < 10; ii++ ) { { Ident = wxT( "LastProject" ); Ident = wxT( "LastProject" ); Loading @@ -411,6 +500,7 @@ void WinEDA_App::GetSettings() m_LastProject.Add( Line ); m_LastProject.Add( Line ); } } /* Set default font sizes */ g_StdFontPointSize = m_EDA_Config->Read( wxT( "SdtFontSize" ), g_StdFontPointSize = m_EDA_Config->Read( wxT( "SdtFontSize" ), FONT_DEFAULT_SIZE ); FONT_DEFAULT_SIZE ); g_MsgFontPointSize = m_EDA_Config->Read( wxT( "MsgFontSize" ), g_MsgFontPointSize = m_EDA_Config->Read( wxT( "MsgFontSize" ), Loading @@ -420,27 +510,35 @@ void WinEDA_App::GetSettings() g_FixedFontPointSize = m_EDA_Config->Read( wxT( "FixedFontSize" ), g_FixedFontPointSize = m_EDA_Config->Read( wxT( "FixedFontSize" ), FONT_DEFAULT_SIZE ); FONT_DEFAULT_SIZE ); /* Sdt font type */ Line = m_EDA_Config->Read( wxT( "SdtFontType" ), wxEmptyString ); Line = m_EDA_Config->Read( wxT( "SdtFontType" ), wxEmptyString ); if( !Line.IsEmpty() ) if( !Line.IsEmpty() ) g_StdFont->SetFaceName( Line ); g_StdFont->SetFaceName( Line ); /* Sdt font style */ ii = m_EDA_Config->Read( wxT( "SdtFontStyle" ), wxFONTFAMILY_ROMAN ); ii = m_EDA_Config->Read( wxT( "SdtFontStyle" ), wxFONTFAMILY_ROMAN ); g_StdFont->SetStyle( ii ); g_StdFont->SetStyle( ii ); /* Sdt font weight */ ii = m_EDA_Config->Read( wxT( "SdtFontWeight" ), wxNORMAL ); ii = m_EDA_Config->Read( wxT( "SdtFontWeight" ), wxNORMAL ); g_StdFont->SetWeight( ii ); g_StdFont->SetWeight( ii ); g_StdFont->SetPointSize( g_StdFontPointSize ); g_StdFont->SetPointSize( g_StdFontPointSize ); /* Msg font type */ Line = m_EDA_Config->Read( wxT( "MsgFontType" ), wxEmptyString ); Line = m_EDA_Config->Read( wxT( "MsgFontType" ), wxEmptyString ); if( !Line.IsEmpty() ) if( !Line.IsEmpty() ) g_MsgFont->SetFaceName( Line ); g_MsgFont->SetFaceName( Line ); /* Msg font style */ ii = m_EDA_Config->Read( wxT( "MsgFontStyle" ), wxFONTFAMILY_ROMAN ); ii = m_EDA_Config->Read( wxT( "MsgFontStyle" ), wxFONTFAMILY_ROMAN ); g_MsgFont->SetStyle( ii ); g_MsgFont->SetStyle( ii ); /* Msg font weight */ ii = m_EDA_Config->Read( wxT( "MsgFontWeight" ), wxNORMAL ); ii = m_EDA_Config->Read( wxT( "MsgFontWeight" ), wxNORMAL ); g_MsgFont->SetWeight( ii ); g_MsgFont->SetWeight( ii ); g_MsgFont->SetPointSize( g_MsgFontPointSize ); g_MsgFont->SetPointSize( g_MsgFontPointSize ); Line = m_EDA_Config->Read( wxT( "DialogFontType" ), wxEmptyString ); Line = m_EDA_Config->Read( wxT( "DialogFontType" ), wxEmptyString ); if( !Line.IsEmpty() ) if( !Line.IsEmpty() ) g_DialogFont->SetFaceName( Line ); g_DialogFont->SetFaceName( Line ); Loading @@ -464,58 +562,87 @@ void WinEDA_App::GetSettings() } } /*** * @brief Save application settings * @return none ***/ /**********************************/ /**********************************/ void WinEDA_App::SaveSettings() void WinEDA_App::SaveSettings() /**********************************/ /**********************************/ { { unsigned int ii; unsigned int i; if( m_EDA_Config == NULL ) if( m_EDA_Config == NULL ) return; return; m_EDA_Config->Write( wxT( "SdtFontSize" ), g_StdFontPointSize ); /* Sdt font settings */ m_EDA_Config->Write( wxT( "SdtFontType" ), g_StdFont->GetFaceName() ); m_EDA_Config->Write( wxT( "SdtFontSize" ), m_EDA_Config->Write( wxT( "SdtFontStyle" ), g_StdFont->GetStyle() ); g_StdFontPointSize ); m_EDA_Config->Write( wxT( "SdtFontWeight" ), g_StdFont->GetWeight() ); m_EDA_Config->Write( wxT( "SdtFontType" ), g_StdFont->GetFaceName() ); m_EDA_Config->Write( wxT( "MsgFontSize" ), g_MsgFontPointSize ); m_EDA_Config->Write( wxT( "SdtFontStyle" ), m_EDA_Config->Write( wxT( "MsgFontType" ), g_MsgFont->GetFaceName() ); g_StdFont->GetStyle() ); m_EDA_Config->Write( wxT( "MsgFontStyle" ), g_MsgFont->GetStyle() ); m_EDA_Config->Write( wxT( "SdtFontWeight" ), m_EDA_Config->Write( wxT( "MsgFontWeight" ), g_MsgFont->GetWeight() ); g_StdFont->GetWeight() ); m_EDA_Config->Write( wxT( "DialogFontSize" ), g_DialogFontPointSize ); /* Msg font settings */ m_EDA_Config->Write( wxT( "DialogFontType" ), g_DialogFont->GetFaceName() ); m_EDA_Config->Write( wxT( "MsgFontSize" ), m_EDA_Config->Write( wxT( "DialogFontStyle" ), g_DialogFont->GetStyle() ); g_MsgFontPointSize ); m_EDA_Config->Write( wxT( "DialogFontWeight" ), g_DialogFont->GetWeight() ); m_EDA_Config->Write( wxT( "MsgFontType" ), g_MsgFont->GetFaceName() ); m_EDA_Config->Write( wxT( "FixedFontSize" ), g_FixedFontPointSize ); m_EDA_Config->Write( wxT( "MsgFontStyle" ), g_MsgFont->GetStyle() ); m_EDA_Config->Write( wxT( "ShowPageLimits" ), g_ShowPageLimits ); m_EDA_Config->Write( wxT( "MsgFontWeight" ), g_MsgFont->GetWeight() ); m_EDA_Config->Write( wxT( "WorkingDir" ), wxGetCwd() ); /* Dialog font settings */ for( ii = 0; ii < 10; ii++ ) m_EDA_Config->Write( wxT( "DialogFontSize" ), g_DialogFontPointSize ); m_EDA_Config->Write( wxT( "DialogFontType" ), g_DialogFont->GetFaceName() ); m_EDA_Config->Write( wxT( "DialogFontStyle" ), g_DialogFont->GetStyle() ); m_EDA_Config->Write( wxT( "DialogFontWeight" ), g_DialogFont->GetWeight() ); /* Misc settings */ m_EDA_Config->Write( wxT( "FixedFontSize" ), g_FixedFontPointSize ); m_EDA_Config->Write( wxT( "ShowPageLimits" ), g_ShowPageLimits ); m_EDA_Config->Write( wxT( "WorkingDir" ), wxGetCwd() ); /* Save last 10 project list */ for( i = 0; i < 10; i++ ) { { wxString msg = wxT( "LastProject" ); wxString msg = wxT( "LastProject" ); if( ii ) if( i ) msg << ii; msg << i; if( ii < m_LastProject.GetCount() ) if( i < m_LastProject.GetCount() ) m_EDA_Config->Write( msg, m_LastProject[ii] ); m_EDA_Config->Write( msg, m_LastProject[i] ); else else m_EDA_Config->Write( msg, wxEmptyString ); m_EDA_Config->Write( msg, wxEmptyString ); } } } } /*********************************************/ /*** bool WinEDA_App::SetLanguage( bool first_time ) * @brief Set the dictionary file name for internationalization /*********************************************/ /* Set the dictionary file name for internationalization * the files are in kicad/internat/xx or kicad/internat/xx_XX * the files are in kicad/internat/xx or kicad/internat/xx_XX * and are named kicad.mo * and are named kicad.mo */ * * @param first_time TODO * @return TODO ***/ /*********************************************/ bool WinEDA_App::SetLanguage( bool first_time ) /*********************************************/ { { wxString DictionaryName( wxT( "kicad" ) ); // dictionary file name without extend (full name is kicad.mo) wxString DictionaryName( wxT( "kicad" ) ); // dictionary file name without extend (full name is kicad.mo) wxString BaseDictionaryPath( wxT( "internat" ) ); // Real path is kicad/internat/xx_XX or kicad/internat/xx wxString BaseDictionaryPath( wxT( "internat" ) ); // Real path is kicad/internat/xx_XX or kicad/internat/xx Loading @@ -542,23 +669,27 @@ bool WinEDA_App::SetLanguage( bool first_time ) m_Locale->AddCatalog( DictionaryName ); m_Locale->AddCatalog( DictionaryName ); SetLanguageList( NULL ); SetLanguageList( NULL ); return m_Locale->IsOk(); return m_Locale->IsOk(); } } /**************************************************/ void WinEDA_App::SetLanguageIdentifier( int menu_id ) /**************************************************/ /* return in m_LanguageId the wxWidgets language identifier Id /*** * @brief Return in m_LanguageId the wxWidgets language identifier Id * from the kicad menu id (internal menu identifier) * from the kicad menu id (internal menu identifier) */ * @param menu_id TODO * @return none ***/ /**************************************************/ void WinEDA_App::SetLanguageIdentifier( int menu_id ) /**************************************************/ { { unsigned int ii; unsigned int ii; wxLogDebug( wxT( "Select language ID %d from %d possible languages." ), wxLogDebug( wxT( "Select language ID %d from %d possible languages." ), menu_id, LANGUAGE_DESCR_COUNT ); menu_id, LANGUAGE_DESCR_COUNT ); for( ii = 0; ii < LANGUAGE_DESCR_COUNT; ii++ ) for( ii = 0; ii < LANGUAGE_DESCR_COUNT; ii++ ) { { Loading @@ -571,12 +702,16 @@ void WinEDA_App::SetLanguageIdentifier( int menu_id ) } } /*** * @brief Create menu list for language choice. * @param MasterMenu TODO * @return TODO ***/ /*********************************************************/ /*********************************************************/ wxMenu* WinEDA_App::SetLanguageList( wxMenu* MasterMenu ) wxMenu* WinEDA_App::SetLanguageList( wxMenu* MasterMenu ) /*********************************************************/ /*********************************************************/ /* Create menu list for language choice. */ { { wxMenuItem* item; wxMenuItem* item; unsigned int ii; unsigned int ii; Loading @@ -589,8 +724,10 @@ wxMenu* WinEDA_App::SetLanguageList( wxMenu* MasterMenu ) wxString MenuLabel = s_Language_List[ii].m_DoNotTranslate ? wxString MenuLabel = s_Language_List[ii].m_DoNotTranslate ? s_Language_List[ii].m_Lang_Label : s_Language_List[ii].m_Lang_Label : wxGetTranslation( 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, item = new wxMenuItem( m_Language_Menu, s_Language_List[ii].m_KI_Lang_Identifier, MenuLabel, wxEmptyString, wxITEM_CHECK ); MenuLabel, wxEmptyString, wxITEM_CHECK ); SETBITMAPS( s_Language_List[ii].m_Lang_Icon ); SETBITMAPS( s_Language_List[ii].m_Lang_Icon ); m_Language_Menu->Append( item ); m_Language_Menu->Append( item ); } } Loading @@ -599,17 +736,17 @@ wxMenu* WinEDA_App::SetLanguageList( wxMenu* MasterMenu ) for( ii = 0; ii < LANGUAGE_DESCR_COUNT; ii++ ) for( ii = 0; ii < LANGUAGE_DESCR_COUNT; ii++ ) { { if( m_LanguageId == s_Language_List[ii].m_WX_Lang_Identifier ) if( m_LanguageId == s_Language_List[ii].m_WX_Lang_Identifier ) m_Language_Menu->Check( s_Language_List[ii].m_KI_Lang_Identifier, m_Language_Menu->Check( s_Language_List[ii].m_KI_Lang_Identifier, true ); true ); else else m_Language_Menu->Check( s_Language_List[ii].m_KI_Lang_Identifier, m_Language_Menu->Check( s_Language_List[ii].m_KI_Lang_Identifier, false ); false ); } } if( MasterMenu ) if( MasterMenu ) { { ADD_MENUITEM_WITH_HELP_AND_SUBMENU( MasterMenu, m_Language_Menu, ADD_MENUITEM_WITH_HELP_AND_SUBMENU( MasterMenu, ID_LANGUAGE_CHOICE, _( "Language" ), m_Language_Menu, ID_LANGUAGE_CHOICE, _( "Language" ), _( "Select application language (only for testing!)" ), _( "Select application language (only for testing!)" ), language_xpm ); language_xpm ); } } Loading @@ -617,15 +754,18 @@ wxMenu* WinEDA_App::SetLanguageList( wxMenu* MasterMenu ) } } /*** * @brief Run init scripts * @return TODO ***/ /**********************/ /**********************/ int WinEDA_App::OnRun() int WinEDA_App::OnRun() /**********************/ /**********************/ /* Run init scripts */ { { # ifdef KICAD_PYTHON # ifdef KICAD_PYTHON PyHandler::GetInstance()->RunScripts(); PyHandler::GetInstance()->RunScripts(); # endif # endif return wxApp::OnRun(); return wxApp::OnRun(); } } Loading
common/about_kicad.cpp +25 −10 Original line number Original line Diff line number Diff line Loading @@ -58,13 +58,19 @@ InitKiCadAbout( wxAboutDialogInfo& info ) << ( wxT( " Ansi\n" ) ); << ( wxT( " Ansi\n" ) ); #endif #endif /* Check for wxMSW */ #define FreeBSD /************************** * Check Operating System * **************************/ #if defined __WINDOWS__ #if defined __WINDOWS__ description << ( wxT( "on Windows" ) ); description << ( wxT( "on Windows" ) ); /* Check for wxMAC */ /* Check for wxMAC */ # elif defined __WXMAC__ # elif defined __WXMAC__ description << ( wxT( "\non Macintosch" ) ); description << ( wxT( "on Macintosch" ) ); /* Linux 64 bits */ /* Linux 64 bits */ # elif defined _LP64 && __LINUX__ # elif defined _LP64 && __LINUX__ Loading @@ -73,10 +79,19 @@ InitKiCadAbout( wxAboutDialogInfo& info ) /* Linux 32 bits */ /* Linux 32 bits */ # elif defined __LINUX__ # elif defined __LINUX__ description << ( wxT( "on 32 Bits GNU/Linux" ) ); description << ( wxT( "on 32 Bits GNU/Linux" ) ); /* OpenBSD */ # elif defined __OpenBSD__ description << ( wxT ("on OpenBSD") ); /* FreeBSD */ # elif defined __FreeBSD__ description << ( wxT ("on FreeBSD") ); #endif #endif /* Websites */ /* Websites */ description << wxT( "\n\nKiCad on the web\n" ); description << wxT( "\n\nKiCad on the web\n\n" ); description << wxT( "http://iut-tice.ujf-grenoble.fr/kicad \n" ); description << wxT( "http://iut-tice.ujf-grenoble.fr/kicad \n" ); description << wxT( "http://kicad.sourceforge.net \n" ); description << wxT( "http://kicad.sourceforge.net \n" ); description << wxT( "http://www.kicadlib.org" ); description << wxT( "http://www.kicadlib.org" ); Loading Loading @@ -113,15 +128,15 @@ InitKiCadAbout( wxAboutDialogInfo& info ) info.AddTranslator( SetMsg( wxT( "Polish (PL) Mateusz Skowroński <skowri@gmail.com>" ) ) ); info.AddTranslator( SetMsg( wxT( "Polish (PL) Mateusz Skowroński <skowri@gmail.com>" ) ) ); info.AddTranslator( SetMsg( wxT( "Portuguese (PT) Renie Marquet <reniemarquet@uol.com.br>" ) ) ); info.AddTranslator( SetMsg( wxT( "Portuguese (PT) Renie Marquet <reniemarquet@uol.com.br>" ) ) ); info.AddTranslator( SetMsg( wxT( "Russian (RU) Igor Plyatov <plyatov@gmail.com>" ) ) ); info.AddTranslator( SetMsg( wxT( "Russian (RU) Igor Plyatov <plyatov@gmail.com>" ) ) ); info.AddTranslator( SetMsg( wxT( "Spanish (ES) Pedro Martin del Valle <pkicad@yahoo.es>" ) ) ); info.AddTranslator( SetMsg( wxT( "Spanish (ES) Iñigo Zuluaga <inigo_zuluaga@yahoo.es>" ) ) ); /* TODO are these all russian translators, placed them here now TODO /* TODO are these all russian translators, placed them here now TODO TODO or else align them below other language maintainer with mail adres TODO*/ TODO or else align them below other language maintainer with mail adres TODO*/ info.AddTranslator( SetMsg( wxT( " Remy Halvick" ) ) ); info.AddTranslator( SetMsg( wxT( "\n\nRemy Halvick" ) ) ); info.AddTranslator( SetMsg( wxT( "David Briscoe" ) ) ); info.AddTranslator( SetMsg( wxT( "David Briscoe" ) ) ); info.AddTranslator( SetMsg( wxT( "Dominique Laigle" ) ) ); info.AddTranslator( SetMsg( wxT( "Dominique Laigle" ) ) ); info.AddTranslator( SetMsg( wxT( "Paul Burke" ) ) ); info.AddTranslator( SetMsg( wxT( "Paul Burke" ) ) ); info.AddTranslator( SetMsg( wxT( " Pedro Martin del Valle" ) ) ); info.AddTranslator( SetMsg( wxT( " Iñigo Zuluaga" ) ) ); /* Add programm credits for icons */ /* Add programm credits for icons */ info.AddArtist( wxT( "Icons by Iñigo Zuluaga" ) ); info.AddArtist( wxT( "Icons by Iñigo Zuluaga" ) ); Loading
common/edaappl.cpp +654 −514 Original line number Original line Diff line number Diff line /***************/ /* TODO ENGLISH BRIEF TODO */ /* edaappl.cpp */ /*** /***************/ * @file edaapl.cpp * @brief methodes relative a la classe winEDA_App, communes /* * ROLE: methodes relative a la classe winEDA_App, communes * aux environements window et linux * aux environements window et linux */ ***/ #define EDA_BASE #define EDA_BASE #define COMMON_GLOBL #define COMMON_GLOBL Loading @@ -27,34 +26,61 @@ #include "bitmaps.h" #include "bitmaps.h" #define FONT_DEFAULT_SIZE 10 /* Default font size. #ifdef __UNIX__ * The real font size will be computed at run time */ # 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 ) ) /* A small class to handle the list od existing translations. /* Default font size */ #define FONT_DEFAULT_SIZE 10 /* Default font size. */ /*** * @brief 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 locale translation is automatic. * the selection of languages is mainly for mainteners's convenience (tests...) * the selection of languages is mainly for mainteners's convenience (tests...)\n * To add a support to a new tranlation: * To add a support to a new tranlation: * create a new icon (flag of the country) (see Lang_Fr.xpm as an exemple) * 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] * add a new item to s_Language_List[LANGUAGE_DESCR_COUNT] * and set LANGUAGE_DESCR_COUNT to the new value * and set LANGUAGE_DESCR_COUNT to the new value */ ***/ struct LANGUAGE_DESCR 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) /* wxWidgets locale identifier (See wxWidgets doc) */ const char** m_Lang_Icon; // the icon used in menus int m_WX_Lang_Identifier; const wxChar* m_Lang_Label; // Label used in menus /* KiCad identifier used in menu selection (See id.h) */ bool m_DoNotTranslate; // set to true if the m_Lang_Label must not be translated int m_KI_Lang_Identifier; /* The menu language icons */ const char** 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; }; }; static struct LANGUAGE_DESCR s_Language_List[] = /*** * @brief Language list struct ***/ static struct LANGUAGE_DESCR s_Language_List[] = { { /* Default language */ { { wxLANGUAGE_DEFAULT, wxLANGUAGE_DEFAULT, ID_LANGUAGE_DEFAULT, ID_LANGUAGE_DEFAULT, lang_def_xpm, lang_def_xpm, _( "Default" ) _( "Default" ) }, }, /* English language */ { { wxLANGUAGE_ENGLISH, wxLANGUAGE_ENGLISH, ID_LANGUAGE_ENGLISH, ID_LANGUAGE_ENGLISH, Loading @@ -62,84 +88,112 @@ static struct LANGUAGE_DESCR s_Language_List[] = wxT( "English" ), wxT( "English" ), true true }, }, /* French language */ { { wxLANGUAGE_FRENCH, wxLANGUAGE_FRENCH, ID_LANGUAGE_FRENCH, ID_LANGUAGE_FRENCH, lang_fr_xpm, lang_fr_xpm, _( "French" ) _( "French" ) }, }, /* Spanish language */ { { wxLANGUAGE_SPANISH, wxLANGUAGE_SPANISH, ID_LANGUAGE_SPANISH, ID_LANGUAGE_SPANISH, lang_es_xpm, lang_es_xpm, _( "Spanish" ) _( "Spanish" ) }, }, /* Portugese language */ { { wxLANGUAGE_PORTUGUESE, wxLANGUAGE_PORTUGUESE, ID_LANGUAGE_PORTUGUESE, ID_LANGUAGE_PORTUGUESE, lang_pt_xpm, lang_pt_xpm, _( "Portuguese" ) _( "Portuguese" ) }, }, /* Italian language */ { { wxLANGUAGE_ITALIAN, wxLANGUAGE_ITALIAN, ID_LANGUAGE_ITALIAN, ID_LANGUAGE_ITALIAN, lang_it_xpm, lang_it_xpm, _( "Italian" ) _( "Italian" ) }, }, /* German language */ { { wxLANGUAGE_GERMAN, wxLANGUAGE_GERMAN, ID_LANGUAGE_GERMAN, ID_LANGUAGE_GERMAN, lang_de_xpm, lang_de_xpm, _( "German" ) _( "German" ) }, }, /* Slovenian language */ { { wxLANGUAGE_SLOVENIAN, wxLANGUAGE_SLOVENIAN, ID_LANGUAGE_SLOVENIAN, ID_LANGUAGE_SLOVENIAN, lang_sl_xpm, lang_sl_xpm, _( "Slovenian" ) _( "Slovenian" ) }, }, /* Hungarian language */ { { wxLANGUAGE_HUNGARIAN, wxLANGUAGE_HUNGARIAN, ID_LANGUAGE_HUNGARIAN, ID_LANGUAGE_HUNGARIAN, lang_hu_xpm, lang_hu_xpm, _( "Hungarian" ) _( "Hungarian" ) }, }, /* Polish language */ { { wxLANGUAGE_POLISH, wxLANGUAGE_POLISH, ID_LANGUAGE_POLISH, ID_LANGUAGE_POLISH, lang_pl_xpm, lang_pl_xpm, _( "Polish" ) _( "Polish" ) }, }, /* Czech language */ { { wxLANGUAGE_CZECH, wxLANGUAGE_CZECH, ID_LANGUAGE_CZECH, ID_LANGUAGE_CZECH, lang_cs_xpm, lang_cs_xpm, _( "Czech" ) _( "Czech" ) }, }, /* Russian language */ { { wxLANGUAGE_RUSSIAN, wxLANGUAGE_RUSSIAN, ID_LANGUAGE_RUSSIAN, ID_LANGUAGE_RUSSIAN, lang_ru_xpm, lang_ru_xpm, _( "Russian" ) _( "Russian" ) }, }, /* Korean language */ { { wxLANGUAGE_KOREAN, wxLANGUAGE_KOREAN, ID_LANGUAGE_KOREAN, ID_LANGUAGE_KOREAN, lang_ko_xpm, lang_ko_xpm, _( "Korean" ) _( "Korean" ) }, }, /* Chinese simplified */ { { wxLANGUAGE_CHINESE_SIMPLIFIED, wxLANGUAGE_CHINESE_SIMPLIFIED, ID_LANGUAGE_CHINESE_SIMPLIFIED, ID_LANGUAGE_CHINESE_SIMPLIFIED, lang_chinese_xpm, lang_chinese_xpm, _( "Chinese simplified" ) _( "Chinese simplified" ) }, }, /* Catalan language */ { { wxLANGUAGE_CATALAN, wxLANGUAGE_CATALAN, ID_LANGUAGE_CATALAN, ID_LANGUAGE_CATALAN, lang_catalan_xpm, lang_catalan_xpm, _( "Catalan" ) _( "Catalan" ) }, }, /* Dutch language */ { { wxLANGUAGE_DUTCH, wxLANGUAGE_DUTCH, ID_LANGUAGE_DUTCH, ID_LANGUAGE_DUTCH, Loading @@ -148,15 +202,12 @@ static struct LANGUAGE_DESCR s_Language_List[] = } } }; }; /* 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 ) ) /**************************/ /* WinEDA_App Constructor */ /**************************/ /*** * @brief WinEDA_App Constructor * @details TODO * @return none ***/ WinEDA_App::WinEDA_App() WinEDA_App::WinEDA_App() { { m_Checker = NULL; m_Checker = NULL; Loading @@ -168,15 +219,13 @@ WinEDA_App::WinEDA_App() m_LanguageId = wxLANGUAGE_DEFAULT; m_LanguageId = wxLANGUAGE_DEFAULT; m_Language_Menu = NULL; m_Language_Menu = NULL; m_Locale = NULL; m_Locale = NULL; m_PdfBrowserIsDefault = TRUE; m_PdfBrowserIsDefault = TRUE; } } /*************************/ /*** /* WinEDA_App Destructor */ * @brief WinEDA_App Destructor /*************************/ ***/ WinEDA_App::~WinEDA_App() WinEDA_App::~WinEDA_App() { { SaveSettings(); SaveSettings(); Loading @@ -196,9 +245,14 @@ WinEDA_App::~WinEDA_App() } } /**************************************************/ void WinEDA_App::InitEDA_Appl( const wxString& name ) /*** /***************************************************/ * @brief TODO * @param name TODO * @return none ***/ void WinEDA_App::InitEDA_Appl( const wxString& name ) { { wxString ident; wxString ident; wxString EnvLang; wxString EnvLang; Loading Loading @@ -228,31 +282,49 @@ void WinEDA_App::InitEDA_Appl( const wxString& name ) #error Help files format not defined #error Help files format not defined #endif #endif // Init parameters for configuration /* Init parameters for configuration */ SetVendorName( wxT( "kicad" ) ); SetVendorName( wxT( "kicad" ) ); SetAppName( name ); SetAppName( name ); m_EDA_Config = new wxConfig( name ); m_EDA_Config = new wxConfig( name ); m_EDA_CommonConfig = new wxConfig( wxT( "kicad_common" ) ); m_EDA_CommonConfig = new wxConfig( wxT( "kicad_common" ) ); /* Create the fontes used in dialogs and messages */ /* Create the fonts used in dialogs and messages */ g_StdFontPointSize = FONT_DEFAULT_SIZE; g_StdFontPointSize = FONT_DEFAULT_SIZE; g_MsgFontPointSize = FONT_DEFAULT_SIZE; g_MsgFontPointSize = FONT_DEFAULT_SIZE; g_DialogFontPointSize = FONT_DEFAULT_SIZE; g_DialogFontPointSize = FONT_DEFAULT_SIZE; g_FixedFontPointSize = FONT_DEFAULT_SIZE; g_FixedFontPointSize = FONT_DEFAULT_SIZE; g_StdFont = new wxFont( g_StdFontPointSize, wxFONTFAMILY_ROMAN, wxNORMAL, wxNORMAL ); g_StdFont = new wxFont( g_MsgFont = new wxFont( g_StdFontPointSize, wxFONTFAMILY_ROMAN, g_StdFontPointSize, wxNORMAL, wxNORMAL ); wxFONTFAMILY_ROMAN, g_DialogFont = new wxFont( g_DialogFontPointSize, wxFONTFAMILY_ROMAN, wxNORMAL, wxNORMAL, wxNORMAL ); wxNORMAL ); g_ItalicFont = new wxFont( g_DialogFontPointSize, 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, wxFONTFAMILY_ROMAN, wxFONTSTYLE_ITALIC, wxFONTSTYLE_ITALIC, wxNORMAL ); wxNORMAL ); g_FixedFont = new wxFont( g_FixedFontPointSize, wxFONTFAMILY_MODERN, wxNORMAL, wxNORMAL ); /* installation des gestionnaires de visu d'images (pour help) */ g_FixedFont = new wxFont( g_FixedFontPointSize, wxFONTFAMILY_MODERN, wxNORMAL, wxNORMAL ); /* TODO installation des gestionnaires de visu d'images (pour help) TODO*/ wxImage::AddHandler( new wxPNGHandler ); wxImage::AddHandler( new wxPNGHandler ); wxImage::AddHandler( new wxGIFHandler ); wxImage::AddHandler( new wxGIFHandler ); wxImage::AddHandler( new wxJPEGHandler ); wxImage::AddHandler( new wxJPEGHandler ); Loading @@ -260,7 +332,6 @@ void WinEDA_App::InitEDA_Appl( const wxString& name ) // Analyse the command line & init binary path // Analyse the command line & init binary path SetBinDir(); SetBinDir(); ReadPdfBrowserInfos(); ReadPdfBrowserInfos(); // Internationalisation: loading the kicad suitable Dictionnary // Internationalisation: loading the kicad suitable Dictionnary Loading @@ -272,7 +343,8 @@ void WinEDA_App::InitEDA_Appl( const wxString& name ) { { } } SetLocaleTo_Default(); // Set locale option for separator used in float numbers /* Set locale option for separator used in float numbers */ SetLocaleTo_Default(); #ifdef KICAD_PYTHON #ifdef KICAD_PYTHON PyHandler::GetInstance()->SetAppName( name ); PyHandler::GetInstance()->SetAppName( name ); Loading @@ -280,18 +352,22 @@ void WinEDA_App::InitEDA_Appl( const wxString& name ) } } /*** * @brief Init online help * @return none ***/ /*****************************************/ /*****************************************/ void WinEDA_App::InitOnLineHelp() void WinEDA_App::InitOnLineHelp() /*****************************************/ /*****************************************/ /* Init On Line Help */ { { wxString fullfilename = FindKicadHelpPath(); wxString fullfilename = FindKicadHelpPath(); #if defined ONLINE_HELP_FILES_FORMAT_IS_HTML #if defined ONLINE_HELP_FILES_FORMAT_IS_HTML m_HelpFileName = fullfilename + wxT( ".html" ); m_HelpFileName = fullfilename + wxT( ".html" ); fullfilename += wxT( "kicad.hhp" ); fullfilename += wxT( "kicad.hhp" ); if( wxFileExists( fullfilename ) ) if( wxFileExists( fullfilename ) ) { { m_HtmlCtrl = new wxHtmlHelpController( wxHF_TOOLBAR | wxHF_CONTENTS | m_HtmlCtrl = new wxHtmlHelpController( wxHF_TOOLBAR | wxHF_CONTENTS | Loading @@ -301,47 +377,56 @@ void WinEDA_App::InitOnLineHelp() m_HtmlCtrl->SetTitleFormat( wxT( "Kicad Help" ) ); m_HtmlCtrl->SetTitleFormat( wxT( "Kicad Help" ) ); m_HtmlCtrl->AddBook( fullfilename ); m_HtmlCtrl->AddBook( fullfilename ); } } #elif defined ONLINE_HELP_FILES_FORMAT_IS_PDF #elif defined ONLINE_HELP_FILES_FORMAT_IS_PDF m_HtmlCtrl = NULL; m_HtmlCtrl = NULL; #else #else #error Help files format not defined #error Help files format not defined #endif #endif } } /*** * @brief Find the path to the executable and store it in WinEDA_App::m_BinDir * @return TODO ***/ /*******************************/ /*******************************/ bool WinEDA_App::SetBinDir() bool WinEDA_App::SetBinDir() /*******************************/ /*******************************/ // Find the path to the executable and store it in WinEDA_App::m_BinDir { { /* Apple MacOSx */ #ifdef __APPLE__ #ifdef __APPLE__ // Derive path from location of the app bundle /* Derive path from location of the app bundle */ CFBundleRef mainBundle = CFBundleGetMainBundle(); CFBundleRef mainBundle = CFBundleGetMainBundle(); if( mainBundle == NULL ) if( mainBundle == NULL ) return false; return false; CFURLRef urlref = CFBundleCopyBundleURL( mainBundle ); CFURLRef urlref = CFBundleCopyBundleURL( mainBundle ); if( urlref == NULL ) if( urlref == NULL ) return false; return false; CFStringRef str = CFURLCopyFileSystemPath( urlref, kCFURLPOSIXPathStyle ); CFStringRef str = CFURLCopyFileSystemPath( urlref, kCFURLPOSIXPathStyle ); if( str == NULL ) if( str == NULL ) return false; return false; char* native_str = NULL; char* native_str = NULL; int len = CFStringGetMaximumSizeForEncoding( CFStringGetLength( str ), int len = CFStringGetMaximumSizeForEncoding( CFStringGetLength( str ), kCFStringEncodingUTF8 ) + 1; kCFStringEncodingUTF8 ) + 1; native_str = new char[len]; native_str = new char[len]; CFStringGetCString( str, native_str, len, kCFStringEncodingUTF8 ); CFStringGetCString( str, native_str, len, kCFStringEncodingUTF8 ); m_BinDir = CONV_FROM_UTF8( native_str ); m_BinDir = CONV_FROM_UTF8( native_str ); delete[] native_str; delete[] native_str; /* Linux and Unix */ #elif defined (__UNIX__) #elif defined (__UNIX__) // Under Linux, if argv[0] doesn't the complete path to the executable, // Under Linux, if argv[0] doesn't the complete path to the executable, // it's necessary to obtain it using "which <filename>". // it's necessary to obtain it using "which <filename>". FILE* ftmp; FILE* ftmp; #define TMP_FILE "/tmp/kicad.tmp" char Line[1024]; char Line[1024]; char FileName[1024]; char FileName[1024]; wxString str_arg0; wxString str_arg0; Loading @@ -353,6 +438,7 @@ bool WinEDA_App::SetBinDir() { { sprintf( FileName, "which %s > %s", CONV_TO_UTF8( str_arg0 ), TMP_FILE ); sprintf( FileName, "which %s > %s", CONV_TO_UTF8( str_arg0 ), TMP_FILE ); ii = system( FileName ); ii = system( FileName ); if( ( ftmp = fopen( TMP_FILE, "rt" ) ) != NULL ) if( ( ftmp = fopen( TMP_FILE, "rt" ) ) != NULL ) { { fgets( Line, 1000, ftmp ); fgets( Line, 1000, ftmp ); Loading @@ -363,9 +449,10 @@ bool WinEDA_App::SetBinDir() } } else else m_BinDir = argv[0]; m_BinDir = argv[0]; #else #else m_BinDir = argv[0]; m_BinDir = argv[0]; #endif #endif /* __UNIX__ */ m_BinDir.Replace( WIN_STRING_DIR_SEP, UNIX_STRING_DIR_SEP ); m_BinDir.Replace( WIN_STRING_DIR_SEP, UNIX_STRING_DIR_SEP ); while( m_BinDir.Last() != '/' ) while( m_BinDir.Last() != '/' ) Loading @@ -375,12 +462,14 @@ bool WinEDA_App::SetBinDir() } } /*** * @brief Get application settings * @return none ***/ /*********************************/ /*********************************/ void WinEDA_App::GetSettings() void WinEDA_App::GetSettings() /*********************************/ /*********************************/ /* Get the last setup used (fontes, files opened...) */ { { wxString Line, Ident; wxString Line, Ident; unsigned ii; unsigned ii; Loading @@ -399,7 +488,7 @@ void WinEDA_App::GetSettings() if( !m_EDA_Config ) if( !m_EDA_Config ) return; return; /* Last 10 project settings */ for( ii = 0; ii < 10; ii++ ) for( ii = 0; ii < 10; ii++ ) { { Ident = wxT( "LastProject" ); Ident = wxT( "LastProject" ); Loading @@ -411,6 +500,7 @@ void WinEDA_App::GetSettings() m_LastProject.Add( Line ); m_LastProject.Add( Line ); } } /* Set default font sizes */ g_StdFontPointSize = m_EDA_Config->Read( wxT( "SdtFontSize" ), g_StdFontPointSize = m_EDA_Config->Read( wxT( "SdtFontSize" ), FONT_DEFAULT_SIZE ); FONT_DEFAULT_SIZE ); g_MsgFontPointSize = m_EDA_Config->Read( wxT( "MsgFontSize" ), g_MsgFontPointSize = m_EDA_Config->Read( wxT( "MsgFontSize" ), Loading @@ -420,27 +510,35 @@ void WinEDA_App::GetSettings() g_FixedFontPointSize = m_EDA_Config->Read( wxT( "FixedFontSize" ), g_FixedFontPointSize = m_EDA_Config->Read( wxT( "FixedFontSize" ), FONT_DEFAULT_SIZE ); FONT_DEFAULT_SIZE ); /* Sdt font type */ Line = m_EDA_Config->Read( wxT( "SdtFontType" ), wxEmptyString ); Line = m_EDA_Config->Read( wxT( "SdtFontType" ), wxEmptyString ); if( !Line.IsEmpty() ) if( !Line.IsEmpty() ) g_StdFont->SetFaceName( Line ); g_StdFont->SetFaceName( Line ); /* Sdt font style */ ii = m_EDA_Config->Read( wxT( "SdtFontStyle" ), wxFONTFAMILY_ROMAN ); ii = m_EDA_Config->Read( wxT( "SdtFontStyle" ), wxFONTFAMILY_ROMAN ); g_StdFont->SetStyle( ii ); g_StdFont->SetStyle( ii ); /* Sdt font weight */ ii = m_EDA_Config->Read( wxT( "SdtFontWeight" ), wxNORMAL ); ii = m_EDA_Config->Read( wxT( "SdtFontWeight" ), wxNORMAL ); g_StdFont->SetWeight( ii ); g_StdFont->SetWeight( ii ); g_StdFont->SetPointSize( g_StdFontPointSize ); g_StdFont->SetPointSize( g_StdFontPointSize ); /* Msg font type */ Line = m_EDA_Config->Read( wxT( "MsgFontType" ), wxEmptyString ); Line = m_EDA_Config->Read( wxT( "MsgFontType" ), wxEmptyString ); if( !Line.IsEmpty() ) if( !Line.IsEmpty() ) g_MsgFont->SetFaceName( Line ); g_MsgFont->SetFaceName( Line ); /* Msg font style */ ii = m_EDA_Config->Read( wxT( "MsgFontStyle" ), wxFONTFAMILY_ROMAN ); ii = m_EDA_Config->Read( wxT( "MsgFontStyle" ), wxFONTFAMILY_ROMAN ); g_MsgFont->SetStyle( ii ); g_MsgFont->SetStyle( ii ); /* Msg font weight */ ii = m_EDA_Config->Read( wxT( "MsgFontWeight" ), wxNORMAL ); ii = m_EDA_Config->Read( wxT( "MsgFontWeight" ), wxNORMAL ); g_MsgFont->SetWeight( ii ); g_MsgFont->SetWeight( ii ); g_MsgFont->SetPointSize( g_MsgFontPointSize ); g_MsgFont->SetPointSize( g_MsgFontPointSize ); Line = m_EDA_Config->Read( wxT( "DialogFontType" ), wxEmptyString ); Line = m_EDA_Config->Read( wxT( "DialogFontType" ), wxEmptyString ); if( !Line.IsEmpty() ) if( !Line.IsEmpty() ) g_DialogFont->SetFaceName( Line ); g_DialogFont->SetFaceName( Line ); Loading @@ -464,58 +562,87 @@ void WinEDA_App::GetSettings() } } /*** * @brief Save application settings * @return none ***/ /**********************************/ /**********************************/ void WinEDA_App::SaveSettings() void WinEDA_App::SaveSettings() /**********************************/ /**********************************/ { { unsigned int ii; unsigned int i; if( m_EDA_Config == NULL ) if( m_EDA_Config == NULL ) return; return; m_EDA_Config->Write( wxT( "SdtFontSize" ), g_StdFontPointSize ); /* Sdt font settings */ m_EDA_Config->Write( wxT( "SdtFontType" ), g_StdFont->GetFaceName() ); m_EDA_Config->Write( wxT( "SdtFontSize" ), m_EDA_Config->Write( wxT( "SdtFontStyle" ), g_StdFont->GetStyle() ); g_StdFontPointSize ); m_EDA_Config->Write( wxT( "SdtFontWeight" ), g_StdFont->GetWeight() ); m_EDA_Config->Write( wxT( "SdtFontType" ), g_StdFont->GetFaceName() ); m_EDA_Config->Write( wxT( "MsgFontSize" ), g_MsgFontPointSize ); m_EDA_Config->Write( wxT( "SdtFontStyle" ), m_EDA_Config->Write( wxT( "MsgFontType" ), g_MsgFont->GetFaceName() ); g_StdFont->GetStyle() ); m_EDA_Config->Write( wxT( "MsgFontStyle" ), g_MsgFont->GetStyle() ); m_EDA_Config->Write( wxT( "SdtFontWeight" ), m_EDA_Config->Write( wxT( "MsgFontWeight" ), g_MsgFont->GetWeight() ); g_StdFont->GetWeight() ); m_EDA_Config->Write( wxT( "DialogFontSize" ), g_DialogFontPointSize ); /* Msg font settings */ m_EDA_Config->Write( wxT( "DialogFontType" ), g_DialogFont->GetFaceName() ); m_EDA_Config->Write( wxT( "MsgFontSize" ), m_EDA_Config->Write( wxT( "DialogFontStyle" ), g_DialogFont->GetStyle() ); g_MsgFontPointSize ); m_EDA_Config->Write( wxT( "DialogFontWeight" ), g_DialogFont->GetWeight() ); m_EDA_Config->Write( wxT( "MsgFontType" ), g_MsgFont->GetFaceName() ); m_EDA_Config->Write( wxT( "FixedFontSize" ), g_FixedFontPointSize ); m_EDA_Config->Write( wxT( "MsgFontStyle" ), g_MsgFont->GetStyle() ); m_EDA_Config->Write( wxT( "ShowPageLimits" ), g_ShowPageLimits ); m_EDA_Config->Write( wxT( "MsgFontWeight" ), g_MsgFont->GetWeight() ); m_EDA_Config->Write( wxT( "WorkingDir" ), wxGetCwd() ); /* Dialog font settings */ for( ii = 0; ii < 10; ii++ ) m_EDA_Config->Write( wxT( "DialogFontSize" ), g_DialogFontPointSize ); m_EDA_Config->Write( wxT( "DialogFontType" ), g_DialogFont->GetFaceName() ); m_EDA_Config->Write( wxT( "DialogFontStyle" ), g_DialogFont->GetStyle() ); m_EDA_Config->Write( wxT( "DialogFontWeight" ), g_DialogFont->GetWeight() ); /* Misc settings */ m_EDA_Config->Write( wxT( "FixedFontSize" ), g_FixedFontPointSize ); m_EDA_Config->Write( wxT( "ShowPageLimits" ), g_ShowPageLimits ); m_EDA_Config->Write( wxT( "WorkingDir" ), wxGetCwd() ); /* Save last 10 project list */ for( i = 0; i < 10; i++ ) { { wxString msg = wxT( "LastProject" ); wxString msg = wxT( "LastProject" ); if( ii ) if( i ) msg << ii; msg << i; if( ii < m_LastProject.GetCount() ) if( i < m_LastProject.GetCount() ) m_EDA_Config->Write( msg, m_LastProject[ii] ); m_EDA_Config->Write( msg, m_LastProject[i] ); else else m_EDA_Config->Write( msg, wxEmptyString ); m_EDA_Config->Write( msg, wxEmptyString ); } } } } /*********************************************/ /*** bool WinEDA_App::SetLanguage( bool first_time ) * @brief Set the dictionary file name for internationalization /*********************************************/ /* Set the dictionary file name for internationalization * the files are in kicad/internat/xx or kicad/internat/xx_XX * the files are in kicad/internat/xx or kicad/internat/xx_XX * and are named kicad.mo * and are named kicad.mo */ * * @param first_time TODO * @return TODO ***/ /*********************************************/ bool WinEDA_App::SetLanguage( bool first_time ) /*********************************************/ { { wxString DictionaryName( wxT( "kicad" ) ); // dictionary file name without extend (full name is kicad.mo) wxString DictionaryName( wxT( "kicad" ) ); // dictionary file name without extend (full name is kicad.mo) wxString BaseDictionaryPath( wxT( "internat" ) ); // Real path is kicad/internat/xx_XX or kicad/internat/xx wxString BaseDictionaryPath( wxT( "internat" ) ); // Real path is kicad/internat/xx_XX or kicad/internat/xx Loading @@ -542,23 +669,27 @@ bool WinEDA_App::SetLanguage( bool first_time ) m_Locale->AddCatalog( DictionaryName ); m_Locale->AddCatalog( DictionaryName ); SetLanguageList( NULL ); SetLanguageList( NULL ); return m_Locale->IsOk(); return m_Locale->IsOk(); } } /**************************************************/ void WinEDA_App::SetLanguageIdentifier( int menu_id ) /**************************************************/ /* return in m_LanguageId the wxWidgets language identifier Id /*** * @brief Return in m_LanguageId the wxWidgets language identifier Id * from the kicad menu id (internal menu identifier) * from the kicad menu id (internal menu identifier) */ * @param menu_id TODO * @return none ***/ /**************************************************/ void WinEDA_App::SetLanguageIdentifier( int menu_id ) /**************************************************/ { { unsigned int ii; unsigned int ii; wxLogDebug( wxT( "Select language ID %d from %d possible languages." ), wxLogDebug( wxT( "Select language ID %d from %d possible languages." ), menu_id, LANGUAGE_DESCR_COUNT ); menu_id, LANGUAGE_DESCR_COUNT ); for( ii = 0; ii < LANGUAGE_DESCR_COUNT; ii++ ) for( ii = 0; ii < LANGUAGE_DESCR_COUNT; ii++ ) { { Loading @@ -571,12 +702,16 @@ void WinEDA_App::SetLanguageIdentifier( int menu_id ) } } /*** * @brief Create menu list for language choice. * @param MasterMenu TODO * @return TODO ***/ /*********************************************************/ /*********************************************************/ wxMenu* WinEDA_App::SetLanguageList( wxMenu* MasterMenu ) wxMenu* WinEDA_App::SetLanguageList( wxMenu* MasterMenu ) /*********************************************************/ /*********************************************************/ /* Create menu list for language choice. */ { { wxMenuItem* item; wxMenuItem* item; unsigned int ii; unsigned int ii; Loading @@ -589,8 +724,10 @@ wxMenu* WinEDA_App::SetLanguageList( wxMenu* MasterMenu ) wxString MenuLabel = s_Language_List[ii].m_DoNotTranslate ? wxString MenuLabel = s_Language_List[ii].m_DoNotTranslate ? s_Language_List[ii].m_Lang_Label : s_Language_List[ii].m_Lang_Label : wxGetTranslation( 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, item = new wxMenuItem( m_Language_Menu, s_Language_List[ii].m_KI_Lang_Identifier, MenuLabel, wxEmptyString, wxITEM_CHECK ); MenuLabel, wxEmptyString, wxITEM_CHECK ); SETBITMAPS( s_Language_List[ii].m_Lang_Icon ); SETBITMAPS( s_Language_List[ii].m_Lang_Icon ); m_Language_Menu->Append( item ); m_Language_Menu->Append( item ); } } Loading @@ -599,17 +736,17 @@ wxMenu* WinEDA_App::SetLanguageList( wxMenu* MasterMenu ) for( ii = 0; ii < LANGUAGE_DESCR_COUNT; ii++ ) for( ii = 0; ii < LANGUAGE_DESCR_COUNT; ii++ ) { { if( m_LanguageId == s_Language_List[ii].m_WX_Lang_Identifier ) if( m_LanguageId == s_Language_List[ii].m_WX_Lang_Identifier ) m_Language_Menu->Check( s_Language_List[ii].m_KI_Lang_Identifier, m_Language_Menu->Check( s_Language_List[ii].m_KI_Lang_Identifier, true ); true ); else else m_Language_Menu->Check( s_Language_List[ii].m_KI_Lang_Identifier, m_Language_Menu->Check( s_Language_List[ii].m_KI_Lang_Identifier, false ); false ); } } if( MasterMenu ) if( MasterMenu ) { { ADD_MENUITEM_WITH_HELP_AND_SUBMENU( MasterMenu, m_Language_Menu, ADD_MENUITEM_WITH_HELP_AND_SUBMENU( MasterMenu, ID_LANGUAGE_CHOICE, _( "Language" ), m_Language_Menu, ID_LANGUAGE_CHOICE, _( "Language" ), _( "Select application language (only for testing!)" ), _( "Select application language (only for testing!)" ), language_xpm ); language_xpm ); } } Loading @@ -617,15 +754,18 @@ wxMenu* WinEDA_App::SetLanguageList( wxMenu* MasterMenu ) } } /*** * @brief Run init scripts * @return TODO ***/ /**********************/ /**********************/ int WinEDA_App::OnRun() int WinEDA_App::OnRun() /**********************/ /**********************/ /* Run init scripts */ { { # ifdef KICAD_PYTHON # ifdef KICAD_PYTHON PyHandler::GetInstance()->RunScripts(); PyHandler::GetInstance()->RunScripts(); # endif # endif return wxApp::OnRun(); return wxApp::OnRun(); } }