mirror of
https://github.com/WerWolv/ImHex.git
synced 2026-03-28 07:47:03 -05:00
Currently setting the time interval to auto save the project has no effect other than creating one initial save if the input file is unsaved. When a file is created and not saved it remains in a dirty state which prevented setting the state of the autosaved project to needing to be saved. Fixed by decoupling the state of the provider from the state of the autosave. When a provider is detected as being dirty it always makes the autosave as being needed once the time interval has elapsed. feat: Implemented the menus on the main menu bar that will be available when the text editor has focus. It allows you to load and save patterns using open and save and will tack changes if files on disk are modified externally. It also only opens the file chooser the first time you save a pattern file and subsequent changes save to the same file. If you want to save into another file and have the new file be tracked you can use Save As. Finally, export doesn't track the file on disk at all. this feature uses the same changes tracker class used elsewhere in imHex. fix: Changed the defaults of various shortcuts that were using Alt + a key to avoid possible problems with some keyboards. Shouldn't affect end users as their shortcuts are loaded from internal file but those who complain about the Alt key misbehaving will be asked to reset the keys to the new defaults. In addition, all globally accessible shortcuts were added the Allow while typing flag so that they can be used in any field that accepts text. New menu entries were added for debugging to make the pattern editor and the hex editor menus more like each other. Finally, the call to RegisterMainMenuEntries() when initializing views was moved to occur after the call to registerViews() so that menus are not repeated when set for different views.
120 lines
3.6 KiB
C++
120 lines
3.6 KiB
C++
#pragma once
|
|
|
|
#include <hex.hpp>
|
|
#include <hex/api/imhex_api.hpp>
|
|
#include <hex/api/event_manager.hpp>
|
|
|
|
/* Forward declarations */
|
|
namespace pl::ptrn { class Pattern; }
|
|
|
|
/* Interaction requests definitions */
|
|
namespace hex {
|
|
|
|
/**
|
|
* @brief Requests a selection change in the Hex editor
|
|
*
|
|
* This request is handled by the Hex editor, which proceeds to check if the selection is valid.
|
|
* If it is invalid, the Hex editor fires the `EventRegionSelected` event with nullptr region info.
|
|
*
|
|
* @param region the region that should be selected
|
|
*/
|
|
EVENT_DEF(RequestHexEditorSelectionChange, ImHexApi::HexEditor::ProviderRegion);
|
|
|
|
/**
|
|
* @brief Requests the Pattern editor to move selection
|
|
*
|
|
* Requests the Pattern editor to move the cursor's position to reflect the user's click or movement.
|
|
*
|
|
* @param line the target line
|
|
* @param column the target column
|
|
*/
|
|
EVENT_DEF(RequestPatternEditorSelectionChange, u32, u32);
|
|
|
|
/**
|
|
* @brief Requests a jump to a given pattern
|
|
*
|
|
* This request is fired by the Hex editor when the user asks to jump to the pattern.
|
|
* It is then caught and reflected by the Pattern data component.
|
|
*
|
|
* @param pattern the pattern to jump to
|
|
*/
|
|
EVENT_DEF(RequestJumpToPattern, const pl::ptrn::Pattern*);
|
|
|
|
/**
|
|
* @brief Requests to add a bookmark
|
|
*
|
|
* @param region the region to be bookmarked
|
|
* @param name the bookmark's name
|
|
* @param comment a comment
|
|
* @param color the color
|
|
* @param id the bookmark's unique ID
|
|
*/
|
|
EVENT_DEF(RequestAddBookmark, Region, std::string, std::string, color_t, u64*);
|
|
|
|
/**
|
|
* @brief Requests a bookmark removal
|
|
*
|
|
* @param id the bookmark's unique ID
|
|
*/
|
|
EVENT_DEF(RequestRemoveBookmark, u64);
|
|
|
|
/**
|
|
* @brief Request the Pattern editor to set its code
|
|
*
|
|
* This request allows the rest of ImHex to interface with the Pattern editor component, by setting its code.
|
|
* This allows for `.hexpat` file loading, and more.
|
|
*
|
|
* @param code the code's string
|
|
*/
|
|
EVENT_DEF(RequestSetPatternLanguageCode, std::string);
|
|
|
|
/**
|
|
* @brief Requests the Pattern editor to run the current code
|
|
*
|
|
* This is only ever used in the introduction tutorial.
|
|
*
|
|
* FIXME: the name is misleading, as for now this activates the pattern's auto-evaluation rather than a
|
|
* one-off execution
|
|
*/
|
|
EVENT_DEF(RequestRunPatternCode);
|
|
|
|
/**
|
|
* @brief Request to load a pattern language file
|
|
*
|
|
* FIXME: this request is unused, as now another component is responsible for pattern file loading.
|
|
* This request should be scrapped.
|
|
*
|
|
* @param path the pattern file's path
|
|
* @param bool track changes to the file on disk
|
|
*
|
|
*/
|
|
EVENT_DEF(RequestLoadPatternLanguageFile, std::fs::path, bool);
|
|
|
|
/**
|
|
* @brief Request to save a pattern language file
|
|
*
|
|
* FIXME: this request is unused, as now another component is responsible for pattern file saving.
|
|
* This request should be scrapped.
|
|
*
|
|
* @param path the pattern file's path
|
|
*/
|
|
EVENT_DEF(RequestSavePatternLanguageFile, std::fs::path);
|
|
|
|
/**
|
|
* @brief Requests ImHex to open and process a file
|
|
*
|
|
* @param path the file's path
|
|
*/
|
|
EVENT_DEF(RequestOpenFile, std::fs::path);
|
|
|
|
/**
|
|
* @brief Adds a virtual file in the Pattern editor
|
|
*
|
|
* @param path the file's path
|
|
* @param data the file's data
|
|
* @param region the impacted region
|
|
*/
|
|
EVENT_DEF(RequestAddVirtualFile, std::fs::path, std::vector<u8>, Region);
|
|
|
|
}
|