Commit 08f3c56d authored by Marco Mattila's avatar Marco Mattila

Show progress dialog when filling all zones in pcbnew.

parent 858401d2
...@@ -168,11 +168,18 @@ public: ...@@ -168,11 +168,18 @@ public:
/** /**
* Function SetNetNameFromNetCode * Function SetNetNameFromNetCode
* Fin the nat name corresponding to the net code. * Find the net name corresponding to the net code.
* @return bool - true if net found, else false * @return bool - true if net found, else false
*/ */
bool SetNetNameFromNetCode( void ); bool SetNetNameFromNetCode( void );
/**
* Function GetNetName
* returns the net name.
* @return wxString - The net name.
*/
wxString GetNetName() const { return m_Netname; };
/** /**
* Function HitTest * Function HitTest
* tests if the given wxPoint is within the bounds of this object. * tests if the given wxPoint is within the bounds of this object.
......
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/ */
#include <wx/progdlg.h>
#include "fctsys.h" #include "fctsys.h"
#include "appl_wxstruct.h" #include "appl_wxstruct.h"
#include "common.h" #include "common.h"
...@@ -110,25 +111,14 @@ int WinEDA_PcbFrame::Fill_Zone( ZONE_CONTAINER* zone_container, bool verbose ) ...@@ -110,25 +111,14 @@ int WinEDA_PcbFrame::Fill_Zone( ZONE_CONTAINER* zone_container, bool verbose )
return -1; return -1;
} }
/* Shows the Net */ // Shows the net
g_Zone_Default_Setting.m_NetcodeSelection = zone_container->GetNet(); g_Zone_Default_Setting.m_NetcodeSelection = zone_container->GetNet();
msg = zone_container->GetNetName();
if( zone_container->GetNet() > 0 ) if( msg.IsEmpty() )
{ msg = wxT( "No net" );
NETINFO_ITEM* net = GetBoard()->FindNet( zone_container->GetNet() );
if( net == NULL )
{
if( verbose )
wxMessageBox( wxT( "Unable to find Net name" ) );
return -2;
}
else
msg = net->GetNetname();
}
else
msg = _( "No Net" );
Affiche_1_Parametre( this, 22, _( "NetName" ), msg, RED ); Affiche_1_Parametre( this, 22, _( "NetName" ), msg, RED );
wxBusyCursor dummy; // Shows an hourglass cursor (removed by its destructor) wxBusyCursor dummy; // Shows an hourglass cursor (removed by its destructor)
zone_container->m_FilledPolysList.clear(); zone_container->m_FilledPolysList.clear();
...@@ -141,10 +131,7 @@ int WinEDA_PcbFrame::Fill_Zone( ZONE_CONTAINER* zone_container, bool verbose ) ...@@ -141,10 +131,7 @@ int WinEDA_PcbFrame::Fill_Zone( ZONE_CONTAINER* zone_container, bool verbose )
} }
/************************************************************/
int WinEDA_PcbFrame::Fill_All_Zones( bool verbose ) int WinEDA_PcbFrame::Fill_All_Zones( bool verbose )
/************************************************************/
/** /**
* Function Fill_All_Zones * Function Fill_All_Zones
* Fill all zones on the board * Fill all zones on the board
...@@ -153,23 +140,43 @@ int WinEDA_PcbFrame::Fill_All_Zones( bool verbose ) ...@@ -153,23 +140,43 @@ int WinEDA_PcbFrame::Fill_All_Zones( bool verbose )
* @return error level (0 = no error) * @return error level (0 = no error)
*/ */
{ {
ZONE_CONTAINER* zone_container; int errorLevel = 0;
int error_level = 0; int areaCount = GetBoard()->GetAreaCount();
wxBusyCursor dummyCursor;
wxProgressDialog progressDialog( wxT( "Fill All Zones" ),
wxT( "Starting zone fill..." ),
areaCount+2, this,
wxPD_AUTO_HIDE | wxPD_APP_MODAL | wxPD_CAN_ABORT );
progressDialog.SetMinSize( wxSize( 400, 100 ) );
// Remove all zones : // Remove segment zones
GetBoard()->m_Zone.DeleteAll(); GetBoard()->m_Zone.DeleteAll();
for( int ii = 0; ii < GetBoard()->GetAreaCount(); ii++ ) int ii;
for( ii = 0; ii < areaCount; ii++ )
{ {
zone_container = GetBoard()->GetArea( ii ); ZONE_CONTAINER* zoneContainer = GetBoard()->GetArea( ii );
error_level = Fill_Zone( zone_container, verbose ); wxString str;
if( error_level && !verbose ) str.Printf( wxT( "Filling zone %d out of %d (net %s)..." ),
ii+1, areaCount, GetChars( zoneContainer->GetNetName() ) );
if( !progressDialog.Update( ii+1, str ) )
break;
errorLevel = Fill_Zone( zoneContainer, verbose );
if( errorLevel && !verbose )
break; break;
} }
progressDialog.Update( ii+2, wxT( "Updating ratsnest..." ) );
test_connexions( NULL ); test_connexions( NULL );
Tst_Ratsnest( NULL, 0 ); // Recalculate the active ratsnest, i.e. the unconnected links */
// Recalculate the active ratsnest, i.e. the unconnected links
Tst_Ratsnest( NULL, 0 );
DrawPanel->Refresh( true ); DrawPanel->Refresh( true );
return error_level;
return errorLevel;
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment