My Project
 All Classes Files Functions Variables Enumerations Pages
progress.h
Go to the documentation of this file.
1 /**************************************************************************/
2 /* Copyright 2009 Tim Day */
3 /* */
4 /* This file is part of Fracplanet */
5 /* */
6 /* Fracplanet is free software: you can redistribute it and/or modify */
7 /* it under the terms of the GNU General Public License as published by */
8 /* the Free Software Foundation, either version 3 of the License, or */
9 /* (at your option) any later version. */
10 /* */
11 /* Fracplanet is distributed in the hope that it will be useful, */
12 /* but WITHOUT ANY WARRANTY; without even the implied warranty of */
13 /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
14 /* GNU General Public License for more details. */
15 /* */
16 /* You should have received a copy of the GNU General Public License */
17 /* along with Fracplanet. If not, see <http://www.gnu.org/licenses/>. */
18 /**************************************************************************/
19 
24 #ifndef _progress_h_
25 #define _progress_h_
26 
28 
30 class Progress
31 {
32  public:
33 
34  virtual ~Progress();
35 
36  virtual void progress_start(uint steps,const std::string& info)
37  =0;
38 
39  // This will change the dialog text to indicate that progress is stalled for some reason.
40  // It resets to the original text when progress_step is next stalled.
41  // (Used by river generation).
42  virtual void progress_stall(const std::string& reason)
43  =0;
44 
45  virtual void progress_step(uint step)
46  =0;
47 
48  virtual void progress_complete(const std::string& info)
49  =0;
50 };
51 
54 {
55  public:
56 
57  ProgressScope(uint steps,const std::string& info,Progress* tgt);
58 
59  ~ProgressScope();
60 
61  void step();
62 
63  private:
64 
65  const uint _steps;
66 
67  const std::string _info;
68 
69  Progress*const _target;
70 
71  uint _step;
72 };
73 
74 #endif