Files
remote-ui/client/simulator_base.hpp
T
sani7 0854a6ba7e UI
Add spinboxes
2026-02-14 14:31:11 +01:00

85 lines
2.9 KiB
C++

#ifndef SIMULATOR_BASE_H
#define SIMULATOR_BASE_H
#include "IterableEnum.hpp"
#include "helpers.hpp"
#include "led.hpp"
#include "networkerror.hpp"
#include "spdlog/spdlog.h"
#include "web_socket_wrapper.hpp"
#include <QMainWindow>
#include <QWidget>
#include <magic_enum/magic_enum.hpp>
#include <nlohmann/json.hpp>
using json = nlohmann::json;
#define PUSH_UI_ITEM(item) push_ui_item(ui->item)
class Simulator_base : public QMainWindow
{
Q_OBJECT
public:
explicit Simulator_base(QString sim_name, Web_socket_wrapper *api, QWidget *parent = nullptr);
void sim_update(void);
QString sim_name() const;
QWidget *id_to_ui(size_t id);
virtual QLabel *id_to_label(size_t name)
{
return nullptr;
}
signals:
void quit();
protected:
void on_event_cb(json &j);
void on_cmd_cb(json &j);
void push_ui_item(QWidget *item);
void UI_item_parser(json &input);
virtual void process_ui_label(json &ui_item, QWidget* widget);
virtual void process_ui_slider(json &ui_item, QWidget* widget);
virtual void process_ui_dial(json &ui_item, QWidget* widget);
virtual void process_ui_thermo(json &ui_item, QWidget* widget);
virtual void process_ui_textbox(json &ui_item, QWidget* widget);
virtual void process_ui_combobox(json &ui_item, QWidget* widget);
virtual void process_ui_radiobutton(json &ui_item, QWidget* widget);
virtual void process_ui_checkbox(json &ui_item, QWidget* widget);
virtual void process_ui_button(json &ui_item, QWidget* widget);
virtual void process_ui_led(json &ui_item, QWidget* widget);
virtual void process_ui_spinbox(json &ui_item, QWidget* widget);
virtual void process_ui_double_spinbox(json &ui_item, QWidget* widget);
virtual void process_ui_hex_spinbox(json &ui_item, QWidget* widget);
virtual void process_ui_plot(json &ui_item, QWidget* widget);
virtual void process_ui_table(json &ui_item, QWidget* widget);
virtual void process_ui_can(json &ui_item, QWidget* widget);
void setup_ui_item(QWidget *item, size_t index);
void setup_button(QWidget *item, size_t index);
void setup_combobox(QWidget *item, size_t index);
void setup_checkbox(QWidget *item, size_t index);
void setup_dial(QWidget *item, size_t index);
void setup_slider(QWidget *item, size_t index);
void setup_spinbox(QWidget *item, size_t index);
void setup_double_spinbox(QWidget *item, size_t index);
void setup_hex_spinbox(QWidget *item, size_t index);
void setup_qwtplot(QWidget *item, size_t index);
void setup_can_ui(QWidget *item, size_t index);
void showEvent(QShowEvent *event);
void closeEvent(QCloseEvent *event);
private:
Web_socket_wrapper *m_web_socket;
QString m_sim_name;
QTimer *m_timer_update;
uint32_t m_refresh_rate;
NetworkError *m_error_dialog;
bool m_open = false;
std::vector<QWidget *> m_ui_lookup;
};
#endif // SIMULATOR_BASE_H