Subversion Repositories public iLand

Rev

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)