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 |