Intergrate wxAppProgressIndicator into wxGuage.

Update the progress bar of taskbar button if wxGuage has wxGA_PROGRESS style.

Author: Chaobin Zhang

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77631 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Bryan Petty
2014-09-10 14:56:29 +00:00
parent 04039e01ad
commit 95e8cf9dfb
8 changed files with 106 additions and 87 deletions

View File

@@ -33,8 +33,6 @@ enum
RestoreThumbnailClipBtn,
AddThumbBarButtonBtn,
RemoveThumbBarButtonBtn,
ShowProgressDialogBtn,
PulseProgressDialogBtn,
};
enum
@@ -121,8 +119,6 @@ private:
void OnAddThubmBarButton(wxCommandEvent& WXUNUSED(event));
void OnRemoveThubmBarButton(wxCommandEvent& WXUNUSED(event));
void OnThumbnailToolbarBtnClicked(wxCommandEvent& event);
void OnShowProgressDialog(wxCommandEvent& WXUNUSED(event));
void OnPulseProgressDialog(wxCommandEvent& WXUNUSED(event));
wxSlider *m_slider;
wxRadioBox *m_visibilityRadioBox;
@@ -286,16 +282,6 @@ MyFrame::MyFrame(const wxString& title)
ttbSizer->Add(addThumbBarButtonBtn, 1, wxEXPAND | wxALL, 2);
ttbSizer->Add(showThumbnailToolbarBtn, 1, wxEXPAND | wxALL, 2);
// wxAppProgressIndicator section.
wxStaticBoxSizer *indicatorSizer =
new wxStaticBoxSizer(wxVERTICAL, panel, wxT("wxAppProgressIndicator"));
wxButton *showProgressDialogBtn =
new wxButton(panel, ShowProgressDialogBtn, wxT("Show Progress dialog"));
wxButton *pulseProgressDialigBtn =
new wxButton(panel, PulseProgressDialogBtn, wxT("Pulse Progress dialog"));
indicatorSizer->Add(showProgressDialogBtn, 1, wxEXPAND | wxALL, 2);
indicatorSizer->Add(pulseProgressDialigBtn, 1, wxEXPAND | wxALL, 2);
gs->Add(spvSizer, 0, wxEXPAND);
gs->Add(m_visibilityRadioBox, 0, wxEXPAND);
gs->Add(sttSizer, 0, wxEXPAND);
@@ -303,7 +289,6 @@ MyFrame::MyFrame(const wxString& title)
gs->Add(soiSizer, 0, wxEXPAND);
gs->Add(stcSizer, 0, wxEXPAND);
gs->Add(ttbSizer, 0, wxEXPAND);
gs->Add(indicatorSizer, 0, wxEXPAND);
wxStaticText *text = new wxStaticText(
panel, wxID_ANY, wxT("Welcome to wxTaskBarButton sample"));
@@ -328,8 +313,6 @@ wxBEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_BUTTON(RestoreThumbnailClipBtn, MyFrame::OnSetOrRestoreThumbnailClip)
EVT_BUTTON(AddThumbBarButtonBtn, MyFrame::OnAddThubmBarButton)
EVT_BUTTON(RemoveThumbBarButtonBtn, MyFrame::OnRemoveThubmBarButton)
EVT_BUTTON(ShowProgressDialogBtn, MyFrame::OnShowProgressDialog)
EVT_BUTTON(PulseProgressDialogBtn, MyFrame::OnPulseProgressDialog)
EVT_BUTTON(ThumbnailToolbarBtn_0, MyFrame::OnThumbnailToolbarBtnClicked)
EVT_BUTTON(ThumbnailToolbarBtn_1, MyFrame::OnThumbnailToolbarBtnClicked)
EVT_BUTTON(ThumbnailToolbarBtn_2, MyFrame::OnThumbnailToolbarBtnClicked)
@@ -447,43 +430,3 @@ void MyFrame::OnThumbnailToolbarBtnClicked(wxCommandEvent& event)
{
wxLogMessage("Thumbnail Toolbar Button %d is clicked.", event.GetId());
}
void MyFrame::OnShowProgressDialog(wxCommandEvent& WXUNUSED(event))
{
const int PROGRESS_COUNT = 100;
wxProgressDialog dlg(
"Progress in progress",
"Please wait, starting...",
PROGRESS_COUNT,
NULL,
wxPD_AUTO_HIDE
);
wxAppProgressIndicator indicator(this, PROGRESS_COUNT);
for ( int i = 0; i <= PROGRESS_COUNT; i++ )
{
if ( !dlg.Update(i) )
break;
indicator.Update(i);
wxMilliSleep(50);
}
}
void MyFrame::OnPulseProgressDialog(wxCommandEvent& WXUNUSED(event))
{
const int PROGRESS_COUNT = 100;
wxProgressDialog dlg(
"Progress in progress",
"Please wait, starting...",
PROGRESS_COUNT,
NULL,
wxPD_AUTO_HIDE
);
wxAppProgressIndicator indicator(this, PROGRESS_COUNT);
for ( int i = 0; i <= PROGRESS_COUNT; i++ )
{
if ( !dlg.Pulse() )
break;
indicator.Pulse();
wxMilliSleep(50);
}
}

View File

@@ -121,7 +121,8 @@ protected:
// the checkboxes for styles
wxCheckBox *m_chkVert,
*m_chkSmooth;
*m_chkSmooth,
*m_chkProgress;
// the gauge itself and the sizer it is in
wxGauge *m_gauge;
@@ -186,7 +187,8 @@ GaugeWidgetsPage::GaugeWidgetsPage(WidgetsBookCtrl *book,
m_timer = (wxTimer *)NULL;
m_chkVert =
m_chkSmooth = (wxCheckBox *)NULL;
m_chkSmooth =
m_chkProgress = (wxCheckBox *)NULL;
m_gauge = (wxGauge *)NULL;
m_sizerGauge = (wxSizer *)NULL;
@@ -203,6 +205,7 @@ void GaugeWidgetsPage::CreateContent()
m_chkVert = CreateCheckBoxAndAddToSizer(sizerLeft, wxT("&Vertical"));
m_chkSmooth = CreateCheckBoxAndAddToSizer(sizerLeft, wxT("&Smooth"));
m_chkProgress = CreateCheckBoxAndAddToSizer(sizerLeft, wxT("&Progress"));
sizerLeft->Add(5, 5, 0, wxGROW | wxALL, 5); // spacer
@@ -275,6 +278,7 @@ void GaugeWidgetsPage::Reset()
{
m_chkVert->SetValue(false);
m_chkSmooth->SetValue(false);
m_chkProgress->SetValue(false);
}
void GaugeWidgetsPage::CreateGauge()
@@ -289,6 +293,11 @@ void GaugeWidgetsPage::CreateGauge()
if ( m_chkSmooth->GetValue() )
flags |= wxGA_SMOOTH;
#if wxUSE_TASKBARBUTTON
if ( m_chkProgress->GetValue() )
flags |= wxGA_PROGRESS;
#endif
int val = 0;
if ( m_gauge )
{
@@ -431,7 +440,8 @@ void GaugeWidgetsPage::OnUpdateUIRangeButton(wxUpdateUIEvent& event)
void GaugeWidgetsPage::OnUpdateUIResetButton(wxUpdateUIEvent& event)
{
event.Enable( m_chkVert->GetValue() || m_chkSmooth->GetValue() );
event.Enable( m_chkVert->GetValue() || m_chkSmooth->GetValue() ||
m_chkProgress->GetValue() );
}
void GaugeWidgetsPage::OnCheckOrRadioBox(wxCommandEvent& WXUNUSED(event))