]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/widgets/gauge.cpp
replacing old core graphics with new graphics context implementation
[wxWidgets.git] / samples / widgets / gauge.cpp
index 4affd9ab33769dca7aaa11b07dd1ef5c1d88310e..3f80544e5f8b19014809bdb02b7d860cc20a9e45 100644 (file)
@@ -77,6 +77,9 @@ public:
     virtual wxControl *GetWidget() const { return m_gauge; }
     virtual void RecreateWidget() { CreateGauge(); }
 
+    // lazy creation of the content
+    virtual void CreateContent();
+
 protected:
     // event handlers
     void OnButtonReset(wxCommandEvent& event);
@@ -112,7 +115,8 @@ protected:
 
     // the checkboxes for styles
     wxCheckBox *m_chkVert,
-               *m_chkSmooth;
+               *m_chkSmooth,
+               *m_chkIndeterminate;
 
     // the gauge itself and the sizer it is in
     wxGauge *m_gauge;
@@ -167,21 +171,23 @@ IMPLEMENT_WIDGETS_PAGE(GaugeWidgetsPage, _T("Gauge"), FAMILY_CTRLS );
 
 GaugeWidgetsPage::GaugeWidgetsPage(WidgetsBookCtrl *book,
                                    wxImageList *imaglist)
-                 :WidgetsPage(book)
+                 :WidgetsPage(book, imaglist, gauge_xpm)
 {
-    imaglist->Add(wxBitmap(gauge_xpm));
-
     // init everything
     m_range = 100;
 
     m_timer = (wxTimer *)NULL;
 
     m_chkVert =
-    m_chkSmooth = (wxCheckBox *)NULL;
+    m_chkSmooth =
+    m_chkIndeterminate = (wxCheckBox *)NULL;
 
     m_gauge = (wxGauge *)NULL;
     m_sizerGauge = (wxSizer *)NULL;
+}
 
+void GaugeWidgetsPage::CreateContent()
+{
     wxSizer *sizerTop = new wxBoxSizer(wxHORIZONTAL);
 
     // left pane
@@ -191,6 +197,7 @@ GaugeWidgetsPage::GaugeWidgetsPage(WidgetsBookCtrl *book,
 
     m_chkVert = CreateCheckBoxAndAddToSizer(sizerLeft, _T("&Vertical"));
     m_chkSmooth = CreateCheckBoxAndAddToSizer(sizerLeft, _T("&Smooth"));
+    m_chkIndeterminate = CreateCheckBoxAndAddToSizer(sizerLeft, _T("&Indeterminate"));
 
     sizerLeft->Add(5, 5, 0, wxGROW | wxALL, 5); // spacer
 
@@ -262,6 +269,7 @@ void GaugeWidgetsPage::Reset()
 {
     m_chkVert->SetValue(false);
     m_chkSmooth->SetValue(false);
+    m_chkIndeterminate->SetValue(false);
 }
 
 void GaugeWidgetsPage::CreateGauge()
@@ -289,6 +297,10 @@ void GaugeWidgetsPage::CreateGauge()
                           wxDefaultPosition, wxDefaultSize,
                           flags);
     m_gauge->SetValue(val);
+    
+    if ( m_chkIndeterminate->GetValue() ){
+        m_gauge->Pulse();
+    }
 
     if ( flags & wxGA_VERTICAL )
         m_sizerGauge->Add(m_gauge, 0, wxGROW | wxALL, 5);
@@ -344,6 +356,7 @@ void GaugeWidgetsPage::OnButtonSetRange(wxCommandEvent& WXUNUSED(event))
 
     m_range = val;
     m_gauge->SetRange(val);
+    m_chkIndeterminate->SetValue(0);
 }
 
 void GaugeWidgetsPage::OnButtonSetValue(wxCommandEvent& WXUNUSED(event))
@@ -353,6 +366,7 @@ void GaugeWidgetsPage::OnButtonSetValue(wxCommandEvent& WXUNUSED(event))
         return;
 
     m_gauge->SetValue(val);
+    m_chkIndeterminate->SetValue(0);
 }
 
 void GaugeWidgetsPage::OnUpdateUIValueButton(wxUpdateUIEvent& event)