Applied wxGauge:Pulse() patch.
[ 1551409 ] Support for indeterminate mode gauges git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41089 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -40,7 +40,7 @@
|
||||
#include "wx/settings.h"
|
||||
#endif
|
||||
|
||||
#include "wx/generic/progdlgg.h"
|
||||
#include "wx/progdlg.h"
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// macros
|
||||
@@ -308,7 +308,7 @@ wxStaticText *wxProgressDialog::CreateLabel(const wxString& text,
|
||||
locsizer->Add(dummy, 1, wxALIGN_LEFT);
|
||||
locsizer->Add(label, 1, wxALIGN_LEFT);
|
||||
sizer->Add(locsizer, 0, wxALIGN_LEFT | wxTOP | wxLEFT, LAYOUT_MARGIN);
|
||||
#elif defined(__WXMSW__) || defined(__WXPM__) || defined(__WXMAC__)
|
||||
#elif defined(__WXMSW__) || defined(__WXPM__) || defined(__WXMAC__) || defined(__WXGTK20__)
|
||||
// label and time centered in one row
|
||||
locsizer->Add(dummy, 1, wxLARGESMALL(wxALIGN_RIGHT,wxALIGN_LEFT));
|
||||
locsizer->Add(label, 1, wxALIGN_LEFT | wxLEFT, LAYOUT_MARGIN);
|
||||
@@ -345,12 +345,7 @@ wxProgressDialog::Update(int value, const wxString& newmsg, bool *skip)
|
||||
m_gauge->SetValue(value == m_maximum ? value : value + 1);
|
||||
}
|
||||
|
||||
if ( !newmsg.empty() && newmsg != m_msg->GetLabel() )
|
||||
{
|
||||
m_msg->SetLabel(newmsg);
|
||||
|
||||
wxYieldIfNeeded() ;
|
||||
}
|
||||
UpdateMessage(newmsg);
|
||||
|
||||
if ( (m_elapsed || m_remaining || m_estimated) && (value != 0) )
|
||||
{
|
||||
@@ -463,6 +458,39 @@ wxProgressDialog::Update(int value, const wxString& newmsg, bool *skip)
|
||||
return m_state != Canceled;
|
||||
}
|
||||
|
||||
bool
|
||||
wxProgressDialog::UpdatePulse(const wxString& newmsg, bool *skip)
|
||||
{
|
||||
wxASSERT_MSG( m_gauge, wxT("cannot update non existent dialog") );
|
||||
|
||||
// show a bit of progress
|
||||
m_gauge->Pulse();
|
||||
|
||||
UpdateMessage(newmsg);
|
||||
|
||||
if (m_elapsed || m_remaining || m_estimated)
|
||||
{
|
||||
unsigned long elapsed = wxGetCurrentTime() - m_timeStart;
|
||||
|
||||
SetTimeLabel(elapsed, m_elapsed);
|
||||
SetTimeLabel((unsigned long)-1, m_estimated);
|
||||
SetTimeLabel((unsigned long)-1, m_remaining);
|
||||
}
|
||||
|
||||
// we have to yield because not only we want to update the display but
|
||||
// also to process the clicks on the cancel and skip buttons
|
||||
wxYieldIfNeeded() ;
|
||||
|
||||
if ( (m_skip) && (skip != NULL) && (*skip == false) )
|
||||
{
|
||||
*skip = true;
|
||||
m_skip = false;
|
||||
EnableSkip();
|
||||
}
|
||||
|
||||
return m_state != Canceled;
|
||||
}
|
||||
|
||||
void wxProgressDialog::Resume()
|
||||
{
|
||||
m_state = Continue;
|
||||
@@ -575,10 +603,18 @@ static void SetTimeLabel(unsigned long val, wxStaticText *label)
|
||||
if ( label )
|
||||
{
|
||||
wxString s;
|
||||
|
||||
if (val != (unsigned long)-1)
|
||||
{
|
||||
unsigned long hours = val / 3600;
|
||||
unsigned long minutes = (val % 3600) / 60;
|
||||
unsigned long seconds = val % 60;
|
||||
s.Printf(wxT("%lu:%02lu:%02lu"), hours, minutes, seconds);
|
||||
}
|
||||
else
|
||||
{
|
||||
s = _("Unknown");
|
||||
}
|
||||
|
||||
if ( s != label->GetLabel() )
|
||||
label->SetLabel(s);
|
||||
@@ -633,4 +669,14 @@ void wxProgressDialog::EnableClose()
|
||||
}
|
||||
}
|
||||
|
||||
void wxProgressDialog::UpdateMessage(const wxString &newmsg)
|
||||
{
|
||||
if ( !newmsg.empty() && newmsg != m_msg->GetLabel() )
|
||||
{
|
||||
m_msg->SetLabel(newmsg);
|
||||
|
||||
wxYieldIfNeeded() ;
|
||||
}
|
||||
}
|
||||
|
||||
#endif // wxUSE_PROGRESSDLG
|
||||
|
Reference in New Issue
Block a user