void ReadHotkeyConfig( const wxString& Appname, struct EDA_HOTKEY_CONFIG* aDescList ) { wxFileName fn( Appname ); fn.SetExt( DEFAULT_HOTKEY_FILENAME_EXT ); wxConfigBase* config = GetNewConfig( fn.GetFullPath() ); if( !config->HasEntry( HOTKEYS_CONFIG_KEY ) ) { // assume defaults are ok return; } wxString data; config->Read( HOTKEYS_CONFIG_KEY, &data ); delete config; ParseHotkeyConfig( data, aDescList ); }
void BIN_MOD::Init() { // do an OS specific wxConfig instantiation, using the bin_mod (EXE/DLL/DSO) name. m_config = GetNewConfig( wxString::FromUTF8( m_name ) ); // wxWidgets' implementation of this is *very* expensive, and we don't use them anyway. m_config->SetExpandEnvVars( false ); // get file history size from common settings int fileHistorySize; Pgm().CommonSettings()->Read( FILE_HISTORY_SIZE_KEY, &fileHistorySize, DEFAULT_FILE_HISTORY_SIZE ); m_history = new FILE_HISTORY( (unsigned) std::max( 0, fileHistorySize ), ID_FILE1 ); m_history->Load( *m_config.get() ); // Prepare On Line Help. Use only lower case for help file names, in order to // avoid problems with upper/lower case file names under windows and unix. // Help files are now using html format. // Old help files used pdf format. // so when searching a help file, the .html file will be searched, // and if not found, the .pdf file will be searched. m_help_file = wxString::FromUTF8( m_name ); // no ext given. can be .html or .pdf }
int EDA_BASE_FRAME::WriteHotkeyConfig( struct EDA_HOTKEY_CONFIG* aDescList, wxString* aFullFileName ) { wxString msg; wxString keyname, infokey; msg = wxT( "$hotkey list\n" ); // Print the current hotkey list EDA_HOTKEY** list; for( ; aDescList->m_HK_InfoList != NULL; aDescList++ ) { if( aDescList->m_Title ) { msg += wxT( "# " ); msg += *aDescList->m_Title; msg += wxT( "\n" ); } msg += *aDescList->m_SectionTag; msg += wxT( "\n" ); list = aDescList->m_HK_InfoList; for( ; *list != NULL; list++ ) { EDA_HOTKEY* hk_decr = *list; msg += wxT( "shortcut " ); keyname = KeyNameFromKeyCode( hk_decr->m_KeyCode ); AddDelimiterString( keyname ); infokey = hk_decr->m_InfoMsg; AddDelimiterString( infokey ); msg += keyname + wxT( ": " ) + infokey + wxT( "\n" ); } } msg += wxT( "$Endlist\n" ); if( aFullFileName ) { FILE* file = wxFopen( *aFullFileName, wxT( "wt" ) ); if( file ) { fputs( TO_UTF8( msg ), file ); fclose( file ); } else { msg.Printf( wxT( "Unable to write file %s" ), GetChars( *aFullFileName ) ); return 0; } } else { wxFileName fn( GetName() ); fn.SetExt( DEFAULT_HOTKEY_FILENAME_EXT ); wxConfigBase* config = GetNewConfig( fn.GetFullPath() ); config->Write( HOTKEYS_CONFIG_KEY, msg ); delete config; } return 1; }
bool PGM_BASE::initPgm() { wxFileName pgm_name( App().argv[0] ); wxConfigBase::DontCreateOnDemand(); wxInitAllImageHandlers(); m_pgm_checker = new wxSingleInstanceChecker( pgm_name.GetName().Lower() + wxT( "-" ) + wxGetUserId(), GetKicadLockFilePath() ); if( m_pgm_checker->IsAnotherRunning() ) { wxString quiz = wxString::Format( _( "%s is already running, Continue?" ), GetChars( pgm_name.GetName() ) ); if( !IsOK( NULL, quiz ) ) return false; } // Init KiCad environment // the environment variable KICAD (if exists) gives the kicad path: // something like set KICAD=d:\kicad bool isDefined = wxGetEnv( wxT( "KICAD" ), &m_kicad_env ); if( isDefined ) // ensure m_kicad_env ends by "/" { m_kicad_env.Replace( WIN_STRING_DIR_SEP, UNIX_STRING_DIR_SEP ); if( !m_kicad_env.IsEmpty() && m_kicad_env.Last() != '/' ) m_kicad_env += UNIX_STRING_DIR_SEP; } // Init parameters for configuration App().SetVendorName( wxT( "KiCad" ) ); App().SetAppName( pgm_name.GetName().Lower() ); // Install some image handlers, mainly for help if( wxImage::FindHandler( wxBITMAP_TYPE_PNG ) == NULL ) wxImage::AddHandler( new wxPNGHandler ); if( wxImage::FindHandler( wxBITMAP_TYPE_GIF ) == NULL ) wxImage::AddHandler( new wxGIFHandler ); if( wxImage::FindHandler( wxBITMAP_TYPE_JPEG ) == NULL ) wxImage::AddHandler( new wxJPEGHandler ); wxFileSystem::AddHandler( new wxZipFSHandler ); // Analyze the command line & initialize the binary path setExecutablePath(); SetLanguagePath(); // OS specific instantiation of wxConfigBase derivative: m_common_settings = GetNewConfig( KICAD_COMMON ); // Only define the default environment variable if they haven't been set in the // .kicad_common configuration file. if( m_common_settings && !m_common_settings->HasGroup( pathEnvVariables ) ) { wxString envVarName = wxT( "KIGITHUB" ); ENV_VAR_ITEM envVarItem; wxString envValue; wxFileName tmpFileName; envVarItem.SetValue( wxString( wxT( "https://github.com/KiCad" ) ) ); envVarItem.SetDefinedExternally( wxGetEnv( envVarName, NULL ) ); m_local_env_vars[ envVarName ] = envVarItem; wxFileName baseSharePath; baseSharePath.AssignDir( wxString( wxT( DEFAULT_INSTALL_PATH ) ) ); #if !defined( __WXMAC__ ) baseSharePath.AppendDir( wxT( "share" ) ); baseSharePath.AppendDir( wxT( "kicad" ) ); #endif // KISYSMOD envVarName = wxT( "KISYSMOD" ); if( wxGetEnv( envVarName, &envValue ) == true && !envValue.IsEmpty() ) { tmpFileName.AssignDir( envValue ); envVarItem.SetDefinedExternally( true ); } else { tmpFileName = baseSharePath; tmpFileName.AppendDir( wxT( "modules" ) ); envVarItem.SetDefinedExternally( false ); } envVarItem.SetValue( tmpFileName.GetFullPath() ); m_local_env_vars[ envVarName ] = envVarItem; // KISYS3DMOD envVarName = wxT( "KISYS3DMOD" ); if( wxGetEnv( envVarName, &envValue ) == true && !envValue.IsEmpty() ) { tmpFileName.AssignDir( envValue ); envVarItem.SetDefinedExternally( true ); } else { tmpFileName.AppendDir( wxT( "packages3d" ) ); envVarItem.SetDefinedExternally( false ); } envVarItem.SetValue( tmpFileName.GetFullPath() ); m_local_env_vars[ envVarName ] = envVarItem; // KICAD_PTEMPLATES envVarName = wxT( "KICAD_PTEMPLATES" ); if( wxGetEnv( envVarName, &envValue ) == true && !envValue.IsEmpty() ) { tmpFileName.AssignDir( envValue ); envVarItem.SetDefinedExternally( true ); } else { tmpFileName = baseSharePath; tmpFileName.AppendDir( wxT( "template" ) ); envVarItem.SetDefinedExternally( false ); } envVarItem.SetValue( tmpFileName.GetFullPath() ); m_local_env_vars[ envVarName ] = envVarItem; } ReadPdfBrowserInfos(); // needs m_common_settings // Init user language *before* calling loadCommonSettings, because // env vars could be incorrectly initialized on Linux // (if the value contains some non ASCII7 chars, the env var is not initialized) SetLanguage( true ); loadCommonSettings(); // Set locale option for separator used in float numbers SetLocaleTo_Default(); #ifdef __WXMAC__ // Always show filters on Open dialog to be able to choose plugin wxSystemOptions::SetOption( wxOSX_FILEDIALOG_ALWAYS_SHOW_TYPES, 1 ); #endif return true; }
PCB_CALCULATOR_FRAME::PCB_CALCULATOR_FRAME( KIWAY* aKiway, wxWindow* aParent ) : PCB_CALCULATOR_FRAME_BASE( aParent ) { SetKiway( this, aKiway ); m_currTransLine = NULL; m_currTransLineType = DEFAULT_TYPE; m_currAttenuator = NULL; m_RegulatorListChanged = false; m_Config = GetNewConfig( Pgm().App().GetAppName() ); // Populate transline list ordered like in dialog menu list const static TRANSLINE_TYPE_ID tltype_list[8] = { MICROSTRIP_TYPE, CPW_TYPE, GROUNDED_CPW_TYPE, RECTWAVEGUIDE_TYPE, COAX_TYPE, C_MICROSTRIP_TYPE, STRIPLINE_TYPE, TWISTEDPAIR_TYPE }; for( int ii = 0; ii < 8; ii++ ) m_transline_list.push_back( new TRANSLINE_IDENT( tltype_list[ii] ) ); // Populate attenuator list ordered like in dialog menu list m_attenuator_list.push_back( new ATTENUATOR_PI() ); m_attenuator_list.push_back( new ATTENUATOR_TEE() ); m_attenuator_list.push_back( new ATTENUATOR_BRIDGE() ); m_attenuator_list.push_back( new ATTENUATOR_SPLITTER() ); m_currAttenuator = m_attenuator_list[0]; ReadConfig(); ReadDataFile(); TranslineTypeSelection( m_currTransLineType ); m_TranslineSelection->SetSelection( m_currTransLineType ); TW_Init(); SetAttenuator( m_AttenuatorsSelection->GetSelection() ); ToleranceSelection( m_rbToleranceSelection->GetSelection() ); BoardClassesUpdateData( m_BoardClassesUnitsSelector->GetUnitScale() ); ElectricalSpacingUpdateData( m_ElectricalSpacingUnitsSelector->GetUnitScale() ); m_choiceRegulatorSelector->Append( m_RegulatorList.GetRegList() ); SelectLastSelectedRegulator(); // Give an icon wxIcon icon; icon.CopyFromBitmap( KiBitmap( icon_pcbcalculator_xpm ) ); SetIcon( icon ); GetSizer()->SetSizeHints( this ); // Set previous size and position SetSize( m_FramePos.x, m_FramePos.y, m_FrameSize.x, m_FrameSize.y ); if( m_FramePos == wxDefaultPosition ) Centre(); }