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 20 /*! \file 21 \brief Interface for class Progress. 22 */ 23 24 #ifndef _progress_h_ 25 #define _progress_h_ 26 27 #include "common.h" 28 29 //! Mix-in class for call-backs from long operations. 30 /*! Use concrete implementations of these methods to drive progress bars. 31 */ 32 class Progress 33 { 34 public: 35 36 virtual ~Progress(); 37 38 virtual void progress_start(uint steps,const std::string& info) 39 =0; 40 41 // This will change the dialog text to indicate that progress is stalled for some reason. 42 // It resets to the original text when progress_step is next stalled. 43 // (Used by river generation). 44 virtual void progress_stall(const std::string& reason) 45 =0; 46 47 virtual void progress_step(uint step) 48 =0; 49 50 virtual void progress_complete(const std::string& info) 51 =0; 52 }; 53 54 //! Helper class to facilitate driving progress bar 55 class ProgressScope 56 { 57 public: 58 59 ProgressScope(uint steps,const std::string& info,Progress* tgt); 60 61 ~ProgressScope(); 62 63 void step(); 64 65 private: 66 67 const uint _steps; 68 69 const std::string _info; 70 71 Progress*const _target; 72 73 uint _step; 74 }; 75 76 #endif 77