From cd9da9dd6453ddb8c3be0837c25bcdf585eb20cb Mon Sep 17 00:00:00 2001 From: jean-pierre charras Date: Wed, 27 Nov 2013 20:38:59 +0100 Subject: [PATCH] Pcbnew: fix Bug #1255568 (relative to .pos file creation). Minor compil warnings fixes --- common/displlst.cpp | 2 +- common/math/math_util.cpp | 2 +- pcbnew/dialogs/dialog_netlist.cpp | 2 +- pcbnew/gen_modules_placefile.cpp | 27 ++++++++++++++++--------- pcbnew/pcad2kicadpcb_plugin/pcb_arc.cpp | 4 ++-- 5 files changed, 23 insertions(+), 14 deletions(-) diff --git a/common/displlst.cpp b/common/displlst.cpp index 6f100d4a17..f79715ff33 100644 --- a/common/displlst.cpp +++ b/common/displlst.cpp @@ -203,7 +203,7 @@ void EDA_LIST_DIALOG::InsertItems( const std::vector< wxArrayString >& itemList, for( unsigned col = 0; col < itemList[row].GetCount(); col++ ) { - long itemIndex; + long itemIndex = 0; if( col == 0 ) { diff --git a/common/math/math_util.cpp b/common/math/math_util.cpp index 9743acb1b2..d3f69e81a7 100644 --- a/common/math/math_util.cpp +++ b/common/math/math_util.cpp @@ -68,7 +68,7 @@ int64_t rescale( int64_t aNumerator, int64_t aValue, int64_t aDenominator ) a0 = a0 * b0 + t1a; a1 = a1 * b1 + ( t1 >> 32 ) + ( a0 < t1a ); a0 += r; - a1 += ( (uint64_t) a0 ) < r; + a1 += a0 < (uint64_t)r; for( i = 63; i >= 0; i-- ) { diff --git a/pcbnew/dialogs/dialog_netlist.cpp b/pcbnew/dialogs/dialog_netlist.cpp index 6315e63a00..50ad5f0063 100644 --- a/pcbnew/dialogs/dialog_netlist.cpp +++ b/pcbnew/dialogs/dialog_netlist.cpp @@ -167,7 +167,7 @@ void DIALOG_NETLIST::OnReadNetlistFileClick( wxCommandEvent& event ) "sure you want to read the netlist?" ) ) ) return; - wxBusyCursor busy(); + wxBusyCursor busy; m_MessageWindow->Clear(); msg.Printf( _( "Reading netlist file \"%s\".\n" ), GetChars( netlistFileName ) ); diff --git a/pcbnew/gen_modules_placefile.cpp b/pcbnew/gen_modules_placefile.cpp index 0c17cc06d9..6d4301df6b 100644 --- a/pcbnew/gen_modules_placefile.cpp +++ b/pcbnew/gen_modules_placefile.cpp @@ -200,6 +200,15 @@ bool DIALOG_GEN_MODULE_POSITION::CreateFiles() bool singleFile = OneFileOnly(); int fullcount = 0; + // Count the footprints to place, do not yet create a file + int fpcount = m_parent->DoGenFootprintsPositionFile( wxEmptyString, UnitsMM(), + ForceAllSmd(), 2 ); + if( fpcount == 0) + { + wxMessageBox( _( "No modules for automated placement." ) ); + return false; + } + fn = m_parent->GetBoard()->GetFileName(); fn.SetPath( GetOutputDirectory() ); frontLayerName = brd->GetLayerName( LAYER_N_FRONT ); @@ -208,18 +217,19 @@ bool DIALOG_GEN_MODULE_POSITION::CreateFiles() // Create the the Front or Top side placement file, // or the single file int side = 1; + if( singleFile ) { side = 2; fn.SetName( fn.GetName() + wxT( "-" ) + wxT("all") ); } - else + else fn.SetName( fn.GetName() + wxT( "-" ) + frontLayerName ); fn.SetExt( FootprintPlaceFileExtension ); - int fpcount = m_parent->DoGenFootprintsPositionFile( fn.GetFullPath(), UnitsMM(), - ForceAllSmd(), side ); + fpcount = m_parent->DoGenFootprintsPositionFile( fn.GetFullPath(), UnitsMM(), + ForceAllSmd(), side ); if( fpcount < 0 ) { msg.Printf( _( "Unable to create <%s>" ), GetChars( fn.GetFullPath() ) ); @@ -228,12 +238,6 @@ bool DIALOG_GEN_MODULE_POSITION::CreateFiles() return false; } - if( fpcount == 0) - { - wxMessageBox( _( "No modules for automated placement." ) ); - return false; - } - if( singleFile ) msg.Printf( _( "Place file: <%s>\n" ), GetChars( fn.GetFullPath() ) ); else @@ -339,6 +343,8 @@ void PCB_EDIT_FRAME::GenFootprintsPositionFile( wxCommandEvent& event ) * aSide = 0 -> Back (bottom) side) * aSide = 1 -> Front (top) side) * aSide = 2 -> both sides + * if aFullFileName is empty, the file is not crated, only the + * count of footprints to place is returned * * The format is: * ### Module positions - created on 04/12/2012 15:24:24 ### @@ -405,6 +411,9 @@ int PCB_EDIT_FRAME::DoGenFootprintsPositionFile( const wxString& aFullFileName, moduleCount++; } + if( aFullFileName.IsEmpty() ) + return moduleCount; + FILE * file = wxFopen( aFullFileName, wxT( "wt" ) ); if( file == NULL ) return -1; diff --git a/pcbnew/pcad2kicadpcb_plugin/pcb_arc.cpp b/pcbnew/pcad2kicadpcb_plugin/pcb_arc.cpp index f69f81534d..0cac7b3db2 100644 --- a/pcbnew/pcad2kicadpcb_plugin/pcb_arc.cpp +++ b/pcbnew/pcad2kicadpcb_plugin/pcb_arc.cpp @@ -60,8 +60,8 @@ void PCB_ARC::Parse( XNODE* aNode, XNODE* lNode; double a = 0.0; int r = 0; - int endX; - int endY; + int endX = 0; + int endY = 0; m_PCadLayer = aLayer; m_KiCadLayer = GetKiCadLayer();