mirror of
https://github.com/Sani7/remote-ui.git
synced 2026-10-27 06:01:14 +01:00
Move from function pointers to std::function
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
#include "UI_button.hpp"
|
#include "UI_button.hpp"
|
||||||
|
|
||||||
UI_button::UI_button(std::string id, std::string text, Color fg_color, Color bg_color, UI_button_on_click on_click)
|
UI_button::UI_button(std::string id, std::string text, Color fg_color, Color bg_color, std::function<void(std::string)> on_click)
|
||||||
: UI_item(id, UI_BUTTON_TYPE, text, 12, fg_color, bg_color)
|
: UI_item(id, UI_BUTTON_TYPE, text, 12, fg_color, bg_color)
|
||||||
{
|
{
|
||||||
this->p_on_click = on_click;
|
this->p_on_click = on_click;
|
||||||
|
|||||||
@@ -3,12 +3,11 @@
|
|||||||
#include "UI_item.hpp"
|
#include "UI_item.hpp"
|
||||||
|
|
||||||
#define UI_BUTTON_TYPE std::string("UIButton")
|
#define UI_BUTTON_TYPE std::string("UIButton")
|
||||||
typedef void(*UI_button_on_click)(std::string id);
|
|
||||||
|
|
||||||
class UI_button : public UI_item
|
class UI_button : public UI_item
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
UI_button(std::string id, std::string text, Color fg_color, Color bg_color, UI_button_on_click on_click);
|
UI_button(std::string id, std::string text, Color fg_color, Color bg_color, std::function<void(std::string)> on_click = nullptr);
|
||||||
UI_button(const json& j);
|
UI_button(const json& j);
|
||||||
|
|
||||||
void from_json(const json& j) override;
|
void from_json(const json& j) override;
|
||||||
@@ -16,5 +15,5 @@ class UI_button : public UI_item
|
|||||||
|
|
||||||
void click() const;
|
void click() const;
|
||||||
private:
|
private:
|
||||||
UI_button_on_click p_on_click = nullptr;
|
std::function<void(std::string)> p_on_click = nullptr;
|
||||||
};
|
};
|
||||||
@@ -5,7 +5,7 @@ UI_checkbox::UI_checkbox()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
UI_checkbox::UI_checkbox(std::string id, std::string text, Color fg_color, Color bg_color, std::vector<std::string> options, UI_checkbox_on_change on_change)
|
UI_checkbox::UI_checkbox(std::string id, std::string text, Color fg_color, Color bg_color, std::vector<std::string> options, std::function<void(std::string, std::vector<std::string>)> on_change)
|
||||||
: UI_x_boxes(id, UI_CHECKBOX_TYPE, text, fg_color, bg_color, options), p_selected(), p_on_change(on_change)
|
: UI_x_boxes(id, UI_CHECKBOX_TYPE, text, fg_color, bg_color, options), p_selected(), p_on_change(on_change)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,13 +4,12 @@
|
|||||||
#include "UI_x_boxes.hpp"
|
#include "UI_x_boxes.hpp"
|
||||||
|
|
||||||
#define UI_CHECKBOX_TYPE std::string("UIcheckbox")
|
#define UI_CHECKBOX_TYPE std::string("UIcheckbox")
|
||||||
typedef void (*UI_checkbox_on_change) (std::string id, std::vector<std::string> selected);
|
|
||||||
|
|
||||||
class UI_checkbox : public UI_x_boxes
|
class UI_checkbox : public UI_x_boxes
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
UI_checkbox();
|
UI_checkbox();
|
||||||
UI_checkbox(std::string id, std::string text, Color fg_color, Color bg_color, std::vector<std::string> options, UI_checkbox_on_change on_change = nullptr);
|
UI_checkbox(std::string id, std::string text, Color fg_color, Color bg_color, std::vector<std::string> options, std::function<void(std::string, std::vector<std::string>)> on_change = nullptr);
|
||||||
UI_checkbox(const json& j);
|
UI_checkbox(const json& j);
|
||||||
|
|
||||||
void toggle_selected(size_t selected);
|
void toggle_selected(size_t selected);
|
||||||
@@ -23,5 +22,5 @@ class UI_checkbox : public UI_x_boxes
|
|||||||
private:
|
private:
|
||||||
std::vector<bool> p_selected;
|
std::vector<bool> p_selected;
|
||||||
|
|
||||||
UI_checkbox_on_change p_on_change;
|
std::function<void(std::string, std::vector<std::string>)> p_on_change;
|
||||||
};
|
};
|
||||||
@@ -5,16 +5,11 @@ UI_combobox::UI_combobox()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
UI_combobox::UI_combobox(std::string id, std::string text, Color fg_color, Color bg_color, std::vector<std::string> options, size_t selected, UI_combobox_on_change on_change)
|
UI_combobox::UI_combobox(std::string id, std::string text, Color fg_color, Color bg_color, std::vector<std::string> options, size_t selected, std::function<void(std::string, std::string)> on_change)
|
||||||
: UI_x_boxes(id, UI_COMBOBOX_TYPE, text, fg_color, bg_color, options), p_selected(selected), p_on_change(on_change)
|
: UI_x_boxes(id, UI_COMBOBOX_TYPE, text, fg_color, bg_color, options), p_selected(selected), p_on_change(on_change)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
UI_combobox::UI_combobox(std::string id, std::string text, Color fg_color, Color bg_color, std::vector<std::string> options, UI_combobox_on_change on_change)
|
|
||||||
: UI_x_boxes(id, UI_COMBOBOX_TYPE, text, fg_color, bg_color, options), p_selected(0), p_on_change(on_change)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
UI_combobox::UI_combobox(const json& j)
|
UI_combobox::UI_combobox(const json& j)
|
||||||
: UI_x_boxes(UI_COMBOBOX_TYPE), p_on_change(nullptr)
|
: UI_x_boxes(UI_COMBOBOX_TYPE), p_on_change(nullptr)
|
||||||
{
|
{
|
||||||
@@ -28,7 +23,7 @@ void UI_combobox::set_selected(size_t selected)
|
|||||||
p_selected = selected;
|
p_selected = selected;
|
||||||
if (p_on_change != nullptr)
|
if (p_on_change != nullptr)
|
||||||
{
|
{
|
||||||
p_on_change(p_id, selected);
|
p_on_change(p_id, selected_text());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,17 +1,16 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <functional>
|
||||||
#include "UI_item.hpp"
|
#include "UI_item.hpp"
|
||||||
#include "UI_x_boxes.hpp"
|
#include "UI_x_boxes.hpp"
|
||||||
|
|
||||||
#define UI_COMBOBOX_TYPE std::string("UIcombobox")
|
#define UI_COMBOBOX_TYPE std::string("UIcombobox")
|
||||||
typedef void (*UI_combobox_on_change) (std::string id, size_t selected);
|
|
||||||
|
|
||||||
class UI_combobox : public UI_x_boxes
|
class UI_combobox : public UI_x_boxes
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
UI_combobox();
|
UI_combobox();
|
||||||
UI_combobox(std::string id, std::string text, Color fg_color, Color bg_color, std::vector<std::string> options, size_t selected, UI_combobox_on_change on_change = nullptr);
|
UI_combobox(std::string id, std::string text, Color fg_color, Color bg_color, std::vector<std::string> options, size_t selected = 0, std::function<void(std::string, std::string)> on_change = nullptr);
|
||||||
UI_combobox(std::string id, std::string text, Color fg_color, Color bg_color, std::vector<std::string> options, UI_combobox_on_change on_change = nullptr);
|
|
||||||
UI_combobox(const json& j);
|
UI_combobox(const json& j);
|
||||||
|
|
||||||
void set_selected(size_t selected);
|
void set_selected(size_t selected);
|
||||||
@@ -24,5 +23,5 @@ class UI_combobox : public UI_x_boxes
|
|||||||
private:
|
private:
|
||||||
size_t p_selected;
|
size_t p_selected;
|
||||||
|
|
||||||
UI_combobox_on_change p_on_change;
|
std::function<void(std::string, std::string)> p_on_change;
|
||||||
};
|
};
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
#include <functional>
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <nlohmann/json.hpp>
|
#include <nlohmann/json.hpp>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#include "UI_slider.hpp"
|
#include "UI_slider.hpp"
|
||||||
|
|
||||||
UI_slider::UI_slider(std::string id, std::string text, Color fg_color, Color bg_color, double min, double max, double value, UI_slider_on_change on_change)
|
UI_slider::UI_slider(std::string id, std::string text, Color fg_color, Color bg_color, double min, double max, double value, std::function<void(std::string, double)> on_change)
|
||||||
: UI_item(id, UI_SLIDER_TYPE, text, 12, fg_color, bg_color), p_min(min), p_max(max), p_value(value)
|
: UI_item(id, UI_SLIDER_TYPE, text, 12, fg_color, bg_color), p_min(min), p_max(max), p_value(value)
|
||||||
{
|
{
|
||||||
this->p_on_change = on_change;
|
this->p_on_change = on_change;
|
||||||
|
|||||||
@@ -2,12 +2,11 @@
|
|||||||
#include "UI_item.hpp"
|
#include "UI_item.hpp"
|
||||||
|
|
||||||
#define UI_SLIDER_TYPE std::string("UISlider")
|
#define UI_SLIDER_TYPE std::string("UISlider")
|
||||||
typedef void(*UI_slider_on_change)(std::string, double value);
|
|
||||||
|
|
||||||
class UI_slider : public UI_item
|
class UI_slider : public UI_item
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
UI_slider(std::string id, std::string text, Color fg_color, Color bg_color, double min, double max, double value, UI_slider_on_change on_change);
|
UI_slider(std::string id, std::string text, Color fg_color, Color bg_color, double min, double max, double value, std::function<void(std::string, double)> on_change = nullptr);
|
||||||
UI_slider(const json& j);
|
UI_slider(const json& j);
|
||||||
|
|
||||||
void set_value(double value);
|
void set_value(double value);
|
||||||
@@ -20,5 +19,5 @@ class UI_slider : public UI_item
|
|||||||
double p_max;
|
double p_max;
|
||||||
double p_value;
|
double p_value;
|
||||||
|
|
||||||
UI_slider_on_change p_on_change;
|
std::function<void(std::string, double)> p_on_change;
|
||||||
};
|
};
|
||||||
Reference in New Issue
Block a user