From c86a65c941903570924fa4f91c2cc5d491fe9169 Mon Sep 17 00:00:00 2001 From: Marco Mattila Date: Mon, 28 Feb 2011 01:25:07 +0200 Subject: [PATCH] Add directory selection to module position and report output in pcbnew. --- pcbnew/gen_modules_placefile.cpp | 56 +++++++++++++++++++++++--------- 1 file changed, 41 insertions(+), 15 deletions(-) diff --git a/pcbnew/gen_modules_placefile.cpp b/pcbnew/gen_modules_placefile.cpp index b4da431a96..baed9e4b3b 100644 --- a/pcbnew/gen_modules_placefile.cpp +++ b/pcbnew/gen_modules_placefile.cpp @@ -134,12 +134,19 @@ void WinEDA_PcbFrame::GenModulesPosition( wxCommandEvent& event ) return; } - fnFront = GetScreen()->GetFileName(); - frontLayerName = GetBoard()->GetLayerName( LAYER_N_FRONT ); - fnFront.SetName( fnFront.GetName() + frontLayerName ); - fnFront.SetExt( wxT( "pos") ); + wxString boardFilePath = ( (wxFileName) GetScreen()->GetFileName()).GetPath(); + wxDirDialog dirDialog( this, _( "Select Output Directory" ), boardFilePath ); + if( dirDialog.ShowModal() == wxID_CANCEL ) + return; + + fnFront = GetScreen()->GetFileName(); + fnFront.SetPath( dirDialog.GetPath() ); + frontLayerName = GetBoard()->GetLayerName( LAYER_N_FRONT ); + fnFront.SetName( fnFront.GetName() + wxT( "_" ) + frontLayerName ); + fnFront.SetExt( wxT( "pos") ); fpFront = wxFopen( fnFront.GetFullPath(), wxT( "wt" ) ); + if( fpFront == 0 ) { msg = _( "Unable to create " ) + fnFront.GetFullPath(); @@ -150,10 +157,10 @@ void WinEDA_PcbFrame::GenModulesPosition( wxCommandEvent& event ) if( doBoardBack ) { fnBack = GetScreen()->GetFileName(); + fnBack.SetPath( dirDialog.GetPath() ); backLayerName = GetBoard()->GetLayerName( LAYER_N_BACK ); - fnBack.SetName( fnBack.GetName() + backLayerName ); + fnBack.SetName( fnBack.GetName() + wxT( "_" ) + backLayerName ); fnBack.SetExt( wxT( "pos" ) ); - fpBack = wxFopen( fnBack.GetFullPath(), wxT( "wt" ) ); if( fpBack == 0 ) @@ -169,7 +176,7 @@ void WinEDA_PcbFrame::GenModulesPosition( wxCommandEvent& event ) SetLocaleTo_C_standard( ); switchedLocale = true; - /* Display results */ + // Display results MsgPanel->EraseMsgBox(); Affiche_1_Parametre( this, 0, _( "Component side place file:" ), fnFront.GetFullPath(), BLUE ); @@ -181,7 +188,7 @@ void WinEDA_PcbFrame::GenModulesPosition( wxCommandEvent& event ) msg.Empty(); msg << moduleCount; Affiche_1_Parametre( this, 65, _( "Module count" ), msg, RED ); - /* Sort the list of modules by alphabetical order */ + // Sort the list of modules alphabetically Liste = (LIST_MOD*) MyZMalloc( moduleCount * sizeof(LIST_MOD) ); module = GetBoard()->m_Modules; @@ -201,21 +208,24 @@ void WinEDA_PcbFrame::GenModulesPosition( wxCommandEvent& event ) qsort( Liste, moduleCount, sizeof(LIST_MOD), ListeModCmp ); - /* Generation header file comments. */ + // Write file header sprintf( line, "### Module positions - created on %s ###\n", DateAndTime( Buff ) ); fputs( line, fpFront ); + if( doBoardBack ) fputs( line, fpBack ); Title = wxGetApp().GetAppName() + wxT( " " ) + GetBuildVersion(); sprintf( line, "### Printed by PcbNew version %s\n", CONV_TO_UTF8( Title ) ); fputs( line, fpFront ); + if( doBoardBack ) fputs( line, fpBack ); sprintf( line, "## Unit = inches, Angle = deg.\n" ); fputs( line, fpFront ); + if( doBoardBack ) fputs( line, fpBack ); @@ -270,20 +280,23 @@ void WinEDA_PcbFrame::GenModulesPosition( wxCommandEvent& event ) } } - /* Generate EOF. */ + // Write EOF fputs( "## End\n", fpFront ); if( doBoardBack ) fputs( "## End\n", fpBack ); - msg = frontLayerName + wxT( " File: " ) + fnFront.GetFullPath(); + msg = _( "Module position files created:" ); + msg.Append( wxT( "\n\n" ) + frontLayerName + wxT( ":\n" ) ); + msg.Append( fnFront.GetFullPath() ); if( doBoardBack ) - msg += wxT("\n\n") + backLayerName + wxT( " File: " ) + - fnBack.GetFullPath(); - - DisplayInfoMessage( this, msg ); + { + msg.Append( wxT( "\n\n" ) + backLayerName + wxT( ":\n" ) ); + msg.Append( fnBack.GetFullPath() ); + } + wxMessageBox( msg, _( "Module Position File" ), wxICON_INFORMATION ); exit: // the only safe way out of here, no returns please. @@ -320,10 +333,18 @@ void WinEDA_PcbFrame::GenModuleReport( wxCommandEvent& event ) File_Place_Offset = wxPoint( 0, 0 ); + wxString boardFilePath = ( (wxFileName) GetScreen()->GetFileName()).GetPath(); + wxDirDialog dirDialog( this, _( "Select Output Directory" ), boardFilePath ); + + if( dirDialog.ShowModal() == wxID_CANCEL ) + return; + fn = GetScreen()->GetFileName(); + fn.SetPath( dirDialog.GetPath() ); fn.SetExt( wxT( "rpt" ) ); rptfile = wxFopen( fn.GetFullPath(), wxT( "wt" ) ); + if( rptfile == NULL ) { msg = _( "Unable to create " ) + fn.GetFullPath(); @@ -467,6 +488,11 @@ void WinEDA_PcbFrame::GenModuleReport( wxCommandEvent& event ) fputs( "$EndDESCRIPTION\n", rptfile ); fclose( rptfile ); SetLocaleTo_Default( ); // revert to the current locale + + msg = _( "Module report file created:" ); + msg.Append( wxT( "\n" ) + fn.GetFullPath() ); + + wxMessageBox( msg, _( "Module Report" ), wxICON_INFORMATION ); }