bool SCH_EDIT_FRAME::LoadProjectFile() { // Read library list and library path list bool ret = Prj().ConfigLoad( Kiface().KifaceSearch(), GROUP_SCH, GetProjectFileParameters() ); // Read schematic editor setup ret &= Prj().ConfigLoad( Kiface().KifaceSearch(), GROUP_SCH_EDIT, GetProjectFileParameters() ); // Verify some values, because the config file can be edited by hand, // and have bad values: LIB_PART::SetSubpartIdNotation( LIB_PART::GetSubpartIdSeparator(), LIB_PART::GetSubpartFirstId() ); // Load the page layout decr file, from the filename stored in // BASE_SCREEN::m_PageLayoutDescrFileName, read in config project file // If empty, or not existing, the default descr is loaded WORKSHEET_LAYOUT& pglayout = WORKSHEET_LAYOUT::GetTheInstance(); wxString pg_fullfilename = WORKSHEET_LAYOUT::MakeFullFileName( BASE_SCREEN::m_PageLayoutDescrFileName, Prj().GetProjectPath() ); pglayout.SetPageLayout( pg_fullfilename ); return ret; }
void CVPCB_MAINFRAME::LoadProjectFile( const wxString& aFileName ) { wxFileName fn( aFileName ); PROJECT& prj = Prj(); m_ModuleLibNames.Clear(); m_AliasLibNames.Clear(); fn.SetExt( ProjectFileExtension ); // was: Pgm().ReadProjectConfig( fn.GetFullPath(), GROUP, GetProjectFileParameters(), false ); prj.ConfigLoad( prj.PcbSearchS(), fn.GetFullPath(), GROUP, GetProjectFileParameters(), false ); if( m_NetlistFileExtension.IsEmpty() ) m_NetlistFileExtension = wxT( "net" ); // empty the table, Load() it again below. FootprintLibs()->Clear(); /* this is done by ConfigLoad(), and that sets the env var too. prj.SetProjectFullName( fn.GetFullPath() ); */ wxString projectFpLibTableFileName = prj.FootprintLibTblName(); try { FootprintLibs()->Load( projectFpLibTableFileName ); } catch( const IO_ERROR& ioe ) { DisplayError( this, ioe.errorText ); } }
void CVPCB_MAINFRAME::SaveProjectFile( wxCommandEvent& aEvent ) { wxFileName fn = m_NetlistFileName; fn.SetExt( ProjectFileExtension ); if( aEvent.GetId() == ID_SAVE_PROJECT_AS || !m_NetlistFileName.IsOk() ) { wxFileDialog dlg( this, _( "Save Project File" ), fn.GetPath(), wxEmptyString, ProjectFileWildcard, wxFD_SAVE ); if( dlg.ShowModal() == wxID_CANCEL ) return; fn = dlg.GetPath(); if( !fn.HasExt() ) fn.SetExt( ProjectFileExtension ); } if( !IsWritable( fn ) ) return; // was: // Pgm().WriteProjectConfig( fn.GetFullPath(), GROUP, GetProjectFileParameters() ); PROJECT& prj = Prj(); SEARCH_STACK& search = prj.SchSearchS(); prj.ConfigSave( search, fn.GetFullPath(), GROUP, GetProjectFileParameters() ); }
void SCH_EDIT_FRAME::SaveProjectSettings( bool aAskForSave ) { PROJECT& prj = Prj(); wxFileName fn = g_RootSheet->GetScreen()->GetFileName(); //ConfigFileName fn.SetExt( ProjectFileExtension ); if( !IsWritable( fn ) ) return; if( aAskForSave ) { wxFileDialog dlg( this, _( "Save Project File" ), fn.GetPath(), fn.GetFullName(), ProjectFileWildcard(), wxFD_SAVE ); if( dlg.ShowModal() == wxID_CANCEL ) return; fn = dlg.GetPath(); } wxString path = fn.GetFullPath(); prj.ConfigSave( Kiface().KifaceSearch(), GROUP_SCH_EDIT, GetProjectFileParameters(), path ); }
void PCB_EDIT_FRAME::InstallNetlistFrame( wxDC* DC ) { /* Setup the netlist file name to the last net list file read or the board file * name if no last file read is not set. */ wxFileName fn = GetLastNetListRead(); wxString lastNetlistName = GetLastNetListRead(); if( !fn.FileExists() ) { fn = GetScreen()->GetFileName(); fn.SetExt( NetlistFileExtension ); lastNetlistName = fn.GetFullPath(); } DIALOG_NETLIST frame( this, DC, lastNetlistName ); frame.ShowModal(); // Save project settings if needed. // Project settings are saved in the corresponding <board name>.pro file if( lastNetlistName != GetLastNetListRead() && !GetScreen()->GetFileName().IsEmpty() && IsOK(NULL, _("Project config has changed. Save it ?") ) ) { wxFileName fn = GetScreen()->GetFileName(); fn.SetExt( ProjectFileExtension ); wxGetApp().WriteProjectConfig( fn.GetFullPath(), GROUP, GetProjectFileParameters() ); } }
void SCH_EDIT_FRAME::Process_Config( wxCommandEvent& event ) { int id = event.GetId(); wxFileName fn; switch( id ) { case ID_CONFIG_SAVE: SaveProjectSettings( true ); break; case ID_CONFIG_READ: { fn = g_RootSheet->GetScreen()->GetFileName(); fn.SetExt( ProjectFileExtension ); wxFileDialog dlg( this, _( "Load Project File" ), fn.GetPath(), fn.GetFullName(), ProjectFileWildcard(), wxFD_OPEN | wxFD_FILE_MUST_EXIST ); if( dlg.ShowModal() == wxID_CANCEL ) break; wxString chosen = dlg.GetPath(); if( chosen == Prj().GetProjectFullName() ) LoadProjectFile(); else { // Read library list and library path list Prj().ConfigLoad( Kiface().KifaceSearch(), GROUP_SCH, GetProjectFileParameters() ); // Read schematic editor setup Prj().ConfigLoad( Kiface().KifaceSearch(), GROUP_SCH_EDIT, GetProjectFileParameters() ); } } break; case ID_PREFERENCES_HOTKEY_SHOW_CURRENT_LIST: // Display current hotkey list for eeschema. DisplayHotkeyList( this, g_Schematic_Hotkeys_Descr ); break; default: DisplayError( this, wxT( "SCH_EDIT_FRAME::Process_Config error" ) ); } }
bool PCB_EDIT_FRAME::LoadProjectSettings( const wxString& aProjectFileName ) { wxLogDebug( wxT( "Loading project '%s' settings." ), GetChars( aProjectFileName ) ); wxFileName fn = aProjectFileName; if( fn.GetExt() != ProjectFileExtension ) fn.SetExt( ProjectFileExtension ); // was: wxGetApp().ReadProjectConfig( fn.GetFullPath(), GROUP, GetProjectFileParameters(), false ); Prj().ConfigLoad( Kiface().KifaceSearch(), fn.GetFullPath(), GROUP, GetProjectFileParameters(), false ); // Dick 5-Feb-2012: I don't agree with this, the BOARD contents should dictate // what is visible or not, even initially. And since PCB_EDIT_FRAME projects settings // have no control over what is visible (see PCB_EDIT_FRAME::GetProjectFileParameters()) // this is recklessly turning on things the user may not want to see. #if 0 /* Reset the items visibility flag when loading a new configuration because it could * create SERIOUS mistakes for the user if board items are not visible after loading * a board. Grid and ratsnest can be left to their previous state. */ bool showGrid = IsElementVisible( GRID_VISIBLE ); bool showRats = IsElementVisible( RATSNEST_VISIBLE ); SetVisibleAlls(); SetElementVisibility( GRID_VISIBLE, showGrid ); SetElementVisibility( RATSNEST_VISIBLE, showRats ); #endif wxString projectFpLibTableFileName = Prj().FootprintLibTblName(); FootprintLibs()->Clear(); try { FootprintLibs()->Load( projectFpLibTableFileName ); } catch( const IO_ERROR& ioe ) { DisplayError( this, ioe.errorText ); } // Load the page layout decr file, from the filename stored in // BASE_SCREEN::m_PageLayoutDescrFileName, read in config project file // If empty, the default descr is loaded WORKSHEET_LAYOUT& pglayout = WORKSHEET_LAYOUT::GetTheInstance(); pglayout.SetPageLayout( BASE_SCREEN::m_PageLayoutDescrFileName ); return true; }
void PCB_EDIT_FRAME::SaveProjectSettings() { wxFileName fn; fn = GetScreen()->GetFileName(); fn.SetExt( ProjectFileExtension ); wxFileDialog dlg( this, _( "Save Project File" ), fn.GetPath(), fn.GetFullName(), ProjectFileWildcard, wxFD_SAVE | wxFD_CHANGE_DIR ); if( dlg.ShowModal() == wxID_CANCEL ) return; wxGetApp().WriteProjectConfig( dlg.GetPath(), GROUP, GetProjectFileParameters() ); }
bool PCB_EDIT_FRAME::LoadProjectSettings() { wxLogDebug( wxT( "Loading project '%s' settings." ), GetChars( Prj().GetProjectFullName() ) ); bool rc = Prj().ConfigLoad( Kiface().KifaceSearch(), GROUP_PCB, GetProjectFileParameters() ); // Load the page layout decr file, from the filename stored in // BASE_SCREEN::m_PageLayoutDescrFileName, read in config project file // If empty, or not existing, the default descr is loaded WORKSHEET_LAYOUT& pglayout = WORKSHEET_LAYOUT::GetTheInstance(); wxString pg_fullfilename = WORKSHEET_LAYOUT::MakeFullFileName( BASE_SCREEN::m_PageLayoutDescrFileName, Prj().GetProjectPath() ); pglayout.SetPageLayout( pg_fullfilename ); return rc; }
void PCB_EDIT_FRAME::SaveProjectSettings( bool aAskForSave ) { wxFileName fn = Prj().GetProjectFullName(); if( aAskForSave ) { wxFileDialog dlg( this, _( "Save Project File" ), fn.GetPath(), fn.GetFullName(), ProjectFileWildcard, wxFD_SAVE | wxFD_CHANGE_DIR ); if( dlg.ShowModal() == wxID_CANCEL ) return; fn = dlg.GetPath(); } wxString pro_name = fn.GetFullPath(); Prj().ConfigSave( Kiface().KifaceSearch(), GROUP_PCB, GetProjectFileParameters(), pro_name ); }
void PCB_EDIT_FRAME::SaveProjectSettings( bool aAskForSave ) { wxFileName fn; fn = GetBoard()->GetFileName(); fn.SetExt( ProjectFileExtension ); if( aAskForSave ) { wxFileDialog dlg( this, _( "Save Project File" ), fn.GetPath(), fn.GetFullName(), ProjectFileWildcard, wxFD_SAVE | wxFD_CHANGE_DIR ); if( dlg.ShowModal() == wxID_CANCEL ) return; fn = dlg.GetPath(); } Prj().ConfigSave( Kiface().KifaceSearch(), fn.GetFullPath(), GROUP_PCB, GetProjectFileParameters() ); }
void PCB_EDIT_FRAME::InstallNetlistFrame( wxDC* DC ) { /* Setup the netlist file name to the last netlist file read, * or the board file name if the last filename is empty or last file not existing. */ wxString netlistName = GetLastNetListRead(); wxFileName fn = netlistName; if( !fn.IsOk() || !fn.FileExists() ) { fn = GetBoard()->GetFileName(); fn.SetExt( NetlistFileExtension ); if( fn.GetName().IsEmpty() ) netlistName.Clear(); else netlistName = fn.GetFullPath(); } DIALOG_NETLIST dlg( this, DC, netlistName ); dlg.ShowModal(); // Save project settings if needed. // Project settings are saved in the corresponding <board name>.pro file bool configChanged = !GetLastNetListRead().IsEmpty() && ( netlistName != GetLastNetListRead() ); if( configChanged && !GetBoard()->GetFileName().IsEmpty() && IsOK( NULL, _( "The project configuration has changed. Do you want to save it?" ) ) ) { fn = Prj().AbsolutePath( GetBoard()->GetFileName() ); fn.SetExt( ProjectFileExtension ); wxString pro_name = fn.GetFullPath(); Prj().ConfigSave( Kiface().KifaceSearch(), GROUP_PCB, GetProjectFileParameters(), pro_name ); } }
bool PCB_EDIT_FRAME::LoadProjectSettings( const wxString& aProjectFileName ) { wxLogDebug( wxT( "Loading project '%s' settings." ), GetChars( aProjectFileName ) ); wxFileName fn = aProjectFileName; if( fn.GetExt() != ProjectFileExtension ) fn.SetExt( ProjectFileExtension ); // was: wxGetApp().ReadProjectConfig( fn.GetFullPath(), GROUP, GetProjectFileParameters(), false ); Prj().ConfigLoad( Kiface().KifaceSearch(), fn.GetFullPath(), GROUP_PCB, GetProjectFileParameters(), false ); Prj().ElemClear( PROJECT::ELEM_FPTBL ); // Force it to be reloaded on demand. // Load the page layout decr file, from the filename stored in // BASE_SCREEN::m_PageLayoutDescrFileName, read in config project file // If empty, the default descr is loaded WORKSHEET_LAYOUT& pglayout = WORKSHEET_LAYOUT::GetTheInstance(); pglayout.SetPageLayout( BASE_SCREEN::m_PageLayoutDescrFileName ); return true; }
bool PCB_EDIT_FRAME::LoadProjectSettings( const wxString& aProjectFileName ) { wxFileName fn = aProjectFileName; if( fn.GetExt() != ProjectFileExtension ) fn.SetExt( ProjectFileExtension ); wxGetApp().RemoveLibraryPath( g_UserLibDirBuffer ); // Initialize default values. g_LibraryNames.Clear(); wxGetApp().ReadProjectConfig( fn.GetFullPath(), GROUP, GetProjectFileParameters(), false ); // User library path takes precedent over default library search paths. wxGetApp().InsertLibraryPath( g_UserLibDirBuffer, 1 ); // Dick 5-Feb-2012: I don't agree with this, the BOARD contents should dictate // what is visible or not, even initially. And since PCB_EDIT_FRAME projects settings // have no control over what is visible (see PCB_EDIT_FRAME::GetProjectFileParameters()) // this is recklessly turning on things the user may not want to see. #if 0 /* Reset the items visibility flag when loading a new configuration because it could * create SERIOUS mistakes for the user if board items are not visible after loading * a board. Grid and ratsnest can be left to their previous state. */ bool showGrid = IsElementVisible( GRID_VISIBLE ); bool showRats = IsElementVisible( RATSNEST_VISIBLE ); SetVisibleAlls(); SetElementVisibility( GRID_VISIBLE, showGrid ); SetElementVisibility( RATSNEST_VISIBLE, showRats ); #endif return true; }
void PCB_EDIT_FRAME::Process_Config( wxCommandEvent& event ) { int id = event.GetId(); wxFileName fn; switch( id ) { case ID_MENU_PCB_SHOW_HIDE_LAYERS_MANAGER_DIALOG: m_show_layer_manager_tools = ! m_show_layer_manager_tools; m_auimgr.GetPane( wxT( "m_LayersManagerToolBar" ) ).Show( m_show_layer_manager_tools ); m_auimgr.Update(); GetMenuBar()->SetLabel( ID_MENU_PCB_SHOW_HIDE_LAYERS_MANAGER_DIALOG, m_show_layer_manager_tools ? _("Hide &Layers Manager" ) : _("Show &Layers Manager" )); break; case ID_MENU_PCB_SHOW_HIDE_MUWAVE_TOOLBAR: m_show_microwave_tools = ! m_show_microwave_tools; m_auimgr.GetPane( wxT( "m_microWaveToolBar" ) ).Show( m_show_microwave_tools ); m_auimgr.Update(); GetMenuBar()->SetLabel( ID_MENU_PCB_SHOW_HIDE_MUWAVE_TOOLBAR, m_show_microwave_tools ? _( "Hide Microwave Toolbar" ): _( "Show Microwave Toolbar" )); break; case ID_PCB_LAYERS_SETUP: if( InvokeLayerSetup( this, GetBoard() ) ) { LAYER_ID cur_layer = GetActiveLayer(); // If after showing the dialog the user has removed the active layer, // then select a new active layer (front copper layer). if( !GetBoard()->GetEnabledLayers()[ cur_layer ] ) cur_layer = F_Cu; SetActiveLayer( cur_layer ); OnModify(); ReCreateLayerBox(); ReFillLayerWidget(); if( IsGalCanvasActive() ) static_cast<PCB_DRAW_PANEL_GAL*>( GetGalCanvas() )->SyncLayersVisibility( GetBoard() ); } break; case ID_PCB_LIB_WIZARD: case ID_PCB_LIB_TABLE_EDIT: { bool tableChanged = false; int r = 0; if( id == ID_PCB_LIB_TABLE_EDIT ) r = InvokePcbLibTableEditor( this, &GFootprintTable, Prj().PcbFootprintLibs() ); else r = InvokeFootprintWizard( this, &GFootprintTable, Prj().PcbFootprintLibs() ); if( r & 1 ) { try { FILE_OUTPUTFORMATTER sf( FP_LIB_TABLE::GetGlobalTableFileName() ); GFootprintTable.Format( &sf, 0 ); tableChanged = true; } catch( const IO_ERROR& ioe ) { wxString msg = wxString::Format( _( "Error occurred saving the global footprint library " "table:\n\n%s" ), GetChars( ioe.errorText.GetData() ) ); wxMessageBox( msg, _( "File Save Error" ), wxOK | wxICON_ERROR ); } } // If no board file is defined, do not save the project specific library table. It // is kept in memory and created in the path when the new board is saved. if( (r & 2) && !GetBoard()->GetFileName().IsEmpty() ) { wxString tblName = Prj().FootprintLibTblName(); try { Prj().PcbFootprintLibs()->Save( tblName ); tableChanged = true; } catch( const IO_ERROR& ioe ) { wxString msg = wxString::Format( _( "Error occurred saving project specific footprint library " "table:\n\n%s" ), GetChars( ioe.errorText ) ); wxMessageBox( msg, _( "File Save Error" ), wxOK | wxICON_ERROR ); } } FOOTPRINT_VIEWER_FRAME* viewer; if( tableChanged && (viewer = (FOOTPRINT_VIEWER_FRAME*)Kiway().Player( FRAME_PCB_MODULE_VIEWER, false )) != NULL ) { viewer->ReCreateLibraryList(); } } break; case ID_PCB_3DSHAPELIB_WIZARD: #ifdef BUILD_GITHUB_PLUGIN Invoke3DShapeLibsDownloaderWizard( this ); #endif break; case ID_PCB_MASK_CLEARANCE: { DIALOG_PADS_MASK_CLEARANCE dlg( this ); if( dlg.ShowModal() == 1 && IsGalCanvasActive() ) { for( MODULE* module = GetBoard()->m_Modules; module; module = module->Next() ) module->ViewUpdate(); GetGalCanvas()->Refresh(); } } break; case wxID_PREFERENCES: { DIALOG_GENERALOPTIONS dlg( this ); dlg.ShowModal(); } break; case ID_PCB_PAD_SETUP: InstallPadOptionsFrame( NULL ); break; case ID_CONFIG_SAVE: SaveProjectSettings( true ); break; case ID_CONFIG_READ: { fn = GetBoard()->GetFileName(); fn.SetExt( ProjectFileExtension ); wxFileDialog dlg( this, _( "Read Project File" ), fn.GetPath(), fn.GetFullName(), ProjectFileWildcard, wxFD_OPEN | wxFD_FILE_MUST_EXIST | wxFD_CHANGE_DIR ); if( dlg.ShowModal() == wxID_CANCEL ) break; if( !wxFileExists( dlg.GetPath() ) ) { wxString msg = wxString::Format( _( "File %s not found" ), GetChars( dlg.GetPath() ) ); DisplayError( this, msg ); break; } wxString pro_file = dlg.GetPath(); Prj().ConfigLoad( Kiface().KifaceSearch(), GROUP_PCB, GetProjectFileParameters(), pro_file ); } break; // Hotkey IDs case ID_PREFERENCES_HOTKEY_EXPORT_CONFIG: ExportHotkeyConfigToFile( g_Board_Editor_Hokeys_Descr, wxT( "pcbnew" ) ); break; case ID_PREFERENCES_HOTKEY_IMPORT_CONFIG: ImportHotkeyConfigFromFile( g_Board_Editor_Hokeys_Descr, wxT( "pcbnew" ) ); break; case ID_PREFERENCES_HOTKEY_SHOW_EDITOR: InstallHotkeyFrame( this, g_Board_Editor_Hokeys_Descr ); break; case ID_PREFERENCES_HOTKEY_SHOW_CURRENT_LIST: // Display current hotkey list for Pcbnew. DisplayHotkeyList( this, g_Board_Editor_Hokeys_Descr ); break; default: DisplayError( this, wxT( "PCB_EDIT_FRAME::Process_Config error" ) ); } }