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; NxtName[0] = 0;
// Store fields. try to store non empty fields. // Store fields. try to find and store non empty fields.
if( (int)cmpFields.GetCount() < DrawLibItem->GetFieldCount() ) int needed_size = DrawLibItem->GetFieldCount() - cmpFields.GetCount();
cmpFields.Alloc(DrawLibItem->GetFieldCount()); if( needed_size > 0 )
cmpFields.Add(wxEmptyString, needed_size);
for( int jj = FIELD1; jj < DrawLibItem->GetFieldCount(); jj++ ) for( int jj = FIELD1; jj < DrawLibItem->GetFieldCount(); jj++ )
{ {
if( cmpFields[jj].IsEmpty() ) if( cmpFields[jj].IsEmpty() )

View File

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

View File

@ -53,12 +53,14 @@ static long Std_Pad_Layers[NBTYPES] =
/********************************************************************/ /********************************************************************/
class DIALOG_PAD_PROPERTIES : public DIALOG_PAD_PROPERTIES_BASE class DIALOG_PAD_PROPERTIES : public DIALOG_PAD_PROPERTIES_BASE
{ {
public: private:
WinEDA_BasePcbFrame* m_Parent; WinEDA_BasePcbFrame* m_Parent;
D_PAD* m_CurrentPad; D_PAD* m_CurrentPad;
BOARD * m_Board;
public: public:
DIALOG_PAD_PROPERTIES( WinEDA_BasePcbFrame* parent, D_PAD* Pad ); DIALOG_PAD_PROPERTIES( WinEDA_BasePcbFrame* parent, D_PAD* Pad );
private:
void InitDialog( ); void InitDialog( );
void OnPadShapeSelection( wxCommandEvent& event ); void OnPadShapeSelection( wxCommandEvent& event );
void OnDrillShapeSelected( 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_Parent = parent;
m_CurrentPad = Pad; m_CurrentPad = Pad;
m_Board = m_Parent->GetBoard();
if( m_CurrentPad ) if( m_CurrentPad )
{ {
@ -258,6 +261,22 @@ void DIALOG_PAD_PROPERTIES::InitDialog( )
cmd_event.SetId( m_PadType->GetSelection() ); cmd_event.SetId( m_PadType->GetSelection() );
PadTypeSelected( cmd_event ); 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; Module_Ref = Module;
int pad_orient = aPad->m_Orient - Module_Ref->m_Orient; int pad_orient = aPad->m_Orient - Module_Ref->m_Orient;
// Prepare une undo list: // Prepare an undo list:
PICKED_ITEMS_LIST itemsList; PICKED_ITEMS_LIST itemsList;
Module = (MODULE*) m_Pcb->m_Modules; Module = (MODULE*) m_Pcb->m_Modules;
for( ; Module != NULL; Module = Module->Next() ) 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) ) if( !edit_Same_Modules && (Module != Module_Ref) )
continue; continue;
if( Module->m_LibRef != Module->m_LibRef ) if( Module->m_LibRef != Module_Ref->m_LibRef )
continue; continue;
bool saveMe = false; 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) ) if( !edit_Same_Modules && (Module != Module_Ref) )
continue; continue;
if( Module->m_LibRef != Module->m_LibRef ) if( Module->m_LibRef != Module_Ref->m_LibRef )
continue; continue;
/* Erase module on screen */ /* Erase module on screen */