Loading change_log.txt +18 −4 Original line number Original line Diff line number Diff line Loading @@ -4,17 +4,33 @@ Started 2007-June-11 Please add newer entries at the top, list the date and your name with Please add newer entries at the top, list the date and your name with email address. email address. 2007-Oct-30 UPDATE Dick Hollenbeck <dick@softplc.com> ================================================================================ + pcbnew added BOARD_ITEM::Save() and to all derived classes as well. Made virtual and removed all UI code from these utility functions. removed WriteDesc() functions from all BOARD_ITEM derived classes, although Keeping old ones in commented out form for a while for reference. @todo: delete these from *.cpp files eventually. zones.cpp, clean up in prep for enhancements. + gerbview fixed bug which came about when BOARD::~BOARD() started deleting the objects that a BOARD owns. export_to_pcbnew.cpp was not consistent with this design and was crashing. Also, export_to_pcbnew.cpp now uses the simple BOARD::Save() function. It was another place to maintain the PCB file format, rather than simply putting that knowledge into one place like BOARD::Save(). 2007-Oct-30 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr> 2007-Oct-30 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr> ================================================================================ ================================================================================ +cvpcb: listboxes.cpp problem solved: exists only under windows +cvpcb: listboxes.cpp problem solved: exists only under windows now apply to windows only, because this Workaround creates a problem undex linux now apply to windows only, because this Workaround creates a problem undex linux +others: +others: some very minor problems solved some very minor problems solved +eeschema: +eeschema: in B.O.M.: the footprint field can be added to the field list in B.O.M.: the footprint field can be added to the field list 2007-Oct-29 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr> 2007-Oct-29 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr> ================================================================================ ================================================================================ +cvpcb: listboxes.cpp problem solved: Workaround for a curious bug in wxWidgets: +cvpcb: listboxes.cpp problem solved: Workaround for a curious bug in wxWidgets: Loading @@ -33,12 +49,10 @@ email address. + all: + all: remove unused files. remove unused files. some translations some translations +cvpcb: +cvpcb: set flag wxFRAME_FLOAT_ON_PARENT when create the footprint 3D frame and the set flag wxFRAME_FLOAT_ON_PARENT when create the footprint 3D frame and the display frame display frame minor other changes minor other changes + pcbnew: + pcbnew: Use collector class to locate items in modedit. Use collector class to locate items in modedit. This is a big enhancement, This is a big enhancement, Loading common/base_struct.cpp +1 −1 Original line number Original line Diff line number Diff line Loading @@ -58,7 +58,7 @@ void EDA_BaseStruct::InitVars() /* Gestion de l'etat (status) de la structure (active, deleted..) */ /* Gestion de l'etat (status) de la structure (active, deleted..) */ int EDA_BaseStruct::GetState( int type ) int EDA_BaseStruct::GetState( int type ) const { { return m_Status & type; return m_Status & type; } } Loading gerbview/export_to_pcbnew.cpp +24 −64 Original line number Original line Diff line number Diff line Loading @@ -125,7 +125,7 @@ static bool WriteGeneralDescrPcb( BOARD* Pcb, FILE* File ) /*******************************************************************/ /*******************************************************************/ static int SavePcbFormatAscii( WinEDA_GerberFrame* frame, FILE* File, static int SavePcbFormatAscii( WinEDA_GerberFrame* frame, FILE* aFile, int* LayerLookUpTable ) int* LayerLookUpTable ) /*******************************************************************/ /*******************************************************************/ Loading @@ -136,20 +136,17 @@ static int SavePcbFormatAscii( WinEDA_GerberFrame* frame, FILE* File, * @return 1 if OK, 0 if fail * @return 1 if OK, 0 if fail */ */ { { char Line[256]; char line[256]; TRACK* track; TRACK* track; TRACK* next_track; BOARD* gerberPcb = frame->m_Pcb; BOARD_ITEM* PtStruct; BOARD* pcb; BOARD_ITEM* NextStruct; BOARD* GerberPcb = frame->m_Pcb; BOARD* Pcb; wxBeginBusyCursor(); wxBeginBusyCursor(); /* Create an image of gerber data */ // create an image of gerber data Pcb = new BOARD( NULL, frame ); pcb = new BOARD( NULL, frame ); for( track = GerberPcb->m_Track; track != NULL; track = (TRACK*) track->Pnext ) for( track = gerberPcb->m_Track; track; track = track->Next() ) { { int layer = track->GetLayer(); int layer = track->GetLayer(); int pcb_layer_number = LayerLookUpTable[layer]; int pcb_layer_number = LayerLookUpTable[layer]; Loading @@ -158,23 +155,23 @@ static int SavePcbFormatAscii( WinEDA_GerberFrame* frame, FILE* File, if( pcb_layer_number > CMP_N ) if( pcb_layer_number > CMP_N ) { { DRAWSEGMENT* drawitem = new DRAWSEGMENT( NULL, TYPEDRAWSEGMENT ); DRAWSEGMENT* drawitem = new DRAWSEGMENT( pcb, TYPEDRAWSEGMENT ); drawitem->SetLayer( pcb_layer_number ); drawitem->SetLayer( pcb_layer_number ); drawitem->m_Start = track->m_Start; drawitem->m_Start = track->m_Start; drawitem->m_End = track->m_End; drawitem->m_End = track->m_End; drawitem->m_Width = track->m_Width; drawitem->m_Width = track->m_Width; drawitem->Pnext = Pcb->m_Drawings; drawitem->Pnext = pcb->m_Drawings; Pcb->m_Drawings = drawitem; pcb->m_Drawings = drawitem; } } else else { { TRACK* newtrack; TRACK* newtrack; // replace spots with vias when possible // replace spots with vias when possible if( (track->m_Shape == S_SPOT_CIRCLE) if( track->m_Shape == S_SPOT_CIRCLE || (track->m_Shape == S_SPOT_RECT) || track->m_Shape == S_SPOT_RECT || (track->m_Shape == S_SPOT_OVALE) ) || track->m_Shape == S_SPOT_OVALE ) { { newtrack = new SEGVIA( (const SEGVIA&) *track ); newtrack = new SEGVIA( (const SEGVIA&) *track ); Loading @@ -198,19 +195,20 @@ static int SavePcbFormatAscii( WinEDA_GerberFrame* frame, FILE* File, newtrack->SetLayer( pcb_layer_number ); newtrack->SetLayer( pcb_layer_number ); } } newtrack->Insert( Pcb, NULL ); newtrack->Insert( pcb, NULL ); } } } } // delete redundant vias // delete redundant vias for( track = Pcb->m_Track; track != NULL; track = track->Next() ) for( track = pcb->m_Track; track; track = track->Next() ) { { if( track->m_Shape != VIA_THROUGH ) if( track->m_Shape != VIA_THROUGH ) continue; continue; // Search and delete others vias // Search and delete others vias TRACK* next_track; TRACK* alt_track = track->Next(); TRACK* alt_track = track->Next(); for( ; alt_track != NULL; alt_track = next_track ) for( ; alt_track; alt_track = next_track ) { { next_track = alt_track->Next(); next_track = alt_track->Next(); if( alt_track->m_Shape != VIA_THROUGH ) if( alt_track->m_Shape != VIA_THROUGH ) Loading @@ -229,54 +227,16 @@ static int SavePcbFormatAscii( WinEDA_GerberFrame* frame, FILE* File, setlocale( LC_NUMERIC, "C" ); setlocale( LC_NUMERIC, "C" ); // write the PCB heading // write the PCB heading fprintf( File, "PCBNEW-BOARD Version %d date %s\n\n", g_CurrentVersionPCB, fprintf( aFile, "PCBNEW-BOARD Version %d date %s\n\n", g_CurrentVersionPCB, DateAndTime( Line ) ); DateAndTime( line ) ); WriteGeneralDescrPcb( Pcb, File ); WriteGeneralDescrPcb( pcb, aFile ); WriteSetup( File, Pcb ); WriteSetup( aFile, pcb ); // write the useful part of the pcb // write the useful part of the pcb PtStruct = Pcb->m_Drawings; pcb->Save( aFile ); for( ; PtStruct != NULL; PtStruct = PtStruct->Next() ) { switch( PtStruct->Type() ) { case TYPETEXTE: ( (TEXTE_PCB*) PtStruct )->WriteTextePcbDescr( File ); break; case TYPEDRAWSEGMENT: ( (DRAWSEGMENT*) PtStruct )->WriteDrawSegmentDescr( File ); break; default: break; } } fprintf( File, "$TRACK\n" ); for( track = Pcb->m_Track; track != NULL; track = (TRACK*) track->Pnext ) { track->WriteTrackDescr( File ); } fprintf( File, "$EndTRACK\n" ); fprintf( File, "$EndBOARD\n" ); // Delete the copy for( PtStruct = Pcb->m_Drawings; PtStruct != NULL; PtStruct = NextStruct ) { NextStruct = PtStruct->Next(); delete PtStruct; } for( track = Pcb->m_Track; track != NULL; track = next_track ) { next_track = (TRACK*) track->Pnext; delete track; } delete Pcb; // the destructor should destroy all owned sub-objects delete pcb; setlocale( LC_NUMERIC, "" ); // revert to the current locale setlocale( LC_NUMERIC, "" ); // revert to the current locale wxEndBusyCursor(); wxEndBusyCursor(); Loading include/base_struct.h +12 −1 Original line number Original line Diff line number Diff line Loading @@ -191,7 +191,7 @@ public: /* Gestion de l'etat (status) de la structure (active, deleted..) */ /* Gestion de l'etat (status) de la structure (active, deleted..) */ int GetState( int type ); int GetState( int type ) const; void SetState( int type, int state ); void SetState( int type, int state ); int ReturnStatus() const { return m_Status; } int ReturnStatus() const { return m_Status; } Loading Loading @@ -490,6 +490,17 @@ public: * @todo: make this virtual and split into each derived class * @todo: make this virtual and split into each derived class */ */ const char** MenuIcon() const; const char** MenuIcon() const; /** * Function Save * writes the data structures for this object out to a FILE in "*.pcb" format. * @param aFile The FILE to write to. * @return bool - true if success writing else false. */ virtual bool Save( FILE* aFile ) const = 0; }; }; Loading include/pcbstruct.h +18 −1 Original line number Original line Diff line number Diff line Loading @@ -289,6 +289,15 @@ public: EQUIPOT* FindNet( int aNetcode ) const; EQUIPOT* FindNet( int aNetcode ) const; /** * Function Save * writes the data structures for this object out to a FILE in "*.pcb" format. * @param aFile The FILE to write to. * @return bool - true if success writing else false. */ bool Save( FILE* aFile ) const; /** /** * Function GetClass * Function GetClass * returns the class name. * returns the class name. Loading Loading @@ -370,7 +379,15 @@ public: ~DRAWSEGMENT(); ~DRAWSEGMENT(); // Read/write data // Read/write data bool WriteDrawSegmentDescr( FILE* File ); /** * Function Save * writes the data structures for this object out to a FILE in "*.pcb" format. * @param aFile The FILE to write to. * @return bool - true if success writing else false. */ bool Save( FILE* aFile ) const; bool ReadDrawSegmentDescr( FILE* File, int* LineNum ); bool ReadDrawSegmentDescr( FILE* File, int* LineNum ); /* remove this from the linked list */ /* remove this from the linked list */ Loading Loading
change_log.txt +18 −4 Original line number Original line Diff line number Diff line Loading @@ -4,17 +4,33 @@ Started 2007-June-11 Please add newer entries at the top, list the date and your name with Please add newer entries at the top, list the date and your name with email address. email address. 2007-Oct-30 UPDATE Dick Hollenbeck <dick@softplc.com> ================================================================================ + pcbnew added BOARD_ITEM::Save() and to all derived classes as well. Made virtual and removed all UI code from these utility functions. removed WriteDesc() functions from all BOARD_ITEM derived classes, although Keeping old ones in commented out form for a while for reference. @todo: delete these from *.cpp files eventually. zones.cpp, clean up in prep for enhancements. + gerbview fixed bug which came about when BOARD::~BOARD() started deleting the objects that a BOARD owns. export_to_pcbnew.cpp was not consistent with this design and was crashing. Also, export_to_pcbnew.cpp now uses the simple BOARD::Save() function. It was another place to maintain the PCB file format, rather than simply putting that knowledge into one place like BOARD::Save(). 2007-Oct-30 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr> 2007-Oct-30 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr> ================================================================================ ================================================================================ +cvpcb: listboxes.cpp problem solved: exists only under windows +cvpcb: listboxes.cpp problem solved: exists only under windows now apply to windows only, because this Workaround creates a problem undex linux now apply to windows only, because this Workaround creates a problem undex linux +others: +others: some very minor problems solved some very minor problems solved +eeschema: +eeschema: in B.O.M.: the footprint field can be added to the field list in B.O.M.: the footprint field can be added to the field list 2007-Oct-29 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr> 2007-Oct-29 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr> ================================================================================ ================================================================================ +cvpcb: listboxes.cpp problem solved: Workaround for a curious bug in wxWidgets: +cvpcb: listboxes.cpp problem solved: Workaround for a curious bug in wxWidgets: Loading @@ -33,12 +49,10 @@ email address. + all: + all: remove unused files. remove unused files. some translations some translations +cvpcb: +cvpcb: set flag wxFRAME_FLOAT_ON_PARENT when create the footprint 3D frame and the set flag wxFRAME_FLOAT_ON_PARENT when create the footprint 3D frame and the display frame display frame minor other changes minor other changes + pcbnew: + pcbnew: Use collector class to locate items in modedit. Use collector class to locate items in modedit. This is a big enhancement, This is a big enhancement, Loading
common/base_struct.cpp +1 −1 Original line number Original line Diff line number Diff line Loading @@ -58,7 +58,7 @@ void EDA_BaseStruct::InitVars() /* Gestion de l'etat (status) de la structure (active, deleted..) */ /* Gestion de l'etat (status) de la structure (active, deleted..) */ int EDA_BaseStruct::GetState( int type ) int EDA_BaseStruct::GetState( int type ) const { { return m_Status & type; return m_Status & type; } } Loading
gerbview/export_to_pcbnew.cpp +24 −64 Original line number Original line Diff line number Diff line Loading @@ -125,7 +125,7 @@ static bool WriteGeneralDescrPcb( BOARD* Pcb, FILE* File ) /*******************************************************************/ /*******************************************************************/ static int SavePcbFormatAscii( WinEDA_GerberFrame* frame, FILE* File, static int SavePcbFormatAscii( WinEDA_GerberFrame* frame, FILE* aFile, int* LayerLookUpTable ) int* LayerLookUpTable ) /*******************************************************************/ /*******************************************************************/ Loading @@ -136,20 +136,17 @@ static int SavePcbFormatAscii( WinEDA_GerberFrame* frame, FILE* File, * @return 1 if OK, 0 if fail * @return 1 if OK, 0 if fail */ */ { { char Line[256]; char line[256]; TRACK* track; TRACK* track; TRACK* next_track; BOARD* gerberPcb = frame->m_Pcb; BOARD_ITEM* PtStruct; BOARD* pcb; BOARD_ITEM* NextStruct; BOARD* GerberPcb = frame->m_Pcb; BOARD* Pcb; wxBeginBusyCursor(); wxBeginBusyCursor(); /* Create an image of gerber data */ // create an image of gerber data Pcb = new BOARD( NULL, frame ); pcb = new BOARD( NULL, frame ); for( track = GerberPcb->m_Track; track != NULL; track = (TRACK*) track->Pnext ) for( track = gerberPcb->m_Track; track; track = track->Next() ) { { int layer = track->GetLayer(); int layer = track->GetLayer(); int pcb_layer_number = LayerLookUpTable[layer]; int pcb_layer_number = LayerLookUpTable[layer]; Loading @@ -158,23 +155,23 @@ static int SavePcbFormatAscii( WinEDA_GerberFrame* frame, FILE* File, if( pcb_layer_number > CMP_N ) if( pcb_layer_number > CMP_N ) { { DRAWSEGMENT* drawitem = new DRAWSEGMENT( NULL, TYPEDRAWSEGMENT ); DRAWSEGMENT* drawitem = new DRAWSEGMENT( pcb, TYPEDRAWSEGMENT ); drawitem->SetLayer( pcb_layer_number ); drawitem->SetLayer( pcb_layer_number ); drawitem->m_Start = track->m_Start; drawitem->m_Start = track->m_Start; drawitem->m_End = track->m_End; drawitem->m_End = track->m_End; drawitem->m_Width = track->m_Width; drawitem->m_Width = track->m_Width; drawitem->Pnext = Pcb->m_Drawings; drawitem->Pnext = pcb->m_Drawings; Pcb->m_Drawings = drawitem; pcb->m_Drawings = drawitem; } } else else { { TRACK* newtrack; TRACK* newtrack; // replace spots with vias when possible // replace spots with vias when possible if( (track->m_Shape == S_SPOT_CIRCLE) if( track->m_Shape == S_SPOT_CIRCLE || (track->m_Shape == S_SPOT_RECT) || track->m_Shape == S_SPOT_RECT || (track->m_Shape == S_SPOT_OVALE) ) || track->m_Shape == S_SPOT_OVALE ) { { newtrack = new SEGVIA( (const SEGVIA&) *track ); newtrack = new SEGVIA( (const SEGVIA&) *track ); Loading @@ -198,19 +195,20 @@ static int SavePcbFormatAscii( WinEDA_GerberFrame* frame, FILE* File, newtrack->SetLayer( pcb_layer_number ); newtrack->SetLayer( pcb_layer_number ); } } newtrack->Insert( Pcb, NULL ); newtrack->Insert( pcb, NULL ); } } } } // delete redundant vias // delete redundant vias for( track = Pcb->m_Track; track != NULL; track = track->Next() ) for( track = pcb->m_Track; track; track = track->Next() ) { { if( track->m_Shape != VIA_THROUGH ) if( track->m_Shape != VIA_THROUGH ) continue; continue; // Search and delete others vias // Search and delete others vias TRACK* next_track; TRACK* alt_track = track->Next(); TRACK* alt_track = track->Next(); for( ; alt_track != NULL; alt_track = next_track ) for( ; alt_track; alt_track = next_track ) { { next_track = alt_track->Next(); next_track = alt_track->Next(); if( alt_track->m_Shape != VIA_THROUGH ) if( alt_track->m_Shape != VIA_THROUGH ) Loading @@ -229,54 +227,16 @@ static int SavePcbFormatAscii( WinEDA_GerberFrame* frame, FILE* File, setlocale( LC_NUMERIC, "C" ); setlocale( LC_NUMERIC, "C" ); // write the PCB heading // write the PCB heading fprintf( File, "PCBNEW-BOARD Version %d date %s\n\n", g_CurrentVersionPCB, fprintf( aFile, "PCBNEW-BOARD Version %d date %s\n\n", g_CurrentVersionPCB, DateAndTime( Line ) ); DateAndTime( line ) ); WriteGeneralDescrPcb( Pcb, File ); WriteGeneralDescrPcb( pcb, aFile ); WriteSetup( File, Pcb ); WriteSetup( aFile, pcb ); // write the useful part of the pcb // write the useful part of the pcb PtStruct = Pcb->m_Drawings; pcb->Save( aFile ); for( ; PtStruct != NULL; PtStruct = PtStruct->Next() ) { switch( PtStruct->Type() ) { case TYPETEXTE: ( (TEXTE_PCB*) PtStruct )->WriteTextePcbDescr( File ); break; case TYPEDRAWSEGMENT: ( (DRAWSEGMENT*) PtStruct )->WriteDrawSegmentDescr( File ); break; default: break; } } fprintf( File, "$TRACK\n" ); for( track = Pcb->m_Track; track != NULL; track = (TRACK*) track->Pnext ) { track->WriteTrackDescr( File ); } fprintf( File, "$EndTRACK\n" ); fprintf( File, "$EndBOARD\n" ); // Delete the copy for( PtStruct = Pcb->m_Drawings; PtStruct != NULL; PtStruct = NextStruct ) { NextStruct = PtStruct->Next(); delete PtStruct; } for( track = Pcb->m_Track; track != NULL; track = next_track ) { next_track = (TRACK*) track->Pnext; delete track; } delete Pcb; // the destructor should destroy all owned sub-objects delete pcb; setlocale( LC_NUMERIC, "" ); // revert to the current locale setlocale( LC_NUMERIC, "" ); // revert to the current locale wxEndBusyCursor(); wxEndBusyCursor(); Loading
include/base_struct.h +12 −1 Original line number Original line Diff line number Diff line Loading @@ -191,7 +191,7 @@ public: /* Gestion de l'etat (status) de la structure (active, deleted..) */ /* Gestion de l'etat (status) de la structure (active, deleted..) */ int GetState( int type ); int GetState( int type ) const; void SetState( int type, int state ); void SetState( int type, int state ); int ReturnStatus() const { return m_Status; } int ReturnStatus() const { return m_Status; } Loading Loading @@ -490,6 +490,17 @@ public: * @todo: make this virtual and split into each derived class * @todo: make this virtual and split into each derived class */ */ const char** MenuIcon() const; const char** MenuIcon() const; /** * Function Save * writes the data structures for this object out to a FILE in "*.pcb" format. * @param aFile The FILE to write to. * @return bool - true if success writing else false. */ virtual bool Save( FILE* aFile ) const = 0; }; }; Loading
include/pcbstruct.h +18 −1 Original line number Original line Diff line number Diff line Loading @@ -289,6 +289,15 @@ public: EQUIPOT* FindNet( int aNetcode ) const; EQUIPOT* FindNet( int aNetcode ) const; /** * Function Save * writes the data structures for this object out to a FILE in "*.pcb" format. * @param aFile The FILE to write to. * @return bool - true if success writing else false. */ bool Save( FILE* aFile ) const; /** /** * Function GetClass * Function GetClass * returns the class name. * returns the class name. Loading Loading @@ -370,7 +379,15 @@ public: ~DRAWSEGMENT(); ~DRAWSEGMENT(); // Read/write data // Read/write data bool WriteDrawSegmentDescr( FILE* File ); /** * Function Save * writes the data structures for this object out to a FILE in "*.pcb" format. * @param aFile The FILE to write to. * @return bool - true if success writing else false. */ bool Save( FILE* aFile ) const; bool ReadDrawSegmentDescr( FILE* File, int* LineNum ); bool ReadDrawSegmentDescr( FILE* File, int* LineNum ); /* remove this from the linked list */ /* remove this from the linked list */ Loading