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 |