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
77 lines
2.4 KiB
C++
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_
|