solved: minor problem in crossprobing (eeschema to pcbnew)

This commit is contained in:
charras 2008-11-06 17:55:32 +00:00
parent 8bed5053da
commit e6e50f3c0d
2 changed files with 32 additions and 37 deletions

View File

@ -9,7 +9,7 @@ COMMON_GLOBL wxString g_BuildVersion
# include "config.h" # include "config.h"
(wxT(KICAD_SVN_VERSION)) (wxT(KICAD_SVN_VERSION))
# else # else
(wxT("(20081019-unstable)")) /* main program version */ (wxT("(20081106-unstable)")) /* main program version */
# endif # endif
#endif #endif
; ;
@ -20,7 +20,7 @@ COMMON_GLOBL wxString g_BuildAboutVersion
# include "config.h" # include "config.h"
(wxT(KICAD_ABOUT_VERSION)) (wxT(KICAD_ABOUT_VERSION))
# else # else
(wxT("(20081019-unstable)")) /* svn date & rev (normally overridden) */ (wxT("(20081106-unstable)")) /* svn date & rev (normally overridden) */
# endif # endif
#endif #endif
; ;

View File

@ -3,6 +3,12 @@
/*****************************************************************/ /*****************************************************************/
/* cross-probing.cpp */ /* cross-probing.cpp */
/** Handle messages between pcbnew and eeschema via a socket,
* the port number is
* KICAD_PCB_PORT_SERVICE_NUMBER (currently 4242) (eeschema to pcbnew)
* KICAD_SCH_PORT_SERVICE_NUMBER (currently 4243) (pcbnew to eeschema)
* Note: these ports must be enabled for firewall protection
*/
#include "fctsys.h" #include "fctsys.h"
@ -53,21 +59,12 @@ void RemoteCommand( const char* cmdline )
if( module ) if( module )
msg.Printf( _( "%s found" ), modName.GetData() ); msg.Printf( _( "%s found" ), modName.GetData() );
else else
msg.Printf( _( "%s not found"), modName.GetData() ); msg.Printf( _( "%s not found" ), modName.GetData() );
frame->Affiche_Message( msg ); frame->Affiche_Message( msg );
if( module ) if( module )
{
wxClientDC dc( frame->DrawPanel );
frame->DrawPanel->PrepareGraphicContext( &dc );
frame->DrawPanel->CursorOff( &dc );
frame->GetScreen()->m_Curseur = module->GetPosition(); frame->GetScreen()->m_Curseur = module->GetPosition();
frame->DrawPanel->CursorOn( &dc );
frame->SetCurItem( module );
}
} }
else if( strcmp( idcmd, "$PIN:" ) == 0 ) else if( strcmp( idcmd, "$PIN:" ) == 0 )
{ {
wxString pinName; wxString pinName;
@ -80,30 +77,28 @@ void RemoteCommand( const char* cmdline )
if( text && strcmp( text, "$PART:" ) == 0 ) if( text && strcmp( text, "$PART:" ) == 0 )
text = strtok( NULL, "\n\r" ); text = strtok( NULL, "\n\r" );
wxClientDC dc( frame->DrawPanel );
frame->DrawPanel->PrepareGraphicContext( &dc );
modName = CONV_FROM_UTF8( text ); modName = CONV_FROM_UTF8( text );
module = frame->m_Pcb->FindModuleByReference( modName ); module = frame->m_Pcb->FindModuleByReference( modName );
if( module ) if( module )
pad = module->FindPadByName( pinName ); pad = module->FindPadByName( pinName );
if( pad ) if( pad )
netcode = pad->GetNet();
if( netcode > 0 ) /* hightlighted the net selected net*/
{ {
if( g_HightLigt_Status ) /* erase the old hightlighted net */ netcode = pad->GetNet();
frame->Hight_Light( &dc ); // put cursor on the pad:
g_HightLigth_NetCode = netcode;
frame->Hight_Light( &dc ); /* hightlighted the new one */
frame->DrawPanel->CursorOff( &dc );
frame->GetScreen()->m_Curseur = pad->GetPosition(); frame->GetScreen()->m_Curseur = pad->GetPosition();
frame->DrawPanel->CursorOn( &dc ); }
if( netcode > 0 ) /* highlight the pad net*/
{
g_HightLigt_Status = 1;
g_HightLigth_NetCode = netcode;
}
else
{
g_HightLigt_Status = 0;
g_HightLigth_NetCode = 0;
} }
if( module == NULL ) if( module == NULL )
@ -122,7 +117,7 @@ void RemoteCommand( const char* cmdline )
frame->Affiche_Message( msg ); frame->Affiche_Message( msg );
} }
if( module ) // if found, center the module on screen. if( module ) // if found, center the module on screen, and redraw the screen.
frame->Recadre_Trace( false ); frame->Recadre_Trace( false );
} }
@ -156,7 +151,7 @@ void WinEDA_PcbFrame::SendMessageToEESCHEMA( BOARD_ITEM* objectToSync )
case TYPEMODULE: case TYPEMODULE:
module = (MODULE*) objectToSync; module = (MODULE*) objectToSync;
sprintf( cmd, "$PART: \"%s\"", sprintf( cmd, "$PART: \"%s\"",
CONV_TO_UTF8( module->m_Reference->m_Text ) ); CONV_TO_UTF8( module->m_Reference->m_Text ) );
break; break;
case TYPEPAD: case TYPEPAD:
@ -164,13 +159,13 @@ void WinEDA_PcbFrame::SendMessageToEESCHEMA( BOARD_ITEM* objectToSync )
pad = (D_PAD*) objectToSync; pad = (D_PAD*) objectToSync;
msg = pad->ReturnStringPadName(); msg = pad->ReturnStringPadName();
sprintf( cmd, "$PART: \"%s\" $PAD: \"%s\"", sprintf( cmd, "$PART: \"%s\" $PAD: \"%s\"",
CONV_TO_UTF8( module->m_Reference->m_Text ), CONV_TO_UTF8( module->m_Reference->m_Text ),
CONV_TO_UTF8( msg ) ); CONV_TO_UTF8( msg ) );
break; break;
case TYPETEXTEMODULE: case TYPETEXTEMODULE:
#define REFERENCE 0 #define REFERENCE 0
#define VALUE 1 #define VALUE 1
module = (MODULE*) objectToSync->m_Parent; module = (MODULE*) objectToSync->m_Parent;
text_mod = (TEXTE_MODULE*) objectToSync; text_mod = (TEXTE_MODULE*) objectToSync;
if( text_mod->m_Type == REFERENCE ) if( text_mod->m_Type == REFERENCE )
@ -181,9 +176,9 @@ void WinEDA_PcbFrame::SendMessageToEESCHEMA( BOARD_ITEM* objectToSync )
break; break;
sprintf( cmd, "$PART: \"%s\" %s \"%s\"", sprintf( cmd, "$PART: \"%s\" %s \"%s\"",
CONV_TO_UTF8( module->m_Reference->m_Text ), CONV_TO_UTF8( module->m_Reference->m_Text ),
text_key, text_key,
CONV_TO_UTF8( text_mod->m_Text ) ); CONV_TO_UTF8( text_mod->m_Text ) );
break; break;
default: default: