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:
@@ -1070,33 +1070,7 @@ void MyFrame::OnExit(wxCommandEvent& WXUNUSED(event) )
|
|||||||
|
|
||||||
void MyFrame::ShowProgress( wxCommandEvent& WXUNUSED(event) )
|
void MyFrame::ShowProgress( wxCommandEvent& WXUNUSED(event) )
|
||||||
{
|
{
|
||||||
#if wxUSE_STOPWATCH && wxUSE_LONGLONG
|
static const int max = 100;
|
||||||
// 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
|
|
||||||
|
|
||||||
wxProgressDialog dialog(_T("Progress dialog example"),
|
wxProgressDialog dialog(_T("Progress dialog example"),
|
||||||
_T("An informative message"),
|
_T("An informative message"),
|
||||||
@@ -1109,79 +1083,47 @@ void MyFrame::ShowProgress( wxCommandEvent& WXUNUSED(event) )
|
|||||||
wxPD_ELAPSED_TIME |
|
wxPD_ELAPSED_TIME |
|
||||||
wxPD_ESTIMATED_TIME |
|
wxPD_ESTIMATED_TIME |
|
||||||
wxPD_REMAINING_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 cont = true;
|
||||||
bool skip = false;
|
for ( int i = 0; i <= max; i++ )
|
||||||
// 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 )
|
|
||||||
{
|
{
|
||||||
#if wxUSE_STOPWATCH && wxUSE_LONGLONG
|
wxMilliSleep(200);
|
||||||
// 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
|
|
||||||
|
|
||||||
wxString msg;
|
wxString msg;
|
||||||
|
|
||||||
// test both behaviours of wxProgressDialog:
|
// test both modes of wxProgressDialog behaviour: start in
|
||||||
// determinate mode for first 33% and last 33% of the time
|
// indeterminate mode but switch to the determinate one later
|
||||||
// indeterminate mode from 33% to 66% of the progress
|
const bool determinate = i > max/2;
|
||||||
const int firstpart = max /3,
|
|
||||||
secondpart = 2 * max /3;
|
|
||||||
bool determinate = i < firstpart || i > secondpart;
|
|
||||||
bool indeterminate = !determinate;
|
|
||||||
|
|
||||||
if ( i == max )
|
if ( i == max )
|
||||||
{
|
{
|
||||||
msg = _T("That's all, folks!");
|
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");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// will be set to true if "Skip" button was pressed
|
||||||
|
bool skip = false;
|
||||||
if ( determinate )
|
if ( determinate )
|
||||||
{
|
{
|
||||||
#if wxUSE_STOPWATCH && wxUSE_LONGLONG
|
|
||||||
if ( (i % (max/100)) == 0 ) // // only 100 updates, this makes it much faster
|
|
||||||
{
|
|
||||||
cont = dialog.Update(i, msg, &skip);
|
cont = dialog.Update(i, msg, &skip);
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
cont = dialog.Update(i, msg, &skip);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
#if wxUSE_STOPWATCH && wxUSE_LONGLONG
|
|
||||||
if ( (i % (max/100)) == 0 ) // // only 100 updates, this makes it much faster
|
|
||||||
{
|
|
||||||
cont = dialog.Pulse(msg, &skip);
|
cont = dialog.Pulse(msg, &skip);
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
cont = dialog.Pulse(msg, &skip);
|
// each skip will move progress about quarter forward
|
||||||
#endif
|
if ( skip )
|
||||||
}
|
i += max/4;
|
||||||
|
|
||||||
if ( !cont )
|
if ( !cont )
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user