Commit 014d852b authored by stambaughw's avatar stambaughw

Dialog work and other minor changes.

* Replace EESchema sheet properties dialog with wxFormBuilder version.
* Editing an existing sheet now marks schematic as modified.
* Code style updates for some of my previous work.
* Improvements to the CMP_LIB_ENTRY object.
* Replaced symbol edit export fprintf code with wxFFile implementation.
* GCC compiler warning fix in pcbnew/drc.cpp.
parent 867737e2
...@@ -65,6 +65,8 @@ set(EESCHEMA_SRCS ...@@ -65,6 +65,8 @@ set(EESCHEMA_SRCS
dialog_lib_new_component_base.cpp dialog_lib_new_component_base.cpp
dialog_print_using_printer_base.cpp dialog_print_using_printer_base.cpp
dialog_print_using_printer.cpp dialog_print_using_printer.cpp
dialog_sch_sheet_props.cpp
dialog_sch_sheet_props_base.cpp
dialog_SVG_print.cpp dialog_SVG_print.cpp
dialog_SVG_print_base.cpp dialog_SVG_print_base.cpp
edit_component_in_lib.cpp edit_component_in_lib.cpp
......
...@@ -75,7 +75,7 @@ void ReAnnotatePowerSymbolsOnly( void ) ...@@ -75,7 +75,7 @@ void ReAnnotatePowerSymbolsOnly( void )
LIB_COMPONENT* Entry = LIB_COMPONENT* Entry =
CMP_LIBRARY::FindLibraryComponent( DrawLibItem->m_ChipName ); CMP_LIBRARY::FindLibraryComponent( DrawLibItem->m_ChipName );
if( (Entry == NULL) || (Entry->m_Options != ENTRY_POWER) ) if( ( Entry == NULL ) || !Entry->isPower() )
continue; continue;
//DrawLibItem->ClearAnnotation(sheet); this clears all annotation :( //DrawLibItem->ClearAnnotation(sheet); this clears all annotation :(
......
...@@ -23,34 +23,26 @@ ...@@ -23,34 +23,26 @@
/* class CMP_LIB_ENTRY */ /* class CMP_LIB_ENTRY */
/*********************/ /*********************/
/* Basic class for library component description CMP_LIB_ENTRY::CMP_LIB_ENTRY( LibrEntryType aType, const wxString& aName,
* Not directly used CMP_LIBRARY* aLibrary ) :
* Used to create the 2 derived classes :
* - LIB_ALIAS
* - LIB_COMPONENT
*/
/********************************************************************/
CMP_LIB_ENTRY::CMP_LIB_ENTRY( LibrEntryType type, const wxString& name,
CMP_LIBRARY* lib ) :
EDA_BaseStruct( LIBCOMPONENT_STRUCT_TYPE ) EDA_BaseStruct( LIBCOMPONENT_STRUCT_TYPE )
{ {
Type = type; type = aType;
m_Name = name; name = aName;
m_lib = lib; library = aLibrary;
} }
CMP_LIB_ENTRY::CMP_LIB_ENTRY( CMP_LIB_ENTRY& entry, CMP_LIBRARY* lib ) : CMP_LIB_ENTRY::CMP_LIB_ENTRY( CMP_LIB_ENTRY& aEntry, CMP_LIBRARY* aLibrary ) :
EDA_BaseStruct( entry ) EDA_BaseStruct( aEntry )
{ {
Type = entry.Type; type = aEntry.type;
m_Name = entry.m_Name; name = aEntry.name;
m_Doc = entry.m_Doc; description = aEntry.description;
m_KeyWord = entry.m_KeyWord; keyWords = aEntry.keyWords;
m_DocFile = entry.m_DocFile; docFileName = aEntry.docFileName;
m_Options = entry.m_Options; options = aEntry.options;
m_lib = lib; library = aLibrary;
} }
...@@ -61,8 +53,8 @@ CMP_LIB_ENTRY::~CMP_LIB_ENTRY() ...@@ -61,8 +53,8 @@ CMP_LIB_ENTRY::~CMP_LIB_ENTRY()
wxString CMP_LIB_ENTRY::GetLibraryName() wxString CMP_LIB_ENTRY::GetLibraryName()
{ {
if( m_lib != NULL ) if( library != NULL )
return m_lib->GetName(); return library->GetName();
return wxString( _( "none" ) ); return wxString( _( "none" ) );
} }
...@@ -78,22 +70,22 @@ wxString CMP_LIB_ENTRY::GetLibraryName() ...@@ -78,22 +70,22 @@ wxString CMP_LIB_ENTRY::GetLibraryName()
*/ */
bool CMP_LIB_ENTRY::SaveDoc( FILE* aFile ) bool CMP_LIB_ENTRY::SaveDoc( FILE* aFile )
{ {
if( m_Doc.IsEmpty() && m_KeyWord.IsEmpty() && m_DocFile.IsEmpty() ) if( description.IsEmpty() && keyWords.IsEmpty() && docFileName.IsEmpty() )
return true; return true;
if( fprintf( aFile, "#\n$CMP %s\n", CONV_TO_UTF8( m_Name ) ) < 0 ) if( fprintf( aFile, "#\n$CMP %s\n", CONV_TO_UTF8( name ) ) < 0 )
return false; return false;
if( ! m_Doc.IsEmpty() if( ! description.IsEmpty()
&& fprintf( aFile, "D %s\n", CONV_TO_UTF8( m_Doc ) ) < 0 ) && fprintf( aFile, "D %s\n", CONV_TO_UTF8( description ) ) < 0 )
return false; return false;
if( ! m_KeyWord.IsEmpty() if( ! keyWords.IsEmpty()
&& fprintf( aFile, "K %s\n", CONV_TO_UTF8( m_KeyWord ) ) < 0 ) && fprintf( aFile, "K %s\n", CONV_TO_UTF8( keyWords ) ) < 0 )
return false; return false;
if( ! m_DocFile.IsEmpty() if( ! docFileName.IsEmpty()
&& fprintf( aFile, "F %s\n", CONV_TO_UTF8( m_DocFile ) ) < 0 ) && fprintf( aFile, "F %s\n", CONV_TO_UTF8( docFileName ) ) < 0 )
return false; return false;
if( fprintf( aFile, "$ENDCMP\n" ) < 0 ) if( fprintf( aFile, "$ENDCMP\n" ) < 0 )
...@@ -103,21 +95,21 @@ bool CMP_LIB_ENTRY::SaveDoc( FILE* aFile ) ...@@ -103,21 +95,21 @@ bool CMP_LIB_ENTRY::SaveDoc( FILE* aFile )
} }
bool CMP_LIB_ENTRY::operator==( const wxChar* name ) const bool CMP_LIB_ENTRY::operator==( const wxChar* aName ) const
{ {
return m_Name.CmpNoCase( name ) == 0; return name.CmpNoCase( aName ) == 0;
} }
bool operator<( const CMP_LIB_ENTRY& item1, const CMP_LIB_ENTRY& item2 ) bool operator<( const CMP_LIB_ENTRY& aItem1, const CMP_LIB_ENTRY& aItem2 )
{ {
return item1.GetName().CmpNoCase( item2.GetName() ) < 0; return aItem1.GetName().CmpNoCase( aItem2.GetName() ) < 0;
} }
int LibraryEntryCompare( const CMP_LIB_ENTRY* LE1, const CMP_LIB_ENTRY* LE2 ) int LibraryEntryCompare( const CMP_LIB_ENTRY* aItem1, const CMP_LIB_ENTRY* aItem2 )
{ {
return LE1->GetName().CmpNoCase( LE2->GetName() ); return aItem1->GetName().CmpNoCase( aItem2->GetName() );
} }
...@@ -134,20 +126,20 @@ int LibraryEntryCompare( const CMP_LIB_ENTRY* LE1, const CMP_LIB_ENTRY* LE2 ) ...@@ -134,20 +126,20 @@ int LibraryEntryCompare( const CMP_LIB_ENTRY* LE1, const CMP_LIB_ENTRY* LE2 )
* (like 74LS00, 74HC00 ... and many op amps ) * (like 74LS00, 74HC00 ... and many op amps )
*/ */
LIB_ALIAS::LIB_ALIAS( const wxString& name, LIB_COMPONENT* root, LIB_ALIAS::LIB_ALIAS( const wxString& aName, LIB_COMPONENT* aComponent,
CMP_LIBRARY* lib ) : CMP_LIBRARY* aLibrary ) :
CMP_LIB_ENTRY( ALIAS, name, lib ) CMP_LIB_ENTRY( ALIAS, aName, aLibrary )
{ {
wxASSERT( root != NULL && root->Type == ROOT ); wxASSERT( aComponent != NULL && aComponent->isComponent() );
m_root = root; root = aComponent;
} }
LIB_ALIAS::LIB_ALIAS( LIB_ALIAS& alias, CMP_LIBRARY* lib ) : LIB_ALIAS::LIB_ALIAS( LIB_ALIAS& aAlias, CMP_LIBRARY* aLibrary ) :
CMP_LIB_ENTRY( alias ) CMP_LIB_ENTRY( aAlias )
{ {
m_root = alias.m_root; root = aAlias.root;
} }
...@@ -156,11 +148,11 @@ LIB_ALIAS::~LIB_ALIAS() ...@@ -156,11 +148,11 @@ LIB_ALIAS::~LIB_ALIAS()
} }
void LIB_ALIAS::SetComponent( LIB_COMPONENT* root ) void LIB_ALIAS::SetComponent( LIB_COMPONENT* aComponent )
{ {
wxASSERT( root != NULL && root->Type == ROOT ); wxASSERT( aComponent != NULL && aComponent->isComponent() );
m_root = root; root = aComponent;
} }
...@@ -170,13 +162,13 @@ void LIB_ALIAS::SetComponent( LIB_COMPONENT* root ) ...@@ -170,13 +162,13 @@ void LIB_ALIAS::SetComponent( LIB_COMPONENT* root )
/* This is a standard component (in library) /* This is a standard component (in library)
*/ */
LIB_COMPONENT::LIB_COMPONENT( const wxString& name, CMP_LIBRARY* lib ) : LIB_COMPONENT::LIB_COMPONENT( const wxString& aName, CMP_LIBRARY* aLibrary ) :
CMP_LIB_ENTRY( ROOT, name, lib ) CMP_LIB_ENTRY( ROOT, aName, aLibrary )
{ {
m_LastDate = 0; m_LastDate = 0;
m_UnitCount = 1; unitCount = 1;
m_TextInside = 40; m_TextInside = 40;
m_Options = ENTRY_NORMAL; options = ENTRY_NORMAL;
m_UnitSelectionLocked = FALSE; m_UnitSelectionLocked = FALSE;
m_DrawPinNum = 1; m_DrawPinNum = 1;
m_DrawPinName = 1; m_DrawPinName = 1;
...@@ -185,34 +177,34 @@ LIB_COMPONENT::LIB_COMPONENT( const wxString& name, CMP_LIBRARY* lib ) : ...@@ -185,34 +177,34 @@ LIB_COMPONENT::LIB_COMPONENT( const wxString& name, CMP_LIBRARY* lib ) :
* designator field. * designator field.
*/ */
LIB_FIELD* value = new LIB_FIELD( this, VALUE ); LIB_FIELD* value = new LIB_FIELD( this, VALUE );
value->m_Text = name; value->m_Text = aName;
m_Drawings.push_back( value ); drawings.push_back( value );
m_Drawings.push_back( new LIB_FIELD( this, REFERENCE ) ); drawings.push_back( new LIB_FIELD( this, REFERENCE ) );
} }
LIB_COMPONENT::LIB_COMPONENT( LIB_COMPONENT& component, CMP_LIBRARY* lib ) : LIB_COMPONENT::LIB_COMPONENT( LIB_COMPONENT& aComponent, CMP_LIBRARY* aLibrary ) :
CMP_LIB_ENTRY( component, lib ) CMP_LIB_ENTRY( aComponent, aLibrary )
{ {
LIB_DRAW_ITEM* newItem; LIB_DRAW_ITEM* newItem;
m_AliasList = component.m_AliasList; m_AliasList = aComponent.m_AliasList;
m_FootprintList = component.m_FootprintList; m_FootprintList = aComponent.m_FootprintList;
m_UnitCount = component.m_UnitCount; unitCount = aComponent.unitCount;
m_UnitSelectionLocked = component.m_UnitSelectionLocked; m_UnitSelectionLocked = aComponent.m_UnitSelectionLocked;
m_TextInside = component.m_TextInside; m_TextInside = aComponent.m_TextInside;
m_DrawPinNum = component.m_DrawPinNum; m_DrawPinNum = aComponent.m_DrawPinNum;
m_DrawPinName = component.m_DrawPinName; m_DrawPinName = aComponent.m_DrawPinName;
m_LastDate = component.m_LastDate; m_LastDate = aComponent.m_LastDate;
BOOST_FOREACH( LIB_DRAW_ITEM& oldItem, component.GetDrawItemList() ) BOOST_FOREACH( LIB_DRAW_ITEM& oldItem, aComponent.GetDrawItemList() )
{ {
if( ( oldItem.m_Flags & IS_NEW ) != 0 ) if( ( oldItem.m_Flags & IS_NEW ) != 0 )
continue; continue;
newItem = oldItem.GenCopy(); newItem = oldItem.GenCopy();
newItem->SetParent( this ); newItem->SetParent( this );
m_Drawings.push_back( newItem ); drawings.push_back( newItem );
} }
} }
...@@ -222,20 +214,20 @@ LIB_COMPONENT::~LIB_COMPONENT() ...@@ -222,20 +214,20 @@ LIB_COMPONENT::~LIB_COMPONENT()
} }
void LIB_COMPONENT::Draw( WinEDA_DrawPanel* panel, wxDC* dc, void LIB_COMPONENT::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDc,
const wxPoint& offset, int multi, const wxPoint& aOffset, int aMulti,
int convert, int drawMode, int color, int aConvert, int aDrawMode, int aColor,
const int transformMatrix[2][2], const int aTransformMatrix[2][2],
bool showPinText, bool drawFields, bool aShowPinText, bool aDrawFields,
bool onlySelected ) bool aOnlySelected )
{ {
BASE_SCREEN* screen = panel->GetScreen(); BASE_SCREEN* screen = aPanel->GetScreen();
GRSetDrawMode( dc, drawMode ); GRSetDrawMode( aDc, aDrawMode );
BOOST_FOREACH( LIB_DRAW_ITEM& drawItem, m_Drawings ) BOOST_FOREACH( LIB_DRAW_ITEM& drawItem, drawings )
{ {
if( onlySelected && drawItem.m_Selected == 0 ) if( aOnlySelected && drawItem.m_Selected == 0 )
continue; continue;
// Do not draw an item while moving (the cursor handler does that) // Do not draw an item while moving (the cursor handler does that)
...@@ -243,85 +235,85 @@ void LIB_COMPONENT::Draw( WinEDA_DrawPanel* panel, wxDC* dc, ...@@ -243,85 +235,85 @@ void LIB_COMPONENT::Draw( WinEDA_DrawPanel* panel, wxDC* dc,
continue; continue;
/* Do not draw items not attached to the current part */ /* Do not draw items not attached to the current part */
if( multi && drawItem.m_Unit && ( drawItem.m_Unit != multi ) ) if( aMulti && drawItem.m_Unit && ( drawItem.m_Unit != aMulti ) )
continue; continue;
if( convert && drawItem.m_Convert && ( drawItem.m_Convert != convert ) ) if( aConvert && drawItem.m_Convert && ( drawItem.m_Convert != aConvert ) )
continue; continue;
if( !drawFields && drawItem.Type() == COMPONENT_FIELD_DRAW_TYPE ) if( !aDrawFields && drawItem.Type() == COMPONENT_FIELD_DRAW_TYPE )
continue; continue;
if( drawItem.Type() == COMPONENT_PIN_DRAW_TYPE ) if( drawItem.Type() == COMPONENT_PIN_DRAW_TYPE )
{ {
drawItem.Draw( panel, dc, offset, color, drawMode, drawItem.Draw( aPanel, aDc, aOffset, aColor, aDrawMode,
(void*) showPinText, transformMatrix ); (void*) aShowPinText, aTransformMatrix );
} }
else if( drawItem.Type() == COMPONENT_FIELD_DRAW_TYPE ) else if( drawItem.Type() == COMPONENT_FIELD_DRAW_TYPE )
{ {
drawItem.Draw( panel, dc, offset, color, drawMode, drawItem.Draw( aPanel, aDc, aOffset, aColor, aDrawMode,
(void*) NULL, transformMatrix ); (void*) NULL, aTransformMatrix );
} }
else else
{ {
bool forceNoFill = ( screen->m_IsPrinting bool forceNoFill = ( screen->m_IsPrinting
&& drawItem.m_Fill == FILLED_WITH_BG_BODYCOLOR && drawItem.m_Fill == FILLED_WITH_BG_BODYCOLOR
&& GetGRForceBlackPenState() ); && GetGRForceBlackPenState() );
drawItem.Draw( panel, dc, offset, color, drawMode, drawItem.Draw( aPanel, aDc, aOffset, aColor, aDrawMode,
(void*) forceNoFill, transformMatrix ); (void*) forceNoFill, aTransformMatrix );
} }
} }
/* Enable this to draw the anchor of the component. */ /* Enable this to draw the anchor of the component. */
#if 0 #if 0
int len = panel->GetScreen()->Unscale( 3 ); int len = aPanel->GetScreen()->Unscale( 3 );
GRLine( &panel->m_ClipBox, dc, offset.x, offset.y - len, offset.x, GRLine( &aPanel->m_ClipBox, aDc, aOffset.x, aOffset.y - len, aOffset.x,
offset.y + len, 0, color ); aOffset.y + len, 0, aColor );
GRLine( &panel->m_ClipBox, dc, offset.x - len, offset.y, offset.x + len, GRLine( &aPanel->m_ClipBox, aDc, aOffset.x - len, aOffset.y, aOffset.x + len,
offset.y, 0, color ); aOffset.y, 0, aColor );
#endif #endif
/* Enable this to draw the bounding box around the component to validate /* Enable this to draw the bounding box around the component to validate
* the bounding box calculations. */ * the bounding box calculations. */
#if 0 #if 0
EDA_Rect bBox = GetBoundaryBox( multi, convert ); EDA_Rect bBox = GetBoundaryBox( aMulti, aConvert );
GRRect( &panel->m_ClipBox, dc, bBox.GetOrigin().x, bBox.GetOrigin().y, GRRect( &aPanel->m_ClipBox, aDc, bBox.GetOrigin().x, bBox.GetOrigin().y,
bBox.GetEnd().x, bBox.GetEnd().y, 0, LIGHTMAGENTA ); bBox.GetEnd().x, bBox.GetEnd().y, 0, LIGHTMAGENTA );
#endif #endif
} }
void LIB_COMPONENT::Plot( PLOTTER* plotter, int unit, int convert, void LIB_COMPONENT::Plot( PLOTTER* aPlotter, int aUnit, int aConvert,
const wxPoint& offset, const int transform[2][2] ) const wxPoint& aOffset, const int aTransform[2][2] )
{ {
wxASSERT( plotter != NULL ); wxASSERT( aPlotter != NULL );
BOOST_FOREACH( LIB_DRAW_ITEM& item, m_Drawings ) BOOST_FOREACH( LIB_DRAW_ITEM& item, drawings )
{ {
if( unit && item.m_Unit && ( item.m_Unit != unit ) ) if( aUnit && item.m_Unit && ( item.m_Unit != aUnit ) )
continue; continue;
if( convert && item.m_Convert && ( item.m_Convert != convert ) ) if( aConvert && item.m_Convert && ( item.m_Convert != aConvert ) )
continue; continue;
plotter->set_color( ReturnLayerColor( LAYER_DEVICE ) ); aPlotter->set_color( ReturnLayerColor( LAYER_DEVICE ) );
bool fill = plotter->get_color_mode(); bool fill = aPlotter->get_color_mode();
item.Plot( plotter, offset, fill, transform ); item.Plot( aPlotter, aOffset, fill, aTransform );
} }
} }
void LIB_COMPONENT::RemoveDrawItem( LIB_DRAW_ITEM* item, void LIB_COMPONENT::RemoveDrawItem( LIB_DRAW_ITEM* aItem,
WinEDA_DrawPanel* panel, WinEDA_DrawPanel* aPanel,
wxDC* dc ) wxDC* aDc )
{ {
wxASSERT( item != NULL ); wxASSERT( aItem != NULL );
/* Value and reference fields cannot be removed. */ /* Value and reference fields cannot be removed. */
if( item->Type() == COMPONENT_FIELD_DRAW_TYPE ) if( aItem->Type() == COMPONENT_FIELD_DRAW_TYPE )
{ {
LIB_FIELD* field = (LIB_FIELD*)item; LIB_FIELD* field = (LIB_FIELD*)aItem;
if( field->m_FieldId == VALUE || field->m_FieldId == REFERENCE ) if( field->m_FieldId == VALUE || field->m_FieldId == REFERENCE )
{ {
...@@ -338,49 +330,49 @@ from component %s in library %s." ), ...@@ -338,49 +330,49 @@ from component %s in library %s." ),
LIB_DRAW_ITEM_LIST::iterator i; LIB_DRAW_ITEM_LIST::iterator i;
if( dc != NULL ) if( aDc != NULL )
item->Draw( panel, dc, wxPoint( 0, 0 ), -1, g_XorMode, NULL, aItem->Draw( aPanel, aDc, wxPoint( 0, 0 ), -1, g_XorMode, NULL,
DefaultTransformMatrix ); DefaultTransformMatrix );
for( i = m_Drawings.begin(); i < m_Drawings.end(); i++ ) for( i = drawings.begin(); i < drawings.end(); i++ )
{ {
if( *i == item ) if( *i == aItem )
{ {
m_Drawings.erase( i ); drawings.erase( i );
break; break;
} }
} }
} }
void LIB_COMPONENT::AddDrawItem( LIB_DRAW_ITEM* item ) void LIB_COMPONENT::AddDrawItem( LIB_DRAW_ITEM* aItem )
{ {
wxASSERT( item != NULL ); wxASSERT( aItem != NULL );
m_Drawings.push_back( item ); drawings.push_back( aItem );
m_Drawings.sort(); drawings.sort();
} }
LIB_DRAW_ITEM* LIB_COMPONENT::GetNextDrawItem( LIB_DRAW_ITEM* item, LIB_DRAW_ITEM* LIB_COMPONENT::GetNextDrawItem( LIB_DRAW_ITEM* aItem,
KICAD_T type ) KICAD_T aType )
{ {
/* Return the next draw object pointer. /* Return the next draw object pointer.
* If item is NULL return the first item of type in the list. * If item is NULL return the first item of type in the list.
*/ */
if( m_Drawings.empty() ) if( drawings.empty() )
return NULL; return NULL;
if( item == NULL && type == TYPE_NOT_INIT ) // type is unspecified if( aItem == NULL && aType == TYPE_NOT_INIT ) // type is unspecified
return &m_Drawings[0]; return &drawings[0];
// Search for last item // Search for last item
size_t idx = 0; size_t idx = 0;
if( item ) if( aItem )
{ {
for( ; idx < m_Drawings.size(); idx++ ) for( ; idx < drawings.size(); idx++ )
{ {
if( item == &m_Drawings[idx] ) if( aItem == &drawings[idx] )
{ {
idx++; // Prepare the next item search idx++; // Prepare the next item search
break; break;
...@@ -389,49 +381,48 @@ LIB_DRAW_ITEM* LIB_COMPONENT::GetNextDrawItem( LIB_DRAW_ITEM* item, ...@@ -389,49 +381,48 @@ LIB_DRAW_ITEM* LIB_COMPONENT::GetNextDrawItem( LIB_DRAW_ITEM* item,
} }
// Search the next item // Search the next item
for( ; idx < m_Drawings.size(); idx++ ) for( ; idx < drawings.size(); idx++ )
{ {
if( type == TYPE_NOT_INIT || m_Drawings[ idx ].Type() == type ) if( aType == TYPE_NOT_INIT || drawings[ idx ].Type() == aType )
return &m_Drawings[ idx ]; return &drawings[ idx ];
} }
return NULL; return NULL;
} }
/*************************************************************************/
void LIB_COMPONENT::GetPins( LIB_PIN_LIST& pins, int unit, int convert ) void LIB_COMPONENT::GetPins( LIB_PIN_LIST& aList, int aUnit, int aConvert )
/*************************************************************************/
{ {
/* Notes: /* Notes:
* when unit == 0: no unit filtering * when aUnit == 0: no unit filtering
* when convert == 0: no convert (shape selection) filtering * when aConvert == 0: no convert (shape selection) filtering
* when .m_Unit == 0, the body item is common to units * when .m_Unit == 0, the body item is common to units
* when .m_Convert == 0, the body item is common to shapes * when .m_Convert == 0, the body item is common to shapes
*/ */
BOOST_FOREACH( LIB_DRAW_ITEM& item, m_Drawings ) BOOST_FOREACH( LIB_DRAW_ITEM& item, drawings )
{ {
if( item.Type() != COMPONENT_PIN_DRAW_TYPE ) // we search pins only if( item.Type() != COMPONENT_PIN_DRAW_TYPE ) // we search pins only
continue; continue;
// Unit filtering: // Unit filtering:
if( unit && item.m_Unit && ( item.m_Unit != unit ) ) if( aUnit && item.m_Unit && ( item.m_Unit != aUnit ) )
continue; continue;
// Shape filtering: // Shape filtering:
if( convert && item.m_Convert && ( item.m_Convert != convert ) ) if( aConvert && item.m_Convert && ( item.m_Convert != aConvert ) )
continue; continue;
pins.push_back( (LIB_PIN*) &item ); aList.push_back( (LIB_PIN*) &item );
} }
} }
LIB_PIN* LIB_COMPONENT::GetPin( const wxString& number, int unit, int convert ) LIB_PIN* LIB_COMPONENT::GetPin( const wxString& aNumber, int aUnit, int aConvert )
{ {
wxString pNumber; wxString pNumber;
LIB_PIN_LIST pinList; LIB_PIN_LIST pinList;
GetPins( pinList, unit, convert ); GetPins( pinList, aUnit, aConvert );
for( size_t i = 0; i < pinList.size(); i++ ) for( size_t i = 0; i < pinList.size(); i++ )
{ {
...@@ -439,7 +430,7 @@ LIB_PIN* LIB_COMPONENT::GetPin( const wxString& number, int unit, int convert ) ...@@ -439,7 +430,7 @@ LIB_PIN* LIB_COMPONENT::GetPin( const wxString& number, int unit, int convert )
pinList[i]->ReturnPinStringNum( pNumber ); pinList[i]->ReturnPinStringNum( pNumber );
if( number == pNumber ) if( aNumber == pNumber )
return pinList[i]; return pinList[i];
} }
...@@ -488,8 +479,8 @@ bool LIB_COMPONENT::Save( FILE* aFile ) ...@@ -488,8 +479,8 @@ bool LIB_COMPONENT::Save( FILE* aFile )
0, m_TextInside, 0, m_TextInside,
m_DrawPinNum ? 'Y' : 'N', m_DrawPinNum ? 'Y' : 'N',
m_DrawPinName ? 'Y' : 'N', m_DrawPinName ? 'Y' : 'N',
m_UnitCount, m_UnitSelectionLocked ? 'L' : 'F', unitCount, m_UnitSelectionLocked ? 'L' : 'F',
m_Options == ENTRY_POWER ? 'P' : 'N' ) < 0 ) options == ENTRY_POWER ? 'P' : 'N' ) < 0 )
return false; return false;
if( !SaveDateAndTime( aFile ) ) if( !SaveDateAndTime( aFile ) )
...@@ -541,16 +532,16 @@ bool LIB_COMPONENT::Save( FILE* aFile ) ...@@ -541,16 +532,16 @@ bool LIB_COMPONENT::Save( FILE* aFile )
} }
/* Save graphics items (including pins) */ /* Save graphics items (including pins) */
if( !m_Drawings.empty() ) if( !drawings.empty() )
{ {
/* we sort the draw items, in order to have an edition more easy, /* we sort the draw items, in order to have an edition more easy,
* when a file editing "by hand" is made */ * when a file editing "by hand" is made */
m_Drawings.sort(); drawings.sort();
if( fprintf( aFile, "DRAW\n" ) < 0 ) if( fprintf( aFile, "DRAW\n" ) < 0 )
return false; return false;
BOOST_FOREACH( LIB_DRAW_ITEM& item, m_Drawings ) BOOST_FOREACH( LIB_DRAW_ITEM& item, drawings )
{ {
if( item.Type() == COMPONENT_FIELD_DRAW_TYPE ) if( item.Type() == COMPONENT_FIELD_DRAW_TYPE )
continue; continue;
...@@ -568,23 +559,23 @@ bool LIB_COMPONENT::Save( FILE* aFile ) ...@@ -568,23 +559,23 @@ bool LIB_COMPONENT::Save( FILE* aFile )
return true; return true;
} }
bool LIB_COMPONENT::Load( FILE* file, char* line, int* lineNum, bool LIB_COMPONENT::Load( FILE* aFile, char* aLine, int* aLineNum,
wxString& errorMsg ) wxString& aErrorMsg )
{ {
int unused; int unused;
char* p; char* p;
char* name; char* componentName;
char* prefix = NULL; char* prefix = NULL;
bool Res; bool Res;
wxString Msg; wxString Msg;
p = strtok( line, " \t\r\n" ); p = strtok( aLine, " \t\r\n" );
if( strcmp( p, "DEF" ) != 0 ) if( strcmp( p, "DEF" ) != 0 )
{ {
errorMsg.Printf( wxT( "DEF command expected in line %d, aborted." ), aErrorMsg.Printf( wxT( "DEF command expected in line %d, aborted." ),
*lineNum ); *aLineNum );
return false; return false;
} }
...@@ -592,24 +583,24 @@ bool LIB_COMPONENT::Load( FILE* file, char* line, int* lineNum, ...@@ -592,24 +583,24 @@ bool LIB_COMPONENT::Load( FILE* file, char* line, int* lineNum,
char drawnum = 0; char drawnum = 0;
char drawname = 0; char drawname = 0;
if( ( name = strtok( NULL, " \t\n" ) ) == NULL /* Part name: */ if( ( componentName = strtok( NULL, " \t\n" ) ) == NULL /* Part name: */
|| ( prefix = strtok( NULL, " \t\n" ) ) == NULL /* Prefix name: */ || ( prefix = strtok( NULL, " \t\n" ) ) == NULL /* Prefix name: */
|| ( p = strtok( NULL, " \t\n" ) ) == NULL /* NumOfPins: */ || ( p = strtok( NULL, " \t\n" ) ) == NULL /* NumOfPins: */
|| sscanf( p, "%d", &unused ) != 1 || sscanf( p, "%d", &unused ) != 1
|| ( p = strtok( NULL, " \t\n" ) ) == NULL /* TextInside: */ || ( p = strtok( NULL, " \t\n" ) ) == NULL /* TextInside: */
|| sscanf( p, "%d", &m_TextInside ) != 1 || sscanf( p, "%d", &m_TextInside ) != 1
|| ( p = strtok( NULL, " \t\n" ) ) == NULL /* DrawNums: */ || ( p = strtok( NULL, " \t\n" ) ) == NULL /* DrawNums: */
|| sscanf( p, "%c", &drawnum ) != 1 || sscanf( p, "%c", &drawnum ) != 1
|| ( p = strtok( NULL, " \t\n" ) ) == NULL /* DrawNums: */ || ( p = strtok( NULL, " \t\n" ) ) == NULL /* DrawNums: */
|| sscanf( p, "%c", &drawname ) != 1 || sscanf( p, "%c", &drawname ) != 1
|| ( p = strtok( NULL, " \t\n" ) ) == NULL /* m_UnitCount: */ || ( p = strtok( NULL, " \t\n" ) ) == NULL /* unitCount: */
|| sscanf( p, "%d", &m_UnitCount ) != 1 ) || sscanf( p, "%d", &unitCount ) != 1 )
{ {
errorMsg.Printf( wxT( "Wrong DEF format in line %d, skipped." ), aErrorMsg.Printf( wxT( "Wrong DEF format in line %d, skipped." ),
*lineNum ); *aLineNum );
while( GetLine( file, line, lineNum, 1024 ) ) while( GetLine( aFile, aLine, aLineNum, 1024 ) )
{ {
p = strtok( line, " \t\n" ); p = strtok( aLine, " \t\n" );
if( stricmp( p, "ENDDEF" ) == 0 ) if( stricmp( p, "ENDDEF" ) == 0 )
break; break;
} }
...@@ -617,20 +608,20 @@ bool LIB_COMPONENT::Load( FILE* file, char* line, int* lineNum, ...@@ -617,20 +608,20 @@ bool LIB_COMPONENT::Load( FILE* file, char* line, int* lineNum,
return false; return false;
} }
m_DrawPinNum = (drawnum == 'N') ? FALSE : true; m_DrawPinNum = ( drawnum == 'N' ) ? FALSE : true;
m_DrawPinName = (drawname == 'N') ? FALSE : true; m_DrawPinName = ( drawname == 'N' ) ? FALSE : true;
/* Copy part name and prefix. */ /* Copy part name and prefix. */
LIB_FIELD& value = GetValueField(); LIB_FIELD& value = GetValueField();
strupper( name ); strupper( componentName );
if( name[0] != '~' ) if( componentName[0] != '~' )
{ {
m_Name = value.m_Text = CONV_FROM_UTF8( name ); name = value.m_Text = CONV_FROM_UTF8( componentName );
} }
else else
{ {
m_Name = value.m_Text = CONV_FROM_UTF8( &name[1] ); name = value.m_Text = CONV_FROM_UTF8( &componentName[1] );
value.m_Attributs |= TEXT_NO_VISIBLE; value.m_Attributs |= TEXT_NO_VISIBLE;
} }
...@@ -650,70 +641,70 @@ bool LIB_COMPONENT::Load( FILE* file, char* line, int* lineNum, ...@@ -650,70 +641,70 @@ bool LIB_COMPONENT::Load( FILE* file, char* line, int* lineNum,
if( ( p = strtok( NULL, " \t\n" ) ) != NULL && *p == 'L' ) if( ( p = strtok( NULL, " \t\n" ) ) != NULL && *p == 'L' )
m_UnitSelectionLocked = true; m_UnitSelectionLocked = true;
if( ( p = strtok( NULL, " \t\n" ) ) != NULL && *p == 'P' ) if( ( p = strtok( NULL, " \t\n" ) ) != NULL && *p == 'P' )
m_Options = ENTRY_POWER; options = ENTRY_POWER;
/* Read next lines */ /* Read next lines */
while( GetLine( file, line, lineNum, 1024 ) ) while( GetLine( aFile, aLine, aLineNum, 1024 ) )
{ {
p = strtok( line, " \t\n" ); p = strtok( aLine, " \t\n" );
/* This is the error flag ( if an error occurs, Res = FALSE) */ /* This is the error flag ( if an error occurs, Res = FALSE) */
Res = true; Res = true;
if( (line[0] == 'T') && (line[1] == 'i') ) if( (aLine[0] == 'T') && (aLine[1] == 'i') )
Res = LoadDateAndTime( line ); Res = LoadDateAndTime( aLine );
else if( line[0] == 'F' ) else if( aLine[0] == 'F' )
Res = LoadField( line, Msg ); Res = LoadField( aLine, Msg );
else if( strcmp( p, "ENDDEF" ) == 0 ) else if( strcmp( p, "ENDDEF" ) == 0 )
break; break;
else if( strcmp( p, "DRAW" ) == 0 ) else if( strcmp( p, "DRAW" ) == 0 )
Res = LoadDrawEntries( file, line, lineNum, Msg ); Res = LoadDrawEntries( aFile, aLine, aLineNum, Msg );
else if( strncmp( p, "ALIAS", 5 ) == 0 ) else if( strncmp( p, "ALIAS", 5 ) == 0 )
{ {
p = strtok( NULL, "\r\n" ); p = strtok( NULL, "\r\n" );
Res = LoadAliases( p, errorMsg ); Res = LoadAliases( p, aErrorMsg );
} }
else if( strncmp( p, "$FPLIST", 5 ) == 0 ) else if( strncmp( p, "$FPLIST", 5 ) == 0 )
Res = LoadFootprints( file, line, lineNum, Msg ); Res = LoadFootprints( aFile, aLine, aLineNum, Msg );
/* End line or block analysis: test for an error */ /* End line or block analysis: test for an error */
if( !Res ) if( !Res )
{ {
if( Msg.IsEmpty() ) if( Msg.IsEmpty() )
errorMsg.Printf( wxT( "error occurred at line %d " ), *lineNum ); aErrorMsg.Printf( wxT( "error occurred at line %d " ), *aLineNum );
else else
errorMsg.Printf( wxT( "error <%s> occurred at line %d " ), aErrorMsg.Printf( wxT( "error <%s> occurred at line %d " ),
GetChars( Msg ), *lineNum ); GetChars( Msg ), *aLineNum );
return false; return false;
} }
} }
/* If we are here, this part is O.k. - put it in: */ /* If we are here, this part is O.k. - put it in: */
m_Drawings.sort(); drawings.sort();
return true; return true;
} }
bool LIB_COMPONENT::LoadDrawEntries( FILE* f, char* line, bool LIB_COMPONENT::LoadDrawEntries( FILE* aFile, char* aLine,
int* lineNum, wxString& errorMsg ) int* aLineNum, wxString& aErrorMsg )
{ {
LIB_DRAW_ITEM* newEntry = NULL; LIB_DRAW_ITEM* newEntry = NULL;
while( true ) while( true )
{ {
if( GetLine( f, line, lineNum, 1024 ) == NULL ) if( GetLine( aFile, aLine, aLineNum, 1024 ) == NULL )
{ {
errorMsg = wxT( "file ended prematurely loading component draw element" ); aErrorMsg = wxT( "file ended prematurely loading component draw element" );
return false; return false;
} }
if( strncmp( line, "ENDDRAW", 7 ) == 0 ) if( strncmp( aLine, "ENDDRAW", 7 ) == 0 )
break; break;
newEntry = NULL; newEntry = NULL;
switch( line[0] ) switch( aLine[0] )
{ {
case 'A': /* Arc */ case 'A': /* Arc */
newEntry = ( LIB_DRAW_ITEM* ) new LIB_ARC(this); newEntry = ( LIB_DRAW_ITEM* ) new LIB_ARC(this);
...@@ -744,32 +735,32 @@ bool LIB_COMPONENT::LoadDrawEntries( FILE* f, char* line, ...@@ -744,32 +735,32 @@ bool LIB_COMPONENT::LoadDrawEntries( FILE* f, char* line,
break; break;
default: default:
errorMsg.Printf( wxT( "undefined DRAW command %c" ), line[0] ); aErrorMsg.Printf( wxT( "undefined DRAW command %c" ), aLine[0] );
return false; return false;
} }
if( !newEntry->Load( line, errorMsg ) ) if( !newEntry->Load( aLine, aErrorMsg ) )
{ {
errorMsg.Printf( wxT( "error <%s> in DRAW command %c" ), aErrorMsg.Printf( wxT( "error <%s> in DRAW command %c" ),
GetChars( errorMsg ), line[0] ); GetChars( aErrorMsg ), aLine[0] );
SAFE_DELETE( newEntry ); SAFE_DELETE( newEntry );
/* Flush till end of draw section */ /* Flush till end of draw section */
do do
{ {
if( GetLine( f, line, lineNum, 1024 ) == NULL ) if( GetLine( aFile, aLine, aLineNum, 1024 ) == NULL )
{ {
errorMsg = wxT( "file ended prematurely while attempting \ aErrorMsg = wxT( "file ended prematurely while attempting \
to flush to end of drawing section." ); to flush to end of drawing section." );
return false; return false;
} }
} while( strncmp( line, "ENDDRAW", 7 ) != 0 ); } while( strncmp( aLine, "ENDDRAW", 7 ) != 0 );
return false; return false;
} }
else else
{ {
m_Drawings.push_back( newEntry ); drawings.push_back( newEntry );
} }
} }
...@@ -777,9 +768,9 @@ to flush to end of drawing section." ); ...@@ -777,9 +768,9 @@ to flush to end of drawing section." );
} }
bool LIB_COMPONENT::LoadAliases( char* line, wxString& errorMsg ) bool LIB_COMPONENT::LoadAliases( char* aLine, wxString& aErrorMsg )
{ {
char* text = strtok( line, " \t\r\n" ); char* text = strtok( aLine, " \t\r\n" );
while( text ) while( text )
{ {
...@@ -791,11 +782,11 @@ bool LIB_COMPONENT::LoadAliases( char* line, wxString& errorMsg ) ...@@ -791,11 +782,11 @@ bool LIB_COMPONENT::LoadAliases( char* line, wxString& errorMsg )
} }
bool LIB_COMPONENT::LoadField( char* line, wxString& errorMsg ) bool LIB_COMPONENT::LoadField( char* aLine, wxString& aErrorMsg )
{ {
LIB_FIELD* field = new LIB_FIELD( this ); LIB_FIELD* field = new LIB_FIELD( this );
if ( !field->Load( line, errorMsg ) ) if ( !field->Load( aLine, aErrorMsg ) )
{ {
SAFE_DELETE( field ); SAFE_DELETE( field );
return false; return false;
...@@ -809,33 +800,33 @@ bool LIB_COMPONENT::LoadField( char* line, wxString& errorMsg ) ...@@ -809,33 +800,33 @@ bool LIB_COMPONENT::LoadField( char* line, wxString& errorMsg )
else if ( field->m_FieldId == VALUE ) else if ( field->m_FieldId == VALUE )
{ {
GetValueField() = *field; GetValueField() = *field;
m_Name = field->m_Text; name = field->m_Text;
SAFE_DELETE( field ); SAFE_DELETE( field );
} }
else else
{ {
m_Drawings.push_back( field ); drawings.push_back( field );
} }
return true; return true;
} }
bool LIB_COMPONENT::LoadFootprints( FILE* file, char* line, bool LIB_COMPONENT::LoadFootprints( FILE* aFile, char* aLine,
int* lineNum, wxString& errorMsg ) int* aLineNum, wxString& aErrorMsg )
{ {
while( true ) while( true )
{ {
if( GetLine( file, line, lineNum, 1024 ) == NULL ) if( GetLine( aFile, aLine, aLineNum, 1024 ) == NULL )
{ {
errorMsg = wxT( "file ended prematurely while loading footprints" ); aErrorMsg = wxT( "file ended prematurely while loading footprints" );
return false; return false;
} }
if( stricmp( line, "$ENDFPLIST" ) == 0 ) if( stricmp( aLine, "$ENDFPLIST" ) == 0 )
break; break;
m_FootprintList.Add( CONV_FROM_UTF8( line + 1 ) ); m_FootprintList.Add( CONV_FROM_UTF8( aLine + 1 ) );
} }
return true; return true;
...@@ -844,30 +835,30 @@ bool LIB_COMPONENT::LoadFootprints( FILE* file, char* line, ...@@ -844,30 +835,30 @@ bool LIB_COMPONENT::LoadFootprints( FILE* file, char* line,
/**********************************************************************/ /**********************************************************************/
/* Return the component boundary box ( in user coordinates ) /* Return the component boundary box ( in user coordinates )
* The unit Unit, and the shape Convert are considered. * The unit aUnit, and the shape aConvert are considered.
* If Unit == 0, Unit is not used * If aUnit == 0, unit is not used
* if Convert == 0 Convert is non used * if aConvert == 0 Convert is non used
* Invisible fields are not take in account * Invisible fields are not take in account
**/ **/
/**********************************************************************/ /**********************************************************************/
EDA_Rect LIB_COMPONENT::GetBoundaryBox( int Unit, int Convert ) EDA_Rect LIB_COMPONENT::GetBoundaryBox( int aUnit, int aConvert )
{ {
EDA_Rect bBox( wxPoint( 0, 0 ), wxSize( 0, 0 ) ); EDA_Rect bBox( wxPoint( 0, 0 ), wxSize( 0, 0 ) );
BOOST_FOREACH( LIB_DRAW_ITEM& item, m_Drawings ) BOOST_FOREACH( LIB_DRAW_ITEM& item, drawings )
{ {
if( ( item.m_Unit > 0 ) && ( ( m_UnitCount > 1 ) && ( Unit > 0 ) if( ( item.m_Unit > 0 ) && ( ( unitCount > 1 ) && ( aUnit > 0 )
&& ( Unit != item.m_Unit ) ) ) && ( aUnit != item.m_Unit ) ) )
continue; continue;
if( item.m_Convert > 0 if( item.m_Convert > 0
&& ( ( Convert > 0 ) && ( Convert != item.m_Convert ) ) ) && ( ( aConvert > 0 ) && ( aConvert != item.m_Convert ) ) )
continue; continue;
if ( ( item.Type() == COMPONENT_FIELD_DRAW_TYPE ) if ( ( item.Type() == COMPONENT_FIELD_DRAW_TYPE )
&& ( ( ( LIB_TEXT& ) item ).m_Attributs & TEXT_NO_VISIBLE) ) && ( ( ( LIB_TEXT& ) item ).m_Attributs & TEXT_NO_VISIBLE ) )
continue; continue;
bBox.Merge( item.GetBoundingBox() ); bBox.Merge( item.GetBoundingBox() );
} }
return bBox; return bBox;
...@@ -891,7 +882,7 @@ void LIB_COMPONENT::SetFields( const std::vector <LIB_FIELD> aFields ) ...@@ -891,7 +882,7 @@ void LIB_COMPONENT::SetFields( const std::vector <LIB_FIELD> aFields )
*field = aFields[i]; *field = aFields[i];
if( (int) i == VALUE ) if( (int) i == VALUE )
m_Name = field->m_Text; name = field->m_Text;
continue; continue;
} }
...@@ -901,36 +892,36 @@ void LIB_COMPONENT::SetFields( const std::vector <LIB_FIELD> aFields ) ...@@ -901,36 +892,36 @@ void LIB_COMPONENT::SetFields( const std::vector <LIB_FIELD> aFields )
continue; continue;
field = new LIB_FIELD( aFields[i] ); field = new LIB_FIELD( aFields[i] );
m_Drawings.push_back( field ); drawings.push_back( field );
} }
m_Drawings.sort(); drawings.sort();
} }
void LIB_COMPONENT::GetFields( LIB_FIELD_LIST& list ) void LIB_COMPONENT::GetFields( LIB_FIELD_LIST& aList )
{ {
BOOST_FOREACH( LIB_DRAW_ITEM& item, m_Drawings ) BOOST_FOREACH( LIB_DRAW_ITEM& item, drawings )
{ {
if( item.Type() != COMPONENT_FIELD_DRAW_TYPE ) if( item.Type() != COMPONENT_FIELD_DRAW_TYPE )
continue; continue;
LIB_FIELD* field = ( LIB_FIELD* ) &item; LIB_FIELD* field = ( LIB_FIELD* ) &item;
list.push_back( *field ); aList.push_back( *field );
} }
} }
LIB_FIELD* LIB_COMPONENT::GetField( int id ) LIB_FIELD* LIB_COMPONENT::GetField( int aId )
{ {
BOOST_FOREACH( LIB_DRAW_ITEM& item, m_Drawings ) BOOST_FOREACH( LIB_DRAW_ITEM& item, drawings )
{ {
if( item.Type() != COMPONENT_FIELD_DRAW_TYPE ) if( item.Type() != COMPONENT_FIELD_DRAW_TYPE )
continue; continue;
LIB_FIELD* field = ( LIB_FIELD* ) &item; LIB_FIELD* field = ( LIB_FIELD* ) &item;
if( field->m_FieldId == id ) if( field->m_FieldId == aId )
return field; return field;
} }
...@@ -938,7 +929,7 @@ LIB_FIELD* LIB_COMPONENT::GetField( int id ) ...@@ -938,7 +929,7 @@ LIB_FIELD* LIB_COMPONENT::GetField( int id )
} }
LIB_FIELD& LIB_COMPONENT::GetValueField( void ) LIB_FIELD& LIB_COMPONENT::GetValueField()
{ {
LIB_FIELD* field = GetField( VALUE ); LIB_FIELD* field = GetField( VALUE );
wxASSERT( field != NULL ); wxASSERT( field != NULL );
...@@ -946,7 +937,7 @@ LIB_FIELD& LIB_COMPONENT::GetValueField( void ) ...@@ -946,7 +937,7 @@ LIB_FIELD& LIB_COMPONENT::GetValueField( void )
} }
LIB_FIELD& LIB_COMPONENT::GetReferenceField( void ) LIB_FIELD& LIB_COMPONENT::GetReferenceField()
{ {
LIB_FIELD* field = GetField( REFERENCE ); LIB_FIELD* field = GetField( REFERENCE );
wxASSERT( field != NULL ); wxASSERT( field != NULL );
...@@ -958,7 +949,7 @@ LIB_FIELD& LIB_COMPONENT::GetReferenceField( void ) ...@@ -958,7 +949,7 @@ LIB_FIELD& LIB_COMPONENT::GetReferenceField( void )
* Read date and time of component in the format: * Read date and time of component in the format:
* "Ti yy/mm/jj hh:mm:ss" * "Ti yy/mm/jj hh:mm:ss"
*/ */
bool LIB_COMPONENT::SaveDateAndTime( FILE* file ) bool LIB_COMPONENT::SaveDateAndTime( FILE* aFile )
{ {
int year, mon, day, hour, min, sec; int year, mon, day, hour, min, sec;
...@@ -972,7 +963,7 @@ bool LIB_COMPONENT::SaveDateAndTime( FILE* file ) ...@@ -972,7 +963,7 @@ bool LIB_COMPONENT::SaveDateAndTime( FILE* file )
mon = ( m_LastDate >> 22 ) & 15; mon = ( m_LastDate >> 22 ) & 15;
year = ( m_LastDate >> 26 ) + 1990; year = ( m_LastDate >> 26 ) + 1990;
if ( fprintf( file, "Ti %d/%d/%d %d:%d:%d\n", if ( fprintf( aFile, "Ti %d/%d/%d %d:%d:%d\n",
year, mon, day, hour, min, sec ) < 0 ) year, mon, day, hour, min, sec ) < 0 )
return false; return false;
...@@ -982,16 +973,16 @@ bool LIB_COMPONENT::SaveDateAndTime( FILE* file ) ...@@ -982,16 +973,16 @@ bool LIB_COMPONENT::SaveDateAndTime( FILE* file )
/* lit date et time de modif composant sous le format: /* lit date et time de modif composant sous le format:
* "Ti yy/mm/jj hh:mm:ss" * "Ti yy/mm/jj hh:mm:ss"
*/ */
bool LIB_COMPONENT::LoadDateAndTime( char* Line ) bool LIB_COMPONENT::LoadDateAndTime( char* aLine )
{ {
int year, mon, day, hour, min, sec; int year, mon, day, hour, min, sec;
char* text; char* text;
year = mon = day = hour = min = sec = 0; year = mon = day = hour = min = sec = 0;
text = strtok( Line, " \r\t\n" ); text = strtok( aLine, " \r\t\n" );
text = strtok( NULL, " \r\t\n" ); text = strtok( NULL, " \r\t\n" );
if (sscanf( Line, "%d/%d/%d %d:%d:%d", if (sscanf( aLine, "%d/%d/%d %d:%d:%d",
&year, &mon, &day, &hour, &min, &sec ) != 6 ) &year, &mon, &day, &hour, &min, &sec ) != 6 )
return false; return false;
...@@ -1003,24 +994,24 @@ bool LIB_COMPONENT::LoadDateAndTime( char* Line ) ...@@ -1003,24 +994,24 @@ bool LIB_COMPONENT::LoadDateAndTime( char* Line )
} }
void LIB_COMPONENT::SetOffset( const wxPoint& offset ) void LIB_COMPONENT::SetOffset( const wxPoint& aOffset )
{ {
BOOST_FOREACH( LIB_DRAW_ITEM& item, m_Drawings ) BOOST_FOREACH( LIB_DRAW_ITEM& item, drawings )
{ {
item.SetOffset( offset ); item.SetOffset( aOffset );
} }
} }
void LIB_COMPONENT::RemoveDuplicateDrawItems() void LIB_COMPONENT::RemoveDuplicateDrawItems()
{ {
m_Drawings.unique(); drawings.unique();
} }
bool LIB_COMPONENT::HasConversion() const bool LIB_COMPONENT::HasConversion() const
{ {
BOOST_FOREACH( const LIB_DRAW_ITEM& item, m_Drawings ) BOOST_FOREACH( const LIB_DRAW_ITEM& item, drawings )
{ {
if( item.m_Convert > 1 ) if( item.m_Convert > 1 )
return true; return true;
...@@ -1030,84 +1021,84 @@ bool LIB_COMPONENT::HasConversion() const ...@@ -1030,84 +1021,84 @@ bool LIB_COMPONENT::HasConversion() const
} }
void LIB_COMPONENT::ClearStatus( void ) void LIB_COMPONENT::ClearStatus()
{ {
BOOST_FOREACH( LIB_DRAW_ITEM& item, m_Drawings ) BOOST_FOREACH( LIB_DRAW_ITEM& item, drawings )
item.m_Flags = 0; item.m_Flags = 0;
} }
int LIB_COMPONENT::SelectItems( EDA_Rect& rect, int unit, int convert, int LIB_COMPONENT::SelectItems( EDA_Rect& aRect, int aUnit, int aConvert,
bool editPinByPin ) bool aEditPinByPin )
{ {
int ItemsCount = 0; int itemCount = 0;
BOOST_FOREACH( LIB_DRAW_ITEM& item, m_Drawings ) BOOST_FOREACH( LIB_DRAW_ITEM& item, drawings )
{ {
item.m_Selected = 0; item.m_Selected = 0;
if( ( item.m_Unit && item.m_Unit != unit ) if( ( item.m_Unit && item.m_Unit != aUnit )
|| ( item.m_Convert && item.m_Convert != convert ) ) || ( item.m_Convert && item.m_Convert != aConvert ) )
{ {
if( item.Type() != COMPONENT_PIN_DRAW_TYPE ) if( item.Type() != COMPONENT_PIN_DRAW_TYPE )
continue; continue;
// Specific rules for pins. // Specific rules for pins.
if( editPinByPin || m_UnitSelectionLocked if( aEditPinByPin || m_UnitSelectionLocked
|| ( item.m_Convert && item.m_Convert != convert ) ) || ( item.m_Convert && item.m_Convert != aConvert ) )
continue; continue;
} }
if( item.Inside( rect ) ) if( item.Inside( aRect ) )
{ {
item.m_Selected = IS_SELECTED; item.m_Selected = IS_SELECTED;
ItemsCount++; itemCount++;
} }
} }
return ItemsCount; return itemCount;
} }
void LIB_COMPONENT::MoveSelectedItems( const wxPoint& offset ) void LIB_COMPONENT::MoveSelectedItems( const wxPoint& aOffset )
{ {
BOOST_FOREACH( LIB_DRAW_ITEM& item, m_Drawings ) BOOST_FOREACH( LIB_DRAW_ITEM& item, drawings )
{ {
if( item.m_Selected == 0 ) if( item.m_Selected == 0 )
continue; continue;
item.SetOffset( offset ); item.SetOffset( aOffset );
item.m_Flags = item.m_Selected = 0; item.m_Flags = item.m_Selected = 0;
} }
m_Drawings.sort(); drawings.sort();
} }
void LIB_COMPONENT::ClearSelectedItems( void ) void LIB_COMPONENT::ClearSelectedItems()
{ {
BOOST_FOREACH( LIB_DRAW_ITEM& item, m_Drawings ) BOOST_FOREACH( LIB_DRAW_ITEM& item, drawings )
item.m_Flags = item.m_Selected = 0; item.m_Flags = item.m_Selected = 0;
} }
void LIB_COMPONENT::DeleteSelectedItems( void ) void LIB_COMPONENT::DeleteSelectedItems()
{ {
LIB_DRAW_ITEM_LIST::iterator i = m_Drawings.begin(); LIB_DRAW_ITEM_LIST::iterator i = drawings.begin();
while( i != m_Drawings.end() ) while( i != drawings.end() )
{ {
if( i->m_Selected == 0 ) if( i->m_Selected == 0 )
i++; i++;
else else
i = m_Drawings.erase( i ); i = drawings.erase( i );
} }
} }
void LIB_COMPONENT::CopySelectedItems( const wxPoint& offset ) void LIB_COMPONENT::CopySelectedItems( const wxPoint& aOffset )
{ {
BOOST_FOREACH( LIB_DRAW_ITEM& item, m_Drawings ) BOOST_FOREACH( LIB_DRAW_ITEM& item, drawings )
{ {
if( item.m_Selected == 0 ) if( item.m_Selected == 0 )
continue; continue;
...@@ -1115,25 +1106,26 @@ void LIB_COMPONENT::CopySelectedItems( const wxPoint& offset ) ...@@ -1115,25 +1106,26 @@ void LIB_COMPONENT::CopySelectedItems( const wxPoint& offset )
item.m_Selected = 0; item.m_Selected = 0;
LIB_DRAW_ITEM* newItem = item.GenCopy(); LIB_DRAW_ITEM* newItem = item.GenCopy();
newItem->m_Selected = IS_SELECTED; newItem->m_Selected = IS_SELECTED;
m_Drawings.push_back( newItem ); drawings.push_back( newItem );
} }
MoveSelectedItems( offset ); MoveSelectedItems( aOffset );
m_Drawings.sort(); drawings.sort();
} }
void LIB_COMPONENT::MirrorSelectedItemsH( const wxPoint& center )
void LIB_COMPONENT::MirrorSelectedItemsH( const wxPoint& aCenter )
{ {
BOOST_FOREACH( LIB_DRAW_ITEM& item, m_Drawings ) BOOST_FOREACH( LIB_DRAW_ITEM& item, drawings )
{ {
if( item.m_Selected == 0 ) if( item.m_Selected == 0 )
continue; continue;
item.SetOffset( center ); item.SetOffset( aCenter );
item.m_Flags = item.m_Selected = 0; item.m_Flags = item.m_Selected = 0;
} }
m_Drawings.sort(); drawings.sort();
} }
...@@ -1141,25 +1133,25 @@ void LIB_COMPONENT::MirrorSelectedItemsH( const wxPoint& center ) ...@@ -1141,25 +1133,25 @@ void LIB_COMPONENT::MirrorSelectedItemsH( const wxPoint& center )
/** /**
* Locate a draw object. * Locate a draw object.
* *
* @param unit - Unit number of draw item. * @param aUnit - Unit number of draw item.
* @param convert - Body style of draw item. * @param aConvert - Body style of draw item.
* @param type - Draw object type, set to 0 to search for any type. * @param aType - Draw object type, set to 0 to search for any type.
* @param pt - Coordinate for hit testing. * @param aPoint - Coordinate for hit testing.
* *
* @return LIB_DRAW_ITEM - Pointer the the draw object if found. * @return LIB_DRAW_ITEM - Pointer the the draw object if found.
* Otherwise NULL. * Otherwise NULL.
*/ */
LIB_DRAW_ITEM* LIB_COMPONENT::LocateDrawItem( int unit, int convert, LIB_DRAW_ITEM* LIB_COMPONENT::LocateDrawItem( int aUnit, int aConvert,
KICAD_T type, const wxPoint& pt ) KICAD_T aType, const wxPoint& aPoint )
{ {
BOOST_FOREACH( LIB_DRAW_ITEM& item, m_Drawings ) BOOST_FOREACH( LIB_DRAW_ITEM& item, drawings )
{ {
if( ( unit && item.m_Unit && ( unit != item.m_Unit) ) if( ( aUnit && item.m_Unit && ( aUnit != item.m_Unit) )
|| ( convert && item.m_Convert && ( convert != item.m_Convert ) ) || ( aConvert && item.m_Convert && ( aConvert != item.m_Convert ) )
|| ( ( item.Type() != type ) && ( type != TYPE_NOT_INIT ) ) ) || ( ( item.Type() != aType ) && ( aType != TYPE_NOT_INIT ) ) )
continue; continue;
if( item.HitTest( pt ) ) if( item.HitTest( aPoint ) )
return &item; return &item;
} }
...@@ -1171,16 +1163,15 @@ LIB_DRAW_ITEM* LIB_COMPONENT::LocateDrawItem( int unit, int convert, ...@@ -1171,16 +1163,15 @@ LIB_DRAW_ITEM* LIB_COMPONENT::LocateDrawItem( int unit, int convert,
* @param aPosRef = a wxPoint to test * @param aPosRef = a wxPoint to test
* @param aThreshold = max distance to this object (usually the half * @param aThreshold = max distance to this object (usually the half
* thickness of a line) * thickness of a line)
* @param aTransMat = the transform matrix * @param aTransform = the transform matrix
* *
* @return LIB_DRAW_ITEM - Pointer the the draw object if found. * @return LIB_DRAW_ITEM - Pointer the the draw object if found.
* Otherwise NULL. * Otherwise NULL.
*/ */
LIB_DRAW_ITEM* LIB_COMPONENT::LocateDrawItem( int unit, int convert, LIB_DRAW_ITEM* LIB_COMPONENT::LocateDrawItem( int aUnit, int aConvert, KICAD_T aType,
KICAD_T type, const wxPoint& pt, const wxPoint& aPoint, const int aTransform[2][2] )
const int aTransMat[2][2] )
{ {
/* we use LocateDrawItem( int unit, int convert, KICAD_T type, const /* we use LocateDrawItem( int aUnit, int convert, KICAD_T type, const
* wxPoint& pt ) to search items. * wxPoint& pt ) to search items.
* because this function uses DefaultTransformMatrix as orient/mirror matrix * because this function uses DefaultTransformMatrix as orient/mirror matrix
* we temporary copy aTransMat in DefaultTransformMatrix * we temporary copy aTransMat in DefaultTransformMatrix
...@@ -1191,11 +1182,11 @@ LIB_DRAW_ITEM* LIB_COMPONENT::LocateDrawItem( int unit, int convert, ...@@ -1191,11 +1182,11 @@ LIB_DRAW_ITEM* LIB_COMPONENT::LocateDrawItem( int unit, int convert,
{ {
for ( int jj = 0; jj < 2; jj++ ) for ( int jj = 0; jj < 2; jj++ )
{ {
matrix[ii][jj] = aTransMat[ii][jj]; matrix[ii][jj] = aTransform[ii][jj];
EXCHG( matrix[ii][jj], DefaultTransformMatrix[ii][jj] ); EXCHG( matrix[ii][jj], DefaultTransformMatrix[ii][jj] );
} }
} }
item = LocateDrawItem( unit, convert, type, pt ); item = LocateDrawItem( aUnit, aConvert, aType, aPoint );
//Restore matrix //Restore matrix
for ( int ii = 0; ii < 2; ii++ ) for ( int ii = 0; ii < 2; ii++ )
{ {
...@@ -1209,58 +1200,59 @@ LIB_DRAW_ITEM* LIB_COMPONENT::LocateDrawItem( int unit, int convert, ...@@ -1209,58 +1200,59 @@ LIB_DRAW_ITEM* LIB_COMPONENT::LocateDrawItem( int unit, int convert,
} }
void LIB_COMPONENT::SetPartCount( int count ) void LIB_COMPONENT::SetPartCount( int aCount )
{ {
LIB_DRAW_ITEM_LIST::iterator i; LIB_DRAW_ITEM_LIST::iterator i;
if( m_UnitCount == count ) if( unitCount == aCount )
return; return;
if( count < m_UnitCount ) if( aCount < unitCount )
{ {
i = m_Drawings.begin(); i = drawings.begin();
while( i != m_Drawings.end() ) while( i != drawings.end() )
{ {
if( i->m_Unit > count ) if( i->m_Unit > aCount )
i = m_Drawings.erase( i ); i = drawings.erase( i );
else else
i++; i++;
} }
} }
else else
{ {
int prevCount = m_UnitCount; int prevCount = unitCount;
for( i = m_Drawings.begin(); i != m_Drawings.end(); i++ ) for( i = drawings.begin(); i != drawings.end(); i++ )
{ {
if( i->m_Unit != 1 ) if( i->m_Unit != 1 )
continue; continue;
for( int j = prevCount + 1; j <= count; j++ ) for( int j = prevCount + 1; j <= aCount; j++ )
{ {
LIB_DRAW_ITEM* newItem = i->GenCopy(); LIB_DRAW_ITEM* newItem = i->GenCopy();
newItem->m_Unit = j; newItem->m_Unit = j;
m_Drawings.push_back( newItem ); drawings.push_back( newItem );
} }
} }
m_Drawings.sort(); drawings.sort();
} }
m_UnitCount = count; unitCount = aCount;
} }
void LIB_COMPONENT::SetConversion( bool asConvert ) void LIB_COMPONENT::SetConversion( bool aSetConvert )
{ {
if( asConvert == HasConversion() ) if( aSetConvert == HasConversion() )
return; return;
// Duplicate items to create the converted shape // Duplicate items to create the converted shape
if( asConvert ) if( aSetConvert )
{ {
BOOST_FOREACH( LIB_DRAW_ITEM& item, m_Drawings ) BOOST_FOREACH( LIB_DRAW_ITEM& item, drawings )
{ {
/* Only pins are duplicated. */ /* Only pins are duplicated. */
if( item.Type() != COMPONENT_PIN_DRAW_TYPE ) if( item.Type() != COMPONENT_PIN_DRAW_TYPE )
...@@ -1269,7 +1261,7 @@ void LIB_COMPONENT::SetConversion( bool asConvert ) ...@@ -1269,7 +1261,7 @@ void LIB_COMPONENT::SetConversion( bool asConvert )
{ {
LIB_DRAW_ITEM* newItem = item.GenCopy(); LIB_DRAW_ITEM* newItem = item.GenCopy();
newItem->m_Convert = 2; newItem->m_Convert = 2;
m_Drawings.push_back( newItem ); drawings.push_back( newItem );
} }
} }
} }
...@@ -1277,12 +1269,12 @@ void LIB_COMPONENT::SetConversion( bool asConvert ) ...@@ -1277,12 +1269,12 @@ void LIB_COMPONENT::SetConversion( bool asConvert )
{ {
// Delete converted shape items becuase the converted shape does // Delete converted shape items becuase the converted shape does
// not exist // not exist
LIB_DRAW_ITEM_LIST::iterator i = m_Drawings.begin(); LIB_DRAW_ITEM_LIST::iterator i = drawings.begin();
while( i != m_Drawings.end() ) while( i != drawings.end() )
{ {
if( i->m_Convert > 1 ) if( i->m_Convert > 1 )
i = m_Drawings.erase( i ); i = drawings.erase( i );
else else
i++; i++;
} }
......
...@@ -38,19 +38,26 @@ enum LibrEntryOptions ...@@ -38,19 +38,26 @@ enum LibrEntryOptions
*/ */
class CMP_LIB_ENTRY : public EDA_BaseStruct class CMP_LIB_ENTRY : public EDA_BaseStruct
{ {
public:
LibrEntryType Type; /* Type = ROOT; protected:
* = ALIAS pour struct LibraryAliasType */ wxString name;
wxString m_Doc; /* documentation for info */
wxString m_KeyWord; /* keyword list (used to select a group of /** Library object that entry is attached to. */
* components by keyword) */ CMP_LIBRARY* library;
wxString m_DocFile; /* Associate doc file name */
LibrEntryOptions m_Options; // special features (i.e. Entry is a POWER) /** Entry type, either ROOT or ALIAS. */
LibrEntryType type;
wxString description; /* documentation for info */
wxString keyWords; /* keyword list (used for search for
* components by keyword) */
wxString docFileName; /* Associate doc file name */
LibrEntryOptions options; // special features (i.e. Entry is a POWER)
public: public:
CMP_LIB_ENTRY( LibrEntryType CmpType, const wxString& name, CMP_LIB_ENTRY( LibrEntryType aType, const wxString& aName,
CMP_LIBRARY* lib = NULL ); CMP_LIBRARY* aLibrary = NULL );
CMP_LIB_ENTRY( CMP_LIB_ENTRY& entry, CMP_LIBRARY* lib = NULL ); CMP_LIB_ENTRY( CMP_LIB_ENTRY& aEntry, CMP_LIBRARY* aLibrary = NULL );
virtual ~CMP_LIB_ENTRY(); virtual ~CMP_LIB_ENTRY();
...@@ -61,9 +68,42 @@ public: ...@@ -61,9 +68,42 @@ public:
wxString GetLibraryName(); wxString GetLibraryName();
virtual const wxString& GetName() const { return m_Name; } virtual const wxString& GetName() const { return name; }
virtual void SetName( const wxString& aName ) { name = aName; }
bool isComponent() { return type == ROOT; }
bool isAlias() { return type == ALIAS; }
int GetType() { return type; }
bool isPower() { return options == ENTRY_POWER; }
bool isNormal() { return options == ENTRY_NORMAL; }
void SetPower() { options = ENTRY_POWER; }
void SetNormal() { options = ENTRY_NORMAL; }
void SetDescription( const wxString& aDescription )
{
description = aDescription;
}
virtual void SetName( const wxString& name ) { m_Name = name; } wxString GetDescription() { return description; }
void SetKeyWords( const wxString& aKeyWords )
{
keyWords = aKeyWords;
}
wxString GetKeyWords() { return keyWords; }
void SetDocFileName( const wxString& aDocFileName )
{
docFileName = aDocFileName;
}
wxString GetDocFileName() { return docFileName; }
/** /**
* Write the entry document information to a FILE in "*.dcm" format. * Write the entry document information to a FILE in "*.dcm" format.
...@@ -76,26 +116,19 @@ public: ...@@ -76,26 +116,19 @@ public:
/** /**
* Case insensitive comparison of the component entry name. * Case insensitive comparison of the component entry name.
*/ */
bool operator==( const wxChar* name ) const; bool operator==( const wxChar* aName ) const;
bool operator!=( const wxChar* name ) const bool operator!=( const wxChar* aName ) const
{ {
return !( *this == name ); return !( *this == aName );
} }
protected:
wxString m_Name;
/** Library object that entry is attached to. */
CMP_LIBRARY* m_lib;
}; };
typedef boost::ptr_vector< CMP_LIB_ENTRY > LIB_ENTRY_LIST; typedef boost::ptr_vector< CMP_LIB_ENTRY > LIB_ENTRY_LIST;
extern bool operator<( const CMP_LIB_ENTRY& item1, const CMP_LIB_ENTRY& item2 ); extern bool operator<( const CMP_LIB_ENTRY& aItem1, const CMP_LIB_ENTRY& aItem2 );
extern int LibraryEntryCompare( const CMP_LIB_ENTRY* LE1, extern int LibraryEntryCompare( const CMP_LIB_ENTRY* aItem1, const CMP_LIB_ENTRY* aItem2 );
const CMP_LIB_ENTRY* LE2 );
/** /**
...@@ -126,8 +159,8 @@ public: ...@@ -126,8 +159,8 @@ public:
long m_LastDate; // Last change Date long m_LastDate; // Last change Date
protected: protected:
int m_UnitCount; /* Units (or sections) per package */ int unitCount; /* Units (parts) per package */
LIB_DRAW_ITEM_LIST m_Drawings; /* How to draw this part */ LIB_DRAW_ITEM_LIST drawings; /* How to draw this part */
public: public:
virtual wxString GetClass() const virtual wxString GetClass() const
...@@ -136,21 +169,21 @@ public: ...@@ -136,21 +169,21 @@ public:
} }
virtual void SetName( const wxString& name ) virtual void SetName( const wxString& aName )
{ {
CMP_LIB_ENTRY::SetName( name ); CMP_LIB_ENTRY::SetName( aName );
GetValueField().m_Text = name; GetValueField().m_Text = aName;
} }
LIB_COMPONENT( const wxString& name, CMP_LIBRARY* lib = NULL ); LIB_COMPONENT( const wxString& aName, CMP_LIBRARY* aLibrary = NULL );
LIB_COMPONENT( LIB_COMPONENT& component, CMP_LIBRARY* lib = NULL ); LIB_COMPONENT( LIB_COMPONENT& aComponent, CMP_LIBRARY* aLibrary = NULL );
~LIB_COMPONENT(); ~LIB_COMPONENT();
EDA_Rect GetBoundaryBox( int Unit, int Convert ); EDA_Rect GetBoundaryBox( int aUnit, int aConvert );
bool SaveDateAndTime( FILE* ExportFile ); bool SaveDateAndTime( FILE* aFile );
bool LoadDateAndTime( char* Line ); bool LoadDateAndTime( char* aLine );
/** /**
* Write the data structures out to a FILE in "*.lib" format. * Write the data structures out to a FILE in "*.lib" format.
...@@ -161,21 +194,21 @@ public: ...@@ -161,21 +194,21 @@ public:
bool Save( FILE* aFile ); bool Save( FILE* aFile );
/** /**
* Load component definition from file. * Load component definition from /a aFile.
* *
* @param file - File descriptor of file to load form. * @param aFile - File descriptor of file to load form.
* @param line - The first line of the component definition. * @param aLine - The first line of the component definition.
* @param lineNum - The current line number in the file. * @param aLineNum - The current line number in the file.
* @param errorMsg - Description of error on load failure. * @param aErrorMsg - Description of error on load failure.
* @return True if the load was successful, false if there was an error. * @return True if the load was successful, false if there was an error.
*/ */
bool Load( FILE* file, char* line, int* lineNum, wxString& errorMsg ); bool Load( FILE* aFile, char* aLine, int* aLineNum, wxString& aErrorMsg );
bool LoadField( char* line, wxString& errorMsg ); bool LoadField( char* aLine, wxString& aErrorMsg );
bool LoadDrawEntries( FILE* f, char* line, bool LoadDrawEntries( FILE* aFile, char* aLine,
int* lineNum, wxString& errorMsg ); int* aLineNum, wxString& aErrorMsg );
bool LoadAliases( char* line, wxString& Error ); bool LoadAliases( char* aLine, wxString& aErrorMsg );
bool LoadFootprints( FILE* file, char* line, bool LoadFootprints( FILE* aFile, char* aLine,
int* lineNum, wxString& errorMsg ); int* aLineNum, wxString& aErrorMsg );
/** /**
* Initialize fields from a vector of fields. * Initialize fields from a vector of fields.
...@@ -187,90 +220,90 @@ public: ...@@ -187,90 +220,90 @@ public:
/** /**
* Return list of field references of component. * Return list of field references of component.
* *
* @param list - List to add field references to. * @param aList - List to add field references to.
*/ */
void GetFields( LIB_FIELD_LIST& list ); void GetFields( LIB_FIELD_LIST& aList );
/** /**
* Return pointer to the requested field. * Return pointer to the requested field.
* *
* @param id - Id of field to return. * @param aId - Id of field to return.
* @return The field if found, otherwise NULL. * @return The field if found, otherwise NULL.
*/ */
LIB_FIELD* GetField( int id ); LIB_FIELD* GetField( int aId );
/** Return reference to the value field. */ /** Return reference to the value field. */
LIB_FIELD& GetValueField( void ); LIB_FIELD& GetValueField();
/** Return reference to the reference designator field. */ /** Return reference to the reference designator field. */
LIB_FIELD& GetReferenceField( void ); LIB_FIELD& GetReferenceField();
/** /**
* Draw component. * Draw component.
* *
* @param panel - Window to draw on. * @param aPanel - Window to draw on.
* @param dc - Device context to draw on. * @param aDc - Device context to draw on.
* @param offset - Position to component. * @param aOffset - Position to component.
* @param multi - Component unit if multiple parts per component. * @param aMulti - Component unit if multiple parts per component.
* @param convert - Component conversion (DeMorgan) if available. * @param aConvert - Component conversion (DeMorgan) if available.
* @param drawMode - Device context drawing mode, see wxDC. * @param aDrawMode - Device context drawing mode, see wxDC.
* @param color - Color to draw component. * @param aColor - Color to draw component.
* @param transformMatrix - Coordinate adjustment settings. * @param aTransformMatrix - Coordinate adjustment settings.
* @param showPinText - Show pin text if true. * @param aShowPinText - Show pin text if true.
* @param drawFields - Draw field text if true otherwise just draw * @param aDrawFields - Draw field text if true otherwise just draw
* body items (useful to draw a body in schematic, * body items (useful to draw a body in schematic,
* because fields of schematic components replace * because fields of schematic components replace
* the lib component fields). * the lib component fields).
* @param onlySelected - Draws only the body items that are selected. * @param aOnlySelected - Draws only the body items that are selected.
* Used for block move redraws. * Used for block move redraws.
*/ */
void Draw( WinEDA_DrawPanel* panel, wxDC* dc, const wxPoint& offset, void Draw( WinEDA_DrawPanel* aPanel, wxDC* aDc, const wxPoint& aOffset,
int multi, int convert, int drawMode, int color = -1, int aMulti, int aConvert, int aDrawMode, int aColor = -1,
const int transformMatrix[2][2] = DefaultTransformMatrix, const int aTransform[2][2] = DefaultTransformMatrix,
bool showPinText = true, bool drawFields = true, bool aShowPinText = true, bool aDrawFields = true,
bool onlySelected = false ); bool aOnlySelected = false );
/** /**
* Plot component to plotter. * Plot component to plotter.
* *
* @param plotter - Plotter object to plot to. * @param aPlotter - Plotter object to plot to.
* @param unit - Component part to plot. * @param aUnit - Component part to plot.
* @param convert - Component alternate body style to plot. * @param aConvert - Component alternate body style to plot.
* @param transform - Component plot transform matrix. * @param aTransform - Component plot transform matrix.
*/ */
void Plot( PLOTTER* plotter, int unit, int convert, const wxPoint& offset, void Plot( PLOTTER* aPlotter, int aUnit, int aConvert, const wxPoint& aOffset,
const int transform[2][2] ); const int aTransform[2][2] );
/** /**
* Add a new draw item to the draw object list. * Add a new draw /a aItem to the draw object list.
* *
* @param item - New draw object to add to component. * @param item - New draw object to add to component.
*/ */
void AddDrawItem( LIB_DRAW_ITEM* item ); void AddDrawItem( LIB_DRAW_ITEM* aItem );
/** /**
* Remove draw item from list. * Remove draw /a aItem from list.
* *
* @param item - Draw item to remove from list. * @param aItem - Draw item to remove from list.
* @param panel - Panel to remove part from. * @param aPanel - Panel to remove part from.
* @param dc - Device context to remove part from. * @param aDc - Device context to remove part from.
*/ */
void RemoveDrawItem( LIB_DRAW_ITEM* item, void RemoveDrawItem( LIB_DRAW_ITEM* aItem,
WinEDA_DrawPanel* panel = NULL, WinEDA_DrawPanel* aPanel = NULL,
wxDC* dc = NULL ); wxDC* aDc = NULL );
/** /**
* Return the next draw object pointer. * Return the next draw object pointer.
* *
* @param item - Pointer to the current draw item. Setting item NULL * @param aItem - Pointer to the current draw item. Setting item NULL
* with return the first item of type in the list. * with return the first item of type in the list.
* @param type - type of searched item (filter). * @param aType - type of searched item (filter).
* if TYPE_NOT_INIT search for all items types * if TYPE_NOT_INIT search for all items types
* @return - The next drawing object in the list if found, otherwise NULL. * @return - The next drawing object in the list if found, otherwise NULL.
*/ */
LIB_DRAW_ITEM* GetNextDrawItem( LIB_DRAW_ITEM* item = NULL, LIB_DRAW_ITEM* GetNextDrawItem( LIB_DRAW_ITEM* aItem = NULL,
KICAD_T type = TYPE_NOT_INIT ); KICAD_T aType = TYPE_NOT_INIT );
/** /**
* Return the next pin object from the draw list. * Return the next pin object from the draw list.
...@@ -281,9 +314,9 @@ public: ...@@ -281,9 +314,9 @@ public:
* first pin in the draw object list. * first pin in the draw object list.
* @return - The next pin object in the list if found, otherwise NULL. * @return - The next pin object in the list if found, otherwise NULL.
*/ */
LIB_PIN* GetNextPin( LIB_PIN* item = NULL ) LIB_PIN* GetNextPin( LIB_PIN* aItem = NULL )
{ {
return (LIB_PIN*) GetNextDrawItem( (LIB_DRAW_ITEM*) item, return (LIB_PIN*) GetNextDrawItem( (LIB_DRAW_ITEM*) aItem,
COMPONENT_PIN_DRAW_TYPE ); COMPONENT_PIN_DRAW_TYPE );
} }
...@@ -295,32 +328,32 @@ public: ...@@ -295,32 +328,32 @@ public:
* Deleting any of the objects will leave list in a unstable state * Deleting any of the objects will leave list in a unstable state
* and will likely segfault when the list is destroyed. * and will likely segfault when the list is destroyed.
* *
* @param list - Pin list to place pin object pointers into. * @param aList - Pin list to place pin object pointers into.
* @param unit - Unit number of pin to add to list. Set to 0 to * @param aUnit - Unit number of pin to add to list. Set to 0 to
* get pins from any component part. * get pins from any component part.
* @param convert - Convert number of pin to add to list. Set to 0 to * @param aConvert - Convert number of pin to add to list. Set to 0 to
* get pins from any convert of component. * get pins from any convert of component.
*/ */
void GetPins( LIB_PIN_LIST& pins, int unit = 0, int convert = 0 ); void GetPins( LIB_PIN_LIST& aList, int aUnit = 0, int aConvert = 0 );
/** /**
* Return pin object with the requested pin number. * Return pin object with the requested pin /a aNumber.
* *
* @param number - Number of the pin to find. * @param aNumber - Number of the pin to find.
* @param unit - Unit of the component to find. Set to 0 if a specific * @param aUnit - Unit of the component to find. Set to 0 if a specific
* unit number is not required. * unit number is not required.
* @param convert - Alternate body style filter (DeMorgan). Set to 0 if * @param aConvert - Alternate body style filter (DeMorgan). Set to 0 if
* no alternate body style is required. * no alternate body style is required.
* @return The pin object if found. Otherwise NULL. * @return The pin object if found. Otherwise NULL.
*/ */
LIB_PIN* GetPin( const wxString& number, int unit = 0, int convert = 0 ); LIB_PIN* GetPin( const wxString& aNumber, int aUnit = 0, int aConvert = 0 );
/** /**
* Move the component offset. * Move the component /a aOffset.
* *
* @param offset - Offset displacement. * @param aOffset - Offset displacement.
*/ */
void SetOffset( const wxPoint& offset ); void SetOffset( const wxPoint& aOffset );
/** /**
* Remove duplicate draw items from list. * Remove duplicate draw items from list.
...@@ -335,23 +368,23 @@ public: ...@@ -335,23 +368,23 @@ public:
bool HasConversion() const; bool HasConversion() const;
/** /**
* Test if alias name is in component alias list. * Test if alias /a aName is in component alias list.
* *
* Alias name comparisons are case insensitive. * Alias name comparisons are case insensitive.
* *
* @param name - Name of alias. * @param aName - Name of alias.
* @return True if alias name in alias list. * @return True if alias name in alias list.
*/ */
bool HasAlias( const wxChar* name ) bool HasAlias( const wxChar* aName )
{ {
wxASSERT( name != NULL ); wxASSERT( aName != NULL );
return m_AliasList.Index( name ) != wxNOT_FOUND; return m_AliasList.Index( aName ) != wxNOT_FOUND;
} }
/** /**
* Clears the status flag all draw objects in this component. * Clears the status flag all draw objects in this component.
*/ */
void ClearStatus( void ); void ClearStatus();
/** /**
* Checks all draw objects of component to see if they are with block. * Checks all draw objects of component to see if they are with block.
...@@ -359,21 +392,21 @@ public: ...@@ -359,21 +392,21 @@ public:
* Use this method to mark draw objects as selected during block * Use this method to mark draw objects as selected during block
* functions. * functions.
* *
* @param rect - The bounding rectangle to test in draw items are inside. * @param aRect - The bounding rectangle to test in draw items are inside.
* @param unit - The current unit number to test against. * @param aUnit - The current unit number to test against.
* @param convert - Are the draw items being selected a conversion. * @param aConvert - Are the draw items being selected a conversion.
* @param editPinByPin - Used to ignore pin selections when in edit pin * @param aEditPinByPin - Used to ignore pin selections when in edit pin
* by pin mode is enabled. * by pin mode is enabled.
* @return The number of draw objects found inside the block select * @return The number of draw objects found inside the block select
* rectangle. * rectangle.
*/ */
int SelectItems( EDA_Rect& rect, int unit, int convert, int SelectItems( EDA_Rect& aRect, int aUnit, int aConvert,
bool editPinByPin ); bool aEditPinByPin );
/** /**
* Clears all the draw items marked by a block select. * Clears all the draw items marked by a block select.
*/ */
void ClearSelectedItems( void ); void ClearSelectedItems();
/** /**
* Deletes the select draw items marked by a block select. * Deletes the select draw items marked by a block select.
...@@ -382,12 +415,12 @@ public: ...@@ -382,12 +415,12 @@ public:
* minimum drawing items required for any component. Their properties * minimum drawing items required for any component. Their properties
* can be changed but the cannot be removed. * can be changed but the cannot be removed.
*/ */
void DeleteSelectedItems( void ); void DeleteSelectedItems();
/** /**
* Move the selected draw items marked by a block select. * Move the selected draw items marked by a block select.
*/ */
void MoveSelectedItems( const wxPoint& offset ); void MoveSelectedItems( const wxPoint& aOffset );
/** /**
* Make a copy of the selected draw items marked by a block select. * Make a copy of the selected draw items marked by a block select.
...@@ -396,47 +429,47 @@ public: ...@@ -396,47 +429,47 @@ public:
* Copying fields would result in duplicate fields which does not * Copying fields would result in duplicate fields which does not
* make sense in this context. * make sense in this context.
*/ */
void CopySelectedItems( const wxPoint& offset ); void CopySelectedItems( const wxPoint& aOffset );
/** /**
* Horizontally (X axis) mirror selected draw items about a point. * Horizontally (X axis) mirror selected draw items about a point.
* *
* @param center - Center point to mirror around. * @param aCenter - Center point to mirror around.
*/ */
void MirrorSelectedItemsH( const wxPoint& center ); void MirrorSelectedItemsH( const wxPoint& aCenter );
/** /**
* Locate a draw object. * Locate a draw object.
* *
* @param unit - Unit number of draw item. * @param aUnit - Unit number of draw item.
* @param convert - Body style of draw item. * @param aConvert - Body style of draw item.
* @param type - Draw object type, set to 0 to search for any type. * @param aType - Draw object type, set to 0 to search for any type.
* @param pt - Coordinate for hit testing. * @param aPoint - Coordinate for hit testing.
* @return The draw object if found. Otherwise NULL. * @return The draw object if found. Otherwise NULL.
*/ */
LIB_DRAW_ITEM* LocateDrawItem( int unit, int convert, KICAD_T type, LIB_DRAW_ITEM* LocateDrawItem( int aUnit, int aConvert, KICAD_T aType,
const wxPoint& pt ); const wxPoint& aPoint );
/** /**
* Locate a draw object (overlaid) * Locate a draw object (overlaid)
* *
* @param unit - Unit number of draw item. * @param aUnit - Unit number of draw item.
* @param convert - Body style of draw item. * @param aConvert - Body style of draw item.
* @param type - Draw object type, set to 0 to search for any type. * @param aType - Draw object type, set to 0 to search for any type.
* @param pt - Coordinate for hit testing. * @param aPoint - Coordinate for hit testing.
* @param aTransMat = the transform matrix * @param aTransform = the transform matrix
* @return The draw object if found. Otherwise NULL. * @return The draw object if found. Otherwise NULL.
*/ */
LIB_DRAW_ITEM* LocateDrawItem( int unit, int convert, KICAD_T type, LIB_DRAW_ITEM* LocateDrawItem( int aUnit, int aConvert, KICAD_T aType,
const wxPoint& pt, const wxPoint& aPoint,
const int aTransMat[2][2] ); const int aTransfrom[2][2] );
/** /**
* Return a reference to the draw item list. * Return a reference to the draw item list.
* *
* @return LIB_DRAW_ITEM_LIST& - Reference to the draw item object list. * @return LIB_DRAW_ITEM_LIST& - Reference to the draw item object list.
*/ */
LIB_DRAW_ITEM_LIST& GetDrawItemList( void ) { return m_Drawings; } LIB_DRAW_ITEM_LIST& GetDrawItemList() { return drawings; }
/** /**
* Set the part per package count. * Set the part per package count.
...@@ -450,7 +483,7 @@ public: ...@@ -450,7 +483,7 @@ public:
*/ */
void SetPartCount( int count ); void SetPartCount( int count );
int GetPartCount( void ) { return m_UnitCount; } int GetPartCount() { return unitCount; }
/** /**
* Set or clear the alternate body style (DeMorgan) for the component. * Set or clear the alternate body style (DeMorgan) for the component.
...@@ -461,9 +494,9 @@ public: ...@@ -461,9 +494,9 @@ public:
* asConvert is true, than the base draw items are duplicated and * asConvert is true, than the base draw items are duplicated and
* added to the component. * added to the component.
* *
* @param asConvert - Set or clear the component alternate body style. * @param aSetConvert - Set or clear the component alternate body style.
*/ */
void SetConversion( bool asConvert ); void SetConversion( bool aSetConvert );
}; };
...@@ -476,12 +509,19 @@ public: ...@@ -476,12 +509,19 @@ public:
class LIB_ALIAS : public CMP_LIB_ENTRY class LIB_ALIAS : public CMP_LIB_ENTRY
{ {
protected: protected:
LIB_COMPONENT* m_root; /* Root component of the alias. */ /**
* The actual component of the alias.
*
* @note - Do not delete the root component. The root component is owned
* by library the component is part of. Deleting the root component
* will likely cause EESchema to crash.
*/
LIB_COMPONENT* root;
public: public:
LIB_ALIAS( const wxString& name, LIB_COMPONENT* root, LIB_ALIAS( const wxString& aName, LIB_COMPONENT* aComponent,
CMP_LIBRARY* lib = NULL ); CMP_LIBRARY* aLibrary = NULL );
LIB_ALIAS( LIB_ALIAS& alias, CMP_LIBRARY* lib = NULL ); LIB_ALIAS( LIB_ALIAS& aAlias, CMP_LIBRARY* aLibrary = NULL );
~LIB_ALIAS(); ~LIB_ALIAS();
virtual wxString GetClass() const virtual wxString GetClass() const
...@@ -492,15 +532,15 @@ public: ...@@ -492,15 +532,15 @@ public:
/** /**
* Get the alias root component. * Get the alias root component.
*/ */
LIB_COMPONENT* GetComponent( void ) const LIB_COMPONENT* GetComponent() const
{ {
return m_root; return root;
} }
/** /**
* Set the alias root component. * Set the alias root component.
*/ */
void SetComponent( LIB_COMPONENT* component ); void SetComponent( LIB_COMPONENT* aComponent );
}; };
......
...@@ -26,39 +26,39 @@ _( "Library <%s> has duplicate entry name <%s>.\n\ ...@@ -26,39 +26,39 @@ _( "Library <%s> has duplicate entry name <%s>.\n\
This may cause some unexpected behavior when loading components into a schematic." ); This may cause some unexpected behavior when loading components into a schematic." );
static bool DuplicateEntryName( const CMP_LIB_ENTRY& item1, static bool DuplicateEntryName( const CMP_LIB_ENTRY& aItem1,
const CMP_LIB_ENTRY& item2 ) const CMP_LIB_ENTRY& aItem2 )
{ {
return item1.GetName().CmpNoCase( item2.GetName() ) == 0; return aItem1.GetName().CmpNoCase( aItem2.GetName() ) == 0;
} }
bool operator==( const CMP_LIBRARY& lib, const wxChar* name ) bool operator==( const CMP_LIBRARY& aLibrary, const wxChar* aName )
{ {
return lib.GetName().CmpNoCase( name ) == 0; return aLibrary.GetName().CmpNoCase( aName ) == 0;
} }
bool operator!=( const CMP_LIBRARY& lib, const wxChar* name ) bool operator!=( const CMP_LIBRARY& aLibrary, const wxChar* aName )
{ {
return !( lib == name ); return !( aLibrary == aName );
} }
bool operator<( const CMP_LIBRARY& item1, const CMP_LIBRARY& item2 ) bool operator<( const CMP_LIBRARY& aItem1, const CMP_LIBRARY& aItem2 )
{ {
/* The cache library always is sorted to the end of the library list. */ /* The cache library always is sorted to the end of the library list. */
if( item1.IsCache() ) if( aItem1.IsCache() )
return true; return true;
if( item2.IsCache() ) if( aItem2.IsCache() )
return false; return false;
/* If the sort order array isn't set, then sort alphabetically except. */ /* If the sort order array isn't set, then sort alphabetically except. */
if( CMP_LIBRARY::GetSortOrder().IsEmpty() ) if( CMP_LIBRARY::GetSortOrder().IsEmpty() )
return item1.GetName().CmpNoCase( item2.GetName() ) < 0; return aItem1.GetName().CmpNoCase( aItem2.GetName() ) < 0;
int i1 = CMP_LIBRARY::GetSortOrder().Index( item1.GetName(), false ); int i1 = CMP_LIBRARY::GetSortOrder().Index( aItem1.GetName(), false );
int i2 = CMP_LIBRARY::GetSortOrder().Index( item2.GetName(), false ); int i2 = CMP_LIBRARY::GetSortOrder().Index( aItem2.GetName(), false );
if( i1 == wxNOT_FOUND && i2 == wxNOT_FOUND ) if( i1 == wxNOT_FOUND && i2 == wxNOT_FOUND )
return true; return true;
...@@ -73,19 +73,19 @@ bool operator<( const CMP_LIBRARY& item1, const CMP_LIBRARY& item2 ) ...@@ -73,19 +73,19 @@ bool operator<( const CMP_LIBRARY& item1, const CMP_LIBRARY& item2 )
} }
CMP_LIBRARY::CMP_LIBRARY( int type, const wxFileName& fileName ) CMP_LIBRARY::CMP_LIBRARY( int aType, const wxFileName& aFileName )
{ {
m_Type = type; /* type indicator */ m_Type = aType;
m_IsModified = false; /* modified indicator */ isModified = false;
m_TimeStamp = 0; timeStamp = 0;
m_Flags = 0; m_Flags = 0;
m_IsCache = false; isCache = false;
m_DateTime = wxDateTime::Now(); timeStamp = wxDateTime::Now();
if( fileName.IsOk() ) if( aFileName.IsOk() )
m_fileName = fileName; fileName = aFileName;
else else
m_fileName = wxFileName( wxT( "unnamed.lib" ) ); fileName = wxFileName( wxT( "unnamed.lib" ) );
} }
...@@ -94,70 +94,69 @@ CMP_LIBRARY::~CMP_LIBRARY() ...@@ -94,70 +94,69 @@ CMP_LIBRARY::~CMP_LIBRARY()
} }
void CMP_LIBRARY::GetEntryNames( wxArrayString& names, bool sort, void CMP_LIBRARY::GetEntryNames( wxArrayString& aNames, bool aSort, bool aMakeUpperCase )
bool makeUpperCase )
{ {
BOOST_FOREACH( CMP_LIB_ENTRY& entry, m_Entries ) BOOST_FOREACH( CMP_LIB_ENTRY& entry, entries )
{ {
if( makeUpperCase ) if( aMakeUpperCase )
{ {
wxString tmp = entry.GetName(); wxString tmp = entry.GetName();
tmp.MakeUpper(); tmp.MakeUpper();
names.Add( tmp ); aNames.Add( tmp );
} }
else else
{ {
names.Add( entry.GetName() ); aNames.Add( entry.GetName() );
} }
} }
if( sort ) if( aSort )
names.Sort(); aNames.Sort();
} }
void CMP_LIBRARY::SearchEntryNames( wxArrayString& names, void CMP_LIBRARY::SearchEntryNames( wxArrayString& aNames,
const wxString& nameSearch, const wxString& aNameSearch,
const wxString& keySearch, const wxString& aKeySearch,
bool sort ) bool aSort )
{ {
BOOST_FOREACH( CMP_LIB_ENTRY& entry, m_Entries ) BOOST_FOREACH( CMP_LIB_ENTRY& entry, entries )
{ {
if( !keySearch.IsEmpty() && KeyWordOk( keySearch, entry.m_KeyWord ) ) if( !aKeySearch.IsEmpty() && KeyWordOk( aKeySearch, entry.GetKeyWords() ) )
names.Add( entry.GetName() ); aNames.Add( entry.GetName() );
if( !nameSearch.IsEmpty() && WildCompareString( nameSearch, if( !aNameSearch.IsEmpty() && WildCompareString( aNameSearch,
entry.GetName(), entry.GetName(),
false ) ) false ) )
names.Add( entry.GetName() ); aNames.Add( entry.GetName() );
} }
if( sort ) if( aSort )
names.Sort(); aNames.Sort();
} }
void CMP_LIBRARY::SearchEntryNames( wxArrayString& names, const wxRegEx& re, void CMP_LIBRARY::SearchEntryNames( wxArrayString& aNames, const wxRegEx& aRe,
bool sort ) bool aSort )
{ {
if( !re.IsValid() ) if( !aRe.IsValid() )
return; return;
BOOST_FOREACH( CMP_LIB_ENTRY& entry, m_Entries ) BOOST_FOREACH( CMP_LIB_ENTRY& entry, entries )
{ {
if( re.Matches( entry.m_KeyWord ) ) if( aRe.Matches( entry.GetKeyWords() ) )
names.Add( entry.GetName() ); aNames.Add( entry.GetName() );
} }
if( sort ) if( aSort )
names.Sort(); aNames.Sort();
} }
CMP_LIB_ENTRY* CMP_LIBRARY::FindEntry( const wxChar* name ) CMP_LIB_ENTRY* CMP_LIBRARY::FindEntry( const wxChar* aName )
{ {
BOOST_FOREACH( CMP_LIB_ENTRY& entry, m_Entries ) BOOST_FOREACH( CMP_LIB_ENTRY& entry, entries )
{ {
if( entry.GetName().CmpNoCase( name ) == 0 ) if( entry.GetName().CmpNoCase( aName ) == 0 )
return &entry; return &entry;
} }
...@@ -165,11 +164,11 @@ CMP_LIB_ENTRY* CMP_LIBRARY::FindEntry( const wxChar* name ) ...@@ -165,11 +164,11 @@ CMP_LIB_ENTRY* CMP_LIBRARY::FindEntry( const wxChar* name )
} }
CMP_LIB_ENTRY* CMP_LIBRARY::FindEntry( const wxChar* name, LibrEntryType type ) CMP_LIB_ENTRY* CMP_LIBRARY::FindEntry( const wxChar* aName, LibrEntryType aType )
{ {
BOOST_FOREACH( CMP_LIB_ENTRY& entry, m_Entries ) BOOST_FOREACH( CMP_LIB_ENTRY& entry, entries )
{ {
if( entry.GetName().CmpNoCase( name ) == 0 && entry.Type == type ) if( entry.GetName().CmpNoCase( aName ) == 0 && entry.GetType() == aType )
return &entry; return &entry;
} }
...@@ -177,12 +176,12 @@ CMP_LIB_ENTRY* CMP_LIBRARY::FindEntry( const wxChar* name, LibrEntryType type ) ...@@ -177,12 +176,12 @@ CMP_LIB_ENTRY* CMP_LIBRARY::FindEntry( const wxChar* name, LibrEntryType type )
} }
LIB_COMPONENT* CMP_LIBRARY::FindComponent( const wxChar* name ) LIB_COMPONENT* CMP_LIBRARY::FindComponent( const wxChar* aName )
{ {
LIB_COMPONENT* component = NULL; LIB_COMPONENT* component = NULL;
CMP_LIB_ENTRY* entry = FindEntry( name ); CMP_LIB_ENTRY* entry = FindEntry( aName );
if( entry != NULL && entry->Type == ALIAS ) if( entry != NULL && entry->isAlias() )
{ {
LIB_ALIAS* alias = (LIB_ALIAS*) entry; LIB_ALIAS* alias = (LIB_ALIAS*) entry;
component = alias->GetComponent(); component = alias->GetComponent();
...@@ -196,41 +195,41 @@ LIB_COMPONENT* CMP_LIBRARY::FindComponent( const wxChar* name ) ...@@ -196,41 +195,41 @@ LIB_COMPONENT* CMP_LIBRARY::FindComponent( const wxChar* name )
} }
bool CMP_LIBRARY::AddAlias( LIB_ALIAS* alias ) bool CMP_LIBRARY::AddAlias( LIB_ALIAS* aAlias )
{ {
wxASSERT( alias != NULL ); wxASSERT( aAlias != NULL );
if( FindEntry( alias->GetName() ) != NULL ) if( FindEntry( aAlias->GetName() ) != NULL )
{ {
wxString msg; wxString msg;
msg.Printf( _( "Cannot add duplicate alias <%s> to library <%s>." ), msg.Printf( _( "Cannot add duplicate alias <%s> to library <%s>." ),
GetChars( alias->GetName() ), GetChars( aAlias->GetName() ),
GetChars( m_fileName.GetName() ) ); GetChars( fileName.GetName() ) );
return false; return false;
} }
m_Entries.push_back( (CMP_LIB_ENTRY*) alias ); entries.push_back( (CMP_LIB_ENTRY*) aAlias );
m_IsModified = true; isModified = true;
return true; return true;
} }
LIB_COMPONENT* CMP_LIBRARY::AddComponent( LIB_COMPONENT* cmp ) LIB_COMPONENT* CMP_LIBRARY::AddComponent( LIB_COMPONENT* aComponent )
{ {
wxASSERT( cmp != NULL ); wxASSERT( aComponent != NULL );
LIB_COMPONENT* newCmp = new LIB_COMPONENT( *cmp, this ); LIB_COMPONENT* newCmp = new LIB_COMPONENT( *aComponent, this );
if( newCmp == NULL ) if( newCmp == NULL )
return NULL; return NULL;
m_Entries.push_back( (CMP_LIB_ENTRY*) newCmp ); entries.push_back( (CMP_LIB_ENTRY*) newCmp );
m_IsModified = true; isModified = true;
/* Cache libraries are component only libraries. Do not create alias /* Cache libraries are component only libraries. Do not create alias
* entries. */ * entries. */
if( !m_IsCache ) if( !isCache )
{ {
for( size_t i = 0; i < newCmp->m_AliasList.GetCount(); i++ ) for( size_t i = 0; i < newCmp->m_AliasList.GetCount(); i++ )
{ {
...@@ -239,255 +238,249 @@ LIB_COMPONENT* CMP_LIBRARY::AddComponent( LIB_COMPONENT* cmp ) ...@@ -239,255 +238,249 @@ LIB_COMPONENT* CMP_LIBRARY::AddComponent( LIB_COMPONENT* cmp )
if( alias == NULL ) if( alias == NULL )
{ {
alias = new LIB_ALIAS( newCmp->m_AliasList[ i ], newCmp ); alias = new LIB_ALIAS( newCmp->m_AliasList[ i ], newCmp );
m_Entries.push_back( alias ); entries.push_back( alias );
} }
else if( alias->GetComponent()->GetName().CmpNoCase( newCmp->GetName() ) != 0 ) else if( alias->GetComponent()->GetName().CmpNoCase( newCmp->GetName() ) != 0 )
{ {
wxLogError( _( "Conflict in library <%s>: alias <%s> already \ wxLogError( _( "Conflict in library <%s>: alias <%s> already has root name \
has root name <%s> and will not be assigned to root name <%s>." ), <%s> and will not be assigned to root name <%s>." ),
GetChars( m_fileName.GetName() ), GetChars( fileName.GetName() ),
GetChars( alias->GetComponent()->GetName() ), GetChars( alias->GetComponent()->GetName() ),
GetChars( newCmp->GetName() ) ); GetChars( newCmp->GetName() ) );
} }
} }
} }
m_Entries.sort(); entries.sort();
m_Entries.unique( DuplicateEntryName ); entries.unique( DuplicateEntryName );
return newCmp; return newCmp;
} }
void CMP_LIBRARY::RemoveEntry( const wxString& name ) void CMP_LIBRARY::RemoveEntry( const wxString& aName )
{ {
LIB_ENTRY_LIST::iterator i; LIB_ENTRY_LIST::iterator i;
for( i = m_Entries.begin(); i < m_Entries.end(); i++ ) for( i = entries.begin(); i < entries.end(); i++ )
{ {
if( i->GetName().CmpNoCase( name ) == 0 ) if( i->GetName().CmpNoCase( aName ) == 0 )
{ {
m_Entries.erase( i ); entries.erase( i );
return; return;
} }
} }
} }
void CMP_LIBRARY::RemoveEntry( CMP_LIB_ENTRY* entry ) void CMP_LIBRARY::RemoveEntry( CMP_LIB_ENTRY* aEntry )
{ {
wxASSERT( entry != NULL ); wxASSERT( aEntry != NULL );
LIB_COMPONENT* Root; LIB_COMPONENT* root;
LIB_ALIAS* Alias; LIB_ALIAS* alias;
m_IsModified = true; isModified = true;
if( entry->Type == ALIAS ) if( aEntry->isAlias() )
{ {
Alias = (LIB_ALIAS*) entry; alias = (LIB_ALIAS*) aEntry;
Root = Alias->GetComponent(); root = alias->GetComponent();
/* Remove alias name from the root component alias list */ /* Remove alias name from the root component alias list */
if( Root == NULL ) if( root == NULL )
{ {
wxLogWarning( wxT( "No root component found for alias <%s> in \ wxLogWarning( wxT( "No root component found for alias <%s> in library <%s>." ),
library <%s>." ), GetChars( aEntry->GetName() ),
GetChars( entry->GetName() ), GetChars( fileName.GetName() ) );
GetChars( m_fileName.GetName() ) );
} }
else else
{ {
int index = Root->m_AliasList.Index( entry->GetName(), false ); int index = root->m_AliasList.Index( aEntry->GetName(), false );
if( index == wxNOT_FOUND ) if( index == wxNOT_FOUND )
wxLogWarning( wxT( "Alias <%s> not found in component <%s> \ wxLogWarning( wxT( "Alias <%s> not found in component <%s> alias list in \
alias list in library <%s>" ), library <%s>" ),
GetChars( entry->GetName() ), GetChars( aEntry->GetName() ),
GetChars( Root->GetName() ), GetChars( root->GetName() ),
GetChars( m_fileName.GetName() ) ); GetChars( fileName.GetName() ) );
else else
Root->m_AliasList.RemoveAt( index ); root->m_AliasList.RemoveAt( index );
} }
RemoveEntry( Alias->GetName() ); RemoveEntry( alias->GetName() );
return; return;
} }
Root = ( LIB_COMPONENT* ) entry; root = ( LIB_COMPONENT* ) aEntry;
/* Entry is a component with no aliases so removal is simple. */ /* Entry is a component with no aliases so removal is simple. */
if( Root->m_AliasList.GetCount() == 0 ) if( root->m_AliasList.GetCount() == 0 )
{ {
RemoveEntry( Root->GetName() ); RemoveEntry( root->GetName() );
return; return;
} }
/* Entry is a component with one or more alias. */ /* Entry is a component with one or more alias. */
wxString AliasName = Root->m_AliasList[0]; wxString aliasName = root->m_AliasList[0];
/* The root component is not really deleted, it is renamed with the first /* The root component is not really deleted, it is renamed with the first
* alias name. */ * alias name. */
Alias = FindAlias( AliasName ); alias = FindAlias( aliasName );
if( Alias == NULL ) if( alias == NULL )
{ {
wxLogWarning( wxT( "Alias <%s> for component <%s> not found in \ wxLogWarning( wxT( "Alias <%s> for component <%s> not found in library <%s>" ),
library <%s>" ), GetChars( aliasName ),
GetChars( AliasName ), GetChars( root->GetName() ),
GetChars( Root->GetName() ), GetChars( fileName.GetName() ) );
GetChars( m_fileName.GetName() ) );
return; return;
} }
/* Remove the first alias name from the component alias list. */ /* Remove the first alias name from the component alias list. */
Root->m_AliasList.RemoveAt( 0 ); root->m_AliasList.RemoveAt( 0 );
/* Rename the component to the name of the first alias. */ /* Rename the component to the name of the first alias. */
Root->m_Doc = Alias->m_Doc; root->SetDescription( alias->GetDescription() );
Root->m_KeyWord = Alias->m_KeyWord; root->SetKeyWords( alias->GetKeyWords() );
/* Remove the first alias from library. */ /* Remove the first alias from library. */
RemoveEntry( AliasName ); RemoveEntry( aliasName );
/* Change the root name. */ /* Change the root name. */
Root->SetName( AliasName ); root->SetName( aliasName );
} }
LIB_COMPONENT* CMP_LIBRARY::ReplaceComponent( LIB_COMPONENT* oldComponent, LIB_COMPONENT* CMP_LIBRARY::ReplaceComponent( LIB_COMPONENT* aOldComponent,
LIB_COMPONENT* newComponent ) LIB_COMPONENT* aNewComponent )
{ {
wxASSERT( oldComponent != NULL && newComponent != NULL wxASSERT( aOldComponent != NULL && aNewComponent != NULL
&& oldComponent->GetName().CmpNoCase( newComponent->GetName() )== 0 ); && aOldComponent->GetName().CmpNoCase( aNewComponent->GetName() )== 0 );
size_t i; size_t i;
int index; int index;
LIB_ALIAS* alias; LIB_ALIAS* alias;
if( oldComponent->m_AliasList != newComponent->m_AliasList ) if( aOldComponent->m_AliasList != aNewComponent->m_AliasList )
{ {
/* Remove extra aliases. */ /* Remove extra aliases. */
for( i = 0; i < oldComponent->m_AliasList.GetCount(); i++ ) for( i = 0; i < aOldComponent->m_AliasList.GetCount(); i++ )
{ {
index = index =
newComponent->m_AliasList.Index( oldComponent->m_AliasList[ i ] ); aNewComponent->m_AliasList.Index( aOldComponent->m_AliasList[ i ] );
if( index != wxNOT_FOUND ) if( index != wxNOT_FOUND )
continue; continue;
wxLogDebug( wxT( "Removing extra alias <%s> from component <%s> \ wxLogDebug( wxT( "Removing extra alias <%s> from component <%s> in library <%s>." ),
in library <%s>." ), GetChars( aOldComponent->m_AliasList[ i ] ),
GetChars( oldComponent->m_AliasList[ i ] ), GetChars( aOldComponent->GetName() ),
GetChars( oldComponent->GetName() ), GetChars( fileName.GetName() ) );
GetChars( m_fileName.GetName() ) );
RemoveEntry( oldComponent->m_AliasList[ i ] ); RemoveEntry( aOldComponent->m_AliasList[ i ] );
} }
/* Add new aliases. */ /* Add new aliases. */
for( i = 0; i < newComponent->m_AliasList.GetCount(); i++ ) for( i = 0; i < aNewComponent->m_AliasList.GetCount(); i++ )
{ {
index = index = aOldComponent->m_AliasList.Index( aNewComponent->m_AliasList[ i ] );
oldComponent->m_AliasList.Index( newComponent->m_AliasList[ i ] );
if( index != wxNOT_FOUND if( index != wxNOT_FOUND
|| FindEntry( newComponent->m_AliasList[ i ] ) != NULL ) || FindEntry( aNewComponent->m_AliasList[ i ] ) != NULL )
continue; continue;
wxLogDebug( wxT( "Adding extra alias <%s> from component <%s> \ wxLogDebug( wxT( "Adding extra alias <%s> from component <%s> in library <%s>." ),
in library <%s>." ), GetChars( aNewComponent->m_AliasList[ i ] ),
GetChars( newComponent->m_AliasList[ i ] ), GetChars( aNewComponent->GetName() ),
GetChars( newComponent->GetName() ), GetChars( fileName.GetName() ) );
GetChars( m_fileName.GetName() ) );
alias = new LIB_ALIAS( newComponent->m_AliasList[ i ], alias = new LIB_ALIAS( aNewComponent->m_AliasList[ i ], aNewComponent );
newComponent ); entries.push_back( alias );
m_Entries.push_back( alias );
} }
} }
RemoveEntry( oldComponent->GetName() ); RemoveEntry( aOldComponent->GetName() );
LIB_COMPONENT* newCmp = new LIB_COMPONENT( *newComponent, this ); LIB_COMPONENT* newCmp = new LIB_COMPONENT( *aNewComponent, this );
if( newCmp == NULL ) if( newCmp == NULL )
return NULL; return NULL;
m_Entries.push_back( (CMP_LIB_ENTRY*) newCmp ); entries.push_back( (CMP_LIB_ENTRY*) newCmp );
m_Entries.sort(); entries.sort();
m_IsModified = true; isModified = true;
return newCmp; return newCmp;
} }
CMP_LIB_ENTRY* CMP_LIBRARY::GetNextEntry( const wxChar* name ) CMP_LIB_ENTRY* CMP_LIBRARY::GetNextEntry( const wxChar* aName )
{ {
size_t i; size_t i;
CMP_LIB_ENTRY* entry = NULL; CMP_LIB_ENTRY* entry = NULL;
for( i = 0; i < m_Entries.size(); i++ ) for( i = 0; i < entries.size(); i++ )
{ {
if( m_Entries[i].GetName().CmpNoCase( name ) == 0 ) if( entries[i].GetName().CmpNoCase( aName ) == 0 )
{ {
if( i < m_Entries.size() - 1 ) if( i < entries.size() - 1 )
{ {
entry = &m_Entries[ i + 1 ]; entry = &entries[ i + 1 ];
break; break;
} }
} }
} }
if( entry == NULL ) if( entry == NULL )
entry = &m_Entries.front(); entry = &entries.front();
return entry; return entry;
} }
CMP_LIB_ENTRY* CMP_LIBRARY::GetPreviousEntry( const wxChar* name ) CMP_LIB_ENTRY* CMP_LIBRARY::GetPreviousEntry( const wxChar* aName )
{ {
size_t i; size_t i;
CMP_LIB_ENTRY* entry = NULL; CMP_LIB_ENTRY* entry = NULL;
for( i = 0; i < m_Entries.size(); i++ ) for( i = 0; i < entries.size(); i++ )
{ {
if( m_Entries[i].GetName().CmpNoCase( name ) == 0 && entry ) if( entries[i].GetName().CmpNoCase( aName ) == 0 && entry )
break; break;
entry = &m_Entries[i]; entry = &entries[i];
} }
return entry; return entry;
} }
bool CMP_LIBRARY::Load( wxString& errMsg ) bool CMP_LIBRARY::Load( wxString& aErrorMsg )
{ {
FILE* f; FILE* file;
int LineNum = 0; int lineNumber = 0;
char Line[1024]; char line[1024];
LIB_COMPONENT* LibEntry; LIB_COMPONENT* libEntry;
wxString msg; wxString msg;
if( m_fileName.GetFullPath().IsEmpty() ) if( fileName.GetFullPath().IsEmpty() )
{ {
errMsg = _( "The component library file name is not set." ); aErrorMsg = _( "The component library file name is not set." );
return false; return false;
} }
f = wxFopen( m_fileName.GetFullPath(), wxT( "rt" ) ); file = wxFopen( fileName.GetFullPath(), wxT( "rt" ) );
if( f == NULL ) if( file == NULL )
{ {
errMsg = _( "The file could not be opened." ); aErrorMsg = _( "The file could not be opened." );
return false; return false;
} }
if( GetLine( f, Line, &LineNum, sizeof( Line ) ) == NULL ) if( GetLine( file, line, &lineNumber, sizeof( line ) ) == NULL )
{ {
errMsg = _( "The file is empty!" ); aErrorMsg = _( "The file is empty!" );
return false; return false;
} }
...@@ -496,9 +489,9 @@ bool CMP_LIBRARY::Load( wxString& errMsg ) ...@@ -496,9 +489,9 @@ bool CMP_LIBRARY::Load( wxString& errMsg )
{ {
wxString tmp; wxString tmp;
m_Header = CONV_FROM_UTF8( Line ); header = CONV_FROM_UTF8( line );
wxStringTokenizer tkn( m_Header ); wxStringTokenizer tkn( header );
/* /*
* The file header (first line) in library versions 2.0 and lower * The file header (first line) in library versions 2.0 and lower
...@@ -510,20 +503,19 @@ bool CMP_LIBRARY::Load( wxString& errMsg ) ...@@ -510,20 +503,19 @@ bool CMP_LIBRARY::Load( wxString& errMsg )
if( !tkn.HasMoreTokens() if( !tkn.HasMoreTokens()
|| !tkn.GetNextToken().Upper().StartsWith(wxT( "EESCHEMA-LIB" ) ) ) || !tkn.GetNextToken().Upper().StartsWith(wxT( "EESCHEMA-LIB" ) ) )
{ {
errMsg = _( "The file is NOT an EESCHEMA library!" ); aErrorMsg = _( "The file is NOT an EESCHEMA library!" );
return false; return false;
} }
if( !tkn.HasMoreTokens() ) if( !tkn.HasMoreTokens() )
{ {
errMsg = wxT( aErrorMsg = _( "The file header is missing version and time stamp information." );
"The file header is missing version and time stamp information." );
return false; return false;
} }
if( tkn.GetNextToken() != wxT( "Version" ) || !tkn.HasMoreTokens() ) if( tkn.GetNextToken() != wxT( "Version" ) || !tkn.HasMoreTokens() )
{ {
errMsg = wxT( "The file header version information is invalid." ); aErrorMsg = wxT( "The file header version information is invalid." );
return false; return false;
} }
...@@ -544,62 +536,62 @@ the current schematic." ), ...@@ -544,62 +536,62 @@ the current schematic." ),
} }
else else
{ {
m_verMajor = (int) major; versionMajor = (int) major;
m_verMinor = (int) minor; versionMinor = (int) minor;
wxLogDebug( wxT( "Component library <%s> is version %d.%d." ), wxLogDebug( wxT( "Component library <%s> is version %d.%d." ),
GetChars( GetName() ), m_verMajor, m_verMinor ); GetChars( GetName() ), versionMajor, versionMinor );
} }
} }
while( GetLine( f, Line, &LineNum, sizeof( Line ) ) ) while( GetLine( file, line, &lineNumber, sizeof( line ) ) )
{ {
if( m_Type == LIBRARY_TYPE_EESCHEMA if( m_Type == LIBRARY_TYPE_EESCHEMA
&& strnicmp( Line, "$HEADER", 7 ) == 0 ) && strnicmp( line, "$HEADER", 7 ) == 0 )
{ {
if( !LoadHeader( f, &LineNum ) ) if( !LoadHeader( file, &lineNumber ) )
{ {
errMsg = _( "An error occurred attempting to read the header." ); aErrorMsg = _( "An error occurred attempting to read the header." );
return false; return false;
} }
continue; continue;
} }
if( strnicmp( Line, "DEF", 3 ) == 0 ) if( strnicmp( line, "DEF", 3 ) == 0 )
{ {
/* Read one DEF/ENDDEF part entry from library: */ /* Read one DEF/ENDDEF part entry from library: */
LibEntry = new LIB_COMPONENT( wxEmptyString, this ); libEntry = new LIB_COMPONENT( wxEmptyString, this );
if( LibEntry->Load( f, Line, &LineNum, msg ) ) if( libEntry->Load( file, line, &lineNumber, msg ) )
{ {
/* Check for duplicate entry names and warn the user about /* Check for duplicate entry names and warn the user about
* the potential conflict. * the potential conflict.
*/ */
if( FindEntry( LibEntry->GetName() ) != NULL ) if( FindEntry( libEntry->GetName() ) != NULL )
{ {
wxString msg( wxGetTranslation(duplicate_name_msg)); wxString msg( wxGetTranslation(duplicate_name_msg));
wxLogWarning( msg, wxLogWarning( msg,
GetChars( m_fileName.GetName() ), GetChars( fileName.GetName() ),
GetChars( LibEntry->GetName() ) ); GetChars( libEntry->GetName() ) );
} }
/* If we are here, this part is O.k. - put it in: */ /* If we are here, this part is O.k. - put it in: */
m_Entries.push_back( LibEntry ); entries.push_back( libEntry );
LoadAliases( LibEntry ); LoadAliases( libEntry );
} }
else else
{ {
wxLogWarning( _( "Library <%s> component load error %s." ), wxLogWarning( _( "Library <%s> component load error %s." ),
GetChars( m_fileName.GetName() ), GetChars( fileName.GetName() ),
GetChars( msg ) ); GetChars( msg ) );
msg.Clear(); msg.Clear();
delete LibEntry; delete libEntry;
} }
} }
} }
m_Entries.sort(); entries.sort();
return true; return true;
} }
...@@ -607,7 +599,7 @@ the current schematic." ), ...@@ -607,7 +599,7 @@ the current schematic." ),
void CMP_LIBRARY::LoadAliases( LIB_COMPONENT* component ) void CMP_LIBRARY::LoadAliases( LIB_COMPONENT* component )
{ {
wxASSERT( component != NULL && component->Type == ROOT ); wxASSERT( component != NULL && component->isComponent() );
LIB_ALIAS* alias; LIB_ALIAS* alias;
unsigned ii; unsigned ii;
...@@ -618,12 +610,12 @@ void CMP_LIBRARY::LoadAliases( LIB_COMPONENT* component ) ...@@ -618,12 +610,12 @@ void CMP_LIBRARY::LoadAliases( LIB_COMPONENT* component )
{ {
wxString msg( wxGetTranslation(duplicate_name_msg)); wxString msg( wxGetTranslation(duplicate_name_msg));
wxLogError( msg, wxLogError( msg,
GetChars( m_fileName.GetName() ), GetChars( fileName.GetName() ),
GetChars( component->m_AliasList[ii] ) ); GetChars( component->m_AliasList[ii] ) );
} }
alias = new LIB_ALIAS( component->m_AliasList[ii], component, this ); alias = new LIB_ALIAS( component->m_AliasList[ii], component, this );
m_Entries.push_back( alias ); entries.push_back( alias );
} }
} }
...@@ -637,7 +629,7 @@ bool CMP_LIBRARY::LoadHeader( FILE* libfile, int* LineNum ) ...@@ -637,7 +629,7 @@ bool CMP_LIBRARY::LoadHeader( FILE* libfile, int* LineNum )
text = strtok( Line, " \t\r\n" ); text = strtok( Line, " \t\r\n" );
data = strtok( NULL, " \t\r\n" ); data = strtok( NULL, " \t\r\n" );
if( stricmp( text, "TimeStamp" ) == 0 ) if( stricmp( text, "TimeStamp" ) == 0 )
m_TimeStamp = atol( data ); timeStamp = atol( data );
if( stricmp( text, "$ENDHEADER" ) == 0 ) if( stricmp( text, "$ENDHEADER" ) == 0 )
return TRUE; return TRUE;
} }
...@@ -646,97 +638,96 @@ bool CMP_LIBRARY::LoadHeader( FILE* libfile, int* LineNum ) ...@@ -646,97 +638,96 @@ bool CMP_LIBRARY::LoadHeader( FILE* libfile, int* LineNum )
} }
bool CMP_LIBRARY::LoadDocs( wxString& errMsg ) bool CMP_LIBRARY::LoadDocs( wxString& aErrorMsg )
{ {
int LineNum = 0; int lineNumber = 0;
char Line[1024], * Name, * Text; char line[1024], * name, * text;
CMP_LIB_ENTRY* Entry; CMP_LIB_ENTRY* entry;
FILE* f; FILE* file;
wxString msg; wxString msg;
wxFileName fn = m_fileName; wxFileName fn = fileName;
fn.SetExt( DOC_EXT ); fn.SetExt( DOC_EXT );
f = wxFopen( fn.GetFullPath(), wxT( "rt" ) ); file = wxFopen( fn.GetFullPath(), wxT( "rt" ) );
if( f == NULL ) if( file == NULL )
{ {
errMsg.Printf( _( "Could not open component document library file <%s>." ), aErrorMsg.Printf( _( "Could not open component document library file <%s>." ),
GetChars( fn.GetFullPath() ) ); GetChars( fn.GetFullPath() ) );
return false; return false;
} }
if( GetLine( f, Line, &LineNum, sizeof(Line) ) == NULL ) if( GetLine( file, line, &lineNumber, sizeof(line) ) == NULL )
{ {
errMsg.Printf( _( "Component document library file <%s> is empty." ), aErrorMsg.Printf( _( "Component document library file <%s> is empty." ),
GetChars( fn.GetFullPath() ) ); GetChars( fn.GetFullPath() ) );
fclose( f ); fclose( file );
return false; return false;
} }
if( strnicmp( Line, DOCFILE_IDENT, 10 ) != 0 ) if( strnicmp( line, DOCFILE_IDENT, 10 ) != 0 )
{ {
errMsg.Printf( _( "File <%s> is not a valid component library \ aErrorMsg.Printf( _( "File <%s> is not a valid component library document file." ),
document file." ), GetChars( fn.GetFullPath() ) );
GetChars( fn.GetFullPath() ) ); fclose( file );
fclose( f );
return false; return false;
} }
while( GetLine( f, Line, &LineNum, sizeof(Line) ) ) while( GetLine( file, line, &lineNumber, sizeof(line) ) )
{ {
if( strncmp( Line, "$CMP", 4 ) != 0 ) if( strncmp( line, "$CMP", 4 ) != 0 )
{ {
errMsg.Printf( wxT( "$CMP command expected in line %d, aborted." ), aErrorMsg.Printf( wxT( "$CMP command expected in line %d, aborted." ),
LineNum ); lineNumber );
fclose( f ); fclose( file );
return false; return false;
} }
/* Read one $CMP/$ENDCMP part entry from library: */ /* Read one $CMP/$ENDCMP part entry from library: */
Name = strtok( Line + 5, "\n\r" ); name = strtok( line + 5, "\n\r" );
wxString cmpname = CONV_FROM_UTF8( Name ); wxString cmpname = CONV_FROM_UTF8( name );
Entry = FindEntry( cmpname ); entry = FindEntry( cmpname );
while( GetLine( f, Line, &LineNum, sizeof(Line) ) ) while( GetLine( file, line, &lineNumber, sizeof(line) ) )
{ {
if( strncmp( Line, "$ENDCMP", 7 ) == 0 ) if( strncmp( line, "$ENDCMP", 7 ) == 0 )
break; break;
Text = strtok( Line + 2, "\n\r" ); text = strtok( line + 2, "\n\r" );
switch( Line[0] ) switch( line[0] )
{ {
case 'D': case 'D':
if( Entry ) if( entry )
Entry->m_Doc = CONV_FROM_UTF8( Text ); entry->SetDescription( CONV_FROM_UTF8( text ) );
break; break;
case 'K': case 'K':
if( Entry ) if( entry )
Entry->m_KeyWord = CONV_FROM_UTF8( Text ); entry->SetKeyWords( CONV_FROM_UTF8( text ) );
break; break;
case 'F': case 'F':
if( Entry ) if( entry )
Entry->m_DocFile = CONV_FROM_UTF8( Text ); entry->SetDocFileName( CONV_FROM_UTF8( text ) );
break; break;
} }
} }
} }
fclose( f ); fclose( file );
return true; return true;
} }
bool CMP_LIBRARY::Save( const wxString& FullFileName, bool oldDocFormat ) bool CMP_LIBRARY::Save( const wxString& aFullFileName, bool aOldDocFormat )
{ {
FILE* libfile; FILE* libfile;
wxString msg; wxString msg;
wxFileName libFileName = FullFileName; wxFileName libFileName = aFullFileName;
wxFileName backupFileName = FullFileName; wxFileName backupFileName = aFullFileName;
/* the old .lib file is renamed .bak */ /* the old .lib file is renamed .bak */
if( libFileName.FileExists() ) if( libFileName.FileExists() )
...@@ -765,9 +756,9 @@ bool CMP_LIBRARY::Save( const wxString& FullFileName, bool oldDocFormat ) ...@@ -765,9 +756,9 @@ bool CMP_LIBRARY::Save( const wxString& FullFileName, bool oldDocFormat )
return false; return false;
} }
m_IsModified = false; isModified = false;
m_TimeStamp = GetTimeStamp(); timeStamp = GetTimeStamp();
if( !SaveHeader( libfile ) ) if( !SaveHeader( libfile ) )
{ {
fclose( libfile ); fclose( libfile );
...@@ -776,9 +767,9 @@ bool CMP_LIBRARY::Save( const wxString& FullFileName, bool oldDocFormat ) ...@@ -776,9 +767,9 @@ bool CMP_LIBRARY::Save( const wxString& FullFileName, bool oldDocFormat )
bool success = true; bool success = true;
BOOST_FOREACH( CMP_LIB_ENTRY& entry, m_Entries ) BOOST_FOREACH( CMP_LIB_ENTRY& entry, entries )
{ {
if ( entry.Type == ROOT ) if ( entry.isComponent() )
{ {
LIB_COMPONENT* component = ( LIB_COMPONENT* ) &entry; LIB_COMPONENT* component = ( LIB_COMPONENT* ) &entry;
if ( !component->Save( libfile ) ) if ( !component->Save( libfile ) )
...@@ -791,19 +782,19 @@ bool CMP_LIBRARY::Save( const wxString& FullFileName, bool oldDocFormat ) ...@@ -791,19 +782,19 @@ bool CMP_LIBRARY::Save( const wxString& FullFileName, bool oldDocFormat )
fclose( libfile ); fclose( libfile );
if( USE_OLD_DOC_FILE_FORMAT( m_verMajor, m_verMinor ) && oldDocFormat ) if( USE_OLD_DOC_FILE_FORMAT( versionMajor, versionMinor ) && aOldDocFormat )
success = SaveDocFile( FullFileName ); success = SaveDocFile( aFullFileName );
return success; return success;
} }
bool CMP_LIBRARY::SaveDocFile( const wxString& FullFileName ) bool CMP_LIBRARY::SaveDocFile( const wxString& aFullFileName )
{ {
FILE* docfile; FILE* docfile;
wxString msg; wxString msg;
wxFileName backupFileName = FullFileName; wxFileName backupFileName = aFullFileName;
wxFileName docFileName = FullFileName; wxFileName docFileName = aFullFileName;
docFileName.SetExt( DOC_EXT ); docFileName.SetExt( DOC_EXT );
...@@ -834,9 +825,9 @@ bool CMP_LIBRARY::SaveDocFile( const wxString& FullFileName ) ...@@ -834,9 +825,9 @@ bool CMP_LIBRARY::SaveDocFile( const wxString& FullFileName )
return false; return false;
} }
char Line[256]; char line[256];
if( fprintf( docfile, "%s Date: %s\n", DOCFILE_IDENT, if( fprintf( docfile, "%s Date: %s\n", DOCFILE_IDENT,
DateAndTime( Line ) ) < 0 ) DateAndTime( line ) ) < 0 )
{ {
fclose( docfile ); fclose( docfile );
return false; return false;
...@@ -844,7 +835,7 @@ bool CMP_LIBRARY::SaveDocFile( const wxString& FullFileName ) ...@@ -844,7 +835,7 @@ bool CMP_LIBRARY::SaveDocFile( const wxString& FullFileName )
bool success = true; bool success = true;
BOOST_FOREACH( CMP_LIB_ENTRY& entry, m_Entries ) BOOST_FOREACH( CMP_LIB_ENTRY& entry, entries )
{ {
if ( !entry.SaveDoc( docfile ) ) if ( !entry.SaveDoc( docfile ) )
success = false; success = false;
...@@ -859,20 +850,20 @@ bool CMP_LIBRARY::SaveDocFile( const wxString& FullFileName ) ...@@ -859,20 +850,20 @@ bool CMP_LIBRARY::SaveDocFile( const wxString& FullFileName )
} }
bool CMP_LIBRARY::SaveHeader( FILE* file ) bool CMP_LIBRARY::SaveHeader( FILE* aFile )
{ {
char BufLine[1024]; char BufLine[1024];
bool succes = true; bool succes = true;
DateAndTime( BufLine ); DateAndTime( BufLine );
if( fprintf( file, "%s %d.%d Date: %s\n", LIBFILE_IDENT, if( fprintf( aFile, "%s %d.%d Date: %s\n", LIBFILE_IDENT,
LIB_VERSION_MAJOR, LIB_VERSION_MINOR, BufLine ) < 0 ) LIB_VERSION_MAJOR, LIB_VERSION_MINOR, BufLine ) < 0 )
succes = false; succes = false;
#if 0 #if 0
if( ( fprintf( file, "$HEADER\n" ) < 0 ) if( ( fprintf( aFile, "$HEADER\n" ) < 0 )
|| ( fprintf( file, "TimeStamp %8.8lX\n", m_TimeStamp ) < 0 ) || ( fprintf( aFile, "TimeStamp %8.8lX\n", m_TimeStamp ) < 0 )
|| ( fprintf( file, "Parts %d\n", m_Entries.size() ) != 2 ) || ( fprintf( aFile, "Parts %d\n", entries.size() ) != 2 )
|| ( fprintf( file, "$ENDHEADER\n" ) != 1 ) ) || ( fprintf( aFile, "$ENDHEADER\n" ) != 1 ) )
succes = false; succes = false;
#endif #endif
return succes; return succes;
...@@ -882,122 +873,122 @@ bool CMP_LIBRARY::SaveHeader( FILE* file ) ...@@ -882,122 +873,122 @@ bool CMP_LIBRARY::SaveHeader( FILE* file )
/* /*
* The static library list and list management methods. * The static library list and list management methods.
*/ */
CMP_LIBRARY_LIST CMP_LIBRARY::m_LibraryList; CMP_LIBRARY_LIST CMP_LIBRARY::libraryList;
wxArrayString CMP_LIBRARY::m_LibraryListSortOrder; wxArrayString CMP_LIBRARY::libraryListSortOrder;
CMP_LIBRARY* CMP_LIBRARY::LoadLibrary( const wxFileName& fileName, CMP_LIBRARY* CMP_LIBRARY::LoadLibrary( const wxFileName& aFileName, wxString& aErrorMsg )
wxString& errMsg )
{ {
CMP_LIBRARY* lib = NULL; CMP_LIBRARY* lib = NULL;
lib = new CMP_LIBRARY( LIBRARY_TYPE_EESCHEMA, fileName ); lib = new CMP_LIBRARY( LIBRARY_TYPE_EESCHEMA, aFileName );
wxBusyCursor ShowWait; wxBusyCursor ShowWait;
if( !lib->Load( errMsg ) ) if( !lib->Load( aErrorMsg ) )
{ {
delete lib; delete lib;
return NULL; return NULL;
} }
if( USE_OLD_DOC_FILE_FORMAT( lib->m_verMajor, lib->m_verMinor ) ) if( USE_OLD_DOC_FILE_FORMAT( lib->versionMajor, lib->versionMinor ) )
lib->LoadDocs( errMsg ); lib->LoadDocs( aErrorMsg );
return lib; return lib;
} }
bool CMP_LIBRARY::AddLibrary( const wxFileName& fileName, wxString& errMsg ) bool CMP_LIBRARY::AddLibrary( const wxFileName& aFileName, wxString& aErrorMsg )
{ {
CMP_LIBRARY* lib; CMP_LIBRARY* lib;
/* Don't reload the library if it is already loaded. */ /* Don't reload the library if it is already loaded. */
lib = FindLibrary( fileName.GetName() ); lib = FindLibrary( aFileName.GetName() );
if( lib != NULL ) if( lib != NULL )
return true; return true;
lib = LoadLibrary( fileName, errMsg ); lib = LoadLibrary( aFileName, aErrorMsg );
if( lib == NULL ) if( lib == NULL )
return false; return false;
m_LibraryList.push_back( lib ); libraryList.push_back( lib );
return true; return true;
} }
bool CMP_LIBRARY::AddLibrary( const wxFileName& fileName, wxString& errMsg, bool CMP_LIBRARY::AddLibrary( const wxFileName& aFileName, wxString& aErrorMsg,
CMP_LIBRARY_LIST::iterator& i ) CMP_LIBRARY_LIST::iterator& aIterator )
{ {
CMP_LIBRARY* lib; CMP_LIBRARY* lib;
/* Don't reload the library if it is already loaded. */ /* Don't reload the library if it is already loaded. */
lib = FindLibrary( fileName.GetName() ); lib = FindLibrary( aFileName.GetName() );
if( lib != NULL ) if( lib != NULL )
return true; return true;
lib = LoadLibrary( fileName, errMsg ); lib = LoadLibrary( aFileName, aErrorMsg );
if( lib == NULL ) if( lib == NULL )
return false; return false;
if( i >= m_LibraryList.begin() && i < m_LibraryList.end() ) if( aIterator >= libraryList.begin() && aIterator < libraryList.end() )
m_LibraryList.insert( i, lib ); libraryList.insert( aIterator, lib );
else else
m_LibraryList.push_back( lib ); libraryList.push_back( lib );
return true; return true;
} }
void CMP_LIBRARY::RemoveLibrary( const wxString& name ) void CMP_LIBRARY::RemoveLibrary( const wxString& aName )
{ {
if( name.IsEmpty() ) if( aName.IsEmpty() )
return; return;
CMP_LIBRARY_LIST::iterator i; CMP_LIBRARY_LIST::iterator i;
for ( i = m_LibraryList.begin(); i < m_LibraryList.end(); i++ ) for ( i = libraryList.begin(); i < libraryList.end(); i++ )
{ {
if( i->GetName().CmpNoCase( name ) == 0 ) if( i->GetName().CmpNoCase( aName ) == 0 )
{ {
CMP_LIBRARY::m_LibraryList.erase( i ); CMP_LIBRARY::libraryList.erase( i );
return; return;
} }
} }
} }
CMP_LIBRARY* CMP_LIBRARY::FindLibrary( const wxString& name ) CMP_LIBRARY* CMP_LIBRARY::FindLibrary( const wxString& aName )
{ {
BOOST_FOREACH( CMP_LIBRARY& lib, m_LibraryList ) BOOST_FOREACH( CMP_LIBRARY& lib, libraryList )
{ {
if( lib == name ) if( lib == aName )
return &lib; return &lib;
} }
return NULL; return NULL;
} }
wxArrayString CMP_LIBRARY::GetLibraryNames( bool sorted )
wxArrayString CMP_LIBRARY::GetLibraryNames( bool aSorted )
{ {
wxString cacheName; wxString cacheName;
wxArrayString names; wxArrayString names;
BOOST_FOREACH( CMP_LIBRARY& lib, CMP_LIBRARY::m_LibraryList ) BOOST_FOREACH( CMP_LIBRARY& lib, CMP_LIBRARY::libraryList )
{ {
if( lib.m_IsCache && sorted ) if( lib.isCache && aSorted )
cacheName = lib.GetName(); cacheName = lib.GetName();
else else
names.Add( lib.GetName() ); names.Add( lib.GetName() );
} }
/* Even sorted, the cache library is always at the end of the list. */ /* Even sorted, the cache library is always at the end of the list. */
if( sorted ) if( aSorted )
names.Sort(); names.Sort();
if( !cacheName.IsEmpty() ) if( !cacheName.IsEmpty() )
...@@ -1007,17 +998,17 @@ wxArrayString CMP_LIBRARY::GetLibraryNames( bool sorted ) ...@@ -1007,17 +998,17 @@ wxArrayString CMP_LIBRARY::GetLibraryNames( bool sorted )
} }
LIB_COMPONENT* CMP_LIBRARY::FindLibraryComponent( const wxString& name, LIB_COMPONENT* CMP_LIBRARY::FindLibraryComponent( const wxString& aName,
const wxString& libName ) const wxString& aLibraryName )
{ {
LIB_COMPONENT* component = NULL; LIB_COMPONENT* component = NULL;
BOOST_FOREACH( CMP_LIBRARY& lib, m_LibraryList ) BOOST_FOREACH( CMP_LIBRARY& lib, libraryList )
{ {
if( !libName.IsEmpty() && lib.GetName() != libName ) if( !aLibraryName.IsEmpty() && lib.GetName() != aLibraryName )
continue; continue;
component = lib.FindComponent( name ); component = lib.FindComponent( aName );
if( component != NULL ) if( component != NULL )
break; break;
...@@ -1027,17 +1018,17 @@ LIB_COMPONENT* CMP_LIBRARY::FindLibraryComponent( const wxString& name, ...@@ -1027,17 +1018,17 @@ LIB_COMPONENT* CMP_LIBRARY::FindLibraryComponent( const wxString& name,
} }
CMP_LIB_ENTRY* CMP_LIBRARY::FindLibraryEntry( const wxString& name, CMP_LIB_ENTRY* CMP_LIBRARY::FindLibraryEntry( const wxString& aName,
const wxString& libName ) const wxString& aLibraryName )
{ {
CMP_LIB_ENTRY* entry = NULL; CMP_LIB_ENTRY* entry = NULL;
BOOST_FOREACH( CMP_LIBRARY& lib, m_LibraryList ) BOOST_FOREACH( CMP_LIBRARY& lib, libraryList )
{ {
if( !libName.IsEmpty() && lib.GetName() != libName ) if( !aLibraryName.IsEmpty() && lib.GetName() != aLibraryName )
continue; continue;
entry = lib.FindEntry( name ); entry = lib.FindEntry( aName );
if( entry != NULL ) if( entry != NULL )
break; break;
...@@ -1047,13 +1038,13 @@ CMP_LIB_ENTRY* CMP_LIBRARY::FindLibraryEntry( const wxString& name, ...@@ -1047,13 +1038,13 @@ CMP_LIB_ENTRY* CMP_LIBRARY::FindLibraryEntry( const wxString& name,
} }
void CMP_LIBRARY::RemoveCacheLibrary( void ) void CMP_LIBRARY::RemoveCacheLibrary()
{ {
CMP_LIBRARY_LIST::iterator i; CMP_LIBRARY_LIST::iterator i;
for ( i = m_LibraryList.begin(); i < m_LibraryList.end(); i++ ) for ( i = libraryList.begin(); i < libraryList.end(); i++ )
{ {
if( i->m_IsCache ) if( i->isCache )
m_LibraryList.erase( i-- ); libraryList.erase( i-- );
} }
} }
...@@ -61,15 +61,13 @@ class CMP_LIBRARY ...@@ -61,15 +61,13 @@ class CMP_LIBRARY
{ {
public: public:
int m_Type; /* type indicator */ int m_Type; /* type indicator */
wxString m_Header; /* first line of loaded library. */ int m_Flags;
unsigned long m_TimeStamp; // Signature temporelle
int m_Flags; // variable used in some functions
public: public:
CMP_LIBRARY( int type, const wxFileName& fullname ); CMP_LIBRARY( int aType, const wxFileName& aFileName );
CMP_LIBRARY( int type, const wxString& fullname ) CMP_LIBRARY( int aType, const wxString& aFileName )
{ {
CMP_LIBRARY( type, wxFileName( fullname ) ); CMP_LIBRARY( aType, wxFileName( aFileName ) );
} }
~CMP_LIBRARY(); ~CMP_LIBRARY();
...@@ -86,12 +84,12 @@ public: ...@@ -86,12 +84,12 @@ public:
* component library already exists, it is backup up in file *.bak. * component library already exists, it is backup up in file *.bak.
* *
* @param aFullFileName - The library filename with path. * @param aFullFileName - The library filename with path.
* @param oldDocFormat - Save the document information in a separate * @param aOldDocFormat - Save the document information in a separate
* file if true. The default is to save as the * file if true. The default is to save as the
* current library file format. * current library file format.
* @return True if success writing else false. * @return True if success writing else false.
*/ */
bool Save( const wxString& aFullFileName, bool oldDocFormat = false ); bool Save( const wxString& aFullFileName, bool aOldDocFormat = false );
/** /**
* Save library document information to file. * Save library document information to file.
...@@ -102,25 +100,25 @@ public: ...@@ -102,25 +100,25 @@ public:
* @param aFullFileName - The library filename with path. * @param aFullFileName - The library filename with path.
* @return True if success writing else false. * @return True if success writing else false.
*/ */
bool SaveDocFile( const wxString& FullFileName ); bool SaveDocFile( const wxString& aFullFileName );
/** /**
* Load library from file. * Load library from file.
* *
* @param errMsg - Error message if load fails. * @param aErrorMsg - Error message if load fails.
* @return True if load was successful otherwise false. * @return True if load was successful otherwise false.
*/ */
bool Load( wxString& errMsg ); bool Load( wxString& aErrorMsg );
bool LoadDocs( wxString& errMsg ); bool LoadDocs( wxString& aErrorMsg );
private: private:
bool SaveHeader( FILE* file ); bool SaveHeader( FILE* aFile );
bool LoadHeader( FILE* file, int* LineNum ); bool LoadHeader( FILE* aFile, int* aLineNum );
void LoadAliases( LIB_COMPONENT* component ); void LoadAliases( LIB_COMPONENT* aComponent );
void RemoveEntry( const wxString& name ); void RemoveEntry( const wxString& aName );
public: public:
/** /**
...@@ -130,7 +128,7 @@ public: ...@@ -130,7 +128,7 @@ public:
*/ */
bool IsEmpty() const bool IsEmpty() const
{ {
return m_Entries.empty(); return entries.empty();
} }
/** /**
...@@ -140,29 +138,29 @@ public: ...@@ -140,29 +138,29 @@ public:
*/ */
int GetCount() const int GetCount() const
{ {
return m_Entries.size(); return entries.size();
} }
bool IsModified() const bool IsModified() const
{ {
return m_IsModified; return isModified;
} }
bool IsCache() const { return m_IsCache; } bool IsCache() const { return isCache; }
void SetModified( void ) { m_IsModified = true; } void SetModified( void ) { isModified = true; }
void SetCache( void ) { m_IsCache = true; } void SetCache( void ) { isCache = true; }
/** /**
* Load a string array with the names of all the entries in this library. * Load a string array with the names of all the entries in this library.
* *
* @param names - String array to place entry names into. * @param aNames - String array to place entry names into.
* @param sort - Sort names if true. * @param aSort - Sort names if true.
* @param makeUpperCase - Force entry names to upper case. * @param aMakeUpperCase - Force entry names to upper case.
*/ */
void GetEntryNames( wxArrayString& names, bool sort = true, void GetEntryNames( wxArrayString& aNames, bool aSort = true,
bool makeUpperCase = true ); bool aMakeUpperCase = true );
/** /**
* Load string array with entry names matching name and/or key word. * Load string array with entry names matching name and/or key word.
...@@ -171,72 +169,70 @@ public: ...@@ -171,72 +169,70 @@ public:
* WildCompareString(). The names array will be populated with the * WildCompareString(). The names array will be populated with the
* library entry names that meat the search criteria on exit. * library entry names that meat the search criteria on exit.
* *
* @param names - String array to place entry names into. * @param aNames - String array to place entry names into.
* @param nameSearch - Name wild card search criteria. * @param aNameSearch - Name wild card search criteria.
* @param keySearch - Key word search criteria. * @param aKeySearch - Key word search criteria.
* @param sort - Sort names if true. * @param aSort - Sort names if true.
*/ */
void SearchEntryNames( wxArrayString& names, void SearchEntryNames( wxArrayString& aNames,
const wxString& nameSearch = wxEmptyString, const wxString& aNameSearch = wxEmptyString,
const wxString& keySearch = wxEmptyString, const wxString& aKeySearch = wxEmptyString,
bool sort = true ); bool aSort = true );
/** /**
* Find components in library by key word regular expression search. * Find components in library by key word regular expression search.
* *
* @param names - String array to place found component names into. * @param aNames - String array to place found component names into.
* @param re - Regular expression used to seach component key words. * @param aRe - Regular expression used to seach component key words.
* @param sort - Sort component name list. * @param aSort - Sort component name list.
*/ */
void SearchEntryNames( wxArrayString& names, const wxRegEx& re, void SearchEntryNames( wxArrayString& aNames, const wxRegEx& aRe,
bool sort = true ); bool aSort = true );
/** /**
* Find entry by name. * Find entry by name.
* *
* @param name - Name of entry, case insensitive. * @param aName - Name of entry, case insensitive.
* @return Pointer to entry if found. NULL if not found. * @return Entry if found. NULL if not found.
*/ */
CMP_LIB_ENTRY* FindEntry( const wxChar* name ); CMP_LIB_ENTRY* FindEntry( const wxChar* aName );
/** /**
* Find entry by name and type. * Find entry by /a aName and /a aType.
* *
* @param name - Name of entry, case insensitive. * @param aName - Name of entry, case insensitive.
* @param type - Type of entry, root or alias. * @param aType - Type of entry, root or alias.
* @return Pointer to entry if found. NULL if not found. * @return Entry if found. NULL if not found.
*/ */
CMP_LIB_ENTRY* FindEntry( const wxChar* name, LibrEntryType type ); CMP_LIB_ENTRY* FindEntry( const wxChar* aName, LibrEntryType aType );
/** /**
* Find component by name. * Find component by /a aName.
* *
* This is a helper for FindEntry so casting a CMP_LIB_ENTRY pointer to * This is a helper for FindEntry so casting a CMP_LIB_ENTRY pointer to
* a LIB_COMPONENT pointer is not required. * a LIB_COMPONENT pointer is not required.
* *
* @param name - Name of component, case insensitive. * @param aName - Name of component, case insensitive.
* @param searchAliases - Searches for component by alias name as well as * @return Component if found. NULL if not found.
* component name if true.
* @return Pointer to component if found. NULL if not found.
*/ */
LIB_COMPONENT* FindComponent( const wxChar* name ); LIB_COMPONENT* FindComponent( const wxChar* aName );
/** /**
* Find alias by name. * Find alias by /a nName.
* *
* This is a helper for FindEntry so casting a CMP_LIB_ENTRY pointer to * This is a helper for FindEntry so casting a CMP_LIB_ENTRY pointer to
* a LIB_ALIAS pointer is not required. * a LIB_ALIAS pointer is not required.
* *
* @param name - Name of alias, case insensitive. * @param aName - Name of alias, case insensitive.
* @return Pointer to alias if found. NULL if not found. * @return Alias if found. NULL if not found.
*/ */
LIB_ALIAS* FindAlias( const wxChar* name ) LIB_ALIAS* FindAlias( const wxChar* aName )
{ {
return (LIB_ALIAS*) FindEntry( name, ALIAS ); return (LIB_ALIAS*) FindEntry( aName, ALIAS );
} }
/** /**
* Add a new alias entry to the library. * Add a new /a aAlias entry to the library.
* *
* First check if a component or alias with the same name already exists * First check if a component or alias with the same name already exists
* in the library and add alias if no conflict occurs. Once the alias * in the library and add alias if no conflict occurs. Once the alias
...@@ -244,21 +240,21 @@ public: ...@@ -244,21 +240,21 @@ public:
* alias pointer will render the library unstable. Use RemoveEntry to * alias pointer will render the library unstable. Use RemoveEntry to
* remove the alias from the library. * remove the alias from the library.
* *
* @param alias - Alias to add to library. * @param aAlias - Alias to add to library.
* @return True if alias added to library. False if conflict exists. * @return True if alias added to library. False if a conflict exists.
*/ */
bool AddAlias( LIB_ALIAS* alias ); bool AddAlias( LIB_ALIAS* aAlias );
/** /**
* Add component entry to library. * Add /a aComponent entry to library.
* *
* @param cmp - Component to add. * @param aComponent - Component to add.
* @return Pointer to added component if successful. * @return Added component if successful.
*/ */
LIB_COMPONENT* AddComponent( LIB_COMPONENT* cmp ); LIB_COMPONENT* AddComponent( LIB_COMPONENT* aComponent );
/** /**
* Remove an entry from the library. * Remove an /a aEntry from the library.
* *
* If the entry is an alias, the alias is removed from the library and from * If the entry is an alias, the alias is removed from the library and from
* the alias list of the root component. If the entry is a root component * the alias list of the root component. If the entry is a root component
...@@ -267,18 +263,18 @@ public: ...@@ -267,18 +263,18 @@ public:
* the first alias and the root name for all remaining aliases are updated * the first alias and the root name for all remaining aliases are updated
* to reflect the new root name. * to reflect the new root name.
* *
* @param entry - Entry to remove from library. * @param aEntry - Entry to remove from library.
*/ */
void RemoveEntry( CMP_LIB_ENTRY* entry ); void RemoveEntry( CMP_LIB_ENTRY* aEntry );
/** /**
* Replace an existing component entry in the library. * Replace an existing component entry in the library.
* *
* @param oldComponent - The component to replace. * @param aOldComponent - The component to replace.
* @param newComponent - The new component. * @param aNewComponent - The new component.
*/ */
LIB_COMPONENT* ReplaceComponent( LIB_COMPONENT* oldComponent, LIB_COMPONENT* ReplaceComponent( LIB_COMPONENT* aOldComponent,
LIB_COMPONENT* newComponent ); LIB_COMPONENT* aNewComponent );
/** /**
* Return the first entry in the library. * Return the first entry in the library.
...@@ -287,55 +283,55 @@ public: ...@@ -287,55 +283,55 @@ public:
*/ */
CMP_LIB_ENTRY* GetFirstEntry() CMP_LIB_ENTRY* GetFirstEntry()
{ {
return &m_Entries.front(); return &entries.front();
} }
/** /**
* Find next library entry by name. * Find next library entry by /a aName.
* *
* If the name of the entry is the last entry in the library, the first * If the name of the entry is the last entry in the library, the first
* entry in the list is returned. * entry in the list is returned.
* *
* @param name - Name of current entry. * @param aName - Name of current entry.
* @return Pointer to next entry if entry name is found. Otherwise NULL. * @return Next entry if entry name is found. Otherwise NULL.
*/ */
CMP_LIB_ENTRY* GetNextEntry( const wxChar* name ); CMP_LIB_ENTRY* GetNextEntry( const wxChar* aName );
/** /**
* Find previous library entry by name. * Find previous library entry by /a aName.
* *
* If the name of the entry is the first entry in the library, the last * If the name of the entry is the first entry in the library, the last
* entry in the list is returned. * entry in the list is returned.
* *
* @param name - Name of current entry. * @param aName - Name of current entry.
* @return Previous entry if entry name is found, otherwise NULL. * @return Previous entry if entry name is found, otherwise NULL.
*/ */
CMP_LIB_ENTRY* GetPreviousEntry( const wxChar* name ); CMP_LIB_ENTRY* GetPreviousEntry( const wxChar* aName );
/** /**
* Return the file name without path or extension. * Return the file name without path or extension.
* *
* @return Name of library file. * @return Name of library file.
*/ */
wxString GetName() const { return m_fileName.GetName(); } wxString GetName() const { return fileName.GetName(); }
/** /**
* Return the full file library name with path and extension. * Return the full file library name with path and extension.
* *
* @return Full library file name with path and extension. * @return Full library file name with path and extension.
*/ */
wxString GetFullFileName() { return m_fileName.GetFullPath(); } wxString GetFullFileName() { return fileName.GetFullPath(); }
/** /**
* Set the component library file name. * Set the component library file name.
* *
* @param fileName - New library file name. * @param aFileName - New library file name.
*/ */
void SetFileName( const wxFileName fileName ) void SetFileName( const wxFileName aFileName )
{ {
if( fileName != m_fileName ) if( aFileName != fileName )
m_fileName = fileName; fileName = aFileName;
} }
/* /*
...@@ -348,57 +344,57 @@ public: ...@@ -348,57 +344,57 @@ public:
/** /**
* Load a component library file. * Load a component library file.
* *
* @param fileName - File name of the component library to load. * @param aFileName - File name of the component library to load.
* @param errMsg - Error message if the component library failed to load. * @param aErrorMsg - Error message if the component library failed to load.
* @return Library object if library file loaded successfully, * @return Library object if library file loaded successfully,
* otherwise NULL. * otherwise NULL.
*/ */
static CMP_LIBRARY* LoadLibrary( const wxFileName& fileName, static CMP_LIBRARY* LoadLibrary( const wxFileName& aFileName,
wxString& errMsg ); wxString& aErrorMsg );
/** /**
* Add a compnent library to the library list. * Add a compnent library to the library list.
* *
* @param fileName - File name object of component library. * @param aFileName - File name object of component library.
* @param errMsg - Error message if the component library failed to load. * @param aErrorMsg - Error message if the component library failed to load.
* @return True if library loaded properly otherwise false. * @return True if library loaded properly otherwise false.
*/ */
static bool AddLibrary( const wxFileName& fileName, wxString& errMsg ); static bool AddLibrary( const wxFileName& aFileName, wxString& aErrorMsg );
/** /**
* Insert a compnent library to the library list. * Insert a compnent library to the library list.
* *
* @param fileName - File name object of component library. * @param aFileName - File name object of component library.
* @param errMsg - Error message if the component library failed to load. * @param aErrerMsg - Error message if the component library failed to load.
* @param i - Iterator to insert library in front of. * @param aIteratir - Iterator to insert library in front of.
* @return True if library loaded properly otherwise false. * @return True if library loaded properly otherwise false.
*/ */
static bool AddLibrary( const wxFileName& fileName, wxString& errMsg, static bool AddLibrary( const wxFileName& aFileName, wxString& aErrorMsg,
CMP_LIBRARY_LIST::iterator& i ); CMP_LIBRARY_LIST::iterator& aIterator );
/** /**
* Remove component library from the library list. * Remove component library from the library list.
* *
* @param name - Name of component library to remove. * @param aName - Name of component library to remove.
*/ */
static void RemoveLibrary( const wxString& name ); static void RemoveLibrary( const wxString& aName );
/** /**
* Find component library by name. * Find component library by /a aName.
* *
* @param name - Library file name without path or extension to find. * @param aName - Library file name without path or extension to find.
* @return Pointer to component library if found, otherwise NULL. * @return Component library if found, otherwise NULL.
*/ */
static CMP_LIBRARY* FindLibrary( const wxString& name ); static CMP_LIBRARY* FindLibrary( const wxString& aName );
/** /**
* Get the list of component library file names without path and extension. * Get the list of component library file names without path and extension.
* *
* @param sorted - Sort the list of name if true. Otherwise use the * @param aSorted - Sort the list of name if true. Otherwise use the
* library load order. * library load order.
* @return The list of library names. * @return The list of library names.
*/ */
static wxArrayString GetLibraryNames( bool sorted = true ); static wxArrayString GetLibraryNames( bool aSorted = true );
/** /**
* Search all libraries in the list for a component. * Search all libraries in the list for a component.
...@@ -406,60 +402,60 @@ public: ...@@ -406,60 +402,60 @@ public:
* A component object will always be returned. If the entry found * A component object will always be returned. If the entry found
* is an alias. The root component will be found and returned. * is an alias. The root component will be found and returned.
* *
* @param name - Name of component to search for. * @param aCompoentName - Name of component to search for.
* @param libNaem - Name of the library to search for component. * @param aLibraryName - Name of the library to search for component.
* @return The component object if found, otherwise NULL. * @return The component object if found, otherwise NULL.
*/ */
static LIB_COMPONENT* FindLibraryComponent( static LIB_COMPONENT* FindLibraryComponent( const wxString& aComponentName,
const wxString& name, const wxString& libName = wxEmptyString ); const wxString& aLibraryName = wxEmptyString );
/** /**
* Search all libraries in the list for an entry. * Search all libraries in the list for an entry.
* *
* The object can be either a component or an alias. * The object can be either a component or an alias.
* *
* @param name - Name of component to search for. * @param aEntryName - Name of entry to search for.
* @param libNaem - Name of the library to search for entry. * @param aLibraryName - Name of the library to search.
* @return The entry object if found, otherwise NULL. * @return The entry object if found, otherwise NULL.
*/ */
static CMP_LIB_ENTRY* FindLibraryEntry( static CMP_LIB_ENTRY* FindLibraryEntry( const wxString& aEntryName,
const wxString& name, const wxString& aLibraryName = wxEmptyString );
const wxString& libName = wxEmptyString );
/** /**
* Remove all cache libraries from library list. * Remove all cache libraries from library list.
*/ */
static void RemoveCacheLibrary( void ); static void RemoveCacheLibrary();
static int GetLibraryCount( void ) { return m_LibraryList.size(); } static int GetLibraryCount() { return libraryList.size(); }
static CMP_LIBRARY_LIST& GetLibraryList( void ) static CMP_LIBRARY_LIST& GetLibraryList()
{ {
return m_LibraryList; return libraryList;
} }
static void SetSortOrder( const wxArrayString& sortOrder ) static void SetSortOrder( const wxArrayString& aSortOrder )
{ {
m_LibraryListSortOrder = sortOrder; libraryListSortOrder = aSortOrder;
} }
static wxArrayString& GetSortOrder( void ) static wxArrayString& GetSortOrder( void )
{ {
return m_LibraryListSortOrder; return libraryListSortOrder;
} }
protected: protected:
wxFileName m_fileName; /* Library file name. */ wxFileName fileName; /* Library file name. */
wxDateTime m_DateTime; /* Library save time and date. */ wxDateTime timeStamp; /* Library save time and date. */
int m_verMajor; /* Library major version number. */ int versionMajor; /* Library major version number. */
int m_verMinor; /* Library minor version number. */ int versionMinor; /* Library minor version number. */
LIB_ENTRY_LIST m_Entries; /* Parts themselves are saved here. */ LIB_ENTRY_LIST entries; /* Parts themselves are saved here. */
bool m_IsModified; /* Library modification status. */ bool isModified; /* Library modification status. */
bool m_IsCache; /* False for the "standard" libraries, bool isCache; /* False for the "standard" libraries,
* True for the library cache */ * True for the library cache */
wxString header; /* first line of loaded library. */
static CMP_LIBRARY_LIST m_LibraryList; static CMP_LIBRARY_LIST libraryList;
static wxArrayString m_LibraryListSortOrder; static wxArrayString libraryListSortOrder;
friend class CMP_LIB_ENTRY; friend class CMP_LIB_ENTRY;
}; };
...@@ -468,7 +464,7 @@ protected: ...@@ -468,7 +464,7 @@ protected:
/** /**
* Case insensitive library name comparison. * Case insensitive library name comparison.
*/ */
extern bool operator==( const CMP_LIBRARY& lib, const wxChar* name ); extern bool operator==( const CMP_LIBRARY& aLibrary, const wxChar* aName );
extern bool operator!=( const CMP_LIBRARY& lib, const wxChar* name ); extern bool operator!=( const CMP_LIBRARY& aLibrary, const wxChar* aName );
#endif // CLASS_LIBRARY_H #endif // CLASS_LIBRARY_H
...@@ -525,7 +525,7 @@ LIB_PIN* SCH_COMPONENT::GetPin( const wxString& number ) ...@@ -525,7 +525,7 @@ LIB_PIN* SCH_COMPONENT::GetPin( const wxString& number )
if( Entry == NULL ) if( Entry == NULL )
return NULL; return NULL;
wxASSERT( Entry->Type == ROOT ); wxASSERT( Entry->isComponent() );
return Entry->GetPin( number, m_Multi, m_Convert ); return Entry->GetPin( number, m_Multi, m_Convert );
} }
...@@ -1099,7 +1099,7 @@ void SCH_COMPONENT::DisplayInfo( WinEDA_DrawFrame* frame ) ...@@ -1099,7 +1099,7 @@ void SCH_COMPONENT::DisplayInfo( WinEDA_DrawFrame* frame )
GetRef(((WinEDA_SchematicFrame*)frame)->GetSheet()), GetRef(((WinEDA_SchematicFrame*)frame)->GetSheet()),
DARKCYAN ); DARKCYAN );
if( Entry->m_Options == ENTRY_POWER ) if( Entry->isPower() )
msg = _( "Power symbol" ); msg = _( "Power symbol" );
else else
msg = _( "Name" ); msg = _( "Name" );
...@@ -1110,8 +1110,8 @@ void SCH_COMPONENT::DisplayInfo( WinEDA_DrawFrame* frame ) ...@@ -1110,8 +1110,8 @@ void SCH_COMPONENT::DisplayInfo( WinEDA_DrawFrame* frame )
msg = Entry->GetLibraryName(); msg = Entry->GetLibraryName();
frame->AppendMsgPanel( _( "Library" ), msg, DARKRED ); frame->AppendMsgPanel( _( "Library" ), msg, DARKRED );
frame->AppendMsgPanel( _( "Description" ), Entry->m_Doc, DARKCYAN ); frame->AppendMsgPanel( _( "Description" ), Entry->GetDescription(), DARKCYAN );
frame->AppendMsgPanel( _( "Key words" ), Entry->m_KeyWord, DARKCYAN ); frame->AppendMsgPanel( _( "Key words" ), Entry->GetKeyWords(), DARKCYAN );
} }
/** virtual function Mirror_Y /** virtual function Mirror_Y
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include "drawtxt.h" #include "drawtxt.h"
#include "trigo.h" #include "trigo.h"
#include "bezier_curves.h" #include "bezier_curves.h"
#include "confirm.h"
#include "program.h" #include "program.h"
#include "general.h" #include "general.h"
...@@ -23,8 +24,8 @@ static int fill_tab[3] = { 'N', 'F', 'f' }; ...@@ -23,8 +24,8 @@ static int fill_tab[3] = { 'N', 'F', 'f' };
/* Base class (abstract) for components bodies items */ /* Base class (abstract) for components bodies items */
LIB_DRAW_ITEM::LIB_DRAW_ITEM( KICAD_T struct_type, LIB_COMPONENT* aParent ) : LIB_DRAW_ITEM::LIB_DRAW_ITEM( KICAD_T aType, LIB_COMPONENT* aParent ) :
EDA_BaseStruct( struct_type ) EDA_BaseStruct( aType )
{ {
m_Unit = 0; /* Unit identification (for multi part per package) m_Unit = 0; /* Unit identification (for multi part per package)
* 0 if the item is common to all units */ * 0 if the item is common to all units */
...@@ -37,15 +38,15 @@ LIB_DRAW_ITEM::LIB_DRAW_ITEM( KICAD_T struct_type, LIB_COMPONENT* aParent ) : ...@@ -37,15 +38,15 @@ LIB_DRAW_ITEM::LIB_DRAW_ITEM( KICAD_T struct_type, LIB_COMPONENT* aParent ) :
} }
LIB_DRAW_ITEM::LIB_DRAW_ITEM( const LIB_DRAW_ITEM& item ) : LIB_DRAW_ITEM::LIB_DRAW_ITEM( const LIB_DRAW_ITEM& aItem ) :
EDA_BaseStruct( item ) EDA_BaseStruct( aItem )
{ {
m_Unit = item.m_Unit; m_Unit = aItem.m_Unit;
m_Convert = item.m_Convert; m_Convert = aItem.m_Convert;
m_Fill = item.m_Fill; m_Fill = aItem.m_Fill;
m_Parent = item.m_Parent; m_Parent = aItem.m_Parent;
m_typeName = item.m_typeName; m_typeName = aItem.m_typeName;
m_isFillable = item.m_isFillable; m_isFillable = aItem.m_isFillable;
} }
...@@ -56,18 +57,18 @@ LIB_DRAW_ITEM::LIB_DRAW_ITEM( const LIB_DRAW_ITEM& item ) : ...@@ -56,18 +57,18 @@ LIB_DRAW_ITEM::LIB_DRAW_ITEM( const LIB_DRAW_ITEM& item ) :
* all library items. Call the base class from the derived class or the * all library items. Call the base class from the derived class or the
* common information will not be updated in the message panel. * common information will not be updated in the message panel.
*/ */
void LIB_DRAW_ITEM::DisplayInfo( WinEDA_DrawFrame* frame ) void LIB_DRAW_ITEM::DisplayInfo( WinEDA_DrawFrame* aFrame )
{ {
wxString msg; wxString msg;
frame->ClearMsgPanel(); aFrame->ClearMsgPanel();
frame->AppendMsgPanel( _( "Type" ), m_typeName, CYAN ); aFrame->AppendMsgPanel( _( "Type" ), m_typeName, CYAN );
if( m_Unit == 0 ) if( m_Unit == 0 )
msg = _( "All" ); msg = _( "All" );
else else
msg.Printf( wxT( "%d" ), m_Unit ); msg.Printf( wxT( "%d" ), m_Unit );
frame->AppendMsgPanel( _( "Unit" ), msg, BROWN ); aFrame->AppendMsgPanel( _( "Unit" ), msg, BROWN );
if( m_Convert == 0 ) if( m_Convert == 0 )
msg = _( "All" ); msg = _( "All" );
...@@ -77,37 +78,37 @@ void LIB_DRAW_ITEM::DisplayInfo( WinEDA_DrawFrame* frame ) ...@@ -77,37 +78,37 @@ void LIB_DRAW_ITEM::DisplayInfo( WinEDA_DrawFrame* frame )
msg = _( "yes" ); msg = _( "yes" );
else else
msg = wxT( "?" ); msg = wxT( "?" );
frame->AppendMsgPanel( _( "Convert" ), msg, BROWN ); aFrame->AppendMsgPanel( _( "Convert" ), msg, BROWN );
} }
bool LIB_DRAW_ITEM::operator==( const LIB_DRAW_ITEM& other ) const bool LIB_DRAW_ITEM::operator==( const LIB_DRAW_ITEM& aOther ) const
{ {
return ( ( Type() == other.Type() ) return ( ( Type() == aOther.Type() )
&& ( m_Unit == other.m_Unit ) && ( m_Unit == aOther.m_Unit )
&& ( m_Convert == other.m_Convert ) && ( m_Convert == aOther.m_Convert )
&& DoCompare( other ) == 0 ); && DoCompare( aOther ) == 0 );
} }
bool LIB_DRAW_ITEM::operator<( const LIB_DRAW_ITEM& other ) const bool LIB_DRAW_ITEM::operator<( const LIB_DRAW_ITEM& aOther ) const
{ {
int result = m_Convert - other.m_Convert; int result = m_Convert - aOther.m_Convert;
if( result != 0 ) if( result != 0 )
return result < 0; return result < 0;
result = m_Unit - other.m_Unit; result = m_Unit - aOther.m_Unit;
if( result != 0 ) if( result != 0 )
return result < 0; return result < 0;
result = Type() - other.Type(); result = Type() - aOther.Type();
if( result != 0 ) if( result != 0 )
return result < 0; return result < 0;
return ( DoCompare( other ) < 0 ); return ( DoCompare( aOther ) < 0 );
} }
...@@ -128,16 +129,16 @@ LIB_ARC::LIB_ARC( LIB_COMPONENT* aParent ) : ...@@ -128,16 +129,16 @@ LIB_ARC::LIB_ARC( LIB_COMPONENT* aParent ) :
} }
LIB_ARC::LIB_ARC( const LIB_ARC& arc ) : LIB_DRAW_ITEM( arc ) LIB_ARC::LIB_ARC( const LIB_ARC& aArc ) : LIB_DRAW_ITEM( aArc )
{ {
m_Radius = arc.m_Radius; m_Radius = aArc.m_Radius;
m_t1 = arc.m_t1; m_t1 = aArc.m_t1;
m_t2 = arc.m_t2; m_t2 = aArc.m_t2;
m_Width = arc.m_Width; m_Width = aArc.m_Width;
m_Fill = arc.m_Fill; m_Fill = aArc.m_Fill;
m_Pos = arc.m_Pos; m_Pos = aArc.m_Pos;
m_ArcStart = arc.m_ArcStart; m_ArcStart = aArc.m_ArcStart;
m_ArcEnd = arc.m_ArcEnd; m_ArcEnd = aArc.m_ArcEnd;
} }
...@@ -146,7 +147,7 @@ LIB_ARC::LIB_ARC( const LIB_ARC& arc ) : LIB_DRAW_ITEM( arc ) ...@@ -146,7 +147,7 @@ LIB_ARC::LIB_ARC( const LIB_ARC& arc ) : LIB_DRAW_ITEM( arc )
* A centre_posx centre_posy rayon start_angle end_angle unit convert * A centre_posx centre_posy rayon start_angle end_angle unit convert
* fill('N', 'F' ou 'f') startx starty endx endy * fill('N', 'F' ou 'f') startx starty endx endy
*/ */
bool LIB_ARC::Save( FILE* ExportFile ) bool LIB_ARC::Save( FILE* aFile )
{ {
int x1 = m_t1; int x1 = m_t1;
...@@ -158,7 +159,7 @@ bool LIB_ARC::Save( FILE* ExportFile ) ...@@ -158,7 +159,7 @@ bool LIB_ARC::Save( FILE* ExportFile )
if( x2 > 1800 ) if( x2 > 1800 )
x2 -= 3600; x2 -= 3600;
if( fprintf( ExportFile, "A %d %d %d %d %d %d %d %d %c %d %d %d %d\n", if( fprintf( aFile, "A %d %d %d %d %d %d %d %d %c %d %d %d %d\n",
m_Pos.x, m_Pos.y, m_Radius, x1, x2, m_Unit, m_Convert, m_Width, m_Pos.x, m_Pos.y, m_Radius, x1, x2, m_Unit, m_Convert, m_Width,
fill_tab[m_Fill], m_ArcStart.x, m_ArcStart.y, m_ArcEnd.x, fill_tab[m_Fill], m_ArcStart.x, m_ArcStart.y, m_ArcEnd.x,
m_ArcEnd.y ) < 0 ) m_ArcEnd.y ) < 0 )
...@@ -168,17 +169,17 @@ bool LIB_ARC::Save( FILE* ExportFile ) ...@@ -168,17 +169,17 @@ bool LIB_ARC::Save( FILE* ExportFile )
} }
bool LIB_ARC::Load( char* line, wxString& errorMsg ) bool LIB_ARC::Load( char* aLine, wxString& aErrorMsg )
{ {
int startx, starty, endx, endy, cnt; int startx, starty, endx, endy, cnt;
char tmp[256]; char tmp[256];
cnt = sscanf( &line[2], "%d %d %d %d %d %d %d %d %s %d %d %d %d", cnt = sscanf( &aLine[2], "%d %d %d %d %d %d %d %d %s %d %d %d %d",
&m_Pos.x, &m_Pos.y, &m_Radius, &m_t1, &m_t2, &m_Unit, &m_Pos.x, &m_Pos.y, &m_Radius, &m_t1, &m_t2, &m_Unit,
&m_Convert, &m_Width, tmp, &startx, &starty, &endx, &endy ); &m_Convert, &m_Width, tmp, &startx, &starty, &endx, &endy );
if( cnt < 8 ) if( cnt < 8 )
{ {
errorMsg.Printf( _( "arc only had %d parameters of the required 8" ), aErrorMsg.Printf( _( "arc only had %d parameters of the required 8" ),
cnt ); cnt );
return false; return false;
} }
...@@ -299,11 +300,11 @@ LIB_DRAW_ITEM* LIB_ARC::DoGenCopy() ...@@ -299,11 +300,11 @@ LIB_DRAW_ITEM* LIB_ARC::DoGenCopy()
} }
int LIB_ARC::DoCompare( const LIB_DRAW_ITEM& other ) const int LIB_ARC::DoCompare( const LIB_DRAW_ITEM& aOther ) const
{ {
wxASSERT( other.Type() == COMPONENT_ARC_DRAW_TYPE ); wxASSERT( aOther.Type() == COMPONENT_ARC_DRAW_TYPE );
const LIB_ARC* tmp = ( LIB_ARC* ) &other; const LIB_ARC* tmp = ( LIB_ARC* ) &aOther;
if( m_Pos.x != tmp->m_Pos.x ) if( m_Pos.x != tmp->m_Pos.x )
return m_Pos.x - tmp->m_Pos.x; return m_Pos.x - tmp->m_Pos.x;
...@@ -321,64 +322,64 @@ int LIB_ARC::DoCompare( const LIB_DRAW_ITEM& other ) const ...@@ -321,64 +322,64 @@ int LIB_ARC::DoCompare( const LIB_DRAW_ITEM& other ) const
} }
void LIB_ARC::DoOffset( const wxPoint& offset ) void LIB_ARC::DoOffset( const wxPoint& aOffset )
{ {
m_Pos += offset; m_Pos += aOffset;
m_ArcStart += offset; m_ArcStart += aOffset;
m_ArcEnd += offset; m_ArcEnd += aOffset;
} }
bool LIB_ARC::DoTestInside( EDA_Rect& rect ) bool LIB_ARC::DoTestInside( EDA_Rect& aRect )
{ {
return rect.Inside( m_ArcStart.x, -m_ArcStart.y ) return aRect.Inside( m_ArcStart.x, -m_ArcStart.y )
|| rect.Inside( m_ArcEnd.x, -m_ArcEnd.y ); || aRect.Inside( m_ArcEnd.x, -m_ArcEnd.y );
} }
void LIB_ARC::DoMove( const wxPoint& newPosition ) void LIB_ARC::DoMove( const wxPoint& aPosition )
{ {
wxPoint offset = newPosition - m_Pos; wxPoint offset = aPosition - m_Pos;
m_Pos = newPosition; m_Pos = aPosition;
m_ArcStart += offset; m_ArcStart += offset;
m_ArcEnd += offset; m_ArcEnd += offset;
} }
void LIB_ARC::DoMirrorHorizontal( const wxPoint& center ) void LIB_ARC::DoMirrorHorizontal( const wxPoint& aCenter )
{ {
m_Pos.x -= center.x; m_Pos.x -= aCenter.x;
m_Pos.x *= -1; m_Pos.x *= -1;
m_Pos.x += center.x; m_Pos.x += aCenter.x;
m_ArcStart.x -= center.x; m_ArcStart.x -= aCenter.x;
m_ArcStart.x *= -1; m_ArcStart.x *= -1;
m_ArcStart.x += center.x; m_ArcStart.x += aCenter.x;
m_ArcEnd.x -= center.x; m_ArcEnd.x -= aCenter.x;
m_ArcEnd.x *= -1; m_ArcEnd.x *= -1;
m_ArcEnd.x += center.x; m_ArcEnd.x += aCenter.x;
EXCHG( m_ArcStart, m_ArcEnd ); EXCHG( m_ArcStart, m_ArcEnd );
} }
void LIB_ARC::DoPlot( PLOTTER* plotter, const wxPoint& offset, bool fill, void LIB_ARC::DoPlot( PLOTTER* aPlotter, const wxPoint& aOffset, bool aFill,
const int transform[2][2] ) const int aTransform[2][2] )
{ {
wxASSERT( plotter != NULL ); wxASSERT( aPlotter != NULL );
int t1 = m_t1; int t1 = m_t1;
int t2 = m_t2; int t2 = m_t2;
wxPoint pos = TransformCoordinate( transform, m_Pos ) + offset; wxPoint pos = TransformCoordinate( aTransform, m_Pos ) + aOffset;
MapAngles( &t1, &t2, transform ); MapAngles( &t1, &t2, aTransform );
if( fill && m_Fill == FILLED_WITH_BG_BODYCOLOR ) if( aFill && m_Fill == FILLED_WITH_BG_BODYCOLOR )
{ {
plotter->set_color( ReturnLayerColor( LAYER_DEVICE_BACKGROUND ) ); aPlotter->set_color( ReturnLayerColor( LAYER_DEVICE_BACKGROUND ) );
plotter->arc( pos, -t2, -t1, m_Radius, FILLED_SHAPE, 0 ); aPlotter->arc( pos, -t2, -t1, m_Radius, FILLED_SHAPE, 0 );
} }
plotter->set_color( ReturnLayerColor( LAYER_DEVICE ) ); aPlotter->set_color( ReturnLayerColor( LAYER_DEVICE ) );
plotter->arc( pos, -t2, -t1, m_Radius, m_Fill, GetPenSize() ); aPlotter->arc( pos, -t2, -t1, m_Radius, m_Fill, GetPenSize() );
} }
...@@ -516,22 +517,22 @@ start(%d, %d), end(%d, %d), radius %d" ), ...@@ -516,22 +517,22 @@ start(%d, %d), end(%d, %d), radius %d" ),
} }
void LIB_ARC::DisplayInfo( WinEDA_DrawFrame* frame ) void LIB_ARC::DisplayInfo( WinEDA_DrawFrame* aFrame )
{ {
wxString msg; wxString msg;
EDA_Rect bBox = GetBoundingBox(); EDA_Rect bBox = GetBoundingBox();
LIB_DRAW_ITEM::DisplayInfo( frame ); LIB_DRAW_ITEM::DisplayInfo( aFrame );
msg = ReturnStringFromValue( g_UnitMetric, m_Width, msg = ReturnStringFromValue( g_UnitMetric, m_Width,
EESCHEMA_INTERNAL_UNIT, true ); EESCHEMA_INTERNAL_UNIT, true );
frame->AppendMsgPanel( _( "Line width" ), msg, BLUE ); aFrame->AppendMsgPanel( _( "Line width" ), msg, BLUE );
msg.Printf( wxT( "(%d, %d, %d, %d)" ), bBox.GetOrigin().x, msg.Printf( wxT( "(%d, %d, %d, %d)" ), bBox.GetOrigin().x,
bBox.GetOrigin().y, bBox.GetEnd().x, bBox.GetEnd().y ); bBox.GetOrigin().y, bBox.GetEnd().x, bBox.GetEnd().y );
frame->AppendMsgPanel( _( "Bounding box" ), msg, BROWN ); aFrame->AppendMsgPanel( _( "Bounding box" ), msg, BROWN );
} }
...@@ -549,18 +550,18 @@ LIB_CIRCLE::LIB_CIRCLE( LIB_COMPONENT* aParent ) : ...@@ -549,18 +550,18 @@ LIB_CIRCLE::LIB_CIRCLE( LIB_COMPONENT* aParent ) :
} }
LIB_CIRCLE::LIB_CIRCLE( const LIB_CIRCLE& circle ) : LIB_CIRCLE::LIB_CIRCLE( const LIB_CIRCLE& aCircle ) :
LIB_DRAW_ITEM( circle ) LIB_DRAW_ITEM( aCircle )
{ {
m_Pos = circle.m_Pos; m_Pos = aCircle.m_Pos;
m_Radius = circle.m_Radius; m_Radius = aCircle.m_Radius;
m_Fill = circle.m_Fill; m_Fill = aCircle.m_Fill;
} }
bool LIB_CIRCLE::Save( FILE* ExportFile ) bool LIB_CIRCLE::Save( FILE* aFile )
{ {
if( fprintf( ExportFile, "C %d %d %d %d %d %d %c\n", m_Pos.x, m_Pos.y, if( fprintf( aFile, "C %d %d %d %d %d %d %c\n", m_Pos.x, m_Pos.y,
m_Radius, m_Unit, m_Convert, m_Width, fill_tab[m_Fill] ) < 0 ) m_Radius, m_Unit, m_Convert, m_Width, fill_tab[m_Fill] ) < 0 )
return false; return false;
...@@ -568,16 +569,16 @@ bool LIB_CIRCLE::Save( FILE* ExportFile ) ...@@ -568,16 +569,16 @@ bool LIB_CIRCLE::Save( FILE* ExportFile )
} }
bool LIB_CIRCLE::Load( char* line, wxString& errorMsg ) bool LIB_CIRCLE::Load( char* aLine, wxString& aErrorMsg )
{ {
char tmp[256]; char tmp[256];
int cnt = sscanf( &line[2], "%d %d %d %d %d %d %s", &m_Pos.x, &m_Pos.y, int cnt = sscanf( &aLine[2], "%d %d %d %d %d %d %s", &m_Pos.x, &m_Pos.y,
&m_Radius, &m_Unit, &m_Convert, &m_Width, tmp ); &m_Radius, &m_Unit, &m_Convert, &m_Width, tmp );
if( cnt < 6 ) if( cnt < 6 )
{ {
errorMsg.Printf( _( "circle only had %d parameters of the required 6" ), aErrorMsg.Printf( _( "circle only had %d parameters of the required 6" ),
cnt ); cnt );
return false; return false;
} }
...@@ -595,7 +596,7 @@ bool LIB_CIRCLE::Load( char* line, wxString& errorMsg ) ...@@ -595,7 +596,7 @@ bool LIB_CIRCLE::Load( char* line, wxString& errorMsg )
* Function HitTest * Function HitTest
* tests if the given wxPoint is within the bounds of this object. * tests if the given wxPoint is within the bounds of this object.
* @param aRefPos A wxPoint to test in eeschema space * @param aRefPos A wxPoint to test in eeschema space
* @return bool - true if a hit, else false * @return - true if a hit, else false
*/ */
bool LIB_CIRCLE::HitTest( const wxPoint& aPosRef ) bool LIB_CIRCLE::HitTest( const wxPoint& aPosRef )
{ {
...@@ -616,8 +617,7 @@ bool LIB_CIRCLE::HitTest( const wxPoint& aPosRef ) ...@@ -616,8 +617,7 @@ bool LIB_CIRCLE::HitTest( const wxPoint& aPosRef )
* thickness of a line) * thickness of a line)
* @param aTransMat = the transform matrix * @param aTransMat = the transform matrix
*/ */
bool LIB_CIRCLE::HitTest( wxPoint aPosRef, int aThreshold, bool LIB_CIRCLE::HitTest( wxPoint aPosRef, int aThreshold, const int aTransMat[2][2] )
const int aTransMat[2][2] )
{ {
wxPoint relpos = aPosRef - TransformCoordinate( aTransMat, m_Pos ); wxPoint relpos = aPosRef - TransformCoordinate( aTransMat, m_Pos );
...@@ -647,11 +647,11 @@ LIB_DRAW_ITEM* LIB_CIRCLE::DoGenCopy() ...@@ -647,11 +647,11 @@ LIB_DRAW_ITEM* LIB_CIRCLE::DoGenCopy()
} }
int LIB_CIRCLE::DoCompare( const LIB_DRAW_ITEM& other ) const int LIB_CIRCLE::DoCompare( const LIB_DRAW_ITEM& aOther ) const
{ {
wxASSERT( other.Type() == COMPONENT_CIRCLE_DRAW_TYPE ); wxASSERT( aOther.Type() == COMPONENT_CIRCLE_DRAW_TYPE );
const LIB_CIRCLE* tmp = ( LIB_CIRCLE* ) &other; const LIB_CIRCLE* tmp = ( LIB_CIRCLE* ) &aOther;
if( m_Pos.x != tmp->m_Pos.x ) if( m_Pos.x != tmp->m_Pos.x )
return m_Pos.x - tmp->m_Pos.x; return m_Pos.x - tmp->m_Pos.x;
...@@ -666,49 +666,49 @@ int LIB_CIRCLE::DoCompare( const LIB_DRAW_ITEM& other ) const ...@@ -666,49 +666,49 @@ int LIB_CIRCLE::DoCompare( const LIB_DRAW_ITEM& other ) const
} }
void LIB_CIRCLE::DoOffset( const wxPoint& offset ) void LIB_CIRCLE::DoOffset( const wxPoint& aOffset )
{ {
m_Pos += offset; m_Pos += aOffset;
} }
bool LIB_CIRCLE::DoTestInside( EDA_Rect& rect ) bool LIB_CIRCLE::DoTestInside( EDA_Rect& aRect )
{ {
/* /*
* FIXME: This fails to take into acount the radius around the center * FIXME: This fails to take into acount the radius around the center
* point. * point.
*/ */
return rect.Inside( m_Pos.x, -m_Pos.y ); return aRect.Inside( m_Pos.x, -m_Pos.y );
} }
void LIB_CIRCLE::DoMove( const wxPoint& newPosition ) void LIB_CIRCLE::DoMove( const wxPoint& aPosition )
{ {
m_Pos = newPosition; m_Pos = aPosition;
} }
void LIB_CIRCLE::DoMirrorHorizontal( const wxPoint& center ) void LIB_CIRCLE::DoMirrorHorizontal( const wxPoint& aCenter )
{ {
m_Pos.x -= center.x; m_Pos.x -= aCenter.x;
m_Pos.x *= -1; m_Pos.x *= -1;
m_Pos.x += center.x; m_Pos.x += aCenter.x;
} }
void LIB_CIRCLE::DoPlot( PLOTTER* plotter, const wxPoint& offset, bool fill, void LIB_CIRCLE::DoPlot( PLOTTER* aPlotter, const wxPoint& aOffset, bool aFill,
const int transform[2][2] ) const int aTransform[2][2] )
{ {
wxPoint pos = TransformCoordinate( transform, m_Pos ) + offset; wxPoint pos = TransformCoordinate( aTransform, m_Pos ) + aOffset;
if( fill && m_Fill == FILLED_WITH_BG_BODYCOLOR ) if( aFill && m_Fill == FILLED_WITH_BG_BODYCOLOR )
{ {
plotter->set_color( ReturnLayerColor( LAYER_DEVICE_BACKGROUND ) ); aPlotter->set_color( ReturnLayerColor( LAYER_DEVICE_BACKGROUND ) );
plotter->circle( pos, m_Radius * 2, FILLED_SHAPE, 0 ); aPlotter->circle( pos, m_Radius * 2, FILLED_SHAPE, 0 );
} }
plotter->set_color( ReturnLayerColor( LAYER_DEVICE ) ); aPlotter->set_color( ReturnLayerColor( LAYER_DEVICE ) );
plotter->circle( pos, m_Radius * 2, m_Fill, GetPenSize() ); aPlotter->circle( pos, m_Radius * 2, m_Fill, GetPenSize() );
} }
...@@ -777,26 +777,26 @@ EDA_Rect LIB_CIRCLE::GetBoundingBox() ...@@ -777,26 +777,26 @@ EDA_Rect LIB_CIRCLE::GetBoundingBox()
} }
void LIB_CIRCLE::DisplayInfo( WinEDA_DrawFrame* frame ) void LIB_CIRCLE::DisplayInfo( WinEDA_DrawFrame* aFrame )
{ {
wxString msg; wxString msg;
EDA_Rect bBox = GetBoundingBox(); EDA_Rect bBox = GetBoundingBox();
LIB_DRAW_ITEM::DisplayInfo( frame ); LIB_DRAW_ITEM::DisplayInfo( aFrame );
msg = ReturnStringFromValue( g_UnitMetric, m_Width, msg = ReturnStringFromValue( g_UnitMetric, m_Width,
EESCHEMA_INTERNAL_UNIT, true ); EESCHEMA_INTERNAL_UNIT, true );
frame->AppendMsgPanel( _( "Line width" ), msg, BLUE ); aFrame->AppendMsgPanel( _( "Line width" ), msg, BLUE );
msg = ReturnStringFromValue( g_UnitMetric, m_Radius, msg = ReturnStringFromValue( g_UnitMetric, m_Radius,
EESCHEMA_INTERNAL_UNIT, true ); EESCHEMA_INTERNAL_UNIT, true );
frame->AppendMsgPanel( _( "Radius" ), msg, RED ); aFrame->AppendMsgPanel( _( "Radius" ), msg, RED );
msg.Printf( wxT( "(%d, %d, %d, %d)" ), bBox.GetOrigin().x, msg.Printf( wxT( "(%d, %d, %d, %d)" ), bBox.GetOrigin().x,
bBox.GetOrigin().y, bBox.GetEnd().x, bBox.GetEnd().y ); bBox.GetOrigin().y, bBox.GetEnd().x, bBox.GetEnd().y );
frame->AppendMsgPanel( _( "Bounding box" ), msg, BROWN ); aFrame->AppendMsgPanel( _( "Bounding box" ), msg, BROWN );
} }
...@@ -814,19 +814,19 @@ LIB_RECTANGLE::LIB_RECTANGLE( LIB_COMPONENT* aParent ) : ...@@ -814,19 +814,19 @@ LIB_RECTANGLE::LIB_RECTANGLE( LIB_COMPONENT* aParent ) :
} }
LIB_RECTANGLE::LIB_RECTANGLE( const LIB_RECTANGLE& rect ) : LIB_RECTANGLE::LIB_RECTANGLE( const LIB_RECTANGLE& aRect ) :
LIB_DRAW_ITEM( rect ) LIB_DRAW_ITEM( aRect )
{ {
m_Pos = rect.m_Pos; m_Pos = aRect.m_Pos;
m_End = rect.m_End; m_End = aRect.m_End;
m_Width = rect.m_Width; m_Width = aRect.m_Width;
m_Fill = rect.m_Fill; m_Fill = aRect.m_Fill;
} }
bool LIB_RECTANGLE::Save( FILE* ExportFile ) bool LIB_RECTANGLE::Save( FILE* aFile )
{ {
if( fprintf( ExportFile, "S %d %d %d %d %d %d %d %c\n", m_Pos.x, m_Pos.y, if( fprintf( aFile, "S %d %d %d %d %d %d %d %c\n", m_Pos.x, m_Pos.y,
m_End.x, m_End.y, m_Unit, m_Convert, m_Width, m_End.x, m_End.y, m_Unit, m_Convert, m_Width,
fill_tab[m_Fill] ) < 0 ) fill_tab[m_Fill] ) < 0 )
return false; return false;
...@@ -835,17 +835,17 @@ bool LIB_RECTANGLE::Save( FILE* ExportFile ) ...@@ -835,17 +835,17 @@ bool LIB_RECTANGLE::Save( FILE* ExportFile )
} }
bool LIB_RECTANGLE::Load( char* line, wxString& errorMsg ) bool LIB_RECTANGLE::Load( char* aLine, wxString& aErrorMsg )
{ {
int cnt; int cnt;
char tmp[256]; char tmp[256];
cnt = sscanf( &line[2], "%d %d %d %d %d %d %d %s", &m_Pos.x, &m_Pos.y, cnt = sscanf( &aLine[2], "%d %d %d %d %d %d %d %s", &m_Pos.x, &m_Pos.y,
&m_End.x, &m_End.y, &m_Unit, &m_Convert, &m_Width, tmp ); &m_End.x, &m_End.y, &m_Unit, &m_Convert, &m_Width, tmp );
if( cnt < 7 ) if( cnt < 7 )
{ {
errorMsg.Printf( _( "rectangle only had %d parameters of the required 7" ), aErrorMsg.Printf( _( "rectangle only had %d parameters of the required 7" ),
cnt ); cnt );
return false; return false;
} }
...@@ -875,11 +875,11 @@ LIB_DRAW_ITEM* LIB_RECTANGLE::DoGenCopy() ...@@ -875,11 +875,11 @@ LIB_DRAW_ITEM* LIB_RECTANGLE::DoGenCopy()
} }
int LIB_RECTANGLE::DoCompare( const LIB_DRAW_ITEM& other ) const int LIB_RECTANGLE::DoCompare( const LIB_DRAW_ITEM& aOther ) const
{ {
wxASSERT( other.Type() == COMPONENT_RECT_DRAW_TYPE ); wxASSERT( aOther.Type() == COMPONENT_RECT_DRAW_TYPE );
const LIB_RECTANGLE* tmp = ( LIB_RECTANGLE* ) &other; const LIB_RECTANGLE* tmp = ( LIB_RECTANGLE* ) &aOther;
if( m_Pos.x != tmp->m_Pos.x ) if( m_Pos.x != tmp->m_Pos.x )
return m_Pos.x - tmp->m_Pos.x; return m_Pos.x - tmp->m_Pos.x;
...@@ -897,54 +897,54 @@ int LIB_RECTANGLE::DoCompare( const LIB_DRAW_ITEM& other ) const ...@@ -897,54 +897,54 @@ int LIB_RECTANGLE::DoCompare( const LIB_DRAW_ITEM& other ) const
} }
void LIB_RECTANGLE::DoOffset( const wxPoint& offset ) void LIB_RECTANGLE::DoOffset( const wxPoint& aOffset )
{ {
m_Pos += offset; m_Pos += aOffset;
m_End += offset; m_End += aOffset;
} }
bool LIB_RECTANGLE::DoTestInside( EDA_Rect& rect ) bool LIB_RECTANGLE::DoTestInside( EDA_Rect& aRect )
{ {
return rect.Inside( m_Pos.x, -m_Pos.y ) || rect.Inside( m_End.x, -m_End.y ); return aRect.Inside( m_Pos.x, -m_Pos.y ) || aRect.Inside( m_End.x, -m_End.y );
} }
void LIB_RECTANGLE::DoMove( const wxPoint& newPosition ) void LIB_RECTANGLE::DoMove( const wxPoint& aPosition )
{ {
wxPoint size = m_End - m_Pos; wxPoint size = m_End - m_Pos;
m_Pos = newPosition; m_Pos = aPosition;
m_End = newPosition + size; m_End = aPosition + size;
} }
void LIB_RECTANGLE::DoMirrorHorizontal( const wxPoint& center ) void LIB_RECTANGLE::DoMirrorHorizontal( const wxPoint& aCenter )
{ {
m_Pos.x -= center.x; m_Pos.x -= aCenter.x;
m_Pos.x *= -1; m_Pos.x *= -1;
m_Pos.x += center.x; m_Pos.x += aCenter.x;
m_End.x -= center.x; m_End.x -= aCenter.x;
m_End.x *= -1; m_End.x *= -1;
m_End.x += center.x; m_End.x += aCenter.x;
} }
void LIB_RECTANGLE::DoPlot( PLOTTER* plotter, const wxPoint& offset, bool fill, void LIB_RECTANGLE::DoPlot( PLOTTER* aPlotter, const wxPoint& aOffset, bool aFill,
const int transform[2][2] ) const int aTransform[2][2] )
{ {
wxASSERT( plotter != NULL ); wxASSERT( aPlotter != NULL );
wxPoint pos = TransformCoordinate( transform, m_Pos ) + offset; wxPoint pos = TransformCoordinate( aTransform, m_Pos ) + aOffset;
wxPoint end = TransformCoordinate( transform, m_End ) + offset; wxPoint end = TransformCoordinate( aTransform, m_End ) + aOffset;
if( fill && m_Fill == FILLED_WITH_BG_BODYCOLOR ) if( aFill && m_Fill == FILLED_WITH_BG_BODYCOLOR )
{ {
plotter->set_color( ReturnLayerColor( LAYER_DEVICE_BACKGROUND ) ); aPlotter->set_color( ReturnLayerColor( LAYER_DEVICE_BACKGROUND ) );
plotter->rect( pos, end, FILLED_WITH_BG_BODYCOLOR, 0 ); aPlotter->rect( pos, end, FILLED_WITH_BG_BODYCOLOR, 0 );
} }
plotter->set_color( ReturnLayerColor( LAYER_DEVICE ) ); aPlotter->set_color( ReturnLayerColor( LAYER_DEVICE ) );
plotter->rect( pos, end, m_Fill, GetPenSize() ); aPlotter->rect( pos, end, m_Fill, GetPenSize() );
} }
...@@ -1003,16 +1003,15 @@ void LIB_RECTANGLE::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC, ...@@ -1003,16 +1003,15 @@ void LIB_RECTANGLE::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC,
} }
void LIB_RECTANGLE::DisplayInfo( WinEDA_DrawFrame* frame ) void LIB_RECTANGLE::DisplayInfo( WinEDA_DrawFrame* aFrame )
{ {
wxString msg; wxString msg;
LIB_DRAW_ITEM::DisplayInfo( frame ); LIB_DRAW_ITEM::DisplayInfo( aFrame );
msg = ReturnStringFromValue( g_UnitMetric, m_Width, msg = ReturnStringFromValue( g_UnitMetric, m_Width, EESCHEMA_INTERNAL_UNIT, true );
EESCHEMA_INTERNAL_UNIT, true );
frame->AppendMsgPanel( _( "Line width" ), msg, BLUE ); aFrame->AppendMsgPanel( _( "Line width" ), msg, BLUE );
} }
...@@ -1031,7 +1030,7 @@ EDA_Rect LIB_RECTANGLE::GetBoundingBox() ...@@ -1031,7 +1030,7 @@ EDA_Rect LIB_RECTANGLE::GetBoundingBox()
* Function HitTest * Function HitTest
* tests if the given wxPoint is within the bounds of this object. * tests if the given wxPoint is within the bounds of this object.
* @param aRefPoint A wxPoint to test in eeschema space * @param aRefPoint A wxPoint to test in eeschema space
* @return bool - true if a hit, else false * @return true if a hit, else false
*/ */
bool LIB_RECTANGLE::HitTest( const wxPoint& aRefPoint ) bool LIB_RECTANGLE::HitTest( const wxPoint& aRefPoint )
{ {
...@@ -1100,25 +1099,25 @@ LIB_SEGMENT::LIB_SEGMENT( LIB_COMPONENT* aParent ) : ...@@ -1100,25 +1099,25 @@ LIB_SEGMENT::LIB_SEGMENT( LIB_COMPONENT* aParent ) :
} }
LIB_SEGMENT::LIB_SEGMENT( const LIB_SEGMENT& segment ) : LIB_SEGMENT::LIB_SEGMENT( const LIB_SEGMENT& aSegment ) :
LIB_DRAW_ITEM( segment ) LIB_DRAW_ITEM( aSegment )
{ {
m_Pos = segment.m_Pos; m_Pos = aSegment.m_Pos;
m_End = segment.m_End; m_End = aSegment.m_End;
m_Width = segment.m_Width; m_Width = aSegment.m_Width;
} }
bool LIB_SEGMENT::Save( FILE* ExportFile ) bool LIB_SEGMENT::Save( FILE* aFile )
{ {
if( fprintf( ExportFile, "L %d %d %d", m_Unit, m_Convert, m_Width ) ) if( fprintf( aFile, "L %d %d %d", m_Unit, m_Convert, m_Width ) )
return false; return false;
return true; return true;
} }
bool LIB_SEGMENT::Load( char* line, wxString& errorMsg ) bool LIB_SEGMENT::Load( char* aLine, wxString& aErrorMsg )
{ {
return true; return true;
} }
...@@ -1139,11 +1138,11 @@ LIB_DRAW_ITEM* LIB_SEGMENT::DoGenCopy() ...@@ -1139,11 +1138,11 @@ LIB_DRAW_ITEM* LIB_SEGMENT::DoGenCopy()
} }
int LIB_SEGMENT::DoCompare( const LIB_DRAW_ITEM& other ) const int LIB_SEGMENT::DoCompare( const LIB_DRAW_ITEM& aOther ) const
{ {
wxASSERT( other.Type() == COMPONENT_LINE_DRAW_TYPE ); wxASSERT( aOther.Type() == COMPONENT_LINE_DRAW_TYPE );
const LIB_SEGMENT* tmp = ( LIB_SEGMENT* ) &other; const LIB_SEGMENT* tmp = ( LIB_SEGMENT* ) &aOther;
if( m_Pos.x != tmp->m_Pos.x ) if( m_Pos.x != tmp->m_Pos.x )
return m_Pos.x - tmp->m_Pos.x; return m_Pos.x - tmp->m_Pos.x;
...@@ -1161,52 +1160,52 @@ int LIB_SEGMENT::DoCompare( const LIB_DRAW_ITEM& other ) const ...@@ -1161,52 +1160,52 @@ int LIB_SEGMENT::DoCompare( const LIB_DRAW_ITEM& other ) const
} }
void LIB_SEGMENT::DoOffset( const wxPoint& offset ) void LIB_SEGMENT::DoOffset( const wxPoint& aOffset )
{ {
m_Pos += offset; m_Pos += aOffset;
m_End += offset; m_End += aOffset;
} }
bool LIB_SEGMENT::DoTestInside( EDA_Rect& rect ) bool LIB_SEGMENT::DoTestInside( EDA_Rect& aRect )
{ {
return rect.Inside( m_Pos.x, -m_Pos.y ) || rect.Inside( m_End.x, -m_End.y ); return aRect.Inside( m_Pos.x, -m_Pos.y ) || aRect.Inside( m_End.x, -m_End.y );
} }
void LIB_SEGMENT::DoMove( const wxPoint& newPosition ) void LIB_SEGMENT::DoMove( const wxPoint& aPosition )
{ {
wxPoint offset = newPosition - m_Pos; wxPoint offset = aPosition - m_Pos;
m_Pos += offset; m_Pos += offset;
m_End += offset; m_End += offset;
} }
void LIB_SEGMENT::DoMirrorHorizontal( const wxPoint& center ) void LIB_SEGMENT::DoMirrorHorizontal( const wxPoint& aCenter )
{ {
m_Pos.x -= center.x; m_Pos.x -= aCenter.x;
m_Pos.x *= -1; m_Pos.x *= -1;
m_Pos.x += center.x; m_Pos.x += aCenter.x;
m_End.x -= center.x; m_End.x -= aCenter.x;
m_End.x *= -1; m_End.x *= -1;
m_End.x += center.x; m_End.x += aCenter.x;
} }
void LIB_SEGMENT::DoPlot( PLOTTER* plotter, const wxPoint& offset, bool fill, void LIB_SEGMENT::DoPlot( PLOTTER* aPlotter, const wxPoint& aOffset, bool aFill,
const int transform[2][2] ) const int aTransform[2][2] )
{ {
wxASSERT( plotter != NULL ); wxASSERT( aPlotter != NULL );
int points[4]; int points[4];
wxPoint pos = TransformCoordinate( transform, m_Pos ) + offset; wxPoint pos = TransformCoordinate( aTransform, m_Pos ) + aOffset;
wxPoint end = TransformCoordinate( transform, m_End ) + offset; wxPoint end = TransformCoordinate( aTransform, m_End ) + aOffset;
points[0] = pos.x; points[0] = pos.x;
points[1] = pos.y; points[1] = pos.y;
points[2] = end.x; points[2] = end.x;
points[3] = end.y; points[3] = end.y;
plotter->set_color( ReturnLayerColor( LAYER_DEVICE ) ); aPlotter->set_color( ReturnLayerColor( LAYER_DEVICE ) );
plotter->poly( 2, points, m_Fill, GetPenSize() ); aPlotter->poly( 2, points, m_Fill, GetPenSize() );
} }
...@@ -1253,22 +1252,22 @@ void LIB_SEGMENT::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC, ...@@ -1253,22 +1252,22 @@ void LIB_SEGMENT::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC,
} }
void LIB_SEGMENT::DisplayInfo( WinEDA_DrawFrame* frame ) void LIB_SEGMENT::DisplayInfo( WinEDA_DrawFrame* aFrame )
{ {
wxString msg; wxString msg;
EDA_Rect bBox = GetBoundingBox(); EDA_Rect bBox = GetBoundingBox();
LIB_DRAW_ITEM::DisplayInfo( frame ); LIB_DRAW_ITEM::DisplayInfo( aFrame );
msg = ReturnStringFromValue( g_UnitMetric, m_Width, msg = ReturnStringFromValue( g_UnitMetric, m_Width,
EESCHEMA_INTERNAL_UNIT, true ); EESCHEMA_INTERNAL_UNIT, true );
frame->AppendMsgPanel( _( "Line width" ), msg, BLUE ); aFrame->AppendMsgPanel( _( "Line width" ), msg, BLUE );
msg.Printf( wxT( "(%d, %d, %d, %d)" ), bBox.GetOrigin().x, msg.Printf( wxT( "(%d, %d, %d, %d)" ), bBox.GetOrigin().x,
bBox.GetOrigin().y, bBox.GetEnd().x, bBox.GetEnd().y ); bBox.GetOrigin().y, bBox.GetEnd().x, bBox.GetEnd().y );
frame->AppendMsgPanel( _( "Bounding box" ), msg, BROWN ); aFrame->AppendMsgPanel( _( "Bounding box" ), msg, BROWN );
} }
...@@ -1276,7 +1275,7 @@ void LIB_SEGMENT::DisplayInfo( WinEDA_DrawFrame* frame ) ...@@ -1276,7 +1275,7 @@ void LIB_SEGMENT::DisplayInfo( WinEDA_DrawFrame* frame )
* Function HitTest * Function HitTest
* tests if the given wxPoint is within the bounds of this object. * tests if the given wxPoint is within the bounds of this object.
* @param aRefPos A wxPoint to test * @param aRefPos A wxPoint to test
* @return bool - true if a hit, else false * @return - true if a hit, else false
*/ */
bool LIB_SEGMENT::HitTest( const wxPoint& aPosRef ) bool LIB_SEGMENT::HitTest( const wxPoint& aPosRef )
{ {
...@@ -1329,50 +1328,47 @@ LIB_POLYLINE::LIB_POLYLINE( const LIB_POLYLINE& polyline ) : ...@@ -1329,50 +1328,47 @@ LIB_POLYLINE::LIB_POLYLINE( const LIB_POLYLINE& polyline ) :
} }
bool LIB_POLYLINE::Save( FILE* ExportFile ) bool LIB_POLYLINE::Save( FILE* aFile )
{ {
int ccount = GetCornerCount(); int ccount = GetCornerCount();
if( fprintf( ExportFile, "P %d %d %d %d", if( fprintf( aFile, "P %d %d %d %d", ccount, m_Unit, m_Convert, m_Width ) < 0 )
ccount, m_Unit, m_Convert, m_Width ) < 0 )
return false; return false;
for( unsigned i = 0; i < GetCornerCount(); i++ ) for( unsigned i = 0; i < GetCornerCount(); i++ )
{ {
if( fprintf( ExportFile, " %d %d", if( fprintf( aFile, " %d %d", m_PolyPoints[i].x, m_PolyPoints[i].y ) < 0 )
m_PolyPoints[i].x, m_PolyPoints[i].y ) < 0 )
return false; return false;
} }
if( fprintf( ExportFile, " %c\n", fill_tab[m_Fill] ) < 0 ) if( fprintf( aFile, " %c\n", fill_tab[m_Fill] ) < 0 )
return false; return false;
return true; return true;
} }
bool LIB_POLYLINE::Load( char* line, wxString& errorMsg ) bool LIB_POLYLINE::Load( char* aLine, wxString& aErrorMsg )
{ {
char* p; char* p;
int i, ccount = 0; int i, ccount = 0;
wxPoint pt; wxPoint pt;
i = sscanf( &line[2], "%d %d %d %d", &ccount, &m_Unit, &m_Convert, i = sscanf( &aLine[2], "%d %d %d %d", &ccount, &m_Unit, &m_Convert,
&m_Width ); &m_Width );
if( i < 4 ) if( i < 4 )
{ {
errorMsg.Printf( _( "polyline only had %d parameters of the required 4" ), i ); aErrorMsg.Printf( _( "polyline only had %d parameters of the required 4" ), i );
return false; return false;
} }
if( ccount <= 0 ) if( ccount <= 0 )
{ {
errorMsg.Printf( _( "polyline count parameter %d is invalid" ), aErrorMsg.Printf( _( "polyline count parameter %d is invalid" ), ccount );
ccount );
return false; return false;
} }
p = strtok( &line[2], " \t\n" ); p = strtok( &aLine[2], " \t\n" );
p = strtok( NULL, " \t\n" ); p = strtok( NULL, " \t\n" );
p = strtok( NULL, " \t\n" ); p = strtok( NULL, " \t\n" );
p = strtok( NULL, " \t\n" ); p = strtok( NULL, " \t\n" );
...@@ -1383,15 +1379,13 @@ bool LIB_POLYLINE::Load( char* line, wxString& errorMsg ) ...@@ -1383,15 +1379,13 @@ bool LIB_POLYLINE::Load( char* line, wxString& errorMsg )
p = strtok( NULL, " \t\n" ); p = strtok( NULL, " \t\n" );
if( sscanf( p, "%d", &pt.x ) != 1 ) if( sscanf( p, "%d", &pt.x ) != 1 )
{ {
errorMsg.Printf( _( "polyline point %d X position not defined" ), aErrorMsg.Printf( _( "polyline point %d X position not defined" ), i );
i );
return false; return false;
} }
p = strtok( NULL, " \t\n" ); p = strtok( NULL, " \t\n" );
if( sscanf( p, "%d", &pt.y ) != 1 ) if( sscanf( p, "%d", &pt.y ) != 1 )
{ {
errorMsg.Printf( _( "polyline point %d Y position not defined" ), aErrorMsg.Printf( _( "polyline point %d Y position not defined" ), i );
i );
return false; return false;
} }
AddPoint( pt ); AddPoint( pt );
...@@ -1426,11 +1420,11 @@ LIB_DRAW_ITEM* LIB_POLYLINE::DoGenCopy() ...@@ -1426,11 +1420,11 @@ LIB_DRAW_ITEM* LIB_POLYLINE::DoGenCopy()
} }
int LIB_POLYLINE::DoCompare( const LIB_DRAW_ITEM& other ) const int LIB_POLYLINE::DoCompare( const LIB_DRAW_ITEM& aOther ) const
{ {
wxASSERT( other.Type() == COMPONENT_POLYLINE_DRAW_TYPE ); wxASSERT( aOther.Type() == COMPONENT_POLYLINE_DRAW_TYPE );
const LIB_POLYLINE* tmp = ( LIB_POLYLINE* ) &other; const LIB_POLYLINE* tmp = ( LIB_POLYLINE* ) &aOther;
if( m_PolyPoints.size() != tmp->m_PolyPoints.size() ) if( m_PolyPoints.size() != tmp->m_PolyPoints.size() )
return m_PolyPoints.size() - tmp->m_PolyPoints.size(); return m_PolyPoints.size() - tmp->m_PolyPoints.size();
...@@ -1447,18 +1441,18 @@ int LIB_POLYLINE::DoCompare( const LIB_DRAW_ITEM& other ) const ...@@ -1447,18 +1441,18 @@ int LIB_POLYLINE::DoCompare( const LIB_DRAW_ITEM& other ) const
} }
void LIB_POLYLINE::DoOffset( const wxPoint& offset ) void LIB_POLYLINE::DoOffset( const wxPoint& aOffset )
{ {
for( size_t i = 0; i < m_PolyPoints.size(); i++ ) for( size_t i = 0; i < m_PolyPoints.size(); i++ )
m_PolyPoints[i] += offset; m_PolyPoints[i] += aOffset;
} }
bool LIB_POLYLINE::DoTestInside( EDA_Rect& rect ) bool LIB_POLYLINE::DoTestInside( EDA_Rect& aRect )
{ {
for( size_t i = 0; i < m_PolyPoints.size(); i++ ) for( size_t i = 0; i < m_PolyPoints.size(); i++ )
{ {
if( rect.Inside( m_PolyPoints[i].x, -m_PolyPoints[i].y ) ) if( aRect.Inside( m_PolyPoints[i].x, -m_PolyPoints[i].y ) )
return true; return true;
} }
...@@ -1466,50 +1460,53 @@ bool LIB_POLYLINE::DoTestInside( EDA_Rect& rect ) ...@@ -1466,50 +1460,53 @@ bool LIB_POLYLINE::DoTestInside( EDA_Rect& rect )
} }
void LIB_POLYLINE::DoMove( const wxPoint& newPosition ) void LIB_POLYLINE::DoMove( const wxPoint& aPosition )
{ {
DoOffset( newPosition - m_PolyPoints[0] ); DoOffset( aPosition - m_PolyPoints[0] );
} }
void LIB_POLYLINE::DoMirrorHorizontal( const wxPoint& center ) void LIB_POLYLINE::DoMirrorHorizontal( const wxPoint& aCenter )
{ {
size_t i, imax = m_PolyPoints.size(); size_t i, imax = m_PolyPoints.size();
for( i = 0; i < imax; i++ ) for( i = 0; i < imax; i++ )
{ {
m_PolyPoints[i].x -= center.x; m_PolyPoints[i].x -= aCenter.x;
m_PolyPoints[i].x *= -1; m_PolyPoints[i].x *= -1;
m_PolyPoints[i].x += center.x; m_PolyPoints[i].x += aCenter.x;
} }
} }
void LIB_POLYLINE::DoPlot( PLOTTER* plotter, const wxPoint& offset, bool fill, void LIB_POLYLINE::DoPlot( PLOTTER* aPlotter, const wxPoint& aOffset, bool aFill,
const int transform[2][2] ) const int aTransform[2][2] )
{ {
wxASSERT( plotter != NULL ); wxASSERT( aPlotter != NULL );
size_t i; size_t i;
int* Poly = (int*) MyMalloc( sizeof(int) * 2 * GetCornerCount() ); int* Poly = (int*) MyMalloc( sizeof(int) * 2 * GetCornerCount() );
if( Poly == NULL )
return;
for( i = 0; i < m_PolyPoints.size(); i++ ) for( i = 0; i < m_PolyPoints.size(); i++ )
{ {
wxPoint pos = m_PolyPoints[i]; wxPoint pos = m_PolyPoints[i];
pos = TransformCoordinate( transform, pos ) + offset; pos = TransformCoordinate( aTransform, pos ) + aOffset;
Poly[i * 2] = pos.x; Poly[i * 2] = pos.x;
Poly[i * 2 + 1] = pos.y; Poly[i * 2 + 1] = pos.y;
} }
if( fill && m_Fill == FILLED_WITH_BG_BODYCOLOR ) if( aFill && m_Fill == FILLED_WITH_BG_BODYCOLOR )
{ {
plotter->set_color( ReturnLayerColor( LAYER_DEVICE_BACKGROUND ) ); aPlotter->set_color( ReturnLayerColor( LAYER_DEVICE_BACKGROUND ) );
plotter->poly( i, Poly, FILLED_WITH_BG_BODYCOLOR, 0 ); aPlotter->poly( i, Poly, FILLED_WITH_BG_BODYCOLOR, 0 );
} }
plotter->set_color( ReturnLayerColor( LAYER_DEVICE ) ); aPlotter->set_color( ReturnLayerColor( LAYER_DEVICE ) );
plotter->poly( i, Poly, m_Fill, GetPenSize() ); aPlotter->poly( i, Poly, m_Fill, GetPenSize() );
MyFree( Poly ); MyFree( Poly );
} }
...@@ -1528,6 +1525,7 @@ int LIB_POLYLINE::GetPenSize() ...@@ -1528,6 +1525,7 @@ int LIB_POLYLINE::GetPenSize()
return ( m_Width == 0 ) ? g_DrawDefaultLineThickness : m_Width; return ( m_Width == 0 ) ? g_DrawDefaultLineThickness : m_Width;
} }
void LIB_POLYLINE::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC, void LIB_POLYLINE::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC,
const wxPoint& aOffset, int aColor, int aDrawMode, const wxPoint& aOffset, int aColor, int aDrawMode,
void* aData, const int aTransformMatrix[2][2] ) void* aData, const int aTransformMatrix[2][2] )
...@@ -1560,8 +1558,16 @@ void LIB_POLYLINE::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC, ...@@ -1560,8 +1558,16 @@ void LIB_POLYLINE::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC,
Buf_Poly_Drawings = Buf_Poly_Drawings =
(wxPoint*) realloc( Buf_Poly_Drawings, (wxPoint*) realloc( Buf_Poly_Drawings,
sizeof(wxPoint) * Buf_Poly_Size ); sizeof(wxPoint) * Buf_Poly_Size );
if( Buf_Poly_Drawings == NULL )
{
DisplayError( NULL, _( "Cannot allocate memory to draw polylines." ) );
}
} }
if( Buf_Poly_Drawings == NULL )
return;
for( unsigned ii = 0; ii < m_PolyPoints.size(); ii++ ) for( unsigned ii = 0; ii < m_PolyPoints.size(); ii++ )
{ {
Buf_Poly_Drawings[ii] = Buf_Poly_Drawings[ii] =
...@@ -1600,7 +1606,7 @@ void LIB_POLYLINE::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC, ...@@ -1600,7 +1606,7 @@ void LIB_POLYLINE::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC,
* Function HitTest * Function HitTest
* tests if the given wxPoint is within the bounds of this object. * tests if the given wxPoint is within the bounds of this object.
* @param aRefPos A wxPoint to test * @param aRefPos A wxPoint to test
* @return bool - true if a hit, else false * @return true if a hit, else false
*/ */
bool LIB_POLYLINE::HitTest( const wxPoint& aRefPos ) bool LIB_POLYLINE::HitTest( const wxPoint& aRefPos )
{ {
...@@ -1619,8 +1625,7 @@ bool LIB_POLYLINE::HitTest( const wxPoint& aRefPos ) ...@@ -1619,8 +1625,7 @@ bool LIB_POLYLINE::HitTest( const wxPoint& aRefPos )
* @param aThreshold = max distance to a segment * @param aThreshold = max distance to a segment
* @param aTransMat = the transform matrix * @param aTransMat = the transform matrix
*/ */
bool LIB_POLYLINE::HitTest( wxPoint aPosRef, int aThreshold, bool LIB_POLYLINE::HitTest( wxPoint aPosRef, int aThreshold, const int aTransMat[2][2] )
const int aTransMat[2][2] )
{ {
wxPoint ref, start, end; wxPoint ref, start, end;
...@@ -1664,24 +1669,25 @@ EDA_Rect LIB_POLYLINE::GetBoundingBox() ...@@ -1664,24 +1669,25 @@ EDA_Rect LIB_POLYLINE::GetBoundingBox()
} }
void LIB_POLYLINE::DisplayInfo( WinEDA_DrawFrame* frame ) void LIB_POLYLINE::DisplayInfo( WinEDA_DrawFrame* aFrame )
{ {
wxString msg; wxString msg;
EDA_Rect bBox = GetBoundingBox(); EDA_Rect bBox = GetBoundingBox();
LIB_DRAW_ITEM::DisplayInfo( frame ); LIB_DRAW_ITEM::DisplayInfo( aFrame );
msg = ReturnStringFromValue( g_UnitMetric, m_Width, msg = ReturnStringFromValue( g_UnitMetric, m_Width,
EESCHEMA_INTERNAL_UNIT, true ); EESCHEMA_INTERNAL_UNIT, true );
frame->AppendMsgPanel(_( "Line width" ), msg, BLUE ); aFrame->AppendMsgPanel(_( "Line width" ), msg, BLUE );
msg.Printf( wxT( "(%d, %d, %d, %d)" ), bBox.GetOrigin().x, msg.Printf( wxT( "(%d, %d, %d, %d)" ), bBox.GetOrigin().x,
bBox.GetOrigin().y, bBox.GetEnd().x, bBox.GetEnd().y ); bBox.GetOrigin().y, bBox.GetEnd().x, bBox.GetEnd().y );
frame->AppendMsgPanel( _( "Bounding box" ), msg, BROWN ); aFrame->AppendMsgPanel( _( "Bounding box" ), msg, BROWN );
} }
/***************************/ /***************************/
/** class LIB_BEZIER **/ /** class LIB_BEZIER **/
/***************************/ /***************************/
...@@ -1695,60 +1701,57 @@ LIB_BEZIER::LIB_BEZIER( LIB_COMPONENT* aParent ) : ...@@ -1695,60 +1701,57 @@ LIB_BEZIER::LIB_BEZIER( LIB_COMPONENT* aParent ) :
} }
LIB_BEZIER::LIB_BEZIER( const LIB_BEZIER& bezier ) : LIB_DRAW_ITEM( bezier ) LIB_BEZIER::LIB_BEZIER( const LIB_BEZIER& aBezier ) : LIB_DRAW_ITEM( aBezier )
{ {
m_PolyPoints = bezier.m_PolyPoints; m_PolyPoints = aBezier.m_PolyPoints;
m_BezierPoints = bezier.m_BezierPoints; // Vector copy m_BezierPoints = aBezier.m_BezierPoints; // Vector copy
m_Width = bezier.m_Width; m_Width = aBezier.m_Width;
m_Fill = bezier.m_Fill; m_Fill = aBezier.m_Fill;
} }
bool LIB_BEZIER::Save( FILE* ExportFile ) bool LIB_BEZIER::Save( FILE* aFile )
{ {
int ccount = GetCornerCount(); int ccount = GetCornerCount();
if( fprintf( ExportFile, "B %d %d %d %d", if( fprintf( aFile, "B %d %d %d %d",
ccount, m_Unit, m_Convert, m_Width ) < 0 ) ccount, m_Unit, m_Convert, m_Width ) < 0 )
return false; return false;
for( unsigned i = 0; i < GetCornerCount(); i++ ) for( unsigned i = 0; i < GetCornerCount(); i++ )
{ {
if( fprintf( ExportFile, " %d %d", m_BezierPoints[i].x, if( fprintf( aFile, " %d %d", m_BezierPoints[i].x,
m_BezierPoints[i].y ) < 0 ) m_BezierPoints[i].y ) < 0 )
return false; return false;
} }
if( fprintf( ExportFile, " %c\n", fill_tab[m_Fill] ) < 0 ) if( fprintf( aFile, " %c\n", fill_tab[m_Fill] ) < 0 )
return false; return false;
return true; return true;
} }
bool LIB_BEZIER::Load( char* line, wxString& errorMsg ) bool LIB_BEZIER::Load( char* aLine, wxString& aErrorMsg )
{ {
char* p; char* p;
int i, ccount = 0; int i, ccount = 0;
wxPoint pt; wxPoint pt;
i = sscanf( &line[2], "%d %d %d %d", &ccount, &m_Unit, &m_Convert, i = sscanf( &aLine[2], "%d %d %d %d", &ccount, &m_Unit, &m_Convert, &m_Width );
&m_Width );
if( i !=4 ) if( i !=4 )
{ {
errorMsg.Printf( _( "Bezier only had %d parameters of the required 4" ), aErrorMsg.Printf( _( "Bezier only had %d parameters of the required 4" ), i );
i );
return false; return false;
} }
if( ccount <= 0 ) if( ccount <= 0 )
{ {
errorMsg.Printf( _( "Bezier count parameter %d is invalid" ), aErrorMsg.Printf( _( "Bezier count parameter %d is invalid" ), ccount );
ccount );
return false; return false;
} }
p = strtok( &line[2], " \t\n" ); p = strtok( &aLine[2], " \t\n" );
p = strtok( NULL, " \t\n" ); p = strtok( NULL, " \t\n" );
p = strtok( NULL, " \t\n" ); p = strtok( NULL, " \t\n" );
p = strtok( NULL, " \t\n" ); p = strtok( NULL, " \t\n" );
...@@ -1759,13 +1762,13 @@ bool LIB_BEZIER::Load( char* line, wxString& errorMsg ) ...@@ -1759,13 +1762,13 @@ bool LIB_BEZIER::Load( char* line, wxString& errorMsg )
p = strtok( NULL, " \t\n" ); p = strtok( NULL, " \t\n" );
if( sscanf( p, "%d", &pt.x ) != 1 ) if( sscanf( p, "%d", &pt.x ) != 1 )
{ {
errorMsg.Printf( _( "Bezier point %d X position not defined" ), i ); aErrorMsg.Printf( _( "Bezier point %d X position not defined" ), i );
return false; return false;
} }
p = strtok( NULL, " \t\n" ); p = strtok( NULL, " \t\n" );
if( sscanf( p, "%d", &pt.y ) != 1 ) if( sscanf( p, "%d", &pt.y ) != 1 )
{ {
errorMsg.Printf( _( "Bezier point %d Y position not defined" ), i ); aErrorMsg.Printf( _( "Bezier point %d Y position not defined" ), i );
return false; return false;
} }
m_BezierPoints.push_back( pt ); m_BezierPoints.push_back( pt );
...@@ -1799,11 +1802,11 @@ LIB_DRAW_ITEM* LIB_BEZIER::DoGenCopy() ...@@ -1799,11 +1802,11 @@ LIB_DRAW_ITEM* LIB_BEZIER::DoGenCopy()
} }
int LIB_BEZIER::DoCompare( const LIB_DRAW_ITEM& other ) const int LIB_BEZIER::DoCompare( const LIB_DRAW_ITEM& aOther ) const
{ {
wxASSERT( other.Type() == COMPONENT_BEZIER_DRAW_TYPE ); wxASSERT( aOther.Type() == COMPONENT_BEZIER_DRAW_TYPE );
const LIB_BEZIER* tmp = ( LIB_BEZIER* ) &other; const LIB_BEZIER* tmp = ( LIB_BEZIER* ) &aOther;
if( m_BezierPoints.size() != tmp->m_BezierPoints.size() ) if( m_BezierPoints.size() != tmp->m_BezierPoints.size() )
return m_BezierPoints.size() - tmp->m_BezierPoints.size(); return m_BezierPoints.size() - tmp->m_BezierPoints.size();
...@@ -1820,23 +1823,23 @@ int LIB_BEZIER::DoCompare( const LIB_DRAW_ITEM& other ) const ...@@ -1820,23 +1823,23 @@ int LIB_BEZIER::DoCompare( const LIB_DRAW_ITEM& other ) const
} }
void LIB_BEZIER::DoOffset( const wxPoint& offset ) void LIB_BEZIER::DoOffset( const wxPoint& aOffset )
{ {
size_t i; size_t i;
for( i = 0; i < m_BezierPoints.size(); i++ ) for( i = 0; i < m_BezierPoints.size(); i++ )
m_BezierPoints[i] += offset; m_BezierPoints[i] += aOffset;
for( i = 0; i < m_PolyPoints.size(); i++ ) for( i = 0; i < m_PolyPoints.size(); i++ )
m_PolyPoints[i] += offset; m_PolyPoints[i] += aOffset;
} }
bool LIB_BEZIER::DoTestInside( EDA_Rect& rect ) bool LIB_BEZIER::DoTestInside( EDA_Rect& aRect )
{ {
for( size_t i = 0; i < m_PolyPoints.size(); i++ ) for( size_t i = 0; i < m_PolyPoints.size(); i++ )
{ {
if( rect.Inside( m_PolyPoints[i].x, -m_PolyPoints[i].y ) ) if( aRect.Inside( m_PolyPoints[i].x, -m_PolyPoints[i].y ) )
return true; return true;
} }
...@@ -1844,58 +1847,61 @@ bool LIB_BEZIER::DoTestInside( EDA_Rect& rect ) ...@@ -1844,58 +1847,61 @@ bool LIB_BEZIER::DoTestInside( EDA_Rect& rect )
} }
void LIB_BEZIER::DoMove( const wxPoint& newPosition ) void LIB_BEZIER::DoMove( const wxPoint& aPosition )
{ {
DoOffset( newPosition - m_PolyPoints[0] ); DoOffset( aPosition - m_PolyPoints[0] );
} }
void LIB_BEZIER::DoMirrorHorizontal( const wxPoint& center ) void LIB_BEZIER::DoMirrorHorizontal( const wxPoint& aCenter )
{ {
size_t i, imax = m_PolyPoints.size(); size_t i, imax = m_PolyPoints.size();
for( i = 0; i < imax; i++ ) for( i = 0; i < imax; i++ )
{ {
m_PolyPoints[i].x -= center.x; m_PolyPoints[i].x -= aCenter.x;
m_PolyPoints[i].x *= -1; m_PolyPoints[i].x *= -1;
m_PolyPoints[i].x += center.x; m_PolyPoints[i].x += aCenter.x;
} }
imax = m_BezierPoints.size(); imax = m_BezierPoints.size();
for( i = 0; i < imax; i++ ) for( i = 0; i < imax; i++ )
{ {
m_BezierPoints[i].x -= center.x; m_BezierPoints[i].x -= aCenter.x;
m_BezierPoints[i].x *= -1; m_BezierPoints[i].x *= -1;
m_BezierPoints[i].x += center.x; m_BezierPoints[i].x += aCenter.x;
} }
} }
void LIB_BEZIER::DoPlot( PLOTTER* plotter, const wxPoint& offset, bool fill, void LIB_BEZIER::DoPlot( PLOTTER* aPlotter, const wxPoint& aOffset, bool aFill,
const int transform[2][2] ) const int aTransform[2][2] )
{ {
wxASSERT( plotter != NULL ); wxASSERT( aPlotter != NULL );
size_t i; size_t i;
int* Poly = (int*) MyMalloc( sizeof(int) * 2 * GetCornerCount() ); int* Poly = (int*) MyMalloc( sizeof(int) * 2 * GetCornerCount() );
if( Poly == NULL )
return;
for( i = 0; i < m_PolyPoints.size(); i++ ) for( i = 0; i < m_PolyPoints.size(); i++ )
{ {
wxPoint pos = m_PolyPoints[i]; wxPoint pos = m_PolyPoints[i];
pos = TransformCoordinate( transform, pos ) + offset; pos = TransformCoordinate( aTransform, pos ) + aOffset;
Poly[i * 2] = pos.x; Poly[i * 2] = pos.x;
Poly[i * 2 + 1] = pos.y; Poly[i * 2 + 1] = pos.y;
} }
if( fill && m_Fill == FILLED_WITH_BG_BODYCOLOR ) if( aFill && m_Fill == FILLED_WITH_BG_BODYCOLOR )
{ {
plotter->set_color( ReturnLayerColor( LAYER_DEVICE_BACKGROUND ) ); aPlotter->set_color( ReturnLayerColor( LAYER_DEVICE_BACKGROUND ) );
plotter->poly( i, Poly, FILLED_WITH_BG_BODYCOLOR, 0 ); aPlotter->poly( i, Poly, FILLED_WITH_BG_BODYCOLOR, 0 );
} }
plotter->set_color( ReturnLayerColor( LAYER_DEVICE ) ); aPlotter->set_color( ReturnLayerColor( LAYER_DEVICE ) );
plotter->poly( i, Poly, m_Fill, GetPenSize() ); aPlotter->poly( i, Poly, m_Fill, GetPenSize() );
MyFree( Poly ); MyFree( Poly );
} }
...@@ -1968,7 +1974,7 @@ void LIB_BEZIER::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC, ...@@ -1968,7 +1974,7 @@ void LIB_BEZIER::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC,
* Function HitTest * Function HitTest
* tests if the given wxPoint is within the bounds of this object. * tests if the given wxPoint is within the bounds of this object.
* @param aRefPos A wxPoint to test * @param aRefPos A wxPoint to test
* @return bool - true if a hit, else false * @return true if a hit, else false
*/ */
bool LIB_BEZIER::HitTest( const wxPoint& aRefPos ) bool LIB_BEZIER::HitTest( const wxPoint& aRefPos )
{ {
...@@ -1980,7 +1986,7 @@ bool LIB_BEZIER::HitTest( const wxPoint& aRefPos ) ...@@ -1980,7 +1986,7 @@ bool LIB_BEZIER::HitTest( const wxPoint& aRefPos )
} }
/** Function HitTest /** Function HitTest
* @return true if the point aPosRef is near a segment * @return if the point aPosRef is near a segment
* @param aPosRef = a wxPoint to test * @param aPosRef = a wxPoint to test
* @param aThreshold = max distance to a segment * @param aThreshold = max distance to a segment
* @param aTransMat = the transform matrix * @param aTransMat = the transform matrix
...@@ -2033,20 +2039,20 @@ EDA_Rect LIB_BEZIER::GetBoundingBox() ...@@ -2033,20 +2039,20 @@ EDA_Rect LIB_BEZIER::GetBoundingBox()
} }
void LIB_BEZIER::DisplayInfo( WinEDA_DrawFrame* frame ) void LIB_BEZIER::DisplayInfo( WinEDA_DrawFrame* aFrame )
{ {
wxString msg; wxString msg;
EDA_Rect bBox = GetBoundingBox(); EDA_Rect bBox = GetBoundingBox();
LIB_DRAW_ITEM::DisplayInfo( frame ); LIB_DRAW_ITEM::DisplayInfo( aFrame );
msg = ReturnStringFromValue( g_UnitMetric, m_Width, msg = ReturnStringFromValue( g_UnitMetric, m_Width,
EESCHEMA_INTERNAL_UNIT, true ); EESCHEMA_INTERNAL_UNIT, true );
frame->AppendMsgPanel( _( "Line width" ), msg, BLUE ); aFrame->AppendMsgPanel( _( "Line width" ), msg, BLUE );
msg.Printf( wxT( "(%d, %d, %d, %d)" ), bBox.GetOrigin().x, msg.Printf( wxT( "(%d, %d, %d, %d)" ), bBox.GetOrigin().x,
bBox.GetOrigin().y, bBox.GetEnd().x, bBox.GetEnd().y ); bBox.GetOrigin().y, bBox.GetEnd().x, bBox.GetEnd().y );
frame->AppendMsgPanel( _( "Bounding box" ), msg, BROWN ); aFrame->AppendMsgPanel( _( "Bounding box" ), msg, BROWN );
} }
...@@ -37,8 +37,7 @@ class LIB_PIN; ...@@ -37,8 +37,7 @@ class LIB_PIN;
/** /**
* The component library pin object electrical types used in ERC tests. * The component library pin object electrical types used in ERC tests.
*/ */
enum ElectricPinType enum ElectricPinType {
{
PIN_INPUT, PIN_INPUT,
PIN_OUTPUT, PIN_OUTPUT,
PIN_BIDI, PIN_BIDI,
...@@ -63,8 +62,7 @@ extern const wxChar* MsgPinElectricType[]; ...@@ -63,8 +62,7 @@ extern const wxChar* MsgPinElectricType[];
/** /**
* The component library pin object drawing shapes. * The component library pin object drawing shapes.
*/ */
enum DrawPinShape enum DrawPinShape {
{
NONE = 0, NONE = 0,
INVERT = 1, INVERT = 1,
CLOCK = 2, CLOCK = 2,
...@@ -76,8 +74,7 @@ enum DrawPinShape ...@@ -76,8 +74,7 @@ enum DrawPinShape
/** /**
* The component library pin object orientations. * The component library pin object orientations.
*/ */
enum DrawPinOrient enum DrawPinOrient {
{
PIN_RIGHT = 'R', PIN_RIGHT = 'R',
PIN_LEFT = 'L', PIN_LEFT = 'L',
PIN_UP = 'U', PIN_UP = 'U',
...@@ -137,12 +134,12 @@ public: ...@@ -137,12 +134,12 @@ public:
} }
LIB_DRAW_ITEM( KICAD_T struct_type, LIB_COMPONENT * aParent ); LIB_DRAW_ITEM( KICAD_T aType, LIB_COMPONENT * aParent );
LIB_DRAW_ITEM( const LIB_DRAW_ITEM& item ); LIB_DRAW_ITEM( const LIB_DRAW_ITEM& aItem );
virtual ~LIB_DRAW_ITEM() { } virtual ~LIB_DRAW_ITEM() { }
/** /**
* Draw A body item * Draw a body item
* *
* @param aPanel - DrawPanel to use (can be null) mainly used for clipping * @param aPanel - DrawPanel to use (can be null) mainly used for clipping
* purposes * purposes
...@@ -165,18 +162,19 @@ public: ...@@ -165,18 +162,19 @@ public:
/** /**
* @return the size of the "pen" that be used to draw or plot this item * @return the size of the "pen" that be used to draw or plot this item
*/ */
virtual int GetPenSize( ) = 0; virtual int GetPenSize() = 0;
/** /**
* Write draw item object to a FILE in "*.lib" format. * Write draw item object to /a aFile in "*.lib" format.
* *
* @param aFile - The FILE to write to. * @param aFile - The file to write to.
* @return bool - true if success writing else false. * @param aErrorMsg - Error message if write fails.
* @return - true if success writing else false.
*/ */
virtual bool Save( FILE* aFile ) = 0; virtual bool Save( FILE* aFile ) = 0;
virtual bool Load( char* line, wxString& errorMsg ) = 0; virtual bool Load( char* aLine, wxString& aErrorMsg ) = 0;
LIB_COMPONENT * GetParent() LIB_COMPONENT* GetParent()
{ {
return (LIB_COMPONENT *)m_Parent; return (LIB_COMPONENT *)m_Parent;
} }
...@@ -184,12 +182,14 @@ public: ...@@ -184,12 +182,14 @@ public:
/** /**
* Tests if the given point is within the bounds of this object. * Tests if the given point is within the bounds of this object.
* *
* @param refPos A wxPoint to test * Derived classes should override this function.
* @return bool - true if a hit, else false *
* @param aPosition - The coordinats to test.
* @return - true if a hit, else false
*/ */
virtual bool HitTest( const wxPoint& refPos ) virtual bool HitTest( const wxPoint& aPosition )
{ {
return false; // derived classes should override this function return false;
} }
/** /**
...@@ -197,7 +197,7 @@ public: ...@@ -197,7 +197,7 @@ public:
* @param aThreshold - max distance to this object (usually the half * @param aThreshold - max distance to this object (usually the half
* thickness of a line) * thickness of a line)
* @param aTransMat - the transform matrix * @param aTransMat - the transform matrix
* @return true if the point aPosRef is near this object * @return - true if the point aPosRef is near this object
*/ */
virtual bool HitTest( wxPoint aPosRef, int aThreshold, virtual bool HitTest( wxPoint aPosRef, int aThreshold,
const int aTransMat[2][2] ) = 0; const int aTransMat[2][2] ) = 0;
...@@ -210,7 +210,7 @@ public: ...@@ -210,7 +210,7 @@ public:
return EDA_BaseStruct::GetBoundingBox(); return EDA_BaseStruct::GetBoundingBox();
} }
virtual void DisplayInfo( WinEDA_DrawFrame* frame ); virtual void DisplayInfo( WinEDA_DrawFrame* aFrame );
/** /**
* Make a copy of this draw item. * Make a copy of this draw item.
...@@ -225,29 +225,29 @@ public: ...@@ -225,29 +225,29 @@ public:
/** /**
* Test LIB_DRAW_ITEM objects for equivalence. * Test LIB_DRAW_ITEM objects for equivalence.
* *
* @param other - Object to test against. * @param aOther - Object to test against.
* @return bool - True if object is identical to this object. * @return - True if object is identical to this object.
*/ */
bool operator==( const LIB_DRAW_ITEM& other ) const; bool operator==( const LIB_DRAW_ITEM& aOther ) const;
bool operator==( const LIB_DRAW_ITEM* other ) const bool operator==( const LIB_DRAW_ITEM* aOther ) const
{ {
return *this == *other; return *this == *aOther;
} }
/** /**
* Test if another draw item is less than this draw object. * Test if another draw item is less than this draw object.
* *
* @param other - Draw item to compare against. * @param aOther - Draw item to compare against.
* @return bool - True if object is less than this object. * @return - True if object is less than this object.
*/ */
bool operator<( const LIB_DRAW_ITEM& other) const; bool operator<( const LIB_DRAW_ITEM& aOther) const;
/** /**
* Set drawing object offset from the current position. * Set drawing object offset from the current position.
* *
* @param offset - Cooridinates to offset position. * @param aOffset - Cooridinates to offset position.
*/ */
void SetOffset( const wxPoint& offset ) { DoOffset( offset ); } void SetOffset( const wxPoint& aOffset ) { DoOffset( aOffset ); }
/** /**
* Test if any part of the draw object is inside rectangle bounds. * Test if any part of the draw object is inside rectangle bounds.
...@@ -255,53 +255,56 @@ public: ...@@ -255,53 +255,56 @@ public:
* This is used for block selection. The real work is done by the * This is used for block selection. The real work is done by the
* DoTestInside method for each derived object type. * DoTestInside method for each derived object type.
* *
* @param rect - Rectangle to check against. * @param aRect - Rectangle to check against.
* @return bool - True if object is inside rectangle. * @return - True if object is inside rectangle.
*/ */
bool Inside( EDA_Rect& rect ) { return DoTestInside( rect ); } bool Inside( EDA_Rect& aRect ) { return DoTestInside( aRect ); }
/** /**
* Move a draw object to a new position. * Move a draw object to a new /a aPosition.
* *
* The real work is done by the DoMove method for each derived object type. * The real work is done by the DoMove method for each derived object type.
* *
* @param newPosition - Position to move draw item to. * @param aPosition - Position to move draw item to.
*/ */
void Move( const wxPoint& newPosition ) { DoMove( newPosition ); } void Move( const wxPoint& aPosition ) { DoMove( aPosition ); }
/** /**
* Return the current draw object start position. * Return the current draw object start position.
*/ */
wxPoint GetPosition( void ) { return DoGetPosition(); } wxPoint GetPosition() { return DoGetPosition(); }
/** /**
* Mirror the draw object along the horizontal (X) axis about a point. * Mirror the draw object along the horizontal (X) axis about a point.
* *
* @param center - Point to mirror around. * @param aCenter - Point to mirror around.
*/ */
void MirrorHorizontal( const wxPoint& center ) void MirrorHorizontal( const wxPoint& aCenter )
{ {
DoMirrorHorizontal( center ); DoMirrorHorizontal( aCenter );
} }
/** /**
* Plot the draw item using the plot object. * Plot the draw item using the plot object.
* *
* @param plotter - The plot object to plot to. * @param aPlotter - The plot object to plot to.
* @param aOffset - Plot offset position.
* @param aFill - Flag to indicate whether or not the object is filled.
* @param aTransform - The plot transform.
*/ */
void Plot( PLOTTER* plotter, const wxPoint& offset, bool fill, void Plot( PLOTTER* aPlotter, const wxPoint& aOffset, bool aFill,
const int transform[2][2] ) const int aTransform[2][2] )
{ {
DoPlot( plotter, offset, fill, transform ); DoPlot( aPlotter, aOffset, aFill, aTransform );
} }
/** /**
* Return the width of the draw item. * Return the width of the draw item.
* *
* @return int - Width of draw object. * @return Width of draw object.
*/ */
int GetWidth( void ) { return DoGetWidth(); } int GetWidth() { return DoGetWidth(); }
void SetWidth( int width ) { DoSetWidth( width ); } void SetWidth( int aWidth ) { DoSetWidth( aWidth ); }
/** /**
* Check if draw object can be filled. * Check if draw object can be filled.
...@@ -309,24 +312,23 @@ public: ...@@ -309,24 +312,23 @@ public:
* The default setting is false. If the derived object support filling, * The default setting is false. If the derived object support filling,
* set the m_isFillable member to true. * set the m_isFillable member to true.
* *
* @return bool - True if draw object can be fill. Default is false. * @return - True if draw object can be fill. Default is false.
*/ */
bool IsFillable( void ) { return m_isFillable; } bool IsFillable() { return m_isFillable; }
/** /**
* Return the modified status of the draw object. * Return the modified status of the draw object.
* *
* @return bool - True if the draw object has been modified. * @return - True if the draw object has been modified.
*/ */
bool IsModified( void ) { return ( m_Flags & IS_CHANGED ) != 0; } bool IsModified() { return ( m_Flags & IS_CHANGED ) != 0; }
/** /**
* Return the new item status of the draw object. * Return the new item status of the draw object.
* *
* @return bool - True if the draw item has been added to the * @return - True if the draw item has been added to the parent component.
* parent component.
*/ */
bool IsNew( void ) { return ( m_Flags & IS_NEW ) != 0; } bool IsNew() { return ( m_Flags & IS_NEW ) != 0; }
protected: protected:
virtual LIB_DRAW_ITEM* DoGenCopy() = 0; virtual LIB_DRAW_ITEM* DoGenCopy() = 0;
...@@ -342,16 +344,16 @@ protected: ...@@ -342,16 +344,16 @@ protected:
* - KICAD_T enum value. * - KICAD_T enum value.
* - Result of derived classes comparison. * - Result of derived classes comparison.
*/ */
virtual int DoCompare( const LIB_DRAW_ITEM& other ) const = 0; virtual int DoCompare( const LIB_DRAW_ITEM& aOther ) const = 0;
virtual void DoOffset( const wxPoint& offset ) = 0; virtual void DoOffset( const wxPoint& aOffset ) = 0;
virtual bool DoTestInside( EDA_Rect& rect ) = 0; virtual bool DoTestInside( EDA_Rect& aRect ) = 0;
virtual void DoMove( const wxPoint& newPosition ) = 0; virtual void DoMove( const wxPoint& aPosition ) = 0;
virtual wxPoint DoGetPosition( void ) = 0; virtual wxPoint DoGetPosition() = 0;
virtual void DoMirrorHorizontal( const wxPoint& center ) = 0; virtual void DoMirrorHorizontal( const wxPoint& aCenter ) = 0;
virtual void DoPlot( PLOTTER* plotter, const wxPoint& offset, bool fill, virtual void DoPlot( PLOTTER* aPlotter, const wxPoint& aOffset, bool aFill,
const int transform[2][2] ) = 0; const int aTransform[2][2] ) = 0;
virtual int DoGetWidth( void ) = 0; virtual int DoGetWidth() = 0;
virtual void DoSetWidth( int width ) = 0; virtual void DoSetWidth( int aWidth ) = 0;
/** Flag to indicate if draw item is fillable. Default is false. */ /** Flag to indicate if draw item is fillable. Default is false. */
bool m_isFillable; bool m_isFillable;
...@@ -390,7 +392,7 @@ public: ...@@ -390,7 +392,7 @@ public:
public: public:
LIB_PIN(LIB_COMPONENT * aParent); LIB_PIN(LIB_COMPONENT * aParent);
LIB_PIN( const LIB_PIN& pin ); LIB_PIN( const LIB_PIN& aPin );
~LIB_PIN() { } ~LIB_PIN() { }
LIB_PIN* Next() const { return (LIB_PIN*) Pnext; } LIB_PIN* Next() const { return (LIB_PIN*) Pnext; }
...@@ -406,17 +408,17 @@ public: ...@@ -406,17 +408,17 @@ public:
* Write pin object to a FILE in "*.lib" format. * Write pin object to a FILE in "*.lib" format.
* *
* @param aFile The FILE to write to. * @param aFile The FILE to write to.
* @return bool - true if success writing else false. * @return - true if success writing else false.
*/ */
virtual bool Save( FILE* aFile ); virtual bool Save( FILE* aFile );
virtual bool Load( char* line, wxString& errorMsg ); virtual bool Load( char* aLine, wxString& aErrorMsg );
/** /**
* Test if the given point is within the bounds of this object. * Test if the given point is within the bounds of this object.
* *
* @param aRefPos A wxPoint to test * @param aRefPos A wxPoint to test
* @return bool - true if a hit, else false * @return - true if a hit, else false
*/ */
virtual bool HitTest( const wxPoint& aRefPos ); virtual bool HitTest( const wxPoint& aRefPos );
...@@ -425,10 +427,9 @@ public: ...@@ -425,10 +427,9 @@ public:
* @param aThreshold - max distance to this object (usually the half * @param aThreshold - max distance to this object (usually the half
* thickness of a line) * thickness of a line)
* @param aTransMat - the transform matrix * @param aTransMat - the transform matrix
* @return true if the point aPosRef is near this object * @return - true if the point aPosRef is near this object
*/ */
virtual bool HitTest( wxPoint aPosRef, int aThreshold, virtual bool HitTest( wxPoint aPosRef, int aThreshold, const int aTransMat[2][2] );
const int aTransMat[2][2] );
virtual void DisplayInfo( WinEDA_DrawFrame* frame ); virtual void DisplayInfo( WinEDA_DrawFrame* frame );
virtual EDA_Rect GetBoundingBox(); virtual EDA_Rect GetBoundingBox();
...@@ -447,7 +448,7 @@ public: ...@@ -447,7 +448,7 @@ public:
*/ */
void ReturnPinStringNum( wxString& aStringBuffer ) const; void ReturnPinStringNum( wxString& aStringBuffer ) const;
wxString GetNumber( void ); wxString GetNumber();
/** Function ReturnPinStringNum (static function) /** Function ReturnPinStringNum (static function)
* Pin num is coded as a long or 4 ascii chars * Pin num is coded as a long or 4 ascii chars
...@@ -457,7 +458,7 @@ public: ...@@ -457,7 +458,7 @@ public:
*/ */
static wxString ReturnPinStringNum( long aPinNum ); static wxString ReturnPinStringNum( long aPinNum );
void SetPinNumFromString( wxString& buffer ); void SetPinNumFromString( wxString& aBuffer );
/** /**
* Set the pin name. * Set the pin name.
...@@ -466,26 +467,26 @@ public: ...@@ -466,26 +467,26 @@ public:
* *
* @param name - New pin name. * @param name - New pin name.
*/ */
void SetName( const wxString& name ); void SetName( const wxString& aName );
/** /**
* Set the size of the pin name text. * Set the /a aSize of the pin name text.
* *
* This will also update the text size of the name of the pins marked * This will also update the text size of the name of the pins marked
* by EnableEditMode(). * by EnableEditMode().
* *
* @param size - The text size of the pin name in schematic units ( mils ). * @param aSize - The text size of the pin name in schematic units ( mils ).
*/ */
void SetNameTextSize( int size ); void SetNameTextSize( int aSize );
/** /**
* Set the pin number. * Set the pin number.
* *
* This will also all of the pin numbers marked by EnableEditMode(). * This will also all of the pin numbers marked by EnableEditMode().
* *
* @param number - New pin number. * @param aNumber - New pin number.
*/ */
void SetNumber( const wxString& number ); void SetNumber( const wxString& aNumber );
/** /**
* Set the size of the pin number text. * Set the size of the pin number text.
...@@ -493,10 +494,10 @@ public: ...@@ -493,10 +494,10 @@ public:
* This will also update the text size of the number of the pins marked * This will also update the text size of the number of the pins marked
* by EnableEditMode(). * by EnableEditMode().
* *
* @param size - The text size of the pin number in schematic * @param aSize - The text size of the pin number in schematic
* units ( mils ). * units ( mils ).
*/ */
void SetNumberTextSize( int size ); void SetNumberTextSize( int aSize );
/** /**
* Set orientation on the pin. * Set orientation on the pin.
...@@ -504,9 +505,9 @@ public: ...@@ -504,9 +505,9 @@ public:
* This will also update the orientation of the pins marked by * This will also update the orientation of the pins marked by
* EnableEditMode(). * EnableEditMode().
* *
* @param orientation - The orientation of the pin. * @param aOrientation - The orientation of the pin.
*/ */
void SetOrientation( int orientation ); void SetOrientation( int aOrientation );
/** /**
* Set the draw style of the pin. * Set the draw style of the pin.
...@@ -514,9 +515,9 @@ public: ...@@ -514,9 +515,9 @@ public:
* This will also update the draw style of the pins marked by * This will also update the draw style of the pins marked by
* EnableEditMode(). * EnableEditMode().
* *
* @param style - The draw style of the pin. * @param aStyle - The draw style of the pin.
*/ */
void SetDrawStyle( int style ); void SetDrawStyle( int aStyle );
/** /**
* Set the electrical type of the pin. * Set the electrical type of the pin.
...@@ -524,18 +525,18 @@ public: ...@@ -524,18 +525,18 @@ public:
* This will also update the electrical type of the pins marked by * This will also update the electrical type of the pins marked by
* EnableEditMode(). * EnableEditMode().
* *
* @param type - The electrical type of the pin. * @param aType - The electrical type of the pin.
*/ */
void SetElectricalType( int style ); void SetElectricalType( int aType );
/** /**
* Set the pin length. * Set the pin length.
* *
* This will also update the length of the pins marked by EnableEditMode(). * This will also update the length of the pins marked by EnableEditMode().
* *
* @param size - The length of the pin in mils. * @param aLength - The length of the pin in mils.
*/ */
void SetLength( int length ); void SetLength( int aLength );
/** /**
* Set the pin part number. * Set the pin part number.
...@@ -543,10 +544,10 @@ public: ...@@ -543,10 +544,10 @@ public:
* If the pin is changed from not common to common to all parts, any * If the pin is changed from not common to common to all parts, any
* linked pins will be removed from the parent component. * linked pins will be removed from the parent component.
* *
* @param part - Number of the part the pin belongs to. Set to zero to * @param aPart - Number of the part the pin belongs to. Set to zero to
* make pin common to all parts in a multi-part component. * make pin common to all parts in a multi-part component.
*/ */
void SetPartNumber( int part ); void SetPartNumber( int aPart );
/** /**
* Set the body style (conversion) of the pin. * Set the body style (conversion) of the pin.
...@@ -557,7 +558,7 @@ public: ...@@ -557,7 +558,7 @@ public:
* @param conversion - Body style of the pin. Set to zero to make pin * @param conversion - Body style of the pin. Set to zero to make pin
* common to all body styles. * common to all body styles.
*/ */
void SetConversion( int conversion ); void SetConversion( int aConversion );
/** /**
* Set or clear the visibility flag for the pin. * Set or clear the visibility flag for the pin.
...@@ -565,9 +566,9 @@ public: ...@@ -565,9 +566,9 @@ public:
* This will also update the visibility of the pins marked by * This will also update the visibility of the pins marked by
* EnableEditMode(). * EnableEditMode().
* *
* @param visible - True to make the pin visible or false to hide the pin. * @param aVisible - True to make the pin visible or false to hide the pin.
*/ */
void SetVisible( bool visible ); void SetVisible( bool aVisible );
/** /**
* Enable or clear pin editing mode. * Enable or clear pin editing mode.
...@@ -580,18 +581,18 @@ public: ...@@ -580,18 +581,18 @@ public:
* parts or body styles in the component. See SetCommonToAllParts() * parts or body styles in the component. See SetCommonToAllParts()
* and SetCommonToAllBodyStyles() for more information. * and SetCommonToAllBodyStyles() for more information.
* *
* @params enable - True marks all common pins for editing mode. False * @params aEnable - True marks all common pins for editing mode. False
* clears the editing mode. * clears the editing mode.
* @params editpinByPin - Enables the edit pin by pin mode. * @params aEditpinByPin - Enables the edit pin by pin mode.
*/ */
void EnableEditMode( bool enable, bool pinByPin = false ); void EnableEditMode( bool aEnable, bool aEditPinByPin = false );
/** /**
* Return the visibility status of the draw object. * Return the visibility status of the draw object.
* *
* @return bool - True if draw object is visible otherwise false. * @return True if draw object is visible otherwise false.
*/ */
bool IsVisible( void ) { return ( m_Attributs & PINNOTDRAW ) == 0; } bool IsVisible() { return ( m_Attributs & PINNOTDRAW ) == 0; }
/** /**
* @return the size of the "pen" that be used to draw or plot this item. * @return the size of the "pen" that be used to draw or plot this item.
...@@ -599,81 +600,79 @@ public: ...@@ -599,81 +600,79 @@ public:
virtual int GetPenSize(); virtual int GetPenSize();
void Draw( WinEDA_DrawPanel * aPanel, wxDC * aDC, const wxPoint &aOffset, void Draw( WinEDA_DrawPanel * aPanel, wxDC * aDC, const wxPoint &aOffset,
int aColor, int aDrawMode, void* aData, int aColor, int aDrawMode, void* aData, const int aTransformMatrix[2][2] );
const int aTransformMatrix[2][2] );
void DrawPinSymbol( WinEDA_DrawPanel* aPanel, wxDC* aDC, const wxPoint& aPosition,
int aOrientation, int aDrawMode, int aColor = -1 );
void DrawPinSymbol( WinEDA_DrawPanel* panel, wxDC* DC, void DrawPinTexts( WinEDA_DrawPanel* aPanel, wxDC* aDC, wxPoint& aPosition,
const wxPoint& pin_pos, int orient, int aOrientation, int TextInside, bool DrawPinNum, bool DrawPinName,
int DrawMode, int Color = -1 ); int aColor, int aDrawMode );
void DrawPinTexts( WinEDA_DrawPanel* panel, wxDC* DC, void PlotPinTexts( PLOTTER *aPlotter,
wxPoint& pin_pos, int orient, wxPoint& aPosition,
int TextInside, bool DrawPinNum, int aOrientation,
bool DrawPinName, int Color, int DrawMode ); int aTextInside,
bool aDrawPinNum,
void PlotPinTexts( PLOTTER *plotter, bool aDrawPinName,
wxPoint& pin_pos,
int orient,
int TextInside,
bool DrawPinNum,
bool DrawPinNameint,
int aWidth ); int aWidth );
/** /**
* Get a list of pin orientation names. * Get a list of pin orientation names.
* *
* @return wxArrayString - List of valid pin orientation names. * @return List of valid pin orientation names.
*/ */
static wxArrayString GetOrientationNames( void ); static wxArrayString GetOrientationNames();
/** /**
* Get the orientation code by index used to set the pin orientation. * Get the orientation code by index used to set the pin orientation.
* *
* @param index - The index of the orientation code to look up. * @param aIndex - The index of the orientation code to look up.
* @return int - Orientation code if index is valid. Returns right * @return Orientation code if index is valid. Returns right
* orientation on index error. * orientation on index error.
*/ */
static int GetOrientationCode( int index ); static int GetOrientationCode( int aIndex );
/** /**
* Get the index of the orientation code. * Get the index of the orientation code.
* *
* @param code - The orientation code to look up. * @param aCode - The orientation code to look up.
* @return int - The index of the orientation code if found. Otherwise, * @return The index of the orientation code if found. Otherwise,
* return wxNOT_FOUND. * return wxNOT_FOUND.
*/ */
static int GetOrientationCodeIndex( int code ); static int GetOrientationCodeIndex( int aCode );
/** /**
* Get a list of pin draw style names. * Get a list of pin draw style names.
* *
* @return wxArrayString - List of valid pin draw style names. * @return List of valid pin draw style names.
*/ */
static wxArrayString GetStyleNames( void ); static wxArrayString GetStyleNames();
/** /**
* Get the pin draw style code by index used to set the pin draw style. * Get the pin draw style code by index used to set the pin draw style.
* *
* @param index - The index of the pin draw style code to look up. * @param aIndex - The index of the pin draw style code to look up.
* @return int - Pin draw style code if index is valid. Returns NONE * @return Pin draw style code if index is valid. Returns NONE
* style on index error. * style on index error.
*/ */
static int GetStyleCode( int index ); static int GetStyleCode( int aIndex );
/** /**
* Get the index of the pin draw style code. * Get the index of the pin draw style code.
* *
* @param code - The pin draw style code to look up. * @param aCode - The pin draw style code to look up.
* @return int - The index of the pin draw style code if found. Otherwise, * @return The index of the pin draw style code if found. Otherwise,
* return wxNOT_FOUND. * return wxNOT_FOUND.
*/ */
static int GetStyleCodeIndex( int code ); static int GetStyleCodeIndex( int aCode );
/** /**
* Get a list of pin electrical type names. * Get a list of pin electrical type names.
* @return wxArrayString - List of valid pin electrical type names. *
* @return List of valid pin electrical type names.
*/ */
static wxArrayString GetElectricalTypeNames( void ); static wxArrayString GetElectricalTypeNames();
protected: protected:
virtual LIB_DRAW_ITEM* DoGenCopy(); virtual LIB_DRAW_ITEM* DoGenCopy();
...@@ -687,16 +686,16 @@ protected: ...@@ -687,16 +686,16 @@ protected:
* - Pin horizontal (X) position. * - Pin horizontal (X) position.
* - Pin vertical (Y) position. * - Pin vertical (Y) position.
*/ */
virtual int DoCompare( const LIB_DRAW_ITEM& other ) const; virtual int DoCompare( const LIB_DRAW_ITEM& aOther ) const;
virtual void DoOffset( const wxPoint& offset ); virtual void DoOffset( const wxPoint& aOffset );
virtual bool DoTestInside( EDA_Rect& rect ); virtual bool DoTestInside( EDA_Rect& aRect );
virtual void DoMove( const wxPoint& newPosition ); virtual void DoMove( const wxPoint& aPosition );
virtual wxPoint DoGetPosition( void ) { return m_Pos; } virtual wxPoint DoGetPosition() { return m_Pos; }
virtual void DoMirrorHorizontal( const wxPoint& center ); virtual void DoMirrorHorizontal( const wxPoint& aCenter );
virtual void DoPlot( PLOTTER* plotter, const wxPoint& offset, bool fill, virtual void DoPlot( PLOTTER* aPlotter, const wxPoint& aOffset, bool aFill,
const int transform[2][2] ); const int aTransform[2][2] );
virtual int DoGetWidth( void ) { return m_Width; } virtual int DoGetWidth() { return m_Width; }
virtual void DoSetWidth( int width ) { m_Width = width; } virtual void DoSetWidth( int aWidth ) { m_Width = aWidth; }
}; };
...@@ -717,7 +716,7 @@ public: ...@@ -717,7 +716,7 @@ public:
public: public:
LIB_ARC(LIB_COMPONENT * aParent); LIB_ARC(LIB_COMPONENT * aParent);
LIB_ARC( const LIB_ARC& arc ); LIB_ARC( const LIB_ARC& aArc );
~LIB_ARC() { } ~LIB_ARC() { }
virtual wxString GetClass() const virtual wxString GetClass() const
{ {
...@@ -729,16 +728,16 @@ public: ...@@ -729,16 +728,16 @@ public:
* Save arc object to a FILE in "*.lib" format. * Save arc object to a FILE in "*.lib" format.
* *
* @param aFile The FILE to write to. * @param aFile The FILE to write to.
* @return bool - true if success writing else false. * @return - True if success writing else false.
*/ */
virtual bool Save( FILE* aFile ); virtual bool Save( FILE* aFile );
virtual bool Load( char* line, wxString& errorMsg ); virtual bool Load( char* aLine, wxString& aErrorMsg );
/** /**
* Tests if the given wxPoint is within the bounds of this object. * Tests if the given wxPoint is within the bounds of this object.
* *
* @param aRefPos A wxPoint to test * @param aRefPos - Coordinates to test
* @return bool - true if a hit, else false * @return - True if a hit, else false
*/ */
virtual bool HitTest( const wxPoint& aRefPos ); virtual bool HitTest( const wxPoint& aRefPos );
...@@ -747,7 +746,7 @@ public: ...@@ -747,7 +746,7 @@ public:
* @param aThreshold - max distance to this object (usually the half * @param aThreshold - max distance to this object (usually the half
* thickness of a line) * thickness of a line)
* @param aTransMat - the transform matrix * @param aTransMat - the transform matrix
* @return true if the point aPosRef is near this object * @return - True if the point aPosRef is near this object
*/ */
virtual bool HitTest( wxPoint aPosRef, int aThreshold, virtual bool HitTest( wxPoint aPosRef, int aThreshold,
const int aTransMat[2][2] ); const int aTransMat[2][2] );
...@@ -775,16 +774,16 @@ protected: ...@@ -775,16 +774,16 @@ protected:
* - Arc start angle. * - Arc start angle.
* - Arc end angle. * - Arc end angle.
*/ */
virtual int DoCompare( const LIB_DRAW_ITEM& other ) const; virtual int DoCompare( const LIB_DRAW_ITEM& aOther ) const;
virtual void DoOffset( const wxPoint& offset ); virtual void DoOffset( const wxPoint& aOffset );
virtual bool DoTestInside( EDA_Rect& rect ); virtual bool DoTestInside( EDA_Rect& aRect );
virtual void DoMove( const wxPoint& newPosition ); virtual void DoMove( const wxPoint& aPosition );
virtual wxPoint DoGetPosition( void ) { return m_Pos; } virtual wxPoint DoGetPosition() { return m_Pos; }
virtual void DoMirrorHorizontal( const wxPoint& center ); virtual void DoMirrorHorizontal( const wxPoint& aCenter );
virtual void DoPlot( PLOTTER* plotter, const wxPoint& offset, bool fill, virtual void DoPlot( PLOTTER* aPlotter, const wxPoint& aOffset, bool aFill,
const int transform[2][2] ); const int aTransform[2][2] );
virtual int DoGetWidth( void ) { return m_Width; } virtual int DoGetWidth() { return m_Width; }
virtual void DoSetWidth( int width ) { m_Width = width; } virtual void DoSetWidth( int aWidth ) { m_Width = aWidth; }
}; };
...@@ -801,7 +800,7 @@ public: ...@@ -801,7 +800,7 @@ public:
public: public:
LIB_CIRCLE(LIB_COMPONENT * aParent); LIB_CIRCLE(LIB_COMPONENT * aParent);
LIB_CIRCLE( const LIB_CIRCLE& circle ); LIB_CIRCLE( const LIB_CIRCLE& aCircle );
~LIB_CIRCLE() { } ~LIB_CIRCLE() { }
virtual wxString GetClass() const virtual wxString GetClass() const
{ {
...@@ -813,10 +812,10 @@ public: ...@@ -813,10 +812,10 @@ public:
* Write circle object to a FILE in "*.lib" format. * Write circle object to a FILE in "*.lib" format.
* *
* @param aFile - The FILE to write to. * @param aFile - The FILE to write to.
* @return bool - true if success writing else false. * @return - true if success writing else false.
*/ */
virtual bool Save( FILE* aFile ); virtual bool Save( FILE* aFile );
virtual bool Load( char* line, wxString& errorMsg ); virtual bool Load( char* aLine, wxString& aErrorMsg );
/** /**
* Test if the given point is within the bounds of this object. * Test if the given point is within the bounds of this object.
...@@ -841,12 +840,12 @@ public: ...@@ -841,12 +840,12 @@ public:
*/ */
virtual int GetPenSize( ); virtual int GetPenSize( );
void Draw( WinEDA_DrawPanel * aPanel, wxDC * aDC, const wxPoint &aOffset, void Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC, const wxPoint &aOffset,
int aColor, int aDrawMode, void* aData, int aColor, int aDrawMode, void* aData,
const int aTransformMatrix[2][2] ); const int aTransformMatrix[2][2] );
virtual EDA_Rect GetBoundingBox(); virtual EDA_Rect GetBoundingBox();
virtual void DisplayInfo( WinEDA_DrawFrame* frame ); virtual void DisplayInfo( WinEDA_DrawFrame* aFrame );
protected: protected:
virtual LIB_DRAW_ITEM* DoGenCopy(); virtual LIB_DRAW_ITEM* DoGenCopy();
...@@ -859,17 +858,17 @@ protected: ...@@ -859,17 +858,17 @@ protected:
* - Circle vertical (Y) position. * - Circle vertical (Y) position.
* - Circle radius. * - Circle radius.
*/ */
virtual int DoCompare( const LIB_DRAW_ITEM& other ) const; virtual int DoCompare( const LIB_DRAW_ITEM& aOther ) const;
virtual void DoOffset( const wxPoint& offset ); virtual void DoOffset( const wxPoint& aOffset );
virtual bool DoTestInside( EDA_Rect& rect ); virtual bool DoTestInside( EDA_Rect& aRect );
virtual void DoMove( const wxPoint& newPosition ); virtual void DoMove( const wxPoint& aPosition );
virtual wxPoint DoGetPosition( void ) { return m_Pos; } virtual wxPoint DoGetPosition() { return m_Pos; }
virtual void DoMirrorHorizontal( const wxPoint& center ); virtual void DoMirrorHorizontal( const wxPoint& aCenter );
virtual void DoPlot( PLOTTER* plotter, const wxPoint& offset, bool fill, virtual void DoPlot( PLOTTER* aPlotter, const wxPoint& aOffset, bool aFill,
const int transform[2][2] ); const int aTransform[2][2] );
virtual int DoGetWidth( void ) { return m_Width; } virtual int DoGetWidth() { return m_Width; }
virtual void DoSetWidth( int width ) { m_Width = width; } virtual void DoSetWidth( int aWidth ) { m_Width = aWidth; }
}; };
...@@ -883,7 +882,7 @@ class LIB_TEXT : public LIB_DRAW_ITEM, public EDA_TextStruct ...@@ -883,7 +882,7 @@ class LIB_TEXT : public LIB_DRAW_ITEM, public EDA_TextStruct
{ {
public: public:
LIB_TEXT(LIB_COMPONENT * aParent); LIB_TEXT(LIB_COMPONENT * aParent);
LIB_TEXT( const LIB_TEXT& text ); LIB_TEXT( const LIB_TEXT& aText );
~LIB_TEXT() { } ~LIB_TEXT() { }
virtual wxString GetClass() const virtual wxString GetClass() const
{ {
...@@ -895,16 +894,16 @@ public: ...@@ -895,16 +894,16 @@ public:
* Write text object out to a FILE in "*.lib" format. * Write text object out to a FILE in "*.lib" format.
* *
* @param aFile - The FILE to write to. * @param aFile - The FILE to write to.
* @return bool - true if success writing else false. * @return - true if success writing else false.
*/ */
virtual bool Save( FILE* aFile ); virtual bool Save( FILE* aFile );
virtual bool Load( char* line, wxString& errorMsg ); virtual bool Load( char* aLine, wxString& aErrorMsg );
/** /**
* Test if the given point is within the bounds of this object. * Test if the given point is within the bounds of this object.
* *
* @param refPos - A wxPoint to test * @param refPos - A wxPoint to test
* @return bool - true if a hit, else false * @return - true if a hit, else false
*/ */
virtual bool HitTest( const wxPoint& refPos ); virtual bool HitTest( const wxPoint& refPos );
...@@ -922,12 +921,12 @@ public: ...@@ -922,12 +921,12 @@ public:
* *
* For now, an ending point must be inside this rect. * For now, an ending point must be inside this rect.
* *
* @param refArea - the given EDA_Rect * @param aRect - the given EDA_Rect
* @return bool - true if a hit, else false * @return - true if a hit, else false
*/ */
virtual bool HitTest( EDA_Rect& refArea ) virtual bool HitTest( EDA_Rect& aRect )
{ {
return TextHitTest( refArea ); return TextHitTest( aRect );
} }
/** /**
...@@ -939,7 +938,7 @@ public: ...@@ -939,7 +938,7 @@ public:
int aColor, int aDrawMode, void* aData, int aColor, int aDrawMode, void* aData,
const int aTransformMatrix[2][2] ); const int aTransformMatrix[2][2] );
virtual void DisplayInfo( WinEDA_DrawFrame* frame ); virtual void DisplayInfo( WinEDA_DrawFrame* aFrame );
virtual EDA_Rect GetBoundingBox(); virtual EDA_Rect GetBoundingBox();
...@@ -956,17 +955,17 @@ protected: ...@@ -956,17 +955,17 @@ protected:
* - Text width. * - Text width.
* - Text height. * - Text height.
*/ */
virtual int DoCompare( const LIB_DRAW_ITEM& other ) const; virtual int DoCompare( const LIB_DRAW_ITEM& aOther ) const;
virtual void DoOffset( const wxPoint& offset ); virtual void DoOffset( const wxPoint& aOffset );
virtual bool DoTestInside( EDA_Rect& rect ); virtual bool DoTestInside( EDA_Rect& aRect );
virtual void DoMove( const wxPoint& newPosition ); virtual void DoMove( const wxPoint& aPosition );
virtual wxPoint DoGetPosition( void ) { return m_Pos; } virtual wxPoint DoGetPosition() { return m_Pos; }
virtual void DoMirrorHorizontal( const wxPoint& center ); virtual void DoMirrorHorizontal( const wxPoint& aCenter );
virtual void DoPlot( PLOTTER* plotter, const wxPoint& offset, bool fill, virtual void DoPlot( PLOTTER* aPlotter, const wxPoint& aOffset, bool aFill,
const int transform[2][2] ); const int aTransform[2][2] );
virtual int DoGetWidth( void ) { return m_Width; } virtual int DoGetWidth() { return m_Width; }
virtual void DoSetWidth( int width ) { m_Width = width; } virtual void DoSetWidth( int aWidth ) { m_Width = aWidth; }
}; };
...@@ -982,7 +981,7 @@ public: ...@@ -982,7 +981,7 @@ public:
public: public:
LIB_RECTANGLE(LIB_COMPONENT * aParent); LIB_RECTANGLE(LIB_COMPONENT * aParent);
LIB_RECTANGLE( const LIB_RECTANGLE& rect ); LIB_RECTANGLE( const LIB_RECTANGLE& aRect );
~LIB_RECTANGLE() { } ~LIB_RECTANGLE() { }
virtual wxString GetClass() const virtual wxString GetClass() const
{ {
...@@ -994,16 +993,16 @@ public: ...@@ -994,16 +993,16 @@ public:
* Write rectangle object out to a FILE in "*.lib" format. * Write rectangle object out to a FILE in "*.lib" format.
* *
* @param aFile - The FILE to write to. * @param aFile - The FILE to write to.
* @return bool - true if success writing else false. * @return - true if success writing else false.
*/ */
virtual bool Save( FILE* aFile ); virtual bool Save( FILE* aFile );
virtual bool Load( char* line, wxString& errorMsg ); virtual bool Load( char* aLine, wxString& aErrorMsg );
/** /**
* Test if the given point is within the bounds of this object. * Test if the given point is within the bounds of this object.
* *
* @param aRefPos - A wxPoint to test * @param aRefPos - A wxPoint to test
* @return bool - true if a hit, else false * @return - true if a hit, else false
*/ */
virtual bool HitTest( const wxPoint& aRefPos ); virtual bool HitTest( const wxPoint& aRefPos );
...@@ -1027,7 +1026,7 @@ public: ...@@ -1027,7 +1026,7 @@ public:
const int aTransformMatrix[2][2] ); const int aTransformMatrix[2][2] );
virtual EDA_Rect GetBoundingBox(); virtual EDA_Rect GetBoundingBox();
virtual void DisplayInfo( WinEDA_DrawFrame* frame ); virtual void DisplayInfo( WinEDA_DrawFrame* aFrame );
protected: protected:
virtual LIB_DRAW_ITEM* DoGenCopy(); virtual LIB_DRAW_ITEM* DoGenCopy();
...@@ -1041,19 +1040,20 @@ protected: ...@@ -1041,19 +1040,20 @@ protected:
* - Rectangle horizontal (X) end position. * - Rectangle horizontal (X) end position.
* - Rectangle vertical (Y) end position. * - Rectangle vertical (Y) end position.
*/ */
virtual int DoCompare( const LIB_DRAW_ITEM& other ) const; virtual int DoCompare( const LIB_DRAW_ITEM& aOther ) const;
virtual void DoOffset( const wxPoint& offset ); virtual void DoOffset( const wxPoint& aOffset );
virtual bool DoTestInside( EDA_Rect& rect ); virtual bool DoTestInside( EDA_Rect& aRect );
virtual void DoMove( const wxPoint& newPosition ); virtual void DoMove( const wxPoint& aPosition );
virtual wxPoint DoGetPosition( void ) { return m_Pos; } virtual wxPoint DoGetPosition() { return m_Pos; }
virtual void DoMirrorHorizontal( const wxPoint& center ); virtual void DoMirrorHorizontal( const wxPoint& aCenter );
virtual void DoPlot( PLOTTER* plotter, const wxPoint& offset, bool fill, virtual void DoPlot( PLOTTER* aPlotter, const wxPoint& aOffset, bool aFill,
const int transform[2][2] ); const int aTransform[2][2] );
virtual int DoGetWidth( void ) { return m_Width; } virtual int DoGetWidth() { return m_Width; }
virtual void DoSetWidth( int width ) { m_Width = width; } virtual void DoSetWidth( int aWidth ) { m_Width = aWidth; }
}; };
/**********************************/ /**********************************/
/* Graphic Body Item: single line */ /* Graphic Body Item: single line */
/**********************************/ /**********************************/
...@@ -1066,7 +1066,7 @@ public: ...@@ -1066,7 +1066,7 @@ public:
public: public:
LIB_SEGMENT(LIB_COMPONENT * aParent); LIB_SEGMENT(LIB_COMPONENT * aParent);
LIB_SEGMENT( const LIB_SEGMENT& segment ); LIB_SEGMENT( const LIB_SEGMENT& aSegment );
~LIB_SEGMENT() { } ~LIB_SEGMENT() { }
virtual wxString GetClass() const virtual wxString GetClass() const
{ {
...@@ -1078,10 +1078,10 @@ public: ...@@ -1078,10 +1078,10 @@ public:
* Writes segment object out to a FILE in "*.lib" format. * Writes segment object out to a FILE in "*.lib" format.
* *
* @param aFile - The FILE to write to. * @param aFile - The FILE to write to.
* @return bool - true if success writing else false. * @return - true if success writing else false.
*/ */
virtual bool Save( FILE* aFile ); virtual bool Save( FILE* aFile );
virtual bool Load( char* line, wxString& errorMsg ); virtual bool Load( char* aLine, wxString& aErrorMsg );
/** /**
* Test if the given point is within the bounds of this object. * Test if the given point is within the bounds of this object.
...@@ -1110,7 +1110,7 @@ public: ...@@ -1110,7 +1110,7 @@ public:
int aColor, int aDrawMode, void* aData, int aColor, int aDrawMode, void* aData,
const int aTransformMatrix[2][2] ); const int aTransformMatrix[2][2] );
virtual void DisplayInfo( WinEDA_DrawFrame* frame ); virtual void DisplayInfo( WinEDA_DrawFrame* aFrame );
protected: protected:
virtual LIB_DRAW_ITEM* DoGenCopy(); virtual LIB_DRAW_ITEM* DoGenCopy();
...@@ -1124,17 +1124,17 @@ protected: ...@@ -1124,17 +1124,17 @@ protected:
* - Line segment horizontal (X) end position. * - Line segment horizontal (X) end position.
* - Line segment vertical (Y) end position. * - Line segment vertical (Y) end position.
*/ */
virtual int DoCompare( const LIB_DRAW_ITEM& other ) const; virtual int DoCompare( const LIB_DRAW_ITEM& aOther ) const;
virtual void DoOffset( const wxPoint& offset ); virtual void DoOffset( const wxPoint& aOffset );
virtual bool DoTestInside( EDA_Rect& rect ); virtual bool DoTestInside( EDA_Rect& aRect );
virtual void DoMove( const wxPoint& newPosition ); virtual void DoMove( const wxPoint& aPosition );
virtual wxPoint DoGetPosition( void ) { return m_Pos; } virtual wxPoint DoGetPosition() { return m_Pos; }
virtual void DoMirrorHorizontal( const wxPoint& center ); virtual void DoMirrorHorizontal( const wxPoint& aCenter );
virtual void DoPlot( PLOTTER* plotter, const wxPoint& offset, bool fill, virtual void DoPlot( PLOTTER* aPlotter, const wxPoint& aOffset, bool aFill,
const int transform[2][2] ); const int aTransform[2][2] );
virtual int DoGetWidth( void ) { return m_Width; } virtual int DoGetWidth() { return m_Width; }
virtual void DoSetWidth( int width ) { m_Width = width; } virtual void DoSetWidth( int aWidth ) { m_Width = aWidth; }
}; };
...@@ -1149,7 +1149,7 @@ public: ...@@ -1149,7 +1149,7 @@ public:
public: public:
LIB_POLYLINE(LIB_COMPONENT * aParent); LIB_POLYLINE(LIB_COMPONENT * aParent);
LIB_POLYLINE( const LIB_POLYLINE& polyline ); LIB_POLYLINE( const LIB_POLYLINE& aPolyline );
~LIB_POLYLINE() { } ~LIB_POLYLINE() { }
virtual wxString GetClass() const virtual wxString GetClass() const
...@@ -1162,12 +1162,12 @@ public: ...@@ -1162,12 +1162,12 @@ public:
* Write polyline object out to a FILE in "*.lib" format. * Write polyline object out to a FILE in "*.lib" format.
* *
* @param aFile - The FILE to write to. * @param aFile - The FILE to write to.
* @return bool - true if success writing else false. * @return - true if success writing else false.
*/ */
virtual bool Save( FILE* aFile ); virtual bool Save( FILE* aFile );
virtual bool Load( char* line, wxString& errorMsg ); virtual bool Load( char* aLine, wxString& aErrorMsg );
void AddPoint( const wxPoint& point ); void AddPoint( const wxPoint& aPoint );
/** /**
* @return the number of corners * @return the number of corners
...@@ -1178,7 +1178,7 @@ public: ...@@ -1178,7 +1178,7 @@ public:
* Test if the given point is within the bounds of this object. * Test if the given point is within the bounds of this object.
* *
* @param aRefPos - A wxPoint to test * @param aRefPos - A wxPoint to test
* @return bool - true if a hit, else false * @return - true if a hit, else false
*/ */
virtual bool HitTest( const wxPoint& aRefPos ); virtual bool HitTest( const wxPoint& aRefPos );
...@@ -1205,7 +1205,7 @@ public: ...@@ -1205,7 +1205,7 @@ public:
int aColor, int aDrawMode, void* aData, int aColor, int aDrawMode, void* aData,
const int aTransformMatrix[2][2] ); const int aTransformMatrix[2][2] );
virtual void DisplayInfo( WinEDA_DrawFrame* frame ); virtual void DisplayInfo( WinEDA_DrawFrame* aFrame );
protected: protected:
virtual LIB_DRAW_ITEM* DoGenCopy(); virtual LIB_DRAW_ITEM* DoGenCopy();
...@@ -1217,19 +1217,20 @@ protected: ...@@ -1217,19 +1217,20 @@ protected:
* - Line segment point horizontal (X) position. * - Line segment point horizontal (X) position.
* - Line segment point vertical (Y) position. * - Line segment point vertical (Y) position.
*/ */
virtual int DoCompare( const LIB_DRAW_ITEM& other ) const; virtual int DoCompare( const LIB_DRAW_ITEM& aOther ) const;
virtual void DoOffset( const wxPoint& offset ); virtual void DoOffset( const wxPoint& aOffset );
virtual bool DoTestInside( EDA_Rect& rect ); virtual bool DoTestInside( EDA_Rect& aRect );
virtual void DoMove( const wxPoint& newPosition ); virtual void DoMove( const wxPoint& aPosition );
virtual wxPoint DoGetPosition( void ) { return m_PolyPoints[0]; } virtual wxPoint DoGetPosition() { return m_PolyPoints[0]; }
virtual void DoMirrorHorizontal( const wxPoint& center ); virtual void DoMirrorHorizontal( const wxPoint& aCenter );
virtual void DoPlot( PLOTTER* plotter, const wxPoint& offset, bool fill, virtual void DoPlot( PLOTTER* aPlotter, const wxPoint& aOffset, bool aFill,
const int transform[2][2] ); const int aTransform[2][2] );
virtual int DoGetWidth( void ) { return m_Width; } virtual int DoGetWidth() { return m_Width; }
virtual void DoSetWidth( int width ) { m_Width = width; } virtual void DoSetWidth( int aWidth ) { m_Width = aWidth; }
}; };
/**********************************************************/ /**********************************************************/
/* Graphic Body Item: Bezier Curve (set of lines) */ /* Graphic Body Item: Bezier Curve (set of lines) */
/**********************************************************/ /**********************************************************/
...@@ -1242,7 +1243,7 @@ public: ...@@ -1242,7 +1243,7 @@ public:
public: public:
LIB_BEZIER( LIB_COMPONENT * aParent ); LIB_BEZIER( LIB_COMPONENT * aParent );
LIB_BEZIER( const LIB_BEZIER& bezier ); LIB_BEZIER( const LIB_BEZIER& aBezier );
~LIB_BEZIER() { } ~LIB_BEZIER() { }
virtual wxString GetClass() const virtual wxString GetClass() const
...@@ -1255,12 +1256,12 @@ public: ...@@ -1255,12 +1256,12 @@ public:
* Write bezier curve object out to a FILE in "*.lib" format. * Write bezier curve object out to a FILE in "*.lib" format.
* *
* @param aFile - The FILE to write to. * @param aFile - The FILE to write to.
* @return bool - true if success writing else false. * @return true if success writing else false.
*/ */
virtual bool Save( FILE* aFile ); virtual bool Save( FILE* aFile );
virtual bool Load( char* line, wxString& errorMsg ); virtual bool Load( char* aLine, wxString& aErrorMsg );
void AddPoint( const wxPoint& point ); void AddPoint( const wxPoint& aPoint );
/** /**
* @return the number of corners * @return the number of corners
...@@ -1271,7 +1272,7 @@ public: ...@@ -1271,7 +1272,7 @@ public:
* Test if the given point is within the bounds of this object. * Test if the given point is within the bounds of this object.
* *
* @param aRefPos - A wxPoint to test * @param aRefPos - A wxPoint to test
* @return bool - true if a hit, else false * @return true if a hit, else false
*/ */
virtual bool HitTest( const wxPoint& aRefPos ); virtual bool HitTest( const wxPoint& aRefPos );
...@@ -1298,7 +1299,7 @@ public: ...@@ -1298,7 +1299,7 @@ public:
int aColor, int aDrawMode, void* aData, int aColor, int aDrawMode, void* aData,
const int aTransformMatrix[2][2] ); const int aTransformMatrix[2][2] );
virtual void DisplayInfo( WinEDA_DrawFrame* frame ); virtual void DisplayInfo( WinEDA_DrawFrame* aFrame );
protected: protected:
virtual LIB_DRAW_ITEM* DoGenCopy(); virtual LIB_DRAW_ITEM* DoGenCopy();
...@@ -1310,17 +1311,17 @@ protected: ...@@ -1310,17 +1311,17 @@ protected:
* - Bezier point horizontal (X) point position. * - Bezier point horizontal (X) point position.
* - Bezier point vertical (Y) point position. * - Bezier point vertical (Y) point position.
*/ */
virtual int DoCompare( const LIB_DRAW_ITEM& other ) const; virtual int DoCompare( const LIB_DRAW_ITEM& aOther ) const;
virtual void DoOffset( const wxPoint& offset ); virtual void DoOffset( const wxPoint& aOffset );
virtual bool DoTestInside( EDA_Rect& rect ); virtual bool DoTestInside( EDA_Rect& aRect );
virtual void DoMove( const wxPoint& newPosition ); virtual void DoMove( const wxPoint& aPosition );
virtual wxPoint DoGetPosition( void ) { return m_PolyPoints[0]; } virtual wxPoint DoGetPosition() { return m_PolyPoints[0]; }
virtual void DoMirrorHorizontal( const wxPoint& center ); virtual void DoMirrorHorizontal( const wxPoint& aCenter );
virtual void DoPlot( PLOTTER* plotter, const wxPoint& offset, bool fill, virtual void DoPlot( PLOTTER* aPlotter, const wxPoint& aOffset, bool aFill,
const int transform[2][2] ); const int aTransform[2][2] );
virtual int DoGetWidth( void ) { return m_Width; } virtual int DoGetWidth() { return m_Width; }
virtual void DoSetWidth( int width ) { m_Width = width; } virtual void DoSetWidth( int aWidth ) { m_Width = aWidth; }
}; };
#endif // CLASSES_BODY_ITEMS_H #endif // CLASSES_BODY_ITEMS_H
...@@ -82,9 +82,9 @@ void DisplayCmpDoc( wxString& Name ) ...@@ -82,9 +82,9 @@ void DisplayCmpDoc( wxString& Name )
return; return;
wxLogDebug( wxT( "Selected component <%s>, m_Doc: <%s>, m_KeyWord: <%s>." ), wxLogDebug( wxT( "Selected component <%s>, m_Doc: <%s>, m_KeyWord: <%s>." ),
GetChars( Name ), GetChars( CmpEntry->m_Doc ), GetChars( Name ), GetChars( CmpEntry->GetDescription() ),
GetChars( CmpEntry->m_KeyWord ) ); GetChars( CmpEntry->GetKeyWords() ) );
Name = wxT( "Description: " ) + CmpEntry->m_Doc; Name = wxT( "Description: " ) + CmpEntry->GetDescription();
Name += wxT( "\nKey Words: " ) + CmpEntry->m_KeyWord; Name += wxT( "\nKey Words: " ) + CmpEntry->GetKeyWords();
} }
...@@ -114,10 +114,10 @@ void WinEDA_CreateCmpDialog::SetComponentData( LIB_COMPONENT & component ) ...@@ -114,10 +114,10 @@ void WinEDA_CreateCmpDialog::SetComponentData( LIB_COMPONENT & component )
else else
component.m_TextInside = m_SetSkew->GetValue(); component.m_TextInside = m_SetSkew->GetValue();
if ( m_IsPowerSymbol->GetValue() == TRUE) if ( m_IsPowerSymbol->GetValue() == TRUE )
component.m_Options = ENTRY_POWER; component.SetPower();
else else
component.m_Options = ENTRY_NORMAL; component.SetNormal();
/* Set the option "Units locked". /* Set the option "Units locked".
Obviously, cannot be TRUE if there is only one part */ Obviously, cannot be TRUE if there is only one part */
......
...@@ -267,7 +267,7 @@ void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnOKButtonClick( wxCommandEvent& event ...@@ -267,7 +267,7 @@ void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnOKButtonClick( wxCommandEvent& event
LIB_COMPONENT* entry = LIB_COMPONENT* entry =
CMP_LIBRARY::FindLibraryComponent( m_Cmp->m_ChipName ); CMP_LIBRARY::FindLibraryComponent( m_Cmp->m_ChipName );
if( entry && entry->m_Options == ENTRY_POWER ) if( entry && entry->isPower() )
m_FieldsBuf[VALUE].m_Text = m_Cmp->m_ChipName; m_FieldsBuf[VALUE].m_Text = m_Cmp->m_ChipName;
// copy all the fields back, and change the length of m_Fields. // copy all the fields back, and change the length of m_Fields.
...@@ -527,7 +527,7 @@ void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::copySelectedFieldToPanel() ...@@ -527,7 +527,7 @@ void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::copySelectedFieldToPanel()
// For power symbols, the value is NOR editable, because value and pin // For power symbols, the value is NOR editable, because value and pin
// name must be same and can be edited only in library editor // name must be same and can be edited only in library editor
if( fieldNdx == VALUE && m_LibEntry && m_LibEntry->m_Options == ENTRY_POWER ) if( fieldNdx == VALUE && m_LibEntry && m_LibEntry->isPower() )
fieldValueTextCtrl->Enable( false ); fieldValueTextCtrl->Enable( false );
else else
fieldValueTextCtrl->Enable( true ); fieldValueTextCtrl->Enable( true );
......
#include "dialog_sch_sheet_props.h"
DIALOG_SCH_SHEET_PROPS::DIALOG_SCH_SHEET_PROPS( wxWindow* parent ) :
DIALOG_SCH_SHEET_PROPS_BASE( parent )
{
m_textFileName->SetFocus();
}
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<wxFormBuilder_Project>
<FileVersion major="1" minor="9" />
<object class="Project" expanded="1">
<property name="class_decoration"></property>
<property name="code_generation">C++</property>
<property name="disconnect_events">1</property>
<property name="encoding">UTF-8</property>
<property name="event_generation">table</property>
<property name="file">dialog_sch_sheet_props_base</property>
<property name="first_id">1000</property>
<property name="help_provider">none</property>
<property name="internationalize">1</property>
<property name="name">dialog_sch_sheet_props</property>
<property name="namespace"></property>
<property name="path">.</property>
<property name="precompiled_header"></property>
<property name="relative_path">1</property>
<property name="use_enum">1</property>
<property name="use_microsoft_bom">0</property>
<object class="Dialog" expanded="1">
<property name="bg"></property>
<property name="center">wxBOTH</property>
<property name="context_help"></property>
<property name="enabled">1</property>
<property name="extra_style"></property>
<property name="fg"></property>
<property name="font"></property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="maximum_size"></property>
<property name="minimum_size"></property>
<property name="name">DIALOG_SCH_SHEET_PROPS_BASE</property>
<property name="pos"></property>
<property name="size"></property>
<property name="style">wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property>
<property name="subclass"></property>
<property name="title">Schematic Sheet Properties</property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnActivate"></event>
<event name="OnActivateApp"></event>
<event name="OnChar"></event>
<event name="OnClose"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnHibernate"></event>
<event name="OnIconize"></event>
<event name="OnIdle"></event>
<event name="OnInitDialog"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
<object class="wxBoxSizer" expanded="1">
<property name="minimum_size"></property>
<property name="name">mainSizer</property>
<property name="orient">wxVERTICAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<property name="border">12</property>
<property name="flag">wxALL|wxEXPAND</property>
<property name="proportion">1</property>
<object class="wxFlexGridSizer" expanded="1">
<property name="cols">6</property>
<property name="flexible_direction">wxBOTH</property>
<property name="growablecols">1</property>
<property name="growablerows"></property>
<property name="hgap">0</property>
<property name="minimum_size"></property>
<property name="name">fgSizer1</property>
<property name="non_flexible_grow_mode">wxFLEX_GROWMODE_SPECIFIED</property>
<property name="permission">none</property>
<property name="rows">2</property>
<property name="vgap">0</property>
<object class="sizeritem" expanded="1">
<property name="border">3</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxALL</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<property name="bg"></property>
<property name="context_help"></property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="font"></property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">&amp;File name:</property>
<property name="maximum_size"></property>
<property name="minimum_size"></property>
<property name="name">m_staticText1</property>
<property name="permission">protected</property>
<property name="pos"></property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass"></property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="wrap">-1</property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">3</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND</property>
<property name="proportion">5</property>
<object class="wxTextCtrl" expanded="1">
<property name="bg"></property>
<property name="context_help"></property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="font"></property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="maximum_size"></property>
<property name="maxlength">0</property>
<property name="minimum_size"></property>
<property name="name">m_textFileName</property>
<property name="permission">protected</property>
<property name="pos"></property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass"></property>
<property name="tooltip"></property>
<property name="value"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnText"></event>
<event name="OnTextEnter"></event>
<event name="OnTextMaxLen"></event>
<event name="OnTextURL"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">3</property>
<property name="flag">wxALIGN_CENTER_HORIZONTAL|wxALL</property>
<property name="proportion">1</property>
<object class="spacer" expanded="1">
<property name="height">0</property>
<property name="permission">protected</property>
<property name="width">0</property>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">3</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxALL</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<property name="bg"></property>
<property name="context_help"></property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="font"></property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Te&amp;xt size:</property>
<property name="maximum_size"></property>
<property name="minimum_size"></property>
<property name="name">m_staticText2</property>
<property name="permission">protected</property>
<property name="pos"></property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass"></property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="wrap">-1</property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">3</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxALL</property>
<property name="proportion">0</property>
<object class="wxTextCtrl" expanded="1">
<property name="bg"></property>
<property name="context_help"></property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="font"></property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="maximum_size"></property>
<property name="maxlength">0</property>
<property name="minimum_size"></property>
<property name="name">m_textFileNameSize</property>
<property name="permission">protected</property>
<property name="pos"></property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass"></property>
<property name="tooltip"></property>
<property name="value"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnText"></event>
<event name="OnTextEnter"></event>
<event name="OnTextMaxLen"></event>
<event name="OnTextURL"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">3</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxALL</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<property name="bg"></property>
<property name="context_help"></property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="font"></property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">units</property>
<property name="maximum_size"></property>
<property name="minimum_size"></property>
<property name="name">m_staticFileNameSizeUnits</property>
<property name="permission">protected</property>
<property name="pos"></property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass"></property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="wrap">-1</property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">3</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxALL</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<property name="bg"></property>
<property name="context_help"></property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="font"></property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">&amp;Sheet name:</property>
<property name="maximum_size"></property>
<property name="minimum_size"></property>
<property name="name">m_staticText4</property>
<property name="permission">protected</property>
<property name="pos"></property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass"></property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="wrap">-1</property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">3</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND</property>
<property name="proportion">5</property>
<object class="wxTextCtrl" expanded="1">
<property name="bg"></property>
<property name="context_help"></property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="font"></property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="maximum_size"></property>
<property name="maxlength">0</property>
<property name="minimum_size"></property>
<property name="name">m_textSheetName</property>
<property name="permission">protected</property>
<property name="pos"></property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass"></property>
<property name="tooltip"></property>
<property name="value"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnText"></event>
<event name="OnTextEnter"></event>
<event name="OnTextMaxLen"></event>
<event name="OnTextURL"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">3</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxALL</property>
<property name="proportion">1</property>
<object class="spacer" expanded="1">
<property name="height">0</property>
<property name="permission">protected</property>
<property name="width">0</property>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">3</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxALL</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<property name="bg"></property>
<property name="context_help"></property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="font"></property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">&amp;Text size:</property>
<property name="maximum_size"></property>
<property name="minimum_size"></property>
<property name="name">m_staticText5</property>
<property name="permission">protected</property>
<property name="pos"></property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass"></property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="wrap">-1</property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">3</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxALL</property>
<property name="proportion">0</property>
<object class="wxTextCtrl" expanded="1">
<property name="bg"></property>
<property name="context_help"></property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="font"></property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="maximum_size"></property>
<property name="maxlength">0</property>
<property name="minimum_size"></property>
<property name="name">m_textSheetNameSize</property>
<property name="permission">protected</property>
<property name="pos"></property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass"></property>
<property name="tooltip"></property>
<property name="value"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnText"></event>
<event name="OnTextEnter"></event>
<event name="OnTextMaxLen"></event>
<event name="OnTextURL"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">3</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxALL</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<property name="bg"></property>
<property name="context_help"></property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="font"></property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">units</property>
<property name="maximum_size"></property>
<property name="minimum_size"></property>
<property name="name">m_staticSheetNameSizeUnits</property>
<property name="permission">protected</property>
<property name="pos"></property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass"></property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="wrap">-1</property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALL|wxEXPAND</property>
<property name="proportion">0</property>
<object class="spacer" expanded="1">
<property name="height">0</property>
<property name="permission">protected</property>
<property name="width">0</property>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">12</property>
<property name="flag">wxALL|wxEXPAND</property>
<property name="proportion">0</property>
<object class="wxStdDialogButtonSizer" expanded="1">
<property name="Apply">0</property>
<property name="Cancel">1</property>
<property name="ContextHelp">0</property>
<property name="Help">0</property>
<property name="No">0</property>
<property name="OK">1</property>
<property name="Save">0</property>
<property name="Yes">0</property>
<property name="minimum_size"></property>
<property name="name">m_sdbSizer1</property>
<property name="permission">protected</property>
<event name="OnApplyButtonClick"></event>
<event name="OnCancelButtonClick"></event>
<event name="OnContextHelpButtonClick"></event>
<event name="OnHelpButtonClick"></event>
<event name="OnNoButtonClick"></event>
<event name="OnOKButtonClick"></event>
<event name="OnSaveButtonClick"></event>
<event name="OnYesButtonClick"></event>
</object>
</object>
</object>
</object>
</object>
</wxFormBuilder_Project>
#ifndef __dialog_sch_sheet_props__
#define __dialog_sch_sheet_props__
/**
* @file
* Subclass of DIALOG_SCH_SHEET_PROPS_BASE, which is generated by wxFormBuilder.
*/
#include "dialog_sch_sheet_props_base.h"
/** Implementing DIALOG_SCH_SHEET_PROPS_BASE */
class DIALOG_SCH_SHEET_PROPS : public DIALOG_SCH_SHEET_PROPS_BASE
{
public:
/** Constructor */
DIALOG_SCH_SHEET_PROPS( wxWindow* parent );
void SetFileName( const wxString& aFileName )
{
m_textFileName->SetValue( aFileName );
}
wxString GetFileName() { return m_textFileName->GetValue(); }
void SetSheetName( const wxString& aSheetName )
{
m_textSheetName->SetValue( aSheetName );
}
wxString GetSheetName() { return m_textSheetName->GetValue(); }
void SetFileNameTextSize( const wxString& aTextSize )
{
m_textFileNameSize->SetValue( aTextSize );
}
wxString GetFileNameTextSize() { return m_textFileNameSize->GetValue(); }
void SetSheetNameTextSize( const wxString& aTextSize )
{
m_textSheetNameSize->SetValue( aTextSize );
}
wxString GetSheetNameTextSize() { return m_textSheetNameSize->GetValue(); }
void SetFileNameTextSizeUnits(const wxString& aUnits)
{
m_staticFileNameSizeUnits->SetLabel( aUnits );
}
void SetSheetNameTextSizeUnits(const wxString& aUnits)
{
m_staticSheetNameSizeUnits->SetLabel( aUnits );
}
};
#endif // __dialog_sch_sheet_props__
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Apr 16 2008)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#include "dialog_sch_sheet_props_base.h"
///////////////////////////////////////////////////////////////////////////
DIALOG_SCH_SHEET_PROPS_BASE::DIALOG_SCH_SHEET_PROPS_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
{
this->SetSizeHints( wxDefaultSize, wxDefaultSize );
wxBoxSizer* mainSizer;
mainSizer = new wxBoxSizer( wxVERTICAL );
wxFlexGridSizer* fgSizer1;
fgSizer1 = new wxFlexGridSizer( 2, 6, 0, 0 );
fgSizer1->AddGrowableCol( 1 );
fgSizer1->SetFlexibleDirection( wxBOTH );
fgSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
m_staticText1 = new wxStaticText( this, wxID_ANY, _("&File name:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText1->Wrap( -1 );
fgSizer1->Add( m_staticText1, 0, wxALIGN_CENTER_VERTICAL|wxALL, 3 );
m_textFileName = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
fgSizer1->Add( m_textFileName, 5, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 3 );
fgSizer1->Add( 0, 0, 1, wxALIGN_CENTER_HORIZONTAL|wxALL|wxEXPAND, 3 );
m_staticText2 = new wxStaticText( this, wxID_ANY, _("Te&xt size:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText2->Wrap( -1 );
fgSizer1->Add( m_staticText2, 0, wxALIGN_CENTER_VERTICAL|wxALL, 3 );
m_textFileNameSize = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
fgSizer1->Add( m_textFileNameSize, 0, wxALIGN_CENTER_VERTICAL|wxALL, 3 );
m_staticFileNameSizeUnits = new wxStaticText( this, wxID_ANY, _("units"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticFileNameSizeUnits->Wrap( -1 );
fgSizer1->Add( m_staticFileNameSizeUnits, 0, wxALIGN_CENTER_VERTICAL|wxALL, 3 );
m_staticText4 = new wxStaticText( this, wxID_ANY, _("&Sheet name:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText4->Wrap( -1 );
fgSizer1->Add( m_staticText4, 0, wxALIGN_CENTER_VERTICAL|wxALL, 3 );
m_textSheetName = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
fgSizer1->Add( m_textSheetName, 5, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 3 );
fgSizer1->Add( 0, 0, 1, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 3 );
m_staticText5 = new wxStaticText( this, wxID_ANY, _("&Text size:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText5->Wrap( -1 );
fgSizer1->Add( m_staticText5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 3 );
m_textSheetNameSize = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
fgSizer1->Add( m_textSheetNameSize, 0, wxALIGN_CENTER_VERTICAL|wxALL, 3 );
m_staticSheetNameSizeUnits = new wxStaticText( this, wxID_ANY, _("units"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticSheetNameSizeUnits->Wrap( -1 );
fgSizer1->Add( m_staticSheetNameSizeUnits, 0, wxALIGN_CENTER_VERTICAL|wxALL, 3 );
mainSizer->Add( fgSizer1, 1, wxALL|wxEXPAND, 12 );
mainSizer->Add( 0, 0, 0, wxALL|wxEXPAND, 5 );
m_sdbSizer1 = new wxStdDialogButtonSizer();
m_sdbSizer1OK = new wxButton( this, wxID_OK );
m_sdbSizer1->AddButton( m_sdbSizer1OK );
m_sdbSizer1Cancel = new wxButton( this, wxID_CANCEL );
m_sdbSizer1->AddButton( m_sdbSizer1Cancel );
m_sdbSizer1->Realize();
mainSizer->Add( m_sdbSizer1, 0, wxALL|wxEXPAND, 12 );
this->SetSizer( mainSizer );
this->Layout();
mainSizer->Fit( this );
this->Centre( wxBOTH );
}
DIALOG_SCH_SHEET_PROPS_BASE::~DIALOG_SCH_SHEET_PROPS_BASE()
{
}
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Apr 16 2008)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#ifndef __dialog_sch_sheet_props_base__
#define __dialog_sch_sheet_props_base__
#include <wx/intl.h>
#include <wx/string.h>
#include <wx/stattext.h>
#include <wx/gdicmn.h>
#include <wx/font.h>
#include <wx/colour.h>
#include <wx/settings.h>
#include <wx/textctrl.h>
#include <wx/sizer.h>
#include <wx/button.h>
#include <wx/dialog.h>
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
/// Class DIALOG_SCH_SHEET_PROPS_BASE
///////////////////////////////////////////////////////////////////////////////
class DIALOG_SCH_SHEET_PROPS_BASE : public wxDialog
{
private:
protected:
wxStaticText* m_staticText1;
wxTextCtrl* m_textFileName;
wxStaticText* m_staticText2;
wxTextCtrl* m_textFileNameSize;
wxStaticText* m_staticFileNameSizeUnits;
wxStaticText* m_staticText4;
wxTextCtrl* m_textSheetName;
wxStaticText* m_staticText5;
wxTextCtrl* m_textSheetNameSize;
wxStaticText* m_staticSheetNameSizeUnits;
wxStdDialogButtonSizer* m_sdbSizer1;
wxButton* m_sdbSizer1OK;
wxButton* m_sdbSizer1Cancel;
public:
DIALOG_SCH_SHEET_PROPS_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Schematic Sheet Properties"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
~DIALOG_SCH_SHEET_PROPS_BASE();
};
#endif //__dialog_sch_sheet_props_base__
...@@ -75,9 +75,9 @@ void DIALOG_EDIT_COMPONENT_IN_LIBRARY::InitPanelDoc() ...@@ -75,9 +75,9 @@ void DIALOG_EDIT_COMPONENT_IN_LIBRARY::InitPanelDoc()
return; return;
} }
m_Doc->SetValue( entry->m_Doc ); m_Doc->SetValue( entry->GetDescription() );
m_Keywords->SetValue( entry->m_KeyWord ); m_Keywords->SetValue( entry->GetKeyWords() );
m_Docfile->SetValue( entry->m_DocFile ); m_Docfile->SetValue( entry->GetDocFileName() );
} }
...@@ -109,7 +109,7 @@ void DIALOG_EDIT_COMPONENT_IN_LIBRARY::InitBasicPanel() ...@@ -109,7 +109,7 @@ void DIALOG_EDIT_COMPONENT_IN_LIBRARY::InitBasicPanel()
m_PinsNameInsideButt->SetValue( component->m_TextInside != 0 ); m_PinsNameInsideButt->SetValue( component->m_TextInside != 0 );
m_SelNumberOfUnits->SetValue( component->GetPartCount() ); m_SelNumberOfUnits->SetValue( component->GetPartCount() );
m_SetSkew->SetValue( component->m_TextInside ); m_SetSkew->SetValue( component->m_TextInside );
m_OptionPower->SetValue( component->m_Options == ENTRY_POWER ); m_OptionPower->SetValue( component->isPower() );
m_OptionPartsLocked->SetValue( component->m_UnitSelectionLocked ); m_OptionPartsLocked->SetValue( component->m_UnitSelectionLocked );
} }
...@@ -152,9 +152,9 @@ void DIALOG_EDIT_COMPONENT_IN_LIBRARY::OnOkClick( wxCommandEvent& event ) ...@@ -152,9 +152,9 @@ void DIALOG_EDIT_COMPONENT_IN_LIBRARY::OnOkClick( wxCommandEvent& event )
} }
else else
{ {
entry->m_Doc = m_Doc->GetValue(); entry->SetDescription( m_Doc->GetValue() );
entry->m_KeyWord = m_Keywords->GetValue(); entry->SetKeyWords( m_Keywords->GetValue() );
entry->m_DocFile = m_Docfile->GetValue(); entry->SetDocFileName( m_Docfile->GetValue() );
} }
if( m_PartAliasList->GetStrings() != component->m_AliasList ) if( m_PartAliasList->GetStrings() != component->m_AliasList )
...@@ -230,9 +230,9 @@ void DIALOG_EDIT_COMPONENT_IN_LIBRARY::OnOkClick( wxCommandEvent& event ) ...@@ -230,9 +230,9 @@ void DIALOG_EDIT_COMPONENT_IN_LIBRARY::OnOkClick( wxCommandEvent& event )
} }
if( m_OptionPower->GetValue() == true ) if( m_OptionPower->GetValue() == true )
component->m_Options = ENTRY_POWER; component->SetPower();
else else
component->m_Options = ENTRY_NORMAL; component->SetNormal();
/* Set the option "Units locked". /* Set the option "Units locked".
* Obviously, cannot be true if there is only one part */ * Obviously, cannot be true if there is only one part */
...@@ -257,9 +257,9 @@ void DIALOG_EDIT_COMPONENT_IN_LIBRARY::CopyDocToAlias( wxCommandEvent& WXUNUSED ...@@ -257,9 +257,9 @@ void DIALOG_EDIT_COMPONENT_IN_LIBRARY::CopyDocToAlias( wxCommandEvent& WXUNUSED
if( component == NULL || m_Parent->GetAliasName().IsEmpty() ) if( component == NULL || m_Parent->GetAliasName().IsEmpty() )
return; return;
m_Doc->SetValue( component->m_Doc ); m_Doc->SetValue( component->GetDescription() );
m_Docfile->SetValue( component->m_DocFile ); m_Docfile->SetValue( component->GetDocFileName() );
m_Keywords->SetValue( component->m_KeyWord ); m_Keywords->SetValue( component->GetKeyWords() );
} }
......
...@@ -102,7 +102,7 @@ void WinEDA_SchematicFrame::EditCmpFieldText( SCH_FIELD* Field, wxDC* DC ) ...@@ -102,7 +102,7 @@ void WinEDA_SchematicFrame::EditCmpFieldText( SCH_FIELD* Field, wxDC* DC )
{ {
Entry = CMP_LIBRARY::FindLibraryComponent( Cmp->m_ChipName ); Entry = CMP_LIBRARY::FindLibraryComponent( Cmp->m_ChipName );
if( Entry && (Entry->m_Options == ENTRY_POWER) ) if( Entry && Entry->isPower() )
{ {
DisplayInfoMessage( this, _( "Part is a POWER, value cannot be \ DisplayInfoMessage( this, _( "Part is a POWER, value cannot be \
modified!\nYou must create a new power" ) ); modified!\nYou must create a new power" ) );
......
...@@ -138,12 +138,12 @@ bool WinEDA_LibeditFrame::LoadOneLibraryPartAux( CMP_LIB_ENTRY* LibEntry, ...@@ -138,12 +138,12 @@ bool WinEDA_LibeditFrame::LoadOneLibraryPartAux( CMP_LIB_ENTRY* LibEntry,
cmpName = LibEntry->GetName(); cmpName = LibEntry->GetName();
m_aliasName.Empty(); m_aliasName.Empty();
if( LibEntry->Type != ROOT ) if( LibEntry->isAlias() )
{ {
LIB_ALIAS* alias = (LIB_ALIAS*) LibEntry; LIB_ALIAS* alias = (LIB_ALIAS*) LibEntry;
component = alias->GetComponent(); component = alias->GetComponent();
wxASSERT( component != NULL && component->Type == ROOT ); wxASSERT( component != NULL && component->isComponent() );
wxLogDebug( wxT( "\"<%s>\" is alias of \"<%s>\"" ), wxLogDebug( wxT( "\"<%s>\" is alias of \"<%s>\"" ),
GetChars( cmpName ), GetChars( cmpName ),
...@@ -326,7 +326,7 @@ void WinEDA_LibeditFrame::DisplayCmpDoc() ...@@ -326,7 +326,7 @@ void WinEDA_LibeditFrame::DisplayCmpDoc()
AppendMsgPanel( _( "Body" ), msg, GREEN, 8 ); AppendMsgPanel( _( "Body" ), msg, GREEN, 8 );
if( m_component->m_Options == ENTRY_POWER ) if( m_component->isPower() )
msg = _( "Power Symbol" ); msg = _( "Power Symbol" );
else else
msg = _( "Component" ); msg = _( "Component" );
...@@ -334,16 +334,16 @@ void WinEDA_LibeditFrame::DisplayCmpDoc() ...@@ -334,16 +334,16 @@ void WinEDA_LibeditFrame::DisplayCmpDoc()
AppendMsgPanel( _( "Type" ), msg, MAGENTA, 8 ); AppendMsgPanel( _( "Type" ), msg, MAGENTA, 8 );
if( alias != NULL ) if( alias != NULL )
msg = alias->m_Doc; msg = alias->GetDescription();
else else
msg = m_component->m_Doc; msg = m_component->GetDescription();
AppendMsgPanel( _( "Description" ), msg, CYAN, 8 ); AppendMsgPanel( _( "Description" ), msg, CYAN, 8 );
if( alias != NULL ) if( alias != NULL )
msg = alias->m_KeyWord; msg = alias->GetKeyWords();
else else
msg = m_component->m_KeyWord; msg = m_component->GetKeyWords();
AppendMsgPanel( _( "Key words" ), msg, DARKDARKGRAY ); AppendMsgPanel( _( "Key words" ), msg, DARKDARKGRAY );
} }
...@@ -542,8 +542,11 @@ created. Aborted" ) ); ...@@ -542,8 +542,11 @@ created. Aborted" ) );
component->m_TextInside = 1; component->m_TextInside = 1;
} }
else else
{
component->m_TextInside = 0; component->m_TextInside = 0;
component->m_Options = ( dlg.GetPowerSymbol() ) ? ENTRY_POWER : ENTRY_NORMAL; }
( dlg.GetPowerSymbol() ) ? component->SetPower() : component->SetNormal();
component->m_DrawPinNum = dlg.GetShowPinNumber(); component->m_DrawPinNum = dlg.GetShowPinNumber();
component->m_DrawPinName = dlg.GetShowPinName(); component->m_DrawPinName = dlg.GetShowPinName();
component->m_UnitSelectionLocked = dlg.GetLockItems(); component->m_UnitSelectionLocked = dlg.GetLockItems();
...@@ -612,7 +615,7 @@ void WinEDA_LibeditFrame::SaveOnePartInMemory() ...@@ -612,7 +615,7 @@ void WinEDA_LibeditFrame::SaveOnePartInMemory()
m_drawItem = m_lastDrawItem = NULL; m_drawItem = m_lastDrawItem = NULL;
wxASSERT( m_component->Type == ROOT ); wxASSERT( m_component->isComponent() );
if( oldComponent != NULL ) if( oldComponent != NULL )
Component = m_library->ReplaceComponent( oldComponent, m_component ); Component = m_library->ReplaceComponent( oldComponent, m_component );
......
...@@ -457,9 +457,9 @@ void WinEDA_LibeditFrame::OnUpdateViewDoc( wxUpdateUIEvent& event ) ...@@ -457,9 +457,9 @@ void WinEDA_LibeditFrame::OnUpdateViewDoc( wxUpdateUIEvent& event )
CMP_LIB_ENTRY* entry = m_library->FindEntry( m_aliasName ); CMP_LIB_ENTRY* entry = m_library->FindEntry( m_aliasName );
if( entry != NULL ) if( entry != NULL )
enable = !entry->m_DocFile.IsEmpty(); enable = !entry->GetDocFileName().IsEmpty();
} }
else if( !m_component->m_DocFile.IsEmpty() ) else if( !m_component->GetDocFileName().IsEmpty() )
{ {
enable = true; enable = true;
} }
...@@ -572,11 +572,11 @@ void WinEDA_LibeditFrame::OnViewEntryDoc( wxCommandEvent& event ) ...@@ -572,11 +572,11 @@ void WinEDA_LibeditFrame::OnViewEntryDoc( wxCommandEvent& event )
m_library->FindEntry( m_aliasName ); m_library->FindEntry( m_aliasName );
if( entry != NULL ) if( entry != NULL )
fileName = entry->m_DocFile; fileName = entry->GetDocFileName();
} }
else else
{ {
fileName = m_component->m_DocFile; fileName = m_component->GetDocFileName();
} }
if( !fileName.IsEmpty() ) if( !fileName.IsEmpty() )
......
...@@ -255,7 +255,7 @@ void AddMenusForComponent( wxMenu* PopMenu, SCH_COMPONENT* Component ) ...@@ -255,7 +255,7 @@ void AddMenusForComponent( wxMenu* PopMenu, SCH_COMPONENT* Component )
if( libEntry ) if( libEntry )
{ {
if( libEntry->Type == ALIAS ) if( libEntry->isAlias() )
libComponent = ( (LIB_ALIAS*) libEntry )->GetComponent(); libComponent = ( (LIB_ALIAS*) libEntry )->GetComponent();
else else
libComponent = (LIB_COMPONENT*) libEntry; libComponent = (LIB_COMPONENT*) libEntry;
...@@ -300,7 +300,7 @@ void AddMenusForComponent( wxMenu* PopMenu, SCH_COMPONENT* Component ) ...@@ -300,7 +300,7 @@ void AddMenusForComponent( wxMenu* PopMenu, SCH_COMPONENT* Component )
ADD_MENUITEM( editmenu, ID_POPUP_SCH_EDIT_CMP, msg, ADD_MENUITEM( editmenu, ID_POPUP_SCH_EDIT_CMP, msg,
edit_component_xpm ); edit_component_xpm );
if( libEntry && libEntry->m_Options != ENTRY_POWER ) if( libEntry && libEntry->isNormal() )
{ {
msg = AddHotkeyName( _( "Value " ), s_Schematic_Hokeys_Descr, msg = AddHotkeyName( _( "Value " ), s_Schematic_Hokeys_Descr,
HK_EDIT_COMPONENT_VALUE ); HK_EDIT_COMPONENT_VALUE );
...@@ -348,7 +348,7 @@ void AddMenusForComponent( wxMenu* PopMenu, SCH_COMPONENT* Component ) ...@@ -348,7 +348,7 @@ void AddMenusForComponent( wxMenu* PopMenu, SCH_COMPONENT* Component )
_( "Delete Component" ), delete_xpm ); _( "Delete Component" ), delete_xpm );
} }
if( libEntry && !libEntry->m_DocFile.IsEmpty() ) if( libEntry && !libEntry->GetDocFileName().IsEmpty() )
ADD_MENUITEM( PopMenu, ID_POPUP_SCH_DISPLAYDOC_CMP, _( "Doc" ), ADD_MENUITEM( PopMenu, ID_POPUP_SCH_DISPLAYDOC_CMP, _( "Doc" ),
datasheet_xpm ); datasheet_xpm );
} }
......
...@@ -379,7 +379,8 @@ void WinEDA_SchematicFrame::Process_Special_Functions( wxCommandEvent& event ) ...@@ -379,7 +379,8 @@ void WinEDA_SchematicFrame::Process_Special_Functions( wxCommandEvent& event )
break; break;
case ID_POPUP_SCH_EDIT_SHEET: case ID_POPUP_SCH_EDIT_SHEET:
EditSheet( (SCH_SHEET*) screen->GetCurItem(), &dc ); if( EditSheet( (SCH_SHEET*) screen->GetCurItem(), &dc ) )
screen->SetModify();
break; break;
case ID_POPUP_IMPORT_GLABEL: case ID_POPUP_IMPORT_GLABEL:
...@@ -645,10 +646,10 @@ void WinEDA_SchematicFrame::Process_Special_Functions( wxCommandEvent& event ) ...@@ -645,10 +646,10 @@ void WinEDA_SchematicFrame::Process_Special_Functions( wxCommandEvent& event )
LibEntry = CMP_LIBRARY::FindLibraryEntry( LibEntry = CMP_LIBRARY::FindLibraryEntry(
( (SCH_COMPONENT*) screen->GetCurItem() )->m_ChipName ); ( (SCH_COMPONENT*) screen->GetCurItem() )->m_ChipName );
if( LibEntry && LibEntry->m_DocFile != wxEmptyString ) if( LibEntry && LibEntry->GetDocFileName() != wxEmptyString )
{ {
GetAssociatedDocument( this, LibEntry->m_DocFile , GetAssociatedDocument( this, LibEntry->GetDocFileName(),
& wxGetApp().GetLibraryPathList() ); &wxGetApp().GetLibraryPathList() );
} }
} }
break; break;
......
...@@ -69,6 +69,9 @@ int DisplayComponentsNamesInLib( WinEDA_DrawFrame* frame, ...@@ -69,6 +69,9 @@ int DisplayComponentsNamesInLib( WinEDA_DrawFrame* frame,
ListNames = (const wxChar**) MyZMalloc( ( nameList.GetCount() + 1 ) * ListNames = (const wxChar**) MyZMalloc( ( nameList.GetCount() + 1 ) *
sizeof( wxChar* ) ); sizeof( wxChar* ) );
if( ListNames == NULL )
return 0;
for( i = 0; i < nameList.GetCount(); i++ ) for( i = 0; i < nameList.GetCount(); i++ )
ListNames[i] = (const wxChar*) nameList[i]; ListNames[i] = (const wxChar*) nameList[i];
......
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// Name: sheet.cpp // Name: sheet.cpp
// Purpose: // Purpose:
// Author: jean-pierre Charras // Author: jean-pierre Charras
// Modified by: // Modified by: Wayne Stambaugh
// Created: 08/02/2006 18:37:02 // Created: 08/02/2006 18:37:02
// RCS-ID: // RCS-ID:
// Copyright: License GNU // Copyright: License GNU
// License: // License:
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// Generated by DialogBlocks (unregistered), 08/02/2006 18:37:02
#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma implementation "sheet.h"
#endif
////@begin includes
////@end includes
#include "fctsys.h" #include "fctsys.h"
#include "gr_basic.h" #include "gr_basic.h"
#include "common.h" #include "common.h"
...@@ -30,407 +20,240 @@ ...@@ -30,407 +20,240 @@
#include "general.h" #include "general.h"
#include "protos.h" #include "protos.h"
#include "dialog_sch_sheet_props.h"
static void ExitSheet( WinEDA_DrawPanel* Panel, wxDC* DC );
static void DeplaceSheet( WinEDA_DrawPanel* panel, wxDC* DC, bool erase );
static int s_SheetMindx, s_SheetMindy; static int s_PreviousSheetWidth;
static int s_PreviousSheetHeight;
static wxPoint s_OldPos; /* Former position for cancellation or move ReSize */ static wxPoint s_OldPos; /* Former position for cancellation or move ReSize */
#include "sheet.h" /* Routine to edit the SheetName and the FileName for the sheet "Sheet" */
bool WinEDA_SchematicFrame::EditSheet( SCH_SHEET* aSheet, wxDC* aDC )
////@begin XPM images
////@end XPM images
/*!
* WinEDA_SheetPropertiesFrame type definition
*/
IMPLEMENT_DYNAMIC_CLASS( WinEDA_SheetPropertiesFrame, wxDialog )
/*!
* WinEDA_SheetPropertiesFrame event table definition
*/
BEGIN_EVENT_TABLE( WinEDA_SheetPropertiesFrame, wxDialog )
////@begin WinEDA_SheetPropertiesFrame event table entries
EVT_BUTTON( wxID_CANCEL, WinEDA_SheetPropertiesFrame::OnCancelClick )
EVT_BUTTON( wxID_OK, WinEDA_SheetPropertiesFrame::OnOkClick )
////@end WinEDA_SheetPropertiesFrame event table entries
END_EVENT_TABLE()
/*!
* WinEDA_SheetPropertiesFrame constructors
*/
WinEDA_SheetPropertiesFrame::WinEDA_SheetPropertiesFrame()
{ {
} bool edit = true;
if( aSheet == NULL )
return false;
WinEDA_SheetPropertiesFrame::WinEDA_SheetPropertiesFrame( /* Get the new texts */
WinEDA_SchematicFrame* parent, RedrawOneStruct( DrawPanel, aDC, aSheet, g_XorMode );
SCH_SHEET* currentsheet,
wxWindowID id, DrawPanel->m_IgnoreMouseEvents = true;
const wxString& caption,
const wxPoint& pos, DIALOG_SCH_SHEET_PROPS dlg( this );
const wxSize& size,
long style ) wxString units = GetUnitsLabel( g_UnitMetric );
{ dlg.SetFileName( aSheet->GetFileName() );
m_Parent = parent; dlg.SetFileNameTextSize( ReturnStringFromValue( g_UnitMetric,
m_CurrentSheet = currentsheet; aSheet->m_FileNameSize,
Create( parent, id, caption, pos, size, style ); m_InternalUnits ) );
dlg.SetFileNameTextSizeUnits( units );
AddUnitSymbol( *m_SheetNameTextSize ); dlg.SetSheetName( aSheet->m_SheetName );
PutValueInLocalUnits( *m_SheetNameSize, m_CurrentSheet->m_SheetNameSize, dlg.SetSheetNameTextSize( ReturnStringFromValue( g_UnitMetric,
m_Parent->m_InternalUnits ); aSheet->m_SheetNameSize,
m_InternalUnits ) );
dlg.SetSheetNameTextSizeUnits( units );
/* This ugly hack fixes a bug in wxWidgets 2.8.7 and likely earlier
* versions for the flex grid sizer in wxGTK that prevents the last
* column from being sized correctly. It doesn't cause any problems
* on win32 so it doesn't need to wrapped in ugly #ifdef __WXGTK__
* #endif.
*/
dlg.Layout();
dlg.Fit();
dlg.SetMinSize( dlg.GetSize() );
AddUnitSymbol( *m_FileNameTextSize ); if( dlg.ShowModal() == wxID_OK )
PutValueInLocalUnits( *m_FileNameSize, m_CurrentSheet->m_FileNameSize, {
m_Parent->m_InternalUnits ); wxFileName fileName;
} wxString msg;
fileName = dlg.GetFileName();
/*! if( !fileName.IsOk() )
* WinEDA_SheetPropertiesFrame creator {
*/ DisplayError( this, _( "File name is not valid! Aborted" ) );
edit = false;
}
else
{
fileName.SetExt( SchematicFileExtension );
/* m_CurrentSheet->m_AssociatedScreen must be a valid screen, and the
* sheet must have a valid associated filename,
* so we must call m_CurrentSheet->ChangeFileName to set a filename,
* AND always when a new sheet is created ( when
* m_CurrentSheet->m_AssociatedScreen is null ),
* to create or set an Associated Screen
*/
if( ( fileName.GetFullPath() != aSheet->GetFileName() )
|| ( aSheet->m_AssociatedScreen == NULL ) )
{
msg = _( "Changing the sheet file name can change all the schematic \
structures and cannot be undone.\nOk to continue renaming?" );
bool WinEDA_SheetPropertiesFrame::Create( wxWindow* parent, if( aSheet->m_AssociatedScreen == NULL || IsOK( NULL, msg ) )
wxWindowID id, {
const wxString& caption, // do not prompt on a new sheet. in fact, we should not allow a
const wxPoint& pos, // sheet to be created without a valid associated filename to be
const wxSize& size, // read from.
long style ) GetScreen()->ClearUndoRedoList();
{
////@begin WinEDA_SheetPropertiesFrame member initialisation // set filename and the associated screen
m_FileNameWin = NULL; aSheet->ChangeFileName( this, fileName.GetFullPath() );
m_SheetNameWin = NULL; }
m_FileNameTextSize = NULL; }
m_FileNameSize = NULL;
m_SheetNameTextSize = NULL; aSheet->m_FileNameSize = ReturnValueFromString( g_UnitMetric,
m_SheetNameSize = NULL; dlg.GetFileNameTextSize(),
m_btClose = NULL; m_InternalUnits );
////@end WinEDA_SheetPropertiesFrame member initialisation aSheet->m_SheetName = dlg.GetSheetName();
aSheet->m_SheetNameSize = ReturnValueFromString( g_UnitMetric,
////@begin WinEDA_SheetPropertiesFrame creation dlg.GetSheetNameTextSize(),
SetExtraStyle( wxWS_EX_BLOCK_EVENTS ); m_InternalUnits );
wxDialog::Create( parent, id, caption, pos, size, style );
if( aSheet->m_SheetName.IsEmpty() )
CreateControls(); {
if( GetSizer() ) aSheet->m_SheetName.Printf( wxT( "Sheet%8.8lX" ), GetTimeStamp() );
}
}
}
else
{ {
GetSizer()->SetSizeHints( this ); edit = false;
} }
Centre();
////@end WinEDA_SheetPropertiesFrame creation
return true;
}
/*!
* Control creation for WinEDA_SheetPropertiesFrame
*/
void WinEDA_SheetPropertiesFrame::CreateControls()
{
////@begin WinEDA_SheetPropertiesFrame content construction
// Generated by DialogBlocks, 24/04/2009 14:25:43 (unregistered)
WinEDA_SheetPropertiesFrame* itemDialog1 = this;
wxBoxSizer* itemBoxSizer2 = new wxBoxSizer( wxVERTICAL );
itemDialog1->SetSizer( itemBoxSizer2 );
wxBoxSizer* itemBoxSizer3 = new wxBoxSizer( wxHORIZONTAL );
itemBoxSizer2->Add( itemBoxSizer3, 0, wxGROW | wxALL, 5 );
wxBoxSizer* itemBoxSizer4 = new wxBoxSizer( wxVERTICAL );
itemBoxSizer3->Add( itemBoxSizer4, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 );
wxStaticText* itemStaticText5 = new wxStaticText( itemDialog1,
wxID_STATIC,
_( "Filename:" ),
wxDefaultPosition,
wxDefaultSize,
0 );
itemBoxSizer4->Add( itemStaticText5,
0,
wxALIGN_LEFT | wxLEFT | wxRIGHT | wxTOP |
wxADJUST_MINSIZE,
5 );
m_FileNameWin =
new wxTextCtrl( itemDialog1, ID_TEXTCTRL1, _T( "" ), wxDefaultPosition,
wxSize( 300, - 1 ), wxTE_PROCESS_ENTER );
itemBoxSizer4->Add( m_FileNameWin,
0,
wxALIGN_LEFT | wxLEFT | wxRIGHT | wxBOTTOM,
5 );
wxStaticText* itemStaticText7 = new wxStaticText( itemDialog1,
wxID_STATIC,
_( "Sheetname:" ),
wxDefaultPosition,
wxDefaultSize,
0 );
itemBoxSizer4->Add( itemStaticText7,
0,
wxALIGN_LEFT | wxLEFT | wxRIGHT | wxTOP |
wxADJUST_MINSIZE,
5 );
m_SheetNameWin =
new wxTextCtrl( itemDialog1, ID_TEXTCTRL, _T( "" ), wxDefaultPosition,
wxSize( 300, -1 ), 0 );
itemBoxSizer4->Add( m_SheetNameWin,
0,
wxALIGN_LEFT | wxLEFT | wxRIGHT | wxBOTTOM,
5 );
wxBoxSizer* itemBoxSizer9 = new wxBoxSizer( wxVERTICAL );
itemBoxSizer3->Add( itemBoxSizer9, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 );
m_FileNameTextSize = new wxStaticText( itemDialog1, wxID_STATIC,
_( "Size" ), wxDefaultPosition,
wxDefaultSize, 0 );
itemBoxSizer9->Add( m_FileNameTextSize,
0,
wxALIGN_LEFT | wxLEFT | wxRIGHT | wxTOP |
wxADJUST_MINSIZE,
5 );
m_FileNameSize = new wxTextCtrl( itemDialog1, ID_TEXTCTRL2, _T( "" ),
wxDefaultPosition, wxDefaultSize, 0 );
itemBoxSizer9->Add( m_FileNameSize,
0,
wxALIGN_LEFT | wxLEFT | wxRIGHT | wxBOTTOM,
5 );
m_SheetNameTextSize = new wxStaticText( itemDialog1, wxID_STATIC,
_( "Size" ), wxDefaultPosition,
wxDefaultSize, 0 );
itemBoxSizer9->Add( m_SheetNameTextSize,
0,
wxALIGN_LEFT | wxLEFT | wxRIGHT | wxTOP |
wxADJUST_MINSIZE,
5 );
m_SheetNameSize = new wxTextCtrl( itemDialog1, ID_TEXTCTRL3, _T( "" ),
wxDefaultPosition,
wxDefaultSize, 0 );
itemBoxSizer9->Add( m_SheetNameSize,
0,
wxALIGN_LEFT | wxLEFT | wxRIGHT | wxBOTTOM,
5 );
itemBoxSizer2->Add( 5, 5, 1, wxGROW | wxALL, 5 );
wxBoxSizer* itemBoxSizer15 = new wxBoxSizer( wxHORIZONTAL );
itemBoxSizer2->Add( itemBoxSizer15,
0,
wxALIGN_CENTER_HORIZONTAL | wxALL,
5 );
m_btClose = new wxButton( itemDialog1, wxID_CANCEL, _( "&Cancel" ),
wxDefaultPosition, wxDefaultSize, 0 );
itemBoxSizer15->Add( m_btClose, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 );
wxButton* itemButton17 = new wxButton( itemDialog1, wxID_OK,
_( "&OK" ), wxDefaultPosition,
wxDefaultSize, 0 );
itemButton17->SetDefault();
itemBoxSizer15->Add( itemButton17, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 );
// Set validators
m_SheetNameWin->SetValidator( wxTextValidator( wxFILTER_NONE,
&m_CurrentSheet->m_SheetName ) );
////@end WinEDA_SheetPropertiesFrame content construction
m_btClose->SetFocus();
m_FileNameWin->SetValue( m_CurrentSheet->GetFileName() );
}
/*!
* Should we show tooltips?
*/
bool WinEDA_SheetPropertiesFrame::ShowToolTips()
{
return true;
}
/*!
* Get bitmap resources
*/
wxBitmap WinEDA_SheetPropertiesFrame::GetBitmapResource( const wxString& name )
{
// Bitmap retrieval
////@begin WinEDA_SheetPropertiesFrame bitmap retrieval
wxUnusedVar( name );
return wxNullBitmap;
////@end WinEDA_SheetPropertiesFrame bitmap retrieval DrawPanel->MouseToCursorSchema();
} DrawPanel->m_IgnoreMouseEvents = false;
RedrawOneStruct( DrawPanel, aDC, aSheet, GR_DEFAULT_DRAWMODE );
/*! return edit;
* Get icon resources
*/
wxIcon WinEDA_SheetPropertiesFrame::GetIconResource( const wxString& name )
{
// Icon retrieval
////@begin WinEDA_SheetPropertiesFrame icon retrieval
wxUnusedVar( name );
return wxNullIcon;
////@end WinEDA_SheetPropertiesFrame icon retrieval
} }
/** Function SheetPropertiesAccept /* Move selected sheet with the cursor.
* Set the new sheets properties: * Callback function use by ManageCurseur.
* sheetname and filename (text and size)
*/ */
void WinEDA_SheetPropertiesFrame::SheetPropertiesAccept( wxCommandEvent& event ) static void MoveSheet( WinEDA_DrawPanel* aPanel, wxDC* aDC, bool aErase )
{ {
wxFileName fn; wxPoint moveVector;
wxString msg; SCH_SHEET_PIN* sheetLabel;
BASE_SCREEN* screen = aPanel->GetScreen();
SCH_SHEET* sheet = (SCH_SHEET*) screen->GetCurItem();
fn = m_FileNameWin->GetValue(); if( aErase )
RedrawOneStruct( aPanel, aDC, sheet, g_XorMode );
if( !fn.IsOk() ) if( sheet->m_Flags & IS_RESIZED )
{ {
DisplayError( this, _( "No Filename! Aborted" ) ); sheet->m_Size.x = MAX( s_PreviousSheetWidth, screen->m_Curseur.x - sheet->m_Pos.x );
EndModal( FALSE ); sheet->m_Size.y = MAX( s_PreviousSheetHeight, screen->m_Curseur.y - sheet->m_Pos.y );
return; sheetLabel = sheet->m_Label;
}
fn.SetExt( SchematicFileExtension );
/* m_CurrentSheet->m_AssociatedScreen must be a valide screen, and the while( sheetLabel )
* sheet must have a valid associated filename,
* so we must call m_CurrentSheet->ChangeFileName to set a filename,
* AND always when a new sheet is created ( when
* m_CurrentSheet->m_AssociatedScreen is null ),
* to create or set an Associated Screen
*/
if( ( fn.GetFullPath() != m_CurrentSheet->GetFileName() )
|| ( m_CurrentSheet->m_AssociatedScreen == NULL) )
{
msg = _( "Changing a Filename can change all the schematic \
structures and cannot be undone.\nOk to continue renaming?" );
if( m_CurrentSheet->m_AssociatedScreen == NULL || IsOK( NULL, msg ) )
{ {
// do not prompt on a new sheet. in fact, we should not allow a if( sheetLabel->m_Edge )
// sheet to be created without a valid associated filename to be sheetLabel->m_Pos.x = sheet->m_Pos.x + sheet->m_Size.x;
// read from. sheetLabel = sheetLabel->Next();
m_Parent->GetScreen()->ClearUndoRedoList();
// set filename and the associated screen
m_CurrentSheet->ChangeFileName( m_Parent, fn.GetFullPath() );
} }
} }
else /* Move Sheet */
msg = m_FileNameSize->GetValue();
m_CurrentSheet->m_FileNameSize =
ReturnValueFromString( g_UnitMetric,
msg, m_Parent->m_InternalUnits );
m_CurrentSheet->m_SheetName = m_SheetNameWin->GetValue();
msg = m_SheetNameSize->GetValue();
m_CurrentSheet->m_SheetNameSize =
ReturnValueFromString( g_UnitMetric,
msg, m_Parent->m_InternalUnits );
if( ( m_CurrentSheet->m_SheetName.IsEmpty() ) )
{ {
m_CurrentSheet->m_SheetName.Printf( wxT( "Sheet%8.8lX" ), moveVector = screen->m_Curseur - sheet->m_Pos;
GetTimeStamp() ); sheet->Move( moveVector );
} }
RedrawOneStruct( aPanel, aDC, sheet, g_XorMode );
EndModal( TRUE );
} }
/* Routine to edit the SheetName and the FileName for the sheet "Sheet" */ /* Complete sheet move. */
bool WinEDA_SchematicFrame::EditSheet( SCH_SHEET* Sheet, wxDC* DC ) static void ExitSheet( WinEDA_DrawPanel* aPanel, wxDC* aDC )
{ {
WinEDA_SheetPropertiesFrame* frame; SCH_SCREEN* screen = (SCH_SCREEN*) aPanel->GetScreen();
bool edit = TRUE; SCH_SHEET* sheet = (SCH_SHEET*) screen->GetCurItem();
if( Sheet == NULL )
return FALSE;
/* Get the new texts */ if( sheet == NULL )
RedrawOneStruct( DrawPanel, DC, Sheet, g_XorMode ); return;
DrawPanel->m_IgnoreMouseEvents = TRUE; if( sheet->m_Flags & IS_NEW )
frame = new WinEDA_SheetPropertiesFrame( this, Sheet ); {
edit = frame->ShowModal(); frame->Destroy(); RedrawOneStruct( aPanel, aDC, sheet, g_XorMode );
DrawPanel->MouseToCursorSchema(); SAFE_DELETE( sheet );
DrawPanel->m_IgnoreMouseEvents = FALSE; }
else if( sheet->m_Flags & IS_RESIZED )
{
/* Resize in progress, cancel move. */
RedrawOneStruct( aPanel, aDC, sheet, g_XorMode );
sheet->m_Size.x = s_OldPos.x;
sheet->m_Size.y = s_OldPos.y;
RedrawOneStruct( aPanel, aDC, sheet, GR_DEFAULT_DRAWMODE );
sheet->m_Flags = 0;
}
else if( sheet->m_Flags & IS_MOVED )
{
wxPoint curspos = screen->m_Curseur;
aPanel->GetScreen()->m_Curseur = s_OldPos;
MoveSheet( aPanel, aDC, true );
RedrawOneStruct( aPanel, aDC, sheet, GR_DEFAULT_DRAWMODE );
sheet->m_Flags = 0;
screen->m_Curseur = curspos;
}
else
{
sheet->m_Flags = 0;
}
RedrawOneStruct( DrawPanel, DC, Sheet, GR_DEFAULT_DRAWMODE ); screen->SetCurItem( NULL );
return edit; aPanel->ManageCurseur = NULL;
aPanel->ForceCloseManageCurseur = NULL;
} }
#define SHEET_MIN_WIDTH 500 #define SHEET_MIN_WIDTH 500
#define SHEET_MIN_HEIGHT 150 #define SHEET_MIN_HEIGHT 150
/* Create hierarchy sheet. */ /* Create hierarchy sheet. */
SCH_SHEET* WinEDA_SchematicFrame::CreateSheet( wxDC* DC ) SCH_SHEET* WinEDA_SchematicFrame::CreateSheet( wxDC* aDC )
{ {
g_ItemToRepeat = NULL; g_ItemToRepeat = NULL;
SCH_SHEET* Sheet = new SCH_SHEET( GetScreen()->m_Curseur ); SCH_SHEET* sheet = new SCH_SHEET( GetScreen()->m_Curseur );
Sheet->m_Flags = IS_NEW | IS_RESIZED; sheet->m_Flags = IS_NEW | IS_RESIZED;
Sheet->m_TimeStamp = GetTimeStamp(); sheet->m_TimeStamp = GetTimeStamp();
Sheet->SetParent( GetScreen() ); sheet->SetParent( GetScreen() );
Sheet->m_AssociatedScreen = NULL; sheet->m_AssociatedScreen = NULL;
s_SheetMindx = SHEET_MIN_WIDTH; s_PreviousSheetWidth = SHEET_MIN_WIDTH;
s_SheetMindy = SHEET_MIN_HEIGHT; s_PreviousSheetHeight = SHEET_MIN_HEIGHT;
//need to check if this is being added to the EEDrawList. // need to check if this is being added to the EEDrawList.
//also need to update the hierarchy, if we are adding // also need to update the hierarchy, if we are adding
// a sheet to a screen that already has multiple instances (!) // a sheet to a screen that already has multiple instances (!)
GetScreen()->SetCurItem( Sheet ); GetScreen()->SetCurItem( sheet );
DrawPanel->ManageCurseur = DeplaceSheet; DrawPanel->ManageCurseur = MoveSheet;
DrawPanel->ForceCloseManageCurseur = ExitSheet; DrawPanel->ForceCloseManageCurseur = ExitSheet;
DrawPanel->ManageCurseur( DrawPanel, DC, FALSE ); DrawPanel->ManageCurseur( DrawPanel, aDC, false );
return Sheet; return sheet;
} }
void WinEDA_SchematicFrame::ReSizeSheet( SCH_SHEET* Sheet, wxDC* DC ) void WinEDA_SchematicFrame::ReSizeSheet( SCH_SHEET* aSheet, wxDC* aDC )
{ {
SCH_SHEET_PIN* sheetlabel; SCH_SHEET_PIN* sheetLabel;
if( Sheet == NULL ) if( aSheet == NULL || aSheet->m_Flags & IS_NEW )
return;
if( Sheet->m_Flags & IS_NEW )
return; return;
if( Sheet->Type() != DRAW_SHEET_STRUCT_TYPE ) if( aSheet->Type() != DRAW_SHEET_STRUCT_TYPE )
{ {
DisplayError( this, DisplayError( this,
wxT( "WinEDA_SchematicFrame::ReSizeSheet: Bad SructType" ) ); wxT( "WinEDA_SchematicFrame::ReSizeSheet: Bad SructType" ) );
...@@ -438,142 +261,44 @@ void WinEDA_SchematicFrame::ReSizeSheet( SCH_SHEET* Sheet, wxDC* DC ) ...@@ -438,142 +261,44 @@ void WinEDA_SchematicFrame::ReSizeSheet( SCH_SHEET* Sheet, wxDC* DC )
} }
GetScreen()->SetModify(); GetScreen()->SetModify();
Sheet->m_Flags |= IS_RESIZED; aSheet->m_Flags |= IS_RESIZED;
s_OldPos.x = Sheet->m_Size.x; s_OldPos.x = aSheet->m_Size.x;
s_OldPos.y = Sheet->m_Size.y; s_OldPos.y = aSheet->m_Size.y;
s_SheetMindx = SHEET_MIN_WIDTH; s_PreviousSheetWidth = SHEET_MIN_WIDTH;
s_SheetMindy = SHEET_MIN_HEIGHT; s_PreviousSheetHeight = SHEET_MIN_HEIGHT;
sheetlabel = Sheet->m_Label; sheetLabel = aSheet->m_Label;
while( sheetlabel )
while( sheetLabel )
{ {
s_SheetMindx = MAX( s_SheetMindx, s_PreviousSheetWidth = MAX( s_PreviousSheetWidth,
(int) ( ( sheetlabel->GetLength() + 1 ) * (int) ( ( sheetLabel->GetLength() + 1 ) *
sheetlabel->m_Size.x ) ); sheetLabel->m_Size.x ) );
s_SheetMindy = MAX( s_SheetMindy, sheetlabel->m_Pos.y - Sheet->m_Pos.y ); s_PreviousSheetHeight = MAX( s_PreviousSheetHeight,
sheetlabel = sheetlabel->Next(); sheetLabel->m_Pos.y - aSheet->m_Pos.y );
sheetLabel = sheetLabel->Next();
} }
DrawPanel->ManageCurseur = DeplaceSheet; DrawPanel->ManageCurseur = MoveSheet;
DrawPanel->ForceCloseManageCurseur = ExitSheet; DrawPanel->ForceCloseManageCurseur = ExitSheet;
DrawPanel->ManageCurseur( DrawPanel, DC, TRUE ); DrawPanel->ManageCurseur( DrawPanel, aDC, true );
} }
void WinEDA_SchematicFrame::StartMoveSheet( SCH_SHEET* Sheet, wxDC* DC ) void WinEDA_SchematicFrame::StartMoveSheet( SCH_SHEET* aSheet, wxDC* aDC )
{ {
if( ( Sheet == NULL ) || ( Sheet->Type() != DRAW_SHEET_STRUCT_TYPE ) ) if( ( aSheet == NULL ) || ( aSheet->Type() != DRAW_SHEET_STRUCT_TYPE ) )
return; return;
DrawPanel->CursorOff( DC ); DrawPanel->CursorOff( aDC );
GetScreen()->m_Curseur = Sheet->m_Pos; GetScreen()->m_Curseur = aSheet->m_Pos;
DrawPanel->MouseToCursorSchema(); DrawPanel->MouseToCursorSchema();
s_OldPos = Sheet->m_Pos; s_OldPos = aSheet->m_Pos;
Sheet->m_Flags |= IS_MOVED; aSheet->m_Flags |= IS_MOVED;
DrawPanel->ManageCurseur = DeplaceSheet; DrawPanel->ManageCurseur = MoveSheet;
DrawPanel->ForceCloseManageCurseur = ExitSheet; DrawPanel->ForceCloseManageCurseur = ExitSheet;
DrawPanel->ManageCurseur( DrawPanel, DC, TRUE ); DrawPanel->ManageCurseur( DrawPanel, aDC, true );
DrawPanel->CursorOn( aDC );
DrawPanel->CursorOn( DC );
}
/* Move selected sheet with the cursor.
* Callback function use by ManageCurseur.
*/
static void DeplaceSheet( WinEDA_DrawPanel* panel, wxDC* DC, bool erase )
{
wxPoint move_vector;
SCH_SHEET_PIN* SheetLabel;
BASE_SCREEN* screen = panel->GetScreen();
SCH_SHEET* Sheet = (SCH_SHEET*) screen->GetCurItem();
if( erase )
RedrawOneStruct( panel, DC, Sheet, g_XorMode );
if( Sheet->m_Flags & IS_RESIZED )
{
Sheet->m_Size.x =
MAX( s_SheetMindx, screen->m_Curseur.x - Sheet->m_Pos.x );
Sheet->m_Size.y =
MAX( s_SheetMindy, screen->m_Curseur.y - Sheet->m_Pos.y );
SheetLabel = Sheet->m_Label;
while( SheetLabel )
{
if( SheetLabel->m_Edge )
SheetLabel->m_Pos.x = Sheet->m_Pos.x + Sheet->m_Size.x;
SheetLabel = SheetLabel->Next();
}
}
else /* Move Sheet */
{
move_vector = screen->m_Curseur - Sheet->m_Pos;
Sheet->Move( move_vector );
}
RedrawOneStruct( panel, DC, Sheet, g_XorMode );
}
/* Complete sheet move. */
static void ExitSheet( WinEDA_DrawPanel* Panel, wxDC* DC )
{
SCH_SCREEN* Screen = (SCH_SCREEN*) Panel->GetScreen();
SCH_SHEET* Sheet = (SCH_SHEET*) Screen->GetCurItem();
if( Sheet == NULL )
return;
if( Sheet->m_Flags & IS_NEW )
{
RedrawOneStruct( Panel, DC, Sheet, g_XorMode );
SAFE_DELETE( Sheet );
}
else if( Sheet->m_Flags & IS_RESIZED )
{
/* Resize in progress, cancel move. */
RedrawOneStruct( Panel, DC, Sheet, g_XorMode );
Sheet->m_Size.x = s_OldPos.x;
Sheet->m_Size.y = s_OldPos.y;
RedrawOneStruct( Panel, DC, Sheet, GR_DEFAULT_DRAWMODE );
Sheet->m_Flags = 0;
}
else if( Sheet->m_Flags & IS_MOVED )
{
wxPoint curspos = Screen->m_Curseur;
Panel->GetScreen()->m_Curseur = s_OldPos;
DeplaceSheet( Panel, DC, TRUE );
RedrawOneStruct( Panel, DC, Sheet, GR_DEFAULT_DRAWMODE );
Sheet->m_Flags = 0;
Screen->m_Curseur = curspos;
}
else
Sheet->m_Flags = 0;
Screen->SetCurItem( NULL );
Panel->ManageCurseur = NULL;
Panel->ForceCloseManageCurseur = NULL;
}
/*!
* wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL
*/
void WinEDA_SheetPropertiesFrame::OnCancelClick( wxCommandEvent& event )
{
EndModal( 0 );
}
/*!
* wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_OK
*/
void WinEDA_SheetPropertiesFrame::OnOkClick( wxCommandEvent& event )
{
SheetPropertiesAccept( event );
} }
/////////////////////////////////////////////////////////////////////////////
// Name: sheet.h
// Purpose:
// Author: jean-pierre Charras
// Modified by:
// Created: 08/02/2006 18:37:02
// RCS-ID:
// Copyright: License GNU
// Licence:
/////////////////////////////////////////////////////////////////////////////
// Generated by DialogBlocks (unregistered), 08/02/2006 18:37:02
#ifndef _SHEET_H_
#define _SHEET_H_
#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma interface "sheet.h"
#endif
/*!
* Includes
*/
////@begin includes
#include "wx/valtext.h"
////@end includes
/*!
* Forward declarations
*/
////@begin forward declarations
////@end forward declarations
/*!
* Control identifiers
*/
////@begin control identifiers
#define ID_DIALOG 10000
#define ID_TEXTCTRL1 10002
#define ID_TEXTCTRL 10001
#define ID_TEXTCTRL2 10003
#define ID_TEXTCTRL3 10004
#define SYMBOL_WINEDA_SHEETPROPERTIESFRAME_STYLE wxCAPTION|wxSYSTEM_MENU|wxCLOSE_BOX|MAYBE_RESIZE_BORDER
#define SYMBOL_WINEDA_SHEETPROPERTIESFRAME_TITLE _("Sheet properties")
#define SYMBOL_WINEDA_SHEETPROPERTIESFRAME_IDNAME ID_DIALOG
#define SYMBOL_WINEDA_SHEETPROPERTIESFRAME_SIZE wxSize(400, 300)
#define SYMBOL_WINEDA_SHEETPROPERTIESFRAME_POSITION wxDefaultPosition
////@end control identifiers
/*!
* Compatibility
*/
#ifndef wxCLOSE_BOX
#define wxCLOSE_BOX 0x1000
#endif
/*!
* WinEDA_SheetPropertiesFrame class declaration
*/
class WinEDA_SheetPropertiesFrame: public wxDialog
{
DECLARE_DYNAMIC_CLASS( WinEDA_SheetPropertiesFrame )
DECLARE_EVENT_TABLE()
public:
/// Constructors
WinEDA_SheetPropertiesFrame( );
WinEDA_SheetPropertiesFrame( WinEDA_SchematicFrame* parent,
SCH_SHEET * currentsheet,
wxWindowID id = SYMBOL_WINEDA_SHEETPROPERTIESFRAME_IDNAME,
const wxString& caption = SYMBOL_WINEDA_SHEETPROPERTIESFRAME_TITLE,
const wxPoint& pos = SYMBOL_WINEDA_SHEETPROPERTIESFRAME_POSITION,
const wxSize& size = SYMBOL_WINEDA_SHEETPROPERTIESFRAME_SIZE,
long style = SYMBOL_WINEDA_SHEETPROPERTIESFRAME_STYLE );
/// Creation
bool Create( wxWindow* parent, wxWindowID id = SYMBOL_WINEDA_SHEETPROPERTIESFRAME_IDNAME, const wxString& caption = SYMBOL_WINEDA_SHEETPROPERTIESFRAME_TITLE, const wxPoint& pos = SYMBOL_WINEDA_SHEETPROPERTIESFRAME_POSITION, const wxSize& size = SYMBOL_WINEDA_SHEETPROPERTIESFRAME_SIZE, long style = SYMBOL_WINEDA_SHEETPROPERTIESFRAME_STYLE );
/// Creates the controls and sizers
void CreateControls();
////@begin WinEDA_SheetPropertiesFrame event handler declarations
/// wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL
void OnCancelClick( wxCommandEvent& event );
/// wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_OK
void OnOkClick( wxCommandEvent& event );
////@end WinEDA_SheetPropertiesFrame event handler declarations
////@begin WinEDA_SheetPropertiesFrame member function declarations
/// Retrieves bitmap resources
wxBitmap GetBitmapResource( const wxString& name );
/// Retrieves icon resources
wxIcon GetIconResource( const wxString& name );
////@end WinEDA_SheetPropertiesFrame member function declarations
/// Should we show tooltips?
static bool ShowToolTips();
void SheetPropertiesAccept(wxCommandEvent& event);
////@begin WinEDA_SheetPropertiesFrame member variables
wxTextCtrl* m_FileNameWin;
wxTextCtrl* m_SheetNameWin;
wxStaticText* m_FileNameTextSize;
wxTextCtrl* m_FileNameSize;
wxStaticText* m_SheetNameTextSize;
wxTextCtrl* m_SheetNameSize;
wxButton* m_btClose;
////@end WinEDA_SheetPropertiesFrame member variables
WinEDA_SchematicFrame * m_Parent;
SCH_SHEET* m_CurrentSheet;
};
#endif
// _SHEET_H_
<?xml version="1.0" encoding="UTF-8"?>
<anthemion-project version="1.0.0.0" xmlns="http://www.anthemion.co.uk">
<header>
<long name="name_counter">0</long>
<string name="html_path">""</string>
<string name="title">""</string>
<string name="author">""</string>
<string name="description">""</string>
<string name="xrc_filename">""</string>
<bool name="convert_images_to_xpm">0</bool>
<bool name="inline_images">0</bool>
<bool name="generate_cpp_for_xrc">0</bool>
<long name="working_mode">1</long>
<bool name="use_help_text_for_tooltips">1</bool>
<bool name="translate_strings">1</bool>
<bool name="make_unicode_strings">1</bool>
<bool name="extract_strings">0</bool>
<string name="user_name">"jean-pierre Charras"</string>
<string name="copyright_string">"License GNU"</string>
<string name="resource_prefix">""</string>
<bool name="use_two_step_construction">0</bool>
<bool name="use_enums">0</bool>
<bool name="generate_for_xrced">0</bool>
<string name="current_platform">"&lt;All platforms&gt;"</string>
<string name="target_wx_version">"&lt;Any&gt;"</string>
<string name="cpp_header_comment">"/////////////////////////////////////////////////////////////////////////////
// Name: %HEADER-FILENAME%
// Purpose:
// Author: %AUTHOR%
// Modified by:
// Created: %DATE%
// RCS-ID:
// Copyright: %COPYRIGHT%
// Licence:
/////////////////////////////////////////////////////////////////////////////
"</string>
<string name="cpp_implementation_comment">"/////////////////////////////////////////////////////////////////////////////
// Name: %SOURCE-FILENAME%
// Purpose:
// Author: %AUTHOR%
// Modified by:
// Created: %DATE%
// RCS-ID:
// Copyright: %COPYRIGHT%
// Licence:
/////////////////////////////////////////////////////////////////////////////
"</string>
<string name="cpp_symbols_file_comment">"/////////////////////////////////////////////////////////////////////////////
// Name: %SYMBOLS-FILENAME%
// Purpose: Symbols file
// Author: %AUTHOR%
// Modified by:
// Created: %DATE%
// RCS-ID:
// Copyright: %COPYRIGHT%
// Licence:
/////////////////////////////////////////////////////////////////////////////
"</string>
<string name="cpp_header_preamble">"#if defined(__GNUG__) &amp;&amp; !defined(NO_GCC_PRAGMA)
#pragma interface &quot;%HEADER-FILENAME%&quot;
#endif
"</string>
<string name="cpp_implementation_preamble">"#if defined(__GNUG__) &amp;&amp; !defined(NO_GCC_PRAGMA)
#pragma implementation &quot;%HEADER-FILENAME%&quot;
#endif
// For compilers that support precompilation, includes &quot;wx/wx.h&quot;.
#include &quot;wx/wxprec.h&quot;
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WX_PRECOMP
#include &quot;wx/wx.h&quot;
#endif
"</string>
<string name="cpp_function_declaration_comment">" /// %BODY%
"</string>
<string name="cpp_function_implementation_comment">"
/*!
* %BODY%
*/
"</string>
<string name="resource_file_header">"app_resources.h"</string>
<string name="resource_file_implementation">"app_resources.cpp"</string>
<string name="resource_class_name">"AppResources"</string>
<string name="app_file_header">"app.h"</string>
<string name="app_file_implementation">"app.cpp"</string>
<string name="app_class_name">"Application"</string>
<bool name="generate_app_class">0</bool>
<string name="external_symbol_filenames">""</string>
<string name="configuration">"&lt;None&gt;"</string>
<string name="source_encoding">"&lt;System&gt;"</string>
<string name="xrc_encoding">"utf-8"</string>
<string name="project_encoding">"&lt;System&gt;"</string>
<string name="resource_archive">""</string>
<long name="text_file_type">0</long>
<bool name="use_tabs">0</bool>
<long name="indent_size">4</long>
<string name="whitespace_after_return_type">" "</string>
<string name="resource_xrc_cpp">""</string>
<bool name="use_resource_archive">0</bool>
<bool name="use_generated_xrc_cpp">0</bool>
<bool name="always_generate_xrc">1</bool>
<bool name="use_id_name_for_name">0</bool>
<bool name="archive_xrc_files">1</bool>
<bool name="archive_image_files">1</bool>
<bool name="archive_all_image_files">0</bool>
<bool name="xrc_retain_relative_paths">1</bool>
<bool name="xrc_generate_id_tags">0</bool>
<bool name="xrc_use_name_property">0</bool>
</header>
<data>
<document>
<string name="title">""</string>
<string name="type">"data-document"</string>
<string name="filename">""</string>
<string name="icon-name">""</string>
<long name="is-transient">0</long>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<document>
<string name="title">"Configurations"</string>
<string name="type">"config-data-document"</string>
<string name="filename">""</string>
<string name="icon-name">""</string>
<long name="is-transient">0</long>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="template-name">""</string>
<bool name="dirty">1</bool>
<long name="makefile-last-written">-8519680</long>
<string name="Compiler name">""</string>
<string name="Build mode">"Debug"</string>
<string name="Unicode mode">"ANSI"</string>
<string name="Shared mode">"Static"</string>
<string name="Modularity">"Modular"</string>
<string name="GUI mode">"GUI"</string>
<string name="Toolkit">"wxMSW"</string>
<string name="Runtime linking">"Dynamic"</string>
<string name="Use exceptions">"Yes"</string>
<string name="Use ODBC">"No"</string>
<string name="Use OpenGL">"No"</string>
<string name="wxWidgets version">"%WXVERSION%"</string>
<string name="Executable name">"%EXECUTABLE%"</string>
<string name="Program arguments">""</string>
<string name="Working path">"%AUTO%"</string>
<string name="Output path">"%AUTO%"</string>
<string name="Objects path">"%AUTO%"</string>
<string name="Compiler location">"%AUTO%"</string>
<string name="wxWidgets location">"%AUTO%"</string>
<string name="C++ command">"%AUTO%"</string>
<string name="C command">"%AUTO%"</string>
<string name="Resource compiler">"%AUTO%"</string>
<string name="Make command">"%AUTO%"</string>
<string name="Project makefile">"%AUTO%"</string>
<string name="wxWidgets makefile">"%AUTO%"</string>
<string name="Compiler bin path">"%AUTO%"</string>
<string name="Compiler include path">"%AUTO%"</string>
<string name="Compiler lib path">"%AUTO%"</string>
<string name="Preprocessor flags">"%AUTO%"</string>
<string name="Optimizations">"%AUTO%"</string>
<string name="Warnings">"%AUTO%"</string>
<string name="Debug flags">"%AUTO%"</string>
<string name="Extra compile flags">"%AUTO%"</string>
<string name="Libraries">"%AUTO%"</string>
<string name="Library path">"%AUTO%"</string>
<string name="Linker flags">"%AUTO%"</string>
<string name="Include path">"%AUTO%"</string>
<string name="Resource flags">"%AUTO%"</string>
<string name="Resource path">"%AUTO%"</string>
<string name="wxWidgets build path">"%AUTO%"</string>
<string name="wxWidgets build command">"%AUTO%"</string>
<string name="wxWidgets clean command">"%AUTO%"</string>
<string name="PATH variable">"%AUTO%"</string>
<bool name="Suppress source rules">0</bool>
<bool name="Enable makefile generation">1</bool>
<string name="CFG">""</string>
</document>
</document>
</data>
<documents>
<document>
<string name="title">"Projects"</string>
<string name="type">"root-document"</string>
<string name="filename">""</string>
<string name="icon-name">"project"</string>
<long name="is-transient">1</long>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">1</long>
<document>
<string name="title">"Windows"</string>
<string name="type">"html-document"</string>
<string name="filename">""</string>
<string name="icon-name">"dialogsfolder"</string>
<long name="is-transient">1</long>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">1</long>
<document>
<string name="title">"Sheet properties"</string>
<string name="type">"dialog-document"</string>
<string name="filename">""</string>
<string name="icon-name">"dialog"</string>
<long name="is-transient">0</long>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"8/11/2006"</string>
<string name="proxy-type">"wbDialogProxy"</string>
<long name="base-id">10000</long>
<bool name="use-id-prefix">0</bool>
<string name="id-prefix">""</string>
<bool name="use-id-suffix">0</bool>
<string name="id-suffix">""</string>
<long name="use-xrc">0</long>
<long name="working-mode">0</long>
<string name="proxy-Id name">"ID_DIALOG"</string>
<long name="proxy-Id value">10000</long>
<string name="proxy-Class">"WinEDA_SheetPropertiesFrame"</string>
<string name="proxy-Base class">"wxDialog"</string>
<string name="proxy-Window kind">"wxDialog"</string>
<string name="proxy-Implementation filename">"sheet.cpp"</string>
<string name="proxy-Header filename">"sheet.h"</string>
<string name="proxy-XRC filename">""</string>
<string name="proxy-Title">"Sheet properties"</string>
<bool name="proxy-Centre">1</bool>
<string name="proxy-Icon">""</string>
<bool name="proxy-Dialog units">0</bool>
<string name="proxy-Help text">""</string>
<string name="proxy-Tooltip text">""</string>
<string name="proxy-Background colour">""</string>
<string name="proxy-Foreground colour">""</string>
<string name="proxy-Font">""</string>
<bool name="proxy-Hidden">0</bool>
<bool name="proxy-Enabled">1</bool>
<string name="proxy-Platform">"&lt;Any platform&gt;"</string>
<string name="proxy-Data source">""</string>
<string name="proxy-Data class name">""</string>
<string name="proxy-Data class implementation filename">""</string>
<string name="proxy-Data class header filename">""</string>
<string name="proxy-Data class manager window">""</string>
<string name="proxy-Texture">""</string>
<string name="proxy-Texture style">"Tiled"</string>
<bool name="proxy-wxDEFAULT_DIALOG_STYLE">0</bool>
<bool name="proxy-wxCAPTION">1</bool>
<bool name="proxy-wxRESIZE_BORDER">0</bool>
<bool name="proxy-wxSYSTEM_MENU">1</bool>
<bool name="proxy-wxSTAY_ON_TOP">0</bool>
<bool name="proxy-wxDIALOG_NO_PARENT">0</bool>
<bool name="proxy-wxCLOSE_BOX">1</bool>
<bool name="proxy-wxMAXIMIZE_BOX">0</bool>
<bool name="proxy-wxMINIMIZE_BOX">0</bool>
<bool name="proxy-wxDIALOG_MODAL">0</bool>
<bool name="proxy-wxNO_BORDER">0</bool>
<bool name="proxy-wxSIMPLE_BORDER">0</bool>
<bool name="proxy-wxDOUBLE_BORDER">0</bool>
<bool name="proxy-wxSUNKEN_BORDER">0</bool>
<bool name="proxy-wxRAISED_BORDER">0</bool>
<bool name="proxy-wxSTATIC_BORDER">0</bool>
<bool name="proxy-wxWANTS_CHARS">0</bool>
<bool name="proxy-wxNO_FULL_REPAINT_ON_RESIZE">0</bool>
<bool name="proxy-wxFULL_REPAINT_ON_RESIZE">0</bool>
<bool name="proxy-wxCLIP_CHILDREN">0</bool>
<bool name="proxy-wxTAB_TRAVERSAL">0</bool>
<bool name="proxy-wxWS_EX_VALIDATE_RECURSIVELY">0</bool>
<bool name="proxy-wxWS_EX_BLOCK_EVENTS">1</bool>
<bool name="proxy-wxWS_EX_TRANSIENT">0</bool>
<string name="proxy-Custom styles">"MAYBE_RESIZE_BORDER"</string>
<bool name="proxy-wxDIALOG_EX_CONTEXTHELP">0</bool>
<bool name="proxy-Fit to content">1</bool>
<long name="proxy-X">-1</long>
<long name="proxy-Y">-1</long>
<long name="proxy-Width">400</long>
<long name="proxy-Height">300</long>
<bool name="proxy-AUI manager">0</bool>
<string name="proxy-Event sources">""</string>
<document>
<string name="title">"wxBoxSizer V"</string>
<string name="type">"dialog-control-document"</string>
<string name="filename">""</string>
<string name="icon-name">"sizer"</string>
<long name="is-transient">0</long>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="proxy-type">"wbBoxSizerProxy"</string>
<string name="proxy-Orientation">"Vertical"</string>
<string name="proxy-Member variable name">""</string>
<bool name="proxy-wxSHAPED">0</bool>
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
<string name="proxy-Platform">"&lt;Any platform&gt;"</string>
<document>
<string name="title">"wxBoxSizer H"</string>
<string name="type">"dialog-control-document"</string>
<string name="filename">""</string>
<string name="icon-name">"sizer"</string>
<long name="is-transient">0</long>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"8/11/2006"</string>
<string name="proxy-type">"wbBoxSizerProxy"</string>
<string name="proxy-Orientation">"Horizontal"</string>
<string name="proxy-Member variable name">""</string>
<string name="proxy-AlignH">"Expand"</string>
<string name="proxy-AlignV">"Centre"</string>
<long name="proxy-Stretch factor">0</long>
<long name="proxy-Border">5</long>
<bool name="proxy-wxLEFT">1</bool>
<bool name="proxy-wxRIGHT">1</bool>
<bool name="proxy-wxTOP">1</bool>
<bool name="proxy-wxBOTTOM">1</bool>
<bool name="proxy-wxSHAPED">0</bool>
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
<string name="proxy-Platform">"&lt;Any platform&gt;"</string>
<document>
<string name="title">"wxBoxSizer V"</string>
<string name="type">"dialog-control-document"</string>
<string name="filename">""</string>
<string name="icon-name">"sizer"</string>
<long name="is-transient">0</long>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"8/11/2006"</string>
<string name="proxy-type">"wbBoxSizerProxy"</string>
<string name="proxy-Orientation">"Vertical"</string>
<string name="proxy-Member variable name">""</string>
<string name="proxy-AlignH">"Centre"</string>
<string name="proxy-AlignV">"Centre"</string>
<long name="proxy-Stretch factor">0</long>
<long name="proxy-Border">5</long>
<bool name="proxy-wxLEFT">1</bool>
<bool name="proxy-wxRIGHT">1</bool>
<bool name="proxy-wxTOP">1</bool>
<bool name="proxy-wxBOTTOM">1</bool>
<bool name="proxy-wxSHAPED">0</bool>
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
<string name="proxy-Platform">"&lt;Any platform&gt;"</string>
<document>
<string name="title">"wxStaticText: wxID_STATIC"</string>
<string name="type">"dialog-control-document"</string>
<string name="filename">""</string>
<string name="icon-name">"statictext"</string>
<long name="is-transient">0</long>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"8/11/2006"</string>
<string name="proxy-type">"wbStaticTextProxy"</string>
<string name="proxy-Id name">"wxID_STATIC"</string>
<long name="proxy-Id value">5105</long>
<string name="proxy-Name">""</string>
<string name="proxy-Class">"wxStaticText"</string>
<string name="proxy-Base class">"wxStaticText"</string>
<bool name="proxy-External implementation">1</bool>
<bool name="proxy-Separate files">0</bool>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">""</string>
<string name="proxy-Label">"Filename:"</string>
<long name="proxy-Wrapping width">-1</long>
<string name="proxy-Help text">""</string>
<string name="proxy-Tooltip text">""</string>
<string name="proxy-Background colour">""</string>
<string name="proxy-Foreground colour">""</string>
<string name="proxy-Font">""</string>
<bool name="proxy-Hidden">0</bool>
<bool name="proxy-Enabled">1</bool>
<string name="proxy-Platform">"&lt;Any platform&gt;"</string>
<string name="proxy-Data variable">""</string>
<string name="proxy-Data validator">""</string>
<string name="proxy-Data source">""</string>
<string name="proxy-Data class name">""</string>
<string name="proxy-Data class implementation filename">""</string>
<string name="proxy-Data class header filename">""</string>
<string name="proxy-Data class manager window">""</string>
<bool name="proxy-wxALIGN_LEFT">0</bool>
<bool name="proxy-wxALIGN_RIGHT">0</bool>
<bool name="proxy-wxALIGN_CENTRE">0</bool>
<bool name="proxy-wxST_NO_AUTORESIZE">0</bool>
<bool name="proxy-wxNO_BORDER">0</bool>
<bool name="proxy-wxSIMPLE_BORDER">0</bool>
<bool name="proxy-wxDOUBLE_BORDER">0</bool>
<bool name="proxy-wxSUNKEN_BORDER">0</bool>
<bool name="proxy-wxRAISED_BORDER">0</bool>
<bool name="proxy-wxSTATIC_BORDER">0</bool>
<bool name="proxy-wxWANTS_CHARS">0</bool>
<bool name="proxy-wxNO_FULL_REPAINT_ON_RESIZE">0</bool>
<bool name="proxy-wxFULL_REPAINT_ON_RESIZE">0</bool>
<string name="proxy-Custom styles">""</string>
<long name="proxy-X">-1</long>
<long name="proxy-Y">-1</long>
<long name="proxy-Width">-1</long>
<long name="proxy-Height">-1</long>
<string name="proxy-AlignH">"Left"</string>
<string name="proxy-AlignV">"Top"</string>
<long name="proxy-Stretch factor">0</long>
<long name="proxy-Border">5</long>
<bool name="proxy-wxLEFT">1</bool>
<bool name="proxy-wxRIGHT">1</bool>
<bool name="proxy-wxTOP">1</bool>
<bool name="proxy-wxBOTTOM">0</bool>
<bool name="proxy-wxSHAPED">0</bool>
<bool name="proxy-wxADJUST_MINSIZE">1</bool>
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
</document>
<document>
<string name="title">"wxTextCtrl: ID_TEXTCTRL1"</string>
<string name="type">"dialog-control-document"</string>
<string name="filename">""</string>
<string name="icon-name">"textctrl"</string>
<long name="is-transient">0</long>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"8/5/2006"</string>
<string name="proxy-type">"wbTextCtrlProxy"</string>
<string name="proxy-Id name">"ID_TEXTCTRL1"</string>
<long name="proxy-Id value">10002</long>
<string name="proxy-Name">""</string>
<string name="proxy-Class">"wxTextCtrl"</string>
<string name="proxy-Base class">"wxTextCtrl"</string>
<bool name="proxy-External implementation">1</bool>
<bool name="proxy-Separate files">0</bool>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">"m_FileNameWin"</string>
<string name="proxy-Initial value">""</string>
<long name="proxy-Max length">0</long>
<string name="proxy-Help text">""</string>
<string name="proxy-Tooltip text">""</string>
<string name="proxy-Background colour">""</string>
<string name="proxy-Foreground colour">""</string>
<string name="proxy-Font">""</string>
<bool name="proxy-Hidden">0</bool>
<bool name="proxy-Enabled">1</bool>
<string name="proxy-Platform">"&lt;Any platform&gt;"</string>
<string name="proxy-Data variable">""</string>
<string name="proxy-Data validator">""</string>
<string name="proxy-Data source">""</string>
<string name="proxy-Data class name">""</string>
<string name="proxy-Data class implementation filename">""</string>
<string name="proxy-Data class header filename">""</string>
<string name="proxy-Data class manager window">""</string>
<bool name="proxy-wxTE_MULTILINE">0</bool>
<bool name="proxy-wxTE_PROCESS_ENTER">1</bool>
<bool name="proxy-wxTE_PROCESS_TAB">0</bool>
<bool name="proxy-wxTE_PASSWORD">0</bool>
<bool name="proxy-wxTE_READONLY">0</bool>
<bool name="proxy-wxTE_RICH">0</bool>
<bool name="proxy-wxTE_RICH2">0</bool>
<bool name="proxy-wxTE_AUTO_URL">0</bool>
<bool name="proxy-wxTE_NOHIDESEL">0</bool>
<bool name="proxy-wxTE_LEFT">0</bool>
<bool name="proxy-wxTE_CENTRE">0</bool>
<bool name="proxy-wxTE_RIGHT">0</bool>
<bool name="proxy-wxHSCROLL">0</bool>
<bool name="proxy-wxTE_CHARWRAP">0</bool>
<bool name="proxy-wxTE_WORDWRAP">0</bool>
<bool name="proxy-wxTE_CAPITALIZE">0</bool>
<bool name="proxy-wxNO_BORDER">0</bool>
<bool name="proxy-wxSIMPLE_BORDER">0</bool>
<bool name="proxy-wxDOUBLE_BORDER">0</bool>
<bool name="proxy-wxSUNKEN_BORDER">0</bool>
<bool name="proxy-wxRAISED_BORDER">0</bool>
<bool name="proxy-wxSTATIC_BORDER">0</bool>
<bool name="proxy-wxWANTS_CHARS">0</bool>
<bool name="proxy-wxNO_FULL_REPAINT_ON_RESIZE">0</bool>
<bool name="proxy-wxFULL_REPAINT_ON_RESIZE">0</bool>
<string name="proxy-Custom styles">""</string>
<long name="proxy-X">-1</long>
<long name="proxy-Y">-1</long>
<long name="proxy-Width">300</long>
<long name="proxy-Height">-1</long>
<string name="proxy-AlignH">"Left"</string>
<string name="proxy-AlignV">"Centre"</string>
<long name="proxy-Stretch factor">0</long>
<long name="proxy-Border">5</long>
<bool name="proxy-wxLEFT">1</bool>
<bool name="proxy-wxRIGHT">1</bool>
<bool name="proxy-wxTOP">0</bool>
<bool name="proxy-wxBOTTOM">1</bool>
<bool name="proxy-wxSHAPED">0</bool>
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
</document>
<document>
<string name="title">"wxStaticText: wxID_STATIC"</string>
<string name="type">"dialog-control-document"</string>
<string name="filename">""</string>
<string name="icon-name">"statictext"</string>
<long name="is-transient">0</long>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"8/11/2006"</string>
<string name="proxy-type">"wbStaticTextProxy"</string>
<string name="proxy-Id name">"wxID_STATIC"</string>
<long name="proxy-Id value">5105</long>
<string name="proxy-Name">""</string>
<string name="proxy-Class">"wxStaticText"</string>
<string name="proxy-Base class">"wxStaticText"</string>
<bool name="proxy-External implementation">1</bool>
<bool name="proxy-Separate files">0</bool>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">""</string>
<string name="proxy-Label">"Sheetname:"</string>
<long name="proxy-Wrapping width">-1</long>
<string name="proxy-Help text">""</string>
<string name="proxy-Tooltip text">""</string>
<string name="proxy-Background colour">""</string>
<string name="proxy-Foreground colour">""</string>
<string name="proxy-Font">""</string>
<bool name="proxy-Hidden">0</bool>
<bool name="proxy-Enabled">1</bool>
<string name="proxy-Platform">"&lt;Any platform&gt;"</string>
<string name="proxy-Data variable">""</string>
<string name="proxy-Data validator">""</string>
<string name="proxy-Data source">""</string>
<string name="proxy-Data class name">""</string>
<string name="proxy-Data class implementation filename">""</string>
<string name="proxy-Data class header filename">""</string>
<string name="proxy-Data class manager window">""</string>
<bool name="proxy-wxALIGN_LEFT">0</bool>
<bool name="proxy-wxALIGN_RIGHT">0</bool>
<bool name="proxy-wxALIGN_CENTRE">0</bool>
<bool name="proxy-wxST_NO_AUTORESIZE">0</bool>
<bool name="proxy-wxNO_BORDER">0</bool>
<bool name="proxy-wxSIMPLE_BORDER">0</bool>
<bool name="proxy-wxDOUBLE_BORDER">0</bool>
<bool name="proxy-wxSUNKEN_BORDER">0</bool>
<bool name="proxy-wxRAISED_BORDER">0</bool>
<bool name="proxy-wxSTATIC_BORDER">0</bool>
<bool name="proxy-wxWANTS_CHARS">0</bool>
<bool name="proxy-wxNO_FULL_REPAINT_ON_RESIZE">0</bool>
<bool name="proxy-wxFULL_REPAINT_ON_RESIZE">0</bool>
<string name="proxy-Custom styles">""</string>
<long name="proxy-X">-1</long>
<long name="proxy-Y">-1</long>
<long name="proxy-Width">-1</long>
<long name="proxy-Height">-1</long>
<string name="proxy-AlignH">"Left"</string>
<string name="proxy-AlignV">"Top"</string>
<long name="proxy-Stretch factor">0</long>
<long name="proxy-Border">5</long>
<bool name="proxy-wxLEFT">1</bool>
<bool name="proxy-wxRIGHT">1</bool>
<bool name="proxy-wxTOP">1</bool>
<bool name="proxy-wxBOTTOM">0</bool>
<bool name="proxy-wxSHAPED">0</bool>
<bool name="proxy-wxADJUST_MINSIZE">1</bool>
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
</document>
<document>
<string name="title">"wxTextCtrl: ID_TEXTCTRL"</string>
<string name="type">"dialog-control-document"</string>
<string name="filename">""</string>
<string name="icon-name">"textctrl"</string>
<long name="is-transient">0</long>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"8/5/2006"</string>
<string name="proxy-type">"wbTextCtrlProxy"</string>
<string name="proxy-Id name">"ID_TEXTCTRL"</string>
<long name="proxy-Id value">10001</long>
<string name="proxy-Name">""</string>
<string name="proxy-Class">"wxTextCtrl"</string>
<string name="proxy-Base class">"wxTextCtrl"</string>
<bool name="proxy-External implementation">1</bool>
<bool name="proxy-Separate files">0</bool>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">"m_SheetNameWin"</string>
<string name="proxy-Initial value">""</string>
<long name="proxy-Max length">0</long>
<string name="proxy-Help text">""</string>
<string name="proxy-Tooltip text">""</string>
<string name="proxy-Background colour">""</string>
<string name="proxy-Foreground colour">""</string>
<string name="proxy-Font">""</string>
<bool name="proxy-Hidden">0</bool>
<bool name="proxy-Enabled">1</bool>
<string name="proxy-Platform">"&lt;Any platform&gt;"</string>
<string name="proxy-Data variable">"m_CurrentSheet-&gt;m_SheetName"</string>
<string name="proxy-Data validator">"wxTextValidator(wxFILTER_NONE, &amp; %VARIABLE%)"</string>
<string name="proxy-Data source">""</string>
<string name="proxy-Data class name">""</string>
<string name="proxy-Data class implementation filename">""</string>
<string name="proxy-Data class header filename">""</string>
<string name="proxy-Data class manager window">""</string>
<bool name="proxy-wxTE_MULTILINE">0</bool>
<bool name="proxy-wxTE_PROCESS_ENTER">0</bool>
<bool name="proxy-wxTE_PROCESS_TAB">0</bool>
<bool name="proxy-wxTE_PASSWORD">0</bool>
<bool name="proxy-wxTE_READONLY">0</bool>
<bool name="proxy-wxTE_RICH">0</bool>
<bool name="proxy-wxTE_RICH2">0</bool>
<bool name="proxy-wxTE_AUTO_URL">0</bool>
<bool name="proxy-wxTE_NOHIDESEL">0</bool>
<bool name="proxy-wxTE_LEFT">0</bool>
<bool name="proxy-wxTE_CENTRE">0</bool>
<bool name="proxy-wxTE_RIGHT">0</bool>
<bool name="proxy-wxHSCROLL">0</bool>
<bool name="proxy-wxTE_CHARWRAP">0</bool>
<bool name="proxy-wxTE_WORDWRAP">0</bool>
<bool name="proxy-wxTE_CAPITALIZE">0</bool>
<bool name="proxy-wxNO_BORDER">0</bool>
<bool name="proxy-wxSIMPLE_BORDER">0</bool>
<bool name="proxy-wxDOUBLE_BORDER">0</bool>
<bool name="proxy-wxSUNKEN_BORDER">0</bool>
<bool name="proxy-wxRAISED_BORDER">0</bool>
<bool name="proxy-wxSTATIC_BORDER">0</bool>
<bool name="proxy-wxWANTS_CHARS">0</bool>
<bool name="proxy-wxNO_FULL_REPAINT_ON_RESIZE">0</bool>
<bool name="proxy-wxFULL_REPAINT_ON_RESIZE">0</bool>
<string name="proxy-Custom styles">""</string>
<long name="proxy-X">-1</long>
<long name="proxy-Y">-1</long>
<long name="proxy-Width">300</long>
<long name="proxy-Height">-1</long>
<string name="proxy-AlignH">"Left"</string>
<string name="proxy-AlignV">"Centre"</string>
<long name="proxy-Stretch factor">0</long>
<long name="proxy-Border">5</long>
<bool name="proxy-wxLEFT">1</bool>
<bool name="proxy-wxRIGHT">1</bool>
<bool name="proxy-wxTOP">0</bool>
<bool name="proxy-wxBOTTOM">1</bool>
<bool name="proxy-wxSHAPED">0</bool>
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
</document>
</document>
<document>
<string name="title">"wxBoxSizer V"</string>
<string name="type">"dialog-control-document"</string>
<string name="filename">""</string>
<string name="icon-name">"sizer"</string>
<long name="is-transient">0</long>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"8/11/2006"</string>
<string name="proxy-type">"wbBoxSizerProxy"</string>
<string name="proxy-Orientation">"Vertical"</string>
<string name="proxy-Member variable name">""</string>
<string name="proxy-AlignH">"Centre"</string>
<string name="proxy-AlignV">"Centre"</string>
<long name="proxy-Stretch factor">0</long>
<long name="proxy-Border">5</long>
<bool name="proxy-wxLEFT">1</bool>
<bool name="proxy-wxRIGHT">1</bool>
<bool name="proxy-wxTOP">1</bool>
<bool name="proxy-wxBOTTOM">1</bool>
<bool name="proxy-wxSHAPED">0</bool>
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
<string name="proxy-Platform">"&lt;Any platform&gt;"</string>
<document>
<string name="title">"wxStaticText: wxID_STATIC"</string>
<string name="type">"dialog-control-document"</string>
<string name="filename">""</string>
<string name="icon-name">"statictext"</string>
<long name="is-transient">0</long>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"8/11/2006"</string>
<string name="proxy-type">"wbStaticTextProxy"</string>
<string name="proxy-Id name">"wxID_STATIC"</string>
<long name="proxy-Id value">5105</long>
<string name="proxy-Name">""</string>
<string name="proxy-Class">"wxStaticText"</string>
<string name="proxy-Base class">"wxStaticText"</string>
<bool name="proxy-External implementation">1</bool>
<bool name="proxy-Separate files">0</bool>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">"m_FileNameTextSize"</string>
<string name="proxy-Label">"Size"</string>
<long name="proxy-Wrapping width">-1</long>
<string name="proxy-Help text">""</string>
<string name="proxy-Tooltip text">""</string>
<string name="proxy-Background colour">""</string>
<string name="proxy-Foreground colour">""</string>
<string name="proxy-Font">""</string>
<bool name="proxy-Hidden">0</bool>
<bool name="proxy-Enabled">1</bool>
<string name="proxy-Platform">"&lt;Any platform&gt;"</string>
<string name="proxy-Data variable">""</string>
<string name="proxy-Data validator">""</string>
<string name="proxy-Data source">""</string>
<string name="proxy-Data class name">""</string>
<string name="proxy-Data class implementation filename">""</string>
<string name="proxy-Data class header filename">""</string>
<string name="proxy-Data class manager window">""</string>
<bool name="proxy-wxALIGN_LEFT">0</bool>
<bool name="proxy-wxALIGN_RIGHT">0</bool>
<bool name="proxy-wxALIGN_CENTRE">0</bool>
<bool name="proxy-wxST_NO_AUTORESIZE">0</bool>
<bool name="proxy-wxNO_BORDER">0</bool>
<bool name="proxy-wxSIMPLE_BORDER">0</bool>
<bool name="proxy-wxDOUBLE_BORDER">0</bool>
<bool name="proxy-wxSUNKEN_BORDER">0</bool>
<bool name="proxy-wxRAISED_BORDER">0</bool>
<bool name="proxy-wxSTATIC_BORDER">0</bool>
<bool name="proxy-wxWANTS_CHARS">0</bool>
<bool name="proxy-wxNO_FULL_REPAINT_ON_RESIZE">0</bool>
<bool name="proxy-wxFULL_REPAINT_ON_RESIZE">0</bool>
<string name="proxy-Custom styles">""</string>
<long name="proxy-X">-1</long>
<long name="proxy-Y">-1</long>
<long name="proxy-Width">-1</long>
<long name="proxy-Height">-1</long>
<string name="proxy-AlignH">"Left"</string>
<string name="proxy-AlignV">"Top"</string>
<long name="proxy-Stretch factor">0</long>
<long name="proxy-Border">5</long>
<bool name="proxy-wxLEFT">1</bool>
<bool name="proxy-wxRIGHT">1</bool>
<bool name="proxy-wxTOP">1</bool>
<bool name="proxy-wxBOTTOM">0</bool>
<bool name="proxy-wxSHAPED">0</bool>
<bool name="proxy-wxADJUST_MINSIZE">1</bool>
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
</document>
<document>
<string name="title">"wxTextCtrl: ID_TEXTCTRL2"</string>
<string name="type">"dialog-control-document"</string>
<string name="filename">""</string>
<string name="icon-name">"textctrl"</string>
<long name="is-transient">0</long>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"8/11/2006"</string>
<string name="proxy-type">"wbTextCtrlProxy"</string>
<string name="proxy-Id name">"ID_TEXTCTRL2"</string>
<long name="proxy-Id value">10003</long>
<string name="proxy-Name">""</string>
<string name="proxy-Class">"wxTextCtrl"</string>
<string name="proxy-Base class">"wxTextCtrl"</string>
<bool name="proxy-External implementation">1</bool>
<bool name="proxy-Separate files">0</bool>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">"m_FileNameSize"</string>
<string name="proxy-Initial value">""</string>
<long name="proxy-Max length">0</long>
<string name="proxy-Help text">""</string>
<string name="proxy-Tooltip text">""</string>
<string name="proxy-Background colour">""</string>
<string name="proxy-Foreground colour">""</string>
<string name="proxy-Font">""</string>
<bool name="proxy-Hidden">0</bool>
<bool name="proxy-Enabled">1</bool>
<string name="proxy-Platform">"&lt;Any platform&gt;"</string>
<string name="proxy-Data variable">""</string>
<string name="proxy-Data validator">""</string>
<string name="proxy-Data source">""</string>
<string name="proxy-Data class name">""</string>
<string name="proxy-Data class implementation filename">""</string>
<string name="proxy-Data class header filename">""</string>
<string name="proxy-Data class manager window">""</string>
<bool name="proxy-wxTE_MULTILINE">0</bool>
<bool name="proxy-wxTE_PROCESS_ENTER">0</bool>
<bool name="proxy-wxTE_PROCESS_TAB">0</bool>
<bool name="proxy-wxTE_PASSWORD">0</bool>
<bool name="proxy-wxTE_READONLY">0</bool>
<bool name="proxy-wxTE_RICH">0</bool>
<bool name="proxy-wxTE_RICH2">0</bool>
<bool name="proxy-wxTE_AUTO_URL">0</bool>
<bool name="proxy-wxTE_NOHIDESEL">0</bool>
<bool name="proxy-wxTE_LEFT">0</bool>
<bool name="proxy-wxTE_CENTRE">0</bool>
<bool name="proxy-wxTE_RIGHT">0</bool>
<bool name="proxy-wxHSCROLL">0</bool>
<bool name="proxy-wxTE_CHARWRAP">0</bool>
<bool name="proxy-wxTE_WORDWRAP">0</bool>
<bool name="proxy-wxTE_CAPITALIZE">0</bool>
<bool name="proxy-wxNO_BORDER">0</bool>
<bool name="proxy-wxSIMPLE_BORDER">0</bool>
<bool name="proxy-wxDOUBLE_BORDER">0</bool>
<bool name="proxy-wxSUNKEN_BORDER">0</bool>
<bool name="proxy-wxRAISED_BORDER">0</bool>
<bool name="proxy-wxSTATIC_BORDER">0</bool>
<bool name="proxy-wxWANTS_CHARS">0</bool>
<bool name="proxy-wxNO_FULL_REPAINT_ON_RESIZE">0</bool>
<bool name="proxy-wxFULL_REPAINT_ON_RESIZE">0</bool>
<string name="proxy-Custom styles">""</string>
<long name="proxy-X">-1</long>
<long name="proxy-Y">-1</long>
<long name="proxy-Width">-1</long>
<long name="proxy-Height">-1</long>
<string name="proxy-AlignH">"Left"</string>
<string name="proxy-AlignV">"Centre"</string>
<long name="proxy-Stretch factor">0</long>
<long name="proxy-Border">5</long>
<bool name="proxy-wxLEFT">1</bool>
<bool name="proxy-wxRIGHT">1</bool>
<bool name="proxy-wxTOP">0</bool>
<bool name="proxy-wxBOTTOM">1</bool>
<bool name="proxy-wxSHAPED">0</bool>
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
<bool name="proxy-wxTE_LINEWRAP">0</bool>
</document>
<document>
<string name="title">"wxStaticText: wxID_STATIC"</string>
<string name="type">"dialog-control-document"</string>
<string name="filename">""</string>
<string name="icon-name">"statictext"</string>
<long name="is-transient">0</long>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"8/11/2006"</string>
<string name="proxy-type">"wbStaticTextProxy"</string>
<string name="proxy-Id name">"wxID_STATIC"</string>
<long name="proxy-Id value">5105</long>
<string name="proxy-Name">""</string>
<string name="proxy-Class">"wxStaticText"</string>
<string name="proxy-Base class">"wxStaticText"</string>
<bool name="proxy-External implementation">1</bool>
<bool name="proxy-Separate files">0</bool>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">"m_SheetNameTextSize"</string>
<string name="proxy-Label">"Size"</string>
<long name="proxy-Wrapping width">-1</long>
<string name="proxy-Help text">""</string>
<string name="proxy-Tooltip text">""</string>
<string name="proxy-Background colour">""</string>
<string name="proxy-Foreground colour">""</string>
<string name="proxy-Font">""</string>
<bool name="proxy-Hidden">0</bool>
<bool name="proxy-Enabled">1</bool>
<string name="proxy-Platform">"&lt;Any platform&gt;"</string>
<string name="proxy-Data variable">""</string>
<string name="proxy-Data validator">""</string>
<string name="proxy-Data source">""</string>
<string name="proxy-Data class name">""</string>
<string name="proxy-Data class implementation filename">""</string>
<string name="proxy-Data class header filename">""</string>
<string name="proxy-Data class manager window">""</string>
<bool name="proxy-wxALIGN_LEFT">0</bool>
<bool name="proxy-wxALIGN_RIGHT">0</bool>
<bool name="proxy-wxALIGN_CENTRE">0</bool>
<bool name="proxy-wxST_NO_AUTORESIZE">0</bool>
<bool name="proxy-wxNO_BORDER">0</bool>
<bool name="proxy-wxSIMPLE_BORDER">0</bool>
<bool name="proxy-wxDOUBLE_BORDER">0</bool>
<bool name="proxy-wxSUNKEN_BORDER">0</bool>
<bool name="proxy-wxRAISED_BORDER">0</bool>
<bool name="proxy-wxSTATIC_BORDER">0</bool>
<bool name="proxy-wxWANTS_CHARS">0</bool>
<bool name="proxy-wxNO_FULL_REPAINT_ON_RESIZE">0</bool>
<bool name="proxy-wxFULL_REPAINT_ON_RESIZE">0</bool>
<string name="proxy-Custom styles">""</string>
<long name="proxy-X">-1</long>
<long name="proxy-Y">-1</long>
<long name="proxy-Width">-1</long>
<long name="proxy-Height">-1</long>
<string name="proxy-AlignH">"Left"</string>
<string name="proxy-AlignV">"Top"</string>
<long name="proxy-Stretch factor">0</long>
<long name="proxy-Border">5</long>
<bool name="proxy-wxLEFT">1</bool>
<bool name="proxy-wxRIGHT">1</bool>
<bool name="proxy-wxTOP">1</bool>
<bool name="proxy-wxBOTTOM">0</bool>
<bool name="proxy-wxSHAPED">0</bool>
<bool name="proxy-wxADJUST_MINSIZE">1</bool>
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
</document>
<document>
<string name="title">"wxTextCtrl: ID_TEXTCTRL3"</string>
<string name="type">"dialog-control-document"</string>
<string name="filename">""</string>
<string name="icon-name">"textctrl"</string>
<long name="is-transient">0</long>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"8/11/2006"</string>
<string name="proxy-type">"wbTextCtrlProxy"</string>
<string name="proxy-Id name">"ID_TEXTCTRL3"</string>
<long name="proxy-Id value">10004</long>
<string name="proxy-Name">""</string>
<string name="proxy-Class">"wxTextCtrl"</string>
<string name="proxy-Base class">"wxTextCtrl"</string>
<bool name="proxy-External implementation">1</bool>
<bool name="proxy-Separate files">0</bool>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">"m_SheetNameSize"</string>
<string name="proxy-Initial value">""</string>
<long name="proxy-Max length">0</long>
<string name="proxy-Help text">""</string>
<string name="proxy-Tooltip text">""</string>
<string name="proxy-Background colour">""</string>
<string name="proxy-Foreground colour">""</string>
<string name="proxy-Font">""</string>
<bool name="proxy-Hidden">0</bool>
<bool name="proxy-Enabled">1</bool>
<string name="proxy-Platform">"&lt;Any platform&gt;"</string>
<string name="proxy-Data variable">""</string>
<string name="proxy-Data validator">""</string>
<string name="proxy-Data source">""</string>
<string name="proxy-Data class name">""</string>
<string name="proxy-Data class implementation filename">""</string>
<string name="proxy-Data class header filename">""</string>
<string name="proxy-Data class manager window">""</string>
<bool name="proxy-wxTE_MULTILINE">0</bool>
<bool name="proxy-wxTE_PROCESS_ENTER">0</bool>
<bool name="proxy-wxTE_PROCESS_TAB">0</bool>
<bool name="proxy-wxTE_PASSWORD">0</bool>
<bool name="proxy-wxTE_READONLY">0</bool>
<bool name="proxy-wxTE_RICH">0</bool>
<bool name="proxy-wxTE_RICH2">0</bool>
<bool name="proxy-wxTE_AUTO_URL">0</bool>
<bool name="proxy-wxTE_NOHIDESEL">0</bool>
<bool name="proxy-wxTE_LEFT">0</bool>
<bool name="proxy-wxTE_CENTRE">0</bool>
<bool name="proxy-wxTE_RIGHT">0</bool>
<bool name="proxy-wxHSCROLL">0</bool>
<bool name="proxy-wxTE_CHARWRAP">0</bool>
<bool name="proxy-wxTE_WORDWRAP">0</bool>
<bool name="proxy-wxTE_CAPITALIZE">0</bool>
<bool name="proxy-wxNO_BORDER">0</bool>
<bool name="proxy-wxSIMPLE_BORDER">0</bool>
<bool name="proxy-wxDOUBLE_BORDER">0</bool>
<bool name="proxy-wxSUNKEN_BORDER">0</bool>
<bool name="proxy-wxRAISED_BORDER">0</bool>
<bool name="proxy-wxSTATIC_BORDER">0</bool>
<bool name="proxy-wxWANTS_CHARS">0</bool>
<bool name="proxy-wxNO_FULL_REPAINT_ON_RESIZE">0</bool>
<bool name="proxy-wxFULL_REPAINT_ON_RESIZE">0</bool>
<string name="proxy-Custom styles">""</string>
<long name="proxy-X">-1</long>
<long name="proxy-Y">-1</long>
<long name="proxy-Width">-1</long>
<long name="proxy-Height">-1</long>
<string name="proxy-AlignH">"Left"</string>
<string name="proxy-AlignV">"Centre"</string>
<long name="proxy-Stretch factor">0</long>
<long name="proxy-Border">5</long>
<bool name="proxy-wxLEFT">1</bool>
<bool name="proxy-wxRIGHT">1</bool>
<bool name="proxy-wxTOP">0</bool>
<bool name="proxy-wxBOTTOM">1</bool>
<bool name="proxy-wxSHAPED">0</bool>
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
<bool name="proxy-wxTE_LINEWRAP">0</bool>
</document>
</document>
</document>
<document>
<string name="title">"Spacer"</string>
<string name="type">"dialog-control-document"</string>
<string name="filename">""</string>
<string name="icon-name">"spacer"</string>
<long name="is-transient">0</long>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"8/11/2006"</string>
<string name="proxy-type">"wbSpacerProxy"</string>
<long name="proxy-Width">5</long>
<long name="proxy-Height">5</long>
<string name="proxy-AlignH">"Expand"</string>
<string name="proxy-AlignV">"Centre"</string>
<long name="proxy-Stretch factor">1</long>
<long name="proxy-Border">5</long>
<bool name="proxy-wxLEFT">1</bool>
<bool name="proxy-wxRIGHT">1</bool>
<bool name="proxy-wxTOP">1</bool>
<bool name="proxy-wxBOTTOM">1</bool>
<bool name="proxy-wxSHAPED">0</bool>
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
<string name="proxy-Platform">"&lt;Any platform&gt;"</string>
</document>
<document>
<string name="title">"wxBoxSizer H"</string>
<string name="type">"dialog-control-document"</string>
<string name="filename">""</string>
<string name="icon-name">"sizer"</string>
<long name="is-transient">0</long>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"8/11/2006"</string>
<string name="proxy-type">"wbBoxSizerProxy"</string>
<string name="proxy-Orientation">"Horizontal"</string>
<string name="proxy-Member variable name">""</string>
<string name="proxy-AlignH">"Centre"</string>
<string name="proxy-AlignV">"Centre"</string>
<long name="proxy-Stretch factor">0</long>
<long name="proxy-Border">5</long>
<bool name="proxy-wxLEFT">1</bool>
<bool name="proxy-wxRIGHT">1</bool>
<bool name="proxy-wxTOP">1</bool>
<bool name="proxy-wxBOTTOM">1</bool>
<bool name="proxy-wxSHAPED">0</bool>
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
<string name="proxy-Platform">"&lt;Any platform&gt;"</string>
<document>
<string name="title">"wxButton: wxID_CANCEL"</string>
<string name="type">"dialog-control-document"</string>
<string name="filename">""</string>
<string name="icon-name">"dialogcontrol"</string>
<long name="is-transient">0</long>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"8/11/2006"</string>
<string name="proxy-type">"wbButtonProxy"</string>
<string name="event-handler-0">"wxEVT_COMMAND_BUTTON_CLICKED|OnCancelClick|||WinEDA_SheetPropertiesFrame"</string>
<string name="proxy-Id name">"wxID_CANCEL"</string>
<long name="proxy-Id value">5101</long>
<string name="proxy-Name">""</string>
<string name="proxy-Class">"wxButton"</string>
<string name="proxy-Base class">"wxButton"</string>
<bool name="proxy-External implementation">1</bool>
<bool name="proxy-Separate files">0</bool>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">"m_btClose"</string>
<string name="proxy-Label">"&amp;Cancel"</string>
<bool name="proxy-Default">0</bool>
<string name="proxy-Help text">""</string>
<string name="proxy-Tooltip text">""</string>
<string name="proxy-Data variable">""</string>
<string name="proxy-Data validator">""</string>
<string name="proxy-Data source">""</string>
<string name="proxy-Data class name">""</string>
<string name="proxy-Data class implementation filename">""</string>
<string name="proxy-Data class header filename">""</string>
<string name="proxy-Data class manager window">""</string>
<string name="proxy-Background colour">""</string>
<string name="proxy-Foreground colour">""</string>
<string name="proxy-Font">""</string>
<bool name="proxy-Hidden">0</bool>
<bool name="proxy-Enabled">1</bool>
<string name="proxy-Platform">"&lt;Any platform&gt;"</string>
<bool name="proxy-wxBU_LEFT">0</bool>
<bool name="proxy-wxBU_RIGHT">0</bool>
<bool name="proxy-wxBU_TOP">0</bool>
<bool name="proxy-wxBU_BOTTOM">0</bool>
<bool name="proxy-wxBU_EXACTFIT">0</bool>
<bool name="proxy-wxNO_BORDER">0</bool>
<bool name="proxy-wxWANTS_CHARS">0</bool>
<bool name="proxy-wxNO_FULL_REPAINT_ON_RESIZE">0</bool>
<bool name="proxy-wxFULL_REPAINT_ON_RESIZE">0</bool>
<string name="proxy-Custom styles">""</string>
<long name="proxy-X">-1</long>
<long name="proxy-Y">-1</long>
<long name="proxy-Width">-1</long>
<long name="proxy-Height">-1</long>
<string name="proxy-AlignH">"Centre"</string>
<string name="proxy-AlignV">"Centre"</string>
<long name="proxy-Stretch factor">0</long>
<long name="proxy-Border">5</long>
<bool name="proxy-wxLEFT">1</bool>
<bool name="proxy-wxRIGHT">1</bool>
<bool name="proxy-wxTOP">1</bool>
<bool name="proxy-wxBOTTOM">1</bool>
<bool name="proxy-wxSHAPED">0</bool>
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
</document>
<document>
<string name="title">"wxButton: wxID_OK"</string>
<string name="type">"dialog-control-document"</string>
<string name="filename">""</string>
<string name="icon-name">"dialogcontrol"</string>
<long name="is-transient">0</long>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"8/11/2006"</string>
<string name="proxy-type">"wbButtonProxy"</string>
<string name="event-handler-0">"wxEVT_COMMAND_BUTTON_CLICKED|OnOkClick"</string>
<string name="proxy-Id name">"wxID_OK"</string>
<long name="proxy-Id value">5100</long>
<string name="proxy-Name">""</string>
<string name="proxy-Class">"wxButton"</string>
<string name="proxy-Base class">"wxButton"</string>
<bool name="proxy-External implementation">1</bool>
<bool name="proxy-Separate files">0</bool>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">""</string>
<string name="proxy-Label">"&amp;OK"</string>
<bool name="proxy-Default">1</bool>
<string name="proxy-Help text">""</string>
<string name="proxy-Tooltip text">""</string>
<string name="proxy-Data variable">""</string>
<string name="proxy-Data validator">""</string>
<string name="proxy-Data source">""</string>
<string name="proxy-Data class name">""</string>
<string name="proxy-Data class implementation filename">""</string>
<string name="proxy-Data class header filename">""</string>
<string name="proxy-Data class manager window">""</string>
<string name="proxy-Background colour">""</string>
<string name="proxy-Foreground colour">""</string>
<string name="proxy-Font">""</string>
<bool name="proxy-Hidden">0</bool>
<bool name="proxy-Enabled">1</bool>
<string name="proxy-Platform">"&lt;Any platform&gt;"</string>
<bool name="proxy-wxBU_LEFT">0</bool>
<bool name="proxy-wxBU_RIGHT">0</bool>
<bool name="proxy-wxBU_TOP">0</bool>
<bool name="proxy-wxBU_BOTTOM">0</bool>
<bool name="proxy-wxBU_EXACTFIT">0</bool>
<bool name="proxy-wxNO_BORDER">0</bool>
<bool name="proxy-wxWANTS_CHARS">0</bool>
<bool name="proxy-wxNO_FULL_REPAINT_ON_RESIZE">0</bool>
<bool name="proxy-wxFULL_REPAINT_ON_RESIZE">0</bool>
<string name="proxy-Custom styles">""</string>
<long name="proxy-X">-1</long>
<long name="proxy-Y">-1</long>
<long name="proxy-Width">-1</long>
<long name="proxy-Height">-1</long>
<string name="proxy-AlignH">"Centre"</string>
<string name="proxy-AlignV">"Centre"</string>
<long name="proxy-Stretch factor">0</long>
<long name="proxy-Border">5</long>
<bool name="proxy-wxLEFT">1</bool>
<bool name="proxy-wxRIGHT">1</bool>
<bool name="proxy-wxTOP">1</bool>
<bool name="proxy-wxBOTTOM">1</bool>
<bool name="proxy-wxSHAPED">0</bool>
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
</document>
</document>
</document>
</document>
</document>
<document>
<string name="title">"Sources"</string>
<string name="type">"html-document"</string>
<string name="filename">""</string>
<string name="icon-name">"sourcesfolder"</string>
<long name="is-transient">1</long>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">1</long>
<document>
<string name="title">"sheet.rc"</string>
<string name="type">"source-editor-document"</string>
<string name="filename">"sheet.rc"</string>
<string name="icon-name">"source-editor"</string>
<long name="is-transient">0</long>
<long name="owns-file">0</long>
<long name="title-mode">1</long>
<long name="locked">0</long>
<string name="created">"8/11/2006"</string>
<string name="language">""</string>
</document>
</document>
<document>
<string name="title">"Images"</string>
<string name="type">"html-document"</string>
<string name="filename">""</string>
<string name="icon-name">"bitmapsfolder"</string>
<long name="is-transient">1</long>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">1</long>
</document>
</document>
</documents>
</anthemion-project>
#include "wx/msw/wx.rc"
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#include "class_library.h" #include "class_library.h"
#include <boost/foreach.hpp> #include <boost/foreach.hpp>
#include <wx/ffile.h>
/* /*
...@@ -32,7 +33,6 @@ ...@@ -32,7 +33,6 @@
void WinEDA_LibeditFrame::LoadOneSymbol( void ) void WinEDA_LibeditFrame::LoadOneSymbol( void )
{ {
LIB_COMPONENT* Component; LIB_COMPONENT* Component;
FILE* ImportFile;
wxString msg, err; wxString msg, err;
CMP_LIBRARY* Lib; CMP_LIBRARY* Lib;
...@@ -58,17 +58,6 @@ void WinEDA_LibeditFrame::LoadOneSymbol( void ) ...@@ -58,17 +58,6 @@ void WinEDA_LibeditFrame::LoadOneSymbol( void )
wxFileName fn = dlg.GetPath(); wxFileName fn = dlg.GetPath();
wxGetApp().SaveLastVisitedLibraryPath( fn.GetPath() ); wxGetApp().SaveLastVisitedLibraryPath( fn.GetPath() );
/* Load data */
ImportFile = wxFopen( fn.GetFullPath(), wxT( "rt" ) );
if( ImportFile == NULL )
{
msg.Printf( _( "Failed to open Symbol File <%s>" ),
GetChars( fn.GetFullPath() ) );
DisplayError( this, msg );
return;
}
Lib = new CMP_LIBRARY( LIBRARY_TYPE_SYMBOL, fn ); Lib = new CMP_LIBRARY( LIBRARY_TYPE_SYMBOL, fn );
if( !Lib->Load( err ) ) if( !Lib->Load( err ) )
...@@ -76,13 +65,10 @@ void WinEDA_LibeditFrame::LoadOneSymbol( void ) ...@@ -76,13 +65,10 @@ void WinEDA_LibeditFrame::LoadOneSymbol( void )
msg.Printf( _( "Error <%s> occurred loading symbol library <%s>." ), msg.Printf( _( "Error <%s> occurred loading symbol library <%s>." ),
GetChars( err ), GetChars( fn.GetName() ) ); GetChars( err ), GetChars( fn.GetName() ) );
DisplayError( this, msg ); DisplayError( this, msg );
fclose( ImportFile );
delete Lib; delete Lib;
return; return;
} }
fclose( ImportFile );
if( Lib->IsEmpty() ) if( Lib->IsEmpty() )
{ {
msg.Printf( _( "No components found in symbol library <%s>." ), msg.Printf( _( "No components found in symbol library <%s>." ),
...@@ -92,7 +78,11 @@ void WinEDA_LibeditFrame::LoadOneSymbol( void ) ...@@ -92,7 +78,11 @@ void WinEDA_LibeditFrame::LoadOneSymbol( void )
} }
if( Lib->GetCount() > 1 ) if( Lib->GetCount() > 1 )
DisplayError( this, _( "Warning: more than 1 part in symbol file." ) ); {
msg.Printf( _( "More than one part in symbol file <%s>." ),
GetChars( fn.GetName() ) );
wxMessageBox( msg, _( "Warning" ), wxOK | wxICON_EXCLAMATION, this );
}
Component = (LIB_COMPONENT*) Lib->GetFirstEntry(); Component = (LIB_COMPONENT*) Lib->GetFirstEntry();
LIB_DRAW_ITEM_LIST& drawList = Component->GetDrawItemList(); LIB_DRAW_ITEM_LIST& drawList = Component->GetDrawItemList();
...@@ -113,10 +103,7 @@ void WinEDA_LibeditFrame::LoadOneSymbol( void ) ...@@ -113,10 +103,7 @@ void WinEDA_LibeditFrame::LoadOneSymbol( void )
m_component->AddDrawItem( newItem ); m_component->AddDrawItem( newItem );
} }
// Remove duplicated drawings:
m_component->RemoveDuplicateDrawItems(); m_component->RemoveDuplicateDrawItems();
// Clear flags
m_component->ClearSelectedItems(); m_component->ClearSelectedItems();
GetScreen()->SetModify(); GetScreen()->SetModify();
...@@ -127,7 +114,7 @@ void WinEDA_LibeditFrame::LoadOneSymbol( void ) ...@@ -127,7 +114,7 @@ void WinEDA_LibeditFrame::LoadOneSymbol( void )
/* /*
* Save in file the current symbol. * Save the current symbol to a file.
* *
* The symbol file format is like the standard libraries, but there is only * The symbol file format is like the standard libraries, but there is only
* one symbol. * one symbol.
...@@ -137,7 +124,6 @@ void WinEDA_LibeditFrame::LoadOneSymbol( void ) ...@@ -137,7 +124,6 @@ void WinEDA_LibeditFrame::LoadOneSymbol( void )
void WinEDA_LibeditFrame::SaveOneSymbol() void WinEDA_LibeditFrame::SaveOneSymbol()
{ {
wxString msg; wxString msg;
FILE* ExportFile;
if( m_component->GetDrawItemList().empty() ) if( m_component->GetDrawItemList().empty() )
return; return;
...@@ -160,49 +146,56 @@ void WinEDA_LibeditFrame::SaveOneSymbol() ...@@ -160,49 +146,56 @@ void WinEDA_LibeditFrame::SaveOneSymbol()
wxGetApp().SaveLastVisitedLibraryPath( fn.GetPath() ); wxGetApp().SaveLastVisitedLibraryPath( fn.GetPath() );
ExportFile = wxFopen( fn.GetFullPath(), wxT( "wt" ) ); wxFFile file( fn.GetFullPath(), wxT( "wt" ) );
if( ExportFile == NULL ) if( !file.IsOpened() )
{ {
msg.Printf( _( "Unable to create <%s>" ), msg.Printf( _( "Unable to create file <%s>" ),
GetChars( fn.GetFullPath() ) ); GetChars( fn.GetFullPath() ) );
DisplayError( this, msg ); DisplayError( this, msg );
return; return;
} }
msg.Printf( _( "Save Symbol in [%s]" ), GetChars( fn.GetPath() ) ); msg.Printf( _( "Saving symbol in [%s]" ), GetChars( fn.GetPath() ) );
Affiche_Message( msg ); Affiche_Message( msg );
char Line[256]; wxString line;
fprintf( ExportFile, "%s %d.%d %s Date: %s\n", LIBFILE_IDENT,
LIB_VERSION_MAJOR, LIB_VERSION_MINOR, /* File header */
"SYMBOL", DateAndTime( Line ) ); line << wxT( LIBFILE_IDENT ) << wxT( " " ) << LIB_VERSION_MAJOR
<< wxT( "." ) << LIB_VERSION_MINOR << wxT( " SYMBOL " )
<< wxT( "Date: " ) << DateAndTime() << wxT( "\n" );
/* Component name. */ /* Component name comment and definition. */
fprintf( ExportFile, "# SYMBOL %s\n#\n", line << wxT( "# SYMBOL " ) << m_component->GetName() << wxT( "\n#\nDEF " )
CONV_TO_UTF8( m_component->GetName() ) ); << m_component->GetName() << wxT( " " );
fprintf( ExportFile, "DEF %s",
CONV_TO_UTF8( m_component->GetName() ) );
if( !m_component->GetReferenceField().m_Text.IsEmpty() ) if( !m_component->GetReferenceField().m_Text.IsEmpty() )
fprintf( ExportFile, " %s", line << m_component->GetReferenceField().m_Text << wxT( " " );
CONV_TO_UTF8( m_component->GetReferenceField().m_Text ) );
else else
fprintf( ExportFile, " ~" ); line << wxT( "~ " );
fprintf( ExportFile, " %d %d %c %c %d %d %c\n", line << 0 << wxT( " " ) << m_component->m_TextInside << wxT( " " );
0, /* unused */
m_component->m_TextInside,
m_component->m_DrawPinNum ? 'Y' : 'N',
m_component->m_DrawPinName ? 'Y' : 'N',
1, 0 /* unused */, 'N' );
m_component->GetReferenceField().Save( ExportFile ); if( m_component->m_DrawPinNum )
m_component->GetValueField().Save( ExportFile ); line << wxT( "Y " );
else
line << wxT( "N " );
LIB_DRAW_ITEM_LIST& drawList = m_component->GetDrawItemList(); if( m_component->m_DrawPinName )
line << wxT( "Y " );
else
line << wxT( "N " );
fprintf( ExportFile, "DRAW\n" ); line << wxT( "1 0 N\n" );
if( !file.Write( line )
|| !m_component->GetReferenceField().Save( file.fp() )
|| !m_component->GetValueField().Save( file.fp() )
|| !file.Write( wxT( "DRAW\n" ) ) )
return;
LIB_DRAW_ITEM_LIST& drawList = m_component->GetDrawItemList();
BOOST_FOREACH( LIB_DRAW_ITEM& item, drawList ) BOOST_FOREACH( LIB_DRAW_ITEM& item, drawList )
{ {
...@@ -214,19 +207,20 @@ void WinEDA_LibeditFrame::SaveOneSymbol() ...@@ -214,19 +207,20 @@ void WinEDA_LibeditFrame::SaveOneSymbol()
if( m_convert && item.m_Convert && ( item.m_Convert != m_convert ) ) if( m_convert && item.m_Convert && ( item.m_Convert != m_convert ) )
continue; continue;
item.Save( ExportFile ); if( !item.Save( file.fp() ) )
return;
} }
fprintf( ExportFile, "ENDDRAW\n" ); if( !file.Write( wxT( "ENDDRAW\n" ) )
fprintf( ExportFile, "ENDDEF\n" ); || !file.Write( wxT( "ENDDEF\n" ) ) )
fclose( ExportFile ); return;
} }
/* /*
* Place anchor reference coordinators for current component * Place anchor reference coordinators for current component
* *
* All coordinates of the object are offset to the cursor position * / * All coordinates of the object are offset to the cursor position.
*/ */
void WinEDA_LibeditFrame::PlaceAncre() void WinEDA_LibeditFrame::PlaceAncre()
{ {
......
...@@ -159,7 +159,7 @@ void WinEDA_ViewlibFrame::ReCreateHToolbar() ...@@ -159,7 +159,7 @@ void WinEDA_ViewlibFrame::ReCreateHToolbar()
SelpartBox->Enable( parts_count > 1 ); SelpartBox->Enable( parts_count > 1 );
m_HToolBar->EnableTool( ID_LIBVIEW_VIEWDOC, m_HToolBar->EnableTool( ID_LIBVIEW_VIEWDOC,
entry && ( entry->m_DocFile != wxEmptyString ) ); entry && ( entry->GetDocFileName() != wxEmptyString ) );
} }
......
...@@ -51,8 +51,8 @@ void WinEDA_ViewlibFrame::Process_Special_Functions( wxCommandEvent& event ) ...@@ -51,8 +51,8 @@ void WinEDA_ViewlibFrame::Process_Special_Functions( wxCommandEvent& event )
LibEntry = CMP_LIBRARY::FindLibraryEntry( m_entryName, LibEntry = CMP_LIBRARY::FindLibraryEntry( m_entryName,
m_libraryName ); m_libraryName );
if( LibEntry && ( !LibEntry->m_DocFile.IsEmpty() ) ) if( LibEntry && ( !LibEntry->GetDocFileName().IsEmpty() ) )
GetAssociatedDocument( this, LibEntry->m_DocFile, GetAssociatedDocument( this, LibEntry->GetDocFileName(),
&wxGetApp().GetLibraryPathList() ); &wxGetApp().GetLibraryPathList() );
break; break;
...@@ -280,12 +280,12 @@ void WinEDA_ViewlibFrame::RedrawActiveWindow( wxDC* DC, bool EraseBg ) ...@@ -280,12 +280,12 @@ void WinEDA_ViewlibFrame::RedrawActiveWindow( wxDC* DC, bool EraseBg )
DrawPanel->DrawBackGround( DC ); DrawPanel->DrawBackGround( DC );
if( entry->Type != ROOT ) if( entry->isAlias() )
{ {
LIB_ALIAS* alias = (LIB_ALIAS*) entry; LIB_ALIAS* alias = (LIB_ALIAS*) entry;
component = alias->GetComponent(); component = alias->GetComponent();
wxASSERT( component != NULL && component->Type == ROOT ); wxASSERT( component != NULL && component->isComponent() );
msg = alias->GetName(); msg = alias->GetName();
...@@ -313,8 +313,8 @@ void WinEDA_ViewlibFrame::RedrawActiveWindow( wxDC* DC, bool EraseBg ) ...@@ -313,8 +313,8 @@ void WinEDA_ViewlibFrame::RedrawActiveWindow( wxDC* DC, bool EraseBg )
ClearMsgPanel(); ClearMsgPanel();
AppendMsgPanel( _( "Part" ), component->GetName(), BLUE, 6 ); AppendMsgPanel( _( "Part" ), component->GetName(), BLUE, 6 );
AppendMsgPanel( _( "Alias" ), msg, RED, 6 ); AppendMsgPanel( _( "Alias" ), msg, RED, 6 );
AppendMsgPanel( _( "Description" ), entry->m_Doc, CYAN, 6 ); AppendMsgPanel( _( "Description" ), entry->GetDescription(), CYAN, 6 );
AppendMsgPanel( _( "Key words" ), entry->m_KeyWord, DARKDARKGRAY ); AppendMsgPanel( _( "Key words" ), entry->GetKeyWords(), DARKDARKGRAY );
DrawPanel->Trace_Curseur( DC ); DrawPanel->Trace_Curseur( DC );
} }
...@@ -1234,15 +1234,14 @@ bool DRC::doPadToPadsDrc( D_PAD* aRefPad, LISTE_PAD* aStart, LISTE_PAD* aEnd, ...@@ -1234,15 +1234,14 @@ bool DRC::doPadToPadsDrc( D_PAD* aRefPad, LISTE_PAD* aStart, LISTE_PAD* aEnd,
wxPoint rotate( wxPoint p, int angle ) wxPoint rotate( wxPoint p, int angle )
{ {
wxPoint n; wxPoint n;
float theta = M_PI * angle/1800; double theta = M_PI * (double) angle / 1800.0;
n.x = float(p.x) * cos(theta) - float(p.y) * sin(theta); n.x = wxRound( (double ) p.x * cos( theta ) - (double) p.y * sin( theta ) );
n.y = p.x * sin(theta) + p.y * cos(theta); n.y = wxRound( p.x * sin( theta ) + p.y * cos( theta ) );
return n; return n;
} }
/**************************************************************************************/
bool DRC::checkClearancePadToPad( D_PAD* aRefPad, D_PAD* aPad ) bool DRC::checkClearancePadToPad( D_PAD* aRefPad, D_PAD* aPad )
/***************************************************************************************/
{ {
wxPoint rel_pos; wxPoint rel_pos;
int dist;; int dist;;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment