bug fixes

This commit is contained in:
dickelbeck 2008-02-19 07:06:58 +00:00
parent c79c0d9c64
commit c04619bb50
4 changed files with 69 additions and 57 deletions

View File

@ -8,9 +8,16 @@ email address.
2008-Feb-18 UPDATE Dick Hollenbeck <dick@softplc.com> 2008-Feb-18 UPDATE Dick Hollenbeck <dick@softplc.com>
================================================================================ ================================================================================
+pcbnew +pcbnew
Start to use BOARD::GetLayerName() in anticipation of configurable layer * Start to use BOARD::GetLayerName() in anticipation of configurable layer
names per board. Comment out a printf() which will lock up pcbnew when names per board.
* Comment out a printf() which will lock up pcbnew when
it is run under kicad project manager and the interprocess fifo gets filled. it is run under kicad project manager and the interprocess fifo gets filled.
* Cross probe was not showing the not found message properly. wxString was
being used for two purposes, input and Printf() destination.
+gerbview
Now loads all gerber files given on the command line, not just one. The
first file is loaded into layer 1 (index 0), the second one is loaded
into layer 2 (index 1) etc.
2008-Feb-18 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr> 2008-Feb-18 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>

View File

@ -106,13 +106,12 @@ void WinEDA_SchematicFrame::SendMessageToPCBNEW( EDA_BaseStruct* objectT
{ {
case DRAW_PART_TEXT_STRUCT_TYPE: case DRAW_PART_TEXT_STRUCT_TYPE:
case COMPONENT_FIELD_DRAW_TYPE: case COMPONENT_FIELD_DRAW_TYPE:
{ {
// PartTextStruct* Field = (PartTextStruct*) objectToSync; if( LibItem == NULL )
if( LibItem == NULL ) break;
break; sprintf( Line, "$PART: %s", CONV_TO_UTF8( LibItem->m_Field[REFERENCE].m_Text ) );
sprintf( Line, "$PART: %s", CONV_TO_UTF8( LibItem->m_Field[REFERENCE].m_Text ) ); SendCommand( MSG_TO_PCB, Line );
SendCommand( MSG_TO_PCB, Line ); }
}
break; break;
case DRAW_LIB_ITEM_STRUCT_TYPE: case DRAW_LIB_ITEM_STRUCT_TYPE:
@ -124,6 +123,7 @@ void WinEDA_SchematicFrame::SendMessageToPCBNEW( EDA_BaseStruct* objectT
case COMPONENT_PIN_DRAW_TYPE: case COMPONENT_PIN_DRAW_TYPE:
if( LibItem == NULL ) if( LibItem == NULL )
break; break;
Pin = (LibDrawPin*) objectToSync; Pin = (LibDrawPin*) objectToSync;
if( Pin->m_PinNum ) if( Pin->m_PinNum )
{ {

View File

@ -93,7 +93,7 @@ EDA_BaseStruct* WinEDA_SchematicFrame::FindComponentAndItem(
sheet = SheetList.GetFirst(); sheet = SheetList.GetFirst();
if( !Find_in_hierarchy ) if( !Find_in_hierarchy )
sheet = m_CurrentSheet; sheet = m_CurrentSheet;
for( ; sheet != NULL; sheet = SheetList.GetNext() ) for( ; sheet != NULL; sheet = SheetList.GetNext() )
{ {
@ -115,7 +115,7 @@ EDA_BaseStruct* WinEDA_SchematicFrame::FindComponentAndItem(
case 0: // Find component only case 0: // Find component only
NotFound = FALSE; NotFound = FALSE;
pos = pSch->m_Pos; pos = pSch->m_Pos;
break; break;
case 1: // find a pin case 1: // find a pin
pos = pSch->m_Pos; // temporary: will be changed if the pin is found pos = pSch->m_Pos; // temporary: will be changed if the pin is found
@ -154,8 +154,8 @@ EDA_BaseStruct* WinEDA_SchematicFrame::FindComponentAndItem(
{ {
sheet->LastScreen()->SetZoom( GetScreen()->GetZoom() ); sheet->LastScreen()->SetZoom( GetScreen()->GetZoom() );
*m_CurrentSheet = *sheet; *m_CurrentSheet = *sheet;
ActiveScreen = m_CurrentSheet->LastScreen(); ActiveScreen = m_CurrentSheet->LastScreen();
m_CurrentSheet->UpdateAllScreenReferences(); m_CurrentSheet->UpdateAllScreenReferences();
DoCenterAndRedraw = TRUE; DoCenterAndRedraw = TRUE;
} }
wxPoint delta; wxPoint delta;
@ -180,13 +180,13 @@ EDA_BaseStruct* WinEDA_SchematicFrame::FindComponentAndItem(
curpos.y -= GetScreen()->m_StartVisu.y; curpos.y -= GetScreen()->m_StartVisu.y;
/* Il y a peut-etre necessite de recadrer le dessin: */ /* Il y a peut-etre necessite de recadrer le dessin: */
#define MARGIN 30 #define MARGIN 30
if( (curpos.x <= MARGIN) || (curpos.x >= DrawAreaSize.x - MARGIN) if( (curpos.x <= MARGIN) || (curpos.x >= DrawAreaSize.x - MARGIN)
|| (curpos.y <= MARGIN) || (curpos.y >= DrawAreaSize.y - MARGIN) ) || (curpos.y <= MARGIN) || (curpos.y >= DrawAreaSize.y - MARGIN) )
{ {
DoCenterAndRedraw = true;; DoCenterAndRedraw = true;;
} }
#undef MARGIN #undef MARGIN
if ( DoCenterAndRedraw ) if ( DoCenterAndRedraw )
Recadre_Trace( mouseWarp ); Recadre_Trace( mouseWarp );
@ -242,11 +242,11 @@ EDA_BaseStruct* WinEDA_SchematicFrame::FindComponentAndItem(
{ {
if( !msg_item.IsEmpty() ) if( !msg_item.IsEmpty() )
msg += wxT( " " ) + msg_item; msg += wxT( " " ) + msg_item;
msg += _( " Found" ); msg += _( " found" );
} }
else else
{ {
msg += _( " Found" ); msg += _( " found" );
if( !msg_item.IsEmpty() ) if( !msg_item.IsEmpty() )
{ {
msg += wxT( " but " ) + msg_item + _( " not found" ); msg += wxT( " but " ) + msg_item + _( " not found" );
@ -341,8 +341,8 @@ EDA_BaseStruct* WinEDA_SchematicFrame::FindMarker( int SearchType )
{ {
sheet->LastScreen()->SetZoom( GetScreen()->GetZoom() ); sheet->LastScreen()->SetZoom( GetScreen()->GetZoom() );
*m_CurrentSheet = *sheet; *m_CurrentSheet = *sheet;
ActiveScreen = m_CurrentSheet->LastScreen(); ActiveScreen = m_CurrentSheet->LastScreen();
m_CurrentSheet->UpdateAllScreenReferences(); m_CurrentSheet->UpdateAllScreenReferences();
DoCenterAndRedraw = TRUE; DoCenterAndRedraw = TRUE;
} }
@ -352,18 +352,18 @@ EDA_BaseStruct* WinEDA_SchematicFrame::FindMarker( int SearchType )
// calcul des coord curseur avec origine = screen // calcul des coord curseur avec origine = screen
DrawPanel->GetViewStart( &m_CurrentSheet->LastScreen()->m_StartVisu.x, DrawPanel->GetViewStart( &m_CurrentSheet->LastScreen()->m_StartVisu.x,
&m_CurrentSheet->LastScreen()->m_StartVisu.y ); &m_CurrentSheet->LastScreen()->m_StartVisu.y );
curpos.x -= m_CurrentSheet->LastScreen()->m_StartVisu.x; curpos.x -= m_CurrentSheet->LastScreen()->m_StartVisu.x;
curpos.y -= m_CurrentSheet->LastScreen()->m_StartVisu.y; curpos.y -= m_CurrentSheet->LastScreen()->m_StartVisu.y;
// reposition the window if the chosen marker is off screen. // reposition the window if the chosen marker is off screen.
#define MARGIN 30 #define MARGIN 30
if( (curpos.x <= MARGIN) || (curpos.x >= DrawAreaSize.x - MARGIN) if( (curpos.x <= MARGIN) || (curpos.x >= DrawAreaSize.x - MARGIN)
|| (curpos.y <= MARGIN) || (curpos.y >= DrawAreaSize.y - MARGIN) ) || (curpos.y <= MARGIN) || (curpos.y >= DrawAreaSize.y - MARGIN) )
{ {
DoCenterAndRedraw = true;; DoCenterAndRedraw = true;;
} }
#undef MARGIN #undef MARGIN
if( DoCenterAndRedraw ) if( DoCenterAndRedraw )
Recadre_Trace( TRUE ); Recadre_Trace( TRUE );
@ -372,13 +372,13 @@ EDA_BaseStruct* WinEDA_SchematicFrame::FindMarker( int SearchType )
wxClientDC dc( DrawPanel ); wxClientDC dc( DrawPanel );
DrawPanel->PrepareGraphicContext( &dc ); DrawPanel->PrepareGraphicContext( &dc );
EXCHG( old_cursor_position, sheet->LastScreen()->m_Curseur ); EXCHG( old_cursor_position, sheet->LastScreen()->m_Curseur );
DrawPanel->CursorOff( &dc ); DrawPanel->CursorOff( &dc );
GRMouseWarp( DrawPanel, curpos ); GRMouseWarp( DrawPanel, curpos );
EXCHG( old_cursor_position, sheet->LastScreen()->m_Curseur ); EXCHG( old_cursor_position, sheet->LastScreen()->m_Curseur );
DrawPanel->CursorOn( &dc ); DrawPanel->CursorOn( &dc );
} }
wxString path = sheet->Path(); wxString path = sheet->Path();
msg.Printf( _( "Marker %d found in %s" ), s_MarkerCount, path.GetData() ); msg.Printf( _( "Marker %d found in %s" ), s_MarkerCount, path.GetData() );
Affiche_Message( msg ); Affiche_Message( msg );
} }
@ -465,11 +465,11 @@ EDA_BaseStruct* WinEDA_SchematicFrame::FindSchematicItem(
Sheet = SheetList.GetFirst(); Sheet = SheetList.GetFirst();
if( !Find_in_hierarchy ) if( !Find_in_hierarchy )
Sheet = m_CurrentSheet; Sheet = m_CurrentSheet;
for( ; Sheet != NULL; Sheet = SheetList.GetNext() ) for( ; Sheet != NULL; Sheet = SheetList.GetNext() )
{ {
DrawList = Sheet->LastDrawList(); DrawList = Sheet->LastDrawList();
while( DrawList ) while( DrawList )
{ {
switch( DrawList->Type() ) switch( DrawList->Type() )
@ -492,7 +492,7 @@ EDA_BaseStruct* WinEDA_SchematicFrame::FindSchematicItem(
case DRAW_LABEL_STRUCT_TYPE: case DRAW_LABEL_STRUCT_TYPE:
case DRAW_GLOBAL_LABEL_STRUCT_TYPE: case DRAW_GLOBAL_LABEL_STRUCT_TYPE:
case DRAW_HIER_LABEL_STRUCT_TYPE: case DRAW_HIER_LABEL_STRUCT_TYPE:
case DRAW_TEXT_STRUCT_TYPE: case DRAW_TEXT_STRUCT_TYPE:
DrawTextStruct * pDraw; DrawTextStruct * pDraw;
pDraw = (DrawTextStruct*) DrawList; pDraw = (DrawTextStruct*) DrawList;
@ -509,9 +509,9 @@ EDA_BaseStruct* WinEDA_SchematicFrame::FindSchematicItem(
if( NotFound == FALSE ) /* Item found ! */ if( NotFound == FALSE ) /* Item found ! */
{ {
if( FirstSheet == NULL ) /* First Item found */ if( FirstSheet == NULL ) /* First Item found */
{ {
FirstSheet = Sheet; FirstSheet = Sheet;
firstpos = pos; firstpos = pos;
FirstStruct = DrawList; FirstStruct = DrawList;
} }
@ -540,10 +540,10 @@ EDA_BaseStruct* WinEDA_SchematicFrame::FindSchematicItem(
break; break;
} }
if( NotFound && FirstSheet ) if( NotFound && FirstSheet )
{ {
NotFound = FALSE; NotFound = FALSE;
Sheet = FirstSheet; Sheet = FirstSheet;
Struct = FirstStruct; Struct = FirstStruct;
pos = firstpos; pos = firstpos;
s_ItemsCount = 1; s_ItemsCount = 1;
@ -551,12 +551,12 @@ EDA_BaseStruct* WinEDA_SchematicFrame::FindSchematicItem(
if( NotFound == FALSE ) if( NotFound == FALSE )
{ {
if( Sheet != GetSheet() ) if( Sheet != GetSheet() )
{ {
Sheet->LastScreen()->SetZoom( GetScreen()->GetZoom() ); Sheet->LastScreen()->SetZoom( GetScreen()->GetZoom() );
*m_CurrentSheet = *Sheet; *m_CurrentSheet = *Sheet;
ActiveScreen = m_CurrentSheet->LastScreen(); ActiveScreen = m_CurrentSheet->LastScreen();
m_CurrentSheet->UpdateAllScreenReferences(); m_CurrentSheet->UpdateAllScreenReferences();
DoCenterAndRedraw = TRUE; DoCenterAndRedraw = TRUE;
} }
@ -577,21 +577,21 @@ EDA_BaseStruct* WinEDA_SchematicFrame::FindSchematicItem(
pos.y = jj + pSch->m_Pos.y; pos.y = jj + pSch->m_Pos.y;
} }
old_cursor_position = Sheet->LastScreen()->m_Curseur; old_cursor_position = Sheet->LastScreen()->m_Curseur;
Sheet->LastScreen()->m_Curseur = pos; Sheet->LastScreen()->m_Curseur = pos;
curpos = DrawPanel->CursorScreenPosition(); curpos = DrawPanel->CursorScreenPosition();
DrawPanel->GetViewStart( DrawPanel->GetViewStart(
&( GetScreen()->m_StartVisu.x ), &( GetScreen()->m_StartVisu.x ),
&( GetScreen()->m_StartVisu.y )); &( GetScreen()->m_StartVisu.y ));
// calcul des coord curseur avec origine = screen // calcul des coord curseur avec origine = screen
curpos.x -= m_CurrentSheet->LastScreen()->m_StartVisu.x; curpos.x -= m_CurrentSheet->LastScreen()->m_StartVisu.x;
curpos.y -= m_CurrentSheet->LastScreen()->m_StartVisu.y; curpos.y -= m_CurrentSheet->LastScreen()->m_StartVisu.y;
/* Il y a peut-etre necessite de recadrer le dessin: */ /* Il y a peut-etre necessite de recadrer le dessin: */
#define MARGIN 30 #define MARGIN 30
if( (curpos.x <= MARGIN) || (curpos.x >= DrawAreaSize.x - MARGIN) if( (curpos.x <= MARGIN) || (curpos.x >= DrawAreaSize.x - MARGIN)
|| (curpos.y <= MARGIN) || (curpos.y >= DrawAreaSize.y - MARGIN) ) || (curpos.y <= MARGIN) || (curpos.y >= DrawAreaSize.y - MARGIN) )
{ {
@ -606,7 +606,7 @@ EDA_BaseStruct* WinEDA_SchematicFrame::FindSchematicItem(
DrawPanel->PrepareGraphicContext( &dc ); DrawPanel->PrepareGraphicContext( &dc );
EXCHG( old_cursor_position, Sheet->LastScreen()->m_Curseur ); EXCHG( old_cursor_position, Sheet->LastScreen()->m_Curseur );
DrawPanel->CursorOff( &dc ); DrawPanel->CursorOff( &dc );
if( mouseWarp ) if( mouseWarp )
@ -617,7 +617,7 @@ EDA_BaseStruct* WinEDA_SchematicFrame::FindSchematicItem(
DrawPanel->CursorOn( &dc ); DrawPanel->CursorOn( &dc );
} }
msg = WildText + _( " Found in " ) + Sheet->Last()->m_SheetName; msg = WildText + _( " Found in " ) + Sheet->Last()->m_SheetName;
Affiche_Message( msg ); Affiche_Message( msg );
} }
else else

View File

@ -30,6 +30,7 @@ void RemoteCommand( const char* cmdline )
{ {
char line[1024]; char line[1024];
wxString msg; wxString msg;
wxString modName;
char* idcmd; char* idcmd;
char* text; char* text;
MODULE* module = 0; MODULE* module = 0;
@ -39,17 +40,20 @@ void RemoteCommand( const char* cmdline )
idcmd = strtok( line, " \n\r" ); idcmd = strtok( line, " \n\r" );
text = strtok( NULL, " \n\r" ); text = strtok( NULL, " \n\r" );
if( (idcmd == NULL) || (text == NULL) )
if( !idcmd || !text )
return; return;
if( strcmp( idcmd, "$PART:" ) == 0 ) if( strcmp( idcmd, "$PART:" ) == 0 )
{ {
msg = CONV_FROM_UTF8( text ); modName = CONV_FROM_UTF8( text );
module = ReturnModule( frame->m_Pcb, msg ); module = ReturnModule( frame->m_Pcb, modName );
msg.Printf( _( "Locate module %s %s" ), msg.GetData(), if( module )
module ? wxT( "Ok" ) : wxT( "not found" ) ); msg.Printf( _( "Module %s found" ), modName.GetData() );
else
msg.Printf( _( "Module %s not found"), modName.GetData() );
frame->Affiche_Message( msg ); frame->Affiche_Message( msg );
if( module ) if( module )
@ -63,9 +67,9 @@ void RemoteCommand( const char* cmdline )
} }
} }
if( idcmd && strcmp( idcmd, "$PIN:" ) == 0 ) else if( strcmp( idcmd, "$PIN:" ) == 0 )
{ {
wxString pinName, modName; wxString pinName;
D_PAD* pad = NULL; D_PAD* pad = NULL;
int netcode = -1; int netcode = -1;
@ -80,6 +84,7 @@ void RemoteCommand( const char* cmdline )
frame->DrawPanel->PrepareGraphicContext( &dc ); frame->DrawPanel->PrepareGraphicContext( &dc );
modName = CONV_FROM_UTF8( text ); modName = CONV_FROM_UTF8( text );
module = ReturnModule( frame->m_Pcb, modName ); module = ReturnModule( frame->m_Pcb, modName );
if( module ) if( module )
pad = ReturnPad( module, pinName ); pad = ReturnPad( module, pinName );
@ -101,11 +106,11 @@ void RemoteCommand( const char* cmdline )
} }
if( module == NULL ) if( module == NULL )
msg.Printf( _( "module %s not found" ), text ); msg.Printf( _( "Module %s not found" ), modName.GetData() );
else if( pad == NULL ) else if( pad == NULL )
msg.Printf( _( "Pin %s (module %s) not found" ), pinName.GetData(), modName.GetData() ); msg.Printf( _( "Pin %s (module %s) not found" ), pinName.GetData(), modName.GetData() );
else else
msg.Printf( _( "Locate Pin %s (module %s)" ), pinName.GetData(), modName.GetData() ); msg.Printf( _( "%s pin %s found" ), modName.GetData(), pinName.GetData() );
frame->Affiche_Message( msg ); frame->Affiche_Message( msg );
} }