Commit 66080848 authored by CHARRAS's avatar CHARRAS

Bug fix in class_hierarchy_sheet.cpp.

parent 6719900e
...@@ -5,6 +5,18 @@ Please add newer entries at the top, list the date and your name with ...@@ -5,6 +5,18 @@ Please add newer entries at the top, list the date and your name with
email address. email address.
2007-aug-08 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
================================================================================
+ eeschema
bug in class_hierarchy_sheet.cpp.
+ pcbnew
small change in block commands:
rastnest was updated for each footprint, while moving footprints.
Now it is updated at the end of changes.
enhancements in block.cpp and connect.cpp
2007-Aug-07 UPDATE Dick Hollenbeck <dick@softplc.com> 2007-Aug-07 UPDATE Dick Hollenbeck <dick@softplc.com>
================================================================================ ================================================================================
+ pcbnew & common + pcbnew & common
......
...@@ -390,7 +390,7 @@ void EDA_TextStruct::Draw( WinEDA_DrawPanel* panel, wxDC* DC, ...@@ -390,7 +390,7 @@ void EDA_TextStruct::Draw( WinEDA_DrawPanel* panel, wxDC* DC,
* offset = Offset de trace (usuellement (0,0) * offset = Offset de trace (usuellement (0,0)
* color = couleur du texte * color = couleur du texte
* draw_mode = GR_OR, GR_XOR.., -1 si mode courant. * draw_mode = GR_OR, GR_XOR.., -1 si mode courant.
* display_mose = FILAIRE, FILLED ou SKETCH * display_mode = FILAIRE, FILLED ou SKETCH
* anchor_color = couleur de l'ancre ( -1 si pas d'ancre ). * anchor_color = couleur de l'ancre ( -1 si pas d'ancre ).
*/ */
{ {
......
...@@ -236,7 +236,7 @@ void DrawSheetLabelStruct::Draw(WinEDA_DrawPanel * panel,wxDC * DC, const wxPoin ...@@ -236,7 +236,7 @@ void DrawSheetLabelStruct::Draw(WinEDA_DrawPanel * panel,wxDC * DC, const wxPoin
int side, txtcolor; int side, txtcolor;
int posx , tposx, posy, size2; int posx , tposx, posy, size2;
wxSize size; wxSize size;
int NbSegm, coord[12]; int NbSegm, coord[20];
int LineWidth = g_DrawMinimunLineWidth; int LineWidth = g_DrawMinimunLineWidth;
if( Color >= 0 ) txtcolor = Color; if( Color >= 0 ) txtcolor = Color;
......
...@@ -309,7 +309,7 @@ typedef enum { ...@@ -309,7 +309,7 @@ typedef enum {
#define SKETCH 2 #define SKETCH 2
#define DEFAULT_SIZE_TEXT 60 /* Hauteur (en 1/000" par defaut des textes */ #define DEFAULT_SIZE_TEXT 60 /* default text height (in mils or 1/1000") */
/* classe de gestion des textes (labels, textes composants ..) /* classe de gestion des textes (labels, textes composants ..)
* (Non utilisee seule) */ * (Non utilisee seule) */
......
...@@ -535,6 +535,7 @@ int masque_layer; ...@@ -535,6 +535,7 @@ int masque_layer;
/* Rafraichissement de l'ecran : */ /* Rafraichissement de l'ecran : */
RedrawActiveWindow(DC, TRUE); RedrawActiveWindow(DC, TRUE);
if ( g_Show_Ratsnest ) Compile_Ratsnest( DC, TRUE );
} }
...@@ -567,6 +568,7 @@ int Nx, Ny, centerX, centerY; /* centre de rotation de l'ensemble des elements ...@@ -567,6 +568,7 @@ int Nx, Ny, centerX, centerY; /* centre de rotation de l'ensemble des elements
if ( Block_Include_Modules ) if ( Block_Include_Modules )
{ {
Affiche_Message( _("Footprint rotation") ); Affiche_Message( _("Footprint rotation") );
bool Show_Ratsnest_tmp = g_Show_Ratsnest; g_Show_Ratsnest = false;
int Angle_Rot_Module = 900; int Angle_Rot_Module = 900;
module = m_Pcb->m_Modules; module = m_Pcb->m_Modules;
for ( ; module != NULL; module = (MODULE*) module->Pnext) for ( ; module != NULL; module = (MODULE*) module->Pnext)
...@@ -590,6 +592,7 @@ int Nx, Ny, centerX, centerY; /* centre de rotation de l'ensemble des elements ...@@ -590,6 +592,7 @@ int Nx, Ny, centerX, centerY; /* centre de rotation de l'ensemble des elements
} }
/* regeneration des valeurs originelles */ /* regeneration des valeurs originelles */
GetScreen()->m_Curseur = oldpos; GetScreen()->m_Curseur = oldpos;
g_Show_Ratsnest = Show_Ratsnest_tmp;
} }
/* Deplacement des Segments de piste */ /* Deplacement des Segments de piste */
...@@ -722,6 +725,7 @@ int Nx, Ny, centerX, centerY; /* centre de rotation de l'ensemble des elements ...@@ -722,6 +725,7 @@ int Nx, Ny, centerX, centerY; /* centre de rotation de l'ensemble des elements
} }
} }
RedrawActiveWindow(DC, TRUE) ; RedrawActiveWindow(DC, TRUE) ;
if ( g_Show_Ratsnest ) Compile_Ratsnest( DC, TRUE );
} }
...@@ -756,6 +760,7 @@ int Ny, centerY; /* position de l'axe d'inversion de l'ensemble des elements */ ...@@ -756,6 +760,7 @@ int Ny, centerY; /* position de l'axe d'inversion de l'ensemble des elements */
/* Inversion des modules */ /* Inversion des modules */
if ( Block_Include_Modules ) if ( Block_Include_Modules )
{ {
bool Show_Ratsnest_tmp = g_Show_Ratsnest; g_Show_Ratsnest = false;
Affiche_Message( _("Footprint mirroring") ); Affiche_Message( _("Footprint mirroring") );
module = m_Pcb->m_Modules; module = m_Pcb->m_Modules;
for ( ; module != NULL; module = (MODULE*) module->Pnext) for ( ; module != NULL; module = (MODULE*) module->Pnext)
...@@ -779,6 +784,7 @@ int Ny, centerY; /* position de l'axe d'inversion de l'ensemble des elements */ ...@@ -779,6 +784,7 @@ int Ny, centerY; /* position de l'axe d'inversion de l'ensemble des elements */
/* regeneration des valeurs originelles */ /* regeneration des valeurs originelles */
GetScreen()->m_Curseur = memo; GetScreen()->m_Curseur = memo;
} }
g_Show_Ratsnest = Show_Ratsnest_tmp;
} }
/* Deplacement des Segments de piste */ /* Deplacement des Segments de piste */
...@@ -927,6 +933,7 @@ int Ny, centerY; /* position de l'axe d'inversion de l'ensemble des elements */ ...@@ -927,6 +933,7 @@ int Ny, centerY; /* position de l'axe d'inversion de l'ensemble des elements */
} }
} }
RedrawActiveWindow(DC, TRUE) ; RedrawActiveWindow(DC, TRUE) ;
if ( g_Show_Ratsnest ) Compile_Ratsnest( DC, TRUE );
} }
...@@ -935,7 +942,7 @@ int Ny, centerY; /* position de l'axe d'inversion de l'ensemble des elements */ ...@@ -935,7 +942,7 @@ int Ny, centerY; /* position de l'axe d'inversion de l'ensemble des elements */
void WinEDA_BasePcbFrame::Block_Move(wxDC * DC) void WinEDA_BasePcbFrame::Block_Move(wxDC * DC)
/************************************************/ /************************************************/
/* /*
routine de deplacement des elements du block deja selectionne Function to move items withing the selected block
*/ */
{ {
MODULE * module; MODULE * module;
...@@ -957,6 +964,7 @@ wxPoint oldpos; ...@@ -957,6 +964,7 @@ wxPoint oldpos;
/* Deplacement des modules */ /* Deplacement des modules */
if ( Block_Include_Modules ) if ( Block_Include_Modules )
{ {
bool Show_Ratsnest_tmp = g_Show_Ratsnest; g_Show_Ratsnest = false;
Affiche_Message( _("Move footprints") ); Affiche_Message( _("Move footprints") );
module = m_Pcb->m_Modules; module = m_Pcb->m_Modules;
oldpos = GetScreen()->m_Curseur; oldpos = GetScreen()->m_Curseur;
...@@ -976,6 +984,7 @@ wxPoint oldpos; ...@@ -976,6 +984,7 @@ wxPoint oldpos;
Place_Module(module, DC); Place_Module(module, DC);
} }
GetScreen()->m_Curseur = oldpos; GetScreen()->m_Curseur = oldpos;
g_Show_Ratsnest = Show_Ratsnest_tmp;
} }
/* calcul du vecteur de deplacement pour les deplacements suivants */ /* calcul du vecteur de deplacement pour les deplacements suivants */
...@@ -1100,6 +1109,7 @@ wxPoint oldpos; ...@@ -1100,6 +1109,7 @@ wxPoint oldpos;
} }
} }
DrawPanel->Refresh(TRUE);; DrawPanel->Refresh(TRUE);;
if ( g_Show_Ratsnest ) Compile_Ratsnest( DC, TRUE );
} }
...@@ -1129,6 +1139,7 @@ wxPoint oldpos; ...@@ -1129,6 +1139,7 @@ wxPoint oldpos;
/* Module copy */ /* Module copy */
if ( Block_Include_Modules ) if ( Block_Include_Modules )
{ {
bool Show_Ratsnest_tmp = g_Show_Ratsnest; g_Show_Ratsnest = false;
Affiche_Message( _("Module copy") ); Affiche_Message( _("Module copy") );
module = m_Pcb->m_Modules; module = m_Pcb->m_Modules;
oldpos = GetScreen()->m_Curseur; oldpos = GetScreen()->m_Curseur;
...@@ -1154,6 +1165,7 @@ wxPoint oldpos; ...@@ -1154,6 +1165,7 @@ wxPoint oldpos;
Place_Module(new_module, DC); Place_Module(new_module, DC);
} }
GetScreen()->m_Curseur = oldpos; GetScreen()->m_Curseur = oldpos;
g_Show_Ratsnest = Show_Ratsnest_tmp;
} }
/* calcul du vecteur de deplacement pour les deplacements suivants */ /* calcul du vecteur de deplacement pour les deplacements suivants */
......
...@@ -43,7 +43,7 @@ D_PAD * pt_pad; ...@@ -43,7 +43,7 @@ D_PAD * pt_pad;
if( old_val == new_val) return(0) ; if( old_val == new_val) return(0) ;
if(old_val < new_val) EXCHG(old_val,new_val) ; if( (old_val > 0) && (old_val < new_val) ) EXCHG(old_val,new_val) ;
pt_conn = pt_start_conn; pt_conn = pt_start_conn;
for ( ; pt_conn != NULL; pt_conn= (TRACK*) pt_conn->Pnext) for ( ; pt_conn != NULL; pt_conn= (TRACK*) pt_conn->Pnext)
...@@ -551,7 +551,7 @@ char new_passe_request = 1, flag; ...@@ -551,7 +551,7 @@ char new_passe_request = 1, flag;
LISTE_PAD * pt_mem; LISTE_PAD * pt_mem;
EDA_BaseStruct * PtStruct; EDA_BaseStruct * PtStruct;
int masque_layer; int masque_layer;
wxString msg;
if( m_Pcb->m_NbPads == 0 ) return; if( m_Pcb->m_NbPads == 0 ) return;
a_color = CYAN; a_color = CYAN;
...@@ -615,18 +615,16 @@ int masque_layer; ...@@ -615,18 +615,16 @@ int masque_layer;
if(affiche) if(affiche)
Affiche_1_Parametre(this, POS_AFF_CHREF,wxEmptyString, wxT("Conn Segm"), a_color); Affiche_1_Parametre(this, POS_AFF_CHREF,wxEmptyString, wxT("Conn Segm"), a_color);
for ( pt_piste = m_Pcb->m_Track; pt_piste != NULL; pt_piste = (TRACK*) pt_piste->Pnext) for ( pt_piste = m_Pcb->m_Track; pt_piste != NULL; pt_piste = pt_piste->Next())
{ {
if ( pt_piste->start == NULL ) if ( pt_piste->start == NULL )
{ {
pt_piste->start = Locate_Piste_Connectee(pt_piste, pt_piste->start = Locate_Piste_Connectee(pt_piste, m_Pcb->m_Track,NULL,START);
m_Pcb->m_Track,NULL,START);
} }
if ( pt_piste->end == NULL ) if ( pt_piste->end == NULL )
{ {
pt_piste->end = Locate_Piste_Connectee(pt_piste, pt_piste->end = Locate_Piste_Connectee(pt_piste, m_Pcb->m_Track,NULL,END);
m_Pcb->m_Track,NULL,END);
} }
} }
...@@ -635,20 +633,47 @@ int masque_layer; ...@@ -635,20 +633,47 @@ int masque_layer;
//////////////////////////////// ////////////////////////////////
a_color = YELLOW; a_color = YELLOW;
if(affiche)
Affiche_1_Parametre(this, POS_AFF_CHREF,wxEmptyString, wxT("Net->Segm"),a_color);
while(new_passe_request) while(new_passe_request)
{ {
bool reset_flag = FALSE;
new_passe_request = 0; new_passe_request = 0;
if(affiche)
{
msg.Printf( wxT("Net->Segm pass %d "), new_passe_request+1);
Affiche_1_Parametre(this, POS_AFF_CHREF,wxEmptyString, msg, a_color);
}
for ( pt_piste = m_Pcb->m_Track; pt_piste != NULL; /* look for vias which could be connect many tracks */
pt_piste = (TRACK*) pt_piste->Pnext) for ( TRACK * via = m_Pcb->m_Track; via != NULL; via = via->Next() )
{
if ( via->m_StructType != TYPEVIA ) continue;
if ( via->m_NetCode > 0 ) continue; // Netcode already known
// Lock for a connection to a track with a known netcode
pt_next = m_Pcb->m_Track;
while ( (pt_next = Locate_Piste_Connectee(via, pt_next, NULL,START)) != NULL )
{
if (pt_next->m_NetCode )
{
via->m_NetCode = pt_next->m_NetCode;
break;
}
pt_next->SetState(BUSY, ON);
reset_flag = TRUE;
}
}
if ( reset_flag ) for ( pt_piste = m_Pcb->m_Track; pt_piste != NULL; pt_piste = pt_piste->Next())
{
pt_piste->SetState(BUSY, OFF);
}
for ( pt_piste = m_Pcb->m_Track; pt_piste != NULL; pt_piste = pt_piste->Next())
{ {
/* Traitement du point de debut */ /* Traitement du point de debut */
PtStruct = (EDA_BaseStruct*)pt_piste->start; PtStruct = (EDA_BaseStruct*)pt_piste->start;
if( PtStruct && (PtStruct->m_StructType != TYPEPAD) ) if( PtStruct && (PtStruct->m_StructType != TYPEPAD) )
{ // start sur piste { // Begin on an other track segment
pt_next = (TRACK*)PtStruct; pt_next = (TRACK*)PtStruct;
if(pt_piste->m_NetCode) if(pt_piste->m_NetCode)
{ {
...@@ -694,9 +719,8 @@ int masque_layer; ...@@ -694,9 +719,8 @@ int masque_layer;
} }
} }
if( affiche ) Affiche_1_Parametre(this, -1,wxEmptyString, wxT("Reorder "),a_color);
/* Reclassemment des pistes par numero de net: */ /* Reclassemment des pistes par numero de net: */
if( affiche ) Affiche_1_Parametre(this, -1,wxEmptyString, wxT("Reorder "),a_color);
RebuildTrackChain(m_Pcb); RebuildTrackChain(m_Pcb);
if( affiche ) Affiche_1_Parametre(this, -1,wxEmptyString, wxT(" "),a_color); if( affiche ) Affiche_1_Parametre(this, -1,wxEmptyString, wxT(" "),a_color);
......
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