home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / wxos2240.zip / wxWindows-2.4.0 / include / wx / generic / progdlgg.h < prev    next >
C/C++ Source or Header  |  2002-12-16  |  4KB  |  132 lines

  1. ////////////////////////////////////////////////////
  2. // Name:        progdlgg.h
  3. // Purpose:     wxProgressDialog class
  4. // Author:      Karsten Ballⁿder
  5. // Modified by:
  6. // Created:     09.05.1999
  7. // RCS-ID:      $Id: progdlgg.h,v 1.23.2.1 2002/12/16 10:57:45 JS Exp $
  8. // Copyright:   (c) Karsten Ballⁿder
  9. // Licence:     wxWindows license
  10. ////////////////////////////////////////////////////
  11.  
  12. #ifndef __PROGDLGH_G__
  13. #define __PROGDLGH_G__
  14.  
  15. #if defined(__GNUG__) && !defined(__APPLE__)
  16. #pragma interface "progdlgg.h"
  17. #endif
  18.  
  19. #include "wx/setup.h"
  20.  
  21. #if wxUSE_PROGRESSDLG
  22.  
  23. #include "wx/dialog.h"
  24.  
  25. class WXDLLEXPORT wxButton;
  26. class WXDLLEXPORT wxGauge;
  27. class WXDLLEXPORT wxStaticText;
  28.  
  29. /* Progress dialog which shows a moving progress bar.
  30.     Taken from the Mahogany project.*/
  31.  
  32. class WXDLLEXPORT wxProgressDialog : public wxDialog
  33. {
  34. DECLARE_DYNAMIC_CLASS(wxProgressDialog)
  35. public:
  36.    /* Creates and displays dialog, disables event handling for other
  37.        frames or parent frame to avoid recursion problems.
  38.        @param title title for window
  39.        @param message message to display in window
  40.        @param maximum value for status bar, if <= 0, no bar is shown
  41.        @param parent window or NULL
  42.        @param style is the bit mask of wxPD_XXX constants from wx/defs.h
  43.    */
  44.    wxProgressDialog(const wxString &title, wxString const &message,
  45.                     int maximum = 100,
  46.                     wxWindow *parent = NULL,
  47.                     int style = wxPD_APP_MODAL | wxPD_AUTO_HIDE);
  48.    /* Destructor.
  49.        Re-enables event handling for other windows.
  50.    */
  51.    ~wxProgressDialog();
  52.  
  53.    /* Update the status bar to the new value.
  54.        @param value new value
  55.        @param newmsg if used, new message to display
  56.        @returns true if ABORT button has not been pressed
  57.    */
  58.    bool Update(int value, const wxString& newmsg = wxT(""));
  59.  
  60.    /* Can be called to continue after the cancel button has been pressed, but
  61.        the program decided to continue the operation (e.g., user didn't
  62.        confirm it)
  63.    */
  64.    void Resume();
  65.  
  66.    bool Show( bool show = TRUE );
  67.  
  68. protected:
  69.    // callback for optional abort button
  70.    void OnCancel(wxCommandEvent& event);
  71.  
  72.    // callback to disable "hard" window closing
  73.    void OnClose(wxCloseEvent& event);
  74.  
  75.    // must be called to reenable the other windows temporarily disabled while
  76.    // the dialog was shown
  77.    void ReenableOtherWindows();
  78.  
  79. private:
  80.    // create the label with given text and another one to show the time nearby
  81.    // under the lastWindow and modify it to be the same as the control created
  82.    // (which is returned)
  83.    wxStaticText *CreateLabel(const wxString& text, wxWindow **lastWindow);
  84.  
  85.    // the status bar
  86.    wxGauge *m_gauge;
  87.    // the message displayed
  88.    wxStaticText *m_msg;
  89.    // displayed elapsed, estimated, remaining time
  90.    class wxStaticText *m_elapsed,
  91.                       *m_estimated,
  92.                       *m_remaining;
  93.    // time when the dialog was created
  94.    unsigned long m_timeStart;
  95.  
  96.    // parent top level window (may be NULL)
  97.    wxWindow *m_parentTop;
  98.  
  99.    // continue processing or not (return value for Update())
  100.    enum
  101.    {
  102.       Uncancelable = -1,   // dialog can't be canceled
  103.       Canceled,            // can be cancelled and, in fact, was
  104.       Continue,            // can be cancelled but wasn't
  105.       Finished             // finished, waiting to be removed from screen
  106.    } m_state;
  107.  
  108.    // the abort button (or NULL if none)
  109.    wxButton *m_btnAbort;
  110.  
  111.    // the maximum value
  112.    int m_maximum;
  113.  
  114. #if defined(__WXMSW__ ) || defined(__WXPM__)
  115.    // the factor we use to always keep the value in 16 bit range as the native
  116.    // control only supports ranges from 0 to 65,535
  117.    size_t m_factor;
  118. #endif // __WXMSW__
  119.  
  120.    // for wxPD_APP_MODAL case
  121.    class WXDLLEXPORT wxWindowDisabler *m_winDisabler;
  122.  
  123.    DECLARE_EVENT_TABLE()
  124. private:
  125.     // Virtual function hiding supression
  126.     virtual void Update() { wxDialog::Update(); }
  127. };
  128. #endif
  129.  
  130. #endif
  131.     // __PROGDLGH_G__
  132.