Rev 223 | Rev 267 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 223 | Rev 225 | ||
---|---|---|---|
Line 16... | Line 16... | ||
16 | 16 | ||
17 | ModelController::ModelController() |
17 | ModelController::ModelController() |
18 | {
|
18 | {
|
19 | mModel = NULL; |
19 | mModel = NULL; |
20 | mPaused = false; |
20 | mPaused = false; |
- | 21 | mRunning = false; |
|
21 | mYearsToRun = 0; |
22 | mYearsToRun = 0; |
22 | }
|
23 | }
|
23 | 24 | ||
24 | ModelController::~ModelController() |
25 | ModelController::~ModelController() |
25 | {
|
26 | {
|
Line 46... | Line 47... | ||
46 | return false; |
47 | return false; |
47 | }
|
48 | }
|
48 | 49 | ||
49 | bool ModelController::isRunning() |
50 | bool ModelController::isRunning() |
50 | {
|
51 | {
|
51 | return GlobalSettings::instance()->currentYear()>0; |
- | |
- | 52 | return mRunning; |
|
- | 53 | }
|
|
- | 54 | ||
- | 55 | bool ModelController::isFinished() |
|
- | 56 | {
|
|
- | 57 | if (!mModel) |
|
- | 58 | return false; |
|
- | 59 | return canRun() && !isRunning() && mFinished; |
|
- | 60 | ||
52 | }
|
61 | }
|
53 | 62 | ||
54 | 63 | ||
55 | void ModelController::setFileName(QString initFileName) |
64 | void ModelController::setFileName(QString initFileName) |
56 | {
|
65 | {
|
Line 97... | Line 106... | ||
97 | void ModelController::runloop() |
106 | void ModelController::runloop() |
98 | {
|
107 | {
|
99 | 108 | ||
100 | if (mPaused) |
109 | if (mPaused) |
101 | return; |
110 | return; |
102 | if (GlobalSettings::instance()->currentYear() < mYearsToRun) { |
- | |
103 | bool err = runYear(); |
- | |
104 | emit(GlobalSettings::instance()->currentYear()); |
- | |
105 | if (!err) |
- | |
- | 111 | bool doStop = false; |
|
- | 112 | bool hasError = false; |
|
- | 113 | ||
- | 114 | if (!mCanceled && GlobalSettings::instance()->currentYear() < mYearsToRun) { |
|
- | 115 | hasError = runYear(); |
|
- | 116 | mRunning = true; |
|
- | 117 | emit year(GlobalSettings::instance()->currentYear()); |
|
- | 118 | if (!hasError) |
|
106 | QTimer::singleShot(0,this, SLOT(runloop())); |
119 | QTimer::singleShot(0,this, SLOT(runloop())); |
- | 120 | else
|
|
- | 121 | doStop = true; // an error occured |
|
- | 122 | ||
- | 123 | } else { |
|
- | 124 | doStop = true; // all years simulated |
|
- | 125 | }
|
|
- | 126 | ||
- | 127 | if (doStop || mCanceled) { |
|
- | 128 | // finished
|
|
- | 129 | mRunning = false; |
|
- | 130 | GlobalSettings::instance()->outputManager()->save(); |
|
- | 131 | DebugTimer::printAllTimers(); |
|
- | 132 | mFinished = true; |
|
- | 133 | emit finished(QString()); |
|
107 | }
|
134 | }
|
- | 135 | QApplication::processEvents(); |
|
108 | }
|
136 | }
|
109 | 137 | ||
110 | void ModelController::run(int years) |
138 | void ModelController::run(int years) |
111 | {
|
139 | {
|
112 | if (!canRun()) |
140 | if (!canRun()) |
113 | return; |
141 | return; |
114 | DebugTimer many_runs(QString("Timer for %1 runs").arg(years)); |
142 | DebugTimer many_runs(QString("Timer for %1 runs").arg(years)); |
115 | many_runs.setAsWarning(); |
143 | many_runs.setAsWarning(); |
116 | mPaused = false; |
144 | mPaused = false; |
- | 145 | mFinished = false; |
|
- | 146 | mCanceled = false; |
|
117 | mYearsToRun = years; |
147 | mYearsToRun = years; |
- | 148 | GlobalSettings::instance()->setCurrentYear(0); // reset clock |
|
118 | 149 | ||
119 | DebugTimer::clearAllTimers(); |
150 | DebugTimer::clearAllTimers(); |
120 | 151 | ||
121 | runloop(); // start the running loop |
152 | runloop(); // start the running loop |
122 | 153 | ||
123 | GlobalSettings::instance()->outputManager()->save(); |
- | |
124 | DebugTimer::printAllTimers(); |
- | |
125 | emit finished(QString()); |
- | |
- | 154 | ||
126 | 155 | ||
127 | }
|
156 | }
|
128 | 157 | ||
129 | bool ModelController::runYear() |
158 | bool ModelController::runYear() |
130 | {
|
159 | {
|
Line 161... | Line 190... | ||
161 | return mPaused; |
190 | return mPaused; |
162 | }
|
191 | }
|
163 | 192 | ||
164 | void ModelController::cancel() |
193 | void ModelController::cancel() |
165 | {
|
194 | {
|
- | 195 | mCanceled = true; |
|
166 | }
|
196 | }
|
- | 197 | ||
167 | //////////////////////////////////////
|
198 | //////////////////////////////////////
|
168 | // dynamic outut
|
199 | // dynamic outut
|
169 | //////////////////////////////////////
|
200 | //////////////////////////////////////
|
170 | //////////////////////////////////////
|
201 | //////////////////////////////////////
|
171 | void ModelController::setupDynamicOutput(QString fieldList) |
202 | void ModelController::setupDynamicOutput(QString fieldList) |