2007-06-05 12:10:51 +00:00
/////////////////////////////////////////////////////////////////////////////
// Name: dialog_build_BOM.cpp
// Purpose:
// Author: jean-pierre Charras
// Modified by:
// Created: 01/15/06 18:18:44
// RCS-ID:
// Copyright: GNU license
// Licence:
/////////////////////////////////////////////////////////////////////////////
// Generated by DialogBlocks (unregistered), 01/15/06 18:18:44
# if defined(__GNUG__) && !defined(__APPLE__)
# pragma implementation "dialog_build_BOM.h"
# endif
// For compilers that support precompilation, includes "wx/wx.h".
# include "wx/wxprec.h"
# ifdef __BORLANDC__
# pragma hdrstop
# endif
# ifndef WX_PRECOMP
# include "wx/wx.h"
# endif
# include "fctsys.h"
////@begin includes
////@end includes
# include "common.h"
# include "program.h"
# include "libcmp.h"
# include "general.h"
# include "netlist.h"
# include "dialog_build_BOM.h"
# include "protos.h"
////@begin XPM images
////@end XPM images
/* Structures pour memo et liste des elements */
typedef struct ListLabel
{
2007-09-13 11:28:58 +00:00
int m_LabelType ;
2007-06-05 12:10:51 +00:00
void * m_Label ;
int m_SheetNumber ;
} ListLabel ;
/* fonctions locales */
static int GenListeGLabels ( ListLabel * List ) ;
static int ListTriComposantByRef ( EDA_SchComponentStruct * * Objet1 ,
EDA_SchComponentStruct * * Objet2 ) ;
static int ListTriComposantByVal ( EDA_SchComponentStruct * * Objet1 ,
EDA_SchComponentStruct * * Objet2 ) ;
static int ListTriGLabelBySheet ( ListLabel * Objet1 , ListLabel * Objet2 ) ;
static int ListTriGLabelByVal ( ListLabel * Objet1 , ListLabel * Objet2 ) ;
static void DeleteSubCmp ( EDA_BaseStruct * * 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 ;
2007-07-02 12:48:10 +00:00
static int s_OutputSeparatorOpt ;
2007-10-30 20:40:08 +00:00
static bool s_Add_FpField_state ;
2007-06-05 12:10:51 +00:00
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 ;
2007-07-02 12:48:10 +00:00
static bool * s_AddFieldList [ ] = {
2007-10-30 20:40:08 +00:00
& s_Add_FpField_state ,
2007-07-02 12:48:10 +00:00
& 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")
/* list of separators used in bom export to spreadsheet
2007-10-13 05:56:37 +00:00
* ( selected by s_OutputSeparatorOpt , and s_OutputSeparatorOpt radiobox )
*/
2007-07-02 12:48:10 +00:00
static char s_ExportSeparator [ ] = ( " \t ;,. " ) ;
static char s_ExportSeparatorSymbol ;
2007-06-05 12:10:51 +00:00
/*!
* WinEDA_Build_BOM_Frame type definition
*/
IMPLEMENT_DYNAMIC_CLASS ( WinEDA_Build_BOM_Frame , wxDialog )
/*!
* WinEDA_Build_BOM_Frame event table definition
*/
BEGIN_EVENT_TABLE ( WinEDA_Build_BOM_Frame , wxDialog )
////@begin WinEDA_Build_BOM_Frame event table entries
2007-07-02 12:48:10 +00:00
EVT_RADIOBOX ( ID_RADIOBOX_SELECT_FORMAT , WinEDA_Build_BOM_Frame : : OnRadioboxSelectFormatSelected )
2007-10-13 05:56:37 +00:00
EVT_BUTTON ( ID_CREATE_LIST , WinEDA_Build_BOM_Frame : : OnCreateListClick )
2007-06-05 12:10:51 +00:00
EVT_BUTTON ( wxID_OK , WinEDA_Build_BOM_Frame : : OnOkClick )
2007-10-13 05:56:37 +00:00
EVT_BUTTON ( wxID_CANCEL , WinEDA_Build_BOM_Frame : : OnCancelClick )
EVT_BUTTON ( wxID_APPLY , WinEDA_Build_BOM_Frame : : OnApplyClick )
2007-06-05 12:10:51 +00:00
////@end WinEDA_Build_BOM_Frame event table entries
END_EVENT_TABLE ( )
/***************************************************************/
void InstallToolsFrame ( WinEDA_DrawFrame * parent , wxPoint & pos )
/***************************************************************/
{
WinEDA_Build_BOM_Frame * frame = new WinEDA_Build_BOM_Frame ( parent ) ;
2007-10-13 05:56:37 +00:00
frame - > ShowModal ( ) ;
frame - > Destroy ( ) ;
2007-06-05 12:10:51 +00:00
}
/*!
* WinEDA_Build_BOM_Frame constructors
*/
2007-10-13 05:56:37 +00:00
WinEDA_Build_BOM_Frame : : WinEDA_Build_BOM_Frame ( ) { }
2007-06-05 12:10:51 +00:00
WinEDA_Build_BOM_Frame : : WinEDA_Build_BOM_Frame ( WinEDA_DrawFrame * parent ,
wxWindowID id , const wxString & caption , const wxPoint & pos ,
const wxSize & size , long style )
{
m_Parent = parent ;
2007-07-02 12:48:10 +00:00
/* 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 ) ;
2007-10-13 05:56:37 +00:00
for ( int ii = 0 , bitmask = 1 ; s_AddFieldList [ ii ] ! = NULL ; ii + + )
2007-07-02 12:48:10 +00:00
{
2007-10-13 05:56:37 +00:00
if ( ( addfields & bitmask ) )
* s_AddFieldList [ ii ] = true ;
else
* s_AddFieldList [ ii ] = false ;
2007-07-02 12:48:10 +00:00
bitmask < < = 1 ;
}
2007-06-05 12:10:51 +00:00
Create ( parent , id , caption , pos , size , style ) ;
2007-07-02 12:48:10 +00:00
m_OutputFormCtrl - > SetSelection ( s_OutputFormOpt ) ;
m_OutputSeparatorCtrl - > SetSelection ( s_OutputSeparatorOpt ) ;
2007-10-13 05:56:37 +00:00
if ( s_OutputFormOpt = = 1 )
2007-07-02 12:48:10 +00:00
m_OutputSeparatorCtrl - > Enable ( true ) ;
else
m_OutputSeparatorCtrl - > Enable ( false ) ;
2007-06-05 12:10:51 +00:00
}
/*!
* 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 )
{
////@begin WinEDA_Build_BOM_Frame member initialisation
m_ListCmpbyRefItems = NULL ;
m_ListSubCmpItems = NULL ;
m_ListCmpbyValItems = NULL ;
m_GenListLabelsbyVal = NULL ;
m_GenListLabelsbySheet = NULL ;
m_OutputFormCtrl = NULL ;
2007-07-02 12:48:10 +00:00
m_OutputSeparatorCtrl = NULL ;
m_GetListBrowser = NULL ;
2007-06-05 12:10:51 +00:00
m_FieldsToAppendListSizer = NULL ;
2007-10-30 20:40:08 +00:00
m_AddFootprintField = NULL ;
2007-06-05 12:10:51 +00:00
m_AddField1 = NULL ;
m_AddField2 = NULL ;
m_AddField3 = NULL ;
m_AddField4 = NULL ;
m_AddField5 = NULL ;
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 ) ;
wxDialog : : Create ( parent , id , caption , pos , size , style ) ;
CreateControls ( ) ;
2007-10-30 20:40:08 +00:00
if ( GetSizer ( ) )
2007-06-05 12:10:51 +00:00
{
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 ) ;
////@begin WinEDA_Build_BOM_Frame content construction
2007-11-06 07:14:31 +00:00
// Generated by DialogBlocks, Вск 04 Ноя 2007 18:43:07 (unregistered)
2007-06-05 12:10:51 +00:00
WinEDA_Build_BOM_Frame * itemDialog1 = this ;
wxBoxSizer * itemBoxSizer2 = new wxBoxSizer ( wxVERTICAL ) ;
itemDialog1 - > SetSizer ( itemBoxSizer2 ) ;
wxBoxSizer * itemBoxSizer3 = new wxBoxSizer ( wxHORIZONTAL ) ;
2007-10-13 05:56:37 +00:00
itemBoxSizer2 - > Add ( itemBoxSizer3 , 0 , wxALIGN_CENTER_HORIZONTAL | wxLEFT | wxRIGHT , 5 ) ;
2007-06-05 12:10:51 +00:00
wxBoxSizer * itemBoxSizer4 = new wxBoxSizer ( wxVERTICAL ) ;
2007-10-13 05:56:37 +00:00
itemBoxSizer3 - > Add ( itemBoxSizer4 , 0 , wxALIGN_CENTER_VERTICAL | wxTOP | wxBOTTOM , 5 ) ;
2007-06-05 12:10:51 +00:00
2007-10-13 05:56:37 +00:00
wxStaticBox * itemStaticBoxSizer5Static = new wxStaticBox ( itemDialog1 , wxID_ANY , _ ( " List items: " ) ) ;
2007-06-05 12:10:51 +00:00
wxStaticBoxSizer * itemStaticBoxSizer5 = new wxStaticBoxSizer ( itemStaticBoxSizer5Static , wxVERTICAL ) ;
2007-07-02 12:48:10 +00:00
itemBoxSizer4 - > Add ( itemStaticBoxSizer5 , 0 , wxGROW | wxALL , 5 ) ;
2007-06-05 12:10:51 +00:00
2007-10-13 05:56:37 +00:00
m_ListCmpbyRefItems = new wxCheckBox ( itemDialog1 , ID_CHECKBOX1 , _ ( " Components by Reference " ) , wxDefaultPosition , wxDefaultSize , wxCHK_2STATE ) ;
2007-06-05 12:10:51 +00:00
m_ListCmpbyRefItems - > SetValue ( true ) ;
2007-07-02 12:48:10 +00:00
itemStaticBoxSizer5 - > Add ( m_ListCmpbyRefItems , 0 , wxALIGN_LEFT | wxALL , 5 ) ;
2007-06-05 12:10:51 +00:00
2007-10-13 05:56:37 +00:00
m_ListSubCmpItems = new wxCheckBox ( itemDialog1 , ID_CHECKBOX2 , _ ( " Sub Components (i.e. U2A, U2B ...) " ) , wxDefaultPosition , wxDefaultSize , wxCHK_2STATE ) ;
2007-06-05 12:10:51 +00:00
m_ListSubCmpItems - > SetValue ( false ) ;
2007-07-02 12:48:10 +00:00
itemStaticBoxSizer5 - > Add ( m_ListSubCmpItems , 0 , wxALIGN_LEFT | wxALL , 5 ) ;
2007-06-05 12:10:51 +00:00
2007-10-13 05:56:37 +00:00
m_ListCmpbyValItems = new wxCheckBox ( itemDialog1 , ID_CHECKBOX3 , _ ( " Components by Value " ) , wxDefaultPosition , wxDefaultSize , wxCHK_2STATE ) ;
2007-06-05 12:10:51 +00:00
m_ListCmpbyValItems - > SetValue ( true ) ;
2007-07-02 12:48:10 +00:00
itemStaticBoxSizer5 - > Add ( m_ListCmpbyValItems , 0 , wxALIGN_LEFT | wxALL , 5 ) ;
2007-06-05 12:10:51 +00:00
2007-10-13 05:56:37 +00:00
m_GenListLabelsbyVal = new wxCheckBox ( itemDialog1 , ID_CHECKBOX4 , _ ( " Hierachy Pins by Name " ) , wxDefaultPosition , wxDefaultSize , wxCHK_2STATE ) ;
2007-06-05 12:10:51 +00:00
m_GenListLabelsbyVal - > SetValue ( false ) ;
2007-07-02 12:48:10 +00:00
itemStaticBoxSizer5 - > Add ( m_GenListLabelsbyVal , 0 , wxALIGN_LEFT | wxALL , 5 ) ;
2007-06-05 12:10:51 +00:00
2007-10-13 05:56:37 +00:00
m_GenListLabelsbySheet = new wxCheckBox ( itemDialog1 , ID_CHECKBOX5 , _ ( " Hierachy Pins by Sheets " ) , wxDefaultPosition , wxDefaultSize , wxCHK_2STATE ) ;
2007-06-05 12:10:51 +00:00
m_GenListLabelsbySheet - > SetValue ( false ) ;
2007-07-02 12:48:10 +00:00
itemStaticBoxSizer5 - > Add ( m_GenListLabelsbySheet , 0 , wxALIGN_LEFT | wxALL , 5 ) ;
2007-06-05 12:10:51 +00:00
wxArrayString m_OutputFormCtrlStrings ;
2007-07-02 12:48:10 +00:00
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 ) ;
2007-06-05 12:10:51 +00:00
m_OutputFormCtrl - > SetSelection ( 0 ) ;
2007-07-02 12:48:10 +00:00
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 ) ;
2007-06-05 12:10:51 +00:00
2007-10-13 05:56:37 +00:00
wxStaticBox * itemStaticBoxSizer13Static = new wxStaticBox ( itemDialog1 , wxID_ANY , _ ( " Options: " ) ) ;
2007-07-02 12:48:10 +00:00
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 ) ;
2007-10-13 05:56:37 +00:00
itemStaticBoxSizer13 - > Add ( m_GetListBrowser , 0 , wxALIGN_CENTER_VERTICAL | wxALL , 5 ) ;
2007-07-02 12:48:10 +00:00
wxBoxSizer * itemBoxSizer15 = new wxBoxSizer ( wxVERTICAL ) ;
2007-10-13 05:56:37 +00:00
itemBoxSizer3 - > Add ( itemBoxSizer15 , 0 , wxALIGN_TOP | wxLEFT | wxTOP | wxBOTTOM , 5 ) ;
2007-07-02 12:48:10 +00:00
2007-10-13 05:56:37 +00:00
wxStaticBox * itemStaticBoxSizer16Static = new wxStaticBox ( itemDialog1 , wxID_ANY , _ ( " Fields to add: " ) ) ;
2007-07-02 12:48:10 +00:00
m_FieldsToAppendListSizer = new wxStaticBoxSizer ( itemStaticBoxSizer16Static , wxVERTICAL ) ;
2007-10-13 05:56:37 +00:00
itemBoxSizer15 - > Add ( m_FieldsToAppendListSizer , 0 , wxALIGN_LEFT | wxALL , 5 ) ;
2007-06-05 12:10:51 +00:00
2007-11-06 07:14:31 +00:00
m_AddFootprintField = new wxCheckBox ( itemDialog1 , ID_CHECKBOX_FOOTPRINT_FIELD , _ ( " Footprint " ) , wxDefaultPosition , wxDefaultSize , wxCHK_2STATE ) ;
2007-10-30 20:40:08 +00:00
m_AddFootprintField - > SetValue ( false ) ;
m_FieldsToAppendListSizer - > Add ( m_AddFootprintField , 0 , wxGROW | wxALL , 5 ) ;
2007-11-06 07:14:31 +00:00
m_AddField1 = new wxCheckBox ( itemDialog1 , ID_CHECKBOX_FIELD1 , _ ( " Field 1 " ) , wxDefaultPosition , wxDefaultSize , wxCHK_2STATE ) ;
2007-06-05 12:10:51 +00:00
m_AddField1 - > SetValue ( false ) ;
2007-10-30 20:40:08 +00:00
m_FieldsToAppendListSizer - > Add ( m_AddField1 , 0 , wxGROW | wxALL , 5 ) ;
2007-06-05 12:10:51 +00:00
2007-11-06 07:14:31 +00:00
m_AddField2 = new wxCheckBox ( itemDialog1 , ID_CHECKBOX_FIELD2 , _ ( " Field 2 " ) , wxDefaultPosition , wxDefaultSize , wxCHK_2STATE ) ;
2007-06-05 12:10:51 +00:00
m_AddField2 - > SetValue ( false ) ;
2007-10-30 20:40:08 +00:00
m_FieldsToAppendListSizer - > Add ( m_AddField2 , 0 , wxGROW | wxALL , 5 ) ;
2007-06-05 12:10:51 +00:00
2007-11-06 07:14:31 +00:00
m_AddField3 = new wxCheckBox ( itemDialog1 , ID_CHECKBOX_FIELD3 , _ ( " Field 3 " ) , wxDefaultPosition , wxDefaultSize , wxCHK_2STATE ) ;
2007-06-05 12:10:51 +00:00
m_AddField3 - > SetValue ( false ) ;
2007-10-30 20:40:08 +00:00
m_FieldsToAppendListSizer - > Add ( m_AddField3 , 0 , wxGROW | wxALL , 5 ) ;
2007-06-05 12:10:51 +00:00
2007-11-06 07:14:31 +00:00
m_AddField4 = new wxCheckBox ( itemDialog1 , ID_CHECKBOX_FIELD4 , _ ( " Field 4 " ) , wxDefaultPosition , wxDefaultSize , wxCHK_2STATE ) ;
2007-06-05 12:10:51 +00:00
m_AddField4 - > SetValue ( false ) ;
2007-10-30 20:40:08 +00:00
m_FieldsToAppendListSizer - > Add ( m_AddField4 , 0 , wxGROW | wxALL , 5 ) ;
2007-06-05 12:10:51 +00:00
2007-11-06 07:14:31 +00:00
m_AddField5 = new wxCheckBox ( itemDialog1 , ID_CHECKBOX_FIELD5 , _ ( " Field 5 " ) , wxDefaultPosition , wxDefaultSize , wxCHK_2STATE ) ;
2007-06-05 12:10:51 +00:00
m_AddField5 - > SetValue ( false ) ;
2007-10-30 20:40:08 +00:00
m_FieldsToAppendListSizer - > Add ( m_AddField5 , 0 , wxGROW | wxALL , 5 ) ;
2007-06-05 12:10:51 +00:00
2007-11-06 07:14:31 +00:00
m_AddField6 = new wxCheckBox ( itemDialog1 , ID_CHECKBOX_FIELD6 , _ ( " Field 6 " ) , wxDefaultPosition , wxDefaultSize , wxCHK_2STATE ) ;
2007-06-05 12:10:51 +00:00
m_AddField6 - > SetValue ( false ) ;
2007-10-30 20:40:08 +00:00
m_FieldsToAppendListSizer - > Add ( m_AddField6 , 0 , wxGROW | wxALL , 5 ) ;
2007-06-05 12:10:51 +00:00
2007-11-06 07:14:31 +00:00
m_AddField7 = new wxCheckBox ( itemDialog1 , ID_CHECKBOX_FIELD7 , _ ( " Field 7 " ) , wxDefaultPosition , wxDefaultSize , wxCHK_2STATE ) ;
2007-06-05 12:10:51 +00:00
m_AddField7 - > SetValue ( false ) ;
2007-10-30 20:40:08 +00:00
m_FieldsToAppendListSizer - > Add ( m_AddField7 , 0 , wxGROW | wxALL , 5 ) ;
2007-06-05 12:10:51 +00:00
2007-11-06 07:14:31 +00:00
m_AddField8 = new wxCheckBox ( itemDialog1 , ID_CHECKBOX_FIELD8 , _ ( " Field 8 " ) , wxDefaultPosition , wxDefaultSize , wxCHK_2STATE ) ;
2007-06-05 12:10:51 +00:00
m_AddField8 - > SetValue ( false ) ;
2007-10-30 20:40:08 +00:00
m_FieldsToAppendListSizer - > Add ( m_AddField8 , 0 , wxGROW | wxALL , 5 ) ;
2007-10-13 05:56:37 +00:00
itemBoxSizer15 - > Add ( 5 , 5 , 0 , wxGROW | wxALL , 10 ) ;
2007-06-05 12:10:51 +00:00
2007-10-30 20:40:08 +00:00
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 ) ;
2007-06-05 12:10:51 +00:00
2007-10-30 20:40:08 +00:00
wxBoxSizer * itemBoxSizer28 = new wxBoxSizer ( wxHORIZONTAL ) ;
itemBoxSizer2 - > Add ( itemBoxSizer28 , 0 , wxALIGN_CENTER_HORIZONTAL | wxLEFT | wxRIGHT | wxBOTTOM , 5 ) ;
2007-06-05 12:10:51 +00:00
2007-10-30 20:40:08 +00:00
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 ) ;
2007-06-05 12:10:51 +00:00
2007-10-30 20:40:08 +00:00
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 ) ;
2007-10-13 05:56:37 +00:00
2007-10-30 20:40:08 +00:00
wxButton * itemButton31 = new wxButton ( itemDialog1 , wxID_APPLY , _ ( " &Apply " ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
itemBoxSizer28 - > Add ( itemButton31 , 0 , wxALIGN_CENTER_VERTICAL | wxALL , 5 ) ;
2007-06-05 12:10:51 +00:00
// 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 ) ) ;
2007-07-02 12:48:10 +00:00
m_OutputSeparatorCtrl - > SetValidator ( wxGenericValidator ( & s_OutputSeparatorOpt ) ) ;
m_GetListBrowser - > SetValidator ( wxGenericValidator ( & s_BrowsList ) ) ;
2007-10-30 20:40:08 +00:00
m_AddFootprintField - > SetValidator ( wxGenericValidator ( & s_Add_FpField_state ) ) ;
2007-06-05 12:10:51 +00:00
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 ?
*/
bool WinEDA_Build_BOM_Frame : : ShowToolTips ( )
{
return TRUE ;
}
/*!
* Get bitmap resources
*/
wxBitmap WinEDA_Build_BOM_Frame : : GetBitmapResource ( const wxString & name )
{
// Bitmap retrieval
////@begin WinEDA_Build_BOM_Frame bitmap retrieval
wxUnusedVar ( name ) ;
return wxNullBitmap ;
////@end WinEDA_Build_BOM_Frame bitmap retrieval
}
/*!
* Get icon resources
*/
wxIcon WinEDA_Build_BOM_Frame : : GetIconResource ( const wxString & name )
{
// Icon retrieval
////@begin WinEDA_Build_BOM_Frame icon retrieval
wxUnusedVar ( name ) ;
return wxNullIcon ;
////@end WinEDA_Build_BOM_Frame icon retrieval
}
2007-10-13 05:56:37 +00:00
/*!
* wxEVT_COMMAND_RADIOBOX_SELECTED event handler for ID_RADIOBOX_SELECT_FORMAT
*/
void WinEDA_Build_BOM_Frame : : OnRadioboxSelectFormatSelected ( wxCommandEvent & event )
{
if ( m_OutputFormCtrl - > GetSelection ( ) = = 1 )
m_OutputSeparatorCtrl - > Enable ( true ) ;
else
m_OutputSeparatorCtrl - > Enable ( false ) ;
}
/*!
* wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_CREATE_LIST
*/
void WinEDA_Build_BOM_Frame : : OnCreateListClick ( wxCommandEvent & event )
{
GenList ( ) ;
}
2007-06-05 12:10:51 +00:00
/*!
* wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_OK
*/
void WinEDA_Build_BOM_Frame : : OnOkClick ( wxCommandEvent & event )
{
2007-10-13 05:56:37 +00:00
SavePreferences ( ) ;
EndModal ( 0 ) ;
2007-06-05 12:10:51 +00:00
}
/*!
2007-10-13 05:56:37 +00:00
* wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL
2007-06-05 12:10:51 +00:00
*/
2007-10-13 05:56:37 +00:00
void WinEDA_Build_BOM_Frame : : OnCancelClick ( wxCommandEvent & event )
2007-06-05 12:10:51 +00:00
{
2007-10-13 05:56:37 +00:00
EndModal ( - 1 ) ;
2007-06-05 12:10:51 +00:00
}
2007-10-13 05:56:37 +00:00
/*!
* wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_APPLY
*/
void WinEDA_Build_BOM_Frame : : OnApplyClick ( wxCommandEvent & event )
2007-06-05 12:10:51 +00:00
{
2007-10-13 05:56:37 +00:00
SavePreferences ( ) ;
}
2007-06-05 12:10:51 +00:00
2007-10-13 05:56:37 +00:00
/**************************************************/
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.)
2007-06-05 12:10:51 +00:00
s_ListByRef = m_ListCmpbyRefItems - > GetValue ( ) ;
s_ListWithSubCmponents = m_ListSubCmpItems - > GetValue ( ) ;
2007-10-13 05:56:37 +00:00
s_ListByValue = m_ListCmpbyValItems - > GetValue ( ) ;
2007-06-05 12:10:51 +00:00
s_ListHierarchicalPinByName = m_GenListLabelsbyVal - > GetValue ( ) ;
s_ListBySheet = m_GenListLabelsbySheet - > GetValue ( ) ;
s_BrowsList = m_GetListBrowser - > GetValue ( ) ;
2007-10-13 05:56:37 +00:00
// Determine current settings of both radiobutton groups
2007-06-05 12:10:51 +00:00
s_OutputFormOpt = m_OutputFormCtrl - > GetSelection ( ) ;
2007-07-02 12:48:10 +00:00
s_OutputSeparatorOpt = m_OutputSeparatorCtrl - > GetSelection ( ) ;
2007-10-13 05:56:37 +00:00
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 ( ) ;
// 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 ) ;
}
/**********************************************************/
void WinEDA_Build_BOM_Frame : : GenList ( )
/**********************************************************/
{
# 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".)
// 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();
// s_OutputFormOpt = m_OutputFormCtrl->GetSelection();
// s_OutputSeparatorOpt = m_OutputSeparatorCtrl->GetSelection();
// if( s_OutputSeparatorOpt < 0 )
// 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 ] ;
2007-06-05 12:10:51 +00:00
m_ListFileName = ScreenSch - > m_FileName ;
ChangeFileNameExt ( m_ListFileName , EXT_LIST ) ;
2007-10-13 05:56:37 +00:00
mask = wxT ( " * " ) ;
mask + = EXT_LIST ;
2007-06-05 12:10:51 +00:00
filename = EDA_FileSelector ( _ ( " Bill of material: " ) ,
2007-10-13 05:56:37 +00:00
wxEmptyString , /* Chemin par defaut (ici dir courante) */
2007-06-05 12:10:51 +00:00
m_ListFileName , /* nom fichier par defaut, et resultat */
EXT_LIST , /* extension par defaut */
mask , /* Masque d'affichage */
this ,
wxFD_SAVE ,
TRUE
) ;
2007-10-13 05:56:37 +00:00
if ( filename . IsEmpty ( ) )
return ;
else
m_ListFileName = filename ;
2007-06-05 12:10:51 +00:00
2007-10-13 05:56:37 +00:00
/* 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 ) ;
2007-06-05 12:10:51 +00:00
2007-10-13 05:56:37 +00:00
EndModal ( 1 ) ;
2007-06-05 12:10:51 +00:00
2007-10-13 05:56:37 +00:00
// if( s_BrowsList )
if ( m_GetListBrowser - > GetValue ( ) )
2007-06-05 12:10:51 +00:00
{
wxString editorname = GetEditorName ( ) ;
AddDelimiterString ( filename ) ;
ExecuteFile ( this , editorname , filename ) ;
}
}
/****************************************************************************/
void WinEDA_Build_BOM_Frame : : CreateExportList ( const wxString & FullFileName )
/****************************************************************************/
/*
2007-10-13 05:56:37 +00:00
* Print a list of components , in a form which can be imported by a spreadsheet
* form is :
* cmp name ; cmp val ; fields ;
*/
2007-06-05 12:10:51 +00:00
{
FILE * f ;
EDA_BaseStruct * * List ;
int NbItems ;
wxString msg ;
/* Creation de la liste des elements */
2007-10-13 05:56:37 +00:00
if ( ( f = wxFopen ( FullFileName , wxT ( " wt " ) ) ) = = NULL )
2007-06-05 12:10:51 +00:00
{
2007-10-13 05:56:37 +00:00
msg = _ ( " Failed to open file " ) ;
msg < < FullFileName ;
2007-06-05 12:10:51 +00:00
DisplayError ( this , msg ) ;
return ;
}
2007-10-13 05:56:37 +00:00
NbItems = GenListeCmp ( NULL ) ;
if ( NbItems )
2007-06-05 12:10:51 +00:00
{
List = ( EDA_BaseStruct * * )
MyZMalloc ( NbItems * sizeof ( EDA_BaseStruct * * ) ) ;
2007-10-13 05:56:37 +00:00
if ( List = = NULL )
2007-06-05 12:10:51 +00:00
{
2007-10-13 05:56:37 +00:00
fclose ( f ) ;
return ;
2007-06-05 12:10:51 +00:00
}
2007-10-13 05:56:37 +00:00
GenListeCmp ( List ) ;
2007-06-05 12:10:51 +00:00
/* sort component list */
qsort ( List , NbItems , sizeof ( EDA_BaseStruct * ) ,
2007-10-13 05:56:37 +00:00
( int ( * ) ( const void * , const void * ) ) ListTriComposantByRef ) ;
2007-06-05 12:10:51 +00:00
2007-10-13 05:56:37 +00:00
// if( ! s_ListWithSubCmponents )
if ( ! m_ListSubCmpItems - > GetValue ( ) )
DeleteSubCmp ( List , NbItems ) ;
2007-06-05 12:10:51 +00:00
/* create the file */
PrintListeCmpByRef ( f , List , NbItems , TRUE ) ;
MyFree ( List ) ;
}
2007-10-13 05:56:37 +00:00
fclose ( f ) ;
2007-06-05 12:10:51 +00:00
}
/****************************************************************************/
void WinEDA_Build_BOM_Frame : : GenereListeOfItems ( const wxString & FullFileName )
/****************************************************************************/
/*
2007-10-13 05:56:37 +00:00
* Routine principale pour la creation des listings ( composants et / ou labels
* globaux et " sheet labels " )
*/
2007-06-05 12:10:51 +00:00
{
FILE * f ;
EDA_BaseStruct * * List ;
ListLabel * ListOfLabels ;
int NbItems ;
char Line [ 1024 ] ;
wxString msg ;
/* Creation de la liste des elements */
2007-10-13 05:56:37 +00:00
if ( ( f = wxFopen ( FullFileName , wxT ( " wt " ) ) ) = = NULL )
2007-06-05 12:10:51 +00:00
{
2007-10-13 05:56:37 +00:00
msg = _ ( " Failed to open file " ) ;
msg < < FullFileName ;
2007-06-05 12:10:51 +00:00
DisplayError ( this , msg ) ;
return ;
}
2007-10-13 05:56:37 +00:00
NbItems = GenListeCmp ( NULL ) ;
if ( NbItems )
2007-06-05 12:10:51 +00:00
{
2007-10-13 05:56:37 +00:00
List = ( EDA_BaseStruct * * )
2007-06-05 12:10:51 +00:00
MyZMalloc ( NbItems * sizeof ( EDA_BaseStruct * * ) ) ;
2007-10-13 05:56:37 +00:00
if ( List = = NULL )
2007-06-05 12:10:51 +00:00
{
2007-10-13 05:56:37 +00:00
fclose ( f ) ;
return ;
2007-06-05 12:10:51 +00:00
}
2007-10-13 05:56:37 +00:00
GenListeCmp ( List ) ;
2007-06-05 12:10:51 +00:00
/* generation du fichier listing */
DateAndTime ( Line ) ;
wxString Title = g_Main_Title + wxT ( " " ) + GetBuildVersion ( ) ;
fprintf ( f , " %s >> Creation date: %s \n " , CONV_TO_UTF8 ( Title ) , Line ) ;
/* Tri et impression de la liste des composants */
qsort ( List , NbItems , sizeof ( EDA_BaseStruct * ) ,
2007-10-13 05:56:37 +00:00
( int ( * ) ( const void * , const void * ) ) ListTriComposantByRef ) ;
2007-06-05 12:10:51 +00:00
2007-10-13 05:56:37 +00:00
// if( ! s_ListWithSubCmponents )
if ( ! m_ListSubCmpItems - > GetValue ( ) )
DeleteSubCmp ( List , NbItems ) ;
2007-06-05 12:10:51 +00:00
2007-10-13 05:56:37 +00:00
// if( s_ListByRef )
if ( m_ListCmpbyRefItems - > GetValue ( ) )
2007-06-05 12:10:51 +00:00
{
PrintListeCmpByRef ( f , List , NbItems ) ;
}
2007-10-13 05:56:37 +00:00
// if( s_ListByValue )
if ( m_ListCmpbyValItems - > GetValue ( ) )
2007-06-05 12:10:51 +00:00
{
qsort ( List , NbItems , sizeof ( EDA_BaseStruct * ) ,
2007-10-13 05:56:37 +00:00
( int ( * ) ( const void * , const void * ) ) ListTriComposantByVal ) ;
2007-06-05 12:10:51 +00:00
PrintListeCmpByVal ( f , List , NbItems ) ;
}
MyFree ( List ) ;
}
/***************************************/
/* Generation liste des Labels globaux */
/***************************************/
NbItems = GenListeGLabels ( NULL ) ;
2007-10-13 05:56:37 +00:00
if ( NbItems )
2007-06-05 12:10:51 +00:00
{
ListOfLabels = ( ListLabel * ) MyZMalloc ( NbItems * sizeof ( ListLabel ) ) ;
2007-10-13 05:56:37 +00:00
if ( ListOfLabels = = NULL )
2007-06-05 12:10:51 +00:00
{
2007-10-13 05:56:37 +00:00
fclose ( f ) ;
return ;
2007-06-05 12:10:51 +00:00
}
GenListeGLabels ( ListOfLabels ) ;
/* Tri de la liste */
2007-10-13 05:56:37 +00:00
// if( s_ListBySheet )
if ( m_GenListLabelsbySheet - > GetValue ( ) )
2007-06-05 12:10:51 +00:00
{
qsort ( ListOfLabels , NbItems , sizeof ( ListLabel ) ,
2007-10-13 05:56:37 +00:00
( int ( * ) ( const void * , const void * ) ) ListTriGLabelBySheet ) ;
2007-06-05 12:10:51 +00:00
2007-10-13 05:56:37 +00:00
msg . Printf ( _ ( " \n #Glob labels ( order = Sheet Number ) count = %d \n " ) , NbItems ) ;
fprintf ( f , " %s " , CONV_TO_UTF8 ( msg ) ) ;
2007-06-05 12:10:51 +00:00
PrintListeGLabel ( f , ListOfLabels , NbItems ) ;
}
2007-10-13 05:56:37 +00:00
// if( s_ListHierarchicalPinByName )
if ( m_GenListLabelsbyVal - > GetValue ( ) )
2007-06-05 12:10:51 +00:00
{
qsort ( ListOfLabels , NbItems , sizeof ( ListLabel ) ,
2007-10-13 05:56:37 +00:00
( int ( * ) ( const void * , const void * ) ) ListTriGLabelByVal ) ;
2007-06-05 12:10:51 +00:00
2007-10-13 05:56:37 +00:00
msg . Printf ( _ ( " \n #Glob labels ( order = Alphab. ) count = %d \n \n " ) , NbItems ) ;
fprintf ( f , " %s " , CONV_TO_UTF8 ( msg ) ) ;
2007-06-05 12:10:51 +00:00
PrintListeGLabel ( f , ListOfLabels , NbItems ) ;
}
MyFree ( ListOfLabels ) ;
}
msg = _ ( " \n #End List \n " ) ;
2007-10-13 05:56:37 +00:00
fprintf ( f , " %s " , CONV_TO_UTF8 ( msg ) ) ;
fclose ( f ) ;
2007-06-05 12:10:51 +00:00
}
/****************************************/
int GenListeCmp ( EDA_BaseStruct * * List )
/****************************************/
/* Routine de generation de la liste des elements utiles du dessin
2007-10-13 05:56:37 +00:00
* 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
*/
2007-06-05 12:10:51 +00:00
{
int ItemCount = 0 ;
EDA_BaseStruct * DrawList ;
EDA_SchComponentStruct * DrawLibItem ;
BASE_SCREEN * screen ;
/* Build the screen list */
EDA_ScreenList ScreenList ( NULL ) ;
2007-10-13 05:56:37 +00:00
for ( screen = ScreenList . GetFirst ( ) ; screen ! = NULL ; screen = ScreenList . GetNext ( ) )
2007-06-05 12:10:51 +00:00
{
DrawList = screen - > EEDrawList ;
2007-10-13 05:56:37 +00:00
while ( DrawList )
2007-06-05 12:10:51 +00:00
{
2007-09-01 12:00:30 +00:00
switch ( DrawList - > Type ( ) )
2007-06-05 12:10:51 +00:00
{
2007-10-13 05:56:37 +00:00
case DRAW_LIB_ITEM_STRUCT_TYPE :
ItemCount + + ;
DrawLibItem = ( EDA_SchComponentStruct * ) DrawList ;
DrawLibItem - > m_FlagControlMulti = screen - > m_SheetNumber ;
DrawLibItem - > m_Parent = screen ;
if ( List )
{
* List = DrawList ;
List + + ;
}
break ;
2007-06-05 12:10:51 +00:00
2007-10-13 05:56:37 +00:00
default :
break ;
2007-06-05 12:10:51 +00:00
}
DrawList = DrawList - > Pnext ;
}
}
2007-10-13 05:56:37 +00:00
return ( ItemCount ) ;
2007-06-05 12:10:51 +00:00
}
2007-10-13 05:56:37 +00:00
2007-06-05 12:10:51 +00:00
/*********************************************/
static int GenListeGLabels ( ListLabel * List )
/*********************************************/
/* Count the Glabels, or fill the list Listwith Glabel pointers
2007-10-13 05:56:37 +00:00
* If List = = NULL : Item count only
* Else fill list of Glabels
*/
2007-06-05 12:10:51 +00:00
{
int ItemCount = 0 ;
EDA_BaseStruct * DrawList ;
DrawSheetLabelStruct * SheetLabel ;
BASE_SCREEN * screen ;
/* Build the screen list */
EDA_ScreenList ScreenList ( NULL ) ;
2007-10-13 05:56:37 +00:00
for ( screen = ScreenList . GetFirst ( ) ; screen ! = NULL ; screen = ScreenList . GetNext ( ) )
2007-06-05 12:10:51 +00:00
{
DrawList = screen - > EEDrawList ;
2007-10-13 05:56:37 +00:00
while ( DrawList )
2007-06-05 12:10:51 +00:00
{
2007-09-01 12:00:30 +00:00
switch ( DrawList - > Type ( ) )
2007-06-05 12:10:51 +00:00
{
2007-10-13 05:56:37 +00:00
case DRAW_GLOBAL_LABEL_STRUCT_TYPE :
ItemCount + + ;
if ( List )
{
List - > m_LabelType = DRAW_GLOBAL_LABEL_STRUCT_TYPE ;
List - > m_SheetNumber = screen - > m_SheetNumber ;
List - > m_Label = DrawList ;
List + + ;
}
break ;
2007-06-05 12:10:51 +00:00
2007-10-13 05:56:37 +00:00
case DRAW_SHEET_STRUCT_TYPE :
2007-06-05 12:10:51 +00:00
{
# define Sheet ((DrawSheetStruct * ) DrawList)
SheetLabel = Sheet - > m_Label ;
while ( SheetLabel ! = NULL )
{
2007-10-13 05:56:37 +00:00
if ( List )
2007-06-05 12:10:51 +00:00
{
2007-09-13 11:28:58 +00:00
List - > m_LabelType = DRAW_SHEETLABEL_STRUCT_TYPE ;
2007-06-05 12:10:51 +00:00
List - > m_SheetNumber = screen - > m_SheetNumber ;
List - > m_Label = SheetLabel ;
List + + ;
}
ItemCount + + ;
SheetLabel = ( DrawSheetLabelStruct * ) ( SheetLabel - > Pnext ) ;
}
}
2007-10-13 05:56:37 +00:00
break ;
2007-06-05 12:10:51 +00:00
2007-10-13 05:56:37 +00:00
default :
break ;
2007-06-05 12:10:51 +00:00
}
DrawList = DrawList - > Pnext ;
}
}
2007-10-13 05:56:37 +00:00
return ( ItemCount ) ;
2007-06-05 12:10:51 +00:00
}
2007-10-13 05:56:37 +00:00
2007-06-05 12:10:51 +00:00
/**********************************************************/
static int ListTriComposantByVal ( EDA_SchComponentStruct * * Objet1 ,
EDA_SchComponentStruct * * Objet2 )
/**********************************************************/
2007-10-13 05:56:37 +00:00
/* Routine de comparaison pour le tri du Tableau par qsort()
* Les composants sont tries
* par valeur
* si meme valeur : par reference
* si meme valeur : par numero d ' unite
*/
2007-06-05 12:10:51 +00:00
{
int ii ;
const wxString * Text1 , * Text2 ;
2007-10-13 05:56:37 +00:00
if ( ( * Objet1 = = NULL ) & & ( * Objet2 = = NULL ) )
return ( 0 ) ;
if ( * Objet1 = = NULL )
return ( - 1 ) ;
if ( * Objet2 = = NULL )
return ( 1 ) ;
2007-06-05 12:10:51 +00:00
Text1 = & ( * Objet1 ) - > m_Field [ VALUE ] . m_Text ;
Text2 = & ( * Objet2 ) - > m_Field [ VALUE ] . m_Text ;
ii = Text1 - > CmpNoCase ( * Text2 ) ;
if ( ii = = 0 )
{
Text1 = & ( * Objet1 ) - > m_Field [ REFERENCE ] . m_Text ;
Text2 = & ( * Objet2 ) - > m_Field [ REFERENCE ] . m_Text ;
ii = Text1 - > CmpNoCase ( * Text2 ) ;
}
2007-10-13 05:56:37 +00:00
if ( ii = = 0 )
2007-06-05 12:10:51 +00:00
{
ii = ( * Objet1 ) - > m_Multi - ( * Objet2 ) - > m_Multi ;
}
2007-10-13 05:56:37 +00:00
return ( ii ) ;
2007-06-05 12:10:51 +00:00
}
2007-10-13 05:56:37 +00:00
2007-06-05 12:10:51 +00:00
/**********************************************************/
static int ListTriComposantByRef ( EDA_SchComponentStruct * * Objet1 ,
EDA_SchComponentStruct * * Objet2 )
/**********************************************************/
2007-10-13 05:56:37 +00:00
/* Routine de comparaison pour le tri du Tableau par qsort()
* Les composants sont tries
* par reference
* si meme referenece : par valeur
* si meme valeur : par numero d ' unite
*/
2007-06-05 12:10:51 +00:00
{
int ii ;
const wxString * Text1 , * Text2 ;
2007-10-13 05:56:37 +00:00
if ( ( * Objet1 = = NULL ) & & ( * Objet2 = = NULL ) )
return ( 0 ) ;
if ( * Objet1 = = NULL )
return ( - 1 ) ;
if ( * Objet2 = = NULL )
return ( 1 ) ;
2007-06-05 12:10:51 +00:00
Text1 = & ( * Objet1 ) - > m_Field [ REFERENCE ] . m_Text ;
Text2 = & ( * Objet2 ) - > m_Field [ REFERENCE ] . m_Text ;
ii = Text1 - > CmpNoCase ( * Text2 ) ;
if ( ii = = 0 )
{
Text1 = & ( * Objet1 ) - > m_Field [ VALUE ] . m_Text ;
Text2 = & ( * Objet2 ) - > m_Field [ VALUE ] . m_Text ;
ii = Text1 - > CmpNoCase ( * Text2 ) ;
}
2007-10-13 05:56:37 +00:00
if ( ii = = 0 )
2007-06-05 12:10:51 +00:00
{
ii = ( * Objet1 ) - > m_Multi - ( * Objet2 ) - > m_Multi ;
}
2007-10-13 05:56:37 +00:00
return ( ii ) ;
2007-06-05 12:10:51 +00:00
}
2007-10-13 05:56:37 +00:00
2007-06-05 12:10:51 +00:00
/******************************************************************/
static int ListTriGLabelByVal ( ListLabel * Objet1 , ListLabel * Objet2 )
/*******************************************************************/
/* Routine de comparaison pour le tri du Tableau par qsort()
2007-10-13 05:56:37 +00:00
* Les labels sont tries
* par comparaison ascii
* si meme valeur : par numero de sheet
*/
2007-06-05 12:10:51 +00:00
{
int ii ;
const wxString * Text1 , * Text2 ;
2007-09-13 11:28:58 +00:00
if ( Objet1 - > m_LabelType = = DRAW_SHEETLABEL_STRUCT_TYPE )
2007-06-05 12:10:51 +00:00
Text1 = & ( ( DrawSheetLabelStruct * ) Objet1 - > m_Label ) - > m_Text ;
else
Text1 = & ( ( DrawTextStruct * ) Objet1 - > m_Label ) - > m_Text ;
2007-09-13 11:28:58 +00:00
if ( Objet2 - > m_LabelType = = DRAW_SHEETLABEL_STRUCT_TYPE )
2007-06-05 12:10:51 +00:00
Text2 = & ( ( DrawSheetLabelStruct * ) Objet2 - > m_Label ) - > m_Text ;
else
Text2 = & ( ( DrawTextStruct * ) Objet2 - > m_Label ) - > m_Text ;
2007-10-13 05:56:37 +00:00
2007-06-05 12:10:51 +00:00
ii = Text1 - > CmpNoCase ( * Text2 ) ;
2007-10-13 05:56:37 +00:00
if ( ii = = 0 )
{
2007-06-05 12:10:51 +00:00
ii = Objet1 - > m_SheetNumber - Objet2 - > m_SheetNumber ;
2007-10-13 05:56:37 +00:00
}
2007-06-05 12:10:51 +00:00
2007-10-13 05:56:37 +00:00
return ( ii ) ;
2007-06-05 12:10:51 +00:00
}
2007-10-13 05:56:37 +00:00
2007-06-05 12:10:51 +00:00
/*******************************************************************/
static int ListTriGLabelBySheet ( ListLabel * Objet1 , ListLabel * Objet2 )
/*******************************************************************/
/* Routine de comparaison pour le tri du Tableau par qsort()
2007-10-13 05:56:37 +00:00
* Les labels sont tries
* par sheet number
* si meme valeur , par ordre alphabetique
*/
2007-06-05 12:10:51 +00:00
{
int ii ;
const wxString * Text1 , * Text2 ;
ii = Objet1 - > m_SheetNumber - Objet2 - > m_SheetNumber ;
2007-10-13 05:56:37 +00:00
if ( ii = = 0 )
2007-06-05 12:10:51 +00:00
{
2007-09-13 11:28:58 +00:00
if ( Objet1 - > m_LabelType = = DRAW_SHEETLABEL_STRUCT_TYPE )
2007-06-05 12:10:51 +00:00
Text1 = & ( ( DrawSheetLabelStruct * ) Objet1 - > m_Label ) - > m_Text ;
else
Text1 = & ( ( DrawTextStruct * ) Objet1 - > m_Label ) - > m_Text ;
2007-09-13 11:28:58 +00:00
if ( Objet2 - > m_LabelType = = DRAW_SHEETLABEL_STRUCT_TYPE )
2007-06-05 12:10:51 +00:00
Text2 = & ( ( DrawSheetLabelStruct * ) Objet2 - > m_Label ) - > m_Text ;
else
Text2 = & ( ( DrawTextStruct * ) Objet2 - > m_Label ) - > m_Text ;
2007-10-13 05:56:37 +00:00
2007-06-05 12:10:51 +00:00
ii = Text1 - > CmpNoCase ( * Text2 ) ;
}
2007-10-13 05:56:37 +00:00
return ( ii ) ;
2007-06-05 12:10:51 +00:00
}
/**************************************************************/
static void DeleteSubCmp ( EDA_BaseStruct * * List , int NbItems )
/**************************************************************/
/* Supprime les sous-composants, c'est a dire les descriptions redonnantes des
2007-10-13 05:56:37 +00:00
* boitiers multiples
* La liste des composant doit etre triee par reference et par num d ' unite
*/
2007-06-05 12:10:51 +00:00
{
int ii ;
EDA_SchComponentStruct * LibItem ;
const wxString * OldName = NULL ;
2007-10-13 05:56:37 +00:00
for ( ii = 0 ; ii < NbItems ; ii + + )
2007-06-05 12:10:51 +00:00
{
LibItem = ( EDA_SchComponentStruct * ) List [ ii ] ;
2007-10-13 05:56:37 +00:00
if ( LibItem = = NULL )
continue ;
2007-06-05 12:10:51 +00:00
if ( OldName )
{
2007-10-13 05:56:37 +00:00
if ( OldName - > CmpNoCase ( LibItem - > m_Field [ REFERENCE ] . m_Text ) = = 0 )
2007-06-05 12:10:51 +00:00
{
List [ ii ] = NULL ;
}
}
OldName = & LibItem - > m_Field [ REFERENCE ] . m_Text ;
}
}
/*******************************************************************************************/
void WinEDA_Build_BOM_Frame : : PrintFieldData ( FILE * f , EDA_SchComponentStruct * DrawLibItem ,
bool CompactForm )
/*******************************************************************************************/
{
2007-10-13 05:56:37 +00:00
wxCheckBox * FieldListCtrl [ FIELD8 - FIELD1 + 1 ] = {
2007-06-05 12:10:51 +00:00
m_AddField1 ,
m_AddField2 ,
m_AddField3 ,
m_AddField4 ,
m_AddField5 ,
m_AddField6 ,
m_AddField7 ,
m_AddField8
} ;
int ii ;
wxCheckBox * FieldCtrl = FieldListCtrl [ 0 ] ;
2007-10-13 05:56:37 +00:00
if ( CompactForm )
2007-06-05 12:10:51 +00:00
{
2007-07-02 12:48:10 +00:00
fprintf ( f , " %c%s " , s_ExportSeparatorSymbol ,
CONV_TO_UTF8 ( DrawLibItem - > m_Field [ FOOTPRINT ] . m_Text ) ) ;
2007-06-05 12:10:51 +00:00
}
2007-10-13 05:56:37 +00:00
for ( ii = FIELD1 ; ii < = FIELD8 ; ii + + )
2007-06-05 12:10:51 +00:00
{
2007-10-13 05:56:37 +00:00
FieldCtrl = FieldListCtrl [ ii - FIELD1 ] ;
if ( FieldCtrl = = NULL )
continue ;
if ( ! FieldCtrl - > IsChecked ( ) )
continue ;
if ( CompactForm )
fprintf ( f , " %c%s " , s_ExportSeparatorSymbol ,
2007-07-02 12:48:10 +00:00
CONV_TO_UTF8 ( DrawLibItem - > m_Field [ ii ] . m_Text ) ) ;
2007-10-13 05:56:37 +00:00
else
fprintf ( f , " ; %-12s " , CONV_TO_UTF8 ( DrawLibItem - > m_Field [ ii ] . m_Text ) ) ;
2007-06-05 12:10:51 +00:00
}
}
2007-10-13 05:56:37 +00:00
2007-06-05 12:10:51 +00:00
/*********************************************************************************************/
int WinEDA_Build_BOM_Frame : : PrintListeCmpByRef ( FILE * f , EDA_BaseStruct * * List , int NbItems ,
bool CompactForm )
/*********************************************************************************************/
/* Print the B.O.M sorted by reference
2007-10-13 05:56:37 +00:00
*/
2007-06-05 12:10:51 +00:00
{
int ii , Multi , Unit ;
EDA_BaseStruct * DrawList ;
EDA_SchComponentStruct * DrawLibItem ;
EDA_LibComponentStruct * Entry ;
char NameCmp [ 80 ] ;
wxString msg ;
2007-10-13 05:56:37 +00:00
if ( CompactForm )
2007-06-05 12:10:51 +00:00
{
2007-10-13 05:56:37 +00:00
fprintf ( f , " ref%cvalue%csheet number%csheet name%cfootprint " ,
2007-07-02 12:48:10 +00:00
s_ExportSeparatorSymbol , s_ExportSeparatorSymbol ,
s_ExportSeparatorSymbol , s_ExportSeparatorSymbol ) ;
2007-10-13 05:56:37 +00:00
wxCheckBox * FieldListCtrl [ FIELD8 - FIELD1 + 1 ] = {
2007-06-05 12:10:51 +00:00
m_AddField1 ,
m_AddField2 ,
m_AddField3 ,
m_AddField4 ,
m_AddField5 ,
m_AddField6 ,
m_AddField7 ,
m_AddField8
} ;
2007-10-13 05:56:37 +00:00
for ( ii = FIELD1 ; ii < = FIELD8 ; ii + + )
2007-06-05 12:10:51 +00:00
{
2007-10-13 05:56:37 +00:00
wxCheckBox * FieldCtrl = FieldListCtrl [ ii - FIELD1 ] ;
if ( FieldCtrl = = NULL )
continue ;
if ( ! FieldCtrl - > IsChecked ( ) )
continue ;
2007-06-05 12:10:51 +00:00
msg = _ ( " Field " ) ;
2007-07-02 12:48:10 +00:00
fprintf ( f , " %c%s%d " , s_ExportSeparatorSymbol , CONV_TO_UTF8 ( msg ) , ii - FIELD1 + 1 ) ;
2007-06-05 12:10:51 +00:00
}
2007-10-13 05:56:37 +00:00
fprintf ( f , " \n " ) ;
2007-06-05 12:10:51 +00:00
}
2007-10-13 05:56:37 +00:00
else
{
2007-06-05 12:10:51 +00:00
msg = _ ( " \n #Cmp ( order = Reference ) " ) ;
2007-10-13 05:56:37 +00:00
// if( s_ListWithSubCmponents )
if ( m_ListSubCmpItems - > GetValue ( ) )
msg < < _ ( " (with SubCmp) " ) ;
fprintf ( f , " %s \n " , CONV_TO_UTF8 ( msg ) ) ;
2007-06-05 12:10:51 +00:00
}
2007-10-13 05:56:37 +00:00
for ( ii = 0 ; ii < NbItems ; ii + + )
2007-06-05 12:10:51 +00:00
{
DrawList = List [ ii ] ;
2007-10-13 05:56:37 +00:00
if ( DrawList = = NULL )
continue ;
if ( DrawList - > Type ( ) ! = DRAW_LIB_ITEM_STRUCT_TYPE )
continue ;
2007-06-05 12:10:51 +00:00
DrawLibItem = ( EDA_SchComponentStruct * ) DrawList ;
2007-10-13 05:56:37 +00:00
if ( DrawLibItem - > m_Field [ REFERENCE ] . m_Text [ 0 ] = = ' # ' )
continue ;
2007-06-05 12:10:51 +00:00
2007-10-13 05:56:37 +00:00
Multi = 0 ;
Unit = ' ' ;
2007-06-05 12:10:51 +00:00
Entry = FindLibPart ( DrawLibItem - > m_ChipName . GetData ( ) , wxEmptyString , FIND_ROOT ) ;
2007-10-13 05:56:37 +00:00
if ( Entry )
Multi = Entry - > m_UnitCount ;
// if( ( Multi > 1 ) && s_ListWithSubCmponents )
if ( ( Multi > 1 ) & & m_ListSubCmpItems - > GetValue ( ) )
2007-06-05 12:10:51 +00:00
Unit = DrawLibItem - > m_Multi + ' A ' - 1 ;
sprintf ( NameCmp , " %s " , CONV_TO_UTF8 ( DrawLibItem - > m_Field [ REFERENCE ] . m_Text ) ) ;
2007-10-13 05:56:37 +00:00
if ( ! CompactForm | | Unit ! = ' ' )
sprintf ( NameCmp + strlen ( NameCmp ) , " %c " , Unit ) ;
2007-06-05 12:10:51 +00:00
2007-10-13 05:56:37 +00:00
if ( CompactForm )
fprintf ( f , " %s%c%s " , NameCmp , s_ExportSeparatorSymbol ,
2007-06-05 12:10:51 +00:00
CONV_TO_UTF8 ( DrawLibItem - > m_Field [ VALUE ] . m_Text ) ) ;
2007-10-13 05:56:37 +00:00
else
fprintf ( f , " | %-10s %-12s " , NameCmp ,
2007-06-05 12:10:51 +00:00
CONV_TO_UTF8 ( DrawLibItem - > m_Field [ VALUE ] . m_Text ) ) ;
2007-10-13 05:56:37 +00:00
// if( s_ListWithSubCmponents )
if ( m_ListSubCmpItems - > GetValue ( ) )
2007-06-05 12:10:51 +00:00
{
DrawSheetStruct * sheet = ( DrawSheetStruct * ) ( DrawLibItem - > m_Parent ) ;
wxString sheetname ;
2007-09-01 12:00:30 +00:00
if ( sheet & & sheet - > Type ( ) = = DRAW_SHEET_STRUCT_TYPE )
2007-06-05 12:10:51 +00:00
sheetname = sheet - > m_SheetName ;
2007-10-13 05:56:37 +00:00
else
sheetname = _ ( " Root " ) ;
if ( CompactForm )
2007-07-02 12:48:10 +00:00
fprintf ( f , " %c%d;%s " , s_ExportSeparatorSymbol , DrawLibItem - > m_FlagControlMulti ,
2007-06-05 12:10:51 +00:00
CONV_TO_UTF8 ( sheetname ) ) ;
2007-10-13 05:56:37 +00:00
else
fprintf ( f , " (Sheet %.2d: \" %s \" ) " , DrawLibItem - > m_FlagControlMulti ,
2007-06-05 12:10:51 +00:00
CONV_TO_UTF8 ( sheetname ) ) ;
}
PrintFieldData ( f , DrawLibItem , CompactForm ) ;
2007-10-13 05:56:37 +00:00
fprintf ( f , " \n " ) ;
2007-06-05 12:10:51 +00:00
}
2007-10-13 05:56:37 +00:00
if ( ! CompactForm )
2007-06-05 12:10:51 +00:00
{
msg = _ ( " #End Cmp \n " ) ;
fprintf ( f , CONV_TO_UTF8 ( msg ) ) ;
}
2007-10-13 05:56:37 +00:00
return ( 0 ) ;
2007-06-05 12:10:51 +00:00
}
/*********************************************************************************************/
int WinEDA_Build_BOM_Frame : : PrintListeCmpByVal ( FILE * f , EDA_BaseStruct * * List , int NbItems )
/**********************************************************************************************/
{
int ii , Multi ;
wxChar Unit ;
EDA_BaseStruct * DrawList ;
EDA_SchComponentStruct * DrawLibItem ;
EDA_LibComponentStruct * Entry ;
wxString msg ;
msg = _ ( " \n #Cmp ( order = Value ) " ) ;
2007-10-13 05:56:37 +00:00
// if( s_ListWithSubCmponents )
if ( m_ListSubCmpItems - > GetValue ( ) )
msg < < _ ( " (with SubCmp) " ) ;
2007-06-05 12:10:51 +00:00
msg < < wxT ( " \n " ) ;
fprintf ( f , CONV_TO_UTF8 ( msg ) ) ;
2007-10-13 05:56:37 +00:00
for ( ii = 0 ; ii < NbItems ; ii + + )
{
2007-06-05 12:10:51 +00:00
DrawList = List [ ii ] ;
2007-10-13 05:56:37 +00:00
if ( DrawList = = NULL )
continue ;
if ( DrawList - > Type ( ) ! = DRAW_LIB_ITEM_STRUCT_TYPE )
continue ;
2007-06-05 12:10:51 +00:00
DrawLibItem = ( EDA_SchComponentStruct * ) DrawList ;
2007-10-13 05:56:37 +00:00
if ( DrawLibItem - > m_Field [ REFERENCE ] . m_Text [ 0 ] = = ' # ' )
continue ;
2007-06-05 12:10:51 +00:00
2007-10-13 05:56:37 +00:00
Multi = 0 ;
Unit = ' ' ;
2007-06-05 12:10:51 +00:00
Entry = FindLibPart ( DrawLibItem - > m_ChipName . GetData ( ) , wxEmptyString , FIND_ROOT ) ;
2007-10-13 05:56:37 +00:00
if ( Entry )
Multi = Entry - > m_UnitCount ;
// if( ( Multi > 1 ) && s_ListWithSubCmponents )
if ( ( Multi > 1 ) & & m_ListSubCmpItems - > GetValue ( ) )
2007-06-05 12:10:51 +00:00
Unit = DrawLibItem - > m_Multi + ' A ' - 1 ;
msg = DrawLibItem - > m_Field [ REFERENCE ] . m_Text ;
msg . Append ( Unit ) ;
2007-10-13 05:56:37 +00:00
fprintf ( f , " | %-12s %-10s " ,
2007-06-05 12:10:51 +00:00
CONV_TO_UTF8 ( DrawLibItem - > m_Field [ VALUE ] . m_Text ) ,
CONV_TO_UTF8 ( msg ) ) ;
2007-10-13 05:56:37 +00:00
// if( s_ListWithSubCmponents )
if ( m_ListSubCmpItems - > GetValue ( ) )
2007-06-05 12:10:51 +00:00
{
fprintf ( f , " (Sheet %.2d) " , DrawLibItem - > m_FlagControlMulti ) ;
}
PrintFieldData ( f , DrawLibItem ) ;
2007-10-13 05:56:37 +00:00
fprintf ( f , " \n " ) ;
2007-06-05 12:10:51 +00:00
}
msg = _ ( " #End Cmp \n " ) ;
fprintf ( f , CONV_TO_UTF8 ( msg ) ) ;
2007-10-13 05:56:37 +00:00
return ( 0 ) ;
2007-06-05 12:10:51 +00:00
}
/******************************************************************/
static int PrintListeGLabel ( FILE * f , ListLabel * List , int NbItems )
/******************************************************************/
{
int ii , jj ;
DrawGlobalLabelStruct * DrawTextItem ;
DrawSheetLabelStruct * DrawSheetLabel ;
ListLabel * LabelItem ;
wxString msg ;
2007-10-13 05:56:37 +00:00
for ( ii = 0 ; ii < NbItems ; ii + + )
2007-06-05 12:10:51 +00:00
{
LabelItem = & List [ ii ] ;
2007-09-13 11:28:58 +00:00
switch ( LabelItem - > m_LabelType )
2007-06-05 12:10:51 +00:00
{
2007-10-13 05:56:37 +00:00
case DRAW_GLOBAL_LABEL_STRUCT_TYPE :
DrawTextItem = ( DrawGlobalLabelStruct * ) ( LabelItem - > m_Label ) ;
msg . Printf (
2007-06-05 12:10:51 +00:00
_ ( " > %-28.28s Global (Sheet %.2d) pos: %3.3f, %3.3f \n " ) ,
2007-10-13 05:56:37 +00:00
DrawTextItem - > m_Text . GetData ( ) ,
LabelItem - > m_SheetNumber ,
( float ) DrawTextItem - > m_Pos . x / 1000 ,
( float ) DrawTextItem - > m_Pos . y / 1000 ) ;
2007-06-05 12:10:51 +00:00
2007-10-13 05:56:37 +00:00
fprintf ( f , CONV_TO_UTF8 ( msg ) ) ;
break ;
2007-06-05 12:10:51 +00:00
2007-10-13 05:56:37 +00:00
case DRAW_SHEETLABEL_STRUCT_TYPE :
2007-06-05 12:10:51 +00:00
{
DrawSheetLabel = ( DrawSheetLabelStruct * ) LabelItem - > m_Label ;
jj = DrawSheetLabel - > m_Shape ;
2007-10-13 05:56:37 +00:00
if ( jj < 0 )
jj = NET_TMAX ;
if ( jj > NET_TMAX )
jj = 4 ;
2007-06-05 12:10:51 +00:00
wxString labtype = CONV_FROM_UTF8 ( SheetLabelType [ jj ] ) ;
msg . Printf (
_ ( " > %-28.28s Sheet %-7.7s (Sheet %.2d) pos: %3.3f, %3.3f \n " ) ,
2007-10-13 05:56:37 +00:00
DrawSheetLabel - > m_Text . GetData ( ) ,
labtype . GetData ( ) ,
LabelItem - > m_SheetNumber ,
( float ) DrawSheetLabel - > m_Pos . x / 1000 ,
( float ) DrawSheetLabel - > m_Pos . y / 1000 ) ;
2007-06-05 12:10:51 +00:00
fprintf ( f , CONV_TO_UTF8 ( msg ) ) ;
}
2007-10-13 05:56:37 +00:00
break ;
2007-06-05 12:10:51 +00:00
2007-10-13 05:56:37 +00:00
default :
break ;
2007-06-05 12:10:51 +00:00
}
}
msg = _ ( " #End labels \n " ) ;
fprintf ( f , CONV_TO_UTF8 ( msg ) ) ;
2007-10-13 05:56:37 +00:00
return ( 0 ) ;
2007-06-05 12:10:51 +00:00
}