Files
wxWidgets/include/wx/msw/progdlg.h
Vadim Zeitlin c31d9c7f60 Use task dialog for wxProgressDialog implementation in wxMSW.
If available, the task dialog is now used for the wxProgressDialog under
Windows. This provides a much more native looking dialog which doesn't look
out of place under modern Windows versions, unlike the generic implementation.

The internals of the code had to be significantly changed as the task dialog
can only be shown modally so, to emulate wxProgressDialog modeless nature, a
separate thread is used for the progress dialog management.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65352 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-08-18 22:49:02 +00:00

77 lines
2.4 KiB
C++

/////////////////////////////////////////////////////////////////////////////
// Name: wx/msw/progdlg.h
// Purpose: wxProgressDialog
// Author: Rickard Westerlund
// Created: 2010-07-22
// RCS-ID: $Id$
// Copyright: (c) 2010 wxWidgets team
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_PROGDLG_H_
#define _WX_PROGDLG_H_
class wxProgressDialogTaskRunner;
class wxProgressDialogSharedData;
class WXDLLIMPEXP_CORE wxProgressDialog : public wxGenericProgressDialog
{
public:
wxProgressDialog(const wxString& title, const wxString& message,
int maximum = 100,
wxWindow *parent = NULL,
int style = wxPD_APP_MODAL | wxPD_AUTO_HIDE);
virtual ~wxProgressDialog();
virtual bool Update(int value, const wxString& newmsg = wxEmptyString, bool *skip = NULL);
virtual bool Pulse(const wxString& newmsg = wxEmptyString, bool *skip = NULL);
void Resume();
int GetValue() const;
wxString GetMessage() const;
void SetRange(int maximum);
// Return whether "Cancel" or "Skip" button was pressed, always return
// false if the corresponding button is not shown.
bool WasSkipped() const;
bool WasCancelled() const;
virtual void SetTitle(const wxString& title);
virtual wxString GetTitle() const;
virtual bool Show( bool show = true );
// Must provide overload to avoid hiding it (and warnings about it)
virtual void Update() { wxGenericProgressDialog::Update(); }
private:
// Returns true if the task dialog is available. If not, all the methods of
// this class simply fall back to wxGenericProgressDialog versions.
bool HasNativeProgressDialog() const;
// Performs common routines to Update() and Pulse(). Requires the
// shared object to have been entered.
bool DoNativeBeforeUpdate(bool *skip);
// Updates the various timing informations for both determinate
// and indeterminate modes. Requires the shared object to have
// been entered.
void UpdateExpandedInformation(int value);
wxProgressDialogTaskRunner *m_taskDialogRunner;
wxProgressDialogSharedData *m_sharedData;
// Store the message and title we currently use to be able to return it
// from Get{Message,Title}()
wxString m_message,
m_title;
wxDECLARE_DYNAMIC_CLASS_NO_COPY(wxProgressDialog);
};
#endif // _WX_PROGDLG_H_