#ifndef SIMULATORBASE_H #define SIMULATORBASE_H #include #include #include "web_socket_wrapper.h" #include "networkerror.h" #include "helpers.h" #include #include "IterableEnum.hpp" #include using json = nlohmann::json; #define QD qDebug() << "Debug:" << __FILE__ << ":" << __LINE__ << ":" << __FUNCTION__ << ":" class SimulatorBase : public QMainWindow { Q_OBJECT public: explicit SimulatorBase(Web_socket_wrapper* api, QWidget* parent = nullptr); void setup_cb(void); void sim_update(void); virtual QWidget* id_to_ui(size_t id) {return nullptr;} virtual QLabel* id_to_label(size_t name) {return nullptr;} virtual QString format_value(size_t name, double val) {return QString();} signals: void quit(); protected: void on_event_cb(json& j); void on_cmd_cb(json& j); void UI_item_parser(json& input); virtual void process_ui_label(json& uiItem); virtual void process_ui_slider(json& uiItem); virtual void process_ui_dial(json& uiItem); virtual void process_ui_thermo(json& uiItem); virtual void process_ui_textbox(json& uiItem); virtual void process_ui_combobox(json& uiItem); virtual void process_ui_radiobutton(json& uiItem); virtual void process_ui_button(json& uiItem); virtual void process_ui_led(json& uiItem); void showEvent(QShowEvent* event); void closeEvent(QCloseEvent* event); Web_socket_wrapper* m_web_socket; QTimer* timer_update; uint32_t refresh_rate; NetworkError* error_dialog; bool closed = false; }; #endif // SIMULATORBASE_H