mirror of
https://github.com/WerWolv/ImHex.git
synced 2026-04-01 21:17:44 -05:00
ui/ux: Implement toolbar button functions
This commit is contained in:
@@ -21,7 +21,7 @@ namespace hex {
|
||||
|
||||
class EventId {
|
||||
public:
|
||||
constexpr EventId(const char *func = __builtin_FUNCTION(), u32 line = __builtin_LINE()) {
|
||||
explicit constexpr EventId(const char *func = __builtin_FUNCTION(), u32 line = __builtin_LINE()) {
|
||||
this->m_hash = line ^ 123456789;
|
||||
for (auto c : std::string_view(func)) {
|
||||
this->m_hash = (this->m_hash >> 5) | (this->m_hash << 27);
|
||||
@@ -43,7 +43,7 @@ namespace hex {
|
||||
struct Event : public EventBase {
|
||||
using Callback = std::function<void(Params...)>;
|
||||
|
||||
explicit Event(Callback func) noexcept : m_func(func) {}
|
||||
explicit Event(Callback func) noexcept : m_func(std::move(func)) {}
|
||||
|
||||
void operator()(Params... params) const noexcept {
|
||||
this->m_func(params...);
|
||||
@@ -83,10 +83,10 @@ namespace hex {
|
||||
}
|
||||
|
||||
template<typename E>
|
||||
static void post(auto ... args) noexcept {
|
||||
static void post(auto&& ... args) noexcept {
|
||||
for (const auto &[id, event] : s_events) {
|
||||
if (id == E::id)
|
||||
(*reinterpret_cast<E *>(event))(args...);
|
||||
(*reinterpret_cast<E *>(event))(std::forward<decltype(args)>(args)...);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,6 +113,8 @@ namespace hex {
|
||||
EVENT_DEF(RequestAddBookmark, ImHexApi::Bookmarks::Entry);
|
||||
EVENT_DEF(RequestAppendPatternLanguageCode, std::string);
|
||||
EVENT_DEF(RequestChangeWindowTitle, std::string);
|
||||
EVENT_DEF(RequestCloseImHex);
|
||||
EVENT_DEF(RequestCloseImHex, bool);
|
||||
|
||||
EVENT_DEF(QuerySelection, Region&);
|
||||
|
||||
}
|
||||
@@ -23,6 +23,7 @@ namespace hex::prv {
|
||||
virtual bool isReadable() = 0;
|
||||
virtual bool isWritable() = 0;
|
||||
virtual bool isResizable() = 0;
|
||||
virtual bool isSavable() = 0;
|
||||
|
||||
virtual void read(u64 offset, void *buffer, size_t size, bool overlays = true);
|
||||
virtual void readRelative(u64 offset, void *buffer, size_t size, bool overlays = true);
|
||||
@@ -31,6 +32,9 @@ namespace hex::prv {
|
||||
|
||||
virtual void resize(ssize_t newSize);
|
||||
|
||||
virtual void save();
|
||||
virtual void saveAs(const std::string &path);
|
||||
|
||||
virtual void readRaw(u64 offset, void *buffer, size_t size) = 0;
|
||||
virtual void writeRaw(u64 offset, const void *buffer, size_t size) = 0;
|
||||
virtual size_t getActualSize() = 0;
|
||||
|
||||
Reference in New Issue
Block a user