Files
OrcaSlicer-bambulab/src/slic3r/GUI/Event.hpp
T

72 lines
1.5 KiB
C++
Raw Normal View History

#ifndef slic3r_Events_hpp_
#define slic3r_Events_hpp_
#include <array>
#include <wx/event.h>
namespace Slic3r {
namespace GUI {
struct SimpleEvent : public wxEvent
{
2018-10-03 14:07:10 +02:00
SimpleEvent(wxEventType type, wxObject* origin = nullptr) : wxEvent(0, type)
{
2018-10-03 16:27:02 +02:00
m_propagationLevel = wxEVENT_PROPAGATE_MAX;
2018-10-03 14:07:10 +02:00
SetEventObject(origin);
}
virtual wxEvent* Clone() const
{
2018-10-03 14:07:10 +02:00
return new SimpleEvent(GetEventType(), GetEventObject());
}
};
template<class T, size_t N> struct ArrayEvent : public wxEvent
{
std::array<T, N> data;
2018-10-03 14:07:10 +02:00
ArrayEvent(wxEventType type, std::array<T, N> data, wxObject* origin = nullptr)
: wxEvent(0, type), data(std::move(data))
{
2018-10-03 16:27:02 +02:00
m_propagationLevel = wxEVENT_PROPAGATE_MAX;
2018-10-03 14:07:10 +02:00
SetEventObject(origin);
}
virtual wxEvent* Clone() const
{
2018-10-03 14:07:10 +02:00
return new ArrayEvent<T, N>(GetEventType(), data, GetEventObject());
}
};
2020-03-06 15:10:58 +01:00
template<class T> struct Event : public wxEvent
{
T data;
2020-03-06 15:10:58 +01:00
Event(wxEventType type, const T &data, wxObject* origin = nullptr)
: wxEvent(0, type), data(std::move(data))
{
m_propagationLevel = wxEVENT_PROPAGATE_MAX;
SetEventObject(origin);
}
Event(wxEventType type, T&& data, wxObject* origin = nullptr)
2018-10-03 14:07:10 +02:00
: wxEvent(0, type), data(std::move(data))
{
2018-10-03 16:27:02 +02:00
m_propagationLevel = wxEVENT_PROPAGATE_MAX;
2018-10-03 14:07:10 +02:00
SetEventObject(origin);
}
virtual wxEvent* Clone() const
{
2020-03-06 15:10:58 +01:00
return new Event<T>(GetEventType(), data, GetEventObject());
}
};
}
}
#endif // slic3r_Events_hpp_