diff --git a/common/common_plot_functions.cpp b/common/common_plot_functions.cpp index bf177eab2e..757c9a7498 100644 --- a/common/common_plot_functions.cpp +++ b/common/common_plot_functions.cpp @@ -229,7 +229,7 @@ int UpperLimit = VARIABLE_BLOCK_START_POSITION; msg += screen->m_Revision; break; - case WS_LICENCE: + case WS_KICAD_VERSION: msg += g_ProductName; break; @@ -241,6 +241,18 @@ int UpperLimit = VARIABLE_BLOCK_START_POSITION; msg << screen->m_ScreenNumber << wxT("/") << screen->m_NumberOfScreen; break; + case WS_FILENAME: + { + wxString fname, fext; + wxFileName::SplitPath(screen->m_FileName, (wxString*)NULL, &fname, &fext); + msg << fname << wxT(".") << fext; + } + break; + + case WS_FULLSHEETNAME: +// msg += GetScreenDesc(); + break; + case WS_COMPANY_NAME: msg += screen->m_Company; if ( ! msg.IsEmpty() ) diff --git a/eeschema/dialog_build_BOM.cpp b/eeschema/dialog_build_BOM.cpp index 17cb812d2d..32704cb154 100644 --- a/eeschema/dialog_build_BOM.cpp +++ b/eeschema/dialog_build_BOM.cpp @@ -1,17 +1,18 @@ ///////////////////////////////////////////////////////////////////////////// + // Name: dialog_build_BOM.cpp -// Purpose: +// Purpose: // Author: jean-pierre Charras -// Modified by: +// Modified by: // Created: 01/15/06 18:18:44 -// RCS-ID: +// RCS-ID: // Copyright: GNU license -// Licence: +// Licence: ///////////////////////////////////////////////////////////////////////////// // Generated by DialogBlocks (unregistered), 01/15/06 18:18:44 -#if defined(__GNUG__) && !defined(__APPLE__) +#if defined (__GNUG__) && !defined (__APPLE__) #pragma implementation "dialog_build_BOM.h" #endif @@ -47,59 +48,60 @@ /* fonctions locales */ -static int GenListeGLabels( ListLabel * List ); -int GenListeCmp( ListComponent * List ); -static int ListTriComposantByRef(ListComponent *Objet1, - ListComponent *Objet2); -static int ListTriComposantByVal(ListComponent *Objet1, - ListComponent *Objet2); -static int ListTriGLabelBySheet(ListLabel *Objet1, ListLabel *Objet2); -static int ListTriGLabelByVal(ListLabel *Objet1, ListLabel *Objet2); -static void DeleteSubCmp( ListComponent * List , int NbItems); +static int GenListeGLabels( ListLabel* List ); +int GenListeCmp( ListComponent* List ); +static int ListTriComposantByRef( ListComponent* Objet1, + ListComponent* Objet2 ); +static int ListTriComposantByVal( ListComponent* Objet1, + ListComponent* Objet2 ); +static int ListTriGLabelBySheet( ListLabel* Objet1, ListLabel* Objet2 ); +static int ListTriGLabelByVal( ListLabel* Objet1, ListLabel* Objet2 ); +static void DeleteSubCmp( ListComponent* List, int NbItems ); -static int PrintListeGLabel( FILE *f, ListLabel *List, int NbItems); +static int PrintListeGLabel( FILE* f, ListLabel* List, int NbItems ); /* Local variables */ -static bool s_ListByRef = TRUE; -static bool s_ListByValue = TRUE; -static bool s_ListWithSubCmponents; -static bool s_ListHierarchicalPinByName; -static bool s_ListBySheet; -static bool s_BrowsList; -static int s_OutputFormOpt; -static int s_OutputSeparatorOpt; -static bool s_Add_FpField_state; -static bool s_Add_F1_state; -static bool s_Add_F2_state; -static bool s_Add_F3_state; -static bool s_Add_F4_state; -static bool s_Add_F5_state; -static bool s_Add_F6_state; -static bool s_Add_F7_state; -static bool s_Add_F8_state; -static bool * s_AddFieldList[] = { - & s_Add_FpField_state, - & s_Add_F1_state, - & s_Add_F2_state, - & s_Add_F3_state, - & s_Add_F4_state, - & s_Add_F5_state, - & s_Add_F6_state, - & s_Add_F7_state, - & s_Add_F8_state, - NULL +static bool s_ListByRef = TRUE; +static bool s_ListByValue = TRUE; +static bool s_ListWithSubCmponents; +static bool s_ListHierarchicalPinByName; +static bool s_ListBySheet; +static bool s_BrowsList; +static int s_OutputFormOpt; +static int s_OutputSeparatorOpt; +static bool s_Add_FpField_state; +static bool s_Add_F1_state; +static bool s_Add_F2_state; +static bool s_Add_F3_state; +static bool s_Add_F4_state; +static bool s_Add_F5_state; +static bool s_Add_F6_state; +static bool s_Add_F7_state; +static bool s_Add_F8_state; +static bool* s_AddFieldList[] = { + &s_Add_FpField_state, + &s_Add_F1_state, + &s_Add_F2_state, + &s_Add_F3_state, + &s_Add_F4_state, + &s_Add_F5_state, + &s_Add_F6_state, + &s_Add_F7_state, + &s_Add_F8_state, + NULL }; -#define OPTION_BOM_FORMAT wxT("BomFormat") -#define OPTION_BOM_SEPARATOR wxT("BomExportSeparator") -#define OPTION_BOM_ADD_FIELD wxT("BomAddField") +#define OPTION_BOM_FORMAT wxT( "BomFormat" ) +#define OPTION_BOM_SEPARATOR wxT( "BomExportSeparator" ) +#define OPTION_BOM_ADD_FIELD wxT( "BomAddField" ) /* list of separators used in bom export to spreadsheet * (selected by s_OutputSeparatorOpt, and s_OutputSeparatorOpt radiobox) */ static char s_ExportSeparator[] = ("\t;,."); static char s_ExportSeparatorSymbol; + /*! * WinEDA_Build_BOM_Frame type definition */ @@ -113,15 +115,15 @@ IMPLEMENT_DYNAMIC_CLASS( WinEDA_Build_BOM_Frame, wxDialog ) BEGIN_EVENT_TABLE( WinEDA_Build_BOM_Frame, wxDialog ) ////@begin WinEDA_Build_BOM_Frame event table entries - EVT_RADIOBOX( ID_RADIOBOX_SELECT_FORMAT, WinEDA_Build_BOM_Frame::OnRadioboxSelectFormatSelected ) +EVT_RADIOBOX( ID_RADIOBOX_SELECT_FORMAT, WinEDA_Build_BOM_Frame::OnRadioboxSelectFormatSelected ) - EVT_BUTTON( ID_CREATE_LIST, WinEDA_Build_BOM_Frame::OnCreateListClick ) +EVT_BUTTON( ID_CREATE_LIST, WinEDA_Build_BOM_Frame::OnCreateListClick ) - EVT_BUTTON( wxID_OK, WinEDA_Build_BOM_Frame::OnOkClick ) +EVT_BUTTON( wxID_OK, WinEDA_Build_BOM_Frame::OnOkClick ) - EVT_BUTTON( wxID_CANCEL, WinEDA_Build_BOM_Frame::OnCancelClick ) +EVT_BUTTON( wxID_CANCEL, WinEDA_Build_BOM_Frame::OnCancelClick ) - EVT_BUTTON( wxID_APPLY, WinEDA_Build_BOM_Frame::OnApplyClick ) +EVT_BUTTON( wxID_APPLY, WinEDA_Build_BOM_Frame::OnApplyClick ) ////@end WinEDA_Build_BOM_Frame event table entries @@ -132,51 +134,63 @@ END_EVENT_TABLE() * WinEDA_Build_BOM_Frame constructors */ -WinEDA_Build_BOM_Frame::WinEDA_Build_BOM_Frame() { } +WinEDA_Build_BOM_Frame::WinEDA_Build_BOM_Frame() +{ +} + WinEDA_Build_BOM_Frame::WinEDA_Build_BOM_Frame( WinEDA_DrawFrame* parent, - wxWindowID id, const wxString& caption, const wxPoint& pos, - const wxSize& size, long style ) + wxWindowID id, + const wxString& caption, + const wxPoint& pos, + const wxSize& size, + long style ) { - m_Parent = parent; + m_Parent = parent; - /* Get options */ - s_OutputFormOpt = m_Parent->m_Parent->m_EDA_Config->Read(OPTION_BOM_FORMAT, (long) 0); - s_OutputSeparatorOpt = m_Parent->m_Parent->m_EDA_Config->Read(OPTION_BOM_SEPARATOR, (long) 0); - long addfields = m_Parent->m_Parent->m_EDA_Config->Read(OPTION_BOM_ADD_FIELD, (long) 0); - for( int ii = 0, bitmask = 1; s_AddFieldList[ii] != NULL; ii++ ) - { - if( (addfields & bitmask) ) - * s_AddFieldList[ii] = true; - else - * s_AddFieldList[ii] = false; - - bitmask <<= 1; - } - - Create(parent, id, caption, pos, size, style); - - m_OutputFormCtrl->SetSelection(s_OutputFormOpt); - m_OutputSeparatorCtrl->SetSelection(s_OutputSeparatorOpt); - if( s_OutputFormOpt == 1 ) - m_OutputSeparatorCtrl->Enable(true); - else - m_OutputSeparatorCtrl->Enable(false); + /* Get options */ + s_OutputFormOpt = m_Parent->m_Parent->m_EDA_Config->Read( OPTION_BOM_FORMAT, (long) 0 ); + s_OutputSeparatorOpt = m_Parent->m_Parent->m_EDA_Config->Read( OPTION_BOM_SEPARATOR, (long) 0 ); + long addfields = m_Parent->m_Parent->m_EDA_Config->Read( OPTION_BOM_ADD_FIELD, (long) 0 ); + for( int ii = 0, bitmask = 1; s_AddFieldList[ii] != NULL; ii++ ) + { + if( (addfields & bitmask) ) + *s_AddFieldList[ii] = true; + else + *s_AddFieldList[ii] = false; + + bitmask <<= 1; + } + + Create( parent, id, caption, pos, size, style ); + + m_OutputFormCtrl->SetSelection( s_OutputFormOpt ); + m_OutputSeparatorCtrl->SetSelection( s_OutputSeparatorOpt ); + if( s_OutputFormOpt == 1 ) + m_OutputSeparatorCtrl->Enable( true ); + else + m_OutputSeparatorCtrl->Enable( false ); } + /*! * WinEDA_Build_BOM_Frame creator */ -bool WinEDA_Build_BOM_Frame::Create( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style ) +bool WinEDA_Build_BOM_Frame::Create( wxWindow* parent, + wxWindowID id, + const wxString& caption, + const wxPoint& pos, + const wxSize& size, + long style ) { ////@begin WinEDA_Build_BOM_Frame member initialisation - m_ListCmpbyRefItems = NULL; - m_ListSubCmpItems = NULL; - m_ListCmpbyValItems = NULL; - m_GenListLabelsbyVal = NULL; + m_ListCmpbyRefItems = NULL; + m_ListSubCmpItems = NULL; + m_ListCmpbyValItems = NULL; + m_GenListLabelsbyVal = NULL; m_GenListLabelsbySheet = NULL; - m_OutputFormCtrl = NULL; + m_OutputFormCtrl = NULL; m_OutputSeparatorCtrl = NULL; m_GetListBrowser = NULL; m_FieldsToAppendListSizer = NULL; @@ -189,176 +203,225 @@ bool WinEDA_Build_BOM_Frame::Create( wxWindow* parent, wxWindowID id, const wxSt m_AddField6 = NULL; m_AddField7 = NULL; m_AddField8 = NULL; + ////@end WinEDA_Build_BOM_Frame member initialisation ////@begin WinEDA_Build_BOM_Frame creation - SetExtraStyle(wxWS_EX_BLOCK_EVENTS); + SetExtraStyle( wxWS_EX_BLOCK_EVENTS ); wxDialog::Create( parent, id, caption, pos, size, style ); CreateControls(); - if (GetSizer()) + if( GetSizer() ) { - GetSizer()->SetSizeHints(this); + GetSizer()->SetSizeHints( this ); } Centre(); + ////@end WinEDA_Build_BOM_Frame creation return TRUE; } + /*! * Control creation for WinEDA_Build_BOM_Frame */ void WinEDA_Build_BOM_Frame::CreateControls() -{ - SetFont(*g_DialogFont); - +{ + SetFont( *g_DialogFont ); + ////@begin WinEDA_Build_BOM_Frame content construction // Generated by DialogBlocks, Вск 04 Ноя 2007 18:43:07 (unregistered) WinEDA_Build_BOM_Frame* itemDialog1 = this; - wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL); - itemDialog1->SetSizer(itemBoxSizer2); + wxBoxSizer* itemBoxSizer2 = new wxBoxSizer( wxVERTICAL ); + itemDialog1->SetSizer( itemBoxSizer2 ); - wxBoxSizer* itemBoxSizer3 = new wxBoxSizer(wxHORIZONTAL); - itemBoxSizer2->Add(itemBoxSizer3, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT, 5); + wxBoxSizer* itemBoxSizer3 = new wxBoxSizer( wxHORIZONTAL ); + itemBoxSizer2->Add( itemBoxSizer3, 0, wxALIGN_CENTER_HORIZONTAL | wxLEFT | wxRIGHT, 5 ); - wxBoxSizer* itemBoxSizer4 = new wxBoxSizer(wxVERTICAL); - itemBoxSizer3->Add(itemBoxSizer4, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5); + wxBoxSizer* itemBoxSizer4 = new wxBoxSizer( wxVERTICAL ); + itemBoxSizer3->Add( itemBoxSizer4, 0, wxALIGN_CENTER_VERTICAL | wxTOP | wxBOTTOM, 5 ); - wxStaticBox* itemStaticBoxSizer5Static = new wxStaticBox(itemDialog1, wxID_ANY, _("List items:")); - wxStaticBoxSizer* itemStaticBoxSizer5 = new wxStaticBoxSizer(itemStaticBoxSizer5Static, wxVERTICAL); - itemBoxSizer4->Add(itemStaticBoxSizer5, 0, wxGROW|wxALL, 5); + wxStaticBox* itemStaticBoxSizer5Static = new wxStaticBox( itemDialog1, wxID_ANY, + _( "List items:" ) ); + wxStaticBoxSizer* itemStaticBoxSizer5 = new wxStaticBoxSizer( itemStaticBoxSizer5Static, + wxVERTICAL ); + itemBoxSizer4->Add( itemStaticBoxSizer5, 0, wxGROW | wxALL, 5 ); - m_ListCmpbyRefItems = new wxCheckBox( itemDialog1, ID_CHECKBOX1, _("Components by Reference"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); - m_ListCmpbyRefItems->SetValue(true); - itemStaticBoxSizer5->Add(m_ListCmpbyRefItems, 0, wxALIGN_LEFT|wxALL, 5); + m_ListCmpbyRefItems = new wxCheckBox( itemDialog1, ID_CHECKBOX1, _( + "Components by Reference" ), wxDefaultPosition, + wxDefaultSize, wxCHK_2STATE ); + m_ListCmpbyRefItems->SetValue( true ); + itemStaticBoxSizer5->Add( m_ListCmpbyRefItems, 0, wxALIGN_LEFT | wxALL, 5 ); - m_ListSubCmpItems = new wxCheckBox( itemDialog1, ID_CHECKBOX2, _("Sub Components (i.e. U2A, U2B ...)"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); - m_ListSubCmpItems->SetValue(false); - itemStaticBoxSizer5->Add(m_ListSubCmpItems, 0, wxALIGN_LEFT|wxALL, 5); + m_ListSubCmpItems = new wxCheckBox( itemDialog1, ID_CHECKBOX2, + _( + "Sub Components (i.e. U2A, U2B ...)" ), + wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); + m_ListSubCmpItems->SetValue( false ); + itemStaticBoxSizer5->Add( m_ListSubCmpItems, 0, wxALIGN_LEFT | wxALL, 5 ); - m_ListCmpbyValItems = new wxCheckBox( itemDialog1, ID_CHECKBOX3, _("Components by Value"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); - m_ListCmpbyValItems->SetValue(true); - itemStaticBoxSizer5->Add(m_ListCmpbyValItems, 0, wxALIGN_LEFT|wxALL, 5); + m_ListCmpbyValItems = new wxCheckBox( itemDialog1, ID_CHECKBOX3, _( + "Components by Value" ), wxDefaultPosition, + wxDefaultSize, wxCHK_2STATE ); + m_ListCmpbyValItems->SetValue( true ); + itemStaticBoxSizer5->Add( m_ListCmpbyValItems, 0, wxALIGN_LEFT | wxALL, 5 ); - m_GenListLabelsbyVal = new wxCheckBox( itemDialog1, ID_CHECKBOX4, _("Hierachy Pins by Name"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); - m_GenListLabelsbyVal->SetValue(false); - itemStaticBoxSizer5->Add(m_GenListLabelsbyVal, 0, wxALIGN_LEFT|wxALL, 5); + m_GenListLabelsbyVal = new wxCheckBox( itemDialog1, ID_CHECKBOX4, _( + "Hierachy Pins by Name" ), wxDefaultPosition, + wxDefaultSize, wxCHK_2STATE ); + m_GenListLabelsbyVal->SetValue( false ); + itemStaticBoxSizer5->Add( m_GenListLabelsbyVal, 0, wxALIGN_LEFT | wxALL, 5 ); - m_GenListLabelsbySheet = new wxCheckBox( itemDialog1, ID_CHECKBOX5, _("Hierachy Pins by Sheets"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); - m_GenListLabelsbySheet->SetValue(false); - itemStaticBoxSizer5->Add(m_GenListLabelsbySheet, 0, wxALIGN_LEFT|wxALL, 5); + m_GenListLabelsbySheet = new wxCheckBox( itemDialog1, ID_CHECKBOX5, + _( + "Hierachy Pins by Sheets" ), wxDefaultPosition, + wxDefaultSize, wxCHK_2STATE ); + m_GenListLabelsbySheet->SetValue( false ); + itemStaticBoxSizer5->Add( m_GenListLabelsbySheet, 0, wxALIGN_LEFT | wxALL, 5 ); wxArrayString m_OutputFormCtrlStrings; - m_OutputFormCtrlStrings.Add(_("List")); - m_OutputFormCtrlStrings.Add(_("Text for spreadsheet import")); - m_OutputFormCtrl = new wxRadioBox( itemDialog1, ID_RADIOBOX_SELECT_FORMAT, _("Output format:"), wxDefaultPosition, wxDefaultSize, m_OutputFormCtrlStrings, 1, wxRA_SPECIFY_COLS ); - m_OutputFormCtrl->SetSelection(0); - itemBoxSizer4->Add(m_OutputFormCtrl, 0, wxGROW|wxLEFT|wxRIGHT|wxTOP, 5); + m_OutputFormCtrlStrings.Add( _( "List" ) ); + m_OutputFormCtrlStrings.Add( _( "Text for spreadsheet import" ) ); + m_OutputFormCtrl = new wxRadioBox( itemDialog1, ID_RADIOBOX_SELECT_FORMAT, _( + "Output format:" ), wxDefaultPosition, wxDefaultSize, + m_OutputFormCtrlStrings, 1, + wxRA_SPECIFY_COLS ); + m_OutputFormCtrl->SetSelection( 0 ); + itemBoxSizer4->Add( m_OutputFormCtrl, 0, wxGROW | wxLEFT | wxRIGHT | wxTOP, 5 ); wxArrayString m_OutputSeparatorCtrlStrings; - m_OutputSeparatorCtrlStrings.Add(_("Tab")); - m_OutputSeparatorCtrlStrings.Add(_(";")); - m_OutputSeparatorCtrlStrings.Add(_(",")); - m_OutputSeparatorCtrl = new wxRadioBox( itemDialog1, ID_RADIOBOX_SEPARATOR, _("Field separator for spreadsheet import:"), wxDefaultPosition, wxDefaultSize, m_OutputSeparatorCtrlStrings, 1, wxRA_SPECIFY_ROWS ); - m_OutputSeparatorCtrl->SetSelection(0); - itemBoxSizer4->Add(m_OutputSeparatorCtrl, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5); + m_OutputSeparatorCtrlStrings.Add( _( "Tab" ) ); + m_OutputSeparatorCtrlStrings.Add( _( ";" ) ); + m_OutputSeparatorCtrlStrings.Add( _( "," ) ); + m_OutputSeparatorCtrl = new wxRadioBox( itemDialog1, ID_RADIOBOX_SEPARATOR, + _( + "Field separator for spreadsheet import:" ), + wxDefaultPosition, wxDefaultSize, + m_OutputSeparatorCtrlStrings, 1, wxRA_SPECIFY_ROWS ); + m_OutputSeparatorCtrl->SetSelection( 0 ); + itemBoxSizer4->Add( m_OutputSeparatorCtrl, 0, wxGROW | wxLEFT | wxRIGHT | wxBOTTOM, 5 ); - wxStaticBox* itemStaticBoxSizer13Static = new wxStaticBox(itemDialog1, wxID_ANY, _("Options:")); - wxStaticBoxSizer* itemStaticBoxSizer13 = new wxStaticBoxSizer(itemStaticBoxSizer13Static, wxHORIZONTAL); - itemBoxSizer4->Add(itemStaticBoxSizer13, 0, wxGROW|wxALL, 5); + wxStaticBox* itemStaticBoxSizer13Static = new wxStaticBox( itemDialog1, wxID_ANY, + _( "Options:" ) ); + wxStaticBoxSizer* itemStaticBoxSizer13 = new wxStaticBoxSizer( itemStaticBoxSizer13Static, + wxHORIZONTAL ); + itemBoxSizer4->Add( itemStaticBoxSizer13, 0, wxGROW | wxALL, 5 ); - m_GetListBrowser = new wxCheckBox( itemDialog1, ID_CHECKBOX6, _("Launch list browser"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); - m_GetListBrowser->SetValue(false); - itemStaticBoxSizer13->Add(m_GetListBrowser, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); + m_GetListBrowser = new wxCheckBox( itemDialog1, ID_CHECKBOX6, _( + "Launch list browser" ), wxDefaultPosition, + wxDefaultSize, wxCHK_2STATE ); + m_GetListBrowser->SetValue( false ); + itemStaticBoxSizer13->Add( m_GetListBrowser, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 ); - wxBoxSizer* itemBoxSizer15 = new wxBoxSizer(wxVERTICAL); - itemBoxSizer3->Add(itemBoxSizer15, 0, wxALIGN_TOP|wxLEFT|wxTOP|wxBOTTOM, 5); + wxBoxSizer* itemBoxSizer15 = new wxBoxSizer( wxVERTICAL ); + itemBoxSizer3->Add( itemBoxSizer15, 0, wxALIGN_TOP | wxLEFT | wxTOP | wxBOTTOM, 5 ); - wxStaticBox* itemStaticBoxSizer16Static = new wxStaticBox(itemDialog1, wxID_ANY, _("Fields to add:")); - m_FieldsToAppendListSizer = new wxStaticBoxSizer(itemStaticBoxSizer16Static, wxVERTICAL); - itemBoxSizer15->Add(m_FieldsToAppendListSizer, 0, wxALIGN_LEFT|wxALL, 5); + wxStaticBox* itemStaticBoxSizer16Static = new wxStaticBox( itemDialog1, wxID_ANY, + _( "Fields to add:" ) ); + m_FieldsToAppendListSizer = new wxStaticBoxSizer( itemStaticBoxSizer16Static, wxVERTICAL ); + itemBoxSizer15->Add( m_FieldsToAppendListSizer, 0, wxALIGN_LEFT | wxALL, 5 ); - m_AddFootprintField = new wxCheckBox( itemDialog1, ID_CHECKBOX_FOOTPRINT_FIELD, _("Footprint"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); - m_AddFootprintField->SetValue(false); - m_FieldsToAppendListSizer->Add(m_AddFootprintField, 0, wxGROW|wxALL, 5); + m_AddFootprintField = new wxCheckBox( itemDialog1, ID_CHECKBOX_FOOTPRINT_FIELD, _( + "Footprint" ), wxDefaultPosition, wxDefaultSize, + wxCHK_2STATE ); + m_AddFootprintField->SetValue( false ); + m_FieldsToAppendListSizer->Add( m_AddFootprintField, 0, wxGROW | wxALL, 5 ); - m_AddField1 = new wxCheckBox( itemDialog1, ID_CHECKBOX_FIELD1, _("Field 1"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); - m_AddField1->SetValue(false); - m_FieldsToAppendListSizer->Add(m_AddField1, 0, wxGROW|wxALL, 5); + m_AddField1 = new wxCheckBox( itemDialog1, ID_CHECKBOX_FIELD1, _( + "Field 1" ), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); + m_AddField1->SetValue( false ); + m_FieldsToAppendListSizer->Add( m_AddField1, 0, wxGROW | wxALL, 5 ); - m_AddField2 = new wxCheckBox( itemDialog1, ID_CHECKBOX_FIELD2, _("Field 2"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); - m_AddField2->SetValue(false); - m_FieldsToAppendListSizer->Add(m_AddField2, 0, wxGROW|wxALL, 5); + m_AddField2 = new wxCheckBox( itemDialog1, ID_CHECKBOX_FIELD2, _( + "Field 2" ), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); + m_AddField2->SetValue( false ); + m_FieldsToAppendListSizer->Add( m_AddField2, 0, wxGROW | wxALL, 5 ); - m_AddField3 = new wxCheckBox( itemDialog1, ID_CHECKBOX_FIELD3, _("Field 3"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); - m_AddField3->SetValue(false); - m_FieldsToAppendListSizer->Add(m_AddField3, 0, wxGROW|wxALL, 5); + m_AddField3 = new wxCheckBox( itemDialog1, ID_CHECKBOX_FIELD3, _( + "Field 3" ), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); + m_AddField3->SetValue( false ); + m_FieldsToAppendListSizer->Add( m_AddField3, 0, wxGROW | wxALL, 5 ); - m_AddField4 = new wxCheckBox( itemDialog1, ID_CHECKBOX_FIELD4, _("Field 4"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); - m_AddField4->SetValue(false); - m_FieldsToAppendListSizer->Add(m_AddField4, 0, wxGROW|wxALL, 5); + m_AddField4 = new wxCheckBox( itemDialog1, ID_CHECKBOX_FIELD4, _( + "Field 4" ), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); + m_AddField4->SetValue( false ); + m_FieldsToAppendListSizer->Add( m_AddField4, 0, wxGROW | wxALL, 5 ); - m_AddField5 = new wxCheckBox( itemDialog1, ID_CHECKBOX_FIELD5, _("Field 5"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); - m_AddField5->SetValue(false); - m_FieldsToAppendListSizer->Add(m_AddField5, 0, wxGROW|wxALL, 5); + m_AddField5 = new wxCheckBox( itemDialog1, ID_CHECKBOX_FIELD5, _( + "Field 5" ), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); + m_AddField5->SetValue( false ); + m_FieldsToAppendListSizer->Add( m_AddField5, 0, wxGROW | wxALL, 5 ); - m_AddField6 = new wxCheckBox( itemDialog1, ID_CHECKBOX_FIELD6, _("Field 6"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); - m_AddField6->SetValue(false); - m_FieldsToAppendListSizer->Add(m_AddField6, 0, wxGROW|wxALL, 5); + m_AddField6 = new wxCheckBox( itemDialog1, ID_CHECKBOX_FIELD6, _( + "Field 6" ), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); + m_AddField6->SetValue( false ); + m_FieldsToAppendListSizer->Add( m_AddField6, 0, wxGROW | wxALL, 5 ); - m_AddField7 = new wxCheckBox( itemDialog1, ID_CHECKBOX_FIELD7, _("Field 7"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); - m_AddField7->SetValue(false); - m_FieldsToAppendListSizer->Add(m_AddField7, 0, wxGROW|wxALL, 5); + m_AddField7 = new wxCheckBox( itemDialog1, ID_CHECKBOX_FIELD7, _( + "Field 7" ), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); + m_AddField7->SetValue( false ); + m_FieldsToAppendListSizer->Add( m_AddField7, 0, wxGROW | wxALL, 5 ); - m_AddField8 = new wxCheckBox( itemDialog1, ID_CHECKBOX_FIELD8, _("Field 8"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); - m_AddField8->SetValue(false); - m_FieldsToAppendListSizer->Add(m_AddField8, 0, wxGROW|wxALL, 5); + m_AddField8 = new wxCheckBox( itemDialog1, ID_CHECKBOX_FIELD8, _( + "Field 8" ), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE ); + m_AddField8->SetValue( false ); + m_FieldsToAppendListSizer->Add( m_AddField8, 0, wxGROW | wxALL, 5 ); - itemBoxSizer15->Add(5, 5, 0, wxGROW|wxALL, 10); + itemBoxSizer15->Add( 5, 5, 0, wxGROW | wxALL, 10 ); - wxButton* itemButton27 = new wxButton( itemDialog1, ID_CREATE_LIST, _("Create &List"), wxDefaultPosition, wxDefaultSize, 0 ); + wxButton* itemButton27 = new wxButton( itemDialog1, ID_CREATE_LIST, _( + "Create &List" ), wxDefaultPosition, wxDefaultSize, + 0 ); itemButton27->SetDefault(); - itemButton27->SetForegroundColour(wxColour(166, 0, 0)); - itemBoxSizer15->Add(itemButton27, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); + itemButton27->SetForegroundColour( wxColour( 166, 0, 0 ) ); + itemBoxSizer15->Add( itemButton27, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 5 ); - wxBoxSizer* itemBoxSizer28 = new wxBoxSizer(wxHORIZONTAL); - itemBoxSizer2->Add(itemBoxSizer28, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT|wxBOTTOM, 5); + wxBoxSizer* itemBoxSizer28 = new wxBoxSizer( wxHORIZONTAL ); + itemBoxSizer2->Add( itemBoxSizer28, + 0, + wxALIGN_CENTER_HORIZONTAL | wxLEFT | wxRIGHT | wxBOTTOM, + 5 ); - wxButton* itemButton29 = new wxButton( itemDialog1, wxID_OK, _("&OK"), wxDefaultPosition, wxDefaultSize, 0 ); - itemButton29->SetForegroundColour(wxColour(255, 0, 0)); - itemBoxSizer28->Add(itemButton29, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); + wxButton* itemButton29 = new wxButton( itemDialog1, wxID_OK, _( + "&OK" ), wxDefaultPosition, wxDefaultSize, 0 ); + itemButton29->SetForegroundColour( wxColour( 255, 0, 0 ) ); + itemBoxSizer28->Add( itemButton29, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 ); - wxButton* itemButton30 = new wxButton( itemDialog1, wxID_CANCEL, _("&Cancel"), wxDefaultPosition, wxDefaultSize, 0 ); - itemButton30->SetForegroundColour(wxColour(0, 0, 255)); - itemBoxSizer28->Add(itemButton30, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); + wxButton* itemButton30 = new wxButton( itemDialog1, wxID_CANCEL, _( + "&Cancel" ), wxDefaultPosition, wxDefaultSize, 0 ); + itemButton30->SetForegroundColour( wxColour( 0, 0, 255 ) ); + itemBoxSizer28->Add( itemButton30, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 ); - wxButton* itemButton31 = new wxButton( itemDialog1, wxID_APPLY, _("&Apply"), wxDefaultPosition, wxDefaultSize, 0 ); - itemBoxSizer28->Add(itemButton31, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); + wxButton* itemButton31 = new wxButton( itemDialog1, wxID_APPLY, _( + "&Apply" ), wxDefaultPosition, wxDefaultSize, 0 ); + itemBoxSizer28->Add( itemButton31, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 ); // Set validators - m_ListCmpbyRefItems->SetValidator( wxGenericValidator(& s_ListByRef) ); - m_ListSubCmpItems->SetValidator( wxGenericValidator(& s_ListWithSubCmponents) ); - m_ListCmpbyValItems->SetValidator( wxGenericValidator(& s_ListByValue) ); - m_GenListLabelsbyVal->SetValidator( wxGenericValidator(& s_ListHierarchicalPinByName) ); - m_GenListLabelsbySheet->SetValidator( wxGenericValidator(& s_ListBySheet) ); - m_OutputFormCtrl->SetValidator( wxGenericValidator(& s_OutputFormOpt) ); - m_OutputSeparatorCtrl->SetValidator( wxGenericValidator(& s_OutputSeparatorOpt) ); - m_GetListBrowser->SetValidator( wxGenericValidator(& s_BrowsList) ); - m_AddFootprintField->SetValidator( wxGenericValidator(& s_Add_FpField_state) ); - m_AddField1->SetValidator( wxGenericValidator(& s_Add_F1_state) ); - m_AddField2->SetValidator( wxGenericValidator(& s_Add_F2_state) ); - m_AddField3->SetValidator( wxGenericValidator(& s_Add_F3_state) ); - m_AddField4->SetValidator( wxGenericValidator(& s_Add_F4_state) ); - m_AddField5->SetValidator( wxGenericValidator(& s_Add_F5_state) ); - m_AddField6->SetValidator( wxGenericValidator(& s_Add_F6_state) ); - m_AddField7->SetValidator( wxGenericValidator(& s_Add_F7_state) ); - m_AddField8->SetValidator( wxGenericValidator(& s_Add_F8_state) ); + m_ListCmpbyRefItems->SetValidator( wxGenericValidator( &s_ListByRef ) ); + m_ListSubCmpItems->SetValidator( wxGenericValidator( &s_ListWithSubCmponents ) ); + m_ListCmpbyValItems->SetValidator( wxGenericValidator( &s_ListByValue ) ); + m_GenListLabelsbyVal->SetValidator( wxGenericValidator( &s_ListHierarchicalPinByName ) ); + m_GenListLabelsbySheet->SetValidator( wxGenericValidator( &s_ListBySheet ) ); + m_OutputFormCtrl->SetValidator( wxGenericValidator( &s_OutputFormOpt ) ); + m_OutputSeparatorCtrl->SetValidator( wxGenericValidator( &s_OutputSeparatorOpt ) ); + m_GetListBrowser->SetValidator( wxGenericValidator( &s_BrowsList ) ); + m_AddFootprintField->SetValidator( wxGenericValidator( &s_Add_FpField_state ) ); + m_AddField1->SetValidator( wxGenericValidator( &s_Add_F1_state ) ); + m_AddField2->SetValidator( wxGenericValidator( &s_Add_F2_state ) ); + m_AddField3->SetValidator( wxGenericValidator( &s_Add_F3_state ) ); + m_AddField4->SetValidator( wxGenericValidator( &s_Add_F4_state ) ); + m_AddField5->SetValidator( wxGenericValidator( &s_Add_F5_state ) ); + m_AddField6->SetValidator( wxGenericValidator( &s_Add_F6_state ) ); + m_AddField7->SetValidator( wxGenericValidator( &s_Add_F7_state ) ); + m_AddField8->SetValidator( wxGenericValidator( &s_Add_F8_state ) ); + ////@end WinEDA_Build_BOM_Frame content construction } + /*! * Should we show tooltips? */ @@ -368,6 +431,7 @@ bool WinEDA_Build_BOM_Frame::ShowToolTips() return TRUE; } + /*! * Get bitmap resources */ @@ -376,11 +440,13 @@ wxBitmap WinEDA_Build_BOM_Frame::GetBitmapResource( const wxString& name ) { // Bitmap retrieval ////@begin WinEDA_Build_BOM_Frame bitmap retrieval - wxUnusedVar(name); + wxUnusedVar( name ); return wxNullBitmap; + ////@end WinEDA_Build_BOM_Frame bitmap retrieval } + /*! * Get icon resources */ @@ -389,8 +455,9 @@ wxIcon WinEDA_Build_BOM_Frame::GetIconResource( const wxString& name ) { // Icon retrieval ////@begin WinEDA_Build_BOM_Frame icon retrieval - wxUnusedVar(name); + wxUnusedVar( name ); return wxNullIcon; + ////@end WinEDA_Build_BOM_Frame icon retrieval } @@ -401,10 +468,10 @@ wxIcon WinEDA_Build_BOM_Frame::GetIconResource( const wxString& name ) void WinEDA_Build_BOM_Frame::OnRadioboxSelectFormatSelected( wxCommandEvent& event ) { - if( m_OutputFormCtrl->GetSelection() == 1 ) - m_OutputSeparatorCtrl->Enable(true); - else - m_OutputSeparatorCtrl->Enable(false); + if( m_OutputFormCtrl->GetSelection() == 1 ) + m_OutputSeparatorCtrl->Enable( true ); + else + m_OutputSeparatorCtrl->Enable( false ); } @@ -453,45 +520,46 @@ void WinEDA_Build_BOM_Frame::OnApplyClick( wxCommandEvent& event ) void WinEDA_Build_BOM_Frame::SavePreferences() /**************************************************/ { - // Determine current settings of "List items" and "Options" checkboxes - // (NOTE: These 6 settings are restored when the dialog box is next - // invoked, but are *not* still saved after EESchema is next shut down.) - s_ListByRef = m_ListCmpbyRefItems->GetValue(); - s_ListWithSubCmponents = m_ListSubCmpItems->GetValue(); - s_ListByValue = m_ListCmpbyValItems->GetValue(); - s_ListHierarchicalPinByName = m_GenListLabelsbyVal->GetValue(); - s_ListBySheet = m_GenListLabelsbySheet->GetValue(); - s_BrowsList = m_GetListBrowser->GetValue(); + // Determine current settings of "List items" and "Options" checkboxes + // (NOTE: These 6 settings are restored when the dialog box is next + // invoked, but are *not* still saved after EESchema is next shut down.) + s_ListByRef = m_ListCmpbyRefItems->GetValue(); + s_ListWithSubCmponents = m_ListSubCmpItems->GetValue(); + s_ListByValue = m_ListCmpbyValItems->GetValue(); + s_ListHierarchicalPinByName = m_GenListLabelsbyVal->GetValue(); + s_ListBySheet = m_GenListLabelsbySheet->GetValue(); + s_BrowsList = m_GetListBrowser->GetValue(); - // Determine current settings of both radiobutton groups - s_OutputFormOpt = m_OutputFormCtrl->GetSelection(); - s_OutputSeparatorOpt = m_OutputSeparatorCtrl->GetSelection(); - if( s_OutputSeparatorOpt < 0 ) - s_OutputSeparatorOpt = 0; + // Determine current settings of both radiobutton groups + s_OutputFormOpt = m_OutputFormCtrl->GetSelection(); + s_OutputSeparatorOpt = m_OutputSeparatorCtrl->GetSelection(); + if( s_OutputSeparatorOpt < 0 ) + s_OutputSeparatorOpt = 0; - // Determine current settings of all 8 "Fields to add" checkboxes - s_Add_F1_state = m_AddField1->GetValue(); - s_Add_F2_state = m_AddField2->GetValue(); - s_Add_F3_state = m_AddField3->GetValue(); - s_Add_F4_state = m_AddField4->GetValue(); - s_Add_F5_state = m_AddField5->GetValue(); - s_Add_F6_state = m_AddField6->GetValue(); - s_Add_F7_state = m_AddField7->GetValue(); - s_Add_F8_state = m_AddField8->GetValue(); + // Determine current settings of all 8 "Fields to add" checkboxes + s_Add_F1_state = m_AddField1->GetValue(); + s_Add_F2_state = m_AddField2->GetValue(); + s_Add_F3_state = m_AddField3->GetValue(); + s_Add_F4_state = m_AddField4->GetValue(); + s_Add_F5_state = m_AddField5->GetValue(); + s_Add_F6_state = m_AddField6->GetValue(); + s_Add_F7_state = m_AddField7->GetValue(); + s_Add_F8_state = m_AddField8->GetValue(); - // Now save current settings of both radiobutton groups - m_Parent->m_Parent->m_EDA_Config->Write(OPTION_BOM_FORMAT, (long)s_OutputFormOpt); - m_Parent->m_Parent->m_EDA_Config->Write(OPTION_BOM_SEPARATOR, (long) s_OutputSeparatorOpt); + // Now save current settings of both radiobutton groups + m_Parent->m_Parent->m_EDA_Config->Write( OPTION_BOM_FORMAT, (long) s_OutputFormOpt ); + m_Parent->m_Parent->m_EDA_Config->Write( OPTION_BOM_SEPARATOR, (long) s_OutputSeparatorOpt ); - // Now save current settings of all 8 "Fields to add" checkboxes - long addfields = 0; - for( int ii = 0, bitmask = 1; s_AddFieldList[ii] != NULL; ii++ ) - { - if( * s_AddFieldList[ii] ) - addfields |= bitmask; - bitmask <<= 1; - } - m_Parent->m_Parent->m_EDA_Config->Write(OPTION_BOM_ADD_FIELD, addfields); + // Now save current settings of all 8 "Fields to add" checkboxes + long addfields = 0; + for( int ii = 0, bitmask = 1; s_AddFieldList[ii] != NULL; ii++ ) + { + if( *s_AddFieldList[ii] ) + addfields |= bitmask; + bitmask <<= 1; + } + + m_Parent->m_Parent->m_EDA_Config->Write( OPTION_BOM_ADD_FIELD, addfields ); } @@ -499,22 +567,22 @@ void WinEDA_Build_BOM_Frame::SavePreferences() void WinEDA_Build_BOM_Frame::GenList() /**********************************************************/ { -#define EXT_LIST wxT(".lst") -wxString mask, filename; +#define EXT_LIST wxT( ".lst" ) + wxString mask, filename; - // Although the currently selected options determine the contents - // and format of the subsequently generated file, they are still - // *not* "restored" if the dialog box is ever subsequently invoked - // again (unless those options had been specifically "saved" before - // now (by clicking on either of the "OK" or "Apply" buttons)). - // - // Hence the following previously provided commands are now - // commented out, and the currently selected options are now - // read "directly" by the relevant functions instead. (The previous - // behavior of the dialog box in this regard had been inconsistent, - // in that the settings of the "Fields to add" checkboxes were *not* - // "restored", whereas all of the other settings *were* "restored"; - // now, *none* of those settings are subsequently "restored".) + // Although the currently selected options determine the contents + // and format of the subsequently generated file, they are still + // *not* "restored" if the dialog box is ever subsequently invoked + // again (unless those options had been specifically "saved" before + // now (by clicking on either of the "OK" or "Apply" buttons)). + // + // Hence the following previously provided commands are now + // commented out, and the currently selected options are now + // read "directly" by the relevant functions instead. (The previous + // behavior of the dialog box in this regard had been inconsistent, + // in that the settings of the "Fields to add" checkboxes were *not* + // "restored", whereas all of the other settings *were* "restored"; + // now, *none* of those settings are subsequently "restored".) // s_ListByRef = m_ListCmpbyRefItems->GetValue(); // s_ListWithSubCmponents = m_ListSubCmpItems->GetValue(); @@ -529,357 +597,371 @@ wxString mask, filename; // s_OutputSeparatorOpt = 0; // s_ExportSeparatorSymbol = s_ExportSeparator[s_OutputSeparatorOpt]; - // Updated code for determining the value of s_ExportSeparatorSymbol - if( m_OutputSeparatorCtrl->GetSelection() > 0 ) - s_ExportSeparatorSymbol - = s_ExportSeparator[m_OutputSeparatorCtrl->GetSelection()]; - else - s_ExportSeparatorSymbol = s_ExportSeparator[0]; + // Updated code for determining the value of s_ExportSeparatorSymbol + if( m_OutputSeparatorCtrl->GetSelection() > 0 ) + s_ExportSeparatorSymbol + = s_ExportSeparator[m_OutputSeparatorCtrl->GetSelection()]; + else + s_ExportSeparatorSymbol = s_ExportSeparator[0]; - m_ListFileName = g_RootSheet->m_AssociatedScreen->m_FileName; - ChangeFileNameExt(m_ListFileName, EXT_LIST); - //need to get rid of the path. - m_ListFileName = m_ListFileName.AfterLast('/'); - mask = wxT("*"); - mask += EXT_LIST; + m_ListFileName = g_RootSheet->m_AssociatedScreen->m_FileName; + ChangeFileNameExt( m_ListFileName, EXT_LIST ); - filename = EDA_FileSelector(_("Bill of materials:"), - wxEmptyString, /* Chemin par defaut (ici dir courante) */ - m_ListFileName, /* nom fichier par defaut, et resultat */ - EXT_LIST, /* extension par defaut */ - mask, /* Masque d'affichage */ - this, - wxFD_SAVE, - TRUE - ); - if( filename.IsEmpty() ) - return; - else - m_ListFileName = filename; + //need to get rid of the path. + m_ListFileName = m_ListFileName.AfterLast( '/' ); + mask = wxT( "*" ); + mask += EXT_LIST; + + filename = EDA_FileSelector( _( "Bill of materials:" ), + wxEmptyString, /* Chemin par defaut (ici dir courante) */ + m_ListFileName, /* nom fichier par defaut, et resultat */ + EXT_LIST, /* extension par defaut */ + mask, /* Masque d'affichage */ + this, + wxFD_SAVE, + TRUE + ); + if( filename.IsEmpty() ) + return; + else + m_ListFileName = filename; + + /* Close dialog, then show the list (if so requested) */ - /* Close dialog, then show the list (if so requested) */ // if( s_OutputFormOpt == 0 ) - if( m_OutputFormCtrl->GetSelection() == 0 ) - GenereListeOfItems(m_ListFileName); - else - CreateExportList(m_ListFileName); + if( m_OutputFormCtrl->GetSelection() == 0 ) + GenereListeOfItems( m_ListFileName ); + else + CreateExportList( m_ListFileName ); - EndModal( 1 ); + EndModal( 1 ); // if( s_BrowsList ) - if( m_GetListBrowser->GetValue() ) - { - wxString editorname = GetEditorName(); - AddDelimiterString(filename); - ExecuteFile(this, editorname, filename); - } - + if( m_GetListBrowser->GetValue() ) + { + wxString editorname = GetEditorName(); + AddDelimiterString( filename ); + ExecuteFile( this, editorname, filename ); + } } /****************************************************************************/ -void WinEDA_Build_BOM_Frame::CreateExportList(const wxString & FullFileName) +void WinEDA_Build_BOM_Frame::CreateExportList( const wxString& FullFileName ) /****************************************************************************/ + /* * Print a list of components, in a form which can be imported by a spreadsheet * form is: * cmp name; cmp val; fields; */ { -FILE *f; -ListComponent * List; -int NbItems; -wxString msg; - - /* Creation de la liste des elements */ - if( ( f = wxFopen( FullFileName, wxT( "wt" ) ) ) == NULL ) - { - msg = _("Failed to open file "); - msg << FullFileName; - DisplayError(this, msg); - return; - } + FILE* f; + ListComponent* List; + int NbItems; + wxString msg; - NbItems = GenListeCmp( NULL ); - if( NbItems ) - { - List = (ListComponent*)MyZMalloc( NbItems * sizeof(ListComponent) ); - if( List == NULL ) - { - fclose( f ); - return; - } + /* Creation de la liste des elements */ + if( ( f = wxFopen( FullFileName, wxT( "wt" ) ) ) == NULL ) + { + msg = _( "Failed to open file " ); + msg << FullFileName; + DisplayError( this, msg ); + return; + } - GenListeCmp( List ); + NbItems = GenListeCmp( NULL ); + if( NbItems ) + { + List = (ListComponent*) MyZMalloc( NbItems * sizeof(ListComponent) ); + if( List == NULL ) + { + fclose( f ); + return; + } - /* sort component list */ - qsort( List, NbItems, sizeof( ListComponent ), - (int(*)(const void*, const void*))ListTriComposantByRef ); + GenListeCmp( List ); + + /* sort component list */ + qsort( List, NbItems, sizeof( ListComponent ), + ( int( * ) ( const void*, const void* ) )ListTriComposantByRef ); // if( ! s_ListWithSubCmponents ) - if( ! m_ListSubCmpItems->GetValue() ) - DeleteSubCmp(List, NbItems); + if( !m_ListSubCmpItems->GetValue() ) + DeleteSubCmp( List, NbItems ); - /* create the file */ - PrintListeCmpByRef(f, List, NbItems, TRUE); + /* create the file */ + PrintListeCmpByRef( f, List, NbItems, TRUE ); - MyFree( List ); - } + MyFree( List ); + } - fclose( f ); + fclose( f ); } +/****************************************************************************/ +void WinEDA_Build_BOM_Frame::GenereListeOfItems( const wxString& FullFileName ) +/****************************************************************************/ -/****************************************************************************/ -void WinEDA_Build_BOM_Frame::GenereListeOfItems(const wxString & FullFileName) -/****************************************************************************/ /* * Routine principale pour la creation des listings ( composants et/ou labels * globaux et "sheet labels" ) */ { -FILE *f; -ListComponent * List; -ListLabel * ListOfLabels; -int NbItems; -char Line[1024]; -wxString msg; - - /* Creation de la liste des elements */ - if( ( f = wxFopen( FullFileName, wxT( "wt" ) ) ) == NULL ) - { - msg = _("Failed to open file "); - msg << FullFileName; - DisplayError(this, msg); - return; - } + FILE* f; + ListComponent* List; + ListLabel* ListOfLabels; + int NbItems; + char Line[1024]; + wxString msg; - NbItems = GenListeCmp( NULL ); - if( NbItems ) - { - List = ( ListComponent *) - MyZMalloc( NbItems * sizeof(ListComponent) ); - if( List == NULL ) - { - fclose( f ); - return; - } + /* Creation de la liste des elements */ + if( ( f = wxFopen( FullFileName, wxT( "wt" ) ) ) == NULL ) + { + msg = _( "Failed to open file " ); + msg << FullFileName; + DisplayError( this, msg ); + return; + } - GenListeCmp( List ); - - for(int i=0; i> Creation date: %s\n", CONV_TO_UTF8(Title), Line ); + GenListeCmp( List ); - /* Tri et impression de la liste des composants */ +#if 0 + for( int i = 0; i> Creation date: %s\n", CONV_TO_UTF8( Title ), Line ); + + /* Tri et impression de la liste des composants */ + + qsort( List, NbItems, sizeof( ListComponent ), + ( int( * ) ( const void*, const void* ) )ListTriComposantByRef ); +#if 0 + printf( "sorted by reference:\n" ); + for( int i = 0; iGetValue() ) - DeleteSubCmp(List, NbItems); + if( !m_ListSubCmpItems->GetValue() ) + DeleteSubCmp( List, NbItems ); // if( s_ListByRef ) - if( m_ListCmpbyRefItems->GetValue() ) - { - PrintListeCmpByRef(f, List, NbItems); - } + if( m_ListCmpbyRefItems->GetValue() ) + { + PrintListeCmpByRef( f, List, NbItems ); + } // if( s_ListByValue ) - if( m_ListCmpbyValItems->GetValue() ) - { - qsort( List, NbItems, sizeof( ListComponent ), - (int(*)(const void*, const void*))ListTriComposantByVal ); - PrintListeCmpByVal(f, List, NbItems); - } - MyFree( List ); - } + if( m_ListCmpbyValItems->GetValue() ) + { + qsort( List, NbItems, sizeof( ListComponent ), + ( int( * ) ( const void*, const void* ) )ListTriComposantByVal ); + PrintListeCmpByVal( f, List, NbItems ); + } + MyFree( List ); + } - /***************************************/ - /* Generation liste des Labels globaux */ - /***************************************/ + /***************************************/ + /* Generation liste des Labels globaux */ + /***************************************/ - NbItems = GenListeGLabels( NULL ); - if( NbItems ) - { - ListOfLabels = (ListLabel *) MyZMalloc( NbItems * sizeof(ListLabel) ); - memset((void*)ListOfLabels, 0, NbItems * sizeof(ListLabel)); - if( ListOfLabels == NULL ) - { - fclose( f ); - return; - } - - GenListeGLabels(ListOfLabels); + NbItems = GenListeGLabels( NULL ); + if( NbItems ) + { + ListOfLabels = (ListLabel*) MyZMalloc( NbItems * sizeof(ListLabel) ); + memset( (void*) ListOfLabels, 0, NbItems * sizeof(ListLabel) ); + if( ListOfLabels == NULL ) + { + fclose( f ); + return; + } + + GenListeGLabels( ListOfLabels ); + + /* Tri de la liste */ - /* Tri de la liste */ // if( s_ListBySheet ) - if( m_GenListLabelsbySheet->GetValue() ) - { - qsort( ListOfLabels, NbItems, sizeof( ListLabel ), - (int(*)(const void*, const void*))ListTriGLabelBySheet ); + if( m_GenListLabelsbySheet->GetValue() ) + { + qsort( ListOfLabels, NbItems, sizeof( ListLabel ), + ( int( * ) ( const void*, const void* ) )ListTriGLabelBySheet ); - msg.Printf( _("\n#Glob labels ( order = Sheet Number ) count = %d\n"), NbItems ); - fprintf( f, "%s", CONV_TO_UTF8(msg) ); - PrintListeGLabel(f, ListOfLabels, NbItems); - } + msg.Printf( _( "\n#Glob labels ( order = Sheet Number ) count = %d\n" ), NbItems ); + fprintf( f, "%s", CONV_TO_UTF8( msg ) ); + PrintListeGLabel( f, ListOfLabels, NbItems ); + } // if( s_ListHierarchicalPinByName ) - if( m_GenListLabelsbyVal->GetValue() ) - { - qsort( ListOfLabels, NbItems, sizeof( ListLabel ), - (int(*)(const void*, const void*))ListTriGLabelByVal ); + if( m_GenListLabelsbyVal->GetValue() ) + { + qsort( ListOfLabels, NbItems, sizeof( ListLabel ), + ( int( * ) ( const void*, const void* ) )ListTriGLabelByVal ); - msg.Printf(_("\n#Glob labels ( order = Alphab. ) count = %d\n\n"), NbItems ); - fprintf( f, "%s", CONV_TO_UTF8(msg) ); - PrintListeGLabel(f, ListOfLabels, NbItems); - } - MyFree( ListOfLabels ); - } + msg.Printf( _( "\n#Glob labels ( order = Alphab. ) count = %d\n\n" ), NbItems ); + fprintf( f, "%s", CONV_TO_UTF8( msg ) ); + PrintListeGLabel( f, ListOfLabels, NbItems ); + } + MyFree( ListOfLabels ); + } - msg = _("\n#End List\n"); - fprintf( f, "%s", CONV_TO_UTF8(msg) ); - fclose( f ); + msg = _( "\n#End List\n" ); + fprintf( f, "%s", CONV_TO_UTF8( msg ) ); + fclose( f ); } +/****************************************/ +int GenListeCmp( ListComponent* List ) +/****************************************/ -/****************************************/ -int GenListeCmp( ListComponent * List ) -/****************************************/ /* Routine de generation de la liste des elements utiles du dessin * Si List == NULL: comptage des elements * Sinon remplissage de la liste * Initialise "FlagControlMulti" a SheetNumber pour la sortie des listes * et m_Father comme pointeur sur la sheet d'appartenance - * - * routine for generating a list of the used components. + * + * routine for generating a list of the used components. * if List == null, just returns the count. if not, fills the list. - * goes through the sheets, not the screens, so that we account for - * multiple instances of a given screen. + * goes through the sheets, not the screens, so that we account for + * multiple instances of a given screen. */ { -int ItemCount = 0; -EDA_BaseStruct *DrawList; -EDA_SchComponentStruct *DrawLibItem; -DrawSheetPath * sheet; + int ItemCount = 0; + EDA_BaseStruct* DrawList; + EDA_SchComponentStruct* DrawLibItem; + DrawSheetPath* sheet; - /* Build the sheet (not screen) list */ - EDA_SheetList SheetList(NULL); + /* Build the sheet (not screen) list */ + EDA_SheetList SheetList( NULL ); - for( sheet = SheetList.GetFirst(); sheet != NULL; sheet = SheetList.GetNext() ) - { - DrawList = sheet->LastDrawList(); - while( DrawList ) - { - switch( DrawList->Type() ) - { - case DRAW_LIB_ITEM_STRUCT_TYPE : - ItemCount++; - DrawLibItem = (EDA_SchComponentStruct *) DrawList; - DrawLibItem->m_Parent = sheet->LastScreen(); - if( List ) - { - (*List).m_Comp = DrawLibItem; - (*List).m_SheetList = *sheet; - strncpy(&((*List).m_Ref[0]), - CONV_TO_UTF8(DrawLibItem->GetRef(sheet)), - sizeof((*List).m_Ref)); - List++; - } - break; + for( sheet = SheetList.GetFirst(); sheet != NULL; sheet = SheetList.GetNext() ) + { + DrawList = sheet->LastDrawList(); + while( DrawList ) + { + switch( DrawList->Type() ) + { + case DRAW_LIB_ITEM_STRUCT_TYPE: + ItemCount++; + DrawLibItem = (EDA_SchComponentStruct*) DrawList; + DrawLibItem->m_Parent = sheet->LastScreen(); + if( List ) + { + List->m_Comp = DrawLibItem; + List->m_SheetList = *sheet; + strncpy( List->m_Ref, + CONV_TO_UTF8( DrawLibItem->GetRef( sheet ) ), + sizeof( List->m_Ref ) ); + List++; + } + break; - default: - break; - } - DrawList = DrawList->Pnext; - } - } - return( ItemCount ); + default: + break; + } + + DrawList = DrawList->Pnext; + } + } + + return ItemCount; } /*********************************************/ -static int GenListeGLabels( ListLabel * List ) +static int GenListeGLabels( ListLabel* List ) /*********************************************/ -/* Count the Glabels, or fill the list Listwith Glabel pointers + +/* Count the Glabels, or fill the list Listwith Glabel pointers * If List == NULL: Item count only * Else fill list of Glabels */ { -int ItemCount = 0; -EDA_BaseStruct *DrawList; -DrawSheetLabelStruct *SheetLabel; -DrawSheetPath * sheet; + int ItemCount = 0; + EDA_BaseStruct* DrawList; + DrawSheetLabelStruct* SheetLabel; + DrawSheetPath* sheet; - /* Build the screen list */ - EDA_SheetList SheetList(NULL); + /* Build the screen list */ + EDA_SheetList SheetList( NULL ); - for( sheet = SheetList.GetFirst(); sheet != NULL; sheet = SheetList.GetNext() ) - { - DrawList = sheet->LastDrawList(); - wxString path = sheet->Path(); - while(DrawList ) - { - switch( DrawList->Type() ) - { - case DRAW_HIER_LABEL_STRUCT_TYPE: - case DRAW_GLOBAL_LABEL_STRUCT_TYPE : - ItemCount++; - if( List ) - { - List->m_LabelType = DrawList->Type(); - snprintf(List->m_SheetPath, sizeof(List->m_SheetPath), - "%s", CONV_TO_UTF8(path)); - List->m_Label = DrawList; - List++; - } - break; - - case DRAW_SHEET_STRUCT_TYPE : - { - #define Sheet ((DrawSheetStruct * ) DrawList) - SheetLabel= Sheet->m_Label; - while( SheetLabel != NULL ) - { - if( List ) - { - List->m_LabelType = DRAW_SHEETLABEL_STRUCT_TYPE; - snprintf(List->m_SheetPath, sizeof(List->m_SheetPath), - "%s", CONV_TO_UTF8(path)); - List->m_Label = SheetLabel; - List++; - } - ItemCount++; - SheetLabel = (DrawSheetLabelStruct*)(SheetLabel->Pnext); - } - } - break; + for( sheet = SheetList.GetFirst(); sheet != NULL; sheet = SheetList.GetNext() ) + { + DrawList = sheet->LastDrawList(); + wxString path = sheet->PathHumanReadable(); + while( DrawList ) + { + switch( DrawList->Type() ) + { + case DRAW_HIER_LABEL_STRUCT_TYPE: + case DRAW_GLOBAL_LABEL_STRUCT_TYPE: + ItemCount++; + if( List ) + { + List->m_LabelType = DrawList->Type(); + snprintf( List->m_SheetPath, sizeof(List->m_SheetPath), + "%s", CONV_TO_UTF8( path ) ); + List->m_Label = DrawList; + List++; + } + break; - default: - break; - } - DrawList = DrawList->Pnext; - } - } - return( ItemCount ); + case DRAW_SHEET_STRUCT_TYPE: + { + #define Sheet ( (DrawSheetStruct*) DrawList ) + SheetLabel = Sheet->m_Label; + while( SheetLabel != NULL ) + { + if( List ) + { + List->m_LabelType = DRAW_SHEETLABEL_STRUCT_TYPE; + snprintf( List->m_SheetPath, sizeof(List->m_SheetPath), + "%s", CONV_TO_UTF8( path ) ); + List->m_Label = SheetLabel; + List++; + } + ItemCount++; + SheetLabel = (DrawSheetLabelStruct*) (SheetLabel->Pnext); + } + } + break; + + default: + break; + } + DrawList = DrawList->Pnext; + } + } + + return ItemCount; } /**********************************************************/ -static int ListTriComposantByVal(ListComponent *Objet1, - ListComponent *Objet2) +static int ListTriComposantByVal( ListComponent* Objet1, + ListComponent* Objet2 ) /**********************************************************/ + /* Routine de comparaison pour le tri du Tableau par qsort() * Les composants sont tries * par valeur @@ -887,44 +969,45 @@ static int ListTriComposantByVal(ListComponent *Objet1, * si meme valeur: par numero d'unite */ { -int ii; -const wxString * Text1, *Text2; + int ii; + const wxString* Text1, * Text2; - if( ( Objet1 == NULL ) && ( Objet2 == NULL ) ) - return( 0 ); - if( Objet1 == NULL ) - return( -1 ); - if( Objet2 == NULL ) - return( 1 ); - if( ( Objet1->m_Comp == NULL ) && ( Objet2->m_Comp == NULL ) ) - return( 0 ); - if( Objet1->m_Comp == NULL ) - return( -1 ); - if( Objet2->m_Comp == NULL ) - return( 1 ); + if( ( Objet1 == NULL ) && ( Objet2 == NULL ) ) + return 0; + if( Objet1 == NULL ) + return -1; + if( Objet2 == NULL ) + return 1; + if( ( Objet1->m_Comp == NULL ) && ( Objet2->m_Comp == NULL ) ) + return 0; + if( Objet1->m_Comp == NULL ) + return -1; + if( Objet2->m_Comp == NULL ) + return 1; - Text1 = &(Objet1->m_Comp->m_Field[VALUE].m_Text); - Text2 = &(Objet2->m_Comp->m_Field[VALUE].m_Text); - ii = Text1->CmpNoCase(*Text2); + Text1 = &(Objet1->m_Comp->m_Field[VALUE].m_Text); + Text2 = &(Objet2->m_Comp->m_Field[VALUE].m_Text); + ii = Text1->CmpNoCase( *Text2 ); - if( ii == 0 ) - { - ii = strcmp(Objet1->m_Ref, Objet2->m_Ref); - } + if( ii == 0 ) + { + ii = strcmp( Objet1->m_Ref, Objet2->m_Ref ); + } - if( ii == 0 ) - { - ii = Objet1->m_Comp->m_Multi - Objet2->m_Comp->m_Multi; - } + if( ii == 0 ) + { + ii = Objet1->m_Comp->m_Multi - Objet2->m_Comp->m_Multi; + } - return( ii ); + return ii; } /**********************************************************/ -static int ListTriComposantByRef(ListComponent *Objet1, - ListComponent *Objet2) +static int ListTriComposantByRef( ListComponent* Objet1, + ListComponent* Objet2 ) /**********************************************************/ + /* Routine de comparaison pour le tri du Tableau par qsort() * Les composants sont tries * par reference @@ -932,413 +1015,427 @@ static int ListTriComposantByRef(ListComponent *Objet1, * si meme valeur: par numero d'unite */ { -int ii; -const wxString * Text1, *Text2; + int ii; + const wxString* Text1, * Text2; - if( ( Objet1 == NULL ) && ( Objet2 == NULL ) ) - return( 0 ); - if( Objet1 == NULL ) - return( -1 ); - if( Objet2 == NULL ) - return( 1 ); - - if( ( Objet1->m_Comp == NULL ) && ( Objet2->m_Comp == NULL ) ) - return( 0 ); - if( Objet1->m_Comp == NULL ) - return( -1 ); - if( Objet2->m_Comp == NULL ) - return( 1 ); + if( ( Objet1 == NULL ) && ( Objet2 == NULL ) ) + return 0; + if( Objet1 == NULL ) + return -1; + if( Objet2 == NULL ) + return 1; - ii = strcmp(Objet1->m_Ref, Objet2->m_Ref); + if( ( Objet1->m_Comp == NULL ) && ( Objet2->m_Comp == NULL ) ) + return 0; + if( Objet1->m_Comp == NULL ) + return -1; + if( Objet2->m_Comp == NULL ) + return 1; - if( ii == 0 ){ - Text1 = &( Objet1->m_Comp->m_Field[VALUE].m_Text ); - Text2 = &( Objet2->m_Comp->m_Field[VALUE].m_Text ); - ii = Text1->CmpNoCase(*Text2); - } + ii = strcmp( Objet1->m_Ref, Objet2->m_Ref ); - if( ii == 0 ){ - ii = Objet1->m_Comp->m_Multi - Objet2->m_Comp->m_Multi; - } + if( ii == 0 ) + { + Text1 = &( Objet1->m_Comp->m_Field[VALUE].m_Text ); + Text2 = &( Objet2->m_Comp->m_Field[VALUE].m_Text ); + ii = Text1->CmpNoCase( *Text2 ); + } - return( ii ); + if( ii == 0 ) + { + ii = Objet1->m_Comp->m_Multi - Objet2->m_Comp->m_Multi; + } + + return ii; } /******************************************************************/ -static int ListTriGLabelByVal(ListLabel *Objet1, ListLabel *Objet2) +static int ListTriGLabelByVal( ListLabel* Objet1, ListLabel* Objet2 ) /*******************************************************************/ + /* Routine de comparaison pour le tri du Tableau par qsort() * Les labels sont tries * par comparaison ascii * si meme valeur: par numero de sheet */ { -int ii; -const wxString * Text1, *Text2; + int ii; + const wxString* Text1, * Text2; - if( Objet1->m_LabelType == DRAW_SHEETLABEL_STRUCT_TYPE ) - Text1 = &((DrawSheetLabelStruct *)Objet1->m_Label)->m_Text; - else - Text1 = &((DrawTextStruct *)Objet1->m_Label)->m_Text; + if( Objet1->m_LabelType == DRAW_SHEETLABEL_STRUCT_TYPE ) + Text1 = &( (DrawSheetLabelStruct*) Objet1->m_Label )->m_Text; + else + Text1 = &( (DrawTextStruct*) Objet1->m_Label )->m_Text; - if( Objet2->m_LabelType == DRAW_SHEETLABEL_STRUCT_TYPE ) - Text2 = &((DrawSheetLabelStruct *)Objet2->m_Label)->m_Text; - else - Text2 = &((DrawTextStruct *)Objet2->m_Label)->m_Text; + if( Objet2->m_LabelType == DRAW_SHEETLABEL_STRUCT_TYPE ) + Text2 = &( (DrawSheetLabelStruct*) Objet2->m_Label )->m_Text; + else + Text2 = &( (DrawTextStruct*) Objet2->m_Label )->m_Text; - ii = Text1->CmpNoCase(*Text2); + ii = Text1->CmpNoCase( *Text2 ); - if( ii == 0 ) - { - ii = strcmp(Objet1->m_SheetPath, Objet2->m_SheetPath); - } + if( ii == 0 ) + { + ii = strcmp( Objet1->m_SheetPath, Objet2->m_SheetPath ); + } - return( ii ); + return ii; } /*******************************************************************/ -static int ListTriGLabelBySheet(ListLabel *Objet1, ListLabel *Objet2) +static int ListTriGLabelBySheet( ListLabel* Objet1, ListLabel* Objet2 ) /*******************************************************************/ + /* Routine de comparaison pour le tri du Tableau par qsort() * Les labels sont tries * par sheet number * si meme valeur, par ordre alphabetique */ { -int ii; -const wxString * Text1, *Text2; + int ii; + const wxString* Text1, * Text2; - - ii = strcmp(Objet1->m_SheetPath, Objet2->m_SheetPath); - if( ii == 0 ) - { - if( Objet1->m_LabelType == DRAW_SHEETLABEL_STRUCT_TYPE ) - Text1 = &((DrawSheetLabelStruct *)Objet1->m_Label)->m_Text; - else - Text1 = &((DrawTextStruct *)Objet1->m_Label)->m_Text; + ii = strcmp( Objet1->m_SheetPath, Objet2->m_SheetPath ); - if( Objet2->m_LabelType == DRAW_SHEETLABEL_STRUCT_TYPE ) - Text2 = &((DrawSheetLabelStruct *)Objet2->m_Label)->m_Text; - else - Text2 = &((DrawTextStruct *)Objet2->m_Label)->m_Text; + if( ii == 0 ) + { + if( Objet1->m_LabelType == DRAW_SHEETLABEL_STRUCT_TYPE ) + Text1 = &( (DrawSheetLabelStruct*) Objet1->m_Label )->m_Text; + else + Text1 = &( (DrawTextStruct*) Objet1->m_Label )->m_Text; - ii = Text1->CmpNoCase(*Text2); - } + if( Objet2->m_LabelType == DRAW_SHEETLABEL_STRUCT_TYPE ) + Text2 = &( (DrawSheetLabelStruct*) Objet2->m_Label )->m_Text; + else + Text2 = &( (DrawTextStruct*) Objet2->m_Label )->m_Text; - return( ii ); + ii = Text1->CmpNoCase( *Text2 ); + } + + return ii; } /**************************************************************/ -static void DeleteSubCmp( ListComponent * List, int NbItems ) +static void DeleteSubCmp( ListComponent* List, int NbItems ) /**************************************************************/ + /* Remove sub components from the list, when multiples parts per package are found in this list * The component list **MUST** be sorted by reference and by unit number */ { -int ii; -EDA_SchComponentStruct * LibItem; -wxString OldName, CurrName; + int ii; + EDA_SchComponentStruct* LibItem; + wxString OldName, CurrName; - for( ii = 0; ii < NbItems; ii++ ) - { - LibItem = List[ii].m_Comp; - if( LibItem == NULL ) - continue; - CurrName = CONV_FROM_UTF8(List[ii].m_Ref); - if( !OldName.IsEmpty() ) - { - if( OldName == CurrName ) // CurrName is a subpart of OldName: remove it - { - List[ii].m_Comp = NULL; - List[ii].m_SheetList.Clear(); - List[ii].m_Ref[0] = 0; - - } - } - OldName = CurrName; - } + for( ii = 0; ii < NbItems; ii++ ) + { + LibItem = List[ii].m_Comp; + if( LibItem == NULL ) + continue; + CurrName = CONV_FROM_UTF8( List[ii].m_Ref ); + if( !OldName.IsEmpty() ) + { + if( OldName == CurrName ) // CurrName is a subpart of OldName: remove it + { + List[ii].m_Comp = NULL; + List[ii].m_SheetList.Clear(); + List[ii].m_Ref[0] = 0; + } + } + OldName = CurrName; + } } /*******************************************************************************************/ -void WinEDA_Build_BOM_Frame::PrintFieldData(FILE * f, EDA_SchComponentStruct * DrawLibItem, - bool CompactForm) +void WinEDA_Build_BOM_Frame::PrintFieldData( FILE* f, EDA_SchComponentStruct* DrawLibItem, + bool CompactForm ) /*******************************************************************************************/ { -wxCheckBox * FieldListCtrl[FIELD8 - FIELD1 + 1] = { - m_AddField1, - m_AddField2, - m_AddField3, - m_AddField4, - m_AddField5, - m_AddField6, - m_AddField7, - m_AddField8 - }; -int ii; -wxCheckBox * FieldCtrl = FieldListCtrl[0]; + wxCheckBox* FieldListCtrl[FIELD8 - FIELD1 + 1] = { + m_AddField1, + m_AddField2, + m_AddField3, + m_AddField4, + m_AddField5, + m_AddField6, + m_AddField7, + m_AddField8 + }; + int ii; + wxCheckBox* FieldCtrl = FieldListCtrl[0]; - if( CompactForm ) - { - fprintf(f, "%c%s", s_ExportSeparatorSymbol, - CONV_TO_UTF8(DrawLibItem->m_Field[FOOTPRINT].m_Text)); - } + if( CompactForm ) + { + fprintf( f, "%c%s", s_ExportSeparatorSymbol, + CONV_TO_UTF8( DrawLibItem->m_Field[FOOTPRINT].m_Text ) ); + } - for( ii = FIELD1; ii <= FIELD8; ii ++ ) - { - FieldCtrl = FieldListCtrl[ii - FIELD1]; - if( FieldCtrl == NULL ) - continue; - if( ! FieldCtrl->IsChecked() ) - continue; - if( CompactForm ) - fprintf(f, "%c%s", s_ExportSeparatorSymbol, - CONV_TO_UTF8(DrawLibItem->m_Field[ii].m_Text)); - else - fprintf(f, "; %-12s", CONV_TO_UTF8(DrawLibItem->m_Field[ii].m_Text)); - } + for( ii = FIELD1; ii <= FIELD8; ii++ ) + { + FieldCtrl = FieldListCtrl[ii - FIELD1]; + if( FieldCtrl == NULL ) + continue; + if( !FieldCtrl->IsChecked() ) + continue; + if( CompactForm ) + fprintf( f, "%c%s", s_ExportSeparatorSymbol, + CONV_TO_UTF8( DrawLibItem->m_Field[ii].m_Text ) ); + else + fprintf( f, "; %-12s", CONV_TO_UTF8( DrawLibItem->m_Field[ii].m_Text ) ); + } } /*********************************************************************************************/ -int WinEDA_Build_BOM_Frame::PrintListeCmpByRef( FILE * f, ListComponent * List, int NbItems, - bool CompactForm ) +int WinEDA_Build_BOM_Frame::PrintListeCmpByRef( FILE* f, ListComponent* List, int NbItems, + bool CompactForm ) /*********************************************************************************************/ + /* Print the B.O.M sorted by reference */ { -int ii, Multi, Unit; -EDA_BaseStruct *DrawList; -EDA_SchComponentStruct *DrawLibItem; -EDA_LibComponentStruct *Entry; -char NameCmp[80]; -wxString msg; - - if( CompactForm ) - { - fprintf( f, "ref%cvalue%csheet path%csheet name%cfootprint", - s_ExportSeparatorSymbol, s_ExportSeparatorSymbol, - s_ExportSeparatorSymbol, s_ExportSeparatorSymbol ); - wxCheckBox * FieldListCtrl[FIELD8 - FIELD1 + 1] = { - m_AddField1, - m_AddField2, - m_AddField3, - m_AddField4, - m_AddField5, - m_AddField6, - m_AddField7, - m_AddField8 - }; - for( ii = FIELD1; ii <= FIELD8; ii ++ ) - { - wxCheckBox * FieldCtrl = FieldListCtrl[ii - FIELD1]; - if( FieldCtrl == NULL ) - continue; - if( ! FieldCtrl->IsChecked() ) - continue; - msg = _("Field"); - fprintf(f, "%c%s%d", s_ExportSeparatorSymbol, CONV_TO_UTF8(msg), ii - FIELD1 + 1); - } - fprintf( f, "\n" ); - } + int ii, Multi, Unit; + EDA_BaseStruct* DrawList; + EDA_SchComponentStruct* DrawLibItem; + EDA_LibComponentStruct* Entry; + char NameCmp[80]; + wxString msg; + + if( CompactForm ) + { + wxCheckBox* FieldListCtrl[FIELD8 - FIELD1 + 1] = { + m_AddField1, + m_AddField2, + m_AddField3, + m_AddField4, + m_AddField5, + m_AddField6, + m_AddField7, + m_AddField8 + }; + + // Print comment line: + fprintf( f, "ref%cvalue", s_ExportSeparatorSymbol ); + + if( m_ListSubCmpItems->GetValue() ) + fprintf( f, "%csheet path", s_ExportSeparatorSymbol ); + + fprintf( f, "%cfootprint", s_ExportSeparatorSymbol ); + + for( ii = FIELD1; ii <= FIELD8; ii++ ) + { + wxCheckBox* FieldCtrl = FieldListCtrl[ii - FIELD1]; + if( FieldCtrl == NULL ) + continue; + if( !FieldCtrl->IsChecked() ) + continue; + msg = _( "Field" ); + fprintf( f, "%c%s%d", s_ExportSeparatorSymbol, CONV_TO_UTF8( msg ), ii - FIELD1 + 1 ); + } + + fprintf( f, "\n" ); + } + else + { + msg = _( "\n#Cmp ( order = Reference )" ); - else - { - msg = _("\n#Cmp ( order = Reference )"); // if( s_ListWithSubCmponents ) - if( m_ListSubCmpItems->GetValue() ) - msg << _(" (with SubCmp)"); - fprintf( f, "%s\n", CONV_TO_UTF8(msg) ); - } + if( m_ListSubCmpItems->GetValue() ) + msg << _( " (with SubCmp)" ); + fprintf( f, "%s\n", CONV_TO_UTF8( msg ) ); + } - for( ii = 0; ii < NbItems; ii++ ) - { - DrawList = List[ii].m_Comp; + // Print list of items + for( ii = 0; ii < NbItems; ii++ ) + { + DrawList = List[ii].m_Comp; - if( DrawList == NULL ) - continue; - if( DrawList->Type() != DRAW_LIB_ITEM_STRUCT_TYPE ) - continue; + if( DrawList == NULL ) + continue; + if( DrawList->Type() != DRAW_LIB_ITEM_STRUCT_TYPE ) + continue; - DrawLibItem = (EDA_SchComponentStruct *) DrawList; - if( List[ii].m_Ref[0] == '#' ) - continue; + DrawLibItem = (EDA_SchComponentStruct*) DrawList; + if( List[ii].m_Ref[0] == '#' ) + continue; + + Multi = 0; + Unit = ' '; + Entry = FindLibPart( DrawLibItem->m_ChipName.GetData(), wxEmptyString, FIND_ROOT ); + if( Entry ) + Multi = Entry->m_UnitCount; - Multi = 0; - Unit = ' '; - Entry = FindLibPart(DrawLibItem->m_ChipName.GetData(), wxEmptyString, FIND_ROOT); - if( Entry ) - Multi = Entry->m_UnitCount; // if( ( Multi > 1 ) && s_ListWithSubCmponents ) - if( ( Multi > 1 ) && m_ListSubCmpItems->GetValue() ) - Unit = DrawLibItem->m_Multi + 'A' - 1; + if( ( Multi > 1 ) && m_ListSubCmpItems->GetValue() ) + Unit = DrawLibItem->m_Multi + 'A' - 1; - sprintf( NameCmp,"%s", List[ii].m_Ref ); - if( ! CompactForm || Unit != ' ' ) - sprintf( NameCmp + strlen(NameCmp), "%c", Unit ); + sprintf( NameCmp, "%s", List[ii].m_Ref ); + if( !CompactForm || Unit != ' ' ) + sprintf( NameCmp + strlen( NameCmp ), "%c", Unit ); - if( CompactForm ) - fprintf(f, "%s%c%s", NameCmp, s_ExportSeparatorSymbol, - CONV_TO_UTF8(DrawLibItem->m_Field[VALUE].m_Text)); - else - fprintf(f, "| %-10s %-12s", NameCmp, - CONV_TO_UTF8(DrawLibItem->m_Field[VALUE].m_Text)); + if( CompactForm ) + fprintf( f, "%s%c%s", NameCmp, s_ExportSeparatorSymbol, + CONV_TO_UTF8( DrawLibItem->m_Field[VALUE].m_Text ) ); + else + fprintf( f, "| %-10s %-12s", NameCmp, + CONV_TO_UTF8( DrawLibItem->m_Field[VALUE].m_Text ) ); // if( s_ListWithSubCmponents ) - if( m_ListSubCmpItems->GetValue() ) - { - SCH_SCREEN * screen = (SCH_SCREEN *)(DrawLibItem->m_Parent); - wxString sheetname; - if( screen && screen->Type() == SCREEN_STRUCT_TYPE ) - sheetname = screen->m_FileName; - else - sheetname = _("?"); - if( CompactForm ) - fprintf(f, "%c%s;%s", s_ExportSeparatorSymbol, - CONV_TO_UTF8(List[ii].m_SheetList.Path()), - CONV_TO_UTF8(sheetname)); - else - fprintf(f, " (Sheet %s: \"%s\")", - CONV_TO_UTF8(List[ii].m_SheetList.Path()), - CONV_TO_UTF8(sheetname)); - } + if( m_ListSubCmpItems->GetValue() ) + { + msg = List[ii].m_SheetList.PathHumanReadable(); + if( CompactForm ) + fprintf( f, "%c%s", s_ExportSeparatorSymbol, CONV_TO_UTF8( msg ) ); + else + fprintf( f, " (Sheet %s)", CONV_TO_UTF8( msg ) ); + } - PrintFieldData(f, DrawLibItem, CompactForm); + PrintFieldData( f, DrawLibItem, CompactForm ); - fprintf(f, "\n"); - } - if( ! CompactForm ) - { - msg = _("#End Cmp\n"); - fprintf(f, CONV_TO_UTF8(msg)); - } - return( 0 ); + fprintf( f, "\n" ); + } + + if( !CompactForm ) + { + msg = _( "#End Cmp\n" ); + fprintf( f, CONV_TO_UTF8( msg ) ); + } + return 0; } + /*********************************************************************************************/ -int WinEDA_Build_BOM_Frame::PrintListeCmpByVal( FILE * f, ListComponent * List, int NbItems ) +int WinEDA_Build_BOM_Frame::PrintListeCmpByVal( FILE* f, ListComponent* List, int NbItems ) /**********************************************************************************************/ { -int ii, Multi; -wxChar Unit; -EDA_BaseStruct *DrawList; -EDA_SchComponentStruct *DrawLibItem; -EDA_LibComponentStruct *Entry; -wxString msg; - - msg = _("\n#Cmp ( order = Value )"); + int ii, Multi; + wxChar Unit; + EDA_BaseStruct* DrawList; + EDA_SchComponentStruct* DrawLibItem; + EDA_LibComponentStruct* Entry; + wxString msg; + + msg = _( "\n#Cmp ( order = Value )" ); + // if( s_ListWithSubCmponents ) - if( m_ListSubCmpItems->GetValue() ) - msg << _(" (with SubCmp)"); - msg << wxT("\n"); - fprintf(f, CONV_TO_UTF8(msg)); + if( m_ListSubCmpItems->GetValue() ) + msg << _( " (with SubCmp)" ); + msg << wxT( "\n" ); + fprintf( f, CONV_TO_UTF8( msg ) ); - for( ii = 0; ii < NbItems; ii++ ) - { - DrawList = List[ii].m_Comp; + for( ii = 0; ii < NbItems; ii++ ) + { + DrawList = List[ii].m_Comp; - if( DrawList == NULL ) - continue; - if( DrawList->Type() != DRAW_LIB_ITEM_STRUCT_TYPE ) - continue; + if( DrawList == NULL ) + continue; + if( DrawList->Type() != DRAW_LIB_ITEM_STRUCT_TYPE ) + continue; - DrawLibItem = (EDA_SchComponentStruct *) DrawList; - if( List[ii].m_Ref[0] == '#' ) - continue; + DrawLibItem = (EDA_SchComponentStruct*) DrawList; + if( List[ii].m_Ref[0] == '#' ) + continue; + + Multi = 0; + Unit = ' '; + Entry = FindLibPart( DrawLibItem->m_ChipName.GetData(), wxEmptyString, FIND_ROOT ); + if( Entry ) + Multi = Entry->m_UnitCount; - Multi = 0; - Unit = ' '; - Entry = FindLibPart(DrawLibItem->m_ChipName.GetData(), wxEmptyString, FIND_ROOT); - if( Entry ) - Multi = Entry->m_UnitCount; // if( ( Multi > 1 ) && s_ListWithSubCmponents ) - if( ( Multi > 1 ) && m_ListSubCmpItems->GetValue() ){ - Unit = DrawLibItem->m_Multi + 'A' - 1; - } - fprintf( f, "| %-12s %-10s%c", - CONV_TO_UTF8(DrawLibItem->m_Field[VALUE].m_Text), - List[ii].m_Ref, Unit); - + if( ( Multi > 1 ) && m_ListSubCmpItems->GetValue() ) + { + Unit = DrawLibItem->m_Multi + 'A' - 1; + } + fprintf( f, "| %-12s %-10s%c", + CONV_TO_UTF8( DrawLibItem->m_Field[VALUE].m_Text ), + List[ii].m_Ref, Unit ); + // if( s_ListWithSubCmponents ) - if( m_ListSubCmpItems->GetValue() ) - { - fprintf(f, " (Sheet %s)", CONV_TO_UTF8(List[ii].m_SheetList.Path()) ); - } + // print the sheet path + if( m_ListSubCmpItems->GetValue() ) + { + msg = List[ii].m_SheetList.PathHumanReadable(); + fprintf( f, " (Sheet %s)", CONV_TO_UTF8( msg ) ); + } - PrintFieldData(f, DrawLibItem); + PrintFieldData( f, DrawLibItem ); - fprintf(f, "\n"); - } - msg = _("#End Cmp\n"); - fprintf(f, CONV_TO_UTF8(msg)); - return( 0 ); + fprintf( f, "\n" ); + } + + msg = _( "#End Cmp\n" ); + fprintf( f, CONV_TO_UTF8( msg ) ); + return 0; } /******************************************************************/ -static int PrintListeGLabel( FILE *f, ListLabel *List, int NbItems) +static int PrintListeGLabel( FILE* f, ListLabel* List, int NbItems ) /******************************************************************/ { - int ii, jj; - DrawLabelStruct *DrawTextItem; - DrawSheetLabelStruct * DrawSheetLabel; - ListLabel * LabelItem; - wxString msg; - char str[64]; - - for( ii = 0; ii < NbItems; ii++ ) - { - LabelItem = & List[ii]; + int ii, jj; + DrawLabelStruct* DrawTextItem; + DrawSheetLabelStruct* DrawSheetLabel; + ListLabel* LabelItem; + wxString msg; + char str[64]; - switch( LabelItem->m_LabelType ) - { - case DRAW_HIER_LABEL_STRUCT_TYPE: - case DRAW_GLOBAL_LABEL_STRUCT_TYPE: - DrawTextItem = (DrawLabelStruct *)(LabelItem->m_Label); - if(LabelItem->m_LabelType == DRAW_HIER_LABEL_STRUCT_TYPE) - strncpy(str, "Hierarchal", sizeof(str)); - else - strncpy(str, "Global ", sizeof(str)); - msg.Printf( - _("> %-28.28s %s (Sheet %s) pos: %3.3f, %3.3f\n"), - DrawTextItem->m_Text.GetData(), - str, - LabelItem->m_SheetPath, - (float)DrawTextItem->m_Pos.x / 1000, - (float)DrawTextItem->m_Pos.y / 1000); - - fprintf(f, CONV_TO_UTF8(msg)); - break; + for( ii = 0; ii < NbItems; ii++ ) + { + LabelItem = &List[ii]; - case DRAW_SHEETLABEL_STRUCT_TYPE : - { - DrawSheetLabel = (DrawSheetLabelStruct *) LabelItem->m_Label; - jj = DrawSheetLabel->m_Shape; - if( jj < 0 ) - jj = NET_TMAX; - if( jj > NET_TMAX ) - jj = 4; - wxString labtype = CONV_FROM_UTF8(SheetLabelType[jj]); - msg.Printf( - _("> %-28.28s Sheet %-7.7s (Sheet %s) pos: %3.3f, %3.3f\n"), - DrawSheetLabel->m_Text.GetData(), - labtype.GetData(), - LabelItem->m_SheetPath, - (float)DrawSheetLabel->m_Pos.x / 1000, - (float)DrawSheetLabel->m_Pos.y / 1000); - fprintf(f, CONV_TO_UTF8(msg)); - } - break; + switch( LabelItem->m_LabelType ) + { + case DRAW_HIER_LABEL_STRUCT_TYPE: + case DRAW_GLOBAL_LABEL_STRUCT_TYPE: + DrawTextItem = (DrawLabelStruct*) (LabelItem->m_Label); + if( LabelItem->m_LabelType == DRAW_HIER_LABEL_STRUCT_TYPE ) + strncpy( str, "Hierarchical", sizeof(str) ); + else + strncpy( str, "Global ", sizeof(str) ); + msg.Printf( + _( "> %-28.28s %s (Sheet %s) pos: %3.3f, %3.3f\n" ), + DrawTextItem->m_Text.GetData(), + str, + LabelItem->m_SheetPath, + (float) DrawTextItem->m_Pos.x / 1000, + (float) DrawTextItem->m_Pos.y / 1000 ); - default: - break; - } - } - msg = _("#End labels\n"); - fprintf(f, CONV_TO_UTF8(msg)); - return( 0 ); + fprintf( f, CONV_TO_UTF8( msg ) ); + break; + + case DRAW_SHEETLABEL_STRUCT_TYPE: + { + DrawSheetLabel = (DrawSheetLabelStruct*) LabelItem->m_Label; + jj = DrawSheetLabel->m_Shape; + if( jj < 0 ) + jj = NET_TMAX; + if( jj > NET_TMAX ) + jj = 4; + wxString labtype = CONV_FROM_UTF8( SheetLabelType[jj] ); + msg.Printf( + _( "> %-28.28s Sheet %-7.7s (Sheet %s) pos: %3.3f, %3.3f\n" ), + DrawSheetLabel->m_Text.GetData(), + labtype.GetData(), + LabelItem->m_SheetPath, + (float) DrawSheetLabel->m_Pos.x / 1000, + (float) DrawSheetLabel->m_Pos.y / 1000 ); + fprintf( f, CONV_TO_UTF8( msg ) ); + } + break; + + default: + break; + } + } + + msg = _( "#End labels\n" ); + fprintf( f, CONV_TO_UTF8( msg ) ); + return 0; } diff --git a/eeschema/netlist.h b/eeschema/netlist.h index 47c085b24d..c622ec5613 100644 --- a/eeschema/netlist.h +++ b/eeschema/netlist.h @@ -95,7 +95,7 @@ typedef struct ListLabel { int m_LabelType; void * m_Label; - char m_SheetPath[32]; + char m_SheetPath[64]; } ListLabel; typedef struct ListComponent {