Subversion Repositories public iLand

Rev

Rev 514 | Rev 596 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1
 
105 Werner 2
#ifndef MODELCONTROLLER_H
3
#define MODELCONTROLLER_H
128 Werner 4
#include <QObject>
514 werner 5
#include <QHash>
128 Werner 6
class Model;
590 werner 7
class MainWindow;
128 Werner 8
class ModelController: public QObject
105 Werner 9
{
128 Werner 10
    Q_OBJECT
105 Werner 11
public:
12
    ModelController();
128 Werner 13
    ~ModelController();
590 werner 14
    void setMainWindow(MainWindow *mw) { mViewerWindow = mw; }
15
    void connectSignals(); // connect signal/slots to the main window if available
128 Werner 16
    Model *model() const { return mModel; }
17
    // bool checkers...
145 Werner 18
    bool canCreate(); ///< return true if the model can be created (settings loaded and model does not exist)
19
    bool canDestroy(); ///< model may be destroyed
20
    bool canRun(); ///< model may be run
161 werner 21
    bool isRunning(); ///< model is running
225 werner 22
    bool isFinished(); ///< returns true if there is a valid model state, but the run is finished
497 werner 23
    int currentYear() const; ///< return current year of the model
498 werner 24
    int totalYears() const { return mYearsToRun; } ///< returns total number of years to simulate
161 werner 25
    // dynamic outputs (variable fields)
26
    void setupDynamicOutput(QString fieldList);
27
    QString dynamicOutput();
514 werner 28
    // some informational services
29
    QHash<QString, QString> availableSpecies();
30
 
590 werner 31
    void saveScreenshot(QString file_name); ///< saves a screenshot of the central view widget to 'file_name'
222 werner 32
signals:
33
    void finished(QString errorMessage);
34
    void year(int year);
590 werner 35
    void bufferLogs(bool do_buffer);
128 Werner 36
public slots:
37
    void setFileName(QString initFileName); ///< set project file name
38
    void create(); ///< create the model
39
    void destroy(); ///< delete the model
222 werner 40
    void run(int years); ///< run the model
223 werner 41
    bool runYear(); ///< runs a single time step
222 werner 42
    bool pause(); ///< pause execution, and if paused, continue to run. returns state *after* change, i.e. true=now in paused mode
43
    void cancel(); ///< cancel execution of the model
223 werner 44
private slots:
45
    void runloop();
128 Werner 46
private:
161 werner 47
    void fetchDynamicOutput();
590 werner 48
    MainWindow *mViewerWindow;
128 Werner 49
    Model *mModel;
223 werner 50
    bool mPaused;
225 werner 51
    bool mRunning;
52
    bool mFinished;
53
    bool mCanceled;
223 werner 54
    int mYearsToRun;
128 Werner 55
    QString mInitFile;
161 werner 56
    QStringList mDynFieldList;
57
    QStringList mDynData;
58
 
105 Werner 59
};
60
 
61
#endif // MODELCONTROLLER_H