reverted change which made the progress dialog more realistic but also made the code vastly more complex (rev 1.116), it's not really needed otherwise than to test the patch it was bundled with; simplified the test code for wxPD_SKIP (rev 1.119); increased the progress counter to see the indeterminate mode marker wrap around
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42255 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
2203a18560
commit
b2c782f2b4
@ -1070,33 +1070,7 @@ void MyFrame::OnExit(wxCommandEvent& WXUNUSED(event) )
|
||||
|
||||
void MyFrame::ShowProgress( wxCommandEvent& WXUNUSED(event) )
|
||||
{
|
||||
#if wxUSE_STOPWATCH && wxUSE_LONGLONG
|
||||
// check the performance
|
||||
int countrandomnumbers = 0, count = 0;
|
||||
wxTimeSpan tsTest(0,0,0,250);
|
||||
wxDateTime DT2, DT1 = wxDateTime::UNow();
|
||||
srand(0);
|
||||
while(1)
|
||||
{
|
||||
rand();
|
||||
++countrandomnumbers;
|
||||
if ( countrandomnumbers == 1000 )
|
||||
{
|
||||
srand(0);
|
||||
countrandomnumbers = 0;
|
||||
++count;
|
||||
DT2 = wxDateTime::UNow();
|
||||
wxTimeSpan ts = DT2.Subtract( DT1 );
|
||||
if ( ts.IsLongerThan( tsTest ) )
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
const int max = 40 * count;
|
||||
#else
|
||||
static const int max = 10;
|
||||
#endif // wxUSE_STOPWATCH && wxUSE_LONGLONG
|
||||
static const int max = 100;
|
||||
|
||||
wxProgressDialog dialog(_T("Progress dialog example"),
|
||||
_T("An informative message"),
|
||||
@ -1109,80 +1083,48 @@ void MyFrame::ShowProgress( wxCommandEvent& WXUNUSED(event) )
|
||||
wxPD_ELAPSED_TIME |
|
||||
wxPD_ESTIMATED_TIME |
|
||||
wxPD_REMAINING_TIME
|
||||
//wxPD_SMOOTH - makes indeterminate mode bar on WinXP very small
|
||||
| wxPD_SMOOTH // - makes indeterminate mode bar on WinXP very small
|
||||
);
|
||||
|
||||
bool cont = true;
|
||||
bool skip = false;
|
||||
// each skip will move progress about quarter forward
|
||||
for ( int i = 0; i <= max; i = wxMin(i+(skip?int(max/4):1), max+1), skip = false )
|
||||
for ( int i = 0; i <= max; i++ )
|
||||
{
|
||||
#if wxUSE_STOPWATCH && wxUSE_LONGLONG
|
||||
// do (almost) the same operations as we did for the performance test
|
||||
srand(0);
|
||||
for ( int j = 0; j < 1000; j++ )
|
||||
{
|
||||
rand();
|
||||
if ( j == 999 )
|
||||
{
|
||||
DT2 = wxDateTime::UNow();
|
||||
wxTimeSpan ts = DT2.Subtract( DT1 );
|
||||
if ( ts.IsLongerThan( tsTest ) )
|
||||
{
|
||||
// nothing to do
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
wxSleep(1);
|
||||
#endif
|
||||
wxMilliSleep(200);
|
||||
|
||||
wxString msg;
|
||||
|
||||
// test both behaviours of wxProgressDialog:
|
||||
// determinate mode for first 33% and last 33% of the time
|
||||
// indeterminate mode from 33% to 66% of the progress
|
||||
const int firstpart = max /3,
|
||||
secondpart = 2 * max /3;
|
||||
bool determinate = i < firstpart || i > secondpart;
|
||||
bool indeterminate = !determinate;
|
||||
// test both modes of wxProgressDialog behaviour: start in
|
||||
// indeterminate mode but switch to the determinate one later
|
||||
const bool determinate = i > max/2;
|
||||
|
||||
if ( i == max )
|
||||
{
|
||||
msg = _T("That's all, folks!");
|
||||
}
|
||||
else if ( indeterminate )
|
||||
else if ( !determinate )
|
||||
{
|
||||
msg = _T("Now test indeterminate mode");
|
||||
msg = _T("Testing indeterminate mode");
|
||||
}
|
||||
else if ( i > secondpart )
|
||||
else if ( determinate )
|
||||
{
|
||||
msg = _T("Back to determinate mode");
|
||||
msg = _T("Now in standard determinate mode");
|
||||
}
|
||||
|
||||
if (determinate)
|
||||
{
|
||||
#if wxUSE_STOPWATCH && wxUSE_LONGLONG
|
||||
if ( (i % (max/100)) == 0 ) // // only 100 updates, this makes it much faster
|
||||
// will be set to true if "Skip" button was pressed
|
||||
bool skip = false;
|
||||
if ( determinate )
|
||||
{
|
||||
cont = dialog.Update(i, msg, &skip);
|
||||
}
|
||||
#else
|
||||
cont = dialog.Update(i, msg, &skip);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
#if wxUSE_STOPWATCH && wxUSE_LONGLONG
|
||||
if ( (i % (max/100)) == 0 ) // // only 100 updates, this makes it much faster
|
||||
{
|
||||
cont = dialog.Pulse(msg, &skip);
|
||||
}
|
||||
#else
|
||||
cont = dialog.Pulse(msg, &skip);
|
||||
#endif
|
||||
}
|
||||
|
||||
// each skip will move progress about quarter forward
|
||||
if ( skip )
|
||||
i += max/4;
|
||||
|
||||
if ( !cont )
|
||||
{
|
||||
if ( wxMessageBox(_T("Do you really want to cancel?"),
|
||||
|
Loading…
Reference in New Issue
Block a user