Commit Graph

135 Commits

Author SHA1 Message Date
WerWolv 1f2fe6b93d sys: Merge splash screen and ImHex into one application
This fixes so many issues the previous implementation had, especially on Unix
2021-04-20 21:46:48 +02:00
WerWolv 5b692067d8 patterns/fix: Accessing variables in global scope no longer crashes 2021-04-18 20:26:23 +02:00
WerWolv ebbbcafe5c
sys: Implement more functionality into splash screen (#223)
* build: Add libcurl

* build: Stop the whole static linking on Windows mess. There's no use anymore

* sys: Added update detector and moved some startup tasks to splash screen

* sys: Updated ImHex icon

* fix: Settings button on welcome page once again works

* build: Fix build on Linux

* sys: Fixed splash window not searching all paths for resources
2021-04-18 20:24:42 +02:00
WerWolv 93e1c4c4e8 sys: Drastically revamp the relative vs absolute address mess 2021-04-16 21:50:15 +02:00
WerWolv 771bb22962 sys: Improve shortcut api 2021-04-16 19:43:54 +02:00
WerWolv a3b3eeb56a ui: Improve how pointers are displayed in pattern data view 2021-04-16 15:59:13 +02:00
WerWolv c3e41710c7 patterns: Properly apply base addresses to pointers 2021-04-16 10:11:10 +02:00
WerWolv 386ae7d8c3 fix: Using pointers no longer crashes ImHex 2021-04-15 15:56:39 +02:00
WerWolv 2e338ebc01 fix: Properly localize Undo and Redo 2021-04-14 09:03:41 +02:00
WerWolv 8314b147d5 patterns: Fix sign extension for signed types.
Fixes #216
2021-04-13 22:30:57 +02:00
WerWolv cab3410d23 patterns: Fix members getting added multiple times 2021-04-13 22:08:02 +02:00
WerWolv 45b00c8b5f patterns: Make placements respect set base addresses and discard out of bounds variables 2021-04-13 21:50:24 +02:00
WerWolv 183b8770bb patterns: Added `base_address` pragma 2021-04-13 21:49:31 +02:00
WerWolv 950598911c patterns: Allow usage of types within itself and used out-of-order 2021-04-13 20:40:21 +02:00
WerWolv 8a485575f5 ui: Added recent files to File menu 2021-04-13 08:41:59 +02:00
WerWolv 959988a670 fix: Stop all views from opening automatically on launch 2021-04-12 21:08:36 +02:00
WerWolv 907f25c231 patterns: Added `parent` keyword to access members of the parent struct 2021-04-12 20:49:37 +02:00
WerWolv 2f19ff768d sys: Improved ScopeGuard syntax a lot 2021-03-31 22:54:43 +02:00
WerWolv a2c80e3fd6 patterns: Fixed enum constant literals not being interpreted as correct type 2021-03-31 22:10:06 +02:00
WerWolv 356273d71e bug: Fix binary value in base converter being shifted by one
Fixes #212
2021-03-30 18:38:28 +02:00
WerWolv 147aefc7e5 ux: Add close file button to file menu 2021-03-29 22:44:35 +02:00
WerWolv 0cc7004d0d ux: Show currently loaded file name in window name 2021-03-29 22:44:23 +02:00
WerWolv d805d976a6 sys: Replace the terrible event manager with a much better one 2021-03-27 11:36:36 +01:00
WerWolv 688ca01b1b ux: Added undo and redo option 2021-03-26 21:43:24 +01:00
WerWolv 2a7b698a3d prv: Make data overlays work everywhere, not just in the hex editor view 2021-03-21 14:50:47 +01:00
WerWolv ef747cc4c0 sys: Explicitly delete views so destructors get called properly 2021-03-16 22:44:37 +01:00
WerWolv b7dd936dae patterns: Fixed ternaries not being proper numeric expressions 2021-03-16 21:29:14 +01:00
WerWolv f34b946ea9 patterns: Fixed eval_depth default and preprocessor errors 2021-03-15 08:11:19 +01:00
WerWolv 8423f78586 nodes/patterns: Fixed crashes when recursion occurred 2021-03-07 13:20:33 +01:00
Robin Lambertz 4f98149fa7
api: Fix various crashes on bad settings data. (#186)
getSetting now returns a straight nlohmann::json instead of an optional.
If the data isn't present, it will return a json null.

All accesses to the settings will first check that the data has the
expected type.
2021-03-06 12:40:29 +01:00
WerWolv 0ad0a91fa4 build: Use libfmt as header-only library instead 2021-03-03 23:33:44 +01:00
WerWolv c18cb9f61e build: Compile libfmt with -fPIC 2021-03-03 22:51:09 +01:00
WerWolv 4a908a314f lang: Added German translation, improved language handling 2021-03-03 22:26:17 +01:00
WerWolv 188723e888 sys: Replace printf formatting with libfmt 2021-03-03 19:58:22 +01:00
WerWolv 8646fb4487 patterns: Prevent division by zero 2021-03-02 22:55:23 +01:00
WerWolv a91afdb6ae ux: Allow copying value from data inspector 2021-03-02 22:09:38 +01:00
WerWolv b6939654b3 lang: Fix color attribute not being applied to array entries 2021-03-02 14:23:06 +01:00
WerWolv f1c03f8b1d sys: Place config files in AppData/Local/imhex folder on Windows
Fixes #182
2021-03-02 10:20:29 +01:00
WerWolv 3e6865ffa9
sys/build: Properly support per-system metadata file paths (#181)
* sys: Move away from metadata paths next to executable in the application

Build system doesn't properly install / pack stuff yet

* build: Updated README to contain better install instructions

* sys: Search for imhex resource files in ~/Application Support

* sys: MAX_PATH -> PATH_MAX

* sys: Seach for imhex resource files in Application Support using NSFileManager (#180)

* sys: Allow for multiple file search paths

Also use install prefix instead of just /usr on Linux

* build: Fixed IMHEX_INSTALL_PREFIX macro definition

* build: Fix duplicate switch entry on Linux

* docs: Updated readme to properly reflect new paths and dependencies

* sys: Install files in their proper paths on linux (#183)

* Install files in their proper paths on linux

* Only create user directories

* Follow the XDG specification on linux

XDG specification specifies how to find config and data directories on
linux systems. Specifically, it says this:

- Data should be written to $XDG_DATA_HOME
- Config should be written to $XDG_CONFIG_HOME
- Data should be read from $XDG_DATA_HOME:$XDG_DATA_DIRS
- Config should be read from $XDG_CONFIG_HOME:$XDG_CONFIG_DIRS

The default values are this:

- XDG_DATA_HOME: $HOME/.local/share
- XDG_CONFIG_HOME: $HOME/.config
- XDG_DATA_DIRS: /usr/share:/usr/local/share
- XDG_CONFIG_DIRS: /etc/xdg

Platforms with non-standard filesystems (like NixOS) will correctly set
up those environment variables, allowing softwares to work unmodified.

In order to make integration as simple as possible, we use a simple
header-only dependency called XDGPP which does all the hard work for us
to find the default directories.

* Look for plugins in all Plugin Paths

If the plugin folder was missing from one of the PluginPaths, we would
immediately stop loading plugins. We now keep looking even if one of the
path is missing.

Co-authored-by: Nichole Mattera <me@nicholemattera.com>
Co-authored-by: Robin Lambertz <unfiltered@roblab.la>
2021-03-01 08:56:49 +01:00
WerWolv e6dc731921 build: Fixed libyara building on MacOS 2021-02-26 17:29:57 +01:00
WerWolv 26b881e4c9 imgui: Fixed fontawesome 2021-02-25 21:50:57 +01:00
WerWolv 93802f5872 patterns: Always interpret color attribute value as hexadecimal 2021-02-25 12:08:46 +01:00
WerWolv 4a1de5d1cb bookmarks: Added ability to lock bookmarks 2021-02-24 21:42:18 +01:00
WerWolv 0af8b8155f ui/ux: Give up on custom ImGui file browsers and just use the system one 2021-02-22 23:36:13 +01:00
WerWolv a4b4360df6 patterns: Fixed more memory leaks 2021-02-22 10:01:58 +01:00
WerWolv 0a29f25330 ui: Open all views and create default layout on first launch 2021-02-21 13:49:03 +01:00
WerWolv 615a96f9d8 api: Improved documentation 2021-02-19 17:36:10 +01:00
WerWolv 0da508594b ui/api: Added loaded plugin information to welcome screen 2021-02-19 13:22:12 +01:00
WerWolv 9900a51757 patterns: Fixed multiple severe memory leaks
#163 - probably not all yet
2021-02-19 10:51:30 +01:00
WerWolv 0e00555703 Added Footer and API for it and the welcome screen 2021-02-18 12:09:19 +01:00