/////////////////////////////////////////////////////////////////////////////
-// Program: wxWindows Widgets Sample
+// Program: wxWidgets Widgets Sample
// Name: gauge.cpp
// Purpose: Part of the widgets sample showing wxGauge
// Author: Vadim Zeitlin
#include "wx/sizer.h"
#include "widgets.h"
-#if 1
+#if wxUSE_GAUGE
#include "icons/gauge.xpm"
// ----------------------------------------------------------------------------
// control ids
enum
{
- GaugePage_Reset = 100,
+ GaugePage_Reset = wxID_HIGHEST,
GaugePage_Progress,
GaugePage_Clear,
GaugePage_SetValue,
class GaugeWidgetsPage : public WidgetsPage
{
public:
- GaugeWidgetsPage(wxNotebook *notebook, wxImageList *imaglist);
+ GaugeWidgetsPage(WidgetsBookCtrl *book, wxImageList *imaglist);
virtual ~GaugeWidgetsPage();
+ 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);
// 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;
EVT_UPDATE_UI(GaugePage_CurValueText, GaugeWidgetsPage::OnUpdateUICurValueText)
- EVT_CHECKBOX(-1, GaugeWidgetsPage::OnCheckOrRadioBox)
- EVT_RADIOBOX(-1, GaugeWidgetsPage::OnCheckOrRadioBox)
+ EVT_CHECKBOX(wxID_ANY, GaugeWidgetsPage::OnCheckOrRadioBox)
+ EVT_RADIOBOX(wxID_ANY, GaugeWidgetsPage::OnCheckOrRadioBox)
EVT_TIMER(GaugePage_Timer, GaugeWidgetsPage::OnProgressTimer)
END_EVENT_TABLE()
// implementation
// ============================================================================
-IMPLEMENT_WIDGETS_PAGE(GaugeWidgetsPage, _T("Gauge"));
+#if defined(__WXUNIVERSAL__)
+ #define FAMILY_CTRLS UNIVERSAL_CTRLS
+#else
+ #define FAMILY_CTRLS NATIVE_CTRLS
+#endif
-GaugeWidgetsPage::GaugeWidgetsPage(wxNotebook *notebook,
- wxImageList *imaglist)
- : WidgetsPage(notebook)
-{
- imaglist->Add(wxBitmap(gauge_xpm));
+IMPLEMENT_WIDGETS_PAGE(GaugeWidgetsPage, _T("Gauge"), FAMILY_CTRLS );
+GaugeWidgetsPage::GaugeWidgetsPage(WidgetsBookCtrl *book,
+ wxImageList *imaglist)
+ :WidgetsPage(book, imaglist, 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
- wxStaticBox *box = new wxStaticBox(this, -1, _T("&Set style"));
+ wxStaticBox *box = new wxStaticBox(this, wxID_ANY, _T("&Set style"));
wxSizer *sizerLeft = new wxStaticBoxSizer(box, wxVERTICAL);
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
sizerLeft->Add(btn, 0, wxALIGN_CENTRE_HORIZONTAL | wxALL, 15);
// middle pane
- wxStaticBox *box2 = new wxStaticBox(this, -1, _T("&Change gauge value"));
+ wxStaticBox *box2 = new wxStaticBox(this, wxID_ANY,
+ _T("&Change gauge value"));
wxSizer *sizerMiddle = new wxStaticBoxSizer(box2, wxVERTICAL);
wxTextCtrl *text;
wxSizer *sizerRow = CreateSizerWithTextAndLabel(_T("Current value"),
GaugePage_CurValueText,
&text);
- text->SetEditable(FALSE);
+ text->SetEditable(false);
sizerMiddle->Add(sizerRow, 0, wxALL | wxGROW, 5);
// final initializations
Reset();
- SetAutoLayout(TRUE);
SetSizer(sizerTop);
sizerTop->Fit(this);
void GaugeWidgetsPage::Reset()
{
- m_chkVert->SetValue(FALSE);
- m_chkSmooth->SetValue(FALSE);
+ m_chkVert->SetValue(false);
+ m_chkSmooth->SetValue(false);
+ m_chkIndeterminate->SetValue(false);
}
void GaugeWidgetsPage::CreateGauge()
{
- int flags = 0;
+ int flags = ms_defaultFlags;
if ( m_chkVert->GetValue() )
flags |= wxGA_VERTICAL;
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);
if ( !m_textRange->GetValue().ToULong(&val) )
return;
+ m_range = val;
m_gauge->SetRange(val);
+ m_chkIndeterminate->SetValue(0);
}
void GaugeWidgetsPage::OnButtonSetValue(wxCommandEvent& WXUNUSED(event))
return;
m_gauge->SetValue(val);
+ m_chkIndeterminate->SetValue(0);
}
void GaugeWidgetsPage::OnUpdateUIValueButton(wxUpdateUIEvent& event)
event.Enable( m_chkVert->GetValue() || m_chkSmooth->GetValue() );
}
-void GaugeWidgetsPage::OnCheckOrRadioBox(wxCommandEvent& event)
+void GaugeWidgetsPage::OnCheckOrRadioBox(wxCommandEvent& WXUNUSED(event))
{
CreateGauge();
}
}
#endif
+ // wxUSE_GAUGE