pcbnew: drc control now generates a DRC report file

This commit is contained in:
CHARRAS 2007-08-02 07:42:58 +00:00
parent b9259f8516
commit eda39ae8c0
7 changed files with 1442 additions and 1069 deletions

View File

@ -4,6 +4,12 @@ Started 2007-June-11
Please add newer entries at the top, list the date and your name with Please add newer entries at the top, list the date and your name with
email address. email address.
2007-aug-02 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
================================================================================
+ pcbnew
Drc test now generates a DRC file report.
2007-Jul-31 UPDATE Geoff Harland <gharlandau@yahoo.com.au> 2007-Jul-31 UPDATE Geoff Harland <gharlandau@yahoo.com.au>
================================================================================ ================================================================================
+ pcbnew + pcbnew

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -59,6 +59,8 @@ BEGIN_EVENT_TABLE( WinEDA_DrcFrame, wxDialog )
EVT_BUTTON( wxID_CLOSE, WinEDA_DrcFrame::OnCloseClick ) EVT_BUTTON( wxID_CLOSE, WinEDA_DrcFrame::OnCloseClick )
EVT_BUTTON( ID_BUTTON_BROWSE_RPT_FILE, WinEDA_DrcFrame::OnButtonBrowseRptFileClick )
////@end WinEDA_DrcFrame event table entries ////@end WinEDA_DrcFrame event table entries
END_EVENT_TABLE() END_EVENT_TABLE()
@ -98,6 +100,8 @@ bool WinEDA_DrcFrame::Create( wxWindow* parent, wxWindowID id, const wxString& c
m_Pad2PadTestCtrl = NULL; m_Pad2PadTestCtrl = NULL;
m_UnconnectedTestCtrl = NULL; m_UnconnectedTestCtrl = NULL;
m_ZonesTestCtrl = NULL; m_ZonesTestCtrl = NULL;
m_CreateRptCtrl = NULL;
m_RptFilenameCtrl = NULL;
m_logWindow = NULL; m_logWindow = NULL;
////@end WinEDA_DrcFrame member initialisation ////@end WinEDA_DrcFrame member initialisation
@ -124,7 +128,7 @@ void WinEDA_DrcFrame::CreateControls()
SetFont(*g_DialogFont); SetFont(*g_DialogFont);
////@begin WinEDA_DrcFrame content construction ////@begin WinEDA_DrcFrame content construction
// Generated by DialogBlocks, 30/07/2007 12:44:15 (unregistered) // Generated by DialogBlocks, 02/08/2007 10:11:17 (unregistered)
WinEDA_DrcFrame* itemDialog1 = this; WinEDA_DrcFrame* itemDialog1 = this;
@ -162,39 +166,54 @@ void WinEDA_DrcFrame::CreateControls()
m_ZonesTestCtrl->SetValue(false); m_ZonesTestCtrl->SetValue(false);
itemStaticBoxSizer8->Add(m_ZonesTestCtrl, 0, wxGROW|wxALL, 5); itemStaticBoxSizer8->Add(m_ZonesTestCtrl, 0, wxGROW|wxALL, 5);
wxBoxSizer* itemBoxSizer12 = new wxBoxSizer(wxVERTICAL); m_CreateRptCtrl = new wxCheckBox( itemDialog1, ID_CHECKBOX_CREATE_FILE, _("Create Report file"), wxDefaultPosition, wxDefaultSize, 0 );
m_CommandSizer->Add(itemBoxSizer12, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); m_CreateRptCtrl->SetValue(false);
itemStaticBoxSizer8->Add(m_CreateRptCtrl, 0, wxGROW|wxALL, 5);
wxBoxSizer* itemBoxSizer13 = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer* itemBoxSizer13 = new wxBoxSizer(wxVERTICAL);
itemBoxSizer12->Add(itemBoxSizer13, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); m_CommandSizer->Add(itemBoxSizer13, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
wxBoxSizer* itemBoxSizer14 = new wxBoxSizer(wxVERTICAL); wxBoxSizer* itemBoxSizer14 = new wxBoxSizer(wxHORIZONTAL);
itemBoxSizer13->Add(itemBoxSizer14, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); itemBoxSizer13->Add(itemBoxSizer14, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
wxButton* itemButton15 = new wxButton( itemDialog1, ID_DRC_RUN, _("Test Drc"), wxDefaultPosition, wxDefaultSize, 0 ); wxBoxSizer* itemBoxSizer15 = new wxBoxSizer(wxVERTICAL);
itemButton15->SetForegroundColour(wxColour(202, 0, 0)); itemBoxSizer14->Add(itemBoxSizer15, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
itemBoxSizer14->Add(itemButton15, 0, wxGROW|wxALL, 5);
wxButton* itemButton16 = new wxButton( itemDialog1, ID_STOP_CONTROL_DRC, _("Stop Drc"), wxDefaultPosition, wxDefaultSize, 0 ); wxButton* itemButton16 = new wxButton( itemDialog1, ID_DRC_RUN, _("Test Drc"), wxDefaultPosition, wxDefaultSize, 0 );
itemButton16->SetForegroundColour(wxColour(0, 128, 128)); itemButton16->SetForegroundColour(wxColour(202, 0, 0));
itemBoxSizer14->Add(itemButton16, 0, wxGROW|wxALL, 5); itemBoxSizer15->Add(itemButton16, 0, wxGROW|wxALL, 5);
wxBoxSizer* itemBoxSizer17 = new wxBoxSizer(wxVERTICAL); wxButton* itemButton17 = new wxButton( itemDialog1, ID_STOP_CONTROL_DRC, _("Stop Drc"), wxDefaultPosition, wxDefaultSize, 0 );
itemBoxSizer13->Add(itemBoxSizer17, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); itemButton17->SetForegroundColour(wxColour(0, 128, 128));
itemBoxSizer15->Add(itemButton17, 0, wxGROW|wxALL, 5);
wxButton* itemButton18 = new wxButton( itemDialog1, ID_ERASE_DRC_MARKERS, _("Del Markers"), wxDefaultPosition, wxDefaultSize, 0 ); wxBoxSizer* itemBoxSizer18 = new wxBoxSizer(wxVERTICAL);
itemButton18->SetForegroundColour(wxColour(0, 128, 0)); itemBoxSizer14->Add(itemBoxSizer18, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
itemBoxSizer17->Add(itemButton18, 0, wxGROW|wxALL, 5);
wxButton* itemButton19 = new wxButton( itemDialog1, ID_LIST_UNCONNECTED_PADS, _("List Unconn"), wxDefaultPosition, wxDefaultSize, 0 ); wxButton* itemButton19 = new wxButton( itemDialog1, ID_ERASE_DRC_MARKERS, _("Del Markers"), wxDefaultPosition, wxDefaultSize, 0 );
itemButton19->SetForegroundColour(wxColour(0, 0, 255)); itemButton19->SetForegroundColour(wxColour(0, 128, 0));
itemBoxSizer17->Add(itemButton19, 0, wxGROW|wxALL, 5); itemBoxSizer18->Add(itemButton19, 0, wxGROW|wxALL, 5);
wxButton* itemButton20 = new wxButton( itemDialog1, wxID_CLOSE, _("&Close"), wxDefaultPosition, wxDefaultSize, 0 ); wxButton* itemButton20 = new wxButton( itemDialog1, ID_LIST_UNCONNECTED_PADS, _("List Unconn"), wxDefaultPosition, wxDefaultSize, 0 );
itemBoxSizer12->Add(itemButton20, 0, wxGROW|wxALL, 5); itemButton20->SetForegroundColour(wxColour(0, 0, 255));
itemBoxSizer18->Add(itemButton20, 0, wxGROW|wxALL, 5);
wxStaticText* itemStaticText21 = new wxStaticText( itemDialog1, wxID_STATIC, _("Messages:"), wxDefaultPosition, wxDefaultSize, 0 ); wxButton* itemButton21 = new wxButton( itemDialog1, wxID_CLOSE, _("&Close"), wxDefaultPosition, wxDefaultSize, 0 );
m_MainSizer->Add(itemStaticText21, 0, wxGROW|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5); itemBoxSizer13->Add(itemButton21, 0, wxGROW|wxALL, 5);
wxStaticBox* itemStaticBoxSizer22Static = new wxStaticBox(itemDialog1, wxID_ANY, _("Report File"));
wxStaticBoxSizer* itemStaticBoxSizer22 = new wxStaticBoxSizer(itemStaticBoxSizer22Static, wxVERTICAL);
itemBoxSizer13->Add(itemStaticBoxSizer22, 0, wxGROW|wxALL, 5);
wxButton* itemButton23 = new wxButton( itemDialog1, ID_BUTTON_BROWSE_RPT_FILE, _("Browse"), wxDefaultPosition, wxDefaultSize, 0 );
itemButton23->SetForegroundColour(wxColour(0, 128, 128));
itemStaticBoxSizer22->Add(itemButton23, 0, wxALIGN_LEFT|wxALL, 5);
m_RptFilenameCtrl = new wxTextCtrl( itemDialog1, ID_TEXTCTRL_GET_RPT_FILENAME, _T(""), wxDefaultPosition, wxDefaultSize, 0 );
itemStaticBoxSizer22->Add(m_RptFilenameCtrl, 0, wxGROW|wxALL, 5);
wxStaticText* itemStaticText25 = new wxStaticText( itemDialog1, wxID_STATIC, _("Messages:"), wxDefaultPosition, wxDefaultSize, 0 );
m_MainSizer->Add(itemStaticText25, 0, wxGROW|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
m_logWindow = new wxTextCtrl( itemDialog1, ID_TEXTCTRL, _T(""), wxDefaultPosition, wxSize(-1, 200), wxTE_MULTILINE|wxTE_READONLY ); m_logWindow = new wxTextCtrl( itemDialog1, ID_TEXTCTRL, _T(""), wxDefaultPosition, wxSize(-1, 200), wxTE_MULTILINE|wxTE_READONLY );
m_MainSizer->Add(m_logWindow, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5); m_MainSizer->Add(m_logWindow, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
@ -203,9 +222,12 @@ void WinEDA_DrcFrame::CreateControls()
m_Pad2PadTestCtrl->SetValidator( wxGenericValidator(& s_Pad2PadTestOpt) ); m_Pad2PadTestCtrl->SetValidator( wxGenericValidator(& s_Pad2PadTestOpt) );
m_UnconnectedTestCtrl->SetValidator( wxGenericValidator(& s_UnconnectedTestOpt) ); m_UnconnectedTestCtrl->SetValidator( wxGenericValidator(& s_UnconnectedTestOpt) );
m_ZonesTestCtrl->SetValidator( wxGenericValidator(& s_ZonesTestOpt) ); m_ZonesTestCtrl->SetValidator( wxGenericValidator(& s_ZonesTestOpt) );
m_CreateRptCtrl->SetValidator( wxGenericValidator(& s_CreateRptFileOpt) );
////@end WinEDA_DrcFrame content construction ////@end WinEDA_DrcFrame content construction
AddUnitSymbol(*m_ClearenceTitle); AddUnitSymbol(*m_ClearenceTitle);
m_RptFilenameCtrl->SetValue(s_RptFilename);
} }
/*! /*!
@ -288,6 +310,7 @@ void WinEDA_DrcFrame::OnCloseClick( wxCommandEvent& event )
s_Pad2PadTestOpt = m_Pad2PadTestCtrl->IsChecked(); s_Pad2PadTestOpt = m_Pad2PadTestCtrl->IsChecked();
s_UnconnectedTestOpt = m_UnconnectedTestCtrl->IsChecked(); s_UnconnectedTestOpt = m_UnconnectedTestCtrl->IsChecked();
s_ZonesTestOpt = m_ZonesTestCtrl->IsChecked(); s_ZonesTestOpt = m_ZonesTestCtrl->IsChecked();
s_CreateRptFileOpt = m_CreateRptCtrl->IsChecked();
Close(); Close();
} }
@ -304,6 +327,35 @@ void WinEDA_DrcFrame::OnCloseWindow( wxCloseEvent& event )
s_Pad2PadTestOpt = m_Pad2PadTestCtrl->IsChecked(); s_Pad2PadTestOpt = m_Pad2PadTestCtrl->IsChecked();
s_UnconnectedTestOpt = m_UnconnectedTestCtrl->IsChecked(); s_UnconnectedTestOpt = m_UnconnectedTestCtrl->IsChecked();
s_ZonesTestOpt = m_ZonesTestCtrl->IsChecked(); s_ZonesTestOpt = m_ZonesTestCtrl->IsChecked();
s_CreateRptFileOpt = m_CreateRptCtrl->IsChecked();
event.Skip(); event.Skip();
} }
/*!
* wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BUTTON_BROWSE_RPT_FILE
*/
void WinEDA_DrcFrame::OnButtonBrowseRptFileClick( wxCommandEvent& event )
{
wxString FileName, Mask(wxT("*")), Ext(wxT(".rpt"));
FileName = m_Parent->m_CurrentScreen->m_FileName;
ChangeFileNameExt(FileName, wxT("-drc") + Ext);
Mask += Ext;
FileName = EDA_FileSelector(_("Drill Report file"),
wxEmptyString, /* Chemin par defaut */
FileName, /* nom fichier par defaut */
Ext, /* extension par defaut */
Mask, /* Masque d'affichage */
this,
wxFD_SAVE,
TRUE
);
if ( FileName.IsEmpty()) return;
m_RptFilenameCtrl->SetValue(FileName);
s_RptFilename = FileName;
}

View File

@ -44,10 +44,13 @@ class wxBoxSizer;
#define ID_CHECKBOX_PAD2PAD 10009 #define ID_CHECKBOX_PAD2PAD 10009
#define ID_CHECKBOX 10008 #define ID_CHECKBOX 10008
#define ID_CHECKBOX_TEST_ZONES 10007 #define ID_CHECKBOX_TEST_ZONES 10007
#define ID_CHECKBOX_CREATE_FILE 10012
#define ID_DRC_RUN 10003 #define ID_DRC_RUN 10003
#define ID_STOP_CONTROL_DRC 10004 #define ID_STOP_CONTROL_DRC 10004
#define ID_ERASE_DRC_MARKERS 10005 #define ID_ERASE_DRC_MARKERS 10005
#define ID_LIST_UNCONNECTED_PADS 10006 #define ID_LIST_UNCONNECTED_PADS 10006
#define ID_BUTTON_BROWSE_RPT_FILE 10011
#define ID_TEXTCTRL_GET_RPT_FILENAME 10010
#define ID_TEXTCTRL 10001 #define ID_TEXTCTRL 10001
#define SYMBOL_WINEDA_DRCFRAME_STYLE wxCAPTION|wxRESIZE_BORDER|wxSYSTEM_MENU|wxCLOSE_BOX #define SYMBOL_WINEDA_DRCFRAME_STYLE wxCAPTION|wxRESIZE_BORDER|wxSYSTEM_MENU|wxCLOSE_BOX
#define SYMBOL_WINEDA_DRCFRAME_TITLE _("DRC Control") #define SYMBOL_WINEDA_DRCFRAME_TITLE _("DRC Control")
@ -105,6 +108,9 @@ public:
/// wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CLOSE /// wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CLOSE
void OnCloseClick( wxCommandEvent& event ); void OnCloseClick( wxCommandEvent& event );
/// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BUTTON_BROWSE_RPT_FILE
void OnButtonBrowseRptFileClick( wxCommandEvent& event );
////@end WinEDA_DrcFrame event handler declarations ////@end WinEDA_DrcFrame event handler declarations
////@begin WinEDA_DrcFrame member function declarations ////@begin WinEDA_DrcFrame member function declarations
@ -131,6 +137,8 @@ public:
wxCheckBox* m_Pad2PadTestCtrl; wxCheckBox* m_Pad2PadTestCtrl;
wxCheckBox* m_UnconnectedTestCtrl; wxCheckBox* m_UnconnectedTestCtrl;
wxCheckBox* m_ZonesTestCtrl; wxCheckBox* m_ZonesTestCtrl;
wxCheckBox* m_CreateRptCtrl;
wxTextCtrl* m_RptFilenameCtrl;
wxTextCtrl* m_logWindow; wxTextCtrl* m_logWindow;
////@end WinEDA_DrcFrame member variables ////@end WinEDA_DrcFrame member variables
WinEDA_PcbFrame * m_Parent; WinEDA_PcbFrame * m_Parent;

View File

@ -17,15 +17,17 @@ class WinEDA_DrcFrame;
WinEDA_DrcFrame * DrcFrame; WinEDA_DrcFrame * DrcFrame;
/* saving drc options */ /* saving drc options */
bool s_Pad2PadTestOpt = true; static bool s_Pad2PadTestOpt = true;
bool s_UnconnectedTestOpt = true; static bool s_UnconnectedTestOpt = true;
bool s_ZonesTestOpt = false; static bool s_ZonesTestOpt = false;
static bool s_CreateRptFileOpt = false;
static FILE * s_RptFile = NULL;
static wxString s_RptFilename;
static int ErrorsDRC_Count;
int NumberOfErrors;
static MARQUEUR * current_marqueur; /* Pour gestion des marqueurs sur pcb */ static MARQUEUR * current_marqueur; /* Pour gestion des marqueurs sur pcb */
bool AbortDrc, DrcInProgress = FALSE; static bool AbortDrc, DrcInProgress = FALSE;
static int spot_cX, spot_cY; /* position d'elements a tester */ static int spot_cX, spot_cY; /* position d'elements a tester */
static int finx, finy; // coord relatives de l'extremite du segm de reference static int finx, finy; // coord relatives de l'extremite du segm de reference
static int segm_angle; // angle d'inclinaison du segment de reference en 0,1 degre static int segm_angle; // angle d'inclinaison du segment de reference en 0,1 degre
@ -68,7 +70,10 @@ int ii;
wxString msg; wxString msg;
float convert = 0.0001; float convert = 0.0001;
m_logWindow->AppendText(_("Look for active routes\n")); msg = _("Look for active routes\n");
m_logWindow->AppendText(msg);
if ( s_RptFile ) fprintf(s_RptFile, "%s", CONV_TO_UTF8(msg) );
m_UnconnectedCount = 0; m_UnconnectedCount = 0;
for( ii = m_Parent->m_Pcb->GetNumRatsnests() ;ii > 0; Ratsnest++, ii--) for( ii = m_Parent->m_Pcb->GetNumRatsnests() ;ii > 0; Ratsnest++, ii--)
{ {
@ -82,6 +87,7 @@ float convert = 0.0001;
msg.Printf(_("%d > Pad %s (%s) @ %.4f,%.4f and "), m_UnconnectedCount, msg.Printf(_("%d > Pad %s (%s) @ %.4f,%.4f and "), m_UnconnectedCount,
pad_name.GetData(), module_name.GetData(), pad->m_Pos.x * convert, pad->m_Pos.y * convert); pad_name.GetData(), module_name.GetData(), pad->m_Pos.x * convert, pad->m_Pos.y * convert);
m_logWindow->AppendText(msg); m_logWindow->AppendText(msg);
if ( s_RptFile ) fprintf(s_RptFile, "%s", CONV_TO_UTF8(msg) );
pad = Ratsnest->pad_end; pad = Ratsnest->pad_end;
pad->Draw(panel, m_DC, wxPoint(0,0),draw_mode); pad->Draw(panel, m_DC, wxPoint(0,0),draw_mode);
@ -90,11 +96,13 @@ float convert = 0.0001;
msg.Printf(_("Pad %s (%s) @ %.4f,%.4f\n"), msg.Printf(_("Pad %s (%s) @ %.4f,%.4f\n"),
pad_name.GetData(), module_name.GetData(), pad->m_Pos.x * convert, pad->m_Pos.y * convert); pad_name.GetData(), module_name.GetData(), pad->m_Pos.x * convert, pad->m_Pos.y * convert);
m_logWindow->AppendText(msg); m_logWindow->AppendText(msg);
if ( s_RptFile ) fprintf(s_RptFile, "%s", CONV_TO_UTF8(msg) );
} }
if ( m_UnconnectedCount ) msg.Printf(_("Active routes: %d\n"), m_UnconnectedCount); if ( m_UnconnectedCount ) msg.Printf(_("Active routes: %d\n"), m_UnconnectedCount);
else msg = _("OK! (No active routes)\n"); else msg = _("OK! (No active routes)\n");
m_logWindow->AppendText(msg); m_logWindow->AppendText(msg);
if ( s_RptFile ) fprintf(s_RptFile, "%s", CONV_TO_UTF8(msg) );
} }
@ -104,8 +112,24 @@ void WinEDA_DrcFrame::TestDrc(wxCommandEvent & event)
{ {
int errors; int errors;
wxString msg; wxString msg;
if ( ! DrcInProgress ) if ( ! DrcInProgress )
{ {
if ( m_CreateRptCtrl->IsChecked() ) // Create a file rpt
{
s_RptFilename = m_RptFilenameCtrl->GetValue();
if ( s_RptFilename.IsEmpty() ) OnButtonBrowseRptFileClick( event );
if ( ! s_RptFilename.IsEmpty() ) s_RptFile = wxFopen(s_RptFilename, wxT("w"));
else s_RptFile = NULL;
}
if ( s_RptFile )
{
fprintf(s_RptFile, "Drc report for %s\n", CONV_TO_UTF8(m_Parent->m_CurrentScreen->m_FileName) );
char line[256];
fprintf(s_RptFile, "Created on %s\n", DateAndTime(line));
}
s_Pad2PadTestOpt = m_Pad2PadTestCtrl->IsChecked(); s_Pad2PadTestOpt = m_Pad2PadTestCtrl->IsChecked();
s_UnconnectedTestOpt = m_UnconnectedTestCtrl->IsChecked(); s_UnconnectedTestOpt = m_UnconnectedTestCtrl->IsChecked();
s_ZonesTestOpt = m_ZonesTestCtrl->IsChecked(); s_ZonesTestOpt = m_ZonesTestCtrl->IsChecked();
@ -123,6 +147,17 @@ wxString msg;
else if ( m_UnconnectedCount == 0 ) else if ( m_UnconnectedCount == 0 )
msg = _("** End Drc: No Error **\n"); msg = _("** End Drc: No Error **\n");
m_logWindow->AppendText(msg); m_logWindow->AppendText(msg);
if ( s_RptFile ) fprintf(s_RptFile, "%s", CONV_TO_UTF8(msg) );
if ( s_RptFile )
{
msg.Printf( _("Report file <%s> created\n"), s_RptFilename.GetData());
m_logWindow->AppendText(msg);
fclose(s_RptFile);
s_RptFile = NULL;
}
} }
else wxBell(); else wxBell();
} }
@ -180,7 +215,7 @@ wxString Line;
#define PRINT_ZONE_ERR_POS 70 #define PRINT_ZONE_ERR_POS 70
DrcInProgress = TRUE; DrcInProgress = TRUE;
NumberOfErrors = 0; ErrorsDRC_Count = 0;
Compile_Ratsnest(DC, TRUE); Compile_Ratsnest(DC, TRUE);
MsgPanel->EraseMsgBox(); MsgPanel->EraseMsgBox();
@ -217,9 +252,9 @@ wxString Line;
if( Marqueur == NULL ) if( Marqueur == NULL )
{ {
DisplayError(this, wxT("Test_Drc(): internal err")); DisplayError(this, wxT("Test_Drc(): internal err"));
return NumberOfErrors; return ErrorsDRC_Count;
} }
Line.Printf( wxT("%d"),NumberOfErrors) ; Line.Printf( wxT("%d"),ErrorsDRC_Count) ;
Affiche_1_Parametre(this, PRINT_PAD_ERR_POS,wxEmptyString,Line, LIGHTRED); Affiche_1_Parametre(this, PRINT_PAD_ERR_POS,wxEmptyString,Line, LIGHTRED);
Marqueur->Pnext = m_Pcb->m_Drawings; Marqueur->Pnext = m_Pcb->m_Drawings;
Marqueur->Pback = m_Pcb; Marqueur->Pback = m_Pcb;
@ -275,7 +310,7 @@ wxString Line;
if( Marqueur == NULL ) if( Marqueur == NULL )
{ {
DisplayError(this, wxT("Test_Drc(): internal err")); DisplayError(this, wxT("Test_Drc(): internal err"));
return NumberOfErrors; return ErrorsDRC_Count;
} }
Marqueur->Pnext = m_Pcb->m_Drawings; Marqueur->Pnext = m_Pcb->m_Drawings;
Marqueur->Pback = m_Pcb; Marqueur->Pback = m_Pcb;
@ -286,7 +321,7 @@ wxString Line;
GRSetDrawMode(DC, GR_OR); GRSetDrawMode(DC, GR_OR);
pt_segm->Draw(DrawPanel, DC, RED^LIGHTRED ); pt_segm->Draw(DrawPanel, DC, RED^LIGHTRED );
Line.Printf( wxT("%d"),NumberOfErrors); Line.Printf( wxT("%d"),ErrorsDRC_Count);
Affiche_1_Parametre(this, PRINT_TRACK_ERR_POS,wxEmptyString,Line, LIGHTRED); Affiche_1_Parametre(this, PRINT_TRACK_ERR_POS,wxEmptyString,Line, LIGHTRED);
} }
} }
@ -340,7 +375,7 @@ wxString Line;
if( Marqueur == NULL ) if( Marqueur == NULL )
{ {
DisplayError(this, wxT("Test_Drc(): internal err")); DisplayError(this, wxT("Test_Drc(): internal err"));
return NumberOfErrors; return ErrorsDRC_Count;
} }
Marqueur->Pnext = m_Pcb->m_Drawings; Marqueur->Pnext = m_Pcb->m_Drawings;
Marqueur->Pback = m_Pcb; Marqueur->Pback = m_Pcb;
@ -351,7 +386,7 @@ wxString Line;
GRSetDrawMode(DC, GR_OR); GRSetDrawMode(DC, GR_OR);
pt_segm->Draw(DrawPanel, DC, RED^LIGHTRED ); pt_segm->Draw(DrawPanel, DC, RED^LIGHTRED );
Line.Printf( wxT("%d"),NumberOfErrors); Line.Printf( wxT("%d"),ErrorsDRC_Count);
Affiche_1_Parametre(this, PRINT_ZONE_ERR_POS, wxEmptyString, Line, LIGHTRED); Affiche_1_Parametre(this, PRINT_ZONE_ERR_POS, wxEmptyString, Line, LIGHTRED);
} }
@ -366,7 +401,7 @@ wxString Line;
if( Marqueur == NULL ) if( Marqueur == NULL )
{ {
DisplayError(this, wxT("Test_Drc(): internal err")); DisplayError(this, wxT("Test_Drc(): internal err"));
return NumberOfErrors; return ErrorsDRC_Count;
} }
Marqueur->Pnext = m_Pcb->m_Drawings; Marqueur->Pnext = m_Pcb->m_Drawings;
Marqueur->Pback = m_Pcb; Marqueur->Pback = m_Pcb;
@ -377,7 +412,7 @@ wxString Line;
GRSetDrawMode(DC, GR_OR); GRSetDrawMode(DC, GR_OR);
pt_segm->Draw(DrawPanel, DC, RED^LIGHTRED ); pt_segm->Draw(DrawPanel, DC, RED^LIGHTRED );
Line.Printf( wxT("%d"),NumberOfErrors); Line.Printf( wxT("%d"),ErrorsDRC_Count);
Affiche_1_Parametre(this, PRINT_ZONE_ERR_POS, wxEmptyString, Line, LIGHTRED); Affiche_1_Parametre(this, PRINT_ZONE_ERR_POS, wxEmptyString, Line, LIGHTRED);
} }
} }
@ -386,7 +421,7 @@ wxString Line;
AbortDrc = FALSE; AbortDrc = FALSE;
DrcInProgress = FALSE; DrcInProgress = FALSE;
return NumberOfErrors; return ErrorsDRC_Count;
} }
@ -462,7 +497,7 @@ wxPoint shape_pos;
spot_cY = pseudo_pad.m_Pos.y - org_Y; spot_cY = pseudo_pad.m_Pos.y - org_Y;
if( TestClearanceSegmToPad(&pseudo_pad, w_dist, g_DesignSettings.m_TrackClearence) != OK_DRC ) if( TestClearanceSegmToPad(&pseudo_pad, w_dist, g_DesignSettings.m_TrackClearence) != OK_DRC )
{ {
NumberOfErrors++; ErrorsDRC_Count++;
if( show_err ) if( show_err )
Affiche_Erreur_DRC(frame->DrawPanel, DC, Affiche_Erreur_DRC(frame->DrawPanel, DC,
frame->m_Pcb, pt_segment,pt_pad,0); frame->m_Pcb, pt_segment,pt_pad,0);
@ -485,7 +520,7 @@ wxPoint shape_pos;
/* extremite sur pad ou defaut d'isolation trouve */ /* extremite sur pad ou defaut d'isolation trouve */
else else
{ {
NumberOfErrors++; ErrorsDRC_Count++;
if( show_err ) if( show_err )
Affiche_Erreur_DRC(frame->DrawPanel, DC, Affiche_Erreur_DRC(frame->DrawPanel, DC,
frame->m_Pcb, pt_segment,pt_pad,1); frame->m_Pcb, pt_segment,pt_pad,1);
@ -527,7 +562,7 @@ wxPoint shape_pos;
{ {
if( (int)hypot((float)x0,(float)y0) < w_dist ) if( (int)hypot((float)x0,(float)y0) < w_dist )
{ {
NumberOfErrors++; ErrorsDRC_Count++;
if( show_err) if( show_err)
Affiche_Erreur_DRC(frame->DrawPanel, DC, frame->m_Pcb, pt_segment,pttrack,21); Affiche_Erreur_DRC(frame->DrawPanel, DC, frame->m_Pcb, pt_segment,pttrack,21);
return(BAD_DRC) ; return(BAD_DRC) ;
@ -544,7 +579,7 @@ wxPoint shape_pos;
if( TestMarginToCircle(x0, y0, w_dist, dx) == BAD_DRC ) if( TestMarginToCircle(x0, y0, w_dist, dx) == BAD_DRC )
{ {
NumberOfErrors++; ErrorsDRC_Count++;
if(show_err) if(show_err)
Affiche_Erreur_DRC(frame->DrawPanel, DC, frame->m_Pcb, pt_segment,pttrack,20); Affiche_Erreur_DRC(frame->DrawPanel, DC, frame->m_Pcb, pt_segment,pttrack,20);
return(BAD_DRC) ; return(BAD_DRC) ;
@ -563,7 +598,7 @@ wxPoint shape_pos;
if ( pttrack->m_StructType == TYPEVIA ) if ( pttrack->m_StructType == TYPEVIA )
{ {
if( TestMarginToCircle(x0, y0,w_dist,segm_long) == OK_DRC) continue; if( TestMarginToCircle(x0, y0,w_dist,segm_long) == OK_DRC) continue;
NumberOfErrors++; ErrorsDRC_Count++;
if(show_err) if(show_err)
Affiche_Erreur_DRC(frame->DrawPanel, DC, frame->m_Pcb, pt_segment,pttrack,21); Affiche_Erreur_DRC(frame->DrawPanel, DC, frame->m_Pcb, pt_segment,pttrack,21);
return(BAD_DRC) ; return(BAD_DRC) ;
@ -584,14 +619,14 @@ wxPoint shape_pos;
/* test fin tenant compte des formes arrondies des extremites */ /* test fin tenant compte des formes arrondies des extremites */
if ( x0 >= 0 && x0 <= segm_long ) if ( x0 >= 0 && x0 <= segm_long )
{ {
NumberOfErrors++; ErrorsDRC_Count++;
if ( show_err ) if ( show_err )
Affiche_Erreur_DRC(frame->DrawPanel, DC, frame->m_Pcb, pt_segment,pttrack,2); Affiche_Erreur_DRC(frame->DrawPanel, DC, frame->m_Pcb, pt_segment,pttrack,2);
return(BAD_DRC) ; return(BAD_DRC) ;
} }
if( TestMarginToCircle(x0, y0, w_dist,segm_long) == BAD_DRC) if( TestMarginToCircle(x0, y0, w_dist,segm_long) == BAD_DRC)
{ {
NumberOfErrors++; ErrorsDRC_Count++;
if(show_err) if(show_err)
Affiche_Erreur_DRC(frame->DrawPanel, DC, frame->m_Pcb, pt_segment,pttrack,2); Affiche_Erreur_DRC(frame->DrawPanel, DC, frame->m_Pcb, pt_segment,pttrack,2);
return(BAD_DRC) ; return(BAD_DRC) ;
@ -602,14 +637,14 @@ wxPoint shape_pos;
/* test fin tenant compte des formes arrondies des extremites */ /* test fin tenant compte des formes arrondies des extremites */
if ( xf >= 0 && xf <= segm_long ) if ( xf >= 0 && xf <= segm_long )
{ {
NumberOfErrors++; ErrorsDRC_Count++;
if(show_err) if(show_err)
Affiche_Erreur_DRC(frame->DrawPanel, DC, frame->m_Pcb, pt_segment,pttrack,3); Affiche_Erreur_DRC(frame->DrawPanel, DC, frame->m_Pcb, pt_segment,pttrack,3);
return(BAD_DRC) ; return(BAD_DRC) ;
} }
if( TestMarginToCircle(xf, yf, w_dist,segm_long) == BAD_DRC) if( TestMarginToCircle(xf, yf, w_dist,segm_long) == BAD_DRC)
{ {
NumberOfErrors++; ErrorsDRC_Count++;
if(show_err) if(show_err)
Affiche_Erreur_DRC(frame->DrawPanel, DC, frame->m_Pcb, pt_segment,pttrack,3); Affiche_Erreur_DRC(frame->DrawPanel, DC, frame->m_Pcb, pt_segment,pttrack,3);
return(BAD_DRC) ; return(BAD_DRC) ;
@ -618,7 +653,7 @@ wxPoint shape_pos;
if ( x0 <=0 && xf >= 0 ) if ( x0 <=0 && xf >= 0 )
{ {
NumberOfErrors++; ErrorsDRC_Count++;
if(show_err) if(show_err)
Affiche_Erreur_DRC(frame->DrawPanel, DC, frame->m_Pcb, pt_segment,pttrack,4); Affiche_Erreur_DRC(frame->DrawPanel, DC, frame->m_Pcb, pt_segment,pttrack,4);
return(BAD_DRC) ; return(BAD_DRC) ;
@ -633,7 +668,7 @@ wxPoint shape_pos;
if( y0 > yf ) EXCHG(y0, yf); if( y0 > yf ) EXCHG(y0, yf);
if( (y0 < 0) && (yf > 0) ) if( (y0 < 0) && (yf > 0) )
{ {
NumberOfErrors++; ErrorsDRC_Count++;
if( show_err) if( show_err)
Affiche_Erreur_DRC(frame->DrawPanel, DC, frame->m_Pcb, pt_segment,pttrack,6); Affiche_Erreur_DRC(frame->DrawPanel, DC, frame->m_Pcb, pt_segment,pttrack,6);
return(BAD_DRC); return(BAD_DRC);
@ -643,14 +678,14 @@ wxPoint shape_pos;
de reference */ de reference */
if(TestMarginToCircle(x0,y0,w_dist,segm_long) == BAD_DRC) if(TestMarginToCircle(x0,y0,w_dist,segm_long) == BAD_DRC)
{ {
NumberOfErrors++; ErrorsDRC_Count++;
if(show_err) if(show_err)
Affiche_Erreur_DRC(frame->DrawPanel, DC, frame->m_Pcb, pt_segment,pttrack,7); Affiche_Erreur_DRC(frame->DrawPanel, DC, frame->m_Pcb, pt_segment,pttrack,7);
return(BAD_DRC) ; return(BAD_DRC) ;
} }
if(TestMarginToCircle(xf,yf,w_dist,segm_long) == BAD_DRC) if(TestMarginToCircle(xf,yf,w_dist,segm_long) == BAD_DRC)
{ {
NumberOfErrors++; ErrorsDRC_Count++;
if(show_err) if(show_err)
Affiche_Erreur_DRC(frame->DrawPanel, DC, frame->m_Pcb, pt_segment,pttrack,8); Affiche_Erreur_DRC(frame->DrawPanel, DC, frame->m_Pcb, pt_segment,pttrack,8);
return(BAD_DRC) ; return(BAD_DRC) ;
@ -677,7 +712,7 @@ wxPoint shape_pos;
if(bflag == BAD_DRC) if(bflag == BAD_DRC)
{ {
NumberOfErrors++; ErrorsDRC_Count++;
if(show_err) if(show_err)
Affiche_Erreur_DRC(frame->DrawPanel, DC, frame->m_Pcb, pt_segment,pttrack,9); Affiche_Erreur_DRC(frame->DrawPanel, DC, frame->m_Pcb, pt_segment,pttrack,9);
return(BAD_DRC) ; return(BAD_DRC) ;
@ -705,14 +740,14 @@ wxPoint shape_pos;
RotatePoint(&rxf,&ryf, angle); RotatePoint(&rxf,&ryf, angle);
if(TestMarginToCircle(rx0,ry0,w_dist,dx) == BAD_DRC) if(TestMarginToCircle(rx0,ry0,w_dist,dx) == BAD_DRC)
{ {
NumberOfErrors++; ErrorsDRC_Count++;
if(show_err) if(show_err)
Affiche_Erreur_DRC(frame->DrawPanel, DC, frame->m_Pcb, pt_segment,pttrack,10); Affiche_Erreur_DRC(frame->DrawPanel, DC, frame->m_Pcb, pt_segment,pttrack,10);
return(BAD_DRC) ; return(BAD_DRC) ;
} }
if(TestMarginToCircle(rxf,ryf,w_dist,dx) == BAD_DRC) if(TestMarginToCircle(rxf,ryf,w_dist,dx) == BAD_DRC)
{ {
NumberOfErrors++; ErrorsDRC_Count++;
if(show_err) if(show_err)
Affiche_Erreur_DRC(frame->DrawPanel, DC, frame->m_Pcb, pt_segment,pttrack,11); Affiche_Erreur_DRC(frame->DrawPanel, DC, frame->m_Pcb, pt_segment,pttrack,11);
return(BAD_DRC) ; return(BAD_DRC) ;
@ -765,7 +800,7 @@ LISTE_PAD * pad_list = start_buffer;
if( Pad_to_Pad_Isol(pad_ref, pad, g_DesignSettings.m_TrackClearence) == OK_DRC ) continue ; if( Pad_to_Pad_Isol(pad_ref, pad, g_DesignSettings.m_TrackClearence) == OK_DRC ) continue ;
else /* defaut d'isolation trouve */ else /* defaut d'isolation trouve */
{ {
NumberOfErrors++; ErrorsDRC_Count++;
if( show_err ) if( show_err )
Affiche_Erreur_DRC(frame->DrawPanel, DC, frame->m_Pcb, pad_ref, pad); Affiche_Erreur_DRC(frame->DrawPanel, DC, frame->m_Pcb, pad_ref, pad);
return(BAD_DRC); return(BAD_DRC);
@ -1106,29 +1141,46 @@ static void Affiche_Erreur_DRC(WinEDA_DrawPanel * panel, wxDC * DC, BOARD * Pcb,
*/ */
{ {
wxPoint erc_pos; wxPoint erc_pos;
D_PAD * pad;
TRACK * pt_segm; TRACK * pt_segm;
wxString msg; wxString msg;
wxString tracktype, netname1, netname2;
EQUIPOT * equipot = GetEquipot(Pcb, pt_ref->m_NetCode);
if ( equipot ) netname1 = equipot->m_Netname;
else netname1 = wxT("<noname>");
netname2 = wxT("<noname>");
tracktype = wxT("Track");
if ( pt_ref->m_StructType == TYPEVIA ) tracktype = wxT("Via");
if ( pt_ref->m_StructType == TYPEZONE ) tracktype = wxT("Zone");
if( ((EDA_BaseStruct*)pt_item)->m_StructType == TYPEPAD ) if( ((EDA_BaseStruct*)pt_item)->m_StructType == TYPEPAD )
{ {
pad = (D_PAD*) pt_item; D_PAD * pad = (D_PAD*) pt_item;
equipot = GetEquipot(Pcb, pad->m_NetCode);
if ( equipot ) netname2 = equipot->m_Netname;
erc_pos = pad->m_Pos; erc_pos = pad->m_Pos;
wxString pad_name = pad->ReturnStringPadName(); wxString pad_name = pad->ReturnStringPadName();
wxString module_name = ((MODULE*)(pad->m_Parent))->m_Reference->m_Text; wxString module_name = ((MODULE*)(pad->m_Parent))->m_Reference->m_Text;
msg.Printf(_("%d Drc Err %d PAD %s (%s) @ %d,%d\n"), msg.Printf(_("%d Drc Err %d %s (net %s)and PAD %s (%s) net %s @ %d,%d\n"),
NumberOfErrors, errnumber, ErrorsDRC_Count, errnumber, tracktype.GetData(),
netname1.GetData(),
pad_name.GetData(), module_name.GetData(), pad_name.GetData(), module_name.GetData(),
netname2.GetData(),
erc_pos.x, erc_pos.y); erc_pos.x, erc_pos.y);
} }
else /* erreur sur segment de piste */ else /* erreur sur segment de piste */
{ {
pt_segm = (TRACK *) pt_item; pt_segm = (TRACK *) pt_item;
equipot = GetEquipot(Pcb, pt_segm->m_NetCode);
if ( equipot ) netname2 = equipot->m_Netname;
erc_pos = pt_segm->m_Start; erc_pos = pt_segm->m_Start;
if(pt_segm->m_StructType == TYPEVIA) if(pt_segm->m_StructType == TYPEVIA)
{ {
msg.Printf(_("%d Err type %d: sur VIA @ %d,%d\n"), msg.Printf(_("%d Err type %d: %s (net %s) and VIA (net %s) @ %d,%d\n"),
NumberOfErrors, errnumber,erc_pos.x,erc_pos.y); ErrorsDRC_Count, errnumber, tracktype.GetData(),
netname1.GetData(), netname2.GetData(),
erc_pos.x,erc_pos.y);
} }
else else
{ {
@ -1138,13 +1190,16 @@ wxString msg;
{ {
EXCHG(erc_pos_f.x, erc_pos.x); EXCHG(erc_pos_f.y, erc_pos.y); EXCHG(erc_pos_f.x, erc_pos.x); EXCHG(erc_pos_f.y, erc_pos.y);
} }
msg.Printf(_("%d Err type %d: sur SEGMENT @ %d,%d\n"), msg.Printf(_("%d Err type %d: %s (net %s) and track (net %s) @ %d,%d\n"),
NumberOfErrors, errnumber,erc_pos.x,erc_pos.y); ErrorsDRC_Count, errnumber, tracktype.GetData(),
netname1.GetData(), netname2.GetData(),
erc_pos.x,erc_pos.y);
} }
} }
if ( DrcFrame ) DrcFrame->m_logWindow->AppendText(msg); if ( DrcFrame ) DrcFrame->m_logWindow->AppendText(msg);
else panel->m_Parent->Affiche_Message(msg); else panel->m_Parent->Affiche_Message(msg);
if ( s_RptFile ) fprintf(s_RptFile, "%s", CONV_TO_UTF8(msg) );
if(current_marqueur == NULL) current_marqueur = new MARQUEUR(Pcb); if(current_marqueur == NULL) current_marqueur = new MARQUEUR(Pcb);
current_marqueur->m_Pos = wxPoint(erc_pos.x, erc_pos.y); current_marqueur->m_Pos = wxPoint(erc_pos.x, erc_pos.y);
@ -1172,12 +1227,22 @@ wxString msg;
wxString module_name1 = ((MODULE*)(pad1->m_Parent))->m_Reference->m_Text; wxString module_name1 = ((MODULE*)(pad1->m_Parent))->m_Reference->m_Text;
wxString pad_name2 = pad2->ReturnStringPadName(); wxString pad_name2 = pad2->ReturnStringPadName();
wxString module_name2 = ((MODULE*)(pad2->m_Parent))->m_Reference->m_Text; wxString module_name2 = ((MODULE*)(pad2->m_Parent))->m_Reference->m_Text;
wxString netname1, netname2;
EQUIPOT * equipot = GetEquipot(Pcb, pad1->m_NetCode);
if ( equipot ) netname1 = equipot->m_Netname;
else netname1 = wxT("<noname>");
equipot = GetEquipot(Pcb, pad2->m_NetCode);
if ( equipot ) netname2 = equipot->m_Netname;
else netname2 = wxT("<noname>");
msg.Printf( _("%d Drc Err: PAD %s (%s) @ %d,%d and PAD %s (%s) @ %d,%d\n"), msg.Printf( _("%d Drc Err: PAD %s (%s) net %s @ %d,%d and PAD %s (%s) net %s @ %d,%d\n"),
NumberOfErrors, pad_name1.GetData(), module_name1.GetData(), pad1->m_Pos.x,pad1->m_Pos.y, ErrorsDRC_Count, pad_name1.GetData(), module_name1.GetData(),
pad_name2.GetData(), module_name2.GetData(), pad2->m_Pos.x, pad2->m_Pos.y); netname1.GetData(), pad1->m_Pos.x,pad1->m_Pos.y,
pad_name2.GetData(), module_name2.GetData(),
netname2.GetData(), pad2->m_Pos.x, pad2->m_Pos.y);
if ( DrcFrame ) DrcFrame->m_logWindow->AppendText(msg); if ( DrcFrame ) DrcFrame->m_logWindow->AppendText(msg);
else panel->m_Parent->Affiche_Message(msg); else panel->m_Parent->Affiche_Message(msg);
if ( s_RptFile ) fprintf(s_RptFile, "%s", CONV_TO_UTF8(msg) );
if(current_marqueur == NULL) current_marqueur = new MARQUEUR(Pcb); if(current_marqueur == NULL) current_marqueur = new MARQUEUR(Pcb);
current_marqueur->m_Pos = pad1->m_Pos; current_marqueur->m_Pos = pad1->m_Pos;

View File

@ -716,6 +716,64 @@
<string name="proxy-Custom arguments">""</string> <string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string> <string name="proxy-Custom ctor arguments">""</string>
</document> </document>
<document>
<string name="title">"wxCheckBox: ID_CHECKBOX_CREATE_FILE"</string>
<string name="type">"dialog-control-document"</string>
<string name="filename">""</string>
<string name="icon-name">"checkbox"</string>
<long name="is-transient">0</long>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"2/8/2007"</string>
<string name="proxy-type">"wbCheckBoxProxy"</string>
<string name="proxy-Id name">"ID_CHECKBOX_CREATE_FILE"</string>
<long name="proxy-Id value">10012</long>
<string name="proxy-Class">"wxCheckBox"</string>
<string name="proxy-Base class">"wxCheckBox"</string>
<bool name="proxy-External implementation">1</bool>
<bool name="proxy-Separate files">0</bool>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">"m_CreateRptCtrl"</string>
<string name="proxy-Label">"Create Report file"</string>
<bool name="proxy-Initial value">0</bool>
<string name="proxy-Help text">""</string>
<string name="proxy-Tooltip text">""</string>
<string name="proxy-Data variable">"s_CreateRptFileOpt"</string>
<string name="proxy-Data validator">"wxGenericValidator(&amp; %VARIABLE%)"</string>
<string name="proxy-Background colour">""</string>
<string name="proxy-Foreground colour">""</string>
<string name="proxy-Font">""</string>
<bool name="proxy-Hidden">0</bool>
<bool name="proxy-Enabled">1</bool>
<string name="proxy-Platform">"&lt;Any platform&gt;"</string>
<bool name="proxy-wxALIGN_RIGHT">0</bool>
<bool name="proxy-wxCHK_2STATE">0</bool>
<bool name="proxy-wxCHK_3STATE">0</bool>
<bool name="proxy-wxCHK_ALLOW_3RD_STATE_FOR_USER">0</bool>
<bool name="proxy-wxWANTS_CHARS">0</bool>
<bool name="proxy-wxNO_FULL_REPAINT_ON_RESIZE">0</bool>
<bool name="proxy-wxFULL_REPAINT_ON_RESIZE">0</bool>
<string name="proxy-Custom styles">""</string>
<long name="proxy-X">-1</long>
<long name="proxy-Y">-1</long>
<long name="proxy-Width">-1</long>
<long name="proxy-Height">-1</long>
<string name="proxy-AlignH">"Expand"</string>
<string name="proxy-AlignV">"Centre"</string>
<long name="proxy-Stretch factor">0</long>
<long name="proxy-Border">5</long>
<bool name="proxy-wxLEFT">1</bool>
<bool name="proxy-wxRIGHT">1</bool>
<bool name="proxy-wxTOP">1</bool>
<bool name="proxy-wxBOTTOM">1</bool>
<bool name="proxy-wxSHAPED">0</bool>
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
</document>
</document> </document>
</document> </document>
<document> <document>
@ -1116,6 +1174,175 @@
<string name="proxy-Custom arguments">""</string> <string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string> <string name="proxy-Custom ctor arguments">""</string>
</document> </document>
<document>
<string name="title">"wxStaticBoxSizer V"</string>
<string name="type">"dialog-control-document"</string>
<string name="filename">""</string>
<string name="icon-name">"sizer"</string>
<long name="is-transient">0</long>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"2/8/2007"</string>
<string name="proxy-type">"wbStaticBoxSizerProxy"</string>
<string name="proxy-Id name">"wxID_ANY"</string>
<long name="proxy-Id value">-1</long>
<string name="proxy-Label">"Report File"</string>
<string name="proxy-Member variable name">""</string>
<string name="proxy-Sizer member variable name">""</string>
<string name="proxy-Foreground colour">""</string>
<string name="proxy-Font">""</string>
<bool name="proxy-Hidden">0</bool>
<bool name="proxy-Enabled">1</bool>
<string name="proxy-Static box class">"wxStaticBox"</string>
<string name="proxy-Orientation">"Vertical"</string>
<string name="proxy-AlignH">"Expand"</string>
<string name="proxy-AlignV">"Centre"</string>
<long name="proxy-Stretch factor">0</long>
<long name="proxy-Border">5</long>
<bool name="proxy-wxLEFT">1</bool>
<bool name="proxy-wxRIGHT">1</bool>
<bool name="proxy-wxTOP">1</bool>
<bool name="proxy-wxBOTTOM">1</bool>
<bool name="proxy-wxSHAPED">0</bool>
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
<string name="proxy-Platform">"&lt;Any platform&gt;"</string>
<document>
<string name="title">"wxButton: ID_BUTTON_BROWSE_RPT_FILE"</string>
<string name="type">"dialog-control-document"</string>
<string name="filename">""</string>
<string name="icon-name">"dialogcontrol"</string>
<long name="is-transient">0</long>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"2/8/2007"</string>
<string name="proxy-type">"wbButtonProxy"</string>
<string name="event-handler-0">"wxEVT_COMMAND_BUTTON_CLICKED|OnButtonBrowseRptFileClick|NONE||"</string>
<string name="proxy-Id name">"ID_BUTTON_BROWSE_RPT_FILE"</string>
<long name="proxy-Id value">10011</long>
<string name="proxy-Class">"wxButton"</string>
<string name="proxy-Base class">"wxButton"</string>
<bool name="proxy-External implementation">1</bool>
<bool name="proxy-Separate files">0</bool>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">""</string>
<string name="proxy-Label">"Browse"</string>
<bool name="proxy-Default">0</bool>
<string name="proxy-Help text">""</string>
<string name="proxy-Tooltip text">""</string>
<string name="proxy-Background colour">""</string>
<string name="proxy-Foreground colour">"008080"</string>
<string name="proxy-Font">""</string>
<bool name="proxy-Hidden">0</bool>
<bool name="proxy-Enabled">1</bool>
<string name="proxy-Platform">"&lt;Any platform&gt;"</string>
<bool name="proxy-wxBU_LEFT">0</bool>
<bool name="proxy-wxBU_RIGHT">0</bool>
<bool name="proxy-wxBU_TOP">0</bool>
<bool name="proxy-wxBU_BOTTOM">0</bool>
<bool name="proxy-wxBU_EXACTFIT">0</bool>
<bool name="proxy-wxNO_BORDER">0</bool>
<bool name="proxy-wxWANTS_CHARS">0</bool>
<bool name="proxy-wxNO_FULL_REPAINT_ON_RESIZE">0</bool>
<bool name="proxy-wxFULL_REPAINT_ON_RESIZE">0</bool>
<string name="proxy-Custom styles">""</string>
<long name="proxy-X">-1</long>
<long name="proxy-Y">-1</long>
<long name="proxy-Width">-1</long>
<long name="proxy-Height">-1</long>
<string name="proxy-AlignH">"Left"</string>
<string name="proxy-AlignV">"Centre"</string>
<long name="proxy-Stretch factor">0</long>
<long name="proxy-Border">5</long>
<bool name="proxy-wxLEFT">1</bool>
<bool name="proxy-wxRIGHT">1</bool>
<bool name="proxy-wxTOP">1</bool>
<bool name="proxy-wxBOTTOM">1</bool>
<bool name="proxy-wxSHAPED">0</bool>
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
</document>
<document>
<string name="title">"wxTextCtrl: ID_TEXTCTRL_GET_RPT_FILENAME"</string>
<string name="type">"dialog-control-document"</string>
<string name="filename">""</string>
<string name="icon-name">"textctrl"</string>
<long name="is-transient">0</long>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"2/8/2007"</string>
<string name="proxy-type">"wbTextCtrlProxy"</string>
<string name="proxy-Id name">"ID_TEXTCTRL_GET_RPT_FILENAME"</string>
<long name="proxy-Id value">10010</long>
<string name="proxy-Class">"wxTextCtrl"</string>
<string name="proxy-Base class">"wxTextCtrl"</string>
<bool name="proxy-External implementation">1</bool>
<bool name="proxy-Separate files">0</bool>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">"m_RptFilenameCtrl"</string>
<string name="proxy-Initial value">""</string>
<long name="proxy-Max length">0</long>
<string name="proxy-Help text">""</string>
<string name="proxy-Tooltip text">""</string>
<string name="proxy-Background colour">""</string>
<string name="proxy-Foreground colour">""</string>
<string name="proxy-Font">""</string>
<bool name="proxy-Hidden">0</bool>
<bool name="proxy-Enabled">1</bool>
<string name="proxy-Platform">"&lt;Any platform&gt;"</string>
<string name="proxy-Data variable">""</string>
<string name="proxy-Data validator">""</string>
<bool name="proxy-wxTE_MULTILINE">0</bool>
<bool name="proxy-wxTE_PROCESS_ENTER">0</bool>
<bool name="proxy-wxTE_PROCESS_TAB">0</bool>
<bool name="proxy-wxTE_PASSWORD">0</bool>
<bool name="proxy-wxTE_READONLY">0</bool>
<bool name="proxy-wxTE_RICH">0</bool>
<bool name="proxy-wxTE_RICH2">0</bool>
<bool name="proxy-wxTE_AUTO_URL">0</bool>
<bool name="proxy-wxTE_NOHIDESEL">0</bool>
<bool name="proxy-wxTE_LEFT">0</bool>
<bool name="proxy-wxTE_CENTRE">0</bool>
<bool name="proxy-wxTE_RIGHT">0</bool>
<bool name="proxy-wxHSCROLL">0</bool>
<bool name="proxy-wxTE_CHARWRAP">0</bool>
<bool name="proxy-wxTE_WORDWRAP">0</bool>
<bool name="proxy-wxNO_BORDER">0</bool>
<bool name="proxy-wxSIMPLE_BORDER">0</bool>
<bool name="proxy-wxDOUBLE_BORDER">0</bool>
<bool name="proxy-wxSUNKEN_BORDER">0</bool>
<bool name="proxy-wxRAISED_BORDER">0</bool>
<bool name="proxy-wxSTATIC_BORDER">0</bool>
<bool name="proxy-wxWANTS_CHARS">0</bool>
<bool name="proxy-wxNO_FULL_REPAINT_ON_RESIZE">0</bool>
<bool name="proxy-wxFULL_REPAINT_ON_RESIZE">0</bool>
<string name="proxy-Custom styles">""</string>
<long name="proxy-X">-1</long>
<long name="proxy-Y">-1</long>
<long name="proxy-Width">-1</long>
<long name="proxy-Height">-1</long>
<string name="proxy-AlignH">"Expand"</string>
<string name="proxy-AlignV">"Centre"</string>
<long name="proxy-Stretch factor">0</long>
<long name="proxy-Border">5</long>
<bool name="proxy-wxLEFT">1</bool>
<bool name="proxy-wxRIGHT">1</bool>
<bool name="proxy-wxTOP">1</bool>
<bool name="proxy-wxBOTTOM">1</bool>
<bool name="proxy-wxSHAPED">0</bool>
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
</document>
</document>
</document> </document>
</document> </document>
<document> <document>