00001 #ifndef STATEPUBLISHER_TEMPLATE_H 00002 #define STATEPUBLISHER_TEMPLATE_H 00003 00004 #include <QObject> 00005 #include <QtPlugin> 00006 #include <QMenu> 00007 #include <functional> 00008 #include "PlotJuggler/plotdata.h" 00009 00010 00011 class StatePublisher{ 00012 00013 public: 00014 virtual bool enabled() const = 0; 00015 00016 virtual const char* name() const = 0; 00017 00018 virtual void updateState(PlotDataMap* datamap, double current_time) = 0; 00019 00020 virtual ~StatePublisher() {} 00021 00022 virtual void setEnabled(bool enabled) = 0; 00023 00024 virtual bool isDebugPlugin() { return false; } 00025 00026 virtual void setParentMenu(QMenu* menu) { _menu = menu; } 00027 00028 virtual QWidget* embeddedWidget() { return nullptr; } 00029 00030 protected: 00031 QMenu* _menu; 00032 }; 00033 00034 QT_BEGIN_NAMESPACE 00035 00036 #define StatePublisher_iid "com.icarustechnology.PlotJuggler.StatePublisher" 00037 00038 Q_DECLARE_INTERFACE(StatePublisher, StatePublisher_iid) 00039 00040 QT_END_NAMESPACE 00041 00042 00043 #endif 00044