Subversion Repositories public iLand

Rev

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