153 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			153 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/////////////////////////////////////////////////////////////////////////////
 | 
						|
// Program:     wxWidgets Widgets Sample
 | 
						|
// Name:        activityindicator.cpp
 | 
						|
// Purpose:     Part of the widgets sample showing wxActivityIndicator
 | 
						|
// Author:      Vadim Zeitlin
 | 
						|
// Created:     2015-03-06
 | 
						|
// Copyright:   (c) 2015 wxWindows team
 | 
						|
// Licence:     wxWindows licence
 | 
						|
/////////////////////////////////////////////////////////////////////////////
 | 
						|
 | 
						|
// ============================================================================
 | 
						|
// declarations
 | 
						|
// ============================================================================
 | 
						|
 | 
						|
// ----------------------------------------------------------------------------
 | 
						|
// headers
 | 
						|
// ----------------------------------------------------------------------------
 | 
						|
 | 
						|
// for compilers that support precompilation, includes "wx/wx.h".
 | 
						|
#include "wx/wxprec.h"
 | 
						|
 | 
						|
 | 
						|
#if wxUSE_ACTIVITYINDICATOR
 | 
						|
 | 
						|
// for all others, include the necessary headers
 | 
						|
#ifndef WX_PRECOMP
 | 
						|
    #include "wx/button.h"
 | 
						|
    #include "wx/sizer.h"
 | 
						|
    #include "wx/stattext.h"
 | 
						|
#endif
 | 
						|
 | 
						|
#include "wx/activityindicator.h"
 | 
						|
 | 
						|
#include "widgets.h"
 | 
						|
 | 
						|
#include "icons/activityindicator.xpm"
 | 
						|
 | 
						|
// ----------------------------------------------------------------------------
 | 
						|
// constants
 | 
						|
// ----------------------------------------------------------------------------
 | 
						|
 | 
						|
// Control IDs
 | 
						|
enum
 | 
						|
{
 | 
						|
    ActivityIndicator_Start = wxID_HIGHEST,
 | 
						|
    ActivityIndicator_Stop,
 | 
						|
    ActivityIndicator_IsRunning
 | 
						|
};
 | 
						|
 | 
						|
// ----------------------------------------------------------------------------
 | 
						|
// ActivityIndicatorWidgetsPage
 | 
						|
// ----------------------------------------------------------------------------
 | 
						|
 | 
						|
class ActivityIndicatorWidgetsPage : public WidgetsPage
 | 
						|
{
 | 
						|
public:
 | 
						|
    ActivityIndicatorWidgetsPage(WidgetsBookCtrl *book, wxImageList *imaglist)
 | 
						|
        : WidgetsPage(book, imaglist, activityindicator_xpm)
 | 
						|
    {
 | 
						|
        m_indicator = NULL;
 | 
						|
        m_sizerIndicator = NULL;
 | 
						|
    }
 | 
						|
 | 
						|
    virtual wxWindow *GetWidget() const wxOVERRIDE { return m_indicator; }
 | 
						|
    virtual void RecreateWidget() wxOVERRIDE;
 | 
						|
 | 
						|
    // lazy creation of the content
 | 
						|
    virtual void CreateContent() wxOVERRIDE;
 | 
						|
 | 
						|
protected:
 | 
						|
    void OnButtonStart(wxCommandEvent&) { m_indicator->Start(); }
 | 
						|
    void OnButtonStop(wxCommandEvent&) { m_indicator->Stop(); }
 | 
						|
 | 
						|
    void OnUpdateIsRunning(wxUpdateUIEvent& event)
 | 
						|
    {
 | 
						|
        event.SetText(m_indicator && m_indicator->IsRunning()
 | 
						|
                        ? "Indicator is running"
 | 
						|
                        : "Indicator is stopped");
 | 
						|
    }
 | 
						|
 | 
						|
    // the indicator itself and the sizer it is in
 | 
						|
    wxActivityIndicator *m_indicator;
 | 
						|
    wxSizer *m_sizerIndicator;
 | 
						|
 | 
						|
private:
 | 
						|
    wxDECLARE_EVENT_TABLE();
 | 
						|
    DECLARE_WIDGETS_PAGE(ActivityIndicatorWidgetsPage)
 | 
						|
};
 | 
						|
 | 
						|
// ----------------------------------------------------------------------------
 | 
						|
// event tables
 | 
						|
// ----------------------------------------------------------------------------
 | 
						|
 | 
						|
wxBEGIN_EVENT_TABLE(ActivityIndicatorWidgetsPage, WidgetsPage)
 | 
						|
    EVT_BUTTON(ActivityIndicator_Start,
 | 
						|
               ActivityIndicatorWidgetsPage::OnButtonStart)
 | 
						|
    EVT_BUTTON(ActivityIndicator_Stop,
 | 
						|
               ActivityIndicatorWidgetsPage::OnButtonStop)
 | 
						|
 | 
						|
    EVT_UPDATE_UI(ActivityIndicator_IsRunning,
 | 
						|
                  ActivityIndicatorWidgetsPage::OnUpdateIsRunning)
 | 
						|
wxEND_EVENT_TABLE()
 | 
						|
 | 
						|
// ============================================================================
 | 
						|
// implementation
 | 
						|
// ============================================================================
 | 
						|
 | 
						|
IMPLEMENT_WIDGETS_PAGE(ActivityIndicatorWidgetsPage,
 | 
						|
                       "ActivityIndicator", NATIVE_CTRLS);
 | 
						|
 | 
						|
void ActivityIndicatorWidgetsPage::CreateContent()
 | 
						|
{
 | 
						|
    wxSizer* const sizerOper = new wxStaticBoxSizer(wxVERTICAL, this,
 | 
						|
                                                    "&Operations");
 | 
						|
 | 
						|
    sizerOper->Add(new wxButton(this, ActivityIndicator_Start, "&Start"),
 | 
						|
                   wxSizerFlags().Expand().Border());
 | 
						|
    sizerOper->Add(new wxButton(this, ActivityIndicator_Stop, "&Stop"),
 | 
						|
                   wxSizerFlags().Expand().Border());
 | 
						|
 | 
						|
    sizerOper->Add(new wxStaticText(this, ActivityIndicator_IsRunning,
 | 
						|
                                    "Indicator is initializing..."),
 | 
						|
                   wxSizerFlags().Expand().Border());
 | 
						|
 | 
						|
 | 
						|
    m_sizerIndicator = new wxStaticBoxSizer(wxHORIZONTAL, this,
 | 
						|
                                            "Activity Indicator");
 | 
						|
    RecreateWidget();
 | 
						|
 | 
						|
 | 
						|
    wxSizer* const sizerTop = new wxBoxSizer(wxHORIZONTAL);
 | 
						|
    sizerTop->Add(sizerOper, wxSizerFlags().Expand().DoubleBorder());
 | 
						|
    sizerTop->Add(m_sizerIndicator, wxSizerFlags(1).Expand().DoubleBorder());
 | 
						|
 | 
						|
    SetSizer(sizerTop);
 | 
						|
}
 | 
						|
 | 
						|
void ActivityIndicatorWidgetsPage::RecreateWidget()
 | 
						|
{
 | 
						|
    m_sizerIndicator->Clear(true /* delete windows */);
 | 
						|
 | 
						|
    m_indicator = new wxActivityIndicator(this, wxID_ANY,
 | 
						|
                                          wxDefaultPosition, wxDefaultSize,
 | 
						|
                                          GetAttrs().m_defaultFlags);
 | 
						|
 | 
						|
    m_sizerIndicator->AddStretchSpacer();
 | 
						|
    m_sizerIndicator->Add(m_indicator, wxSizerFlags().Centre());
 | 
						|
    m_sizerIndicator->AddStretchSpacer();
 | 
						|
    m_sizerIndicator->Layout();
 | 
						|
}
 | 
						|
 | 
						|
#endif // wxUSE_ACTIVITYINDICATOR
 |