eeschema: problem when attempting to load a non existing file
This commit is contained in:
parent
59c9f72ba2
commit
e898427b52
|
@ -80,6 +80,7 @@ bool WinEDA_App::OnInit()
|
||||||
SetupServerFunction( RemoteCommand );
|
SetupServerFunction( RemoteCommand );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ActiveScreen = m_SchematicFrame->GetScreen();
|
||||||
m_SchematicFrame->Zoom_Automatique( TRUE );
|
m_SchematicFrame->Zoom_Automatique( TRUE );
|
||||||
|
|
||||||
/* Load file specified in the command line. */
|
/* Load file specified in the command line. */
|
||||||
|
@ -93,7 +94,7 @@ bool WinEDA_App::OnInit()
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Read_Config( wxEmptyString, TRUE ); // Read config file ici si pas de fichier a charger
|
Read_Config( wxEmptyString, TRUE ); // Read a default config file if no file to load
|
||||||
if( m_SchematicFrame->DrawPanel )
|
if( m_SchematicFrame->DrawPanel )
|
||||||
m_SchematicFrame->DrawPanel->Refresh( TRUE );
|
m_SchematicFrame->DrawPanel->Refresh( TRUE );
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,7 @@ void WinEDA_SchematicFrame::Save_File( wxCommandEvent& event )
|
||||||
switch( id )
|
switch( id )
|
||||||
{
|
{
|
||||||
case ID_SAVE_PROJECT: /* Update Schematic File */
|
case ID_SAVE_PROJECT: /* Update Schematic File */
|
||||||
SaveProject( );
|
SaveProject();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_SAVE_ONE_SHEET: /* Update Schematic File */
|
case ID_SAVE_ONE_SHEET: /* Update Schematic File */
|
||||||
|
@ -51,10 +51,10 @@ int WinEDA_SchematicFrame::LoadOneEEProject( const wxString& FileName, bool IsNe
|
||||||
/************************************************************************************/
|
/************************************************************************************/
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Load an entire project
|
* Load an entire project
|
||||||
* ( schematic root file and its subhierarchies, the configuration and the libs
|
* ( schematic root file and its subhierarchies, the configuration and the libs
|
||||||
* which are not already loaded)
|
* which are not already loaded)
|
||||||
*/
|
*/
|
||||||
SCH_SCREEN* screen;
|
SCH_SCREEN* screen;
|
||||||
wxString FullFileName, msg;
|
wxString FullFileName, msg;
|
||||||
bool LibCacheExist = FALSE;
|
bool LibCacheExist = FALSE;
|
||||||
|
@ -80,32 +80,35 @@ int WinEDA_SchematicFrame::LoadOneEEProject( const wxString& FileName, bool IsNe
|
||||||
{
|
{
|
||||||
wxString mask = wxT( "*" ) + g_SchExtBuffer;
|
wxString mask = wxT( "*" ) + g_SchExtBuffer;
|
||||||
FullFileName = EDA_FileSelector( _( "Schematic files:" ),
|
FullFileName = EDA_FileSelector( _( "Schematic files:" ),
|
||||||
wxEmptyString, /* Chemin par defaut */
|
wxEmptyString, /* Chemin par defaut */
|
||||||
wxEmptyString, /* nom fichier par defaut */
|
wxEmptyString, /* nom fichier par defaut */
|
||||||
g_SchExtBuffer, /* extension par defaut */
|
g_SchExtBuffer, /* extension par defaut */
|
||||||
mask, /* Masque d'affichage */
|
mask, /* Masque d'affichage */
|
||||||
this,
|
this,
|
||||||
wxFD_OPEN,
|
wxFD_OPEN,
|
||||||
TRUE
|
TRUE
|
||||||
);
|
);
|
||||||
if( FullFileName.IsEmpty() )
|
if( FullFileName.IsEmpty() )
|
||||||
return FALSE;
|
return 0;
|
||||||
}
|
}
|
||||||
if(g_RootSheet){
|
if( g_RootSheet )
|
||||||
SAFE_DELETE(g_RootSheet);
|
{
|
||||||
|
SAFE_DELETE( g_RootSheet );
|
||||||
}
|
}
|
||||||
CreateScreens();
|
CreateScreens();
|
||||||
screen = (SCH_SCREEN*)GetScreen();
|
ActiveScreen = GetScreen();
|
||||||
|
screen = (SCH_SCREEN*) GetScreen();
|
||||||
|
|
||||||
wxSetWorkingDirectory( wxPathOnly( FullFileName ) );
|
wxSetWorkingDirectory( wxPathOnly( FullFileName ) );
|
||||||
GetScreen()->m_FileName = FullFileName;
|
GetScreen()->m_FileName = FullFileName;
|
||||||
g_RootSheet->SetFileName(FullFileName);
|
g_RootSheet->SetFileName( FullFileName );
|
||||||
Affiche_Message( wxEmptyString );
|
Affiche_Message( wxEmptyString );
|
||||||
MsgPanel->EraseMsgBox();
|
MsgPanel->EraseMsgBox();
|
||||||
|
|
||||||
memset( &g_EESchemaVar, 0, sizeof(g_EESchemaVar) );
|
memset( &g_EESchemaVar, 0, sizeof(g_EESchemaVar) );
|
||||||
|
|
||||||
GetScreen()->ClrModify();
|
GetScreen()->ClrModify();
|
||||||
|
|
||||||
//m_CurrentSheet->m_AssociatedScreen->Pnext = NULL; should be by default
|
//m_CurrentSheet->m_AssociatedScreen->Pnext = NULL; should be by default
|
||||||
|
|
||||||
if( IsNew )
|
if( IsNew )
|
||||||
|
@ -143,7 +146,8 @@ int WinEDA_SchematicFrame::LoadOneEEProject( const wxString& FileName, bool IsNe
|
||||||
|
|
||||||
if( IsNew )
|
if( IsNew )
|
||||||
{
|
{
|
||||||
ReDrawPanel();
|
if( DrawPanel )
|
||||||
|
DrawPanel->Refresh( true );
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -152,7 +156,7 @@ int WinEDA_SchematicFrame::LoadOneEEProject( const wxString& FileName, bool IsNe
|
||||||
wxString shortfilename;
|
wxString shortfilename;
|
||||||
wxSplitPath( g_RootSheet->m_AssociatedScreen->m_FileName, NULL, &shortfilename, NULL );
|
wxSplitPath( g_RootSheet->m_AssociatedScreen->m_FileName, NULL, &shortfilename, NULL );
|
||||||
FullLibName << wxT( "." ) << STRING_DIR_SEP << shortfilename << wxT( ".cache" ) <<
|
FullLibName << wxT( "." ) << STRING_DIR_SEP << shortfilename << wxT( ".cache" ) <<
|
||||||
g_LibExtBuffer;
|
g_LibExtBuffer;
|
||||||
if( wxFileExists( FullLibName ) )
|
if( wxFileExists( FullLibName ) )
|
||||||
{
|
{
|
||||||
wxString libname;
|
wxString libname;
|
||||||
|
@ -173,62 +177,68 @@ int WinEDA_SchematicFrame::LoadOneEEProject( const wxString& FileName, bool IsNe
|
||||||
|
|
||||||
if( !wxFileExists( g_RootSheet->m_AssociatedScreen->m_FileName ) && !LibCacheExist ) // Nouveau projet prpbablement
|
if( !wxFileExists( g_RootSheet->m_AssociatedScreen->m_FileName ) && !LibCacheExist ) // Nouveau projet prpbablement
|
||||||
{
|
{
|
||||||
|
Zoom_Automatique( FALSE );
|
||||||
msg.Printf( _( "File %s not found (new project ?)" ),
|
msg.Printf( _( "File %s not found (new project ?)" ),
|
||||||
g_RootSheet->m_AssociatedScreen->m_FileName.GetData() );
|
g_RootSheet->m_AssociatedScreen->m_FileName.GetData() );
|
||||||
DisplayInfo( this, msg, 20 );
|
DisplayInfo( this, msg, 20 );
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
//load the project.
|
//load the project.
|
||||||
SAFE_DELETE(g_RootSheet->m_AssociatedScreen);
|
SAFE_DELETE( g_RootSheet->m_AssociatedScreen );
|
||||||
bool diag = g_RootSheet->Load(this);
|
bool diag = g_RootSheet->Load( this );
|
||||||
|
|
||||||
/* Reaffichage ecran de base (ROOT) si necessaire */
|
/* Reaffichage ecran de base (ROOT) si necessaire */
|
||||||
ActiveScreen = GetScreen();
|
ActiveScreen = GetScreen();
|
||||||
Zoom_Automatique( FALSE );
|
Zoom_Automatique( FALSE );
|
||||||
SetSheetNumberAndCount();
|
SetSheetNumberAndCount();
|
||||||
DrawPanel->Refresh( TRUE );
|
DrawPanel->Refresh( true );
|
||||||
return diag;
|
return diag;
|
||||||
}
|
}
|
||||||
/**********************************************************/
|
|
||||||
SCH_SCREEN * WinEDA_SchematicFrame::CreateNewScreen(
|
|
||||||
SCH_SCREEN * OldScreen, int TimeStamp)
|
|
||||||
/**********************************************************/
|
|
||||||
/* Routine de creation ( par allocation memoire ) d'un nouvel ecran
|
|
||||||
cet ecran est en chainage arriere avec OldScreen
|
|
||||||
la valeur TimeStamp est attribuee au parametre NewScreen->TimeStamp
|
|
||||||
*/
|
|
||||||
{
|
|
||||||
SCH_SCREEN * NewScreen;
|
|
||||||
|
|
||||||
NewScreen = new SCH_SCREEN(SCHEMATIC_FRAME);
|
|
||||||
|
/**********************************************************/
|
||||||
|
SCH_SCREEN* WinEDA_SchematicFrame::CreateNewScreen(
|
||||||
|
SCH_SCREEN* OldScreen, int TimeStamp )
|
||||||
|
/**********************************************************/
|
||||||
|
|
||||||
|
/* Routine de creation ( par allocation memoire ) d'un nouvel ecran
|
||||||
|
* cet ecran est en chainage arriere avec OldScreen
|
||||||
|
* la valeur TimeStamp est attribuee au parametre NewScreen->TimeStamp
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
SCH_SCREEN* NewScreen;
|
||||||
|
|
||||||
|
NewScreen = new SCH_SCREEN( SCHEMATIC_FRAME );
|
||||||
|
|
||||||
NewScreen->SetRefreshReq();
|
NewScreen->SetRefreshReq();
|
||||||
if(OldScreen) NewScreen->m_Company = OldScreen->m_Company;
|
if( OldScreen )
|
||||||
|
NewScreen->m_Company = OldScreen->m_Company;
|
||||||
NewScreen->m_TimeStamp = TimeStamp;
|
NewScreen->m_TimeStamp = TimeStamp;
|
||||||
|
|
||||||
NewScreen->Pback = OldScreen;
|
NewScreen->Pback = OldScreen;
|
||||||
|
|
||||||
return(NewScreen);
|
return NewScreen;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/****************************************************/
|
/****************************************************/
|
||||||
void WinEDA_SchematicFrame::SaveProject( )
|
void WinEDA_SchematicFrame::SaveProject()
|
||||||
/****************************************************/
|
/****************************************************/
|
||||||
|
|
||||||
/* Saves the entire project and creates an archive for components
|
/* Saves the entire project and creates an archive for components
|
||||||
* the library archive name is <root_name>.cache.lib
|
* the library archive name is <root_name>.cache.lib
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
SCH_SCREEN* screen;
|
SCH_SCREEN* screen;
|
||||||
wxString LibArchiveFileName;
|
wxString LibArchiveFileName;
|
||||||
|
|
||||||
EDA_ScreenList ScreenList;
|
EDA_ScreenList ScreenList;
|
||||||
|
|
||||||
for( screen = ScreenList.GetFirst(); screen != NULL;
|
for( screen = ScreenList.GetFirst(); screen != NULL;
|
||||||
screen = ScreenList.GetNext() )
|
screen = ScreenList.GetNext() )
|
||||||
{
|
{
|
||||||
D(printf("SaveEEFile, %s\n", CONV_TO_UTF8(screen->m_FileName) );)
|
D( printf( "SaveEEFile, %s\n", CONV_TO_UTF8( screen->m_FileName ) ); )
|
||||||
SaveEEFile( screen, FILE_SAVE_AS );
|
SaveEEFile( screen, FILE_SAVE_AS );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -250,29 +260,30 @@ int CountCmpNumber()
|
||||||
* powers non comprises */
|
* powers non comprises */
|
||||||
{
|
{
|
||||||
return g_RootSheet->ComponentCount();
|
return g_RootSheet->ComponentCount();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
BASE_SCREEN* Window;
|
* BASE_SCREEN* Window;
|
||||||
EDA_BaseStruct* Phead;
|
* EDA_BaseStruct* Phead;
|
||||||
int Nb = 0;
|
* int Nb = 0;
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
Window = ScreenSch;
|
* Window = ScreenSch;
|
||||||
while( Window )
|
* while( Window )
|
||||||
{
|
* {
|
||||||
for( Phead = Window->EEDrawList; Phead != NULL; Phead = Phead->Pnext )
|
* for( Phead = Window->EEDrawList; Phead != NULL; Phead = Phead->Pnext )
|
||||||
{
|
* {
|
||||||
if( Phead->Type() == TYPE_SCH_COMPONENT )
|
* if( Phead->Type() == TYPE_SCH_COMPONENT )
|
||||||
{
|
* {
|
||||||
DrawPartStruct* Cmp = (DrawPartStruct*) Phead;
|
* DrawPartStruct* Cmp = (DrawPartStruct*) Phead;
|
||||||
if( Cmp->m_Field[VALUE].m_Text.GetChar( 0 ) != '#' )
|
* if( Cmp->m_Field[VALUE].m_Text.GetChar( 0 ) != '#' )
|
||||||
Nb++;
|
* Nb++;
|
||||||
}
|
* }
|
||||||
}
|
* }
|
||||||
|
*
|
||||||
Window = (BASE_SCREEN*) Window->Pnext;
|
* Window = (BASE_SCREEN*) Window->Pnext;
|
||||||
}
|
* }
|
||||||
|
*
|
||||||
return Nb;
|
* return Nb;
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
1244
internat/fr/kicad.po
1244
internat/fr/kicad.po
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue