### Problem description This PR addresses issue #2013 that described a cluttered Event Manager. This is a DX issue and should not impact the users whatsoever. ### Implementation description The changes revolve around three main points: 1. the Event Manager (`event_manager.hpp`) was split into four categories: GUI, Interaction, Lifecycle, and Provider, and two types: Events, and Requests. This results in the following files: - `events_gui.hpp` - `events_interaction.hpp` - `events_lifecycle.hpp` - `events_provider.hpp` - `requests_gui.hpp` - `requests_interaction.hpp` - `requests_lifecycle.hpp` - `requests_provider.hpp` 2. Every event and request now has its own piece of documentation, with a `@brief`, accompanied by a longer comment if needed, and gets its `@param`s described. 3. The old `event_manager.hpp` import was removed and replaced by the correct imports wherever needed, as to reduce spread of those files only to where they are truly useful. ### Additional things The commits have been split into (chrono-)logical steps: - `feat`: split the Event Manager, and replace the imports - `refactor`, `chore`: make various small changes to match the required structure - `docs`: add documentation for events and requests Hopefully, this will help to review the PR. *Note: Beware of very long rebuild times in between the commits, use them sparingly! The Actions will ensure this PR builds anyways* Closes #2013 --------- Signed-off-by: BioTheWolff <47079795+BioTheWolff@users.noreply.github.com> Co-authored-by: Nik <werwolv98@gmail.com>
158 lines
4.9 KiB
C++
158 lines
4.9 KiB
C++
#pragma once
|
|
|
|
#include <hex/api/event_manager.hpp>
|
|
#include <hex/helpers/patches.hpp>
|
|
|
|
/* Forward declarations */
|
|
namespace hex { class Achievement; }
|
|
|
|
/* Interaction events definitions */
|
|
namespace hex {
|
|
|
|
/**
|
|
* @brief Signals a file was loaded
|
|
*
|
|
* FIXME: this event is unused and should be scrapped.
|
|
*
|
|
* @param path the loaded file's path
|
|
*/
|
|
EVENT_DEF(EventFileLoaded, std::fs::path);
|
|
|
|
/**
|
|
* @brief Signals a change in the current data
|
|
*
|
|
* Enables provider reaction to data change, especially the data inspector.
|
|
*
|
|
* This is caused by the following:
|
|
* - an explicit provider reload, requested by the user (Ctrl+R)
|
|
* - any user action that results in the creation of an "undo" stack action (generally a data modification)
|
|
*
|
|
* @param provider the Provider subject to the data change
|
|
*/
|
|
EVENT_DEF(EventDataChanged, prv::Provider *);
|
|
|
|
/**
|
|
* @brief Signals a change in highlighting
|
|
*
|
|
* The event's only purpose is for the Hex editor to clear highlights when receiving this event.
|
|
*/
|
|
EVENT_DEF(EventHighlightingChanged);
|
|
|
|
/**
|
|
* @brief Informs of a provider region being selected
|
|
*
|
|
* This is very generally used to signal user actions that select a specific region within the provider.
|
|
* It is also used to pass on regions when the provider changes.
|
|
*
|
|
* @param providerRegion the provider-aware region being selected
|
|
*/
|
|
EVENT_DEF(EventRegionSelected, ImHexApi::HexEditor::ProviderRegion);
|
|
|
|
/**
|
|
* @brief Signals a theme change
|
|
*
|
|
* On Windows OS, this is used to reflect the theme color onto the window frame.
|
|
*/
|
|
EVENT_DEF(EventThemeChanged);
|
|
|
|
/**
|
|
* @brief Signals that a bookmark was created
|
|
*
|
|
* For now, this event's only purpose is to unlock an achievement.
|
|
*
|
|
* @param entry the new bookmark
|
|
*/
|
|
EVENT_DEF(EventBookmarkCreated, ImHexApi::Bookmarks::Entry&);
|
|
|
|
/**
|
|
* @brief Called upon creation of an IPS patch.
|
|
* As for now, the event only serves a purpose for the achievement unlock.
|
|
*
|
|
* @param data the pointer to the patch content's start
|
|
* @param size the patch data size
|
|
* @param kind the patch's kind
|
|
*/
|
|
EVENT_DEF(EventPatchCreated, const u8*, u64, const PatchKind);
|
|
|
|
/**
|
|
* @brief Signals the beginning of evaluation of the current pattern
|
|
*
|
|
* This allows resetting the drawer view for the pattern data while we wait for the execution completion.
|
|
*/
|
|
EVENT_DEF(EventPatternEvaluating);
|
|
|
|
/**
|
|
* @brief Signals the completion of the pattern evaluation
|
|
*
|
|
* This causes another reset in the drawer view, to refresh the table displayed to the user.
|
|
*
|
|
* @param code the execution's status code
|
|
*/
|
|
EVENT_DEF(EventPatternExecuted, const std::string&);
|
|
|
|
/**
|
|
* @brief Denotes when pattern editor has changed
|
|
*
|
|
* FIXME: this event is unused and should be scrapped.
|
|
*/
|
|
EVENT_DEF(EventPatternEditorChanged, const std::string&);
|
|
|
|
/**
|
|
* @brief Signals that a Content Store item was downloaded
|
|
*
|
|
* FIXME: this event is unused and should be scrapped.
|
|
*
|
|
* @param path the item's path on the filesystem
|
|
*/
|
|
EVENT_DEF(EventStoreContentDownloaded, const std::fs::path&);
|
|
|
|
/**
|
|
* @brief Signals the removal of a Content Store item
|
|
*
|
|
* Note: at the time of the event firing, the item has already been removed from the filesystem.
|
|
*
|
|
* FIXME: this event is unused and should be scrapped.
|
|
*
|
|
* @param path the item's old file path where it used to be in the filesystem
|
|
*/
|
|
EVENT_DEF(EventStoreContentRemoved, const std::fs::path&);
|
|
|
|
/**
|
|
* @brief Signals the unlocking of an achievement
|
|
*
|
|
* This is used by the achievement manager to refresh the achievement display, as well as store progress to
|
|
* the appropriate storage file.
|
|
*
|
|
* @param achievement the achievement that was unlocked
|
|
*/
|
|
EVENT_DEF(EventAchievementUnlocked, const Achievement&);
|
|
|
|
/**
|
|
* @brief Signals a click on the search box
|
|
*
|
|
* As there are different behaviours depending on the click (left or right) done by the user,
|
|
* this allows the consequences of said click to be registered in their own components.
|
|
*
|
|
* @param button the ImGuiMouseButton's value
|
|
*/
|
|
EVENT_DEF(EventSearchBoxClicked, u32);
|
|
|
|
/**
|
|
* @brief Updates on whether a file is being dragged into ImHex
|
|
*
|
|
* Allows ImGUi to display a file dragging information on screen when a file is being dragged.
|
|
*
|
|
* @param isFileDragged true if a file is being dragged
|
|
*/
|
|
EVENT_DEF(EventFileDragged, bool);
|
|
|
|
/**
|
|
* @brief Triggers loading when a file is dropped
|
|
*
|
|
* The event fires when a file is dropped into ImHex, which passes it to file handlers to load it.
|
|
*
|
|
* @param path the dropped file's path
|
|
*/
|
|
EVENT_DEF(EventFileDropped, std::fs::path);
|
|
|
|
} |