home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / wxos2233.zip / wxOS2-2_3_3.zip / wxWindows-2.3.3 / include / wx / generic / progdlgg.h < prev    next >
C/C++ Source or Header  |  2002-08-31  |  4KB  |  130 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 2002/08/31 11:29:12 GD 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. protected:
  67.    // callback for optional abort button
  68.    void OnCancel(wxCommandEvent& event);
  69.  
  70.    // callback to disable "hard" window closing
  71.    void OnClose(wxCloseEvent& event);
  72.  
  73.    // must be called to reenable the other windows temporarily disabled while
  74.    // the dialog was shown
  75.    void ReenableOtherWindows();
  76.  
  77. private:
  78.    // create the label with given text and another one to show the time nearby
  79.    // under the lastWindow and modify it to be the same as the control created
  80.    // (which is returned)
  81.    wxStaticText *CreateLabel(const wxString& text, wxWindow **lastWindow);
  82.  
  83.    // the status bar
  84.    wxGauge *m_gauge;
  85.    // the message displayed
  86.    wxStaticText *m_msg;
  87.    // displayed elapsed, estimated, remaining time
  88.    class wxStaticText *m_elapsed,
  89.                       *m_estimated,
  90.                       *m_remaining;
  91.    // time when the dialog was created
  92.    unsigned long m_timeStart;
  93.  
  94.    // parent top level window (may be NULL)
  95.    wxWindow *m_parentTop;
  96.  
  97.    // continue processing or not (return value for Update())
  98.    enum
  99.    {
  100.       Uncancelable = -1,   // dialog can't be canceled
  101.       Canceled,            // can be cancelled and, in fact, was
  102.       Continue,            // can be cancelled but wasn't
  103.       Finished             // finished, waiting to be removed from screen
  104.    } m_state;
  105.  
  106.    // the abort button (or NULL if none)
  107.    wxButton *m_btnAbort;
  108.  
  109.    // the maximum value
  110.    int m_maximum;
  111.  
  112. #if defined(__WXMSW__ ) || defined(__WXPM__)
  113.    // the factor we use to always keep the value in 16 bit range as the native
  114.    // control only supports ranges from 0 to 65,535
  115.    size_t m_factor;
  116. #endif // __WXMSW__
  117.  
  118.    // for wxPD_APP_MODAL case
  119.    class WXDLLEXPORT wxWindowDisabler *m_winDisabler;
  120.  
  121.    DECLARE_EVENT_TABLE()
  122. private:
  123.     // Virtual function hiding supression
  124.     virtual void Update() { wxDialog::Update(); }
  125. };
  126. #endif
  127.  
  128. #endif
  129.     // __PROGDLGH_G__
  130.