### 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>
85 lines
2.9 KiB
C++
85 lines
2.9 KiB
C++
#pragma once
|
|
|
|
#include <hex.hpp>
|
|
#include <hex/api/event_manager.hpp>
|
|
|
|
/* Lifecycle requests definitions */
|
|
namespace hex {
|
|
|
|
/**
|
|
* @brief Emit a request to add an initialization task to the list
|
|
*
|
|
* These tasks will be executed at startup.
|
|
*
|
|
* @param name Name of the init task
|
|
* @param isAsync Whether the task is asynchronous (true if yes)
|
|
* @param callbackFunction The function to call to execute the task
|
|
*/
|
|
EVENT_DEF(RequestAddInitTask, std::string, bool, std::function<bool()>);
|
|
|
|
/**
|
|
* @brief Emit a request to add an exit task to the list
|
|
*
|
|
* These tasks will be executed during the exit phase.
|
|
*
|
|
* FIXME: request is unused and should be scrapped.
|
|
*
|
|
* @param name Name of the exit task
|
|
* @param callbackFunction The function to call to execute the task
|
|
*/
|
|
EVENT_DEF(RequestAddExitTask, std::string, std::function<bool()>);
|
|
|
|
/**
|
|
* @brief Requests ImHex's graceful shutdown
|
|
*
|
|
* If there are no questions (bool set to true), ImHex closes immediately.
|
|
* If set to false, there is a procedure run to prompt a confirmation to the user.
|
|
*
|
|
* @param noQuestions true if no questions
|
|
*/
|
|
EVENT_DEF(RequestCloseImHex, bool);
|
|
|
|
/**
|
|
* @brief Requests ImHex's restart
|
|
*
|
|
* This event is necessary for ImHex to restart in the main loop for native and web platforms,
|
|
* as ImHex cannot simply close and re-open.
|
|
*
|
|
* This event serves no purpose on Linux, Windows and macOS platforms.
|
|
*/
|
|
EVENT_DEF(RequestRestartImHex);
|
|
|
|
/**
|
|
* @brief Requests the initialization of theme handlers
|
|
*
|
|
* This is called during ImGui bootstrapping, and should not be called at any other time.
|
|
*/
|
|
EVENT_DEF(RequestInitThemeHandlers);
|
|
|
|
/**
|
|
* @brief Requests version and first-startup checks
|
|
*
|
|
* This request is called during ImHex's startup, and allows ImHex to check if it was updated since last launch.
|
|
* It also ensures newcomers (that open ImHex for the first time) are greeted with the tutorial.
|
|
*
|
|
* FIXME: the name is misleading, as this request does not effectively start any migration. It only executes
|
|
* checks about ImHex's version. The name should be changed to reflect this behaviour.
|
|
*/
|
|
EVENT_DEF(RequestStartMigration);
|
|
|
|
/**
|
|
* @brief Send a subcommand to the main Imhex instance
|
|
*
|
|
* This request is called to send a subcommand to the main ImHex instance.
|
|
* This subcommand will then be executed by a handler when ImHex finishing initializing
|
|
* (`EventImHexStartupFinished`).
|
|
*
|
|
* FIXME: change the name so that it is prefixed with "Request" like every other request.
|
|
*
|
|
* @param name the subcommand's name
|
|
* @param data the subcommand's data
|
|
*/
|
|
EVENT_DEF(SendMessageToMainInstance, const std::string, const std::vector<u8>&);
|
|
|
|
}
|