114 lines
3.0 KiB
C++
114 lines
3.0 KiB
C++
|
/*******************************************************/
|
||
|
/* delsheet.cpp Routine d'effacement d'une hierarchie */
|
||
|
/*******************************************************/
|
||
|
|
||
|
#include "fctsys.h"
|
||
|
#include "gr_basic.h"
|
||
|
|
||
|
#include "common.h"
|
||
|
#include "program.h"
|
||
|
#include "libcmp.h"
|
||
|
#include "general.h"
|
||
|
|
||
|
#include "protos.h"
|
||
|
|
||
|
|
||
|
/**************************************************************************/
|
||
|
void DeleteSubHierarchy(DrawSheetStruct * FirstSheet, bool confirm_deletion)
|
||
|
/**************************************************************************/
|
||
|
|
||
|
/* Free (delete) all schematic data (include the sub hierarchy sheets )
|
||
|
for the hierarchical sheet FirstSheet
|
||
|
FirstSheet is not deleted.
|
||
|
*/
|
||
|
{
|
||
|
EDA_BaseStruct *DrawStruct;
|
||
|
EDA_BaseStruct *EEDrawList;
|
||
|
WinEDA_SchematicFrame * frame = EDA_Appl->SchematicFrame;
|
||
|
wxString msg;
|
||
|
|
||
|
if( FirstSheet == NULL ) return;
|
||
|
|
||
|
if( FirstSheet->m_StructType != DRAW_SHEET_STRUCT_TYPE)
|
||
|
{
|
||
|
DisplayError(NULL,
|
||
|
wxT("DeleteSubHierarchy error(): NOT a Sheet"));
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
/* effacement du sous schema correspondant */
|
||
|
if( FirstSheet->IsModify() && confirm_deletion )
|
||
|
{
|
||
|
msg.Printf( _("Sheet %s (file %s) modified. Save it?"),
|
||
|
FirstSheet->m_SheetName.GetData(),
|
||
|
FirstSheet->m_FileName.GetData());
|
||
|
if( IsOK(NULL, msg) )
|
||
|
{
|
||
|
frame->SaveEEFile(FirstSheet, FILE_SAVE_AS);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* free the sub hierarchy */
|
||
|
EEDrawList = FirstSheet->EEDrawList;
|
||
|
while (EEDrawList != NULL)
|
||
|
{
|
||
|
DrawStruct = EEDrawList;
|
||
|
EEDrawList = EEDrawList->Pnext;
|
||
|
if( DrawStruct->m_StructType == DRAW_SHEET_STRUCT_TYPE)
|
||
|
{
|
||
|
DeleteSubHierarchy((DrawSheetStruct *) DrawStruct, confirm_deletion);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* Effacement des elements de la feuille courante */
|
||
|
FirstSheet->FreeDrawList();
|
||
|
}
|
||
|
|
||
|
/*********************************************************************/
|
||
|
void ClearDrawList(EDA_BaseStruct *DrawList, bool confirm_deletion)
|
||
|
/********************************************************************/
|
||
|
/* free the draw list DrawList and the subhierarchies */
|
||
|
{
|
||
|
EDA_BaseStruct *DrawStruct;
|
||
|
|
||
|
while (DrawList != NULL)
|
||
|
{
|
||
|
DrawStruct = DrawList;
|
||
|
DrawList = DrawList->Pnext;
|
||
|
|
||
|
if( DrawStruct->m_StructType == DRAW_SHEET_STRUCT_TYPE)
|
||
|
{
|
||
|
DeleteSubHierarchy((DrawSheetStruct*) DrawStruct, confirm_deletion);
|
||
|
}
|
||
|
|
||
|
delete DrawStruct;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/********************************************************************/
|
||
|
bool ClearProjectDrawList(SCH_SCREEN * screen, bool confirm_deletion)
|
||
|
/********************************************************************/
|
||
|
/* free the draw list screen->EEDrawList and the subhierarchies
|
||
|
clear the screen datas (filenames ..)
|
||
|
*/
|
||
|
{
|
||
|
if ( screen == NULL ) return(TRUE);
|
||
|
|
||
|
ClearDrawList(screen->EEDrawList, confirm_deletion);
|
||
|
screen->EEDrawList = NULL;
|
||
|
|
||
|
/* Clear the screen datas */
|
||
|
screen->m_SheetNumber = screen->m_NumberOfSheet = 1;
|
||
|
screen->m_Title.Empty();
|
||
|
screen->m_Revision.Empty();
|
||
|
screen->m_Company.Empty();
|
||
|
screen->m_Commentaire1.Empty();
|
||
|
screen->m_Commentaire2.Empty();
|
||
|
screen->m_Commentaire3.Empty();
|
||
|
screen->m_Commentaire4.Empty();
|
||
|
screen->m_Date = GenDate();
|
||
|
|
||
|
return TRUE;
|
||
|
}
|
||
|
|