SqpApplication.h
117 lines
| 3.6 KiB
| text/x-c
|
CLexer
r21 | #ifndef SCIQLOP_SQPAPPLICATION_H | |||
#define SCIQLOP_SQPAPPLICATION_H | ||||
#include "SqpApplication.h" | ||||
r1462 | #include <QAction> | |||
r21 | #include <QApplication> | |||
#include <QLoggingCategory> | ||||
r1462 | #include <QMenuBar> | |||
#include <QProxyStyle> | ||||
#include <QStyleOption> | ||||
#include <QWidget> | ||||
#include <QWidgetAction> | ||||
r21 | ||||
#include <Common/spimpl.h> | ||||
Q_DECLARE_LOGGING_CATEGORY(LOG_SqpApplication) | ||||
Alexandre Leroux
|
r34 | #if defined(sqpApp) | ||
#undef sqpApp | ||||
#endif | ||||
r1462 | #define sqpApp (static_cast<SqpApplication*>(QCoreApplication::instance())) | |||
Alexandre Leroux
|
r34 | |||
Alexandre Leroux
|
r33 | class DataSourceController; | ||
r339 | class NetworkController; | |||
r193 | class TimeController; | |||
Alexandre Leroux
|
r111 | class VariableController; | ||
r1348 | class VariableController2; | |||
class VariableModel2; | ||||
r53 | class VisualizationController; | |||
r1075 | class DragDropGuiController; | |||
r1076 | class ActionsGuiController; | |||
r1144 | class CatalogueController; | |||
Alexandre Leroux
|
r33 | |||
r1462 | /* stolen from here https://forum.qt.io/topic/90403/show-tooltip-immediatly/6 */ | |||
class MyProxyStyle : public QProxyStyle | ||||
{ | ||||
public: | ||||
using QProxyStyle::QProxyStyle; | ||||
int styleHint(StyleHint hint, const QStyleOption* option = nullptr, | ||||
const QWidget* widget = nullptr, QStyleHintReturn* returnData = nullptr) const override | ||||
{ | ||||
if (widget) | ||||
auto cname = widget->metaObject()->className(); | ||||
if (hint == QStyle::SH_ToolButton_PopupDelay && widget | ||||
/*&& widget->inherits(QWidgetAction::staticMetaObject.className())*/) | ||||
{ | ||||
return 0; | ||||
} | ||||
return QProxyStyle::styleHint(hint, option, widget, returnData); | ||||
} | ||||
}; | ||||
r21 | /** | |||
* @brief The SqpApplication class aims to make the link between SciQlop | ||||
Alexandre Leroux
|
r32 | * and its plugins. This is the intermediate class that SciQlop has to use | ||
* in the way to connect a data source. Please first use load method to initialize | ||||
r21 | * a plugin specified by its metadata name (JSON plugin source) then others specifics | |||
Alexandre Leroux
|
r32 | * method will be able to access it. | ||
r21 | * You can load a data source driver plugin then create a data source. | |||
*/ | ||||
r24 | ||||
r1462 | class SqpApplication : public QApplication | |||
{ | ||||
r21 | Q_OBJECT | |||
public: | ||||
r1462 | explicit SqpApplication(int& argc, char** argv); | |||
~SqpApplication() override; | ||||
r21 | void initialize(); | |||
r53 | /// Accessors for the differents sciqlop controllers | |||
r1462 | DataSourceController& dataSourceController() noexcept; | |||
NetworkController& networkController() noexcept; | ||||
TimeController& timeController() noexcept; | ||||
VariableController2& variableController() noexcept; | ||||
r1348 | std::shared_ptr<VariableController2> variableControllerOwner() noexcept; | |||
//@TODO there should not be any global model it's just GUI impl detail | ||||
r1462 | // VariableModel2 &variableModel() noexcept; | |||
VisualizationController& visualizationController() noexcept; | ||||
CatalogueController& catalogueController() noexcept; | ||||
Alexandre Leroux
|
r33 | |||
r850 | /// Accessors for the differents sciqlop helpers, these helpers classes are like controllers but | |||
/// doesn't live in a thread and access gui | ||||
r1462 | DragDropGuiController& dragDropGuiController() noexcept; | |||
ActionsGuiController& actionsGuiController() noexcept; | ||||
enum class PlotsInteractionMode | ||||
{ | ||||
None, | ||||
ZoomBox, | ||||
DragAndDrop, | ||||
SelectionZones | ||||
}; | ||||
enum class PlotsCursorMode | ||||
{ | ||||
NoCursor, | ||||
Vertical, | ||||
Temporal, | ||||
Horizontal, | ||||
Cross | ||||
}; | ||||
r957 | ||||
PlotsInteractionMode plotsInteractionMode() const; | ||||
void setPlotsInteractionMode(PlotsInteractionMode mode); | ||||
PlotsCursorMode plotsCursorMode() const; | ||||
void setPlotsCursorMode(PlotsCursorMode mode); | ||||
r21 | private: | |||
class SqpApplicationPrivate; | ||||
spimpl::unique_impl_ptr<SqpApplicationPrivate> impl; | ||||
}; | ||||
#endif // SCIQLOP_SQPAPPLICATION_H | ||||