123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291 |
- /*
- = StarPU-Top for StarPU =
- Copyright (C) 2011
- William Braik
- Yann Courtois
- Jean-Marie Couteyen
- Anthony Roy
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
- #ifndef MAINWINDOW_H
- #define MAINWINDOW_H
- class GanttWidget;
- class PreferencesDialog;
- class DebugConsole;
- class AbstractWidgetWindow;
- class DataWidget;
- class DataAggregatorWidget;
- class InteractiveWidget;
- class CommunicationThread;
- class ConfigurationManager;
- class WidgetWindowsManager;
- class SessionSetupManager;
- class TaskManager;
- #include <QMainWindow>
- #include <QMdiArea>
- #include <QSplitter>
- #include <QLabel>
- #include <QComboBox>
- #include <QPointer>
- #include <QScrollArea>
- #include <QAbstractSocket>
- #include <QTime>
- #include <QSpinBox>
- #include "starpu_top_types.h"
- namespace Ui
- {
- class MainWindow;
- }
- class MainWindow: public QMainWindow
- {
- Q_OBJECT
- public:
- explicit MainWindow(QWidget *parent = 0);
- ~MainWindow();
- // Getters
- // Get GUI components
- const QSplitter *splitter() const;
- const QDockWidget *parametersDock() const;
- // Get managers
- const WidgetWindowsManager* widgetWindowsManager() const;
- const ConfigurationManager* configurationManager() const;
- const SessionSetupManager* sessionSetupManager() const;
- const TaskManager* taskManager() const;
- // Get different descriptions for the current session
- QString serverID() const;
- const QList<DataDescription*> *dataDescriptions() const;
- const QList<ParamDescription*> *paramDescriptions() const;
- DataDescription *dataDescriptionFromId(int dataId);
- ParamDescription *paramDescriptionFromId(int interactiveId);
- const QList<starpu_top_device> *serverDevices() const;
- // Get different widgets metadata
- const QHash<DataWidgetType, QString> *dataWidgetNames() const;
- const QHash<DataType, QSet<DataWidgetType> >
- *dataWidgetPossibilities() const;
- const QHash<InteractiveWidgetType, QString> *interactiveWidgetNames() const;
- const QHash<ParamType, QSet<InteractiveWidgetType> >
- *interactiveWidgetPossibilities() const;
- // Get the actual widgets
- const QList<QPointer<DataWidget> > *dataWidgets() const;
- const QList<QPointer<DataAggregatorWidget> > *dataAggregatorWidgets() const;
- const QList<QPointer<InteractiveWidget> > *interactiveWidgets() const;
- DataWidget *dataWidgetFromDataId(int id);
- InteractiveWidget *interactiveWidgetFromParamId(int id);
- // Get widgets counts
- int nbDataWidgets() const;
- int nbDataAggregatorWidgets() const;
- int nbInteractiveWidgets() const;
- // Get GUI states
- bool isConnected() const;
- bool isReady() const;
- bool isRunning() const;
- bool isDebugEnabled() const;
- DisplayMode displayMode() const;
- // Get effective session time
- int effectiveRunningTime() const;
- // Add new widgets to the session
- DataWidget *addDataWidget(DataDescription *dataDescription);
- DataAggregatorWidget *addDataAggregatorWidget(
- QList<int> dataIds = QList<int> ());
- InteractiveWidget *addInteractiveWidget(ParamDescription *paramDescription);
- protected:
- // Events
- void changeEvent(QEvent *e);
- void closeEvent(QCloseEvent *e);
- private:
- // GUI components
- Ui::MainWindow *ui;
- QComboBox *_widgetsDisplayModesList;
- QSplitter *_splitter;
- QMdiArea *_mdiArea;
- GanttWidget *_ganttWidget;
- QSpinBox *_ganttTimeView;
- QScrollArea *_parametersDockScrollArea;
- DebugConsole *_debugConsole;
- QLabel *_statusBarIcon;
- QLabel *_statusBarLabel;
- PreferencesDialog *_preferencesDialog;
- QList<QPointer<DataWidget> > *_dataWidgets;
- QList<QPointer<DataAggregatorWidget> > *_dataAggregatorWidgets;
- QList<QPointer<InteractiveWidget> > *_interactiveWidgets;
- // Managers
- ConfigurationManager *_configurationManager;
- CommunicationThread *_communicationThread; // Will instantiate the communication manager
- WidgetWindowsManager *_widgetWindowsManager;
- SessionSetupManager *_sessionSetupManager;
- TaskManager *_taskManager;
- // GUI states
- DisplayMode _displayMode;
- bool _connected;
- bool _ready;
- bool _running;
- bool _debug;
- // GUI actions
- QAction *_actionConnect;
- QAction *_actionLaunch;
- QAction *_actionDebug;
- QAction *_actionSaveSessionSetup;
- QAction *_actionAddDataWidget;
- QAction *_actionAddDataAggregatorWidget;
- // Widgets metadata
- QHash<DataWidgetType, QString> _dataWidgetNames;
- QSet<DataWidgetType> _dataBoolWidgets, _dataIntWidgets, _dataFloatWidgets;
- QHash<DataType, QSet<DataWidgetType> > _dataWidgetPossibilities;
- QHash<InteractiveWidgetType, QString> _interactiveWidgetNames;
- QSet<InteractiveWidgetType> _paramBoolWidgets, _paramIntWidgets,
- _paramFloatWidgets, _paramEnumWidgets;
- QHash<ParamType, QSet<InteractiveWidgetType> >
- _interactiveWidgetPossibilities;
- // Session metadata
- QString _serverID;
- qlonglong _referenceTimestamp;
- // Different descriptions
- QList<DataDescription*> *_dataDescriptions;
- QList<ParamDescription*> *_paramDescriptions;
- QList<starpu_top_device> *_serverDevices;
- int _nbDataWidgets;
- int _nbDataAggregatorWidgets;
- int _nbInteractiveWidgets;
- // Time references
- QTime _preGoTimer;
- int _preGoTime;
- QTime _runningTime;
- QTime _currentLockTime;
- int _lockedTime;
- // Get the current status bar message
- QString statusBarMessage() const;
- // Get the current session running time
- int runningTime() const;
- int currentLockTime() const;
- int lockedTime() const;
- /** SLOTS **/
- private slots:
- // Actions on GUI
- void on_actionConnect_triggered();
- void on_actionLaunch_StarPU_triggered();
- void on_actionSaveSessionSetup_triggered();
- void on_actionDebug_triggered(bool enabled);
- void on_actionQuit_triggered();
- void on_actionPreferences_triggered();
- void on_actionAbout_triggered();
- void on_actionAddDataAggregatorWidget_triggered();
- // Setters
- // Set GUI states
- void setConnected(bool connected);
- void setReady(bool ready);
- void setRunning(bool running);
- void setDebug(bool enabled);
- void setDisplayMode(DisplayMode displayMode);
- // Other methods
- void initDataWidgetLists();
- void initInteractiveWidgetLists();
- void displayInteractiveWidget(InteractiveWidget *interactiveWidget);
- void removeDestroyedDataWidgets();
- void removeDestroyedInteractiveWidgets();
- void removeDestroyedDataAggregatorWidgets();
- void clearDescriptions();
- void clearDataDescriptions();
- void clearParamDescriptions();
- void clearWidgets();
- void clearDataWidgets();
- void clearInteractiveWidgets();
- void openSession();
- void closeSession();
- void setStatusBarIcon(QString iconFile);
- void setStatusBarMessage(QString message);
- void debugLock();
- void debugStep();
- void sessionMainWindowSetupLoaded(MainWindowSetup mainWindowSetup);
- void sessionParametersDockSetupLoaded(
- ParametersDockSetup parametersDockSetup);
- void sessionWidgetWindowsSetupLoaded(
- QList<DataWidgetSetup> dataWidgetsSetup,
- QList<DataAggregatorWidgetSetup> dataAggregatorWidgetsSetup);
- public slots:
- void synchronizeSessionTime(qlonglong serverTimestamp);
- void initClient(QString serverID,
- QList<DataDescription*> *dataDescriptions,
- QList<ParamDescription*> *paramDescriptions,
- QList<starpu_top_device> *serverDevices);
- // Connection events handlers
- void connectionSucceeded();
- void connectionAborted(QString message);
- void disconnected();
- // GUI updates
- void updateDataWidgetsDisplayMode(int index);
- void updateDisplayModeIndex(int index);
- void updateDataWidgetType(int dataId, DataWidgetType newWidget);
- void updateInteractiveWidgetType(int paramId,
- InteractiveWidgetType newWidget);
- void updateStatusBarMessage(QString message);
- // Responses to protocol messages
- void protocolErrorCaught(QString errorMessage);
- // Debug
- void setDebugMessage(QString debugMessage);
- void setDebugLock(QString debugLockMessage);
- // Incoming widget update messages
- void updateDataWidget(int dataWidgetId, bool value, qlonglong timestamp);
- void updateDataWidget(int dataWidgetId, int value, qlonglong timestamp);
- void updateDataWidget(int dataWidgetId, double value, qlonglong timestamp);
- void updateInteractiveWidget(int interactiveWidgetId, bool value,
- qlonglong timestamp);
- void updateInteractiveWidget(int interactiveWidgetId, int value,
- qlonglong timestamp);
- void updateInteractiveWidget(int interactiveWidgetId, double value,
- qlonglong timestamp);
- // Incoming task update messages
- void updateTaskPrev(int taskId, int deviceId, qlonglong timestamp,
- qlonglong timestampStart, qlonglong timestampEnd);
- void updateTaskStart(int taskId, int deviceId, qlonglong timestamp);
- void updateTaskEnd(int taskId, qlonglong timestamp);
- // Outgoing widget update messages
- void interactiveWidgetUpdated(int interactiveWidgetId, bool value);
- void interactiveWidgetUpdated(int interactiveWidgetId, int value);
- void interactiveWidgetUpdated(int interactiveWidgetId, double value);
- /** SIGNALS **/
- signals:
- void preferencesDialogCreated(int);
- void sessionOpened();
- void sessionClosed();
- void clientLaunched();
- void dataEnabled(int dataId);
- void dataDisabled(int dataId);
- void paramValueUpdated(int paramId, bool paramValue);
- void paramValueUpdated(int paramId, int paramValue);
- void paramValueUpdated(int paramId, double paramValue);
- void debugEnabled(bool enabled);
- void debugStepped();
- void debugLocked();
- };
- #endif // MAINWINDOW_H
|