/******************************************************/ /** eeconfig.cpp : routines et menus de configuration */ /*******************************************************/ #include "fctsys.h" #include "common.h" #include "program.h" #include "libcmp.h" #include "general.h" #include "protos.h" #include "eeconfig.h" #include "worksheet.h" #include "hotkeys_basic.h" #include "hotkeys.h" #include "id.h" /* Variables locales */ #define HOTKEY_FILENAME wxT( "eeschema" ) /*********************************************************************/ void WinEDA_SchematicFrame::Process_Config( wxCommandEvent& event ) /*********************************************************************/ { int id = event.GetId(); wxPoint pos; wxString FullFileName; wxGetMousePosition( &pos.x, &pos.y ); pos.y += 5; switch( id ) { case ID_COLORS_SETUP: DisplayColorSetupFrame( this, pos ); break; case ID_CONFIG_REQ: // Creation de la fenetre de configuration InstallConfigFrame( pos ); break; case ID_OPTIONS_SETUP: DisplayOptionFrame( this, pos ); DrawPanel->Refresh(TRUE); // Redraw, because grid settings may have changed. break; case ID_CONFIG_SAVE: Save_Config( this ); break; case ID_CONFIG_READ: { wxString mask( wxT( "*" ) ); mask += g_Prj_Config_Filename_ext; FullFileName = g_RootSheet->m_AssociatedScreen->m_FileName; ChangeFileNameExt( FullFileName, g_Prj_Config_Filename_ext ); FullFileName = EDA_FileSelector( _( "Read config file" ), wxGetCwd(), /* Chemin par defaut */ FullFileName, /* nom fichier par defaut */ g_Prj_Config_Filename_ext, /* extension par defaut */ mask, /* Masque d'affichage */ this, wxFD_OPEN, TRUE /* ne change pas de repertoire courant */ ); if( FullFileName.IsEmpty() ) break; if( !wxFileExists( FullFileName ) ) { wxString msg = _( "File " ) + FullFileName + _( "not found" );; DisplayError( this, msg ); break; } Read_Config( FullFileName, TRUE ); } break; case ID_PREFERENCES_CREATE_CONFIG_HOTKEYS: FullFileName = ReturnHotkeyConfigFilePath( g_ConfigFileLocationChoice ); FullFileName += HOTKEY_FILENAME; FullFileName += DEFAULT_HOTKEY_FILENAME_EXT; WriteHotkeyConfigFile( FullFileName, s_Eeschema_Hokeys_Descr, true ); break; case ID_PREFERENCES_READ_CONFIG_HOTKEYS: Read_Hotkey_Config( this, true ); break; case ID_PREFERENCES_EDIT_CONFIG_HOTKEYS: { FullFileName = ReturnHotkeyConfigFilePath( g_ConfigFileLocationChoice ); FullFileName += HOTKEY_FILENAME; FullFileName += DEFAULT_HOTKEY_FILENAME_EXT; wxString editorname = GetEditorName(); if( !editorname.IsEmpty() ) ExecuteFile( this, editorname, FullFileName ); } break; case ID_PREFERENCES_HOTKEY_PATH_IS_HOME: case ID_PREFERENCES_HOTKEY_PATH_IS_KICAD: HandleHotkeyConfigMenuSelection( this, id ); break; case ID_PREFERENCES_HOTKEY_SHOW_CURRENT_LIST: // Display Current hotkey list for eeschema DisplayHotkeyList( this, s_Schematic_Hokeys_Descr ); break; default: DisplayError( this, wxT( "WinEDA_SchematicFrame::Process_Config internal error" ) ); } } /***************************************************************/ bool Read_Hotkey_Config( WinEDA_DrawFrame* frame, bool verbose ) /***************************************************************/ /* * Read the hotkey files config for eeschema and libedit */ { wxString FullFileName = ReturnHotkeyConfigFilePath( g_ConfigFileLocationChoice ); FullFileName += HOTKEY_FILENAME; FullFileName += DEFAULT_HOTKEY_FILENAME_EXT; frame->ReadHotkeyConfigFile( FullFileName, s_Eeschema_Hokeys_Descr, verbose ); return TRUE; } /***********************************************************************/ bool Read_Config( const wxString& CfgFileName, bool ForceRereadConfig ) /***********************************************************************/ /* lit la configuration, si elle n'a pas deja ete lue * 1 - lit .pro * 2 - si non trouve lit ../template/kicad.pro * 3 - si non trouve: init des variables aux valeurs par defaut * * Retourne TRUE si lu, FALSE si config non lue */ { wxString FullFileName; bool IsRead = TRUE; wxArrayString liblist_tmp = g_LibName_List; if( CfgFileName.IsEmpty() ) FullFileName = g_RootSheet->m_AssociatedScreen->m_FileName; else FullFileName = CfgFileName; g_LibName_List.Clear(); if( !g_EDA_Appl->ReadProjectConfig( FullFileName, GROUP, ParamCfgList, ForceRereadConfig ? FALSE : TRUE ) ) // Config non lue { g_LibName_List = liblist_tmp; IsRead = FALSE; } /* Traitement des variables particulieres: */ SetRealLibraryPath( wxT( "library" ) ); // If the list is void, load the libraries "power.lib" and "device.lib" if( g_LibName_List.GetCount() == 0 ) { g_LibName_List.Add( wxT( "power" ) ); g_LibName_List.Add( wxT( "device" ) ); } if( g_EDA_Appl->m_SchematicFrame ) { g_EDA_Appl->m_SchematicFrame->SetDrawBgColor( g_DrawBgColor ); g_EDA_Appl->m_SchematicFrame->m_Draw_Grid = g_ShowGrid; } LoadLibraries( g_EDA_Appl->m_SchematicFrame ); return IsRead; } /****************************************************************/ void WinEDA_SchematicFrame::Save_Config( wxWindow* displayframe ) /***************************************************************/ { wxString path; wxString FullFileName; wxString mask( wxT( "*" ) ); mask += g_Prj_Config_Filename_ext; FullFileName = g_RootSheet->m_AssociatedScreen->m_FileName.AfterLast( '/' ) /*ConfigFileName*/; ChangeFileNameExt( FullFileName, g_Prj_Config_Filename_ext ); path = wxGetCwd(); FullFileName = EDA_FileSelector( _( "Save preferences" ), path, /* Chemin par defaut */ FullFileName, /* nom fichier par defaut */ g_Prj_Config_Filename_ext, /* extension par defaut */ mask, /* Masque d'affichage */ displayframe, wxFD_SAVE, TRUE ); if( FullFileName.IsEmpty() ) return; /* ecriture de la configuration */ g_EDA_Appl->WriteProjectConfig( FullFileName, GROUP, ParamCfgList ); }