154 lines
4.6 KiB
C++
154 lines
4.6 KiB
C++
/**
|
|
* @file prjconfig.cpp
|
|
* Load and save project configuration files (*.pro)
|
|
*/
|
|
|
|
#include "fctsys.h"
|
|
#include "appl_wxstruct.h"
|
|
#include "common.h"
|
|
#include "confirm.h"
|
|
#include "gestfich.h"
|
|
#include "prjconfig.h"
|
|
#include "kicad.h"
|
|
#include "tree_project_frame.h"
|
|
|
|
#include "build_version.h"
|
|
|
|
static const wxString GeneralGroupName( wxT( "/general" ) );
|
|
|
|
/* Kicad project file entry names. */
|
|
static const wxString SchematicRootNameEntry( wxT( "RootSch" ) );
|
|
static const wxString BoardFileNameEntry( wxT( "BoardNm" ) );
|
|
|
|
|
|
void WinEDA_MainFrame::CreateNewProject( const wxString PrjFullFileName )
|
|
{
|
|
wxString filename;
|
|
wxFileName newProjectName = PrjFullFileName;
|
|
|
|
/* Init default config filename */
|
|
filename = wxGetApp().FindLibraryPath( wxT( "kicad" ) + g_KicadPrjFilenameExtension);
|
|
|
|
/* Check if file kicad.pro exist in template directory */
|
|
if( wxFileName::FileExists( filename ) )
|
|
{
|
|
wxCopyFile( filename, PrjFullFileName );
|
|
}
|
|
else
|
|
{
|
|
DisplayInfoMessage( NULL, _( "Project template file <kicad.pro> not found " ) );
|
|
return;
|
|
}
|
|
|
|
/* Init schematic filename */
|
|
m_SchematicRootFileName = wxFileName( newProjectName.GetName(),
|
|
SchematicFileExtension ).GetFullName();
|
|
|
|
/* Init pcb board filename */
|
|
m_BoardFileName = wxFileName( newProjectName.GetName(),
|
|
PcbFileExtension ).GetFullName();
|
|
|
|
/* Init project filename */
|
|
m_ProjectFileName = newProjectName;
|
|
|
|
/* Write settings to project file */
|
|
wxGetApp().WriteProjectConfig( PrjFullFileName, GeneralGroupName, NULL );
|
|
}
|
|
|
|
/**
|
|
* Loading a new project
|
|
*/
|
|
void WinEDA_MainFrame::OnLoadProject( wxCommandEvent& event )
|
|
{
|
|
int style;
|
|
wxString title;
|
|
|
|
if( event.GetId() != wxID_ANY )
|
|
{
|
|
if( event.GetId() == ID_NEW_PROJECT )
|
|
{
|
|
title = _( "Create New Project" );
|
|
style = wxFD_SAVE | wxFD_OVERWRITE_PROMPT;
|
|
}
|
|
else
|
|
{
|
|
title = _( "Open Existing Project" );
|
|
style = wxFD_OPEN | wxFD_FILE_MUST_EXIST;
|
|
}
|
|
|
|
SetLastProject( m_ProjectFileName.GetFullPath() );
|
|
wxFileDialog dlg( this, title, wxGetCwd(), wxEmptyString,
|
|
ProjectFileWildcard, style );
|
|
|
|
if( dlg.ShowModal() == wxID_CANCEL )
|
|
return;
|
|
|
|
m_ProjectFileName = dlg.GetPath();
|
|
|
|
if( event.GetId() == ID_NEW_PROJECT )
|
|
{
|
|
// Ensure project filename extension is .pro
|
|
wxString fullname = m_ProjectFileName.GetFullPath();
|
|
if ( !fullname.EndsWith( g_KicadPrjFilenameExtension ) )
|
|
{
|
|
fullname += g_KicadPrjFilenameExtension;
|
|
m_ProjectFileName.SetFullName( fullname );
|
|
}
|
|
CreateNewProject( m_ProjectFileName.GetFullPath() );
|
|
}
|
|
|
|
SetLastProject( m_ProjectFileName.GetFullPath() );
|
|
}
|
|
|
|
wxLogDebug( wxT( "Loading Kicad project file: " ) +
|
|
m_ProjectFileName.GetFullPath() );
|
|
|
|
/* Check if project file exists and if it is not noname.pro */
|
|
wxString filename = m_ProjectFileName.GetFullName();
|
|
|
|
wxString nameless_prj = NAMELESS_PROJECT;
|
|
nameless_prj += g_KicadPrjFilenameExtension;
|
|
if( !m_ProjectFileName.FileExists() && !filename.IsSameAs(nameless_prj))
|
|
{
|
|
DisplayError( this, _( "Kicad project file <" ) +
|
|
m_ProjectFileName.GetFullPath() + _( "> not found" ) );
|
|
return;
|
|
}
|
|
|
|
wxSetWorkingDirectory( m_ProjectFileName.GetPath() );
|
|
wxGetApp().ReadProjectConfig( m_ProjectFileName.GetFullPath(),
|
|
GeneralGroupName, NULL, false );
|
|
|
|
SetTitle( wxGetApp().GetTitle() + wxT( " " ) + GetBuildVersion() +
|
|
wxT( " " ) + m_ProjectFileName.GetFullPath() );
|
|
SetLastProject( m_ProjectFileName.GetFullPath() );
|
|
m_LeftWin->ReCreateTreePrj();
|
|
|
|
PrintMsg( _( "Working dir: " ) + m_ProjectFileName.GetPath() +
|
|
_( "\nProject: " ) + m_ProjectFileName.GetFullName() +
|
|
wxT( "\n" ) );
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* Save the project top level configuration parameters.
|
|
*/
|
|
void WinEDA_MainFrame::OnSaveProject( wxCommandEvent& event )
|
|
{
|
|
wxString fn;
|
|
|
|
wxFileDialog dlg( this, _( "Save Project File" ), wxGetCwd(),
|
|
m_ProjectFileName.GetFullName(), ProjectFileWildcard,
|
|
wxFD_SAVE | wxFD_OVERWRITE_PROMPT );
|
|
|
|
if( dlg.ShowModal() == wxID_CANCEL )
|
|
return;
|
|
|
|
m_ProjectFileName = dlg.GetPath();
|
|
|
|
wxGetApp().WriteProjectConfig( m_ProjectFileName.GetFullPath(),
|
|
GeneralGroupName, NULL );
|
|
}
|
|
|