Subversion Repositories public iLand

Rev

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