eeschema: enforce time stamp control and repairs bad time stamps in annotation.
This commit is contained in:
parent
b9ba67c8c3
commit
d6af27a308
|
@ -4,6 +4,12 @@ KiCad ChangeLog 2009
|
||||||
Please add newer entries at the top, list the date and your name with
|
Please add newer entries at the top, list the date and your name with
|
||||||
email address.
|
email address.
|
||||||
|
|
||||||
|
2009-apr-25 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
|
||||||
|
================================================================================
|
||||||
|
++ Eeschema:
|
||||||
|
When annotating: tests and repairs bad (duplicated) time stamps.
|
||||||
|
Can be found in old schematics or converted from others tools ...
|
||||||
|
|
||||||
2009-apr-24 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
|
2009-apr-24 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
|
||||||
================================================================================
|
================================================================================
|
||||||
++Pcbnew:
|
++Pcbnew:
|
||||||
|
|
|
@ -1,18 +1,51 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
<key>CFBundleDisplayName</key>
|
<key>CFBundleDocumentTypes</key>
|
||||||
<string>cvpcb</string>
|
<array>
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleTypeIconFile</key>
|
||||||
|
<string>cvpcb_doc.icns</string>
|
||||||
|
<key>CFBundleTypeExtensions</key>
|
||||||
|
<array>
|
||||||
|
<string>net</string>
|
||||||
|
</array>
|
||||||
|
<key>CFBundleTypeName</key>
|
||||||
|
<string>cvpcb document</string>
|
||||||
|
<key>LSHandlerRank</key>
|
||||||
|
<string>Owner</string>
|
||||||
|
</dict>
|
||||||
|
</array>
|
||||||
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
|
<string>English</string>
|
||||||
<key>CFBundleExecutable</key>
|
<key>CFBundleExecutable</key>
|
||||||
<string>cvpcb</string>
|
<string>cvpcb</string>
|
||||||
|
<key>CFBundleGetInfoString</key>
|
||||||
|
<string></string>
|
||||||
<key>CFBundleIconFile</key>
|
<key>CFBundleIconFile</key>
|
||||||
<string>cvpcb.icns</string>
|
<string>cvpcb.icns</string>
|
||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
<string>org.kicad-eda.cvpcb</string>
|
<string>org.kicad-eda.cvpcb</string>
|
||||||
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
|
<string>6.0</string>
|
||||||
|
<key>CFBundleLongVersionString</key>
|
||||||
|
<string></string>
|
||||||
<key>CFBundleName</key>
|
<key>CFBundleName</key>
|
||||||
<string>Cvpcb</string>
|
<string></string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>APPL</string>
|
||||||
|
<key>CFBundleShortVersionString</key>
|
||||||
|
<string></string>
|
||||||
|
<key>CFBundleSignature</key>
|
||||||
|
<string>????</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string></string>
|
||||||
|
<key>CSResourcesFileMapped</key>
|
||||||
|
<true/>
|
||||||
<key>LSRequiresCarbon</key>
|
<key>LSRequiresCarbon</key>
|
||||||
<true/>
|
<true/>
|
||||||
|
<key>NSHumanReadableCopyright</key>
|
||||||
|
<string></string>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|
Binary file not shown.
|
@ -1,9 +1,7 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
<key>CFBundleDisplayName</key>
|
|
||||||
<array/>
|
|
||||||
<key>CFBundleDocumentTypes</key>
|
<key>CFBundleDocumentTypes</key>
|
||||||
<array>
|
<array>
|
||||||
<dict>
|
<dict>
|
||||||
|
@ -12,18 +10,42 @@
|
||||||
<string>sch</string>
|
<string>sch</string>
|
||||||
</array>
|
</array>
|
||||||
<key>CFBundleTypeIconFile</key>
|
<key>CFBundleTypeIconFile</key>
|
||||||
<string>file_sch.icns</string>
|
<string>eeschema_doc.icns</string>
|
||||||
|
<key>CFBundleTypeName</key>
|
||||||
|
<string>eeschema document</string>
|
||||||
|
<key>LSHandlerRank</key>
|
||||||
|
<string>Owner</string>
|
||||||
</dict>
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
|
<string>English</string>
|
||||||
<key>CFBundleExecutable</key>
|
<key>CFBundleExecutable</key>
|
||||||
<string>eeschema</string>
|
<string>eeschema</string>
|
||||||
|
<key>CFBundleGetInfoString</key>
|
||||||
|
<string></string>
|
||||||
<key>CFBundleIconFile</key>
|
<key>CFBundleIconFile</key>
|
||||||
<string>eeschema.icns</string>
|
<string>eeschema.icns</string>
|
||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
<string>org.kicad-eda.eeschema</string>
|
<string>org.kicad-eda.eeschema</string>
|
||||||
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
|
<string>6.0</string>
|
||||||
|
<key>CFBundleLongVersionString</key>
|
||||||
|
<string></string>
|
||||||
<key>CFBundleName</key>
|
<key>CFBundleName</key>
|
||||||
<string>Schematics</string>
|
<string></string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>APPL</string>
|
||||||
|
<key>CFBundleShortVersionString</key>
|
||||||
|
<string></string>
|
||||||
|
<key>CFBundleSignature</key>
|
||||||
|
<string>????</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string></string>
|
||||||
|
<key>CSResourcesFileMapped</key>
|
||||||
|
<true/>
|
||||||
<key>LSRequiresCarbon</key>
|
<key>LSRequiresCarbon</key>
|
||||||
<true/>
|
<true/>
|
||||||
|
<key>NSHumanReadableCopyright</key>
|
||||||
|
<string></string>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
|
|
||||||
/* Local Functions*/
|
/* Local Functions*/
|
||||||
static int AddComponentsInSheetToList( std::vector <OBJ_CMP_TO_LIST>& aComponentsList,
|
static int AddComponentsInSheetToList( std::vector <OBJ_CMP_TO_LIST>& aComponentsList,
|
||||||
DrawSheetPath* sheet );
|
DrawSheetPath* sheet );
|
||||||
static void BreakReference( std::vector <OBJ_CMP_TO_LIST>& aComponentsList );
|
static void BreakReference( std::vector <OBJ_CMP_TO_LIST>& aComponentsList );
|
||||||
static void ReAnnotateComponents( std::vector <OBJ_CMP_TO_LIST>& aComponentsList );
|
static void ReAnnotateComponents( std::vector <OBJ_CMP_TO_LIST>& aComponentsList );
|
||||||
static void ComputeReferenceNumber( std::vector <OBJ_CMP_TO_LIST>& aComponentsList );
|
static void ComputeReferenceNumber( std::vector <OBJ_CMP_TO_LIST>& aComponentsList );
|
||||||
|
@ -26,6 +26,7 @@ int GetLastReferenceNumber( int aObjet,
|
||||||
std::vector <OBJ_CMP_TO_LIST>& aComponentsList );
|
std::vector <OBJ_CMP_TO_LIST>& aComponentsList );
|
||||||
static int ExistUnit( int aObjet, int aUnit,
|
static int ExistUnit( int aObjet, int aUnit,
|
||||||
std::vector <OBJ_CMP_TO_LIST>& aComponentsList );
|
std::vector <OBJ_CMP_TO_LIST>& aComponentsList );
|
||||||
|
static int ReplaceDuplicatedTimeStamps();
|
||||||
|
|
||||||
|
|
||||||
/******************************************************/
|
/******************************************************/
|
||||||
|
@ -175,6 +176,21 @@ static bool AnnotateByValue( const OBJ_CMP_TO_LIST& item1, const OBJ_CMP_TO_LIST
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*****************************************************************************
|
||||||
|
* qsort function to annotate items by value
|
||||||
|
* Components are sorted by time stamp
|
||||||
|
*****************************************************************************/
|
||||||
|
static bool SortByTimeStamp( const OBJ_CMP_TO_LIST& item1, const OBJ_CMP_TO_LIST& item2 )
|
||||||
|
{
|
||||||
|
int ii = item1.m_SheetPath.Cmp( item2.m_SheetPath );
|
||||||
|
|
||||||
|
if( ii == 0 )
|
||||||
|
ii = item1.m_TimeStamp - item2.m_TimeStamp;
|
||||||
|
|
||||||
|
return ii < 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************************/
|
/**************************************************************************************/
|
||||||
void WinEDA_SchematicFrame::DeleteAnnotation( bool aCurrentSheetOnly, bool aRedraw )
|
void WinEDA_SchematicFrame::DeleteAnnotation( bool aCurrentSheetOnly, bool aRedraw )
|
||||||
/**************************************************************************************/
|
/**************************************************************************************/
|
||||||
|
@ -237,16 +253,33 @@ void WinEDA_SchematicFrame::DeleteAnnotation( bool aCurrentSheetOnly, bool aRedr
|
||||||
* 1 = annotate by sorting Y position,
|
* 1 = annotate by sorting Y position,
|
||||||
* 2 = annotate by sorting value
|
* 2 = annotate by sorting value
|
||||||
* @param resetAnnotation : true = remove previous annotation false = anotate new components only
|
* @param resetAnnotation : true = remove previous annotation false = anotate new components only
|
||||||
|
* @param repairsTimestamps : true = test for duplicate times stamps and replace duplicated
|
||||||
|
* Note: this option could change previous annotation, because time stamps are used to handle annotation
|
||||||
|
* mainly in complex hierarchies.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
void AnnotateComponents( WinEDA_SchematicFrame* parent,
|
void AnnotateComponents( WinEDA_SchematicFrame* parent,
|
||||||
bool annotateSchematic,
|
bool annotateSchematic,
|
||||||
int sortOption,
|
int sortOption,
|
||||||
bool resetAnnotation )
|
bool resetAnnotation,
|
||||||
|
bool repairsTimestamps )
|
||||||
{
|
{
|
||||||
std::vector <OBJ_CMP_TO_LIST> ComponentsList;
|
std::vector <OBJ_CMP_TO_LIST> ComponentsList;
|
||||||
|
|
||||||
wxBusyCursor dummy;
|
wxBusyCursor dummy;
|
||||||
|
|
||||||
|
// Test and replace duplicte time stamps
|
||||||
|
// duplicate can happen with old schematics, or schematic conversions or manual editions of files ...
|
||||||
|
if( repairsTimestamps )
|
||||||
|
{
|
||||||
|
int ireplacecount = ReplaceDuplicatedTimeStamps();
|
||||||
|
if ( ireplacecount )
|
||||||
|
{
|
||||||
|
wxString msg;
|
||||||
|
msg.Printf(_("%d Duplicate Time stamps replaced"), ireplacecount);
|
||||||
|
DisplayInfoMessage( NULL, msg, 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* If it is an annotation for all the components, reset previous
|
/* If it is an annotation for all the components, reset previous
|
||||||
* annotation: */
|
* annotation: */
|
||||||
if( resetAnnotation )
|
if( resetAnnotation )
|
||||||
|
@ -301,13 +334,15 @@ void AnnotateComponents( WinEDA_SchematicFrame* parent,
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************************************/
|
/*******************************************************************************************************/
|
||||||
int AddComponentsInSheetToList( std::vector <OBJ_CMP_TO_LIST>& aComponentsList, DrawSheetPath* aSheet )
|
int AddComponentsInSheetToList( std::vector <OBJ_CMP_TO_LIST>& aComponentsList,
|
||||||
|
DrawSheetPath* aSheet )
|
||||||
/********************************************************************************************************/
|
/********************************************************************************************************/
|
||||||
|
|
||||||
/** function AddComponentsInSheetToList()
|
/** function AddComponentsInSheetToList()
|
||||||
* Add a OBJ_CMP_TO_LIST object in aComponentsList for each component found in sheet
|
* Add a OBJ_CMP_TO_LIST object in aComponentsList for each component found in sheet
|
||||||
* @param aComponentsList = a std::vector list to fill
|
* @param aComponentsList = a std::vector list to fill
|
||||||
* @param the DrawSheetPath sheet to analyse
|
* @param the DrawSheetPath sheet to analyse
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
int NbrCmp = 0;
|
int NbrCmp = 0;
|
||||||
EDA_BaseStruct* DrawList = aSheet->LastDrawList();
|
EDA_BaseStruct* DrawList = aSheet->LastDrawList();
|
||||||
|
@ -320,18 +355,18 @@ int AddComponentsInSheetToList( std::vector <OBJ_CMP_TO_LIST>& aComponentsList,
|
||||||
{
|
{
|
||||||
DrawLibItem = (SCH_COMPONENT*) DrawList;
|
DrawLibItem = (SCH_COMPONENT*) DrawList;
|
||||||
Entry = FindLibPart( DrawLibItem->m_ChipName.GetData(),
|
Entry = FindLibPart( DrawLibItem->m_ChipName.GetData(),
|
||||||
wxEmptyString,
|
wxEmptyString,
|
||||||
FIND_ROOT );
|
FIND_ROOT );
|
||||||
if( Entry == NULL )
|
if( Entry == NULL )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
OBJ_CMP_TO_LIST new_object;
|
OBJ_CMP_TO_LIST new_object;
|
||||||
new_object.m_RootCmp = DrawLibItem;
|
new_object.m_RootCmp = DrawLibItem;
|
||||||
new_object.m_Entry = Entry;
|
new_object.m_Entry = Entry;
|
||||||
new_object.m_Unit = DrawLibItem->GetUnitSelection( aSheet );
|
new_object.m_Unit = DrawLibItem->GetUnitSelection( aSheet );
|
||||||
new_object.m_SheetPath = *aSheet;
|
new_object.m_SheetPath = *aSheet;
|
||||||
new_object.m_IsNew = false;
|
new_object.m_IsNew = false;
|
||||||
new_object.m_Flag = 0;
|
new_object.m_Flag = 0;
|
||||||
new_object.m_TimeStamp = DrawLibItem->m_TimeStamp;
|
new_object.m_TimeStamp = DrawLibItem->m_TimeStamp;
|
||||||
|
|
||||||
if( DrawLibItem->GetRef( aSheet ).IsEmpty() )
|
if( DrawLibItem->GetRef( aSheet ).IsEmpty() )
|
||||||
|
@ -375,7 +410,7 @@ static void ReAnnotateComponents( std::vector <OBJ_CMP_TO_LIST>& aComponentsList
|
||||||
component->SetRef( &(aComponentsList[ii].m_SheetPath), CONV_FROM_UTF8( Text ) );
|
component->SetRef( &(aComponentsList[ii].m_SheetPath), CONV_FROM_UTF8( Text ) );
|
||||||
component->m_Multi = aComponentsList[ii].m_Unit;
|
component->m_Multi = aComponentsList[ii].m_Unit;
|
||||||
component->SetUnitSelection( &(aComponentsList[ii].m_SheetPath),
|
component->SetUnitSelection( &(aComponentsList[ii].m_SheetPath),
|
||||||
aComponentsList[ii].m_Unit );
|
aComponentsList[ii].m_Unit );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -657,7 +692,7 @@ int CheckAnnotate( WinEDA_SchematicFrame* frame, bool oneSheetOnly )
|
||||||
|
|
||||||
cmpref = CONV_FROM_UTF8( ComponentsList[ii].m_Reference );
|
cmpref = CONV_FROM_UTF8( ComponentsList[ii].m_Reference );
|
||||||
msg.Printf( _( "item not annotated: %s%s" ),
|
msg.Printf( _( "item not annotated: %s%s" ),
|
||||||
cmpref.GetData(), Buff.GetData() );
|
cmpref.GetData(), Buff.GetData() );
|
||||||
|
|
||||||
if( (ComponentsList[ii].m_Unit > 0) && (ComponentsList[ii].m_Unit < 0x7FFFFFFF) )
|
if( (ComponentsList[ii].m_Unit > 0) && (ComponentsList[ii].m_Unit < 0x7FFFFFFF) )
|
||||||
{
|
{
|
||||||
|
@ -679,10 +714,10 @@ int CheckAnnotate( WinEDA_SchematicFrame* frame, bool oneSheetOnly )
|
||||||
|
|
||||||
cmpref = CONV_FROM_UTF8( ComponentsList[ii].m_Reference );
|
cmpref = CONV_FROM_UTF8( ComponentsList[ii].m_Reference );
|
||||||
msg.Printf( _( "Error item %s%s" ), cmpref.GetData(),
|
msg.Printf( _( "Error item %s%s" ), cmpref.GetData(),
|
||||||
Buff.GetData() );
|
Buff.GetData() );
|
||||||
|
|
||||||
Buff.Printf( _( " unit %d and no more than %d parts" ),
|
Buff.Printf( _( " unit %d and no more than %d parts" ),
|
||||||
ComponentsList[ii].m_Unit, ComponentsList[ii].m_Entry->m_UnitCount );
|
ComponentsList[ii].m_Unit, ComponentsList[ii].m_Entry->m_UnitCount );
|
||||||
msg << Buff;
|
msg << Buff;
|
||||||
DisplayError( frame, msg );
|
DisplayError( frame, msg );
|
||||||
error++;
|
error++;
|
||||||
|
@ -699,7 +734,7 @@ int CheckAnnotate( WinEDA_SchematicFrame* frame, bool oneSheetOnly )
|
||||||
msg.Empty();
|
msg.Empty();
|
||||||
Buff.Empty();
|
Buff.Empty();
|
||||||
|
|
||||||
if( (ComponentsList[ii].CompareRef(ComponentsList[ii + 1]) != 0)
|
if( (ComponentsList[ii].CompareRef( ComponentsList[ii + 1] ) != 0)
|
||||||
|| ( ComponentsList[ii].m_NumRef != ComponentsList[ii + 1].m_NumRef ) )
|
|| ( ComponentsList[ii].m_NumRef != ComponentsList[ii + 1].m_NumRef ) )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@ -714,7 +749,7 @@ int CheckAnnotate( WinEDA_SchematicFrame* frame, bool oneSheetOnly )
|
||||||
|
|
||||||
cmpref = CONV_FROM_UTF8( ComponentsList[ii].m_Reference );
|
cmpref = CONV_FROM_UTF8( ComponentsList[ii].m_Reference );
|
||||||
msg.Printf( _( "Multiple item %s%s" ),
|
msg.Printf( _( "Multiple item %s%s" ),
|
||||||
cmpref.GetData(), Buff.GetData() );
|
cmpref.GetData(), Buff.GetData() );
|
||||||
|
|
||||||
if( (ComponentsList[ii].m_Unit > 0) && (ComponentsList[ii].m_Unit < 0x7FFFFFFF) )
|
if( (ComponentsList[ii].m_Unit > 0) && (ComponentsList[ii].m_Unit < 0x7FFFFFFF) )
|
||||||
{
|
{
|
||||||
|
@ -737,7 +772,7 @@ int CheckAnnotate( WinEDA_SchematicFrame* frame, bool oneSheetOnly )
|
||||||
|
|
||||||
cmpref = CONV_FROM_UTF8( ComponentsList[ii].m_Reference );
|
cmpref = CONV_FROM_UTF8( ComponentsList[ii].m_Reference );
|
||||||
msg.Printf( _( "Multiple item %s%s" ),
|
msg.Printf( _( "Multiple item %s%s" ),
|
||||||
cmpref.GetData(), Buff.GetData() );
|
cmpref.GetData(), Buff.GetData() );
|
||||||
|
|
||||||
if( (ComponentsList[ii].m_Unit > 0) && (ComponentsList[ii].m_Unit < 0x7FFFFFFF) )
|
if( (ComponentsList[ii].m_Unit > 0) && (ComponentsList[ii].m_Unit < 0x7FFFFFFF) )
|
||||||
{
|
{
|
||||||
|
@ -750,30 +785,30 @@ int CheckAnnotate( WinEDA_SchematicFrame* frame, bool oneSheetOnly )
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Error if values are different between units, for the same reference */
|
/* Error if values are different between units, for the same reference */
|
||||||
int next = ii+1;
|
int next = ii + 1;
|
||||||
if( ComponentsList[ii].CompareValue( ComponentsList[next] ) != 0 )
|
if( ComponentsList[ii].CompareValue( ComponentsList[next] ) != 0 )
|
||||||
{
|
{
|
||||||
wxString nextcmpref;
|
wxString nextcmpref;
|
||||||
cmpref = CONV_FROM_UTF8( ComponentsList[ii].m_Reference );
|
cmpref = CONV_FROM_UTF8( ComponentsList[ii].m_Reference );
|
||||||
nextcmpref = CONV_FROM_UTF8( ComponentsList[next].m_Reference );
|
nextcmpref = CONV_FROM_UTF8( ComponentsList[next].m_Reference );
|
||||||
#if defined (KICAD_GOST)
|
#if defined(KICAD_GOST)
|
||||||
msg.Printf( _( "Diff values for %s%d.%c (%s) and %s%d.%c (%s)" ),
|
msg.Printf( _( "Diff values for %s%d.%c (%s) and %s%d.%c (%s)" ),
|
||||||
cmpref.GetData(),
|
cmpref.GetData(),
|
||||||
ComponentsList[ii].m_NumRef,
|
ComponentsList[ii].m_NumRef,
|
||||||
ComponentsList[ii].m_Unit + '1' - 1,
|
ComponentsList[ii].m_Unit + '1' - 1,
|
||||||
ComponentsList[ii].m_Value->GetData(), nextcmpref.GetData(),
|
ComponentsList[ii].m_Value->GetData(), nextcmpref.GetData(),
|
||||||
ComponentsList[next].m_NumRef,
|
ComponentsList[next].m_NumRef,
|
||||||
ComponentsList[next].m_Unit + '1' - 1,
|
ComponentsList[next].m_Unit + '1' - 1,
|
||||||
ComponentsList[next].m_Value->GetData() );
|
ComponentsList[next].m_Value->GetData() );
|
||||||
#else
|
#else
|
||||||
msg.Printf( _( "Diff values for %s%d%c (%s) and %s%d%c (%s)" ),
|
msg.Printf( _( "Diff values for %s%d%c (%s) and %s%d%c (%s)" ),
|
||||||
cmpref.GetData(),
|
cmpref.GetData(),
|
||||||
ComponentsList[ii].m_NumRef,
|
ComponentsList[ii].m_NumRef,
|
||||||
ComponentsList[ii].m_Unit + 'A' - 1,
|
ComponentsList[ii].m_Unit + 'A' - 1,
|
||||||
ComponentsList[ii].m_Value->GetData(), nextcmpref.GetData(),
|
ComponentsList[ii].m_Value->GetData(), nextcmpref.GetData(),
|
||||||
ComponentsList[next].m_NumRef,
|
ComponentsList[next].m_NumRef,
|
||||||
ComponentsList[next].m_Unit + 'A' - 1,
|
ComponentsList[next].m_Unit + 'A' - 1,
|
||||||
ComponentsList[next].m_Value->GetData() );
|
ComponentsList[next].m_Value->GetData() );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
DisplayError( frame, msg );
|
DisplayError( frame, msg );
|
||||||
|
@ -781,5 +816,105 @@ int CheckAnnotate( WinEDA_SchematicFrame* frame, bool oneSheetOnly )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// count the duplicated time stamps
|
||||||
|
sort( ComponentsList.begin(), ComponentsList.end(), SortByTimeStamp );
|
||||||
|
for( int ii = 0; (ii < imax) && (error < 4); ii++ )
|
||||||
|
{
|
||||||
|
if( (ComponentsList[ii].m_TimeStamp != ComponentsList[ii + 1].m_TimeStamp)
|
||||||
|
|| ( ComponentsList[ii].m_SheetPath != ComponentsList[ii + 1].m_SheetPath ) )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
/* Same time stamp found. */
|
||||||
|
wxString nextcmpref;
|
||||||
|
wxString full_path;
|
||||||
|
full_path.Printf( wxT( "%s%8.8X" ),
|
||||||
|
ComponentsList[ii].m_SheetPath.Path().GetData(),
|
||||||
|
ComponentsList[ii].m_TimeStamp );
|
||||||
|
cmpref = CONV_FROM_UTF8( ComponentsList[ii].m_Reference );
|
||||||
|
nextcmpref = CONV_FROM_UTF8( ComponentsList[ii + 1].m_Reference );
|
||||||
|
msg.Printf( _( "duplicate time stamp (%s) for %s%d and %s%d" ),
|
||||||
|
full_path.GetData(),
|
||||||
|
cmpref.GetData(), ComponentsList[ii].m_NumRef,
|
||||||
|
nextcmpref.GetData(), ComponentsList[ii + 1].m_NumRef );
|
||||||
|
DisplayError( frame, msg );
|
||||||
|
error++;
|
||||||
|
}
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/***********************************************
|
||||||
|
* function to sort sch_items by time stamp
|
||||||
|
************************************************/
|
||||||
|
static bool SortItemByTimeStamp( const SCH_ITEM* item1, const SCH_ITEM* item2 )
|
||||||
|
{
|
||||||
|
int ii = item1->m_TimeStamp - item2->m_TimeStamp;
|
||||||
|
|
||||||
|
/* if same time stamp, compare type, in order to have
|
||||||
|
* first : component
|
||||||
|
* after : sheet
|
||||||
|
* because this is the first item that have its time stamp changed
|
||||||
|
* and changing the time stamp of a sheet can loose annotation
|
||||||
|
*/
|
||||||
|
|
||||||
|
if( ii == 0 && ( item1->Type() != item2->Type()) )
|
||||||
|
if ( item1->Type() == DRAW_SHEET_STRUCT_TYPE )
|
||||||
|
ii = -1;
|
||||||
|
|
||||||
|
return ii < 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** Function ReplaceDuplicatedTimeStamps
|
||||||
|
* Search for duplicate time stamps in the whole hierarchy, and replace duplicae by new time stamps
|
||||||
|
*/
|
||||||
|
int ReplaceDuplicatedTimeStamps()
|
||||||
|
{
|
||||||
|
/* Build the whole screen list */
|
||||||
|
EDA_ScreenList ScreenList;
|
||||||
|
|
||||||
|
/* Build the list of items with time stamps (components and sheets)
|
||||||
|
* note: if all items have a different time stamp, this ensure also different paths in complex hierarchy
|
||||||
|
* this is the reason we have differant time stamps for components AND sheets
|
||||||
|
*/
|
||||||
|
std::vector <SCH_ITEM*> itemlist;
|
||||||
|
SCH_SCREEN* screen;
|
||||||
|
SCH_ITEM* item;
|
||||||
|
for( screen = ScreenList.GetFirst(); screen != NULL; screen = ScreenList.GetNext() )
|
||||||
|
{
|
||||||
|
item = screen->EEDrawList;
|
||||||
|
while( item )
|
||||||
|
{
|
||||||
|
if( (item->Type() == DRAW_SHEET_STRUCT_TYPE)
|
||||||
|
|| (item->Type() == TYPE_SCH_COMPONENT) )
|
||||||
|
itemlist.push_back( item );
|
||||||
|
|
||||||
|
item = item->Next();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Test and replace duplicated time stamps
|
||||||
|
|
||||||
|
int imax = itemlist.size() - 1;
|
||||||
|
int errcount = 0;
|
||||||
|
sort( itemlist.begin(), itemlist.end(), SortItemByTimeStamp );
|
||||||
|
for( int ii = 0; ii < imax; ii++ )
|
||||||
|
{
|
||||||
|
item = itemlist[ii];
|
||||||
|
SCH_ITEM* nextitem = itemlist[ii + 1];
|
||||||
|
if( item->m_TimeStamp == nextitem->m_TimeStamp )
|
||||||
|
{
|
||||||
|
errcount++;
|
||||||
|
// for a component, update its Time stamp and its paths (m_PathsAndReferences field)
|
||||||
|
if (item->Type() == TYPE_SCH_COMPONENT )
|
||||||
|
((SCH_COMPONENT*) item)->SetTimeStamp( GetTimeStamp());
|
||||||
|
// for a sheet, update only its time stamp (annotation of its components will be lost)
|
||||||
|
// TODO: see how to change sheet paths for its cmp list (can be possible in most cases)
|
||||||
|
else
|
||||||
|
item->m_TimeStamp = GetTimeStamp();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return errcount;
|
||||||
|
}
|
||||||
|
|
|
@ -28,7 +28,8 @@
|
||||||
extern void AnnotateComponents( WinEDA_SchematicFrame* parent,
|
extern void AnnotateComponents( WinEDA_SchematicFrame* parent,
|
||||||
bool annotateSchematic,
|
bool annotateSchematic,
|
||||||
int sortOption,
|
int sortOption,
|
||||||
bool resetAnnotation );
|
bool resetAnnotation,
|
||||||
|
bool repairsTimestamps );
|
||||||
|
|
||||||
////@begin XPM images
|
////@begin XPM images
|
||||||
////@end XPM images
|
////@end XPM images
|
||||||
|
@ -261,7 +262,7 @@ void WinEDA_AnnotateFrame::OnApplyClick( wxCommandEvent& event )
|
||||||
if (response == wxCANCEL)
|
if (response == wxCANCEL)
|
||||||
return;
|
return;
|
||||||
AnnotateComponents( m_Parent, GetLevel(), GetSortOrder(),
|
AnnotateComponents( m_Parent, GetLevel(), GetSortOrder(),
|
||||||
GetResetItems() );
|
GetResetItems() , true );
|
||||||
m_btnClear->Enable();
|
m_btnClear->Enable();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -77,13 +77,12 @@ static char s_ExportSeparatorSymbol;
|
||||||
|
|
||||||
/**************************************************************************/
|
/**************************************************************************/
|
||||||
void DIALOG_BUILD_BOM::Create_BOM_Lists( bool aTypeFileIsExport,
|
void DIALOG_BUILD_BOM::Create_BOM_Lists( bool aTypeFileIsExport,
|
||||||
bool aIncludeSubComponents,
|
bool aIncludeSubComponents,
|
||||||
char aExportSeparatorSymbol,
|
char aExportSeparatorSymbol,
|
||||||
bool aRunBrowser )
|
bool aRunBrowser )
|
||||||
/**************************************************************************/
|
/**************************************************************************/
|
||||||
{
|
{
|
||||||
wxFileName fn;
|
wxFileName fn;
|
||||||
wxString mask, filename;
|
|
||||||
|
|
||||||
s_ExportSeparatorSymbol = aExportSeparatorSymbol;
|
s_ExportSeparatorSymbol = aExportSeparatorSymbol;
|
||||||
|
|
||||||
|
@ -112,6 +111,7 @@ void DIALOG_BUILD_BOM::Create_BOM_Lists( bool aTypeFileIsExport,
|
||||||
if( aRunBrowser )
|
if( aRunBrowser )
|
||||||
{
|
{
|
||||||
wxString editorname = wxGetApp().GetEditorName();
|
wxString editorname = wxGetApp().GetEditorName();
|
||||||
|
wxString filename = m_ListFileName;
|
||||||
AddDelimiterString( filename );
|
AddDelimiterString( filename );
|
||||||
ExecuteFile( this, editorname, filename );
|
ExecuteFile( this, editorname, filename );
|
||||||
}
|
}
|
||||||
|
@ -120,7 +120,7 @@ void DIALOG_BUILD_BOM::Create_BOM_Lists( bool aTypeFileIsExport,
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
void DIALOG_BUILD_BOM::CreateExportList( const wxString& aFullFileName,
|
void DIALOG_BUILD_BOM::CreateExportList( const wxString& aFullFileName,
|
||||||
bool aIncludeSubComponents )
|
bool aIncludeSubComponents )
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -159,7 +159,7 @@ void DIALOG_BUILD_BOM::CreateExportList( const wxString& aFullFileName,
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
void DIALOG_BUILD_BOM::GenereListeOfItems( const wxString& aFullFileName,
|
void DIALOG_BUILD_BOM::GenereListeOfItems( const wxString& aFullFileName,
|
||||||
bool aIncludeSubComponents )
|
bool aIncludeSubComponents )
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
/** GenereListeOfItems()
|
/** GenereListeOfItems()
|
||||||
|
@ -189,7 +189,7 @@ void DIALOG_BUILD_BOM::GenereListeOfItems( const wxString& aFullFileName,
|
||||||
/* creates the list file */
|
/* creates the list file */
|
||||||
DateAndTime( Line );
|
DateAndTime( Line );
|
||||||
wxString Title = wxGetApp().GetAppName() + wxT( " " ) +
|
wxString Title = wxGetApp().GetAppName() + wxT( " " ) +
|
||||||
GetBuildVersion();
|
GetBuildVersion();
|
||||||
fprintf( f, "%s >> Creation date: %s\n", CONV_TO_UTF8( Title ), Line );
|
fprintf( f, "%s >> Creation date: %s\n", CONV_TO_UTF8( Title ), Line );
|
||||||
|
|
||||||
/* sort component list */
|
/* sort component list */
|
||||||
|
@ -219,8 +219,8 @@ void DIALOG_BUILD_BOM::GenereListeOfItems( const wxString& aFullFileName,
|
||||||
{
|
{
|
||||||
sort( listOfLabels.begin(), listOfLabels.end(), SortLabelsBySheet );
|
sort( listOfLabels.begin(), listOfLabels.end(), SortLabelsBySheet );
|
||||||
msg.Printf( _(
|
msg.Printf( _(
|
||||||
"\n#Global, Hierarchical Labels and PinSheets ( order = Sheet Number ) count = %d\n" ),
|
"\n#Global, Hierarchical Labels and PinSheets ( order = Sheet Number ) count = %d\n" ),
|
||||||
itemCount );
|
itemCount );
|
||||||
fprintf( f, "%s", CONV_TO_UTF8( msg ) );
|
fprintf( f, "%s", CONV_TO_UTF8( msg ) );
|
||||||
PrintListeGLabel( f, listOfLabels );
|
PrintListeGLabel( f, listOfLabels );
|
||||||
}
|
}
|
||||||
|
@ -230,8 +230,8 @@ void DIALOG_BUILD_BOM::GenereListeOfItems( const wxString& aFullFileName,
|
||||||
sort( listOfLabels.begin(), listOfLabels.end(), SortLabelsByValue );
|
sort( listOfLabels.begin(), listOfLabels.end(), SortLabelsByValue );
|
||||||
|
|
||||||
msg.Printf( _(
|
msg.Printf( _(
|
||||||
"\n#Global, Hierarchical Labels and PinSheets ( order = Alphab. ) count = %d\n\n" ),
|
"\n#Global, Hierarchical Labels and PinSheets ( order = Alphab. ) count = %d\n\n" ),
|
||||||
itemCount );
|
itemCount );
|
||||||
fprintf( f, "%s", CONV_TO_UTF8( msg ) );
|
fprintf( f, "%s", CONV_TO_UTF8( msg ) );
|
||||||
PrintListeGLabel( f, listOfLabels );
|
PrintListeGLabel( f, listOfLabels );
|
||||||
}
|
}
|
||||||
|
@ -277,8 +277,8 @@ void BuildComponentsListFromSchematic( std::vector <OBJ_CMP_TO_LIST>& aList )
|
||||||
item.m_Unit = DrawLibItem->GetUnitSelection( sheet );
|
item.m_Unit = DrawLibItem->GetUnitSelection( sheet );
|
||||||
|
|
||||||
strncpy( item.m_Reference,
|
strncpy( item.m_Reference,
|
||||||
CONV_TO_UTF8( DrawLibItem->GetRef( sheet ) ),
|
CONV_TO_UTF8( DrawLibItem->GetRef( sheet ) ),
|
||||||
sizeof( item.m_Reference ) );
|
sizeof( item.m_Reference ) );
|
||||||
|
|
||||||
// Ensure always nul terminate m_Ref.
|
// Ensure always nul terminate m_Ref.
|
||||||
item.m_Reference[sizeof( item.m_Reference ) - 1 ] = 0;
|
item.m_Reference[sizeof( item.m_Reference ) - 1 ] = 0;
|
||||||
|
@ -511,7 +511,7 @@ static void DeleteSubCmp( std::vector <OBJ_CMP_TO_LIST>& aList )
|
||||||
|
|
||||||
/*******************************************************************************************/
|
/*******************************************************************************************/
|
||||||
void DIALOG_BUILD_BOM::PrintFieldData( FILE* f, SCH_COMPONENT* DrawLibItem,
|
void DIALOG_BUILD_BOM::PrintFieldData( FILE* f, SCH_COMPONENT* DrawLibItem,
|
||||||
bool CompactForm )
|
bool CompactForm )
|
||||||
/*******************************************************************************************/
|
/*******************************************************************************************/
|
||||||
{
|
{
|
||||||
// @todo make this variable length
|
// @todo make this variable length
|
||||||
|
@ -534,7 +534,7 @@ void DIALOG_BUILD_BOM::PrintFieldData( FILE* f, SCH_COMPONENT* DrawLibItem,
|
||||||
if( CompactForm )
|
if( CompactForm )
|
||||||
{
|
{
|
||||||
fprintf( f, "%c%s", s_ExportSeparatorSymbol,
|
fprintf( f, "%c%s", s_ExportSeparatorSymbol,
|
||||||
CONV_TO_UTF8( DrawLibItem->GetField( FOOTPRINT )->m_Text ) );
|
CONV_TO_UTF8( DrawLibItem->GetField( FOOTPRINT )->m_Text ) );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
fprintf( f, "; %-12s", CONV_TO_UTF8( DrawLibItem->GetField( FOOTPRINT )->m_Text ) );
|
fprintf( f, "; %-12s", CONV_TO_UTF8( DrawLibItem->GetField( FOOTPRINT )->m_Text ) );
|
||||||
|
@ -542,7 +542,7 @@ void DIALOG_BUILD_BOM::PrintFieldData( FILE* f, SCH_COMPONENT* DrawLibItem,
|
||||||
|
|
||||||
for( ii = FIELD1; ii < DrawLibItem->GetFieldCount(); ii++ )
|
for( ii = FIELD1; ii < DrawLibItem->GetFieldCount(); ii++ )
|
||||||
{
|
{
|
||||||
if ( ii <= FIELD8 ) // see users fields 1 to 8
|
if( ii <= FIELD8 ) // see users fields 1 to 8
|
||||||
{
|
{
|
||||||
FieldCtrl = FieldListCtrl[ii - FIELD1];
|
FieldCtrl = FieldListCtrl[ii - FIELD1];
|
||||||
if( FieldCtrl == NULL )
|
if( FieldCtrl == NULL )
|
||||||
|
@ -551,14 +551,14 @@ void DIALOG_BUILD_BOM::PrintFieldData( FILE* f, SCH_COMPONENT* DrawLibItem,
|
||||||
if( !FieldCtrl->IsChecked() && !m_AddAllFields->IsChecked() )
|
if( !FieldCtrl->IsChecked() && !m_AddAllFields->IsChecked() )
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( ! m_AddAllFields->IsChecked() )
|
if( !m_AddAllFields->IsChecked() )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
if( CompactForm )
|
if( CompactForm )
|
||||||
fprintf( f, "%c%s", s_ExportSeparatorSymbol,
|
fprintf( f, "%c%s", s_ExportSeparatorSymbol,
|
||||||
CONV_TO_UTF8( DrawLibItem->GetField( ii )->m_Text ) );
|
CONV_TO_UTF8( DrawLibItem->GetField( ii )->m_Text ) );
|
||||||
else
|
else
|
||||||
fprintf( f, "; %-12s", CONV_TO_UTF8( DrawLibItem->GetField( ii )->m_Text ) );
|
fprintf( f, "; %-12s", CONV_TO_UTF8( DrawLibItem->GetField( ii )->m_Text ) );
|
||||||
}
|
}
|
||||||
|
@ -570,8 +570,7 @@ int DIALOG_BUILD_BOM::PrintComponentsListByRef(
|
||||||
FILE* f,
|
FILE* f,
|
||||||
std::vector <OBJ_CMP_TO_LIST>& aList,
|
std::vector <OBJ_CMP_TO_LIST>& aList,
|
||||||
bool CompactForm,
|
bool CompactForm,
|
||||||
bool
|
bool aIncludeSubComponents )
|
||||||
aIncludeSubComponents )
|
|
||||||
/*********************************************************************************************/
|
/*********************************************************************************************/
|
||||||
|
|
||||||
/* Print the B.O.M sorted by reference
|
/* Print the B.O.M sorted by reference
|
||||||
|
@ -657,9 +656,13 @@ int DIALOG_BUILD_BOM::PrintComponentsListByRef(
|
||||||
if( ( Multi > 1 ) && aIncludeSubComponents )
|
if( ( Multi > 1 ) && aIncludeSubComponents )
|
||||||
#if defined (KICAD_GOST)
|
#if defined (KICAD_GOST)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Unit = aList[ii].m_Unit + '1' - 1;
|
Unit = aList[ii].m_Unit + '1' - 1;
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Unit = aList[ii].m_Unit + 'A' - 1;
|
Unit = aList[ii].m_Unit + 'A' - 1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -669,10 +672,10 @@ int DIALOG_BUILD_BOM::PrintComponentsListByRef(
|
||||||
|
|
||||||
if( CompactForm )
|
if( CompactForm )
|
||||||
fprintf( f, "%s%c%s", CmpName, s_ExportSeparatorSymbol,
|
fprintf( f, "%s%c%s", CmpName, s_ExportSeparatorSymbol,
|
||||||
CONV_TO_UTF8( DrawLibItem->GetField( VALUE )->m_Text ) );
|
CONV_TO_UTF8( DrawLibItem->GetField( VALUE )->m_Text ) );
|
||||||
else
|
else
|
||||||
fprintf( f, "| %-10s %-12s", CmpName,
|
fprintf( f, "| %-10s %-12s", CmpName,
|
||||||
CONV_TO_UTF8( DrawLibItem->GetField( VALUE )->m_Text ) );
|
CONV_TO_UTF8( DrawLibItem->GetField( VALUE )->m_Text ) );
|
||||||
|
|
||||||
if( aIncludeSubComponents )
|
if( aIncludeSubComponents )
|
||||||
{
|
{
|
||||||
|
@ -764,7 +767,7 @@ int DIALOG_BUILD_BOM::PrintComponentsListByVal(
|
||||||
sprintf( CmpName, "%s%c", aList[ii].m_Reference, Unit );
|
sprintf( CmpName, "%s%c", aList[ii].m_Reference, Unit );
|
||||||
#endif
|
#endif
|
||||||
fprintf( f, "| %-12s %-10s", CONV_TO_UTF8( DrawLibItem->GetField(
|
fprintf( f, "| %-12s %-10s", CONV_TO_UTF8( DrawLibItem->GetField(
|
||||||
VALUE )->m_Text ), CmpName );
|
VALUE )->m_Text ), CmpName );
|
||||||
|
|
||||||
// print the sheet path
|
// print the sheet path
|
||||||
if( aIncludeSubComponents )
|
if( aIncludeSubComponents )
|
||||||
|
|
|
@ -415,6 +415,23 @@ void SCH_COMPONENT::SetRef( DrawSheetPath* sheet, const wxString& ref )
|
||||||
rf->m_Text = ref; // for drawing.
|
rf->m_Text = ref; // for drawing.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** function SetTimeStamp
|
||||||
|
* Change the old time stamp to the new time stamp.
|
||||||
|
* the time stamp is also modified in paths
|
||||||
|
* @param aNewTimeStamp = new time stamp
|
||||||
|
*/
|
||||||
|
void SCH_COMPONENT::SetTimeStamp( long aNewTimeStamp)
|
||||||
|
{
|
||||||
|
wxString string_timestamp, string_oldtimestamp;
|
||||||
|
string_timestamp.Printf(wxT("%8.8X"), aNewTimeStamp);
|
||||||
|
string_oldtimestamp.Printf(wxT("%8.8X"), m_TimeStamp);
|
||||||
|
m_TimeStamp = aNewTimeStamp;
|
||||||
|
for( unsigned ii = 0; ii < m_PathsAndReferences.GetCount(); ii++ )
|
||||||
|
{
|
||||||
|
m_PathsAndReferences[ii].Replace(string_oldtimestamp.GetData(), string_timestamp.GetData());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************/
|
/***********************************************************/
|
||||||
//returns the unit selection, for the given sheet path.
|
//returns the unit selection, for the given sheet path.
|
||||||
|
|
|
@ -112,8 +112,7 @@ private:
|
||||||
* with:
|
* with:
|
||||||
* path = /<timestamp1>/<timestamp2> (subsheet path, = / for the root scheet)
|
* path = /<timestamp1>/<timestamp2> (subsheet path, = / for the root scheet)
|
||||||
* reference = reference for this path (C23, R5, U78 ... )
|
* reference = reference for this path (C23, R5, U78 ... )
|
||||||
* multi = part selection in multi parts per package (0 or 1 for àne part
|
* multi = part selection in multi parts per package (0 or 1 for one part per package)
|
||||||
* per package)
|
|
||||||
*/
|
*/
|
||||||
wxArrayString m_PathsAndReferences;
|
wxArrayString m_PathsAndReferences;
|
||||||
|
|
||||||
|
@ -193,6 +192,13 @@ public:
|
||||||
*/
|
*/
|
||||||
void ClearAnnotation( DrawSheetPath* aSheet );
|
void ClearAnnotation( DrawSheetPath* aSheet );
|
||||||
|
|
||||||
|
/** function SetTimeStamp
|
||||||
|
* Change the old time stamp to the new time stamp.
|
||||||
|
* the time stamp is also modified in paths
|
||||||
|
* @param aNewTimeStamp = new time stamp
|
||||||
|
*/
|
||||||
|
void SetTimeStamp( long aNewTimeStamp);
|
||||||
|
|
||||||
EDA_Rect GetBoundaryBox() const;
|
EDA_Rect GetBoundaryBox() const;
|
||||||
EDA_Rect GetBoundingBox();
|
EDA_Rect GetBoundingBox();
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -474,7 +474,7 @@ void WinEDA_NetlistFrame::GenNetlist( wxCommandEvent& event )
|
||||||
|
|
||||||
wxFileDialog dlg( this, _( "Save Netlist Files" ), fn.GetPath(),
|
wxFileDialog dlg( this, _( "Save Netlist Files" ), fn.GetPath(),
|
||||||
fn.GetFullName(), FileWildcard,
|
fn.GetFullName(), FileWildcard,
|
||||||
wxFD_SAVE | wxFD_OVERWRITE_PROMPT );
|
wxFD_SAVE /*| wxFD_OVERWRITE_PROMPT*/ );
|
||||||
|
|
||||||
if( dlg.ShowModal() == wxID_CANCEL )
|
if( dlg.ShowModal() == wxID_CANCEL )
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -1,18 +1,56 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
<key>CFBundleDisplayName</key>
|
<key>CFBundleDocumentTypes</key>
|
||||||
<string>gerbview</string>
|
<array>
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleTypeExtensions</key>
|
||||||
|
<array>
|
||||||
|
<string>pen</string>
|
||||||
|
<string>gbr</string>
|
||||||
|
<string>gbx</string>
|
||||||
|
<string>lgr</string>
|
||||||
|
<string>ger</string>
|
||||||
|
<string>pho</string>
|
||||||
|
</array>
|
||||||
|
<key>CFBundleTypeIconFile</key>
|
||||||
|
<string>gerbview_doc.icns</string>
|
||||||
|
<key>CFBundleTypeName</key>
|
||||||
|
<string>gerbview document</string>
|
||||||
|
<key>LSHandlerRank</key>
|
||||||
|
<string>Default</string>
|
||||||
|
</dict>
|
||||||
|
</array>
|
||||||
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
|
<string>English</string>
|
||||||
<key>CFBundleExecutable</key>
|
<key>CFBundleExecutable</key>
|
||||||
<string>gerbview</string>
|
<string>gerbview</string>
|
||||||
|
<key>CFBundleGetInfoString</key>
|
||||||
|
<string></string>
|
||||||
<key>CFBundleIconFile</key>
|
<key>CFBundleIconFile</key>
|
||||||
<string>gerbview.icns</string>
|
<string>gerbview.icns</string>
|
||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
<string>org.kicad-eda.gerbview</string>
|
<string>org.kicad-eda.gerbview</string>
|
||||||
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
|
<string>6.0</string>
|
||||||
|
<key>CFBundleLongVersionString</key>
|
||||||
|
<string></string>
|
||||||
<key>CFBundleName</key>
|
<key>CFBundleName</key>
|
||||||
<string>Gerbview</string>
|
<string></string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>APPL</string>
|
||||||
|
<key>CFBundleShortVersionString</key>
|
||||||
|
<string></string>
|
||||||
|
<key>CFBundleSignature</key>
|
||||||
|
<string>????</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string></string>
|
||||||
|
<key>CSResourcesFileMapped</key>
|
||||||
|
<true/>
|
||||||
<key>LSRequiresCarbon</key>
|
<key>LSRequiresCarbon</key>
|
||||||
<true/>
|
<true/>
|
||||||
|
<key>NSHumanReadableCopyright</key>
|
||||||
|
<string></string>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|
Binary file not shown.
|
@ -1,29 +1,47 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
<key>CFBundleDisplayName</key>
|
|
||||||
<string>Kicad Project Manager</string>
|
|
||||||
<key>CFBundleDocumentTypes</key>
|
<key>CFBundleDocumentTypes</key>
|
||||||
<array>
|
<array>
|
||||||
<dict>
|
<dict>
|
||||||
<key>CFBundleTypeExtensions</key>
|
|
||||||
<array>
|
|
||||||
<string>pro</string>
|
|
||||||
</array>
|
|
||||||
<key>CFBundleTypeIconFile</key>
|
<key>CFBundleTypeIconFile</key>
|
||||||
<string>file_pro.icns</string>
|
<string>kicad_doc.icns</string>
|
||||||
|
<key>CFBundleTypeName</key>
|
||||||
|
<string>kicad project files</string>
|
||||||
|
<key>LSHandlerRank</key>
|
||||||
|
<string>Owner</string>
|
||||||
</dict>
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
|
<string>English</string>
|
||||||
<key>CFBundleExecutable</key>
|
<key>CFBundleExecutable</key>
|
||||||
<string>kicad</string>
|
<string>kicad</string>
|
||||||
|
<key>CFBundleGetInfoString</key>
|
||||||
|
<string></string>
|
||||||
<key>CFBundleIconFile</key>
|
<key>CFBundleIconFile</key>
|
||||||
<string>kicad.icns</string>
|
<string>kicad.icns</string>
|
||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
<string>org.kicad-eda.kicad</string>
|
<string>org.kicad-eda.kicad</string>
|
||||||
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
|
<string>6.0</string>
|
||||||
|
<key>CFBundleLongVersionString</key>
|
||||||
|
<string></string>
|
||||||
<key>CFBundleName</key>
|
<key>CFBundleName</key>
|
||||||
<string>Kicad</string>
|
<string></string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>APPL</string>
|
||||||
|
<key>CFBundleShortVersionString</key>
|
||||||
|
<string></string>
|
||||||
|
<key>CFBundleSignature</key>
|
||||||
|
<string>????</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string></string>
|
||||||
|
<key>CSResourcesFileMapped</key>
|
||||||
|
<true/>
|
||||||
<key>LSRequiresCarbon</key>
|
<key>LSRequiresCarbon</key>
|
||||||
<true/>
|
<true/>
|
||||||
|
<key>NSHumanReadableCopyright</key>
|
||||||
|
<string></string>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|
Binary file not shown.
|
@ -1,18 +1,49 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
<key>CFBundleDisplayName</key>
|
<key>CFBundleDocumentTypes</key>
|
||||||
<string>Pcb Router</string>
|
<array>
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleTypeIconFile</key>
|
||||||
|
<string>pcbnew_doc.icns</string>
|
||||||
|
<key>CFBundleTypeExtensions</key>
|
||||||
|
<array>
|
||||||
|
<string>brd</string>
|
||||||
|
</array>
|
||||||
|
<key>CFBundleTypeName</key>
|
||||||
|
<string>pcbnew board</string>
|
||||||
|
<key>LSHandlerRank</key>
|
||||||
|
<string>Owner</string>
|
||||||
|
</dict>
|
||||||
|
</array>
|
||||||
<key>CFBundleExecutable</key>
|
<key>CFBundleExecutable</key>
|
||||||
<string>pcbnew</string>
|
<string>pcbnew</string>
|
||||||
|
<key>CFBundleGetInfoString</key>
|
||||||
|
<string></string>
|
||||||
<key>CFBundleIconFile</key>
|
<key>CFBundleIconFile</key>
|
||||||
<string>pcbnew.icns</string>
|
<string>pcbnew.icns</string>
|
||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
<string>org.kicad-eda.pcbnew</string>
|
<string>org.kicad-eda.pcbnew</string>
|
||||||
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
|
<string>6.0</string>
|
||||||
|
<key>CFBundleLongVersionString</key>
|
||||||
|
<string></string>
|
||||||
<key>CFBundleName</key>
|
<key>CFBundleName</key>
|
||||||
<string>pcbnew</string>
|
<string>pcbnew</string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>APPL</string>
|
||||||
|
<key>CFBundleShortVersionString</key>
|
||||||
|
<string></string>
|
||||||
|
<key>CFBundleSignature</key>
|
||||||
|
<string>????</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string></string>
|
||||||
|
<key>CSResourcesFileMapped</key>
|
||||||
|
<true/>
|
||||||
<key>LSRequiresCarbon</key>
|
<key>LSRequiresCarbon</key>
|
||||||
<true/>
|
<true/>
|
||||||
|
<key>NSHumanReadableCopyright</key>
|
||||||
|
<string></string>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|
|
@ -63,7 +63,7 @@ void WinEDA_PcbFrame::RecreateBOMFileFromBoard( wxCommandEvent& aEvent )
|
||||||
fn = GetScreen()->m_FileName;
|
fn = GetScreen()->m_FileName;
|
||||||
fn.SetExt( CsvFileExtension );
|
fn.SetExt( CsvFileExtension );
|
||||||
|
|
||||||
wxFileDialog dlg( this, _( "Save Bill of Materials" ), wxEmptyString,
|
wxFileDialog dlg( this, _( "Save Bill of Materials" ), wxGetCwd(),
|
||||||
fn.GetFullName(), CsvFileWildcard,
|
fn.GetFullName(), CsvFileWildcard,
|
||||||
wxFD_SAVE | wxFD_OVERWRITE_PROMPT );
|
wxFD_SAVE | wxFD_OVERWRITE_PROMPT );
|
||||||
|
|
||||||
|
|
|
@ -82,7 +82,7 @@ DIALOG_NETLIST_FBP::DIALOG_NETLIST_FBP( wxWindow* parent, wxWindowID id, const w
|
||||||
|
|
||||||
bRightSizerButtons->Add( m_button4, 0, wxALL|wxEXPAND, 5 );
|
bRightSizerButtons->Add( m_button4, 0, wxALL|wxEXPAND, 5 );
|
||||||
|
|
||||||
m_button5 = new wxButton( this, wxID_ANY, _("Close"), wxDefaultPosition, wxDefaultSize, 0 );
|
m_button5 = new wxButton( this, wxID_CANCEL, _("Close"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||||
bRightSizerButtons->Add( m_button5, 0, wxALL|wxEXPAND, 5 );
|
bRightSizerButtons->Add( m_button5, 0, wxALL|wxEXPAND, 5 );
|
||||||
|
|
||||||
bUpperSizer->Add( bRightSizerButtons, 0, wxALIGN_CENTER_VERTICAL, 5 );
|
bUpperSizer->Add( bRightSizerButtons, 0, wxALIGN_CENTER_VERTICAL, 5 );
|
||||||
|
|
|
@ -551,7 +551,7 @@
|
||||||
<property name="fg"></property>
|
<property name="fg"></property>
|
||||||
<property name="font"></property>
|
<property name="font"></property>
|
||||||
<property name="hidden">0</property>
|
<property name="hidden">0</property>
|
||||||
<property name="id">wxID_ANY</property>
|
<property name="id">wxID_CANCEL</property>
|
||||||
<property name="label">Close</property>
|
<property name="label">Close</property>
|
||||||
<property name="maximum_size"></property>
|
<property name="maximum_size"></property>
|
||||||
<property name="minimum_size"></property>
|
<property name="minimum_size"></property>
|
||||||
|
|
Binary file not shown.
Loading…
Reference in New Issue