Commit db49e2a5 authored by charras's avatar charras

some minor bug fixes and enhancements

parent 6a5d55bf
...@@ -110,9 +110,10 @@ SCH_COMPONENT::SCH_COMPONENT( LIB_COMPONENT& libComponent, DrawSheetPath* sheet, ...@@ -110,9 +110,10 @@ SCH_COMPONENT::SCH_COMPONENT( LIB_COMPONENT& libComponent, DrawSheetPath* sheet,
if( msg.IsEmpty() ) if( msg.IsEmpty() )
msg = wxT( "U" ); msg = wxT( "U" );
msg += wxT( "?" ); m_PrefixString = msg;
// update the reference -- just the prefix for now. // update the reference -- just the prefix for now.
msg += wxT( "?" );
SetRef( sheet, msg ); SetRef( sheet, msg );
/* Use the schematic component name instead of the library value field /* Use the schematic component name instead of the library value field
......
...@@ -656,6 +656,7 @@ void WinEDA_FindFrame::LocatePartInLibs( wxCommandEvent& event ) ...@@ -656,6 +656,7 @@ void WinEDA_FindFrame::LocatePartInLibs( wxCommandEvent& event )
BOOST_FOREACH( CMP_LIBRARY& lib, CMP_LIBRARY::GetLibraryList() ) BOOST_FOREACH( CMP_LIBRARY& lib, CMP_LIBRARY::GetLibraryList() )
{ {
nameList.Clear();
lib.SearchEntryNames( nameList, Text ); lib.SearchEntryNames( nameList, Text );
if( nameList.IsEmpty() ) if( nameList.IsEmpty() )
......
...@@ -200,10 +200,12 @@ SCH_COMPONENT* WinEDA_SchematicFrame::Load_Component( wxDC* DC, ...@@ -200,10 +200,12 @@ SCH_COMPONENT* WinEDA_SchematicFrame::Load_Component( wxDC* DC,
Component = new SCH_COMPONENT( *Entry, GetSheet(), unit, convert, Component = new SCH_COMPONENT( *Entry, GetSheet(), unit, convert,
GetScreen()->m_Curseur, true ); GetScreen()->m_Curseur, true );
DrawStructsInGhost( DrawPanel, DC, Component, wxPoint( 0, 0 ) ); // Set the component value (that can differ from component name in lib, for aliases)
Component->GetField( VALUE )->m_Text = Name;
Component->DisplayInfo( this ); Component->DisplayInfo( this );
DrawStructsInGhost( DrawPanel, DC, Component, wxPoint( 0, 0 ) );
return Component; return Component;
} }
......
...@@ -558,7 +558,8 @@ void TRACK::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, const wxPoin ...@@ -558,7 +558,8 @@ void TRACK::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, const wxPoin
{ {
color = g_DesignSettings.m_LayerColor[m_Layer]; color = g_DesignSettings.m_LayerColor[m_Layer];
if( g_DesignSettings.IsLayerVisible( m_Layer ) == false && ( color & HIGHT_LIGHT_FLAG ) != HIGHT_LIGHT_FLAG ) if( g_DesignSettings.IsLayerVisible( m_Layer ) == false && ( color & HIGHT_LIGHT_FLAG ) !=
HIGHT_LIGHT_FLAG )
return; return;
if( DisplayOpt.ContrastModeDisplay ) if( DisplayOpt.ContrastModeDisplay )
...@@ -708,13 +709,13 @@ void TRACK::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, const wxPoin ...@@ -708,13 +709,13 @@ void TRACK::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, const wxPoin
void SEGVIA::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, const wxPoint& notUsed ) void SEGVIA::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, const wxPoint& notUsed )
/*******************************************************************************************/ /*******************************************************************************************/
{ {
int color; int color;
int rayon; int rayon;
int curr_layer = ( (PCB_SCREEN*) panel->GetScreen() )->m_Active_Layer; int curr_layer = ( (PCB_SCREEN*) panel->GetScreen() )->m_Active_Layer;
int fillvia = 0; int fillvia = 0;
WinEDA_BasePcbFrame* frame = (WinEDA_BasePcbFrame*) panel->m_Parent; WinEDA_BasePcbFrame* frame = (WinEDA_BasePcbFrame*) panel->m_Parent;
PCB_SCREEN* screen = frame->GetScreen(); PCB_SCREEN* screen = frame->GetScreen();
if( frame->m_DisplayViaFill == FILLED ) if( frame->m_DisplayViaFill == FILLED )
fillvia = 1; fillvia = 1;
...@@ -723,7 +724,8 @@ void SEGVIA::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, const wxPoi ...@@ -723,7 +724,8 @@ void SEGVIA::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, const wxPoi
color = g_DesignSettings.m_ViaColor[m_Shape]; color = g_DesignSettings.m_ViaColor[m_Shape];
if( g_DesignSettings.IsElementVisible( VIAS_VISIBLE + m_Shape ) == false && ( color & HIGHT_LIGHT_FLAG ) != HIGHT_LIGHT_FLAG ) if( g_DesignSettings.IsElementVisible( VIAS_VISIBLE + m_Shape ) == false
&& ( color & HIGHT_LIGHT_FLAG ) != HIGHT_LIGHT_FLAG )
return; return;
if( DisplayOpt.ContrastModeDisplay ) if( DisplayOpt.ContrastModeDisplay )
...@@ -750,22 +752,30 @@ void SEGVIA::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, const wxPoi ...@@ -750,22 +752,30 @@ void SEGVIA::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, const wxPoi
rayon = m_Width >> 1; rayon = m_Width >> 1;
if( panel->GetScreen()->Scale( rayon ) <= 4 ) // for small via size on screen (rayon < 4 pixels) draw a simplified shape
int radius_in_pixels = panel->GetScreen()->Scale( rayon );
bool fast_draw = false;
// Vias are drawn as a filled circle or a double circle. The hole will be drawn later
int drill_rayon = GetDrillValue() / 2;
int inner_rayon = rayon - panel->GetScreen()->Unscale( 2 );
if( radius_in_pixels < 3 )
{ {
GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y, rayon, color ); fast_draw = true;
return; fillvia = false;
} }
if( fillvia ) if( fillvia )
GRFilledCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y, rayon, 0, color, color ); GRFilledCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y, rayon, 0, color, color );
else else
{
GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y, rayon, color ); GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y, rayon, color );
if ( fast_draw )
int drill_rayon = GetDrillValue() / 2; return;
int inner_rayon = rayon - panel->GetScreen()->Unscale( 2 ); GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y,
inner_rayon, color );
GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y, }
inner_rayon, color );
// Draw the via hole if the display option allows it // Draw the via hole if the display option allows it
if( DisplayOpt.m_DisplayViaMode != VIA_HOLE_NOT_SHOW ) if( DisplayOpt.m_DisplayViaMode != VIA_HOLE_NOT_SHOW )
...@@ -773,37 +783,35 @@ void SEGVIA::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, const wxPoi ...@@ -773,37 +783,35 @@ void SEGVIA::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, const wxPoi
if( (DisplayOpt.m_DisplayViaMode == ALL_VIA_HOLE_SHOW) // Display all drill holes requested if( (DisplayOpt.m_DisplayViaMode == ALL_VIA_HOLE_SHOW) // Display all drill holes requested
|| ( (drill_rayon > 0 ) && !IsDrillDefault() ) ) // Or Display non default holes requested || ( (drill_rayon > 0 ) && !IsDrillDefault() ) ) // Or Display non default holes requested
{ {
if( drill_rayon < inner_rayon ) // We can show the via hole if( fillvia )
{ {
if( fillvia ) bool blackpenstate = false;
if( screen->m_IsPrinting )
{ {
bool blackpenstate = false; blackpenstate = GetGRForceBlackPenState();
if( screen->m_IsPrinting ) GRForceBlackPen( false );
{ color = g_DrawBgColor;
blackpenstate = GetGRForceBlackPenState();
GRForceBlackPen( false );
color = g_DrawBgColor;
}
else
color = BLACK; // or DARKGRAY;
if( draw_mode != GR_XOR )
GRSetDrawMode( DC, GR_COPY );
else
GRSetDrawMode( DC, GR_XOR );
if( screen->Scale( drill_rayon ) > 1 ) /* draw hole if its size is enought */
GRFilledCircle( &panel->m_ClipBox, DC, m_Start.x,
m_Start.y, drill_rayon, 0, color, color );
if( screen->m_IsPrinting )
GRForceBlackPen( blackpenstate );
} }
else else
{ color = BLACK; // or DARKGRAY;
if( draw_mode != GR_XOR )
GRSetDrawMode( DC, GR_COPY );
else
GRSetDrawMode( DC, GR_XOR );
if( screen->Scale( drill_rayon ) > 1 ) /* draw hole if its size is enought */
GRFilledCircle( &panel->m_ClipBox, DC, m_Start.x,
m_Start.y, drill_rayon, 0, color, color );
if( screen->m_IsPrinting )
GRForceBlackPen( blackpenstate );
}
else
{
if( drill_rayon < inner_rayon ) // We can show the via hole
GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y, GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y,
drill_rayon, color ); drill_rayon, color );
}
} }
} }
} }
...@@ -905,13 +913,14 @@ void TRACK::DisplayInfo( WinEDA_DrawFrame* frame ) ...@@ -905,13 +913,14 @@ void TRACK::DisplayInfo( WinEDA_DrawFrame* frame )
// Display full track length (in pcbnew) // Display full track length (in pcbnew)
if( frame->m_Ident == PCB_FRAME ) if( frame->m_Ident == PCB_FRAME )
{ {
int trackLen = 0; int trackLen = 0;
Marque_Une_Piste( board, this, NULL, &trackLen, false ); Marque_Une_Piste( board, this, NULL, &trackLen, false );
valeur_param( trackLen, msg ); valeur_param( trackLen, msg );
frame->AppendMsgPanel( _( "Track Length" ), msg, DARKCYAN ); frame->AppendMsgPanel( _( "Track Length" ), msg, DARKCYAN );
} }
} }
/* /*
* Function DisplayInfoBase * Function DisplayInfoBase
* has knowledge about the frame and how and where to put status information * has knowledge about the frame and how and where to put status information
......
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