X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/79e58a409e58ab69a04a00f82e7debfb27035dac..ca77701441e39245dcbfce903049e76f166979e5:/include/wx/generic/progdlgg.h diff --git a/include/wx/generic/progdlgg.h b/include/wx/generic/progdlgg.h index c8585ed15c..4e3c3e183b 100644 --- a/include/wx/generic/progdlgg.h +++ b/include/wx/generic/progdlgg.h @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////// -// Name: progdlgg.h +// Name: wx/generic/progdlgg.h // Purpose: wxGenericProgressDialog class // Author: Karsten Ballueder // Modified by: Francesco Montorsi @@ -15,6 +15,7 @@ #include "wx/dialog.h" class WXDLLIMPEXP_FWD_CORE wxButton; +class WXDLLIMPEXP_FWD_CORE wxEventLoop; class WXDLLIMPEXP_FWD_CORE wxGauge; class WXDLLIMPEXP_FWD_CORE wxStaticText; class WXDLLIMPEXP_FWD_CORE wxWindowDisabler; @@ -26,6 +27,7 @@ class WXDLLIMPEXP_FWD_CORE wxWindowDisabler; class WXDLLIMPEXP_CORE wxGenericProgressDialog : public wxDialog { public: + wxGenericProgressDialog(); wxGenericProgressDialog(const wxString& title, const wxString& message, int maximum = 100, wxWindow *parent = NULL, @@ -33,6 +35,12 @@ public: virtual ~wxGenericProgressDialog(); + bool Create(const wxString& title, + const wxString& message, + int maximum = 100, + wxWindow *parent = NULL, + int style = wxPD_APP_MODAL | wxPD_AUTO_HIDE); + virtual bool Update(int value, const wxString& newmsg = wxEmptyString, bool *skip = NULL); virtual bool Pulse(const wxString& newmsg = wxEmptyString, bool *skip = NULL); @@ -56,30 +64,36 @@ public: // This enum is an implementation detail and should not be used // by user code. - enum ProgressDialogState + enum State { Uncancelable = -1, // dialog can't be canceled Canceled, // can be cancelled and, in fact, was Continue, // can be cancelled but wasn't - Finished // finished, waiting to be removed from screen + Finished, // finished, waiting to be removed from screen + Dismissed // was closed by user after finishing }; protected: - // This ctor is used by the native MSW implementation only. - wxGenericProgressDialog(wxWindow *parent, int maximum, int style); - - void Create(const wxString& title, - const wxString& message, - int maximum, - wxWindow *parent, - int style); + // Update just the m_maximum field, this is used by public SetRange() but, + // unlike it, doesn't update the controls state. This makes it useful for + // both this class and its derived classes that don't use m_gauge to + // display progress. + void SetMaximum(int maximum); // Return the labels to use for showing the elapsed/estimated/remaining // times respectively. - static wxString GetElapsedLabel() { return _("Elapsed time:"); } - static wxString GetEstimatedLabel() { return _("Estimated time:"); } - static wxString GetRemainingLabel() { return _("Remaining time:"); } + static wxString GetElapsedLabel() { return wxGetTranslation("Elapsed time:"); } + static wxString GetEstimatedLabel() { return wxGetTranslation("Estimated time:"); } + static wxString GetRemainingLabel() { return wxGetTranslation("Remaining time:"); } + + + // Similar to wxWindow::HasFlag() but tests for a presence of a wxPD_XXX + // flag in our (separate) flags instead of using m_windowStyle. + bool HasPDFlag(int flag) const { return (m_pdStyle & flag) != 0; } + // Return the progress dialog style. Prefer to use HasPDFlag() if possible. + int GetPDStyle() const { return m_pdStyle; } + void SetPDStyle(int pdStyle) { m_pdStyle = pdStyle; } // Updates estimated times from a given progress bar value and stores the // results in provided arguments. @@ -107,12 +121,16 @@ protected: // the dialog was shown void ReenableOtherWindows(); + // Set the top level parent we store from the parent window provided when + // creating the dialog. + void SetTopParent(wxWindow* parent); + // return the top level parent window of this dialog (may be NULL) wxWindow *GetTopParent() const { return m_parentTop; } // continue processing or not (return value for Update()) - ProgressDialogState m_state; + State m_state; // the maximum value int m_maximum; @@ -135,7 +153,7 @@ private: static void SetTimeLabel(unsigned long val, wxStaticText *label); // common part of all ctors - void Init(wxWindow *parent, int maximum, int style); + void Init(); // create the label with given text and another one to show the time nearby // as the next windows in the sizer, returns the created control @@ -169,6 +187,12 @@ private: // parent top level window (may be NULL) wxWindow *m_parentTop; + // Progress dialog styles: this is not the same as m_windowStyle because + // wxPD_XXX constants clash with the existing TLW styles so to be sure we + // don't have any conflicts we just use a separate variable for storing + // them. + int m_pdStyle; + // skip some portion bool m_skip; @@ -191,12 +215,14 @@ private: int m_ctdelay; unsigned long m_display_estimated; - bool m_hasAbortButton, - m_hasSkipButton; - // for wxPD_APP_MODAL case wxWindowDisabler *m_winDisabler; + // Temporary event loop created by the dialog itself if there is no + // currently active loop when it is created. + wxEventLoop *m_tempEventLoop; + + DECLARE_EVENT_TABLE() wxDECLARE_NO_COPY_CLASS(wxGenericProgressDialog); };