Try to fix bug 2960683 in build_BOM.cpp

Pad edit dialog uses now default layers names in modedit and the current board layers names in board editor
This commit is contained in:
charras 2010-03-01 17:48:17 +00:00
parent 7affa6a5f5
commit 90378c47cc
4 changed files with 28 additions and 7 deletions

View File

@ -845,9 +845,10 @@ int DIALOG_BUILD_BOM::PrintComponentsListByPart(
NxtName[0] = 0;
// Store fields. try to store non empty fields.
if( (int)cmpFields.GetCount() < DrawLibItem->GetFieldCount() )
cmpFields.Alloc(DrawLibItem->GetFieldCount());
// Store fields. try to find and store non empty fields.
int needed_size = DrawLibItem->GetFieldCount() - cmpFields.GetCount();
if( needed_size > 0 )
cmpFields.Add(wxEmptyString, needed_size);
for( int jj = FIELD1; jj < DrawLibItem->GetFieldCount(); jj++ )
{
if( cmpFields[jj].IsEmpty() )

View File

@ -498,6 +498,7 @@ void BOARD::SetVisibleElementColor( int aPCB_VISIBLE, int aColor )
case PAD_FR_VISIBLE:
case PAD_BK_VISIBLE:
case GRID_VISIBLE:
case RATSNEST_VISIBLE:
GetColorsSettings()->SetItemColor( aPCB_VISIBLE, aColor );
break;

View File

@ -53,12 +53,14 @@ static long Std_Pad_Layers[NBTYPES] =
/********************************************************************/
class DIALOG_PAD_PROPERTIES : public DIALOG_PAD_PROPERTIES_BASE
{
public:
private:
WinEDA_BasePcbFrame* m_Parent;
D_PAD* m_CurrentPad;
BOARD * m_Board;
public:
DIALOG_PAD_PROPERTIES( WinEDA_BasePcbFrame* parent, D_PAD* Pad );
private:
void InitDialog( );
void OnPadShapeSelection( wxCommandEvent& event );
void OnDrillShapeSelected( wxCommandEvent& event );
@ -77,6 +79,7 @@ DIALOG_PAD_PROPERTIES::DIALOG_PAD_PROPERTIES( WinEDA_BasePcbFrame* parent, D_PAD
{
m_Parent = parent;
m_CurrentPad = Pad;
m_Board = m_Parent->GetBoard();
if( m_CurrentPad )
{
@ -258,6 +261,22 @@ void DIALOG_PAD_PROPERTIES::InitDialog( )
cmd_event.SetId( m_PadType->GetSelection() );
PadTypeSelected( cmd_event );
}
// Setup layers names from board
m_PadLayerCu->SetLabel(m_Board->GetLayerName(LAYER_N_BACK));
m_PadLayerCmp->SetLabel(m_Board->GetLayerName(LAYER_N_FRONT));
m_PadLayerAdhCmp->SetLabel(m_Board->GetLayerName( ADHESIVE_N_FRONT ));
m_PadLayerAdhCu->SetLabel(m_Board->GetLayerName( ADHESIVE_N_BACK ));
m_PadLayerPateCmp->SetLabel(m_Board->GetLayerName( SOLDERPASTE_N_FRONT ));
m_PadLayerPateCu->SetLabel(m_Board->GetLayerName(SOLDERPASTE_N_BACK ));
m_PadLayerSilkCmp->SetLabel(m_Board->GetLayerName( SILKSCREEN_N_FRONT ));
m_PadLayerSilkCu->SetLabel(m_Board->GetLayerName( SILKSCREEN_N_BACK ));
m_PadLayerMaskCmp->SetLabel(m_Board->GetLayerName( SOLDERMASK_N_FRONT ));
m_PadLayerMaskCu->SetLabel(m_Board->GetLayerName( SOLDERMASK_N_BACK ));
m_PadLayerECO1->SetLabel(m_Board->GetLayerName( ECO1_N ));
m_PadLayerECO2->SetLabel(m_Board->GetLayerName( ECO2_N));
m_PadLayerDraft->SetLabel(m_Board->GetLayerName( DRAW_N ));
}

View File

@ -148,7 +148,7 @@ void WinEDA_BasePcbFrame::Global_Import_Pad_Settings( D_PAD* aPad, bool aDraw )
Module_Ref = Module;
int pad_orient = aPad->m_Orient - Module_Ref->m_Orient;
// Prepare une undo list:
// Prepare an undo list:
PICKED_ITEMS_LIST itemsList;
Module = (MODULE*) m_Pcb->m_Modules;
for( ; Module != NULL; Module = Module->Next() )
@ -156,7 +156,7 @@ void WinEDA_BasePcbFrame::Global_Import_Pad_Settings( D_PAD* aPad, bool aDraw )
if( !edit_Same_Modules && (Module != Module_Ref) )
continue;
if( Module->m_LibRef != Module->m_LibRef )
if( Module->m_LibRef != Module_Ref->m_LibRef )
continue;
bool saveMe = false;
@ -196,7 +196,7 @@ void WinEDA_BasePcbFrame::Global_Import_Pad_Settings( D_PAD* aPad, bool aDraw )
if( !edit_Same_Modules && (Module != Module_Ref) )
continue;
if( Module->m_LibRef != Module->m_LibRef )
if( Module->m_LibRef != Module_Ref->m_LibRef )
continue;
/* Erase module on screen */