test indeterminate wxGauge mode (part of patch 1551409)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42256 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
		| @@ -54,6 +54,7 @@ enum | |||||||
| { | { | ||||||
|     GaugePage_Reset = wxID_HIGHEST, |     GaugePage_Reset = wxID_HIGHEST, | ||||||
|     GaugePage_Progress, |     GaugePage_Progress, | ||||||
|  |     GaugePage_IndeterminateProgress, | ||||||
|     GaugePage_Clear, |     GaugePage_Clear, | ||||||
|     GaugePage_SetValue, |     GaugePage_SetValue, | ||||||
|     GaugePage_SetRange, |     GaugePage_SetRange, | ||||||
| @@ -61,6 +62,7 @@ enum | |||||||
|     GaugePage_ValueText, |     GaugePage_ValueText, | ||||||
|     GaugePage_RangeText, |     GaugePage_RangeText, | ||||||
|     GaugePage_Timer, |     GaugePage_Timer, | ||||||
|  |     GaugePage_IndeterminateTimer, | ||||||
|     GaugePage_Gauge |     GaugePage_Gauge | ||||||
| }; | }; | ||||||
|  |  | ||||||
| @@ -84,6 +86,7 @@ protected: | |||||||
|     // event handlers |     // event handlers | ||||||
|     void OnButtonReset(wxCommandEvent& event); |     void OnButtonReset(wxCommandEvent& event); | ||||||
|     void OnButtonProgress(wxCommandEvent& event); |     void OnButtonProgress(wxCommandEvent& event); | ||||||
|  |     void OnButtonIndeterminateProgress(wxCommandEvent& event); | ||||||
|     void OnButtonClear(wxCommandEvent& event); |     void OnButtonClear(wxCommandEvent& event); | ||||||
|     void OnButtonSetValue(wxCommandEvent& event); |     void OnButtonSetValue(wxCommandEvent& event); | ||||||
|     void OnButtonSetRange(wxCommandEvent& event); |     void OnButtonSetRange(wxCommandEvent& event); | ||||||
| @@ -97,6 +100,7 @@ protected: | |||||||
|     void OnUpdateUICurValueText(wxUpdateUIEvent& event); |     void OnUpdateUICurValueText(wxUpdateUIEvent& event); | ||||||
|  |  | ||||||
|     void OnProgressTimer(wxTimerEvent& event); |     void OnProgressTimer(wxTimerEvent& event); | ||||||
|  |     void OnIndeterminateProgressTimer(wxTimerEvent& event); | ||||||
|  |  | ||||||
|     // reset the gauge parameters |     // reset the gauge parameters | ||||||
|     void Reset(); |     void Reset(); | ||||||
| @@ -104,8 +108,11 @@ protected: | |||||||
|     // (re)create the gauge |     // (re)create the gauge | ||||||
|     void CreateGauge(); |     void CreateGauge(); | ||||||
|  |  | ||||||
|  |     // start progress timer | ||||||
|  |     void StartTimer(wxButton*); | ||||||
|  |  | ||||||
|     // stop the progress timer |     // stop the progress timer | ||||||
|     void StopTimer(); |     void StopTimer(wxButton*); | ||||||
|  |  | ||||||
|     // the gauge range |     // the gauge range | ||||||
|     unsigned long m_range; |     unsigned long m_range; | ||||||
| @@ -115,8 +122,7 @@ protected: | |||||||
|  |  | ||||||
|     // the checkboxes for styles |     // the checkboxes for styles | ||||||
|     wxCheckBox *m_chkVert, |     wxCheckBox *m_chkVert, | ||||||
|                *m_chkSmooth, |                *m_chkSmooth; | ||||||
|                *m_chkIndeterminate; |  | ||||||
|  |  | ||||||
|     // the gauge itself and the sizer it is in |     // the gauge itself and the sizer it is in | ||||||
|     wxGauge *m_gauge; |     wxGauge *m_gauge; | ||||||
| @@ -141,6 +147,7 @@ private: | |||||||
| BEGIN_EVENT_TABLE(GaugeWidgetsPage, WidgetsPage) | BEGIN_EVENT_TABLE(GaugeWidgetsPage, WidgetsPage) | ||||||
|     EVT_BUTTON(GaugePage_Reset, GaugeWidgetsPage::OnButtonReset) |     EVT_BUTTON(GaugePage_Reset, GaugeWidgetsPage::OnButtonReset) | ||||||
|     EVT_BUTTON(GaugePage_Progress, GaugeWidgetsPage::OnButtonProgress) |     EVT_BUTTON(GaugePage_Progress, GaugeWidgetsPage::OnButtonProgress) | ||||||
|  |     EVT_BUTTON(GaugePage_IndeterminateProgress, GaugeWidgetsPage::OnButtonIndeterminateProgress) | ||||||
|     EVT_BUTTON(GaugePage_Clear, GaugeWidgetsPage::OnButtonClear) |     EVT_BUTTON(GaugePage_Clear, GaugeWidgetsPage::OnButtonClear) | ||||||
|     EVT_BUTTON(GaugePage_SetValue, GaugeWidgetsPage::OnButtonSetValue) |     EVT_BUTTON(GaugePage_SetValue, GaugeWidgetsPage::OnButtonSetValue) | ||||||
|     EVT_BUTTON(GaugePage_SetRange, GaugeWidgetsPage::OnButtonSetRange) |     EVT_BUTTON(GaugePage_SetRange, GaugeWidgetsPage::OnButtonSetRange) | ||||||
| @@ -155,6 +162,7 @@ BEGIN_EVENT_TABLE(GaugeWidgetsPage, WidgetsPage) | |||||||
|     EVT_RADIOBOX(wxID_ANY, GaugeWidgetsPage::OnCheckOrRadioBox) |     EVT_RADIOBOX(wxID_ANY, GaugeWidgetsPage::OnCheckOrRadioBox) | ||||||
|  |  | ||||||
|     EVT_TIMER(GaugePage_Timer, GaugeWidgetsPage::OnProgressTimer) |     EVT_TIMER(GaugePage_Timer, GaugeWidgetsPage::OnProgressTimer) | ||||||
|  |     EVT_TIMER(GaugePage_IndeterminateTimer, GaugeWidgetsPage::OnIndeterminateProgressTimer) | ||||||
| END_EVENT_TABLE() | END_EVENT_TABLE() | ||||||
|  |  | ||||||
| // ============================================================================ | // ============================================================================ | ||||||
| @@ -179,8 +187,7 @@ GaugeWidgetsPage::GaugeWidgetsPage(WidgetsBookCtrl *book, | |||||||
|     m_timer = (wxTimer *)NULL; |     m_timer = (wxTimer *)NULL; | ||||||
|  |  | ||||||
|     m_chkVert = |     m_chkVert = | ||||||
|     m_chkSmooth = |     m_chkSmooth = (wxCheckBox *)NULL; | ||||||
|     m_chkIndeterminate = (wxCheckBox *)NULL; |  | ||||||
|  |  | ||||||
|     m_gauge = (wxGauge *)NULL; |     m_gauge = (wxGauge *)NULL; | ||||||
|     m_sizerGauge = (wxSizer *)NULL; |     m_sizerGauge = (wxSizer *)NULL; | ||||||
| @@ -197,7 +204,6 @@ void GaugeWidgetsPage::CreateContent() | |||||||
|  |  | ||||||
|     m_chkVert = CreateCheckBoxAndAddToSizer(sizerLeft, _T("&Vertical")); |     m_chkVert = CreateCheckBoxAndAddToSizer(sizerLeft, _T("&Vertical")); | ||||||
|     m_chkSmooth = CreateCheckBoxAndAddToSizer(sizerLeft, _T("&Smooth")); |     m_chkSmooth = CreateCheckBoxAndAddToSizer(sizerLeft, _T("&Smooth")); | ||||||
|     m_chkIndeterminate = CreateCheckBoxAndAddToSizer(sizerLeft, _T("&Indeterminate")); |  | ||||||
|  |  | ||||||
|     sizerLeft->Add(5, 5, 0, wxGROW | wxALL, 5); // spacer |     sizerLeft->Add(5, 5, 0, wxGROW | wxALL, 5); // spacer | ||||||
|  |  | ||||||
| @@ -233,6 +239,9 @@ void GaugeWidgetsPage::CreateContent() | |||||||
|     btn = new wxButton(this, GaugePage_Progress, _T("Simulate &progress")); |     btn = new wxButton(this, GaugePage_Progress, _T("Simulate &progress")); | ||||||
|     sizerMiddle->Add(btn, 0, wxALL | wxGROW, 5); |     sizerMiddle->Add(btn, 0, wxALL | wxGROW, 5); | ||||||
|  |  | ||||||
|  |     btn = new wxButton(this, GaugePage_IndeterminateProgress, _T("Simulate undeterminate job")); | ||||||
|  |     sizerMiddle->Add(btn, 0, wxALL | wxGROW, 5); | ||||||
|  |  | ||||||
|     btn = new wxButton(this, GaugePage_Clear, _T("&Clear")); |     btn = new wxButton(this, GaugePage_Clear, _T("&Clear")); | ||||||
|     sizerMiddle->Add(btn, 0, wxALL | wxGROW, 5); |     sizerMiddle->Add(btn, 0, wxALL | wxGROW, 5); | ||||||
|  |  | ||||||
| @@ -269,7 +278,6 @@ void GaugeWidgetsPage::Reset() | |||||||
| { | { | ||||||
|     m_chkVert->SetValue(false); |     m_chkVert->SetValue(false); | ||||||
|     m_chkSmooth->SetValue(false); |     m_chkSmooth->SetValue(false); | ||||||
|     m_chkIndeterminate->SetValue(false); |  | ||||||
| } | } | ||||||
|  |  | ||||||
| void GaugeWidgetsPage::CreateGauge() | void GaugeWidgetsPage::CreateGauge() | ||||||
| @@ -298,10 +306,6 @@ void GaugeWidgetsPage::CreateGauge() | |||||||
|                           flags); |                           flags); | ||||||
|     m_gauge->SetValue(val); |     m_gauge->SetValue(val); | ||||||
|      |      | ||||||
|     if ( m_chkIndeterminate->GetValue() ){ |  | ||||||
|         m_gauge->Pulse(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     if ( flags & wxGA_VERTICAL ) |     if ( flags & wxGA_VERTICAL ) | ||||||
|         m_sizerGauge->Add(m_gauge, 0, wxGROW | wxALL, 5); |         m_sizerGauge->Add(m_gauge, 0, wxGROW | wxALL, 5); | ||||||
|     else |     else | ||||||
| @@ -310,6 +314,46 @@ void GaugeWidgetsPage::CreateGauge() | |||||||
|     m_sizerGauge->Layout(); |     m_sizerGauge->Layout(); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | void GaugeWidgetsPage::StartTimer(wxButton *clicked) | ||||||
|  | { | ||||||
|  |     static const int INTERVAL = 300; | ||||||
|  |  | ||||||
|  |     wxLogMessage(_T("Launched progress timer (interval = %d ms)"), INTERVAL); | ||||||
|  |  | ||||||
|  |     m_timer = new wxTimer(this, | ||||||
|  |         clicked->GetId() == GaugePage_Progress ? GaugePage_Timer : GaugePage_IndeterminateTimer); | ||||||
|  |     m_timer->Start(INTERVAL); | ||||||
|  |  | ||||||
|  |     clicked->SetLabel(_T("&Stop timer")); | ||||||
|  |  | ||||||
|  |     if (clicked->GetId() == GaugePage_Progress) | ||||||
|  |         FindWindow(GaugePage_IndeterminateProgress)->Disable(); | ||||||
|  |     else | ||||||
|  |         FindWindow(GaugePage_Progress)->Disable(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void GaugeWidgetsPage::StopTimer(wxButton *clicked) | ||||||
|  | { | ||||||
|  |     wxCHECK_RET( m_timer, _T("shouldn't be called") ); | ||||||
|  |  | ||||||
|  |     m_timer->Stop(); | ||||||
|  |     delete m_timer; | ||||||
|  |     m_timer = NULL; | ||||||
|  |  | ||||||
|  |     if (clicked->GetId() == GaugePage_Progress) | ||||||
|  |     { | ||||||
|  |         clicked->SetLabel(_T("Simulate &progress")); | ||||||
|  |         FindWindow(GaugePage_IndeterminateProgress)->Enable(); | ||||||
|  |     } | ||||||
|  |     else | ||||||
|  |     { | ||||||
|  |         clicked->SetLabel(_T("Simulate undeterminate job")); | ||||||
|  |         FindWindow(GaugePage_Progress)->Enable(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     wxLogMessage(_T("Progress finished.")); | ||||||
|  | } | ||||||
|  |  | ||||||
| // ---------------------------------------------------------------------------- | // ---------------------------------------------------------------------------- | ||||||
| // event handlers | // event handlers | ||||||
| // ---------------------------------------------------------------------------- | // ---------------------------------------------------------------------------- | ||||||
| @@ -323,21 +367,29 @@ void GaugeWidgetsPage::OnButtonReset(wxCommandEvent& WXUNUSED(event)) | |||||||
|  |  | ||||||
| void GaugeWidgetsPage::OnButtonProgress(wxCommandEvent& event) | void GaugeWidgetsPage::OnButtonProgress(wxCommandEvent& event) | ||||||
| { | { | ||||||
|  |     wxButton *b = (wxButton *)event.GetEventObject(); | ||||||
|     if ( !m_timer ) |     if ( !m_timer ) | ||||||
|     { |     { | ||||||
|         static const int INTERVAL = 300; |         StartTimer(b); | ||||||
|  |  | ||||||
|         wxLogMessage(_T("Launched progress timer (interval = %d ms)"), INTERVAL); |  | ||||||
|  |  | ||||||
|         m_timer = new wxTimer(this, GaugePage_Timer); |  | ||||||
|         m_timer->Start(INTERVAL); |  | ||||||
|  |  | ||||||
|         wxButton *btn = (wxButton *)event.GetEventObject(); |  | ||||||
|         btn->SetLabel(_T("&Stop timer")); |  | ||||||
|     } |     } | ||||||
|     else // stop the running timer |     else // stop the running timer | ||||||
|     { |     { | ||||||
|         StopTimer(); |         StopTimer(b); | ||||||
|  |  | ||||||
|  |         wxLogMessage(_T("Stopped the timer.")); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void GaugeWidgetsPage::OnButtonIndeterminateProgress(wxCommandEvent& event) | ||||||
|  | { | ||||||
|  |     wxButton *b = (wxButton *)event.GetEventObject(); | ||||||
|  |     if ( !m_timer ) | ||||||
|  |     { | ||||||
|  |         StartTimer(b); | ||||||
|  |     } | ||||||
|  |     else // stop the running timer | ||||||
|  |     { | ||||||
|  |         StopTimer(b); | ||||||
|  |  | ||||||
|         wxLogMessage(_T("Stopped the timer.")); |         wxLogMessage(_T("Stopped the timer.")); | ||||||
|     } |     } | ||||||
| @@ -356,7 +408,6 @@ void GaugeWidgetsPage::OnButtonSetRange(wxCommandEvent& WXUNUSED(event)) | |||||||
|  |  | ||||||
|     m_range = val; |     m_range = val; | ||||||
|     m_gauge->SetRange(val); |     m_gauge->SetRange(val); | ||||||
|     m_chkIndeterminate->SetValue(0); |  | ||||||
| } | } | ||||||
|  |  | ||||||
| void GaugeWidgetsPage::OnButtonSetValue(wxCommandEvent& WXUNUSED(event)) | void GaugeWidgetsPage::OnButtonSetValue(wxCommandEvent& WXUNUSED(event)) | ||||||
| @@ -366,7 +417,6 @@ void GaugeWidgetsPage::OnButtonSetValue(wxCommandEvent& WXUNUSED(event)) | |||||||
|         return; |         return; | ||||||
|  |  | ||||||
|     m_gauge->SetValue(val); |     m_gauge->SetValue(val); | ||||||
|     m_chkIndeterminate->SetValue(0); |  | ||||||
| } | } | ||||||
|  |  | ||||||
| void GaugeWidgetsPage::OnUpdateUIValueButton(wxUpdateUIEvent& event) | void GaugeWidgetsPage::OnUpdateUIValueButton(wxUpdateUIEvent& event) | ||||||
| @@ -400,30 +450,22 @@ void GaugeWidgetsPage::OnProgressTimer(wxTimerEvent& WXUNUSED(event)) | |||||||
|     } |     } | ||||||
|     else // reached the end |     else // reached the end | ||||||
|     { |     { | ||||||
|         StopTimer(); |         wxButton *btn = (wxButton *)FindWindow(GaugePage_Progress); | ||||||
|  |         wxCHECK_RET( btn, _T("no progress button?") ); | ||||||
|  |  | ||||||
|  |         StopTimer(btn); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | void GaugeWidgetsPage::OnIndeterminateProgressTimer(wxTimerEvent& WXUNUSED(event)) | ||||||
|  | { | ||||||
|  |     m_gauge->Pulse(); | ||||||
|  | } | ||||||
|  |  | ||||||
| void GaugeWidgetsPage::OnUpdateUICurValueText(wxUpdateUIEvent& event) | void GaugeWidgetsPage::OnUpdateUICurValueText(wxUpdateUIEvent& event) | ||||||
| { | { | ||||||
|     event.SetText( wxString::Format(_T("%d"), m_gauge->GetValue())); |     event.SetText( wxString::Format(_T("%d"), m_gauge->GetValue())); | ||||||
| } | } | ||||||
|  |  | ||||||
| void GaugeWidgetsPage::StopTimer() |  | ||||||
| { |  | ||||||
|     wxCHECK_RET( m_timer, _T("shouldn't be called") ); |  | ||||||
|  |  | ||||||
|     m_timer->Stop(); |  | ||||||
|     delete m_timer; |  | ||||||
|     m_timer = NULL; |  | ||||||
|  |  | ||||||
|     wxButton *btn = (wxButton *)FindWindow(GaugePage_Progress); |  | ||||||
|     wxCHECK_RET( btn, _T("no progress button?") ); |  | ||||||
|  |  | ||||||
|     btn->SetLabel(_T("Simulate &progress")); |  | ||||||
|  |  | ||||||
|     wxLogMessage(_T("Progress finished.")); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| #endif | #endif | ||||||
|     // wxUSE_GAUGE |     // wxUSE_GAUGE | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user