Compare commits

..

2973 Commits

Author SHA1 Message Date
WerWolv
72d5707d33 build: Bumped version to 1.34.0 2024-06-03 22:22:33 +02:00
WerWolv
a491b85737 build: Added simple script to generate release notes 2024-06-03 22:14:08 +02:00
Alexander Wilms
d9d85cbfcc impr: Added keywords to .desktop file (#1732)
<!--
Please provide as much information as possible about what your PR aims
to do.
PRs with no description will most likely be closed until more
information is provided.
If you're planing on changing fundamental behaviour or add big new
features, please open a GitHub Issue first before starting to work on
it.
If it's not something big and you still want to contact us about it,
feel free to do so !
-->

### Problem description
<!-- Describe the bug that you fixed/feature request that you
implemented, or link to an existing issue describing it -->
This adds a list of strings which may be used in addition to other
metadata to describe the application. This can be useful e.g. to
facilitate searching through entries.

Reference:
https://webcache.googleusercontent.com/search?q=cache:https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html

(The original site is currently down due to a Gitlab upgrade)

These keywords are used by
[Flathub](https://docs.flathub.org/docs/for-app-authors/metainfo-guidelines/#launchable),
[KDE
Discover](https://discuss.kde.org/t/does-kde-discover-parse-the-desktop-file-for-categories-and-keywords/7041)
and [Gnome
Software](https://blogs.gnome.org/hughsie/2016/01/07/the-importance-of-keywords-for-the-software-center/).

### Implementation description
<!-- Explain what you did to correct the problem -->
Add a `Keywords` entry to the .desktop file.

### Screenshots
<!-- If your change is visual, take a screenshot showing it. Ideally,
make before/after sceenshots -->

Here's how the tags are displayed for TeXstudio on its Flathub page: 

![image](https://github.com/WerWolv/ImHex/assets/3226457/35e00272-433e-46cd-9a9e-c42913aefe3f)


### Additional things
<!-- Anything else you would like to say -->
2024-06-03 19:44:05 +02:00
iTrooz
283fe46230 git: Replace Ubuntu 23.04 with 24.04 LTS (#1731) 2024-06-03 17:25:50 +02:00
iTrooz
2c00aa5def fix: Do not use custom repo gcc 13 for Ubuntu because it doesn't run on vanilla Ubuntu (#1730) 2024-06-03 08:06:49 +00:00
iTrooz
984438e98d feat: show Linux distribution information on startup (#1729) 2024-06-03 10:02:29 +02:00
WerWolv
cf34c4bd95 fix: The font atlas does not own the custom font data 2024-06-01 13:55:06 +02:00
WerWolv
bab1d2e27e fix: Loading custom fonts from paths with unicode characters not working
Fixes #1727
2024-06-01 13:52:41 +02:00
WerWolv
d1b6a21e86 fix: Missing localization 2024-05-31 17:06:18 +02:00
WerWolv
3049590b68 feat: Added full pattern path to hex editor hover tooltip 2024-05-31 17:02:46 +02:00
WerWolv
8a289d2e4f impr: Make hex editor faster to render 2024-05-31 17:02:22 +02:00
WerWolv
7a81fa7ac5 fix: Mutliple potential nullptr derefes with shortcuts 2024-05-31 17:02:08 +02:00
WerWolv
fbf59b6f0b build: Updated ImGui 2024-05-31 16:59:52 +02:00
WerWolv
0ab200f77f fix: Hex editor popups closing when opening sub-popups 2024-05-30 22:01:18 +02:00
WerWolv
a91e40d731 lang: Fixed typo 2024-05-30 21:49:40 +02:00
WerWolv
e553fbc86c patterns: Updated pattern language 2024-05-30 21:49:08 +02:00
WerWolv
b4a810c374 fix: Build error on some platforms due to unused variables 2024-05-30 21:49:01 +02:00
WerWolv
0e97914d94 build: Updated libwolv 2024-05-30 16:57:57 +02:00
WerWolv
a5c250c811 fix: Byte type annotations not being reset correctly 2024-05-30 16:57:28 +02:00
WerWolv
08c2f3fc15 impr: Make window less prone to flickering during resizes on Windows 2024-05-30 16:57:07 +02:00
WerWolv
63f66662ce fix: Workspaces not being deletable correctly in all cases 2024-05-30 16:56:39 +02:00
iTrooz
89eee104ab chore: disable codecov PR comments (#1724) 2024-05-28 13:51:09 +02:00
iTrooz
92b1234ddb build: Reduce debug info produced (#1720) 2024-05-27 16:33:15 +02:00
iTrooz
0b0bf90e0b build: Compress debug info (#1719)
This PR compress the debug info in the ELF files built.

This has no impact on the packages (e.g. .deb files) because they themselves have compression, but once installed in the filesystem, they this compression will be beneficial

The compression is opportunistic, happens automatically when possible

For some reason, the web version doesn't work with this (most compiler tests after this seem to fail ?) so it is disabled there

More information: https://github.com/WerWolv/ImHex/issues/1714#issuecomment-2131373826
2024-05-26 20:48:14 +02:00
iTrooz
974c4ba040 git: remove unused name matrix parameter from Ubuntu builds (#1701) 2024-05-23 15:57:44 +02:00
iTrooz
4e2c1d20b4 git: change key used for web cache 2024-05-23 14:44:01 +02:00
iTrooz
e5b83d0ddf chore: add comment about IMHEX_COMMON_FLAGS 2024-05-23 14:44:01 +02:00
David Mentler
bdaf1e4151 build: Xcode accomodating CMake setup (#1688)
### Problem description
This PR implements some rudimentary Xcode support for building and
editing ImHex.

### Implementation description

#### Problem 1: Xcode is a multi-configuration buildsystem
The project is already rather CMake generator independent, thus it did
not need to change much to support Xcode's multi-configuration paradigm:

By default, CMake generates a `.xcodeproj` in which targets build their
artifacts into the specified `<>_OUTPUT_DIRECTORY`, postfixed by the
currently active configuration. To better fit the existing paradigm, I
instead opted ot introduce `IMHEX_MAIN_OUTPUT_DIRECTORY`. This variable
is equal to the previously used `RUNTIME_OUTPUT_DIRECTORY` when using
other generators, and is changed to include a configuration specific
_prefix_ when used with Xcode.

The result is different output directories when using Xcode, and no
changes when using any other generator.

#### Problem 2: ImHex does not support AppleClang
To allow building the codebase with Xcode, I have introduced
`IMHEX_IDE_HELPERS_OVERRIDE_XCODE_COMPILER`. Specifying this option to
`ON` will force CMake to honor the user specified compiler settings,
even when using the Xcode generator.

In practice this can be used together with the new "xcode" CMakePreset
to build the project with mainline clang using `xcodebuild`, or Xcode
itself by generating a buildsystem like so:
```
cmake --preset xcode -DCMAKE_PREFIX_PATH=/opt/homebrew/opt/llvm@17
```

This solution is of course not without flaws. The inner workings are a
particularly ugly hack, and mainline clang does not implement the
necessary extensions to allow Xcode to index the code. Regardless this
option is useful to enable future work in terms of bundling/signing
macOS applications in the "intended" way using Xcode without additional
source modifications.

#### Problem 3: Vanilla CMake + Xcode = Bad developer UX 
By default, the CMake generated `.xcodeproj` is a mess. Tons of targets
are scattered about, and source files are not organized beyond grouping
them into a "Source Files" and "Header Files" group.

Even "Header Files" is missing, because the ImHex build system does not
regard private header files of libraries as sources of a target, and
Xcode does not try to guess this information.

The solution is twofold:
* Additional code has been added which organizes the targets into a neat
folder structure
* Additional code was added behind a configuration flag
`IMHEX_IDE_HELPERS_INTRUSIVE_IDE_TWEAKS` which automatically creates
source file trees in Xcode targets, and discovers the non-declared
header files via the folder convention.

### Screenshots
N/A

### Additional things

As a bonus: `IMHEX_OFFLINE_BUILD` assumes that ImHex-Patterns is cloned
into the source tree. I have added an additional fallback that tries to
locate it as a sibling folder of `${CMAKE_SOURCE_DIR}`, as this meshes
better with my filesystem setup.

The setup was tested with `CMake 3.29.2`, `Xcode 15.2`, and `llvm@17`
from homebrew.
2024-05-20 10:12:57 +00:00
David Mentler
751eff0edf impr: Restore native macOS title bar double click gesture in borderless mode (#1689)
### Problem description

#### Problem 1
In borderless mode ImHex disables the standard macOS titlebar rendering
and input processing. As a result double clicking the titlebar does not
trigger the native macOS behavior set in `System Settings -> Desktop &
Dock -> Double-click a window's title bar to [Zoom/Minimize/Do
nothing]`.

#### Problem 2
The ImHex window shows up as blank/transparent when de-minimizing it
from the dock.

#### Problem 3
Widgets experience ghost hover inputs from the past position of the
cursor during live resizing.

### Implementation description
ImGui elements consume input events in the order they are drawn. As a
result by "drawing" an `InvisibleButton` over the content area of the
titlebar we can catch unprocessed clicks in the titlebar area.
Connecting this button's double clicks to the native window is then a
trivial endeavour.

The blank windows was caused by the rendering stack clearing the GL
buffer, but proceeding to draw nothing in it. I have short circuited
this path.

Ghost hover inputs were squelched by consistently moving the ImGui
cursor to `0, 0` during a live resize. The OS will dispatch a cursor
positioning event once the resizing ends, restoring normal behavior.

### Screenshots
N/A

### Additional things
N/A

---------

Co-authored-by: Nik <werwolv98@gmail.com>
2024-05-20 11:27:57 +02:00
WerWolv
666dc7dccb fix: Build when multisampling isn't available 2024-05-20 10:18:03 +02:00
WerWolv
a172e89620 fix: Don't restore toolbar items when they're empty 2024-05-20 10:16:14 +02:00
iTrooz
ecb9537c4e git: remove mock cache for Fedora because it seems to be duplicated with ccache 2024-05-20 01:35:12 +02:00
WerWolv
bba4cf9578 impr: Keep a safety backup of the last crash backup around 2024-05-19 23:13:46 +02:00
WerWolv
bfdb9b4019 impr: Allow views to opt out of having their open state saved 2024-05-19 21:51:55 +02:00
WerWolv
bad37d0940 fix: Crash when having path set in user folder settings page 2024-05-19 21:41:18 +02:00
WerWolv
62f5640678 patterns: Updated pattern language 2024-05-19 16:41:29 +02:00
WerWolv
71c1bcde0d feat: Added option to specify max file size to load into memory 2024-05-19 15:10:22 +02:00
SparkyTD
e9b492a287 lang: Added Hungarian translations (#1683)
### Problem description
ImHex didn't support Hungarian :(

### Implementation description
I translated ImHex to Hungarian :)

### Translation Coverage
| Plugin        | Percentage |
|---------------|------------|
| builtin       | 99%        |
| diffing       | 100%       |
| disassembler  | 100%       |
| hashes        | 95%        |
| script_loader | 100%       |
| ui            | 100%       |
| visualizers   | 100%       |
| windows       | 100%       |
| yara_rules    | 100%       |

### Additional Notes
There are four Hungarian "special" characters that fall outside the
default Unicode ranges loaded by ImHex, resulting in them being replaced
with the "�" character. These letters are Ő (U+0150), ő (U+0151), Ű
(U+0170) and ű (U+0171), all included in the Latin Extended-A Unicode
block.

The easy fix for this is to include the "Unicode Latin Extended-A" range
when loading the font glyphs in
[init_tasks.cpp:189](99abc4e78a/plugins/builtin/source/content/init_tasks.cpp (L189)).
This change would also unlock the full character range of Bosnian,
Croatian, Czech, Estonian, Latvian, Lithuanian, Maltese, Polish,
Romanian, Slovak, Slovene and Turkish. I can add the commit to this PR
if maintainers are okay with it. **EDIT:** Added a commit that loads
Latin Extended-A by default.

Also note that some words are longer than their English counterparts,
resulting in certain UI labels overflowing from their parent containers,
and being cut off. I might change some of the longer labels to be more
compact in the future, but the container size limitations will have to
be addressed eventually (e.g. with horizontal scrollbars).

---------

Co-authored-by: Nik <werwolv98@gmail.com>
2024-05-19 14:33:33 +02:00
FireNX70
9b9b1aa6cc fix: Multisampling trying to use larger sample count than supported (#1670)
### Problem description
https://gitlab.freedesktop.org/mesa/mesa/-/issues/11135
It turns out LLVMpipe only supports 4x multisampling. Checking
GL_MAX_SAMPLES seems like the right thing to do.

### Implementation description
~~Right now, I only check GL_MAX_SAMPLES. Depending on the format, we
might need to check GL_MAX_INTEGER_SAMPLES. I don't know how likely it
is that you might want to use a different format in the future,
glGetInternalformativ might be a safer option to retrieve the max number
of samples we can use.~~

Ended up implementing it with glGetInternalformativ.

### Additional things
I guess I could merge the ```if```s at lines 95, 99 and 103 in
imgui_imhex_extensions.cpp while we're at it.

---------

Co-authored-by: Nik <werwolv98@gmail.com>
2024-05-19 14:18:12 +02:00
David Mentler
2cb673fd81 impr: Stop rubber banding while resizing on macOS (#1690)
### Problem description
On macOS `glfwSetWindowSizeCallback` is invoked early during window
resizing, rendering a frame in that callback leads to wonky results as
the new framebuffer is swapped before the OS has the chance to actually
resize the window:


https://github.com/WerWolv/ImHex/assets/1068675/46336419-3fc2-4aa1-b16f-68b0c00e3584

### Implementation description
Window contents are redrawn only from `glfwSetWindowRefreshCallback`
during resizing, fixing the issue:


https://github.com/WerWolv/ImHex/assets/1068675/3acc5d4a-b2a5-42f0-9015-5e7172a027cf
2024-05-19 14:14:57 +02:00
WerWolv
d5eb6b5bbc impr: Added data size widget 2024-05-19 10:21:54 +02:00
WerWolv
1e48277566 impr: Removed [Project] prefix from recent project entries 2024-05-19 10:21:30 +02:00
WerWolv
ec748f4a64 impr: Allow full magic analysis, removed unidentified data from magic report 2024-05-19 10:21:02 +02:00
iTrooz
22f1713739 fix: actually generate coverage data when compiling/running program (#1686) 2024-05-18 20:35:49 +02:00
WerWolv
f0e135530a impr: Add warning about using fractional scaling with default font 2024-05-18 20:32:57 +02:00
WerWolv
125d6a3e2a fix: Settings not being written anymore after restart 2024-05-18 20:32:34 +02:00
WerWolv
d078f9d847 fix: Icon size being off when using fractional scaling with default font 2024-05-18 19:39:29 +02:00
WerWolv
6b6a6ae5f0 impr: Added support for returning results from scripts 2024-05-18 12:57:29 +02:00
WerWolv
1d6676f059 fix: Empty tooltip showing when hovering over search bar in welcome screen 2024-05-18 11:58:25 +02:00
WerWolv
1e91505e6e fix: .NET script loader not initializing correctly on macOS 2024-05-18 11:10:55 +02:00
WerWolv
9e2f228d9a fix: Providers not being closable 2024-05-17 23:51:34 +02:00
WerWolv
7a1d163450 fix: Insert mode cursor not being visible 2024-05-17 23:51:26 +02:00
WerWolv
22e717d778 fix: Don't capture the editor pointer by reference 2024-05-17 23:19:28 +02:00
WerWolv
2546c042dc fix: Crash when clicking on Advanced search in find popup 2024-05-17 23:16:49 +02:00
WerWolv
b54f46de30 fix: Crash when setting selection in a hex editor instance without provider 2024-05-17 22:43:35 +02:00
WerWolv
94bc279bd8 impr: Improved colors of toggle switches 2024-05-17 22:20:56 +02:00
WerWolv
2f7c2e79d2 impr: Remove ugly dark edges around light theme backdrop image 2024-05-17 22:18:44 +02:00
WerWolv
2ed5381f5a impr: Make menu bar items collapse less quickly 2024-05-17 22:14:15 +02:00
WerWolv
964d98dd7b impr: Remove frame borders in more cases 2024-05-17 22:05:32 +02:00
WerWolv
0571dae9b7 impr: Added frame borders in light theme 2024-05-17 21:58:16 +02:00
WerWolv
563bf78f03 impr: Allow providers to be closed quicker after being opened 2024-05-17 21:56:43 +02:00
WerWolv
cf480d95db build: Updated dependencies 2024-05-17 21:08:54 +02:00
iTrooz
44331506b2 test: Add code coverage support with CodeCov (#1681) 2024-05-17 19:08:22 +00:00
WerWolv
f6953fd829 impr: Merge in script loader structure improvements from python branch 2024-05-17 21:01:35 +02:00
WerWolv
663b99ed64 impr: Remove border from (?) hover button 2024-05-17 20:47:22 +02:00
WerWolv
0ef3be1851 fix: Look of some buttons and text fields with frame borders turned on 2024-05-17 20:38:30 +02:00
WerWolv
0453a23b12 impr: Cleanup .NET script library and API 2024-05-17 20:38:30 +02:00
WerWolv
7a14e3dac4 fix: Wayland error discarding build errors with older GLFW versions 2024-05-17 20:22:55 +02:00
WerWolv
275774a10a fix: C# OnLoad method not being run correctly 2024-05-17 09:27:00 +02:00
WerWolv
a6277533e8 impr: Better Intel GPU log warning 2024-05-17 09:26:41 +02:00
WerWolv
1426424899 fix: Window scaling defaulting to 1.0x instead of Native 2024-05-17 09:26:28 +02:00
WerWolv
85fa1b2122 fix: Log spam on Wayland 2024-05-17 09:26:13 +02:00
WerWolv
c28522b7ef fix: Settings sometimes being reset on shutdown 2024-05-16 19:00:31 +02:00
WerWolv
d90a04990b fix: Section button tooltips being visible even when not hovering buttons 2024-05-15 18:31:27 +02:00
WerWolv
027ff793ed fix: Icon text input boxes being wider than expected 2024-05-15 18:27:09 +02:00
WerWolv
c69d3bc7f4 fix: Visual glitches with highlights and selections in the hex editor view 2024-05-15 18:27:09 +02:00
WerWolv
ca17054a1e impr: Store settings and achievements immediately 2024-05-15 18:27:09 +02:00
WerWolv
6a9e07729f impr: Make pattern data filter behave more intuitively 2024-05-15 18:27:09 +02:00
iTrooz
ceeda6de3b doc: remove hex.builtin.provider.memory name (#1675) 2024-05-14 12:17:36 +00:00
iTrooz
17ab059b12 fix: fix Pattern::callUserFormatFunc() (previously Pattern::formatDisplayValue() with 3 args) sharing cache with Pattern::getFormattedValue() (#1674) 2024-05-14 09:26:34 +00:00
WerWolv
dedd99f30c patterns: Updated pattern language 2024-05-12 23:19:59 +02:00
WerWolv
add94c5926 fix: Loading of custom data processor nodes 2024-05-12 23:19:39 +02:00
WerWolv
a239edc759 fix: Locking layout not working correctly 2024-05-12 23:19:29 +02:00
iTrooz
ff569417fc test: Add plcli integration tests (#1671) 2024-05-12 00:19:20 +00:00
iTrooz
240bb299f0 fix: Fix CI failure with ImGui::SetTooltip() (#1672) 2024-05-11 21:52:33 +02:00
iTrooz
e2dd12416c git: run CI on tests/** branches 2024-05-11 21:42:27 +02:00
SparkyTD
2a726c7136 fix: TextEditor line numbers were still partially rendered despite mShowLineNumbers being set to false (#1669)
### Problem description
TextEditor line numbers were still partially rendered despite
mShowLineNumbers being set to false

### Implementation description
I wrapped the line no. rendering code in `if (mShowLineNumbers) { ...
}`.

### Screenshots
Before:

![image](https://github.com/WerWolv/ImHex/assets/45818400/58a2cfdd-1ee0-484b-ba05-6e886ad4fd65)

After:

![image](https://github.com/WerWolv/ImHex/assets/45818400/5d204e2b-12a5-4fc9-bcfc-da6b8e6359e1)
2024-05-11 18:11:14 +02:00
SparkyTD
62aea46c61 impr: Ensure that Text Editor's cursor blink state is never invisible after a keyboard event (#1664)
### Problem description
By default, the cursor's blinking cycle is independent from user
actions, which feels unconventional while editing pattern code. This
change ensures that the blinking cycle is reset, and the cursor is made
visible every time the editor receives a keyboard event like character
entry, or arrow navigation.


### Implementation description
I moved the hard-coded blink timing numbers to their dedicated static
constant fields since now they are referenced from multiple different
places.

I added the function `void ResetCursorBlinkTime()` to `TextEditor.cpp`
that will reset the blink cycle to `currentMillis() -
sCursorBlinkOnTime`, ensuring that the cursor is visible. This function
is called for every keyboard and mouse click event.

### Screenshots
Before:


https://github.com/WerWolv/ImHex/assets/45818400/668c6802-79a3-450b-80d3-d6abf2ce27be

After:


https://github.com/WerWolv/ImHex/assets/45818400/ee7f60e0-a75f-416d-b86d-8d12b5cdadf2

---------

Co-authored-by: Nik <werwolv98@gmail.com>
2024-05-11 15:58:55 +02:00
SparkyTD
09bffb6745 impr: Add a link to the "Find" view in the search popup (#1665)
### Problem description
This PR adds a shortcut link on the Search (Ctrl+F) popup to the more
advanced "Find" view that is normally accessible at the `View > Find`
menu.

### Implementation description
I added a simple `ImGuiExt::IconHyperlink` link to the `draw()` function
of the `PopupFind` class to display the hyperlink. Clicking the link
will open the Find view, bring it into focus and close the current
popup.

### Screenshots
Before:

![image](https://github.com/WerWolv/ImHex/assets/45818400/0961f594-0548-426a-8622-20093d4a165e)

After:

![image](https://github.com/WerWolv/ImHex/assets/45818400/d40d78f4-1a5d-4bf6-97a4-ff7ab40d0cef)


### Additional things
- Localization keys were added to all .json files, but only `en_US` is
populated for now.
2024-05-11 10:15:17 +02:00
SparkyTD
3c91cb09e3 fix: Crash caused by missing ImGui::BeginDisabled() (#1667)
### Problem description
Merging my previous PRs, #1660 and #1658 has resulted in a conflict
causing an application crash due to a missing `ImGui::BeginDisabled();`
in the `PopupSelect` class. Specifically, none of the code related to
offset validation made it into the final merge. This PR fixes the crash
by reintroducing the deleted lines.

### Additional things
The nightly release build seems to be unaffected by the crash, most
likely because ImGui's `DisabledStack` assertions are only enforced in
Debug mode. The offset validation was still missing before this fix.
2024-05-11 00:52:43 +02:00
WerWolv
881a379fb4 fix: Compile error due to un-unpacked expected value 2024-05-10 23:02:39 +02:00
WerWolv
90a67af887 impr: Added better error messages to intel hex and motorola srec providers 2024-05-10 23:01:36 +02:00
WerWolv
d727100304 impr: Added tooltips for section view and export buttons 2024-05-10 22:54:55 +02:00
WerWolv
543fcf5447 impr: Make in variable values persistent between parser runs again 2024-05-10 22:51:53 +02:00
WerWolv
e9b140b75c impr: Make out variable values selectable and copyable in pattern editor 2024-05-10 22:41:12 +02:00
WerWolv
92a9843ef7 patterns: Updated pattern language 2024-05-10 22:40:53 +02:00
WerWolv
12528d6e6e fix: Edit -> Jump To -> Current Pattern not always resetting request correctly 2024-05-10 22:18:21 +02:00
WerWolv
8fae55487a fix: Closing providers not clearing selection correctly 2024-05-10 22:10:59 +02:00
SparkyTD
973af4650c impr: Convert all hex editor popups to floating, movable windows (#1658)
### Problem description
In previous versions of ImHex, all tool windows were implemented as
static popups fixed in the upper left position of the hex view. This PR
refactors all tool popups to use floating windows that can be dragged
around by the user, or closed with a dedicated close button on the title
bar. These popup also support a stylable transparency when the user is
not hovering their mouse over the window.

### Implementation description
I rewrote the logic in `ViewHexEditor::drawPopup()` to use a custom
`ImGuiExt::BeginHoveringPopup` function for rendering the popup windows.
This new function is an almost exact replica of the built-in
`ImGui::BeginPopupModal`, except it does also displays the default
window title bar with a close button.

A second custom function, `ImGuiExt::PopupTitleBarButton` was also added
for rendering small icon-based buttons into the title bar of the parent
popup window. This new function was used to implement an optional
"Pinning" feature that individual popup implementations can specify. If
a window is pinned, it won't close automatically when its main action is
executed. For example, the "Select" button on the Select dialog will
close the popup by default, unless the window is pinned.

### Screenshots
Popup dialogs before:

![image](https://github.com/WerWolv/ImHex/assets/45818400/7c253181-8284-4076-a066-089403554f0f)

Popup dialogs after:


https://github.com/WerWolv/ImHex/assets/45818400/99d1a628-8ac1-40ac-9146-9062091bb0db



### Additional things
- When the user stops hovering their mouse over a popup window, it
becomes semi-transparent, making it easier to see the content behind it
- This PR also introduces the `styles.imhex.popup-alpha` style, making
the transparency effect configurable, including the ability to disable
the effect completely by setting `popup-alpha` to `1.0`.
- Fixed a bug that caused some popup windows to ignore the Enter and the
KeypadEnter keys. With this PR, all tool windows will execute their main
action when the user presses either one of the two Enter keys, and will
also close automatically unless the window is pinned.

### Possible changes and improvements
- Should the transparency effect be disabled if a window is pinned?
- Should the transparency factor be modifiable on the Settings/Interface
page?
- A keyboard shortcut could be added for quickly pinning / unpinning the
current window.
- Can the pin icon stay on the left, or should it be moved next to the
close button, with a similar circular background?

---------

Co-authored-by: WerWolv <werwolv98@gmail.com>
2024-05-10 21:21:19 +02:00
SparkyTD
5f192d5dc7 impr: Don't move hex editor scroll position when jumping to address that's on-screen (#1660)
### Problem description
This PR offers two improvements:
1) When selecting / jumping to an offset that falls within the current
viewport of the scroll view, the scroll offset will no longer force the
selected byte to the top of the view. Instead, the scroll offset will
only be changed if the selected byte is outside the current view.

2) In case a wrong offset is entered into the Select or Goto dialog
(e.g. and offset beyond EoF), the dialog's button will be disabled.

### Implementation description
For the first change, I modified the logic that recalculates the
`m_scrollPosition ` based on the current byte offset.

For the second change, I added validation logic to both popups to ensure
that the entered offsets are valid (using `provider->getActualSize()`).
In case of the Select popup, I wrapped the button into an
`ImGui::Begin/EndDisabled` to enforce the validation check.
2024-05-10 21:20:10 +02:00
WerWolv
ec39546fed patterns: Updated pattern language 2024-05-10 11:14:53 +02:00
SparkyTD
ea0cafa229 fix: Not being able to close certain modal popups with the close button on the title bar (#1659)
### Problem description
When the close button is clicked, `ImGui::BeginPopupModal()` sets the
bool passed into the second parameter (p_open) to false. However, the
closing logic did not take this into account, making it difficult to
actually close modal popups.

For example, closing the "Export pattern File" modal took several clicks
on the "X" button, now it closes instantly.

### Implementation description
I added an additional check for the `open` variable being `false` in the
logic that checks the closing condition.
2024-05-09 17:49:31 +02:00
WerWolv
978fa17932 impr: Make accept pattern popup open faster and close correctly 2024-05-08 23:54:09 +02:00
WerWolv
6602e800ac fix: Make sure texture multisampling framebuffer is being unbinded in all cases
#1653
2024-05-08 23:08:53 +02:00
WerWolv
fdf9209605 build: Updated ImGui to v1.90.6 2024-05-08 22:56:20 +02:00
WerWolv
8a3739ee1c impr: Display background scripts in about page 2024-05-08 22:30:53 +02:00
WerWolv
89f360d1a7 fix: Texture multisampling being used on OpenGL < 3.2
#1653
2024-05-08 22:09:47 +02:00
WerWolv
d7ddf991a9 fix: Missing includes 2024-05-08 21:44:30 +02:00
WerWolv
19c02be673 impr: Only store paths with forward slashes in project files
Fixes #1657
2024-05-08 21:30:20 +02:00
SparkyTD
adbcc48de7 fix: Multiple file reload popups stacking on top of each other (#1654)
<!--
Please provide as much information as possible about what your PR aims
to do.
PRs with no description will most likely be closed until more
information is provided.
If you're planing on changing fundamental behaviour or add big new
features, please open a GitHub Issue first before starting to work on
it.
If it's not something big and you still want to contact us about it,
feel free to do so !
-->

### Problem description
This PR aims to address #1645 that caused the built in file provider's
change monitor to trigger the notification popup dialog multiple times
in a row after multiple external file changes.

### Implementation description
I added an additional boolean field
`m_changeEventAcknowledgementPending` that tracks whether there are any
pending or unacknowledged change notification dialogs to prevent further
dialogs from being opened. The flag is only reset to its initial value
once the user has acknowledged the first `PopupQuestion` dialog.

Since the file is reloaded only after the user clicks 'Yes', it is
unnecessary to ensure that only the latest popup is acknowledged.
2024-05-07 23:43:20 +02:00
WerWolv
a5eb031401 fix: Pattern data view rendering of bitfields within bitfields being broken 2024-05-07 23:32:51 +02:00
WerWolv
10351c5bdc fix: Text editor cursor not showing up anymore 2024-05-07 23:32:27 +02:00
WerWolv
5bc60d4b63 build: Updated dependencies 2024-05-07 23:32:12 +02:00
WerWolv
32a659a477 fix: Command palette losing focus when pressing Alt
Fixes #1651
2024-05-04 21:30:21 +02:00
WerWolv
40c4dbc20e impr: Make main menu bar not collapse completely when there's not enough space 2024-05-04 21:23:18 +02:00
WerWolv
f2b4e49ff3 fix: Crash when loading oobe screen 2024-05-04 19:54:57 +02:00
WerWolv
39dd67af78 patterns: Updated pattern language 2024-05-03 21:57:57 +02:00
WerWolv
337ec6bca6 impr: Better OpenGL texture load error messages 2024-05-03 21:41:02 +02:00
WerWolv
2994e69c08 impr: Refactor GLFW window hints into individual window files 2024-05-03 21:39:31 +02:00
WerWolv
49987b8793 impr: Indent license information in about page slightly 2024-05-03 21:38:35 +02:00
WerWolv
0f5e125992 impr: Added back multisampling with proper detection logic 2024-05-03 19:27:12 +02:00
WerWolv
57857559f5 fix: Disable texture multisampling for now as it causes issues on certain platforms 2024-05-03 14:02:43 +02:00
WerWolv
4eba620bee fix: Web version not starting due to unsupported texture multisampling 2024-05-02 09:40:39 +02:00
WerWolv
964a2e990e git: Fix broken .gitmodules 2024-05-01 20:51:44 +02:00
WerWolv
761bc941a8 impr: Make right click menus open faster 2024-05-01 20:50:35 +02:00
xtex
aa5a3ed080 lang: Refactored langtool, updated chinese translation (#1623)
- Better argument parsing
- Allow processing all language folders at the same time
- Allow an optional reference language when translating
- Save translations on KeyboardInterrupt
- Fixes a ooold input issues by importing readline
(https://github.com/kovidgoyal/kitty/issues/6560)
- Add untranslate mode to remove translations by a key regex

---------

Co-authored-by: Nik <werwolv98@gmail.com>
2024-05-01 20:49:55 +02:00
daver32
6fbbf899b0 fix: Frame rate getting unlocked when inputs are being processed (#1632)
### Problem description
The framerate limiter doesn't work when inputs are being sent (eg mouse
cursor moving over the window), because `glfwWaitEventsTimeout` returns
early when it encounters an event.

### Implementation description
I made it sleep for the remaining time when that happens.
2024-05-01 20:48:41 +02:00
WerWolv
1df0eea6c6 impr: Added support for SVG loading, improved texture loading API 2024-05-01 20:36:10 +02:00
WerWolv
ef99e9d6f8 fix: Selectable text behaving weirdly when selecting 2024-04-29 21:20:54 +02:00
WerWolv
a685d2e97d impr: Make integer node accept math expressions 2024-04-29 21:20:38 +02:00
WerWolv
df04acc1b9 impr: Allow specifying buffer size in integer to buffer cast node 2024-04-29 21:20:22 +02:00
WerWolv
f510faa1da impr: Make integer, float and buffer visualizers selectable, added more radixes to integer node 2024-04-29 21:19:54 +02:00
WerWolv
3ad2c74519 impr: Make right click menu in data processor feel less sluggish 2024-04-29 20:43:25 +02:00
WerWolv
0e58204501 impr: Remove underline from hyperlinks if they're not hovered 2024-04-29 20:06:50 +02:00
WerWolv
f847807df5 fix: Buffer display data processor node being way too wide
#1644
2024-04-29 19:48:02 +02:00
WerWolv
81982aa821 impr: Make windows always fully opaque when they're not docked 2024-04-27 20:19:45 +02:00
WerWolv
08fc393451 build: Get rid of liblibimhex 2024-04-27 20:19:26 +02:00
Nora
a7033b68f7 feat: Support DWM immersive dark mode on Windows (#1636)
### Problem description
Implements support for DWM immersive dark mode.  
Closes #1635.

### Implementation description
Uses the DwmSetWindowAttribute API to enable this feature.

Documentation can be found
[here](https://learn.microsoft.com/en-us/windows/apps/desktop/modernize/apply-windows-themes#enable-a-dark-mode-title-bar-for-win32-applications).

### Screenshots
Before:

![image](https://github.com/WerWolv/ImHex/assets/51166756/a2be204f-aa2d-44d7-8628-643a903d6679)

After:

![image](https://github.com/WerWolv/ImHex/assets/51166756/f6c9ab41-c811-45f7-826f-401dd712674b)

### Additional things
Nothing.
2024-04-27 10:03:44 +02:00
WerWolv
3794aa425d feat: Display destination address in goto popup 2024-04-23 23:26:58 +02:00
WerWolv
a1ea8dfd84 fix: Build issue again when GLFW_WAYLAND_APP_ID isn't defined 2024-04-23 21:03:04 +02:00
WerWolv
79e1df1af2 fix: Exporting selection doesn't export last byte 2024-04-23 21:02:16 +02:00
WerWolv
fd61e757f0 impr: Make unsaved changes popup behave more like in other applications 2024-04-23 21:02:16 +02:00
WerWolv
7ec245925a fix: Lockup when changing themes in some cases 2024-04-23 21:02:16 +02:00
WerWolv
f913cd742f impr: Added new ImHex Banners 2024-04-23 21:02:16 +02:00
Nik
cc7a0db35c fix: Build issue when GLFW_WAYLAND_APP_ID isn't defined 2024-04-21 17:04:56 +02:00
Integral
6f11873d7e fix: Missing window icon under wayland (#1633)
<!--
Please provide as much information as possible about what your PR aims
to do.
PRs with no description will most likely be closed until more
information is provided.
If you're planing on changing fundamental behaviour or add big new
features, please open a GitHub Issue first before starting to work on
it.
If it's not something big and you still want to contact us about it,
feel free to do so !
-->

### Problem description
When running ImHex under Wayland, the window icon is missing.

### Implementation description
Setting
[```GLFW_WAYLAND_APP_ID```](https://www.glfw.org/docs/latest/group__window.html#gafbf1ce7a4362c75e602a4df9e1bdecd3)
to fix the issue.

### Screenshots
Before:

![Screenshot_20240420_162144](https://github.com/WerWolv/ImHex/assets/71180087/3318970f-6ed7-4161-b686-c2eaa28a0739)


After:

![Screenshot_20240420_161920](https://github.com/WerWolv/ImHex/assets/71180087/e9e35fb6-e3c1-44a8-b7a5-b145dfe225d9)


### Additional things
<!-- Anything else you would like to say -->
2024-04-21 12:24:20 +02:00
WerWolv
4b1b52caf0 fix: Cell highlighting in hex editor view overlapping at non-integer scale factors 2024-04-13 15:34:12 +02:00
WerWolv
e9ebfe36b0 build: Updated ImGui to v1.90.5 2024-04-12 22:56:10 +02:00
WerWolv
43149498cf fix: Main window being hard to resize when bytes are selected in the hex editor view 2024-04-12 22:55:54 +02:00
FireNX70
43070a1f5b fix: Diff table in diffing view displaying incorrect end address (#1627)
Trivial fix for #1617 .
2024-04-11 23:49:58 +02:00
WerWolv
f135bd86ac patterns: Updated pattern language 2024-04-11 22:59:09 +02:00
WerWolv
0bd8c5d115 fix: Color vector in 3D visualizer not getting assigned the correct size 2024-04-10 22:53:51 +02:00
WerWolv
9de10df90d fix: Store hanging when updating all entries in some cases 2024-04-10 22:52:21 +02:00
WerWolv
46ed6e2487 patterns: Updated pattern language 2024-04-10 22:52:06 +02:00
WerWolv
d81d409051 impr: Modernize ImHex logo 2024-04-10 21:05:38 +02:00
WerWolv
5f75c8684f impr: Better UI for the case when no plugins could be loaded 2024-04-10 21:04:57 +02:00
WerWolv
5d08499d20 impr: Use sidebar for settings categories instead of tabs 2024-04-10 19:55:37 +02:00
WerWolv
4115184952 patterns: Updated pattern language 2024-04-05 18:49:40 +02:00
WerWolv
e6a14977b9 fix: Highlight and tooltip flickering when hovering over highlighted patterns 2024-04-05 18:49:19 +02:00
WerWolv
a449f7a5e3 build: Updated libwolv 2024-03-30 13:36:02 +01:00
WerWolv
51302cfd88 build: Lock libmagic to latest release in M1 macOS docker file 2024-03-30 11:03:45 +01:00
WerWolv
696612385a fix: Use std::ranges::find instead of std::ranges::contains for now 2024-03-29 16:34:01 +01:00
WerWolv
edf047dde8 impr: Cleanup bookmark UI 2024-03-29 15:40:15 +01:00
WerWolv
166cd6c426 patterns: Updated pattern language 2024-03-29 15:38:13 +01:00
WerWolv
51010096bb feat: Added provider information to search bar hover tooltip 2024-03-29 15:38:03 +01:00
WerWolv
4e5a7ba483 fix: Closing providers still appearing in the provider list 2024-03-29 15:37:34 +01:00
WerWolv
92803c1536 feat: Added simple insert mode to hex editor 2024-03-29 13:22:28 +01:00
RoboSchmied
cc593fb6c4 fix: Misspelling of Endianness (#1609)
### Problem description
fix 40 typos

### Implementation description
`endianess` => `endianness`

Signed-off-by: RoboSchmied <github@roboschmie.de>
2024-03-28 22:25:28 +01:00
York Waugh
aeabc0c436 lang: Updated Simplified Chinese translation (#1610)
Thank you for an outstanding program! I have updated the Simplified
Chinese translation. Hope you can adopt it.
2024-03-28 22:24:51 +01:00
Kihau
32ad8ddb53 build: Added dependency download script for OpenSUSE Tumbleweed (#1612)
## Add dependency download script for OpenSUSE Tumbleweed.

### Testing
After installing the dependencies, I have managed to successfully
compile the project as described in the building instructions:
https://github.com/WerWolv/ImHex/blob/master/dist/compiling/linux.md

I have tested the script on a fresh installations of the OpenSUSE:
- Tumbleweed Server
- Tumbleweed Generic Desktop

### Note
Dependencies added in the script are based off of scripts for other
Linux distributions.
Because of that, some download dependencies might not be necessary (or
could be already included by other packages), so it is very much
possible that some of them could be removed.
2024-03-28 22:24:10 +01:00
WerWolv
f084bc4147 fix: View registers causing crashes when being deleted 2024-03-28 22:21:00 +01:00
WerWolv
cb1dcc2c9f impr: Disable achievement popups if tutorial is skipped 2024-03-28 22:15:48 +01:00
WerWolv
8030de7af2 fix: Icons not being fractionally scaled anymore 2024-03-28 22:15:30 +01:00
WerWolv
dd5ddbcc0f fix: Settings being overwritten sometimes on crash 2024-03-26 19:49:10 +01:00
WerWolv
f587710d1c fix: Multiple memory corruption issues 2024-03-26 19:49:10 +01:00
WerWolv
99142525b6 patterns: Updated pattern language 2024-03-26 19:47:45 +01:00
WerWolv
2d9ef1142d build: Updated dependencies 2024-03-26 19:47:39 +01:00
WerWolv
547169ea78 fix: Missing includes 2024-03-26 19:46:25 +01:00
WerWolv
8d08ab20ec fix: Added missing ImHex paths to about page 2024-03-26 19:18:34 +01:00
WerWolv
966a780432 impr: Updated contributors list 2024-03-25 21:02:55 +01:00
WerWolv
99abc4e78a fix: Unifont characters being scaled wrongly
Fixes #1616
2024-03-25 20:41:39 +01:00
WerWolv
ce1d581c3f fix: Settings values being uninitialized by default 2024-03-25 20:41:05 +01:00
WerWolv
b31ae6e690 impr: Optimize includes in logger 2024-03-25 20:37:19 +01:00
WerWolv
e984fde966 fix: Crash on some platforms due to empty main menu bar
#1600
2024-03-23 12:26:23 +01:00
WerWolv
5d0b474a7e build: Move renaming of the macOS bundle to the CI 2024-03-23 00:33:46 +01:00
WerWolv
d09f2c4f26 build: Fix creating the macOS bundle from within the M1 docker 2024-03-22 23:47:24 +01:00
WerWolv
dd20a16d3a git: Fix macOS bundle upload path 2024-03-22 22:35:44 +01:00
WerWolv
7d22b71e86 git: Fix bundle path for signing 2024-03-22 22:24:25 +01:00
WerWolv
567ccbfc3a build: Don't postprocess libimhex.dylib 2024-03-22 22:18:18 +01:00
WerWolv
ca40775678 git: Make sure CI bundles correct macOS bundle into dmg 2024-03-22 21:57:33 +01:00
WerWolv
4916e5542a fix: Splash screen being scaled incorrectly 2024-03-22 17:52:10 +01:00
WerWolv
ac8ec2b622 fix: Icons not being scaled correctly anymore 2024-03-22 17:52:00 +01:00
WerWolv
9b9f7e2a1d fix: Decompress functions not extracting full data
Thanks a lot to tocklime
2024-03-22 17:34:49 +01:00
WerWolv
28ea91e6c3 build: Move macOS rpath fixing to install step 2024-03-22 17:31:53 +01:00
WerWolv
0d58307e82 build: Fix bundling issues on macOS 2024-03-22 17:24:44 +01:00
WerWolv
c8ca84ede9 fix: Prevent view providers from pointing to themselves and being saved as recent provider
#1607
2024-03-22 00:16:28 +01:00
WerWolv
ed2939c39e impr: Better UI and UX for the hex editor footer 2024-03-21 23:50:34 +01:00
WerWolv
d36bd253e8 feat: Allow shift-selecting multiple find view occurrences 2024-03-21 23:50:13 +01:00
WerWolv
4615dce0a9 build: Try fixing packaging issues with macOS bundles 2024-03-21 21:56:27 +01:00
WerWolv
7ce8aa3638 impr: Added better error logging in script loader init 2024-03-21 21:39:29 +01:00
WerWolv
9236b92dc1 fix: Memory leak when closing ImHex 2024-03-21 21:39:29 +01:00
Nobutaka Mantani
05ffcab911 build: Added support patches for FreeBSD (#1584)
This pull request fixes build on FreeBSD. The changes are conditioned
with `#if defined(__FreeBSD__)` preprocessor macro and they should not
affect build for other operating systems.

---------

Co-authored-by: Nik <werwolv98@gmail.com>
Co-authored-by: iTrooz <hey@itrooz.fr>
2024-03-21 21:31:17 +01:00
WerWolv
61b9c0970b impr: Load unifont at correct size
Fixes #1604
2024-03-21 21:27:50 +01:00
paxcut
3b3701135f impr: Various fixes and an enhancement for the pattern editor (#1528)
Fixed console error messages using doc comment syntax highlights. Fixed
results of find not updating when march case was toggled. Fixed syntax
highlights of nested ifdefs. Fixed editor cursor blinks if OS focus goes
to another window. Fixed Highlights of "\\\"" was incorrectly handled.

---------

Co-authored-by: Nik <werwolv98@gmail.com>
2024-03-21 12:58:20 +00:00
iTrooz
f5987fde5a git: Fix MacOS packaging workflow in PRs (#1601)
Fix GeekyEggo/delete-artifact failing in PRs

https://github.com/GeekyEggo/delete-artifact/issues/25
2024-03-21 13:33:46 +01:00
iTrooz
e56b34f174 build: Mark tryDemangle as [[maybe_unused]] (#1606) 2024-03-21 13:33:23 +01:00
iTrooz
0fb43ccc2b fix: Use find_library() instead of find_file() to find system yara library (#1581)
Discord discussion:
https://discord.com/channels/789833418631675954/789840633414025246/1213564050848485427
2024-03-19 20:23:33 +01:00
WerWolv
48db4df028 build: Updated libromfs 2024-03-17 13:31:03 +01:00
WerWolv
86a0693081 fix: Crash when trying to open unopenable file 2024-03-17 13:20:02 +01:00
WerWolv
6295c1d0c3 feat: Added table pattern visualizer 2024-03-17 13:19:37 +01:00
WerWolv
35d29c8e30 patterns: Updated pattern language 2024-03-16 14:59:26 +01:00
WerWolv
ca78c4c2fc fix: Build errors when stacktrace headers are not present 2024-03-16 14:59:05 +01:00
WerWolv
f276409cde patterns: Updated pattern language 2024-03-16 10:03:23 +01:00
WerWolv
682f7bee72 patterns: Updated pattern language 2024-03-15 21:11:36 +01:00
WerWolv
43bec6a636 fix: Make sure pattern runtime is always properly configured 2024-03-15 21:08:03 +01:00
WerWolv
6eb9c750a7 fix: File open achievement not triggering when dropping a file onto ImHex 2024-03-15 21:07:45 +01:00
WerWolv
31c93c8c5c impr: Properly clear pattern editor when closing last provider 2024-03-15 21:07:21 +01:00
WerWolv
5aa1046541 fix: Potential crash when log file is unavailable 2024-03-15 21:06:47 +01:00
WerWolv
0f4504476a fix: File changed popup showing up when saving memory mapped file 2024-03-15 17:57:12 +01:00
WerWolv
3897245a7e fix: Control characters ending up in log files 2024-03-15 17:57:12 +01:00
WerWolv
373db3de95 fix: Potential crash on Linux when loading external libraries 2024-03-15 17:54:09 +01:00
WerWolv
a1437658af impr: Generate more useful stack traces on Linux 2024-03-15 17:53:12 +01:00
WerWolv
f4ec69021d impr: Manually implement VSync because GPU manufacturers are terrible at writing drivers 2024-03-14 21:18:57 +01:00
WerWolv
6012f20fb3 fix: Remove unused member variable in script loader provider wrapper 2024-03-14 20:56:08 +01:00
WerWolv
95da957f73 impr: Try to improve framerate limiting once more 2024-03-14 19:56:09 +01:00
WerWolv
642722bdb1 build: Enable cimgui on web builds again 2024-03-14 18:58:39 +01:00
WerWolv
cbc31f3c18 feat: Added short forms for commonly used commands 2024-03-14 18:24:31 +01:00
WerWolv
f2309ba079 impr: Make export selection task cancelable 2024-03-14 18:24:01 +01:00
WerWolv
246ed15d6d fix: Infinite loop when exporting selection to file 2024-03-14 17:52:44 +01:00
WerWolv
88756c83c7 fix: Right clicking reverse selected regions deselecting it 2024-03-14 17:49:46 +01:00
WerWolv
cf320266df fix: Linux build issues 2024-03-14 17:49:04 +01:00
WerWolv
47e7e80afe fix: Various issues with the virtual file system 2024-03-14 13:26:53 +01:00
WerWolv
0d880babfb fix: Advanced data information not showing up correctly 2024-03-13 22:39:21 +01:00
WerWolv
28ba34f1bf fix: Diffing option popup flickering when opening 2024-03-13 22:39:00 +01:00
WerWolv
e786cb8180 feat: Added option to create menu items from scripts 2024-03-13 19:50:05 +01:00
WerWolv
458584d778 feat: Added logger module to script loader 2024-03-13 19:49:48 +01:00
WerWolv
2c711ea206 feat: Load additional libraries from ImHex's /lib folder 2024-03-13 19:49:04 +01:00
WerWolv
7b25be51a5 fix: Base address issues with the data inspector and copy as array option
Fixes #1595
2024-03-13 16:38:44 +01:00
WerWolv
45b05a4846 fix: Denying server contact leaving crash upload option enabled
Fixes #1594
2024-03-13 09:41:04 +01:00
WerWolv
6972736abf fix: Remaining build issues 2024-03-13 09:40:37 +01:00
WerWolv
3798654f92 fix: Unix build issues with dladdr 2024-03-13 08:38:40 +01:00
WerWolv
fdf01dfb50 impr: Get rid of cimgui shared library by hooking pinvoke handler 2024-03-12 23:17:49 +01:00
WerWolv
876f091244 build: Make cimgui a shared library again 2024-03-12 19:44:21 +01:00
WerWolv
2988561f01 build: Try fix building issues with web build and Fedora 2024-03-12 19:09:01 +01:00
WerWolv
fbfc319ac1 build: Make dotnet script loader initialize properly with newer SDK version 2024-03-12 19:08:14 +01:00
WerWolv
9b1417f32d fix: ImHex using a ton of CPU power on Linux 2024-03-12 09:06:58 +01:00
WerWolv
c727762940 impr: Added AxCut to the about page 2024-03-11 21:26:03 +01:00
WerWolv
e3565d5bcb feat: Added support for creating views and drawing ImGui elemts from C# 2024-03-11 21:09:56 +01:00
WerWolv
a3f550c585 fix: Toasts not printing their message to the console correctly 2024-03-11 21:09:56 +01:00
WerWolv
c610d804b1 build: Added cimgui 2024-03-11 21:09:56 +01:00
WerWolv
3d592dbc79 fix: Highlighting not updating correctly when changing bookmark region
Fixes #1591
2024-03-11 14:00:52 +01:00
WerWolv
0186f2f456 feat: Added support for adding custom providers through C# 2024-03-10 22:05:26 +01:00
WerWolv
d817a813b0 fix: Update all task progress not increasing correctly 2024-03-10 18:59:35 +01:00
WerWolv
1d219ba511 build: Updated libwolv 2024-03-10 17:32:46 +01:00
WerWolv
285afb6d4b build: Updated libwolv 2024-03-10 15:58:57 +01:00
WerWolv
ca3708df71 fix: std::bind_front not supporting member functions everywhere 2024-03-10 15:40:32 +01:00
WerWolv
c2aafb14c2 fix: View provider not saving top-level data to project file 2024-03-10 15:32:01 +01:00
WerWolv
d4d1acb555 feat: Added --verbose command line option to enable debug logs 2024-03-10 15:22:14 +01:00
WerWolv
d1a59f8c1b fix: View provider not correctly saving its state to a project file 2024-03-10 15:17:15 +01:00
WerWolv
2fd17f97b6 build: Updated libwolv 2024-03-10 14:38:28 +01:00
WerWolv
45a3bdffe0 impr: Load small files into memory, open larger files as read-only by default
#841, #1585
2024-03-10 14:31:39 +01:00
iTrooz
f050c69ccd fix: fix ui plugin linking to pl when libimhex already does it (#1583) 2024-03-03 15:31:40 +00:00
WerWolv
c31a2551f1 git: Update release actions 2024-03-02 17:42:19 +01:00
WerWolv
90e93492a7 fix: Updater not working correctly on Windows 2024-03-02 17:42:02 +01:00
WerWolv
54266bf63b fix: Remove debug popup function in release mode to avoid build errors 2024-03-02 14:23:52 +01:00
WerWolv
ba12f7aec9 impr: Added testers to About screen 2024-03-02 11:57:30 +01:00
WerWolv
deafb6fe08 build: Allow precompiled headers to be turned off 2024-03-02 11:51:33 +01:00
WerWolv
091be1440a build: Added option to disable precompiled headers 2024-03-02 11:28:24 +01:00
WerWolv
030aee17f5 build: Disable precompiled headers in plugins again 2024-03-02 10:57:51 +01:00
WerWolv
bbbf836374 fix: Race condition when downloading multiple elements from the content store 2024-03-02 10:57:37 +01:00
WerWolv
f1b91ef360 fix: MIME based auto loading not working correctly 2024-03-02 10:57:13 +01:00
WerWolv
f6c59b456f impr: Move selection information to the top of the hex editor footer 2024-03-02 09:52:40 +01:00
WerWolv
8f3f941600 impr: Prevent ImHex from getting stuck in an infinite crash loop 2024-03-02 09:52:09 +01:00
WerWolv
e561f49e80 impr: Make welcome screen background look more interesting 2024-03-01 20:57:07 +01:00
WerWolv
2ff884fd11 feat: Replaced debug button functions with full debug menu 2024-03-01 20:56:46 +01:00
WerWolv
296af748ee fix: Platform window not being updated when recovering from a crash 2024-03-01 20:55:03 +01:00
WerWolv
0cb10fcc34 fix: Endless loop when throwing exception in deferred tasks 2024-03-01 20:54:27 +01:00
WerWolv
4a67ea0b29 patterns: Updated pattern language 2024-03-01 18:38:11 +01:00
WerWolv
8e94acc98f fix: Compile error 2024-03-01 18:37:28 +01:00
WerWolv
39cda3764b patterns: Updated pattern language 2024-03-01 18:23:45 +01:00
iTrooz
97f5175c84 impr: Better recovery from exceptions thrown in main thread (#1577)
This PR improves many things which can be seen by the commit name, but
the most important thing is the addition of a popup telling the user
when an exception is thrown


![image](https://github.com/WerWolv/ImHex/assets/42669835/db796416-9cce-4aa5-ad60-c22f05b5fc73)
2024-03-01 18:21:15 +01:00
WerWolv
78f8e5055e impr: Show hint if advanced data information section doesn't yield any result 2024-03-01 16:51:02 +01:00
WerWolv
735d896260 git: Run workflows on release branches 2024-02-29 22:28:29 +01:00
WerWolv
cb7a6596ba patterns: Updated pattern language 2024-02-29 22:23:34 +01:00
WerWolv
fdaa56fd86 build: Disable unknown pragmas warning 2024-02-29 21:49:36 +01:00
WerWolv
667b940feb fix: Build with precompiled headers for WebAssembly 2024-02-29 21:29:26 +01:00
WerWolv
bb3de7d510 fix: Build with precompiled headers on Linux 2024-02-29 21:15:51 +01:00
WerWolv
7bdde15796 build: Don't add defines to libimhex after precompiling headers 2024-02-29 20:39:14 +01:00
WerWolv
c412ba66d8 git: Updated compile instructions 2024-02-29 20:16:03 +01:00
WerWolv
dd62bee264 build: Added precompiled headers 2024-02-29 19:57:20 +01:00
WerWolv
f886eac7b5 build: Updated libwolv 2024-02-28 23:52:39 +01:00
WerWolv
623079ca40 fix: Pressing buttons while window is unfocused not working 2024-02-28 23:52:07 +01:00
WerWolv
ce9bd796d6 fix: Inserting bytes and resizing files not working correctly 2024-02-28 22:21:14 +01:00
WerWolv
d5f323a2cd feat: Allow workspaces to be deleted the same way as layouts
Fixed #1576
2024-02-28 22:10:48 +01:00
WerWolv
40592a93ac fix: MIME-based pattern loading not working correctly
Fixes #1574
2024-02-28 20:54:51 +01:00
WerWolv
dc1a5a860c fix: Buggy window detachment 2024-02-28 20:36:22 +01:00
WerWolv
f7b431902d fix: Make sure glfw waits properly on Wayland 2024-02-28 20:16:15 +01:00
WerWolv
686d47a59e fix: Frame limiting not working correctly on Linux 2024-02-28 18:48:01 +01:00
WerWolv
eaa4688182 fix: Crash when using CRC hashes 2024-02-27 22:39:18 +01:00
WerWolv
72645aa800 fix: Read-only file toast showing up for all providers 2024-02-27 20:20:28 +01:00
WerWolv
7044fc8004 fix: Import menu being disabled with read-only providers
Fixes #1573
2024-02-27 19:41:33 +01:00
Justus Garbe
9e8c780d66 fix: Use explicit string argument according to -Wformat-security on clang (#1572) 2024-02-27 19:07:44 +01:00
WerWolv
e1795d687f impr: Implement a better algorithm to determine if the frame content has changed 2024-02-27 18:55:18 +01:00
WerWolv
607f7cba8d fix: Yara rules not being read correctly in data information section 2024-02-27 18:01:30 +01:00
WerWolv
2572e23928 impr: Add better error handling when loading projects 2024-02-26 21:48:56 +01:00
WerWolv
60921031bd fix: Opening project files through the command line opening them as regular files 2024-02-26 21:43:28 +01:00
WerWolv
77550d902c feat: Added option to disable annotations in byte type graph 2024-02-26 21:41:43 +01:00
WerWolv
41935781fb fix: Build error due to use of localized strings 2024-02-26 21:13:57 +01:00
iTrooz
47362559ef tests: Add infrastructure for testing plugins (#1538)
This PR adds a test architecture to be able to test plugins

Main infrastructure done by @WerWolv

---------

Co-authored-by: WerWolv <werwolv98@gmail.com>
2024-02-26 20:51:08 +01:00
WerWolv
032ef0722d patterns: Updated pattern language 2024-02-26 20:49:42 +01:00
WerWolv
6e32f03a6b feat: Added plain text and similar bytes regions to byte types diagram 2024-02-26 20:49:35 +01:00
WerWolv
5731dcf135 impr: Make hex editor minimap rows stay a fixed height 2024-02-26 20:49:15 +01:00
WerWolv
66e0f54d0e build: Bumped version to 1.33.0 2024-02-25 21:54:48 +01:00
WerWolv
cadc9cecf1 build: Updated dependencies 2024-02-25 21:21:34 +01:00
WerWolv
491e2dfe56 fix: Parent hover setting name being wrong 2024-02-25 14:38:26 +01:00
WerWolv
29c7b342eb impr: Make file chooser filter bar be focused by default 2024-02-25 14:34:09 +01:00
WerWolv
ea601a7d03 feat: Added option to highlight pattern parents in the hex editor when hovering 2024-02-25 14:30:56 +01:00
WerWolv
dac45659c0 patterns: Updated pattern language 2024-02-25 12:35:09 +01:00
WerWolv
4f72c60eb0 fix: Text editors highlighting doc comments when they shouldn't 2024-02-25 12:35:01 +01:00
WerWolv
7434fdec6f impr: Move advanced analysis yara rules to the patterns repo 2024-02-25 11:32:05 +01:00
WerWolv
c4f3ea901a feat: Added more yara detection rules for languages, compilers and envs 2024-02-25 11:20:35 +01:00
WerWolv
58ad9f2ca8 impr: Small code layout improvements for diagrams 2024-02-25 11:20:04 +01:00
WerWolv
3fa06cc7c0 build: Remove compression from sdk again 2024-02-25 01:57:42 +01:00
WerWolv
d551e39a1c build: Handle install prefix being absolute when installing sdk package 2024-02-25 01:27:48 +01:00
WerWolv
afede0ff9c fix: Yara rule matching not working properly with non-zero base addresses 2024-02-25 00:16:14 +01:00
WerWolv
d51b065723 fix: Yara information task not being interruptable 2024-02-25 00:09:06 +01:00
WerWolv
752a2d2e8d fix: Magic information querying being wrong with non-zero base address 2024-02-24 23:53:34 +01:00
WerWolv
b57eaca365 build: Try to fix sdk packaging 2024-02-24 23:41:22 +01:00
WerWolv
859574c014 impr: .0f -> .0F 2024-02-24 23:34:29 +01:00
WerWolv
0505b123a0 impr: Remove weird spinner from data information view 2024-02-24 23:34:18 +01:00
WerWolv
00b3d7809c fix: Various issues with the digram and layered distribution diagrams 2024-02-24 23:23:53 +01:00
Nik
ec69849749 feat: Added font picker to the settings (#1570) 2024-02-24 22:46:52 +01:00
WerWolv
8bf7aa9ceb build: Respect DISTDIR env var when packing SDK 2024-02-24 22:46:16 +01:00
WerWolv
ca0b6f2c6d fix: Digram sample size being too low and filter options inverted 2024-02-24 19:04:58 +01:00
WerWolv
5182a61fcc fix: Interacting with popups that extend past the edge of the window 2024-02-24 18:59:01 +01:00
WerWolv
2f7b949bd1 impr: Split out digram and layered distribution in their own section 2024-02-24 18:54:35 +01:00
WerWolv
4100e48fe2 impr: Render digram and layered distribution to texture to improve frame rate 2024-02-24 18:07:20 +01:00
WerWolv
132b211796 impr: Add interactive tutorials button to the welcome screen 2024-02-24 16:10:05 +01:00
WerWolv
0d4d8efe4e build: Compress SDK package 2024-02-24 16:09:48 +01:00
WerWolv
393bea6d4b impr: Don't pass unique_ptr by const reference 2024-02-24 15:06:28 +01:00
WerWolv
b2edb0441a build: Make external plugins build again 2024-02-24 15:06:10 +01:00
WerWolv
9d02379583 impr: Don't allow opening the same file twice
Fixes #1569
2024-02-24 12:06:06 +01:00
WerWolv
3c365d65a4 impr: Nicer looking logger output colors 2024-02-24 11:28:47 +01:00
WerWolv
2049852a80 impr: More consistent naming for information sections 2024-02-24 10:06:56 +01:00
WerWolv
be6a7490fd build: Better formatting for main CMake file 2024-02-24 10:06:21 +01:00
WerWolv
222d0b74d0 patterns: Updated pattern language 2024-02-24 09:37:55 +01:00
WerWolv
cdde0dedc8 impr: Make crash restore popup not show up if there's nothing to restore 2024-02-24 00:37:17 +01:00
WerWolv
6b14facd29 impr: Cleanup task progress handling 2024-02-23 22:09:57 +01:00
WerWolv
a7d6a4968e fix: Certain language strings not loading correctly 2024-02-23 20:33:39 +01:00
WerWolv
2173707925 fix: Building with older libyara versions 2024-02-23 20:20:27 +01:00
WerWolv
75c03d56d2 fix: Opening files on macOS through the Open with... option
Fixes #1070
2024-02-23 20:17:33 +01:00
WerWolv
85ec807417 fix: Localization issue with script loader 2024-02-23 18:57:29 +01:00
WerWolv
e7df0d201f fix: Byte type distribution and entropy slider not updating 2024-02-23 18:44:41 +01:00
WerWolv
026713750d impr: Implement better string limiting algorithm 2024-02-23 18:32:12 +01:00
WerWolv
d19d62b1fc impr: Remember find popup input per provider
Closes #1567
2024-02-23 18:31:58 +01:00
WerWolv
1f9d0181c9 impr: Allow opening multiple files at once
Closes #1566
2024-02-23 18:03:37 +01:00
WerWolv
4d91e7f347 impr: Handle read-only files more gracefully 2024-02-23 17:59:37 +01:00
WerWolv
9bfdfa149e feat: Added search bar to file chooser popup, allow for custom naming functions 2024-02-23 17:52:42 +01:00
WerWolv
214e542da4 impr: Make sure lots of yara matches doesn't lag out the editor 2024-02-23 17:49:20 +01:00
WerWolv
daf74347a3 fix: Try to make menu bar always appear 2024-02-23 17:48:56 +01:00
WerWolv
61fd327aa1 fix: Focus restoring not working correctly 2024-02-23 17:48:37 +01:00
WerWolv
91dcfefc5c fix: Crash when recovering from a thrown exception in the main thread 2024-02-23 17:48:23 +01:00
WerWolv
8059f22a32 impr: Make sure that highlight invalidation doesn't happen more than once per frame 2024-02-23 17:47:59 +01:00
WerWolv
a271658154 impr: Added once execution and task progress increment helpers 2024-02-23 17:47:40 +01:00
WerWolv
e6854d6a6a fix: String limiting slicing unicode characters 2024-02-22 23:44:49 +01:00
WerWolv
1ede41c778 fix: Compile issues using GCC 2024-02-22 23:11:59 +01:00
WerWolv
ed905aa0ff build: Updated ImGui to v1.90.4 2024-02-22 22:32:18 +01:00
WerWolv
e28b72e356 feat: Added a basic C++ and MSVC detector yara signature 2024-02-22 21:31:53 +01:00
WerWolv
daf007fae7 fix: Added missing translations 2024-02-22 21:31:26 +01:00
WerWolv
684c339309 tests: Ignore files in plugins folder when checking languages 2024-02-22 21:31:05 +01:00
WerWolv
3a44b840be impr: Restructure yara rule handling again 2024-02-22 20:49:21 +01:00
WerWolv
5db041adb7 impr: Make sure crashes during logging cannot cause a deadlock 2024-02-22 20:48:35 +01:00
WerWolv
ce704a7d92 git: Update Linux and macOS build instructions to use Ninja 2024-02-22 20:48:15 +01:00
WerWolv
0a9dca5be7 impr: Save data information view settings to projects 2024-02-21 23:21:24 +01:00
WerWolv
5ccb7a7b9a feat: Added simple yara data analyzer 2024-02-21 23:17:12 +01:00
WerWolv
4bd24a4ffe impr: Refactor Yara view 2024-02-21 22:08:26 +01:00
WerWolv
56e7c15064 impr: Refactor and modularize data information view 2024-02-21 00:06:52 +01:00
WerWolv
a2ffac9424 impr: Reorder achievement save routine to never accidentally clear the file 2024-02-20 00:10:05 +01:00
WerWolv
ca35c90cbb fix: Main menu not appearing for the first 200ms 2024-02-19 22:23:17 +01:00
WerWolv
74d59705ad fix: Issues where files are only being partially overwritten instead of truncated 2024-02-19 22:22:59 +01:00
WerWolv
adc51d3773 fix: Crash when restarting ImHex more than once 2024-02-19 22:06:46 +01:00
WerWolv
218946d5de fix: Crash when opening the interface settings tab 2024-02-18 22:45:54 +01:00
Nik
6b32fcef0f git: Remove ugly underlines between banners in readme 2024-02-18 22:32:11 +01:00
WerWolv
016d47b9d7 web: Make sure settings are loaded correctly 2024-02-18 14:02:21 +01:00
WerWolv
1bf1a56b01 git: Add more visible download banners to readme 2024-02-18 13:52:07 +01:00
WerWolv
0413302470 feat: Added setting to disable command palette button 2024-02-18 11:38:22 +01:00
WerWolv
01c934f53a impr: Rework setting change listeners 2024-02-18 11:29:18 +01:00
WerWolv
c1aac6c85e fix: Data inspector showing double negative signs sometimes
Fixes #1534
2024-02-18 10:06:51 +01:00
WerWolv
ed292a1e7a impr: Implement basic exception catching in main thread 2024-02-18 02:12:57 +01:00
WerWolv
61b164a183 feat: Added option to export table in find view 2024-02-17 21:42:41 +01:00
WerWolv
d196169bea fix: Additional folder paths not being loaded from config correctly 2024-02-17 21:30:23 +01:00
WerWolv
a2284a5143 fix: Crash when specifying invalid hash parameters
Fixes #1555
2024-02-17 21:28:30 +01:00
WerWolv
7486468537 fix: Localization issue with custom CRCs 2024-02-17 21:26:31 +01:00
Nik
e475e763db build: Hopefully fix macOS x86 build issues (#1556)
#1109
2024-02-17 21:01:57 +01:00
WerWolv
dfdd06b24c impr: Set name of background service thread 2024-02-15 22:10:11 +01:00
WerWolv
510ed25509 fix: Crash when saving a new file to disk 2024-02-15 22:09:58 +01:00
WerWolv
9f2f01c17d fix: Modification highlighting not working correctly when provider data was moved 2024-02-15 22:09:37 +01:00
WerWolv
12ba05385b fix: Saving not removing red highlighting 2024-02-15 21:54:41 +01:00
WerWolv
f113a2befe build: Only do dynamic linking of libpl on Windows 2024-02-15 16:10:16 +01:00
WerWolv
cc8a1ccc8b git: Try signing x86 macOS build _again_ before packaging
#1500
2024-02-15 15:40:58 +01:00
WerWolv
2f88994c37 fix: Data inspector not updating correctly when data has changed
Fixes #1545
2024-02-15 13:01:34 +01:00
WerWolv
e016c8a702 fix: Double clicking pattern data row not selecting the editing textbox
Fixes #1546
2024-02-15 13:01:03 +01:00
WerWolv
982d367b11 patterns: Updated pattern language 2024-02-15 11:54:59 +01:00
Sten Feldman
d70f7422b7 feat: Support Copy/Paste on WASM build outside the application border (#1542)
### Problem description
WASM build does not support copy/paste beyond the application. Meaning,
there's no practical way of sending text back and forth across the
application border.

There are lengthy threads why this is a technical challenge in
WASM/Browser world, e.g:
- https://github.com/pthom/hello_imgui/issues/3
- https://github.com/emscripten-core/emscripten/pull/19510

### Implementation description
Implements a workaround solution as Header only C++ library, as proposed
and implemented at:
https://github.com/Armchair-Software/emscripten-browser-clipboard

Maybe there are cleaner ways of achieving the functionality. Definitely
would like to have some discussion around this. 👀

ℹ️ The proposed PR "works for me" on Windows, using CTRL-C/V shortcuts
to copy text from and to the application. On MacOS the system shortcut
to Paste is different from what ImHex has defined. This results in
system Paste shortcut of command-V triggering the browser callback to
synchronise the application clipboard, but no actual Paste takes place
within ImHex.

If there would be a clean way to trigger the paste command, that would
be wonderful (or get the context and references to write the data to the
cursor, but I was unable to find a clean solution). The only proposed
solutions in the referenced threads were about triggering paste event
internally via Key events. This seemed wonky 🙃 , so is not currently
implemented. At the moment the paste on MacOS is command+V followed by
control+V.

### Additional things
This is definitely a stopgap solution before the ImGui and Emscripten
take a more proper solution in enabling Copy/Paste outside the
application borders. However, I feel like this is a must have capability
to make the WASM build more useful, not just for trying out ImHex.

Cheers! 🍻

---------

Co-authored-by: Nik <werwolv98@gmail.com>
2024-02-13 20:30:18 +01:00
reggie
56b2e09b01 build: Fix zstd not being linked in correctly (#1544)
Prior to this, at least on Linux/MacOS/etc, I guess it was not possible
to compile with Zstd included for `hex::dec::zstd_decompress()`:


![image](https://github.com/WerWolv/ImHex/assets/56618074/008dbb3d-eeaf-4f49-a918-4751ec69f00c)

Every other target lib for the decompression plugin would compile,
**except for** Zstd. Additionally, the target name `zstd` caused CMake
to not be able to find `Find(ZSTD).cmake` due to case-sensitivity
differences between Windows and Unix-based file paths, of course.
With that said, I'm not too sure if this will break building w/ Zstd on
Windows... Hopefully not 😄
2024-02-13 20:22:28 +01:00
WerWolv
ee3d6ec24b feat: Made sum hash calculation more useful 2024-02-13 20:20:48 +01:00
WerWolv
03beca1099 fix: Broken editing view column rendering in pattern drawer 2024-02-12 19:40:21 +01:00
WerWolv
588f8af966 impr: Remove separator line in view menu if fullscreen and always on top are disabled 2024-02-11 23:02:34 +01:00
WerWolv
eee5e9cd7f fix: Missing translation string in pattern drawer 2024-02-11 23:00:17 +01:00
WerWolv
27a78a00fd patterns: Updated pattern language 2024-02-11 20:44:21 +01:00
WerWolv
0aae605ac4 fix: Processing and drawing of diffs 2024-02-11 19:29:02 +01:00
WerWolv
5cfcca0bc4 feat: Allow switching off borderless window mode 2024-02-11 14:12:14 +01:00
WerWolv
daf4e5cad6 refactor: More cleanup of the main file 2024-02-11 13:46:06 +01:00
WerWolv
27b5d13733 impr: Store default setting when setting couldn't be loaded 2024-02-11 11:44:58 +01:00
WerWolv
5d405b4d10 build: Updated GLFW and OpenGL3 ImGui Backends 2024-02-11 11:44:44 +01:00
WerWolv
4519e24297 impr: Make corner icon stick out a bit less 2024-02-11 11:21:06 +01:00
WerWolv
2fd81c7ffd impr: Better UI for the main about screen page 2024-02-11 00:35:10 +01:00
WerWolv
106c35344b fix: Fade in and out of language text in oobe screen being broken 2024-02-11 00:18:20 +01:00
WerWolv
12f64e5fde build: Updated ImGui to the latest release 2024-02-11 00:11:56 +01:00
Nik
bcbcb1f23c impr: Various web build improvements, API cleanup (#1541) 2024-02-10 23:31:05 +01:00
WerWolv
4b20e35fd2 fix: macOS window missing decoration after restart 2024-02-10 10:17:15 +01:00
iTrooz
f332963c75 build: remove IMHEX_COMMIT_HASH_SHORT cmake flag (#1539) 2024-02-10 01:40:33 +00:00
WerWolv
a5f6756659 impr: Hide window immediately after render loop finishes 2024-02-09 19:42:47 +01:00
WerWolv
ebe0276141 impr: Add small gap between window frame and title bar buttons 2024-02-09 19:39:26 +01:00
WerWolv
9d47ba9031 impr: Cleanup pattern drawer, added comment column 2024-02-09 18:37:05 +01:00
iTrooz
09dd25dc0a fix: Remove debug package created by makepkg (#1537) 2024-02-08 15:49:28 +00:00
WerWolv
dfc249135f build: Make plugin RPATH on Linux point to the plugins folder 2024-02-07 21:51:59 +01:00
WerWolv
c3d755a3e2 fix: Decoding of Windows error messages being broken 2024-02-07 21:51:37 +01:00
WerWolv
1195d2f2e4 patterns: Updated pattern language 2024-02-05 18:49:51 +01:00
WerWolv
b05f478207 patterns: Updated pattern language 2024-02-04 21:45:53 +01:00
WerWolv
1c28d4f610 fix: Error message formatting 2024-02-04 20:59:33 +01:00
WerWolv
77baf6f522 fix: Native error message formatting on Windows 2024-02-04 20:21:16 +01:00
WerWolv
f583df6c7d impr: Improve overwriting individual characters in the hex editor editing mode 2024-02-04 17:19:08 +01:00
WerWolv
4093fadcae fix: Revert Windows title bar changes since window wasn't draggable anymore 2024-02-04 14:59:33 +01:00
WerWolv
16adacb722 fix: Footer height being wrong 2024-02-04 14:18:20 +01:00
Nik
5e5714baeb patterns: Merged in new pattern language refactor (#1533) 2024-02-04 14:03:42 +01:00
WerWolv
f60986de8e fix: Window title bar not looking correct on Windows 2024-02-04 13:55:15 +01:00
WerWolv
a6f4d0cdec impr: Unfocus ImGui windows when main window loses focus 2024-02-03 23:56:08 +01:00
WerWolv
64d147bf96 fix: Window footer being way too narrow 2024-02-03 22:43:06 +01:00
WerWolv
fe3facfc95 impr: Implement borderless window mode for macOS 2024-02-03 22:39:31 +01:00
WerWolv
3555fc01c5 impr: Allow closing menus by clicking on title bar on Windows 2024-02-03 20:19:45 +01:00
WerWolv
ab02cb0a19 build: Bundle libpl into rpm packages 2024-02-03 19:59:58 +01:00
WerWolv
24815c0370 fix: libpl not being installed correctly 2024-02-03 14:43:41 +01:00
WerWolv
a03e8dd879 impr: Harden settings system to not crash ImHex when having outdated configs
Fixes #1514
2024-02-03 12:16:36 +01:00
WerWolv
2ea0bbe5ca fix: Window title not always updating correctly 2024-02-03 11:29:04 +01:00
WerWolv
21e1d01394 patterns: Updated pattern language 2024-02-03 11:14:08 +01:00
WerWolv
ab842cbd73 build: Fix pattern language shared library ending up in the wrong folder on Linux 2024-02-03 10:41:11 +01:00
WerWolv
e864c1aaac fix: Crash due to libmagic bug when using MAGIC_COMPRESS with magic_buffer
#1529
2024-02-02 23:22:46 +01:00
WerWolv
a80f9e9ca7 build: Don't re-sign macOS bundle unless requested 2024-02-01 23:56:14 +01:00
WerWolv
959a404e1c fix: Don't pass nullptrs to libmagic
#1485
2024-02-01 22:35:24 +01:00
iTrooz
7546655695 fix: Fix detected wasm file size being wrong (#1525) 2024-02-01 14:03:33 +00:00
WerWolv
be0e50f983 web: Fix progress bar overflowing 2024-02-01 12:40:37 +01:00
WerWolv
baaf84298c impr: Disable console color output in web version 2024-02-01 12:09:43 +01:00
WerWolv
dfeb9dbc84 web: Allow setting language through URL parameters 2024-02-01 11:57:26 +01:00
WerWolv
4fd4b3dfad fix: Using cli arguments with statically linked plugins not working 2024-02-01 11:40:27 +01:00
WerWolv
7709f4e307 feat: Allow setting language through the command line 2024-02-01 10:58:45 +01:00
WerWolv
26eec66f89 web: Make progress bar prettier 2024-02-01 10:18:54 +01:00
iTrooz
e3c3233b3a feat: Add progress bar to web version (#1523) 2024-01-31 21:15:23 +00:00
WerWolv
f0a44e54d0 feat: Add export selection to file option 2024-01-31 22:07:08 +01:00
WerWolv
7a6ee756b8 patterns: Updated pattern language 2024-01-31 15:40:29 +01:00
WerWolv
944b3a5b6c fix: Selection valid check not working correctly 2024-01-31 15:31:51 +01:00
WerWolv
4a9bac3cd5 fix: Crash when opening file picker 2024-01-31 15:31:23 +01:00
WerWolv
2e630a48f7 build: Downgrade and lock emsdk version for now 2024-01-31 14:36:36 +01:00
iTrooz
baf1e88689 doc: fix --build flag in web docker compose (#1522) 2024-01-31 11:19:26 +00:00
WerWolv
80953a2286 feat: Allow jumping from hex editor to patterns and from patterns to source line 2024-01-31 11:26:22 +01:00
WerWolv
6393bfda37 build: Updated libwolv 2024-01-30 23:36:52 +01:00
WerWolv
d0bdfcd20b git: Update more github actions 2024-01-30 22:31:04 +01:00
WerWolv
e7b615c7e7 fix: Memory leak in event manager 2024-01-30 22:00:42 +01:00
WerWolv
2fd370f4ae tests: Clear events after tests ran 2024-01-30 21:24:26 +01:00
WerWolv
6b86ef3015 fix: Missing include 2024-01-30 21:20:53 +01:00
WerWolv
10f6aa3e4e fix: Default magic database not being bundled correctly 2024-01-30 21:19:43 +01:00
WerWolv
d5365fbf0c git: Update more actions due to NodeJS 16 deprecation 2024-01-30 21:19:25 +01:00
WerWolv
66d4034a4e build: Fix issues with large Windows builds 2024-01-30 21:19:04 +01:00
WerWolv
f4d1049be4 fix: More build errors 2024-01-30 16:32:48 +01:00
WerWolv
c2ff6f4e6b fix: Missing includes 2024-01-30 15:50:00 +01:00
WerWolv
79834b9566 impr: Added language selection to oobe screen 2024-01-30 14:57:36 +01:00
WerWolv
5459be46a4 patterns: Updated pattern language 2024-01-30 12:18:03 +01:00
WerWolv
d584edf546 impr: Improve situation where ImHex crashes on exit when resources aren't cleared properly 2024-01-30 11:21:34 +01:00
WerWolv
0cba735eb3 impr: Discard wayland platform errors 2024-01-30 00:47:02 +01:00
WerWolv
62978e5d34 feat: Added setting to always show provider tabs 2024-01-30 00:11:45 +01:00
WerWolv
3ea32212d7 feat: Added ASCII count minimap visualizer 2024-01-30 00:00:51 +01:00
WerWolv
ba6373daa4 fix: Moving Hex Editor cursor downwards jumping entire page at once 2024-01-29 23:29:18 +01:00
WerWolv
18b717594f fix: Rendering issues with Hex Editor Minimap 2024-01-29 23:28:53 +01:00
WerWolv
76e304c34e build: Fix various issues with linking, clang and unity builds 2024-01-29 22:57:39 +01:00
WerWolv
2e74a78f46 build: Improve unity builds 2024-01-29 21:18:32 +01:00
WerWolv
6a146e239a fix: Workspaces not being exported correctly 2024-01-29 20:50:00 +01:00
WerWolv
cecb8b8d31 fix: Linking issues and menu bar not appearing sometimes 2024-01-29 15:44:18 +01:00
Nik
339541a56f impr: Restructure various components much better (#1520) 2024-01-28 22:14:59 +01:00
WerWolv
6709087760 git: Update actions to latest versions 2024-01-28 22:10:37 +01:00
WerWolv
069544eb93 feat: Added Minimap to Hex Editor 2024-01-28 15:28:55 +01:00
iTrooz
17f769c40d feat: separate cmake configure steps + remove CMakeCache cache (#1519) 2024-01-28 11:40:12 +00:00
WerWolv
ba20790ed2 build: Make libpl not being linked twice 2024-01-28 01:09:26 +01:00
WerWolv
cb3bace15e lang: Update German translation 2024-01-27 22:16:50 +01:00
WerWolv
7c6f4d7bff feat: Added many new Hash algorithms 2024-01-27 20:24:53 +01:00
WerWolv
f0a56b4201 fix: Pattern code not being parsed when loaded from project 2024-01-27 17:33:15 +01:00
WerWolv
d2a26017d7 fix: Build error due to mismatching types 2024-01-27 16:56:18 +01:00
WerWolv
61048757e6 impr: Allow custom encodings with only single-byte characters to be displayed immediately 2024-01-27 16:49:31 +01:00
WerWolv
25b4745997 impr: Make zlib decompress function take in a windowSize parameter 2024-01-27 16:12:02 +01:00
WerWolv
7fec97561b git: Updated build instructions for macOS 2024-01-27 15:05:53 +01:00
paxcut
1957d6f432 feat: Added find-replace to pattern editor (#1465) 2024-01-27 14:52:20 +01:00
WerWolv
823881f7f1 fix: Invalid parameters passed to task progress bar formatter 2024-01-27 14:15:08 +01:00
PerikiyoXD
11f75f72ee feat: Add search options for string encoding and endianness (#1490)
Added search options for string encoding (UTF-8, UTF-16, UTF-32) and
endianness (Little, Big) in the hex editor. This enhancement allows
users to customize the search process based on different string
encodings and byte orders.

Affected files:
- `plugins/builtin/romfs/lang/de_DE.json`
- `plugins/builtin/romfs/lang/en_US.json`
- `plugins/builtin/romfs/lang/es_ES.json`
- `plugins/builtin/romfs/lang/it_IT.json`
- `plugins/builtin/romfs/lang/ja_JP.json`
- `plugins/builtin/romfs/lang/ko_KR.json`
- `plugins/builtin/romfs/lang/pt_BR.json`
- `plugins/builtin/romfs/lang/zh_CN.json`
- `plugins/builtin/romfs/lang/zh_TW.json`
- `plugins/builtin/source/content/views/view_hex_editor.cpp`

Resolves: #1325

---------

Co-authored-by: Nik <werwolv98@gmail.com>
2024-01-27 14:13:41 +01:00
WerWolv
5747b72a41 fix: Exit hex editor editing mode when right clicking
Fixes #1499
2024-01-27 13:41:38 +01:00
WerWolv
44510b5b64 impr: Make task progress not display -100% when in no progress state 2024-01-27 11:02:14 +01:00
WerWolv
6a1a991c08 fix: Pattern settings resetting at re-evaluation 2024-01-27 10:49:40 +01:00
WerWolv
33637e92b5 impr: Make changing pattern settings re-evaluate the code 2024-01-26 22:08:46 +01:00
WerWolv
4c06fd2fb8 impr: Allow plugins to be loaded in debug builds 2024-01-26 21:11:56 +01:00
WerWolv
f5c529b2b3 build: Define DEBUG macro again only in debug builds 2024-01-26 21:11:42 +01:00
iTrooz
b7349e42c7 feat: Allow users to open multiple files with the same name in the web version + make web Dockerfile able to run web server by itself (#1518) 2024-01-26 18:52:05 +00:00
iTrooz
a4d6932ed8 fix: remove TODO + show error message when reading/write in process provider (#1516) 2024-01-26 18:44:52 +00:00
WerWolv
d23d382038 impr: Disable the initial oobe screen in the web version 2024-01-26 16:54:27 +01:00
WerWolv
bde476dfb7 build: Make sure libraries are correctly linked in external plugins 2024-01-26 12:36:07 +01:00
Nik
6ae86ce906 build: Get rid of pkgconfig as much as possible (#1517) 2024-01-26 12:13:22 +01:00
WerWolv
b2121b25c1 fix: Set windows drop handler effect to copy 2024-01-26 00:08:15 +01:00
WerWolv
a08afcf11a impr: Add fallback file drop handler to Windows 2024-01-25 23:53:41 +01:00
WerWolv
919110b024 impr: Make data information view have per-provider state 2024-01-25 22:49:56 +01:00
WerWolv
9c25a1609e feat: Add more magic information to the information view 2024-01-25 22:49:22 +01:00
iTrooz
d86bf44e39 git: Add script to check localized texts occurrences in code (#1511)
This script will be executed on every CI run as part of tests, and will
ensure no unlocalised strings are present in the code

Note that texts without the `_lang` suffix will not be checked, e.g.
96fe608d60/plugins/builtin/source/content/views/view_provider_settings.cpp (L10)
2024-01-25 21:23:03 +01:00
iTrooz
e61ee528ff fix: Fix theme detection on Linux (#1512) 2024-01-25 19:46:12 +00:00
iTrooz
82b56613e9 fix: fix build with edlib (#1513) 2024-01-25 19:25:51 +00:00
WerWolv
78723887e1 build: Updated dependencies 2024-01-25 11:33:34 +01:00
WerWolv
920b403ee3 build: Fixed libimhex not finding nlohmann json on some platforms 2024-01-25 11:05:02 +01:00
WerWolv
390c1469b1 build: Fix rpath issues on macOS 2024-01-24 22:30:40 +01:00
WerWolv
b605c463a1 impr: Further improve interfacing with external plugins 2024-01-22 23:35:00 +01:00
WerWolv
00491c8d90 git: Put libimhex and the ui plugin library under LGPLv2.1 2024-01-22 19:05:04 +01:00
WerWolv
cc3a9f1e81 build: Fix finding .NET runtime when there's multiple installed versions 2024-01-22 14:59:23 +01:00
WerWolv
60e7362f4e feat: Allow extra plugin folders to be specified with the --plugins cli option 2024-01-22 12:53:07 +01:00
WerWolv
f2bab005d0 fix: Make screenshots on initial launch screen behave better in web version 2024-01-22 08:25:29 +01:00
WerWolv
7068a883ed feat: Added basic byte sum hash 2024-01-21 23:31:53 +01:00
WerWolv
3783ec6a23 impr: Save settings of all hashes to disk 2024-01-21 23:31:44 +01:00
WerWolv
0aaa02b347 fix: Diffing plugin not registering localization strings correctly 2024-01-21 23:30:05 +01:00
WerWolv
1af3bf5da7 fix: Crash on exit 2024-01-21 21:39:55 +01:00
WerWolv
d5a57564fe fix: Build issues due to unused variables 2024-01-21 21:39:50 +01:00
WerWolv
2d92858193 feat: Allow switching to other providers through command palette 2024-01-21 21:29:03 +01:00
WerWolv
f666751f5f build: Disable edlib unit tests 2024-01-21 19:55:10 +01:00
Nik
58603ed12a impr: Better experience when first starting ImHex (#1510) 2024-01-21 18:39:51 +01:00
Nik
d005b5d2d9 feat: Allow toolbar icons to be modified (#1509) 2024-01-21 18:39:32 +01:00
Nik
a13b5bf8c0 feat: Implement Myers' diffing algorithm (#1508) 2024-01-21 18:39:13 +01:00
iTrooz
9d351317b8 impr: Do not mark memory providers as dirty when creating them (#1506)
This is in an effort to avoid unnecessary popups
2024-01-21 18:38:58 +01:00
WerWolv
f29d784e13 build: Update .NET SDK version on Fedora 2024-01-21 18:04:18 +01:00
WerWolv
2e582e3a45 fix: Ambiguous conversion to UnlocalizedString 2024-01-21 14:31:19 +01:00
WerWolv
566147dfae fix: Popups not always appearing when starting ImHex 2024-01-21 14:22:08 +01:00
WerWolv
3e5967c5a7 fix: Dropping files onto ImHex opening them twice 2024-01-20 21:03:46 +01:00
WerWolv
52fda5aeb7 fix: Build issue on AlmaLinux due to missing include 2024-01-20 10:35:51 +01:00
WerWolv
a657a23aaa fix: Crash when hex editor view got too small 2024-01-20 10:33:11 +01:00
WerWolv
b32055290a fix: Assertion when there's too many hex editor rows on the screen 2024-01-20 10:32:31 +01:00
Ada
cc97c0e525 fix: Segfault when launching ImHex with file arguments (#1501)
d511080814 introduced a regression where
running imhex with arguments (i.e. `imhex blob1.bin blob2.bin`) will
segfault due to a null pointer dereference.

### Implementation description
This patch updates `getSubCommands` to follow the same control flow as
`getFeatures`, where if the function returns a null pointer, it will
return gracefully rather than crash.
2024-01-18 11:11:06 +01:00
WerWolv
ffb324f685 patterns: Updated pattern language 2024-01-16 00:46:01 +01:00
WerWolv
ad53a0bf4c build: Make PDB generation slightly better 2024-01-16 00:31:46 +01:00
WerWolv
2cc07f0e73 build: Add option to not generate PDB files in release builds 2024-01-15 23:33:31 +01:00
WerWolv
b3d3794e1d patterns: Updated pattern language 2024-01-15 21:10:44 +01:00
WerWolv
82a3017629 feat: Added always on top and fullscreen mode toggle 2024-01-15 20:52:08 +01:00
WerWolv
d511080814 impr: Make plugin features and subcommands work in statically linked builds 2024-01-13 00:34:13 +01:00
WerWolv
db1373d572 fix: Compile error due to types not being constexpr everywhere 2024-01-13 00:33:55 +01:00
WerWolv
ea7483f9a7 impr: Get rid of the concept of built-in plugins
#1489
2024-01-12 23:03:13 +01:00
WerWolv
7441720a88 fix: Invalid signedness in comparison 2024-01-12 18:33:18 +01:00
WerWolv
0d0dd7d57c fix: Make syncing pattern code not erase pattern code as often 2024-01-11 21:56:54 +01:00
WerWolv
e5c7e52d72 fix: Don't show info banner if there's nothing to show 2024-01-11 20:11:52 +01:00
WerWolv
72f4331703 feat: Added virtual files to the pattern language 2024-01-11 20:11:22 +01:00
WerWolv
5f02320e8e impr: Make drag n drop overlay localizable 2024-01-11 10:20:39 +01:00
WerWolv
3449525ead feat: Added drag-n-drop overlay for windows 2024-01-10 23:46:50 +01:00
WerWolv
1c17ec5599 fix: Avoid heap allocations in thread local storage 2024-01-10 20:13:53 +01:00
WerWolv
6611c865f7 fix: Missing <codecvt> include
Thanks to pxd
2024-01-10 19:48:26 +01:00
WerWolv
016c93e795 build: Update xdgpp submodule to rehosted github mirror 2024-01-10 15:38:27 +01:00
WerWolv
f518bdadbd fix: Properly clear thread-local thread name 2024-01-09 21:46:54 +01:00
WerWolv
b408baf254 impr: Make window management tools work better 2024-01-09 17:24:27 +01:00
WerWolv
58441634d6 fix: Provider information in information view always showing info from current provider 2024-01-09 16:48:49 +01:00
WerWolv
d5c8021b41 fix: Use a thread-local storage for thread names instead 2024-01-09 16:16:20 +01:00
WerWolv
929b5176ce impr: Fallback to old thread name API when new one isn't available 2024-01-09 13:43:34 +01:00
WerWolv
179a65ed8b fix: Crash on exit 2024-01-09 11:49:49 +01:00
WerWolv
dd9a2e1818 fix: Errors being thrown during library init 2024-01-09 11:38:56 +01:00
WerWolv
0b5656dcc4 fix: Manually initialize library plugins 2024-01-09 11:31:56 +01:00
WerWolv
037d77f28e impr: Improve plugin unload logging 2024-01-09 10:54:53 +01:00
WerWolv
301e95b708 impr: Move plugin unload logging to plugins 2024-01-09 10:53:50 +01:00
WerWolv
874bac7de2 impr: Include thread name in log 2024-01-09 10:39:06 +01:00
WerWolv
4668f429fb fix: RGBA8 node not setting outputs correctly, added buffer output 2024-01-09 09:49:07 +01:00
WerWolv
d43f25ec70 impr: Remove spaces from fill command input 2024-01-09 01:26:47 +01:00
WerWolv
bdee628360 fix: Views not being openable 2024-01-09 00:24:17 +01:00
WerWolv
a35530f63b fix: Menu bar being hidden by default in the web version 2024-01-08 23:41:28 +01:00
WerWolv
21d6c1326c fix: Invalid address bound check for jump-to option
Fixes #1487
2024-01-08 22:34:42 +01:00
WerWolv
bfafc692db impr: Added icons to all menu items 2024-01-08 21:51:48 +01:00
WerWolv
3a068b9719 impr: Use ImGui's built-in drag n drop support for bookmarks 2024-01-08 10:56:53 +01:00
WerWolv
9530100455 fix: Texture interpreting raw data as structured images 2024-01-08 09:39:01 +01:00
WerWolv
cab329556c impr: Make sure plugins are only loaded once 2024-01-07 18:45:17 +01:00
WerWolv
1c5d6cbe94 impr: Added error reporting for plugin unloading 2024-01-07 16:07:53 +01:00
WerWolv
576bc80716 impr: Use full windows to draw tutorial popups 2024-01-06 22:54:18 +01:00
Anton Samokhvalov
8042aa39bf fix: ODR issues in plugin bundle generation (#1486)
fix possible ODR - multiple classes with same name in different .cpp
files
2024-01-06 22:13:35 +01:00
WerWolv
409b3ccd6c fix: Popups not appearing at launch sometimes and crashes when exiting 2024-01-06 17:38:55 +01:00
WerWolv
c89d19cd27 impr: Make file provider use atomic file IO instead of memory mappings 2024-01-06 16:09:28 +01:00
WerWolv
f9ab16049b fix: Make sure plugins are unloaded in opposite load order 2024-01-06 16:09:05 +01:00
WerWolv
09300c209f build: Updated libfmt 2024-01-06 09:36:53 +01:00
Nik
d199e0fa0f git: Updated plugin template link 2024-01-05 22:19:05 +01:00
WerWolv
89cab26888 build: Use Arch Docker file to its own folder 2024-01-05 21:37:24 +01:00
WerWolv
31b900a71c git: Make a imhex-download-sdk release when a new ImHex version is released 2024-01-05 21:35:02 +01:00
WerWolv
76a58cd843 fix: Updater not renaming file correctly 2024-01-05 18:12:46 +01:00
WerWolv
dbdc900e94 build: Don't update pacman packages on msys2 2024-01-05 14:52:07 +01:00
WerWolv
e3ec4ebd21 build: Make msys2 deps install script use pacboy 2024-01-05 14:47:30 +01:00
WerWolv
2ab529a3f5 build: Make macos ARM build only require macOS 12.1 as well 2024-01-05 13:52:53 +01:00
Nik
a82fdcca4b build: Remove manual macOS code signing again 2024-01-05 12:39:19 +01:00
Nik
0627b36bf6 git: Fixed rest of the screenshots in the readme 2024-01-04 22:39:28 +01:00
Nik
e8a5b5ab9c git: Fixed screenshots in readme 2024-01-04 22:37:31 +01:00
WerWolv
a1edb1b896 build: Bumped version to 1.32.2 2024-01-04 22:08:00 +01:00
WerWolv
b27e63586e build: Bundle nodes folder with executable 2024-01-04 22:07:49 +01:00
WerWolv
d2bd5b5640 impr: Make antialiasing be enabled by default for custom fonts 2024-01-04 21:33:45 +01:00
WerWolv
f91505ff09 fix: Unnecessary reinterpret_cast 2024-01-04 21:33:30 +01:00
WerWolv
464495987a fix: Crash due to task manager not being fully reset 2024-01-04 21:33:17 +01:00
WerWolv
27aef75e54 build: Added a plugin template to the SDK 2024-01-04 20:25:51 +01:00
WerWolv
70e3b4dd1a build: Cleanup build script a bit 2024-01-04 17:55:53 +01:00
WerWolv
556fd2bbc3 build: Really only build the things that are necessary 2024-01-04 13:18:27 +01:00
WerWolv
0097d1782e build: Fix external plugins not having a imhex version set 2024-01-04 12:01:40 +01:00
WerWolv
f03bdc5f45 build: Exclude libraries from main build target in sdk 2024-01-04 11:34:56 +01:00
WerWolv
ebf379f7c1 build: Fix some sdk variables not being set correctly 2024-01-04 10:39:07 +01:00
WerWolv
cd72ff1f84 build: Fix installing external plugins 2024-01-04 10:25:29 +01:00
WerWolv
eca41cac16 build: Fix more link and define issues 2024-01-04 01:06:38 +01:00
WerWolv
a8e2e132d1 build: Fix library linking and define setting issues 2024-01-04 01:01:51 +01:00
WerWolv
499711b9af build: Updated libfmt 2024-01-04 00:40:40 +01:00
WerWolv
b0eec3a844 build: Added dmg background resource 2024-01-04 00:38:40 +01:00
WerWolv
24e90f0f20 feat: Added simple HTTP request tool 2024-01-04 00:38:21 +01:00
WerWolv
ff48d37598 build: Make SDK not try to link to unbundled libraries 2024-01-04 00:37:56 +01:00
WerWolv
c402d58685 fix: Force scaling of default font to be a integer multiple 2024-01-03 18:26:48 +01:00
WerWolv
ed8934882e impr: Make sure detached windows always have an appropriate size 2024-01-03 18:26:25 +01:00
WerWolv
62093a8dd8 fix: ImHex not always going to sleep correctly 2024-01-02 17:11:52 +01:00
WerWolv
4a5f1038e0 fix: Crash when opening a file that cannot be mapped into memory 2023-12-31 14:58:20 +01:00
WerWolv
8cb833eca9 impr: Improve Documentation AI UX 2023-12-31 13:53:44 +01:00
WerWolv
e2b7a69fc8 fix: Warnings when trying to load progress for achievements that aren't in save file 2023-12-31 13:53:28 +01:00
Nik
950eaea8af impr: Make decompression support actually useful (#1481) 2023-12-31 11:39:24 +01:00
WerWolv
b22d90f9ca impr: Handle hiding of main menu better 2023-12-31 11:39:06 +01:00
WerWolv
b76e7ff678 impr: Remove duplicate window name from macOS title bar 2023-12-30 23:52:25 +01:00
WerWolv
9c386e949d git: Add brewfile lock to gitignore 2023-12-30 19:41:09 +01:00
WerWolv
2b1688be31 build: Don't try to sign unbundled executable on macOS 2023-12-30 19:40:01 +01:00
WerWolv
3d9de1aaa6 git: Fix Ubuntu builds missing commit information 2023-12-30 19:12:04 +01:00
Nik
5a0a5ad445 build: Fix macOS M1 build entirely (#1480) 2023-12-30 19:11:33 +01:00
WerWolv
038b98eacf fix: Foreground color not applying to ASCII column
Fixes #1477
2023-12-29 22:41:12 +01:00
WerWolv
3592d17c93 impr: Allow Home/End to work in hex editor view 2023-12-29 11:30:23 +01:00
WerWolv
4cbd84671c impr: Allow num keys to be interpreted as function keys if numlock isn't set
Closes #1475
2023-12-29 11:29:31 +01:00
WerWolv
c3c9603ea1 fix: Yara rules Add button not doing anything 2023-12-29 11:12:50 +01:00
WerWolv
af63b42eaf impr: Make task progress bar show animation when no progress is set 2023-12-28 22:14:45 +01:00
WerWolv
2f7da91a73 fix: Remove unused update parameter 2023-12-28 21:51:31 +01:00
WerWolv
8fcf08132e fix: Allow store to properly update files 2023-12-28 20:59:34 +01:00
WerWolv
db72ba295a build: Don't try to bundle updater on targets that don't have an updater 2023-12-28 20:44:42 +01:00
WerWolv
2d7a6a7cb5 fix: Uncaught exception when trying to update all store items 2023-12-28 20:35:35 +01:00
WerWolv
390b5a7925 fix: Logs in log view not being filtered correctly 2023-12-28 20:34:49 +01:00
WerWolv
5ca6ed30b4 build: Fix updater not being installed correctly 2023-12-28 20:26:58 +01:00
WerWolv
9685b39969 fix: Missing reference 2023-12-28 19:25:37 +01:00
WerWolv
03dc26d2d4 build: Always extract magic file database 2023-12-28 19:24:56 +01:00
WerWolv
b64bb3bec9 fix: Crashes when opening diffing view 2023-12-28 19:21:15 +01:00
WerWolv
8d3530a4f3 build: Bumped version to 1.32.1 2023-12-28 18:33:36 +01:00
WerWolv
83b1416797 build: Fixed dependencies of plugins not being bundled correctly 2023-12-28 18:05:49 +01:00
WerWolv
5adeac6bbc fix: Make sure library plugins are always initialized 2023-12-28 14:59:23 +01:00
WerWolv
f44b44a881 build: Fix wrong dependency name for libarchive on Ubuntu
Fixes #1474
2023-12-28 14:48:36 +01:00
WerWolv
1ed978f22e impr: Remove telemetry checkboxes from settings in the web version
They are disabled there and should not be enableable
2023-12-28 13:24:31 +01:00
WerWolv
7ed06ae515 git: Fixed set -x wrongfully added to windows CI
Closes  #1473
2023-12-28 11:48:13 +01:00
WerWolv
63042dbba8 build: Bumped version to 1.32.0 2023-12-28 00:37:50 +01:00
WerWolv
144d8d8ed4 web: Prevent canvas flickering when resizing browser window 2023-12-27 22:00:09 +01:00
WerWolv
99ba47a554 impr: Even less laggy UI 2023-12-27 21:23:54 +01:00
WerWolv
0462dab170 impr: Make the UI a bit less laggy 2023-12-27 21:11:40 +01:00
WerWolv
258481b0ba git: Fix errors and warnings thrown by CI 2023-12-27 21:11:27 +01:00
WerWolv
cb35f456ed build: Fix building on clang 2023-12-27 17:42:44 +01:00
WerWolv
686f8f43c3 fix: Pattern editor error tooltip becoming way too large in some cases 2023-12-27 17:29:27 +01:00
WerWolv
99dcd0a020 fix: Crash when receiving invalid data from API 2023-12-27 17:10:50 +01:00
WerWolv
3c6f52f5ea impr: Harden achievement progress store function 2023-12-27 16:57:44 +01:00
WerWolv
874619f62e impr: Harden settings store function 2023-12-27 16:53:03 +01:00
WerWolv
74b5c93caf impr: Code style improvements 2023-12-27 16:33:49 +01:00
WerWolv
ec45d1f564 build: Updated libwolv 2023-12-27 16:26:02 +01:00
WerWolv
42a75fe133 impr: Make ImHex's name not look weird in various places 2023-12-27 13:54:31 +01:00
WerWolv
e414c1cf1e impr: Implement rendering power saving using hashes 2023-12-27 13:54:00 +01:00
WerWolv
1cf692cecf fix: PerProvider move event not being unsubscribed 2023-12-27 11:33:04 +01:00
WerWolv
af5b871383 fix: Provider not having any valid regions by default 2023-12-27 11:31:25 +01:00
WerWolv
37d60411bb fix: Hyperlink items disappearing inside of scrolling containers 2023-12-27 02:14:38 +01:00
WerWolv
d7ba2e7171 feat: Add button to export pattern language section to a file 2023-12-27 01:58:20 +01:00
WerWolv
215be9255e fix: Hex editor not having a default selection color 2023-12-27 01:37:41 +01:00
WerWolv
9d0fd1f5b6 build: Try to fix Fedora build issues 2023-12-27 01:10:08 +01:00
WerWolv
4e0a93fc20 fix: MemoryProvider not having any valid regions 2023-12-27 01:05:34 +01:00
WerWolv
a0fddd2953 build: Try detecting macOS better when updating libarchive include path 2023-12-27 00:38:32 +01:00
WerWolv
40e66313a9 build: Fix library plugin install path 2023-12-27 00:31:47 +01:00
WerWolv
87155f98b3 fix: Bytes not automatically being focused in editing mode anymore 2023-12-26 23:43:11 +01:00
WerWolv
483325990c fix: Byte foreground highlighting being disabled during editing 2023-12-26 23:42:50 +01:00
WerWolv
83fa024fab feat: Added Base64 provider 2023-12-26 23:42:22 +01:00
WerWolv
96fe608d60 impr: Switch most usages of modals over to toasts 2023-12-26 00:22:47 +01:00
WerWolv
52192a3b26 impr: Better FPS graph 2023-12-25 23:23:19 +01:00
WerWolv
75e575fc01 impr: Remove shadow drawn by the no views open window 2023-12-24 14:52:14 +01:00
WerWolv
98bc89cb39 impr: Make sure all views are closed before loading new workspace or layout 2023-12-24 14:51:47 +01:00
WerWolv
d2d244ebc7 build: Make libarchive not required 2023-12-24 14:43:49 +01:00
WerWolv
9952854b53 build: Try different libarchive include path detection method 2023-12-24 14:37:59 +01:00
WerWolv
3bb079216c impr: Make sure welcome screen never gets detached from main window 2023-12-24 14:35:44 +01:00
WerWolv
b845dbb882 git: Ignore local folder produced by docker builds 2023-12-24 14:35:27 +01:00
WerWolv
7eb92c68de build: Only fix libarchive include dirs when necessary 2023-12-24 14:30:10 +01:00
WerWolv
24f8ce9d7f build: Fix macOS M1 build 2023-12-24 13:57:21 +01:00
WerWolv
343e98c99a build: Fix missing libarchive include directories on macOS 2023-12-24 13:41:10 +01:00
WerWolv
bc76eee847 build: Remove minimum required libarchive version 2023-12-24 13:33:18 +01:00
WerWolv
91ae8ba410 build: Add missing dependencies to brewfile and rpm spec 2023-12-24 13:26:05 +01:00
WerWolv
e2489151f3 feat: Added decompressing support 2023-12-24 13:14:51 +01:00
WerWolv
9066891ce2 fix: ImHex not starting on some platforms 2023-12-24 12:20:51 +01:00
WerWolv
65e2f1b5af fix: Synchronized scrolling not working correctly 2023-12-24 00:06:16 +01:00
WerWolv
020efefb25 git: Added new hashes to readme 2023-12-23 23:19:05 +01:00
WerWolv
83f8370e2a impr: Don't display plugins in the list that couldn't be loaded 2023-12-23 23:12:15 +01:00
WerWolv
61accd9569 fix: Hex editor displaying invalid bytes when no data is available 2023-12-23 23:04:40 +01:00
WerWolv
8a428df7df build: Updated HashLibPlus 2023-12-23 22:57:25 +01:00
WerWolv
de6bb5dfb9 build: Updated HashLibPlus 2023-12-23 22:55:41 +01:00
WerWolv
80561001b8 build: Updated HashLibPlus 2023-12-23 22:40:47 +01:00
WerWolv
33d077e997 build: Updated HashLibPlus 2023-12-23 22:25:01 +01:00
WerWolv
fe24db7c57 feat: Move hashes into plugin, merged in extra hashes plugin 2023-12-23 22:01:47 +01:00
Nik
61bfe10bc2 refactor: Rework features that use external libraries into optional plugins (#1470) 2023-12-23 21:09:41 +01:00
Nik
84bfd10416 build: Restructured entire custom plugin system (#1469) 2023-12-22 23:39:38 +01:00
WerWolv
538e79183c fix: Build because i64 is not the same as ImS64 somehow 2023-12-22 21:34:11 +01:00
WerWolv
ec64952cb4 impr: Only auto backup if there's something to backup 2023-12-22 21:16:09 +01:00
WerWolv
b934ca6ad3 impr: Allow a entire 64 bit address space to be displayed in the hex editor 2023-12-22 16:58:50 +01:00
WerWolv
0da6c03a8f git: Highlight collapsible headers better in readme 2023-12-22 13:59:57 +01:00
WerWolv
a54cbca6d2 git: Modernize readme 2023-12-22 13:53:29 +01:00
Justus Garbe
ad8e3e38f0 Revert pattern language until it's stable again (#1468)
- Revert pattern language
2023-12-21 22:01:07 +01:00
WerWolv
ffc1aa6a91 patterns: Updated pattern language 2023-12-21 16:56:21 +01:00
WerWolv
6ee1e72021 impr: Disable close provider button when tasks are running 2023-12-21 16:56:12 +01:00
WerWolv
5bc8e5c57c impr: Only display background color of patterns that have a color 2023-12-21 16:40:08 +01:00
WerWolv
d48acf7fef patterns: Updated pattern language 2023-12-21 16:39:37 +01:00
WerWolv
72260b5323 patterns: Updated pattern language 2023-12-21 16:23:50 +01:00
WerWolv
e84b8cb96d build: Fix glfw linking 2023-12-21 16:02:28 +01:00
WerWolv
adcaad791a patterns: Updated pattern language 2023-12-21 14:58:45 +01:00
WerWolv
b0490cfbbc build: Improve pdb generation 2023-12-21 13:57:40 +01:00
WerWolv
86231d0154 build: Release build on Windows trying to link to glfw3dll for some reason 2023-12-21 13:57:25 +01:00
WerWolv
6163f6c4a0 fix: ImHex crashing when no fonts were loaded 2023-12-20 16:31:31 +01:00
WerWolv
e3e117a14e impr: Close tutorial view when a tutorial is started 2023-12-20 15:26:45 +01:00
WerWolv
e2ae567b9f fix: Logger not printing project prefix properly 2023-12-20 15:10:53 +01:00
WerWolv
a0c2dc43f7 fix: Tutorial highlighting 2023-12-20 14:35:13 +01:00
WerWolv
f47163c4ad build: Updated libromfs 2023-12-20 14:11:51 +01:00
WerWolv
e951359a46 feat: Add frame time graph to FPS display 2023-12-20 13:42:42 +01:00
WerWolv
bf6b2db0cb fix: Infinite loop on crash 2023-12-20 13:38:13 +01:00
WerWolv
1ea8269dec impr: Better frame unlock logic 2023-12-20 12:07:22 +01:00
WerWolv
9bd1970371 fix: Debug breakpoint in crash handler not being triggered at all 2023-12-20 10:50:58 +01:00
WerWolv
5b3ae56912 patterns: Update all pattern language code to use new API 2023-12-20 10:08:40 +01:00
WerWolv
2b5789631f feat: Added basic toast popups 2023-12-19 23:21:20 +01:00
WerWolv
a6025e72fb fix: RGBA8 hex editor data visualizer not working correctly 2023-12-19 23:20:56 +01:00
WerWolv
96db2074c6 feat: Add ignore case and UTF16 search options to sequence searching 2023-12-19 14:34:35 +01:00
WerWolv
c7ab4a4569 refactor: Get rid of this->m_ 2023-12-19 13:10:25 +01:00
WerWolv
dd4be3b772 refactor: Make sure unlocalized strings are always actually unlocalized 2023-12-19 12:22:28 +01:00
WerWolv
8fe490ed03 fix: Escape to deselect bytes not working 2023-12-19 00:03:00 +01:00
WerWolv
eb21a5992f impr: Make sure no empty popup appears when right clicking search box 2023-12-18 22:51:08 +01:00
WerWolv
a3f1a5b0a9 fix: Crash when right clicking search bar when a provider with no menu options is open 2023-12-18 22:45:15 +01:00
WerWolv
71763d108b build: Updated libwolv 2023-12-18 22:39:46 +01:00
WerWolv
dc9ab135c8 impr: Make sure quick settings window always stays attached to bottom right 2023-12-18 14:57:37 +01:00
WerWolv
3dd33d0966 web: Force disable filtering of canvas 2023-12-18 14:57:17 +01:00
WerWolv
1cb2e0d765 impr: Make quick settings floating window auto resize 2023-12-18 13:55:50 +01:00
WerWolv
b34fb2d225 impr: Remove separator from view menu in release mode 2023-12-18 13:55:32 +01:00
WerWolv
4973556fc8 impr: Better UI resize handling on welcome screen 2023-12-18 13:08:17 +01:00
WerWolv
2948e57242 fix: std::views::enumerate not being widely supported yet 2023-12-18 12:43:16 +01:00
WerWolv
521ee5fe2d impr: Better pattern background coloring in pattern data view 2023-12-18 12:02:41 +01:00
WerWolv
478d6118d8 fix: Prevent empty provider menu from being opened 2023-12-18 11:58:31 +01:00
WerWolv
1b43270ae9 fix: Don't show provider as Read Only if it's empty 2023-12-18 11:58:19 +01:00
WerWolv
ec4fdc44ef impr: Draw hint in hex editor if no data can be displayed 2023-12-18 11:58:03 +01:00
WerWolv
91f49e2c6e fix: Window title not updating correctly when renaming memory file 2023-12-18 11:46:39 +01:00
WerWolv
6bc4a7242e fix: Allow search bar to be right clicked to open provider menu 2023-12-18 11:46:23 +01:00
WerWolv
eeab529bfa fix: Welcome screen close button position 2023-12-18 11:30:09 +01:00
WerWolv
d798713c60 fix: Missing includes, rename init function 2023-12-18 11:24:40 +01:00
WerWolv
edc4b18975 impr: Add plugin table to about page 2023-12-18 11:21:33 +01:00
WerWolv
450c93e029 impr: Cleanup welcome screen 2023-12-18 11:03:19 +01:00
WerWolv
c1abbfad7d impr: Make sure welcome screen stays at the back 2023-12-18 10:14:07 +01:00
WerWolv
d2d36c2211 impr: Add localization to color picker tool 2023-12-18 08:58:15 +01:00
WerWolv
aaaa02dbd0 impr: Improve handling of floating tool windows 2023-12-18 08:58:00 +01:00
WerWolv
a844fb3731 fix: Hash string popup being way too small 2023-12-17 23:47:42 +01:00
WerWolv
8f83fe5135 fix: Max field in value search not resetting when disabling range search 2023-12-17 23:38:10 +01:00
WerWolv
978558649e fix: Diffing view not highlighting correctly with a custom base address 2023-12-17 23:34:19 +01:00
WerWolv
3b5efb37e9 fix: Editing data inspector rows not working correctly 2023-12-17 23:31:01 +01:00
WerWolv
90abe982ed fix: Bookmark region setting not being locked correctly 2023-12-17 23:22:39 +01:00
WerWolv
7a0680c2cb impr: Add warning to disk provider if ImHex is not running elevated 2023-12-17 23:16:55 +01:00
WerWolv
71dd349044 fix: Highlighting in hex editor not being drawn correctly anymore 2023-12-17 23:16:04 +01:00
WerWolv
f2a795c51e fix: Provider loader interface being closable and not resizing correctly 2023-12-17 23:15:52 +01:00
WerWolv
7ad7ea061c impr: Refactor init logic 2023-12-17 20:33:17 +01:00
WerWolv
a315ecb831 fix: Flickering of selection frame in hex editor view when scrolling 2023-12-17 18:26:36 +01:00
WerWolv
c3d99e29dc web: Fix various HTML errors 2023-12-16 15:33:22 +01:00
WerWolv
f90f4b00a8 web: Some more SEO 2023-12-16 11:39:07 +01:00
WerWolv
b1aa4fd3f8 fix: Resize operations not working correctly
#1463
2023-12-15 20:59:58 +01:00
WerWolv
b5df20d7c6 feat: Exposed demangling of symbols to CLI 2023-12-15 08:11:51 +01:00
WerWolv
b58463bbaf build: Updated libwolv 2023-12-15 08:11:22 +01:00
WerWolv
b71a776770 fix: Format security error 2023-12-14 20:59:30 +01:00
WerWolv
78ef5b0d07 fix: ProviderChanged Event not being called correctly when closing first provider
Fixes #1421, Fixes #1416
2023-12-14 20:48:30 +01:00
WerWolv
c1f76be3b7 feat: Display complete window title when hovering over search bar 2023-12-14 13:50:26 +01:00
WerWolv
2ebd3c6f35 impr: Better centering of icons in icon buttons 2023-12-14 13:49:46 +01:00
WerWolv
003f9619c3 fix: Multiple localization issues 2023-12-14 11:33:54 +01:00
WerWolv
710ceedf3d fix: Rare case where workspace was saved to wrong file 2023-12-14 09:36:29 +01:00
WerWolv
5b77f511d3 impr: Added shadow to tutorial popups 2023-12-13 23:44:53 +01:00
WerWolv
f000b6bc0a feat: Added basic introduction tutorial 2023-12-13 23:03:39 +01:00
WerWolv
346f1362c6 impr: Allow more popups to be closed with Escape 2023-12-13 15:08:27 +01:00
WerWolv
92043a3d23 feat: Added tutorials view 2023-12-13 13:04:59 +01:00
WerWolv
3bc5295eae impr: Allow tutorials to work correctly with localized strings 2023-12-13 11:48:21 +01:00
WerWolv
5bcfe37b4e feat: Added tutorial system 2023-12-13 11:24:25 +01:00
WerWolv
1a8a9e53e1 impr: More information view UI improvements 2023-12-12 13:20:51 +01:00
WerWolv
c32dad75cd fix: Remove logging from CLI 2023-12-12 13:20:39 +01:00
WerWolv
045733d188 fix: Auto extractor overwriting existing files 2023-12-12 12:15:32 +01:00
WerWolv
f618e634e9 impr: Better UI for the data information view 2023-12-12 12:15:20 +01:00
WerWolv
1b457dae7d fix: Workspaces not always loading layout correctly 2023-12-12 00:16:21 +01:00
WerWolv
690b0df932 fix: Crash after restarting ImHex 2023-12-11 23:05:58 +01:00
WerWolv
e080164305 fix: Restart imhex popup not working correctly 2023-12-11 23:05:47 +01:00
WerWolv
1e4bb8c91e impr: Remove Font Awesome 2023-12-11 23:05:35 +01:00
WerWolv
17a7621342 fix: Style var not being popped correctly 2023-12-11 22:09:13 +01:00
WerWolv
ce27cb11a5 impr: Delete old backup files 2023-12-11 21:29:30 +01:00
WerWolv
b84b82c416 fix: Properly get auto backup file creation time 2023-12-11 21:17:40 +01:00
WerWolv
623e074ba0 build: Updated libromfs 2023-12-11 16:11:49 +01:00
WerWolv
91230ba438 feat: Added workspaces 2023-12-11 15:54:22 +01:00
WerWolv
cc4d61f8f5 build: Allow both libglfw3 and libglfw3-wayland as dependencies for the .deb package
#1227
2023-12-11 15:53:24 +01:00
WerWolv
7a4358a5ec feat: Added automatic backups 2023-12-11 11:42:33 +01:00
WerWolv
e6796d1458 fix: Hex editor footer taking up way too much space 2023-12-10 22:46:34 +01:00
WerWolv
1ba34c233e fix: Various scaling issues 2023-12-10 22:37:26 +01:00
WerWolv
ef7898ea8d impr: Add support for specifying filtering mode when loading textures 2023-12-09 22:00:35 +01:00
WerWolvTranslationBot
e49c3182ce lang: Translations update from Weblate (#1458)
Translations update from [Weblate](https://weblate.werwolv.net) for
[ImHex/Built-in
Plugin](https://weblate.werwolv.net/projects/imhex/built-in-plugin/).


It also includes following components:

* [ImHex/Windows
Plugin](https://weblate.werwolv.net/projects/imhex/windows-plugin/)



Current translation status:

![Weblate translation
status](https://weblate.werwolv.net/widgets/imhex/-/built-in-plugin/horizontal-auto.svg)

---------

Co-authored-by: Minseo Lee <itoupluk427@gmail.com>
2023-12-09 16:22:19 +01:00
WerWolv
c58c3dd311 impr: Make banner not as obnoxiously big 2023-12-09 16:20:58 +01:00
WerWolv
7738f8c831 impr: Highlight border of information banner when hovered 2023-12-09 15:56:26 +01:00
WerWolv
27cd3cc83a fix: Missing welcome screen header localization 2023-12-09 15:32:21 +01:00
WerWolv
2f5e04d07f web: Add sitemap to robots.txt 2023-12-09 13:57:55 +01:00
WerWolv
15af0726f1 build: Disable error on unknown warning flags 2023-12-09 13:57:46 +01:00
WerWolv
a60a45fb9d web: Fix various more SEO issues 2023-12-09 13:35:06 +01:00
WerWolv
df03ba3883 build: Fix build on macOS 2023-12-09 12:23:11 +01:00
WerWolv
09a148b8a5 impr: Add hint text about font size when no custom font is selected 2023-12-09 12:14:45 +01:00
WerWolv
350635d464 web: More UI and SEO improvements 2023-12-09 12:06:20 +01:00
WerWolv
cf13404254 web: Let's do some SEO 2023-12-08 16:22:47 +01:00
WerWolv
878f45dd80 fix: Various build errors 2023-12-08 16:22:36 +01:00
WerWolv
48bc0985d9 impr: Make info banner open a web page 2023-12-08 14:46:32 +01:00
WerWolv
e9bca123c2 impr: Allow per-OS info banners 2023-12-08 14:43:59 +01:00
WerWolv
6df3a9243f fix: Rename scaling setting to avoid old values being interpreted wrongly 2023-12-08 14:36:42 +01:00
WerWolv
f1b40d0500 build: Updated libromfs 2023-12-08 14:30:35 +01:00
WerWolv
0cbaf40747 build: Allow for better stacktraces on Linux 2023-12-08 14:00:32 +01:00
Tha_14
54c5d9debb git: Include diffing as a feature in Readme (#1459)
I saw that diffing is not mentioned anywhere in the README.md and people
I referred ImHex to did not consider using the editor due to diffing
being a requirement for them.

### Problem description
Diffing is not mentioned anywhere in the README.md

### Implementation description
Added Diffing to the features list of README.md
2023-12-08 12:56:44 +01:00
WerWolv
411884966b fix: Crash when making pattern editor window too small 2023-12-08 11:15:32 +01:00
WerWolv
ef25542220 impr: Remove old unused files 2023-12-08 11:15:18 +01:00
WerWolv
b4813660b5 refactor: Better interface for the event system 2023-12-08 10:29:44 +01:00
WerWolv
f08d1e265c impr: Make extra providers window wider 2023-12-07 23:51:11 +01:00
WerWolv
470bc8a049 fix: Adjust sidebar items to look better with new layout 2023-12-07 23:47:25 +01:00
Truman Kilen
5c84ef5f72 feat: Added Linux support to the Process Memory Provider (#1331)
<!--
Please provide as much information as possible about what your PR aims
to do.
PRs with no description will most likely be closed until more
information is provided.
If you're planing on changing fundamental behaviour or add big new
features, please open a GitHub Issue first before starting to work on
it.
If it's not something big and you still want to contact us about it,
feel free to do so !
-->

### Problem description
<!-- Describe the bug that you fixed/feature request that you
implemented, or link to an existing issue describing it -->
Implement a Linux backend for the ProcessMemoryProvider plugin.

### Implementation description
<!-- Explain what you did to correct the problem -->
Most of the provider code is the same between Windows and Linux. The
primary differences are:
- enumerate PIDs in `/proc/` to get the process list
- use `/proc/<PID>/cmdline` as the process name
- parse `/proc/<PID>/maps` to get the module list
- reading/writing from memory is done using
`process_vm_readv`/`process_vm_writev`

NOTE: `sudo setcap CAP_SYS_PTRACE=+eip build/imhex` must be run to give
the binary permission to read another process' memory. Running as root
user should also work but I would not recommend it.

### Additional things
The existing translations keys no longer match since I moved the plugin
from `windows` to `builtin`.

I'm not well versed in C++ so I attempted to keep my changes rather
simple. Feedback is very welcome.

---------

Co-authored-by: WerWolv <werwolv98@gmail.com>
2023-12-07 23:33:15 +01:00
WerWolv
8ab85a2af1 feat: Added unit converter to command palette 2023-12-07 16:15:00 +01:00
WerWolv
7f69f8bcdb impr: More size_t -> u64 2023-12-07 13:02:12 +01:00
WerWolv
3a016da549 impr: Make providers return a 64 bit size on all platforms 2023-12-07 12:06:26 +01:00
WerWolv
7b3e13c748 fix: Add missing localizations 2023-12-07 11:53:31 +01:00
WerWolv
f5cbcce112 impr: Add close button to toolbar 2023-12-07 11:53:16 +01:00
WerWolv
5f8c813aa7 impr: Only show provider selector bar when more than one is open 2023-12-07 11:21:13 +01:00
WerWolv
f68202a098 impr: Make hex editor footer collapsible 2023-12-07 11:20:54 +01:00
WerWolv
bfb2c6ab5f impr: Automatically remove null provider if another one is opened 2023-12-07 11:20:37 +01:00
WerWolv
00a24bc84b impr: Remove "ImHex" from title bar if a file is loaded 2023-12-07 11:19:08 +01:00
WerWolv
9ba6d7ee1e impr: Added simplified welcome screen 2023-12-07 11:18:49 +01:00
WerWolv
60ff62d018 impr: Disable resource usage widgets by default 2023-12-06 16:20:21 +01:00
WerWolv
5d24f1b691 impr: Fix input field selection in command palette 2023-12-06 16:20:06 +01:00
WerWolv
370ca740e3 feat: Allow layouts to be locked 2023-12-06 13:49:58 +01:00
WerWolv
ba8430d9e7 impr: Code style 2023-12-06 11:05:13 +01:00
WerWolv
0b71568d97 impr: Better UI handling when window is very small 2023-12-06 11:05:02 +01:00
WerWolv
37ac1b66dd refactor: Task Manager related code 2023-12-06 11:04:35 +01:00
WerWolv
1be9e8c5b1 impr: Simplify default layout down a bit 2023-12-06 09:10:16 +01:00
WerWolv
c6b9b947fb fix: Binding shortcuts to already existing shortcuts behaving weirdly 2023-12-06 09:09:32 +01:00
WerWolv
a1ef567ecd impr: Add setting to disable resource usage display in footer 2023-12-05 17:09:42 +01:00
WerWolv
2b22a15e8c feat: Added --hexdump subcommand 2023-12-05 16:45:35 +01:00
WerWolv
760b8c7a88 impr: Make long running tasks not freeze ImHex, fix saving non-continuous providers
Fixes #1454
2023-12-05 14:32:43 +01:00
WerWolvTranslationBot
13145bba03 lang: Translations update from Weblate (#1457)
Translations update from [Weblate](https://weblate.werwolv.net) for
[ImHex/Built-in
Plugin](https://weblate.werwolv.net/projects/imhex/built-in-plugin/).


It also includes following components:

* [ImHex/Windows
Plugin](https://weblate.werwolv.net/projects/imhex/windows-plugin/)



Current translation status:

![Weblate translation
status](https://weblate.werwolv.net/widgets/imhex/-/built-in-plugin/horizontal-auto.svg)

---------

Co-authored-by: Justus Garbe <gihihoh@gmail.com>
Co-authored-by: Minseo Lee <itoupluk427@gmail.com>
2023-12-05 10:50:52 +01:00
Nik
f9a9ed4846 impr: Vastly improved 3D Visualizer (#1456)
Based entirely on @paxcut's amazing PR #1443

---------

Co-authored-by: paxcut <paxcut@outlook.com>
Co-authored-by: paxcut <53811119+paxcut@users.noreply.github.com>
2023-12-05 10:49:51 +01:00
Jonathan Wright
d5a40d46bc git: Add f39 builds, remove f37 (#1451)
Fedora 37 goes EOL in less than a week.
2023-12-04 23:36:48 +01:00
WerWolv
19f3da556c fix: Native theme detection on Linux not working properly 2023-12-04 23:35:48 +01:00
WerWolv
e8f0a3bd23 impr: Force center modal views 2023-12-04 22:32:25 +01:00
WerWolv
08fd09064a fix: Settings view still using old system and not opening properly 2023-12-04 22:17:43 +01:00
Nik
caee764af3 fix: Crash when destructing a moved plugin 2023-12-04 21:01:48 +01:00
Nik
eae3cd99ee build: Disable network tests in offline builds 2023-12-04 20:01:58 +01:00
WerWolv
f71fa2f704 impr: Better centered text rendering 2023-12-02 23:46:20 +01:00
WerWolv
9afbfec64e impr: Allow bookmark addresses to be changed, better comment editor 2023-12-02 23:11:31 +01:00
WerWolv
ec7e89b5cf feat: Added simple context menu to pattern editor 2023-12-02 20:37:28 +01:00
WerWolv
e6ad54b53b fix: Overlays not being applied properly 2023-12-02 18:42:57 +01:00
WerWolv
768982b67a patterns: Updated pattern language 2023-12-02 14:35:54 +01:00
WerWolv
4fd3167bb3 feat: Added minimal layout 2023-12-02 14:35:44 +01:00
WerWolv
866cb5706d feat: Added highlighting rules 2023-12-02 11:09:32 +01:00
WerWolv
2cf642a2a4 build: Updated libwolv 2023-12-01 14:07:10 +01:00
WerWolv
f26076fb90 build: Fix cmake script 2023-12-01 13:54:12 +01:00
WerWolv
519d965a36 refactor: Move tools to correct namespace, move data processor nodes 2023-12-01 13:53:51 +01:00
WerWolv
a50bb39978 impr: Further improve compile times 2023-11-30 14:40:07 +01:00
WerWolv
8ee234e5a6 impr: Optimize api includes 2023-11-30 11:23:12 +01:00
WerWolv
e370fdb0fc build: Add support for unity builds 2023-11-30 10:22:15 +01:00
WerWolv
09904b77eb feat: Add support for bold and italic fonts 2023-11-29 23:47:37 +01:00
WerWolv
5e32b693f3 fix: Crash when trying to analyze small files 2023-11-29 11:02:23 +01:00
WerWolv
cceac20197 fix: Codicon icons being too far down 2023-11-29 11:02:14 +01:00
WerWolv
540e8458a5 impr: Improve font loading speed 2023-11-29 09:50:57 +01:00
WerWolv
80984f28ec git: Fix formatting of docker instructions 2023-11-28 14:58:51 +01:00
WerWolv
56064df8d5 impr: Properly center icon fonts 2023-11-28 14:21:48 +01:00
WerWolv
df7cc1fefd impr: Make "Load all glyphs" setting require a restart 2023-11-28 13:53:08 +01:00
WerWolv
23fc232c47 impr: Try to align additional fonts automatically 2023-11-28 13:52:26 +01:00
WerWolv
37ce37862a fix: Properly clear font name before loading 2023-11-28 11:11:13 +01:00
WerWolv
75e26458cc build: Remove garbage file that ended up in romfs 2023-11-28 10:59:40 +01:00
WerWolv
e75fcadd8f fix: More strncpy and include issues 2023-11-28 10:56:56 +01:00
WerWolv
2483c421d2 fix: Missing <cstring> include 2023-11-28 10:51:06 +01:00
WerWolv
abf6e37938 impr: More efficiently pack glyphs on font atlas 2023-11-28 10:37:38 +01:00
WerWolv
eae73b3113 fix: Font size not resetting back to default properly 2023-11-28 10:28:06 +01:00
WerWolv
cbf82d7476 impr: Force tables to never collapse to zero height 2023-11-28 10:21:54 +01:00
WerWolv
4ddd293210 fix: Properly delete font atlas when we're done with it 2023-11-28 10:07:02 +01:00
WerWolv
813a95d283 fix: Various font loading issues 2023-11-28 09:49:38 +01:00
WerWolv
c02c27b63d refactor: Moved over to more flexible font loader 2023-11-28 01:55:41 +01:00
WerWolv
f6d4d5ab22 refactor: More init sequence refactors 2023-11-28 00:47:03 +01:00
WerWolv
284f8534ab refactor: Move the builtin plugin specific init tasks to the plugin 2023-11-28 00:19:42 +01:00
WerWolv
8e7716ebcc fix: Zero-sized patches being created 2023-11-27 15:48:56 +01:00
WerWolv
1b665fa1b3 fix: Loading files into memory 2023-11-27 15:48:46 +01:00
WerWolv
9cbfaed5fe fix: Empty popup opening when right clicking some provider tabs 2023-11-27 15:37:22 +01:00
WerWolv
494223fff6 fix: Provider load interface not opening 2023-11-27 15:34:05 +01:00
WerWolv
af77b8dfc4 fix: Numeric search tool not displaying values in correct endianess 2023-11-25 19:40:29 +01:00
WerWolv
47b6826ac4 build: Updated nativefiledialog-extended 2023-11-25 19:32:53 +01:00
WerWolv
64be4e692c impr: More UI adjustments 2023-11-25 19:11:29 +01:00
WerWolv
8e8a926ad9 impr: Better look of footer items 2023-11-25 19:11:29 +01:00
iTrooz
9306017f01 refactor: refactor setupCompilerFlags() function (#1448) 2023-11-25 15:40:12 +00:00
iTrooz
55c0170791 git: add -x to CI steps where multiple commands are run (#1447) 2023-11-25 14:42:51 +00:00
WerWolv
671b032125 impr: Add syntax highlighting to the demangler 2023-11-25 15:36:50 +01:00
iTrooz
f79fd0edbc git: on MacOS CI, force reinstall python and ignore its exit code/patch it manually if failed (#1446) 2023-11-25 14:20:23 +00:00
WerWolv
8d20277a62 feat: Added setting to enable colored pattern row backgrounds 2023-11-25 13:42:51 +01:00
WerWolv
88032a85cd impr: Even more about page UI improvements 2023-11-25 13:15:21 +01:00
WerWolv
c821967633 impr: More about page UI improvements 2023-11-25 12:44:20 +01:00
Nik
7e660450ed feat: Implement better and more complete undo/redo stack (#1433)
This PR aims to implement a more complete undo/redo stack that, unlike
the old one, also supports undoing insertions, deletions and resize
operations
2023-11-25 12:43:48 +01:00
WerWolv
e5f36ca08d impr: Greatly improve UI of about page 2023-11-25 00:43:03 +01:00
WerWolv
d8249b3a7c impr: Make plugins table not get clipped 2023-11-24 21:04:04 +01:00
WerWolv
3c36ef2c69 impr: Disable some more menu items when they're not useful 2023-11-24 20:57:37 +01:00
WerWolv
b050039e35 fix: Duplicate shortcuts not highlighting correctly 2023-11-24 20:17:01 +01:00
WerWolv
920c6f6507 impr: Remove old splash screen graphic 2023-11-24 20:01:23 +01:00
WerWolv
96a3a74e08 fix: New font settings not applying correctly 2023-11-24 20:01:02 +01:00
WerWolv
fb00f688a8 impr: Update ImGui to use new shadows branch 2023-11-24 15:31:33 +01:00
WerWolv
d6d379108b fix: ImHex not closing when trying to exit with unsaved changes 2023-11-24 11:42:27 +01:00
WerWolv
d34ad33c3c feat: Added setting for font bold, italic and antialiasing 2023-11-24 11:29:05 +01:00
WerWolv
8bdb39983e fix: Error being logged when no magic files are found 2023-11-24 11:28:37 +01:00
WerWolv
59b363d9b2 impr: Move custom font setting behind a enable checkbox 2023-11-23 23:15:42 +01:00
WerWolv
71df45a347 build: Compile plugins as cmake module libraries instead of shared libraries 2023-11-23 23:01:11 +01:00
WerWolv
0b06b1e1e8 fix: Way too many bytes being used for digram and layered distribution plot 2023-11-23 23:00:31 +01:00
iTrooz
45a3ea18d0 chore: Add documentation for Docker-based builds (#1439) 2023-11-23 19:19:19 +00:00
WerWolv
951d74e24b git: brew reinstall doesn't support --overwrite 2023-11-23 14:03:27 +01:00
WerWolv
445dba85ac build: Updated nativefiledialog-extended 2023-11-23 13:58:28 +01:00
WerWolv
d50533bbaf git: Try fix macOS dependency installation in CI again 2023-11-23 13:55:57 +01:00
WerWolv
eafeac4e7b feat: Display task progress percentage in footer 2023-11-23 13:19:50 +01:00
WerWolv
58c3b95c84 impr: Drastically improve performance of diagram processing 2023-11-23 13:09:06 +01:00
WerWolv
5a58ed5114 fix: Make sure store and about page are opened correctly 2023-11-23 13:08:45 +01:00
WerWolv
b619744093 fix: Command palette not appearing on Linux 2023-11-23 09:33:47 +01:00
WerWolv
32276b820f build: Updated libwolv 2023-11-23 09:23:28 +01:00
WerWolv
74e246feed impr: Increase performance when updating task progress 2023-11-23 09:20:26 +01:00
WerWolv
de4ea4081a fix: Popup positions when viewports are disabled 2023-11-23 09:19:51 +01:00
WerWolv
af18501726 git: Always overwrite existing files when installing macOS dependencies 2023-11-22 13:36:15 +01:00
paxcut
ae24ccdfe6 fix: Writing X coord of window position to settings (#1442)
The entry is "hex.builtin.setting.interface.window." but I think it
should be "hex.builtin.setting.interface.window.x"
2023-11-22 12:47:28 +01:00
Nik
095da62250 feat: Add Markdown Report export option (#1441) 2023-11-22 07:26:31 +00:00
WerWolv
909f4b7fe8 refactor: Rename and update localization system 2023-11-21 14:38:01 +01:00
WerWolv
c89a870fe9 refactor: Streamline entire view system 2023-11-21 13:47:50 +01:00
WerWolv
fc23efdb25 impr: Move OpenGL loaders into header to avoid issues in the future 2023-11-20 23:58:49 +01:00
WerWolv
3da209b562 fix: Web build not working anymore 2023-11-20 23:51:50 +01:00
WerWolv
9e0b02f86e build: Update .NET version 2023-11-20 22:55:49 +01:00
WerWolv
a4e14497a5 build: Force set .NET library/include directory variables 2023-11-20 22:49:06 +01:00
WerWolv
5daf725ee3 build: Fix building everywhere else 2023-11-20 22:21:12 +01:00
WerWolv
ffbf409174 build: Fix emscripten build 2023-11-20 22:15:16 +01:00
WerWolv
8b3c297514 build: Fix building on macOS M1 2023-11-20 21:47:23 +01:00
WerWolv
2f8481f5e2 patterns: Updated pattern language 2023-11-20 21:41:07 +01:00
WerWolv
448d792988 fix: Centered text not being centered correctly 2023-11-20 21:40:54 +01:00
WerWolv
1e98e641bb patterns: Updated pattern language 2023-11-20 11:12:48 +01:00
WerWolv
4b13cd666b fix: Resetting shortcuts not saving change to settings 2023-11-19 19:08:31 +01:00
WerWolv
836d66a150 fix: Missing include 2023-11-19 16:11:26 +01:00
WerWolv
de3e92e21b build: Use different method of enforcing nethost.h 2023-11-19 16:11:17 +01:00
WerWolv
f9073ee8ee impr: Prettier data inspector edit button 2023-11-19 16:08:21 +01:00
WerWolv
bd59bcda2c fix: Hiding data inspector rows graying out row above it 2023-11-19 15:55:05 +01:00
WerWolv
0e9302ff08 fix: Hiding custom data inspector rows hiding all defined in the same file 2023-11-19 15:50:13 +01:00
WerWolv
69bdebeb98 fix: 3D Visualizer mirroring model 2023-11-19 15:14:47 +01:00
WerWolv
7b25d97ea2 build: Make sure that ImGui libraries have access to dependencies 2023-11-19 14:55:50 +01:00
WerWolv
9a33110ac3 patterns: Updated pattern language 2023-11-19 14:53:19 +01:00
AnnsAnn❄️
99aae87cd2 git: Fix broken handle in Security.md (#1437)
Your outdated handle was mentioned on the security page, it also appears
to break Githubs markdown renderer for some unknown reason.
2023-11-19 13:17:37 +01:00
WerWolv
ee681b5053 fix: Opening files with non-ASCII paths through the command line
Fixes #1380, Fixes #1435
Thanks a lot to @kyle-sylvestre
2023-11-19 12:24:31 +01:00
WerWolv
981ae5067c build: Try force reconfiguring when nethost header isn't found 2023-11-19 12:03:17 +01:00
WerWolv
60b640d9f5 build: Restructure ImGui dependencies, added Readmes and licenses 2023-11-19 11:59:25 +01:00
Eve
7a1efa8b9a fix: MacOS not finding GL.h (#1436)
### Problem description
Commit 1249eb3261 added `#include
<GL/gl.h>` in a file, but MacOS uses `<OpenGL/gl.h>`.

### Implementation description
If compiling on MacOS, use `<OpenGL/gl.h>`. Otherwise, use `<GL/gl.h>`.

### Additional things
There is a redefine, so I used the preprocessor to ignore it for MacOS.
This feels a little awkward to me (but I don't know how to do it
better).

I'm not particularly familiar with C++, so let me know if this is the
right solution. This is also my first pull request, so feel free to
roast me for anything else :)
2023-11-19 11:57:18 +01:00
WerWolv
a3f74098f2 fix: Potential crash when loading null values from settings 2023-11-18 17:23:50 +01:00
WerWolv
8f4839d8ff impr: Catch exceptions thrown by events 2023-11-18 17:23:36 +01:00
WerWolv
3b01dcf230 feat: Allow hiding data inspector rows 2023-11-18 17:23:15 +01:00
WerWolv
37f9f5619c impr: Respect keyboard layouts for shortcuts again 2023-11-18 15:18:33 +01:00
WerWolv
331716dd48 impr: Don't draw recents window if there are none 2023-11-18 15:11:19 +01:00
WerWolv
14f728ab76 refactor: Give API files more consistent names 2023-11-18 14:50:43 +01:00
WerWolv
1249eb3261 impr: Optimize includes in often used header files 2023-11-18 14:34:33 +01:00
WerWolv
98e0a62e6e impr: Make changing shortcuts also adjust the tooltip in the menus 2023-11-18 14:34:16 +01:00
WerWolv
2d45dce075 fix: Shortcuts not working correctly with non-western keyboards 2023-11-17 20:27:42 +01:00
WerWolv
e7bfa483f8 impr: Make settings tab bar always stick to top of window 2023-11-17 16:05:45 +01:00
WerWolv
36a352b096 feat: Draw info banner on welcome screen if one exists 2023-11-17 15:54:38 +01:00
WerWolv
1f05deddc8 fix: Potential error when parsing Intel Hex and Motorola SREC files 2023-11-17 15:01:57 +01:00
WerWolv
cec925bcdc feat: Add shortcut editor to settings 2023-11-17 14:46:21 +01:00
WerWolv
3bd779a607 fix: URL Decoding not working correctly 2023-11-17 13:13:17 +01:00
iTrooz
4a44cddcea build: Add .dockerignore (#1430) 2023-11-17 09:53:35 +00:00
iTrooz
bf53ee8246 git: Use regular artifact upload action instead of pages upload action for macOS arm64 job (#1431) 2023-11-16 23:55:10 +00:00
iTrooz
f75d5dba84 git: Add MacOS M1 GitHub Action (#1425)
I said I'll do it in #1414

Warning: the output zip does not pass SIP (System Integrity Protection),
and I have no plan to do it for now. So if someone here has a Mac, feel
free to to try to fix the problem (which is probably our build system)

Link #1109

---------

Co-authored-by: Nik <werwolv98@gmail.com>
2023-11-16 21:31:46 +00:00
qux-bbb
2036dc91e6 impr: Make CRC-32 use reflected version by default (#1406)
<!--
Please provide as much information as possible about what your PR aims
to do.
PRs with no description will most likely be closed until more
information is provided.
If you're planing on changing fundamental behaviour or add big new
features, please open a GitHub Issue first before starting to work on
it.
If it's not something big and you still want to contact us about it,
feel free to do so !
-->

### Problem description
<!-- Describe the bug that you fixed/feature request that you
implemented, or link to an existing issue describing it -->
Before this PR, the CRC-32 value of ImHex is not like most of others.  

### Implementation description
<!-- Explain what you did to correct the problem -->
Just set m_reflectIn and m_reflectOut of CRC-32 true by default.
2023-11-16 22:24:55 +01:00
iTrooz
39252dfe48 refactor: Move custom ImGui functions to ImGuiExt namespace (#1427)
Co-authored-by: Nik <werwolv98@gmail.com>
2023-11-16 22:24:06 +01:00
WerWolvTranslationBot
77c326d300 lang: Translations update from Weblate (#1420)
Translations update from [Weblate](https://weblate.werwolv.net) for
[ImHex/Built-in
Plugin](https://weblate.werwolv.net/projects/imhex/built-in-plugin/).


It also includes following components:

* [ImHex/Windows
Plugin](https://weblate.werwolv.net/projects/imhex/windows-plugin/)



Current translation status:

![Weblate translation
status](https://weblate.werwolv.net/widgets/imhex/-/built-in-plugin/horizontal-auto.svg)

---------

Co-authored-by: Minseo Lee <itoupluk427@gmail.com>
2023-11-16 21:17:43 +00:00
WerWolv
164e52207e git: Fix .NET version not being found 2023-11-16 21:46:38 +01:00
Nemoumbra
1f7e2f5ed3 fix: IPS Patch Achievement not being obtainable (#1429)
It turned out that the achievement "ROM hacks" wasn't actually
unlockable.
I'm not sure if the IPS32 patch also has to trigger this achievement,
but it seemed logical to me so I added the call to both methods.
2023-11-16 21:38:20 +01:00
WerWolv
0bace013a1 fix: Unary operators not working correctly in math evaluator 2023-11-16 21:23:58 +01:00
WerWolv
1df8d19399 impr: Display math evaluator errors again 2023-11-16 21:23:38 +01:00
WerWolv
75df797b41 impr: Unlock framerate for the first few seconds to load UI quickly 2023-11-16 21:14:55 +01:00
WerWolv
1136556a0d fix: Don't treat unlocked achievements as invisible anymore 2023-11-16 13:24:09 +01:00
WerWolv
1331b0691f impr: Better highlighting color when hovering over colors in the theme manager 2023-11-16 13:23:47 +01:00
WerWolv
21057d51e1 impr: More Welcome Screen UI improvements 2023-11-16 13:23:28 +01:00
WerWolv
f00daf171b fix: Crash when loading invalid theme file 2023-11-16 09:32:32 +01:00
WerWolv
22eee94436 impr: Better UI for the Welcome screen 2023-11-16 09:32:24 +01:00
WerWolv
0105ed447f patterns: Updated pattern language
Fixes #1412
2023-11-16 08:47:06 +01:00
WerWolv
dd2ecb3dd9 impr: Replace old headers with new ones in UNIX permission calculator 2023-11-15 22:23:17 +01:00
WerWolv
a51f9fd90c impr: Better UI for the settings view 2023-11-15 22:22:57 +01:00
WerWolv
e32def409a build: Upgraded ImGui to v1.90 2023-11-15 20:22:56 +01:00
WerWolv
657744cc28 patterns: Updated pattern language 2023-11-15 13:43:53 +01:00
WerWolv
a561cee54b fix: SHIFT + Tab not removing tabs in pattern editor 2023-11-15 10:04:48 +01:00
WerWolv
2c0553f8fd impr: Don't wrap centered text anymore 2023-11-14 23:04:45 +01:00
WerWolv
13b72c8f93 git: Update .NET runtime to 8.0.0 and pin it 2023-11-14 22:54:33 +01:00
WerWolv
73454905e8 fix: Theme color flashing amount being off 2023-11-14 22:36:48 +01:00
WerWolv
8e58f469b0 impr: Display latest log at the top of the log console table 2023-11-14 22:30:13 +01:00
WerWolv
5ec7826273 feat: Highlight color when hovering over it in the theme manager 2023-11-14 22:27:29 +01:00
WerWolv
1f109ff59b fix: Auto disabling of "Load all unicode glyph" setting on error not working 2023-11-14 21:13:51 +01:00
WerWolv
10217b5530 fix: "Load all unicode glyphs" setting not working 2023-11-14 21:12:09 +01:00
WerWolv
43f1cc7bd0 fix: Highlight color of bookmark not changing with bookmark 2023-11-14 16:50:38 +01:00
WerWolv
5e523f4cd8 impr: Hide sidebar if all items are disabled 2023-11-14 16:09:26 +01:00
WerWolv
b78435c881 feat: Turn provider settings into sidebar 2023-11-14 15:55:34 +01:00
WerWolv
33e20df511 impr: Make sidebars disableable and resizable 2023-11-14 15:55:25 +01:00
WerWolv
53c04a934e patterns: Updated pattern language 2023-11-14 15:54:43 +01:00
WerWolv
46d3402705 impr: Better UI for the command palette 2023-11-14 12:15:37 +01:00
WerWolv
1ff4d76ae7 feat: Add color names to color picker view 2023-11-14 01:40:54 +01:00
WerWolv
273573ce68 impr: Remove unused includes in tools files 2023-11-14 01:40:43 +01:00
WerWolv
d3ed34d5eb impr: Display folder names of files in subfolders in file chooser popup 2023-11-14 00:37:07 +01:00
WerWolv
375c74abe5 impr: Add command palette button to the title bar 2023-11-14 00:03:22 +01:00
iTrooz
e0264a3459 refactor: Split data processor nodes in several files (#1419)
I'm really not sure about how I grouped the nodes, but that's a start.
In need of review

---------

Co-authored-by: Nik <werwolv98@gmail.com>
2023-11-13 23:36:39 +01:00
WerWolv
1f73a87327 fix: Multi-byte hex editor data visualizers behaving incorrectly 2023-11-13 09:28:57 +01:00
WerWolv
27f420c8ea fix: Main Window being moved when window overlapping titlebar is moved 2023-11-13 00:06:04 +01:00
WerWolv
29dd3d5fc3 git: Updated git submodule names 2023-11-12 22:50:26 +01:00
WerWolv
0e671b1569 patterns: Updated pattern language
Fixes #1196
2023-11-12 22:47:02 +01:00
iTrooz
2c374e9761 chore: Modify my description as a contributor (#1422) 2023-11-12 13:13:42 +00:00
iTrooz
f0465c63ed build: move third party libraries to lib/third_party (#1417)
Co-authored-by: Nik <werwolv98@gmail.com>
2023-11-12 02:02:54 +01:00
iTrooz
b04cb7648e refactor: refactor tools_entries.cpp into several smaller files (#1418) 2023-11-12 00:22:01 +00:00
WerWolv
46b1b0ba17 impr: Use ImGui::SeparatorText to draw headers 2023-11-12 00:57:29 +01:00
WerWolv
60e3a657f0 fix: Prevent exporting of zero-sized files to language arrays 2023-11-12 00:25:37 +01:00
WerWolv
3d04669ef0 fix: Goto and Select being able to select bytes in zero-size files 2023-11-12 00:20:30 +01:00
WerWolv
9fb60a8ab0 fix: Docking two detached tools to each other causing them to vanish 2023-11-12 00:10:16 +01:00
WerWolv
17540b0120 fix: Prevent Goto from making selections that start before the base address 2023-11-11 23:43:48 +01:00
WerWolv
af77819913 fix: Crash when choosing File -> Select without an active selection 2023-11-11 23:43:32 +01:00
WerWolv
1c8af096de fix: Out of bounds read with a zero-size file 2023-11-11 23:11:34 +01:00
WerWolv
7f35d81722 fix: Selecting byte ranges that don't exist causing a crash 2023-11-11 23:00:37 +01:00
WerWolv
26f873a364 impr: Improve UI/UX of color picker and regex replacer tool 2023-11-11 22:43:27 +01:00
WerWolv
b101d11821 fix: Separate calculator and graphing calculator input 2023-11-11 21:22:28 +01:00
WerWolv
50a1956d92 fix: Unary operators in math evaluator not working correctly 2023-11-11 21:22:11 +01:00
WerWolv
5a4f31bfa5 feat: Make color picker tool much more useful 2023-11-11 20:56:50 +01:00
iTrooz
7405219fb8 build: Make ImHex buildable for MacOS arm64 (#1414) 2023-11-11 20:56:30 +01:00
WerWolv
30ce4b6e3c patterns: Updated pattern language 2023-11-11 12:07:38 +01:00
WerWolv
7d53636e10 feat: Added simple graphing calculator 2023-11-11 00:54:16 +01:00
WerWolv
aa93bcb142 impr: Better exit task logging 2023-11-10 23:25:02 +01:00
WerWolv
2073793fcd impr: Make backspace work while holding shift in the text editor
Closes #1409
2023-11-10 22:25:39 +01:00
WerWolv
388523a4ea fix: Build on Windows 2023-11-10 22:21:19 +01:00
WerWolv
ec4942174b fix: Proxy not being disabled correctly when disabling it in the settings 2023-11-10 21:59:20 +01:00
WerWolv
01f7a09012 fix: Build on non-windows 2023-11-10 21:52:28 +01:00
WerWolv
c35ea228e4 fix: Crash when trying to close providers 2023-11-10 21:03:31 +01:00
WerWolv
498d8c1d65 impr: General code cleanup 2023-11-10 20:47:08 +01:00
WerWolv
3aacf0f1fb feat: Added Experiments 2023-11-10 14:48:26 +01:00
WerWolv
4fc2fb7a6f feat: Added support for filtering patterns by value 2023-11-10 14:48:13 +01:00
WerWolv
d12f5016e4 fix: PageUp/PageDown being slightly weird 2023-11-09 16:07:14 +01:00
WerWolv
f1e0960a26 feat: Allow exporting bytes as text to a file 2023-11-09 14:57:58 +01:00
WerWolv
0f5d659ce2 impr: Fade out zero bytes in HTML formatted data 2023-11-09 14:42:29 +01:00
WerWolv
a64aa6941d fix: Force achievement popup to front 2023-11-08 21:57:19 +01:00
WerWolv
66cac8350e fix: Kaboom achievement not triggering 2023-11-08 21:40:27 +01:00
WerWolv
384c2a7701 fix: Format string issue 2023-11-08 12:51:39 +01:00
WerWolv
ad4e7c3355 impr: Don't check for overflow every frame 2023-11-08 12:46:47 +01:00
WerWolv
ea5d4ca3ae impr: Detect overflow in Euclidean algorithm tool 2023-11-08 12:40:33 +01:00
WerWolv
87e7f817c1 feat: Added extended Euclidean algorithm to tools 2023-11-08 11:54:57 +01:00
WerWolv
3af1840c6a fix: Typo and formatting 2023-11-08 11:54:21 +01:00
WerWolv
e5ff04be29 fix: Crash when using too large column count 2023-11-08 11:54:03 +01:00
WerWolv
da851c3c10 fix: Average and Median nodes using wrong output types 2023-11-08 11:53:46 +01:00
WerWolv
d160aeec4b impr: More sidebar visual improvements 2023-11-08 11:53:26 +01:00
WerWolv
e18275c1c0 fix: Division by zero when setting page size to 0 2023-11-08 11:14:56 +01:00
WerWolv
1ca71ec30d impr: Make sidebar look better 2023-11-07 16:40:41 +01:00
iTrooz
759351cec0 git: set fail-fast to false (#1403) 2023-11-07 15:09:13 +00:00
WerWolv
ef320b74b0 impr: Handle showing popups when closing unsaved providers better 2023-11-07 15:31:54 +01:00
iTrooz
6e6c5c4cb7 build: Fix build script for MacOS (#1404)
Fix build problem introduced by
https://github.com/WerWolv/ImHex/pull/1398
I didn't refactor the code well because I thought `CREATE_PACKAGE` was
an option only used for Windows, when it needs to be used for MacOS too
2023-11-07 14:06:38 +01:00
WerWolv
669e1921a4 feat: Added Euclidean Algorithms tools 2023-11-07 00:47:10 +01:00
WerWolv
924b4a9436 impr: Replace various fixed-size boxes with dynamic ones 2023-11-07 00:46:44 +01:00
WerWolv
f49b5efac4 fix: UI issues in the data information view 2023-11-07 00:46:17 +01:00
WerWolv
8581ab9eb3 feat: Added simple data access graph to pattern editor 2023-11-06 15:15:35 +01:00
WerWolv
7efe9acefb fix: Warnings about missing theme/style handlers being printed on launch 2023-11-06 15:15:18 +01:00
WerWolv
94f3664dbc impr: Make TCP Client/Server table visible when detaching tool 2023-11-05 21:52:12 +01:00
WerWolv
d1f8053fbb fix: Format string vulnerability 2023-11-05 21:51:49 +01:00
WerWolv
713ce86e24 build: Updated libwolv 2023-11-05 21:17:44 +01:00
WerWolv
7efdcfd888 fix: Properly align welcome screen again 2023-11-05 21:17:37 +01:00
iTrooz
988a674617 git: Make job fail if no artifacts could be found to be uploaded (#1401) 2023-11-05 19:57:58 +01:00
WerWolv
4e4cdcdf61 feat: Added release notes and commits to about page 2023-11-05 19:57:29 +01:00
WerWolv
0388bbdc6d build: Updated libwolv 2023-11-05 18:44:18 +01:00
WerWolv
30d47fd51b build: Updated libwolv 2023-11-05 18:39:48 +01:00
WerWolvTranslationBot
2e45069882 lang: Translations update from Weblate (#1400)
Translations update from [Weblate](https://weblate.werwolv.net) for
[ImHex/Built-in
Plugin](https://weblate.werwolv.net/projects/imhex/built-in-plugin/).


It also includes following components:

* [ImHex/Windows
Plugin](https://weblate.werwolv.net/projects/imhex/windows-plugin/)



Current translation status:

![Weblate translation
status](https://weblate.werwolv.net/widgets/imhex/-/built-in-plugin/horizontal-auto.svg)

---------

Co-authored-by: xtex <xtexchooser@duck.com>
2023-11-05 12:59:07 +01:00
WerWolv
3b2cf5b851 build: Updated libromfs 2023-11-05 01:03:19 +01:00
WerWolv
4d456f1bc0 impr: Don't display U64_MAX as region size when null provider is open 2023-11-05 00:56:45 +01:00
WerWolv
d6ba41c2d9 fix: Disable IP and Port fields when TCP Client/Server are connected 2023-11-05 00:10:59 +01:00
WerWolv
c9a728c318 fix: Rare crash when monitor connection status changes 2023-11-05 00:04:32 +01:00
WerWolv
4c2fe8e03c impr: Various TCP Client/Server tool improvements 2023-11-05 00:00:32 +01:00
WerWolv
ec95c260bb fix: Only register event shutting down the network interface once 2023-11-04 23:41:52 +01:00
WerWolv
e7eaa2b194 build: Updated libwolv 2023-11-04 23:35:34 +01:00
WerWolv
fe59ce3e60 fix: Splash screen not resizing correctly 2023-11-04 23:16:53 +01:00
WerWolv
45fb046a9a impr: Make events thread safe 2023-11-04 23:16:38 +01:00
WerWolv
055e18058f fix: Network interface not shutting down correctly 2023-11-04 22:20:22 +01:00
WerWolv
fa5e32496c fix: Make sure main window stays within the window at all times 2023-11-04 22:10:34 +01:00
iTrooz
44a1efffa0 git: Make MacOS builds use MacOS 12 instead of 11 (#1399)
Context: MacOS 11 (Big Sur) is EOL + llvm@17 has been released, and it
has no binaries for Big Sur, making the CI hang
2023-11-04 13:51:13 +01:00
iTrooz
c839ee7d13 build: Improve names of packaging cmake options (#1398)
This PR is simply a refactor, to clarify these flags that shouldn't
impact anything
2023-11-04 00:11:50 +00:00
WerWolv
c7c01c1f24 build: Removed old jthread search 2023-11-02 20:48:34 +01:00
WerWolv
615596dfe9 fix: Standard jthread detection 2023-11-02 20:41:47 +01:00
WerWolv
407ec1ceb6 build: Use custom jthread implementation if standard one is not available 2023-11-02 20:21:38 +01:00
WerWolv
eefdbe7ef1 patterns: Updated pattern language 2023-11-02 09:37:14 +01:00
WerWolv
cd6a62dd27 fix: Welcome screen having a weird header 2023-11-02 09:34:03 +01:00
WerWolv
4e6af607e8 fix: Crash when clicking on the welcome screen 2023-11-02 08:54:02 +01:00
WerWolv
363b07fc0c impr: Switch to custom std::expected implementation 2023-11-02 08:53:46 +01:00
WerWolv
a719627be6 build: Updated dependencies 2023-11-01 11:07:11 +01:00
WerWolv
f14f77b4f0 git: Updated Mary's profile link 2023-11-01 10:43:59 +01:00
WerWolv
a92aa58be8 build: Updated libromfs 2023-10-31 21:59:22 +01:00
WerWolv
9617212ef1 impr: Allow visualizers to have optional parameters 2023-10-31 10:56:20 +01:00
WerWolvTranslationBot
4af66f7d3d lang: Translations update from Weblate (#1396)
Translations update from [Weblate](https://weblate.werwolv.net) for
[ImHex/Built-in
Plugin](https://weblate.werwolv.net/projects/imhex/built-in-plugin/).


It also includes following components:

* [ImHex/Windows
Plugin](https://weblate.werwolv.net/projects/imhex/windows-plugin/)



Current translation status:

![Weblate translation
status](https://weblate.werwolv.net/widgets/imhex/-/built-in-plugin/horizontal-auto.svg)

Co-authored-by: Minseo Lee <itoupluk427@gmail.com>
2023-10-31 10:02:23 +01:00
WerWolv
c7cee59a77 impr: Added build date and time to about page 2023-10-30 23:24:00 +01:00
WerWolv
7002e3bbf3 impr: Make popups fully opaque 2023-10-30 23:14:22 +01:00
WerWolv
c37c53369b impr: Dock newly opened windows by default 2023-10-30 21:53:44 +01:00
Professor Plum
e827ad4b8d git: Added pcap plugin to plugin list (#1395)
Adds a reference to [Pcap
Plugin](https://github.com/Professor-plum/ImHex-Plugin-Pcap) under
Third-Party Plugins

### Problem description
Adds a reference to an external repository for an ImHex Plugin to view
raw data within pcap files.

### Implementation description
The ImHex Plugin is implemented as an additional Data Provider. It
allows BPFs and selecting multiple packets for data reassembly.

### Screenshots

![screenshot](https://raw.githubusercontent.com/Professor-plum/ImHex-Plugin-Pcap/master/Images/Screenshot.png)

### Additional things
Should there be any questions I'm also available on Discord.
2023-10-30 17:47:47 +00:00
WerWolv
2fee380459 fix: Make sure window is fully opaque by default 2023-10-30 16:40:14 +01:00
WerWolv
94ad6e6072 fix: Crash on exit 2023-10-30 16:39:57 +01:00
WerWolvTranslationBot
a980097d64 lang: Translations update from Weblate (#1393)
Translations update from [Weblate](https://weblate.werwolv.net) for
[ImHex/Built-in
Plugin](https://weblate.werwolv.net/projects/imhex/built-in-plugin/).


It also includes following components:

* [ImHex/Windows
Plugin](https://weblate.werwolv.net/projects/imhex/windows-plugin/)



Current translation status:

![Weblate translation
status](https://weblate.werwolv.net/widgets/imhex/-/built-in-plugin/horizontal-auto.svg)

---------

Co-authored-by: Minseo Lee <itoupluk427@gmail.com>
2023-10-30 16:32:55 +01:00
WerWolv
b2774bf472 build: Updated libromfs 2023-10-30 13:28:07 +01:00
WerWolv
44ce81211e build: Updated libromfs 2023-10-29 21:05:11 +01:00
WerWolv
c444ad9280 impr: Bundle default magic file with application 2023-10-29 19:43:45 +01:00
iTrooz
80ca6bf177 feat: do not make splash screen wait for checkForUpdates task (#1390) 2023-10-26 21:45:43 +00:00
WerWolv
a0178ebab9 fix: File picker not handling supported extensions correctly
Fixes #1367
2023-10-26 17:28:36 +02:00
WerWolv
e63af24626 fix: Documentation AI not working correctly often
Fixes #1375
2023-10-26 17:19:23 +02:00
WerWolv
f94c23d64d fix: Copy As -> Go Array producing syntactically invalid code
Fixes #1391
2023-10-26 17:13:59 +02:00
iTrooz
bffc229fa8 feat: handle content store entries managed by the system (in a read-only folder) (#1389) 2023-10-24 20:00:49 +02:00
WerWolv
aae5586b5c fix: Provider tab bar arrow buttons not working
Fixes #1374
2023-10-24 19:29:22 +02:00
iTrooz
4f2d14e220 fix: fix forwarding multiple arguments to subcommands (#1388) 2023-10-24 07:59:23 +00:00
Nik
58189e5403 impr: Allow console output to work when debugging (#1382) 2023-10-22 21:39:14 +00:00
WerWolv
215e1ffdc8 fix: Weird indentation 2023-10-22 23:06:35 +02:00
WerWolv
9fdd4670b7 build: Don't bundle SDK by default 2023-10-22 22:46:29 +02:00
WerWolv
03af1687d9 build: Only copy required libraries to SDK 2023-10-22 22:01:42 +02:00
WerWolv
cb2aee0ed7 fix: Various TCP tool issues 2023-10-22 21:52:55 +02:00
WerWolv
e92f937587 build: Bundle SDK with releases 2023-10-22 21:27:13 +02:00
WerWolv
73d7cc7c12 patterns: Updated pattern language 2023-10-22 21:22:50 +02:00
WerWolv
8cd0561e71 fix: Binary Pattern search being broken with alignments > 1 2023-10-22 20:59:32 +02:00
WerWolv
1b54a8858e lang: Added localization for debug view 2023-10-22 19:51:15 +02:00
WerWolv
c3825fff65 fix: Actually fix dropdown default values 2023-10-22 17:51:00 +02:00
WerWolv
c51db87c34 fix: Language setting not defaulting to English anymore 2023-10-22 17:31:53 +02:00
WerWolv
beca8033cf fix: Modifying last byte in row copies first byte from current row to next row
Fixes #1329
2023-10-22 13:46:21 +02:00
Nik
72f2f0877d feat: Added TCP Client/Server tool (#1379) 2023-10-21 22:46:45 +00:00
WerWolv
79f18d12e6 fix: Native scaling being way too small 2023-10-21 23:58:51 +02:00
Nik
7fe9a768d4 impr: Rewrote entire settings API and UI (#1378) 2023-10-21 21:07:33 +00:00
Nik
f114239f51 feat: Added Auto Updater for Windows, macOS and Ubuntu (#1377) 2023-10-21 18:40:24 +00:00
WerWolv
c46e445a04 impr: Store achievement progress immediately when unlocking one 2023-10-20 13:34:45 +02:00
WerWolv
d91334abcd patterns: Updated pattern language 2023-10-20 12:39:34 +02:00
WerWolv
5227887dbf impr: Added more fine-grained colors to themes 2023-10-20 12:30:21 +02:00
WerWolv
d07d36f784 fix: Loading of data processor workspaces not working correctly 2023-10-19 23:53:20 +02:00
WerWolv
c9cd7ad4a6 fix: Data processor recursion detector triggering too soon 2023-10-19 23:34:05 +02:00
Nik
b4ee02b725 fix: Shift right data processor node displaying shift left in its header 2023-10-19 22:48:11 +02:00
WerWolv
79e25b0889 feat: Added bitwise shift left/right data processor nodes 2023-10-19 22:08:39 +02:00
Gonzalo Avila Alterach
5d50a3927e fix: Updated wrong link to pattern language docs (#1371)
Just a very simple update to point to the right documentation URI
2023-10-18 22:04:39 +02:00
WerWolv
7769b556f7 web: Added more information to the PWA manifest 2023-10-17 13:45:57 +02:00
WerWolv
58870f3057 fix: File load achievement triggering every time a file was opened through the cli 2023-10-17 13:45:12 +02:00
WerWolv
8821f75e6b impr: Display friendly disk name as the tab title of the disk provider 2023-10-17 10:22:56 +02:00
iTrooz
88b2f60291 feat: add WPA manifest to web version (#1369) 2023-10-17 07:31:56 +00:00
WerWolv
c49aad6cd3 impr: List all physical drives on windows in the raw disk provider 2023-10-16 23:45:46 +02:00
WerWolv
afceb34729 fix: Crash when opening invalid files through the CLI 2023-10-16 10:59:49 +02:00
paxcut
93c8a45de0 fix: Fixed spacing in bit labels so it works for any font and any size. (#1365)
Testing various fonts and sizes I realized there were still problems
with the layout of the bit labels. Also I reorganized the code so that
lambdas are defined just before they are used. Comments needed
punctuation too.

Part of the problem was that I had been assuming all along that the
check boxes were ImGui's originals which are always square. In actuality
the width is determined by the width of the character for '0'. Also
ImGui table was adding spacing to separate cells which made the boxes
not start at same place as column. Also for some reason using indent of
zero didn't work as expected but using 0.1 pixels worked. With those
problems fixed it is fairly easy to make sure the labels are centered at
the box except when the first mantissa checkbox gets a label which is
wider that the box width. Before and after show results for different
fonts.

Before:

![image](https://github.com/WerWolv/ImHex/assets/53811119/3778e6d5-6fbd-48e1-ac51-39a6636daea5)

After:

![image](https://github.com/WerWolv/ImHex/assets/53811119/79c0f027-3119-4762-a4e3-315e84505f3b)
2023-10-15 20:07:51 +00:00
mirusu400
1f208dbb21 lang: Sync json key order in each lang file (#1366)
### Implementation description
I synchronized the json key order with `en_US.json` in each lang file.


### Additional things
Here are simple python script that make this change
```python
import json
from collections import OrderedDict
original = "./en_US.json"

modified = [
    "./de_DE.json",
    "./es_ES.json",
    "./it_IT.json",
    "./ja_JP.json",
    "./ko_KR.json",
    "./pt_BR.json",
    "./zh_CN.json",
    "./zh_TW.json",
]

for modify in modified:

    dict_2 = {}
    
    with open(original, 'r', encoding='utf-8') as f1, open(modify, 'r', encoding='utf-8') as f2:
        dict_1 = json.load(f1)
        dict_2 = json.load(f2)
        dict_1_translations = dict_1["translations"]
        dict_2_translations = dict_2["translations"]
        
        ordered_dict_2 = OrderedDict((k, dict_2_translations[k]) for k in dict_1_translations.keys())
        dict_2["translations"] = ordered_dict_2
    
    with open(modify, 'w', encoding='utf-8') as f2:
        json.dump(dict_2, f2, ensure_ascii=False, indent=4)
```
2023-10-15 21:23:07 +02:00
iTrooz
4e9cbd14eb build: use microsoft vcpkg repository for the web build (#1368) 2023-10-14 11:31:37 +00:00
WerWolv
da1b53420f feat: Added debug variables to aid with development 2023-10-13 23:46:48 +02:00
WerWolv
5a71cc2d61 fix: Wikipedia explainer tool randomly resetting input 2023-10-12 20:35:44 +02:00
WerWolv
b98b60a126 fix: Provider hover tooltip always showing information about current provider 2023-10-12 20:28:02 +02:00
WerWolv
929e0e64a5 fix: Achievement hovering popups showing up even when they are covered by another window 2023-10-12 20:24:02 +02:00
WerWolv
48a1e93cfe fix: Tool windows drawing on top of the welcome screen
Fixes #1364
2023-10-12 15:15:05 +02:00
iTrooz
b908965048 feat: log exit tasks to console (#1363) 2023-10-11 20:38:54 +00:00
WerWolv
afa149f2db patterns: Updated pattern language
Fixes #1361
2023-10-11 22:20:25 +02:00
iTrooz
6c3c2849fa build: build appimage using docker instead of github CI (#1358) 2023-10-11 16:17:52 +02:00
iTrooz
6cbfb00cca fix: Small modifications to test webserver (#1360) 2023-10-10 15:28:58 +00:00
iTrooz
7b22c49329 build: Integrate my libmagic patch into the Dockerfile rather than my vcpkg fork (#1359)
This PR integrates my libmagic patch into the Dockerfile rather than my
vcpkg fork (so we can use the official vcpkg repository in the future)
That said, we still use my vcpkg fork for now because official vcpkg
fails to compile freetype
2023-10-10 14:58:43 +00:00
iTrooz
c7c05e2621 fix: Re-enable window transparence on Linux (#1357) 2023-10-09 12:47:48 +00:00
lomekragow
7fc2ff3002 fix: Event unsubscribe not working correcetly when using same key for multiple events (#1309)
<!--
Please provide as much information as possible about what your PR aims
to do.
PRs with no description will most likely be closed until more
information is provided.
If you're planing on changing fundamental behaviour or add big new
features, please open a GitHub Issue first before starting to work on
it.
If it's not something big and you still want to contact us about it,
feel free to do so !
-->

### Problem description
<!-- Describe the bug that you fixed/feature request that you
implemented, or link to an existing issue describing it -->

Fixed possible bug of  `EventManager::unsubscribe`

`std::map` only allows unique key, but the same token can subscribe to
multiple events.

1a2a926b77/lib/libimhex/include/hex/api/event.hpp (L104-L107)

If the previous token has already subscribed to an event, then when
subscribing again, `getTokenStore().insert` will not do anything
(Because its type is `std::map`)


1a2a926b77/lib/libimhex/include/hex/api/event.hpp (L122-L134)

At this point in `unsubscribe`, the `iter` may not be able to find the
correct event and erase it



### Implementation description
<!-- Explain what you did to correct the problem -->

Change `tokenStore` to `std::multimap` instead of `std::map`, which
cannot unsubscribe multiple events correctly

### Screenshots
<!-- If your change is visual, take a screenshot showing it. Ideally,
make before/after sceenshots -->

### Additional things
<!-- Anything else you would like to say -->
2023-10-07 23:35:35 +02:00
iTrooz
bb36000dd9 build: install pixmaps folder in ArchLinux package (to have the icon) (#1355) 2023-10-07 19:41:34 +00:00
iTrooz
19ef188f7b build: Remove some libGL libraries from the AppImage (#1354) 2023-10-07 20:42:07 +02:00
WerWolv
23e1c714d6 patterns: Updated pattern language 2023-10-06 19:31:48 +02:00
WerWolv
a07b678a61 fix: Enable unicode support on the web again 2023-10-06 15:33:55 +02:00
WerWolv
6cf3bfb89f web: Center initial loading text again 2023-10-06 15:30:27 +02:00
WerWolv
85515a729f web: Make sure canvas takes up the full window 2023-10-06 15:23:00 +02:00
WerWolv
d36e299c35 fix: Cut font texture width in half 2023-10-06 14:28:10 +02:00
WerWolv
9e5e3e94a3 fix: Disable auto scaling on the web 2023-10-06 12:57:29 +02:00
WerWolv
4db10f1c8b fix: Disable unicode support on the web version 2023-10-06 11:11:04 +02:00
WerWolv
5faf1380d7 fix: Force font atlas texture to not get too tall 2023-10-06 10:57:48 +02:00
WerWolv
baa5c34b55 fix: Reset popup position back on screen if it's outside of it
Closes #1348
2023-10-05 08:56:00 +02:00
Andreas Källberg
d19d812ccb impr: Don't force using discrete graphics card on macOS (#1341)
<!--
Please provide as much information as possible about what your PR aims
to do.
PRs with no description will most likely be closed until more
information is provided.
If you're planing on changing fundamental behaviour or add big new
features, please open a GitHub Issue first before starting to work on
it.
If it's not something big and you still want to contact us about it,
feel free to do so !
-->

### Problem description
<!-- Describe the bug that you fixed/feature request that you
implemented, or link to an existing issue describing it -->
When starting ImHex on a MacBook model with both integrated and discrete
graphics, it will force the computer to use the discrete graphics card.
This causes increased power usage, meaning the fans will spin up, the
battery will drain faster, etc. This program is not very graphics
intensive, so using the discrete graphics card shouldn't be needed.

### Implementation description
<!-- Explain what you did to correct the problem -->
I changed the
[`GLFW_COCOA_GRAPHICS_SWITCHING`](https://www.glfw.org/docs/latest/window_guide.html#window_hints_osx)
setting in GLFW to not enforce using the discrete graphics.

### Screenshots
<!-- If your change is visual, take a screenshot showing it. Ideally,
make before/after sceenshots -->

### Additional things
<!-- Anything else you would like to say -->
My editor is configured to automatically remove trailing whitespace, so
I hope that those whitespace changes are ok
2023-10-05 08:39:53 +02:00
iTrooz
e2b7427e7b git: cache vcpkg dependencies in web build (#1344) 2023-10-05 00:08:34 +02:00
WerWolv
44ae942de4 web: Improved social embeds 2023-10-04 23:12:01 +02:00
iTrooz
e14efc6ca2 git: Remove CACHE_VERSION secret from cache keys (#1343)
Rationale: secrets (and vars) are not shared with pull requests, so they
can't use the cache

This PR fix that
2023-10-04 22:23:41 +02:00
WerWolvTranslationBot
f982ff62e4 lang: Translations update from Weblate (#1346)
Translations update from [Weblate](https://weblate.werwolv.net) for
[ImHex/Built-in
Plugin](https://weblate.werwolv.net/projects/imhex/built-in-plugin/).


It also includes following components:

* [ImHex/Windows
Plugin](https://weblate.werwolv.net/projects/imhex/windows-plugin/)



Current translation status:

![Weblate translation
status](https://weblate.werwolv.net/widgets/imhex/-/built-in-plugin/horizontal-auto.svg)

---------

Co-authored-by: Anonymous <noreply@weblate.org>
2023-10-04 22:22:58 +02:00
WerWolvTranslationBot
5b8947c36b lang: Translations update from Weblate (#1322)
Translations update from [Weblate](https://weblate.werwolv.net) for
[ImHex/Built-in
Plugin](https://weblate.werwolv.net/projects/imhex/built-in-plugin/).


It also includes following components:

* [ImHex/Windows
Plugin](https://weblate.werwolv.net/projects/imhex/windows-plugin/)



Current translation status:

![Weblate translation
status](https://weblate.werwolv.net/widgets/imhex/-/built-in-plugin/horizontal-auto.svg)

---------

Co-authored-by: Nik <werwolv98@gmail.com>
Co-authored-by: xtex <xtexchooser@duck.com>
2023-10-04 22:18:45 +02:00
5idereal
07a274fe4c lang: Updated zh_TW translation (#1333)
<!--
Please provide as much information as possible about what your PR aims
to do.
PRs with no description will most likely be closed until more
information is provided.
If you're planing on changing fundamental behaviour or add big new
features, please open a GitHub Issue first before starting to work on
it.
If it's not something big and you still want to contact us about it,
feel free to do so !
-->

### Problem description

### Implementation description

Updated Traditional Chinese (Taiwan) translations for ImHex.

### Screenshots
<!-- If your change is visual, take a screenshot showing it. Ideally,
make before/after sceenshots -->

### Additional things
<!-- Anything else you would like to say -->
2023-10-04 22:10:28 +02:00
paxcut
081c581b8c fix: Layout of large font labels in IEEE 745 floating point tool (#1337)
### Problem description
The issue seems to only affect the web version of ImHex but it is not
clear why. The labels of the checkboxes that represent bits in the IEEE
745 floating point tool were lay out incorrectly.

### Implementation description
The new code ensures that the bit labels are centered and located in the
middle of the checkbox regardless of the font size and the dear imgui
sized checkboxes.
2023-10-04 22:10:06 +02:00
WerWolv
1c88c3a8bd fix: Reloading ImHex not working in the web version 2023-10-04 21:45:43 +02:00
WerWolv
eb41622a38 feat: Properly detect native theme on the web version 2023-10-04 21:34:50 +02:00
Darío Hereñú
13c9b80bca doc: fix typo in SECURITY.MD (#1332) 2023-10-04 20:22:07 +02:00
iTrooz
c72853596f fix: disable web deployment on forks (#1342) 2023-10-04 20:16:44 +02:00
WerWolv
e57c9ff4f6 build: Updated libwolv 2023-10-04 16:13:40 +02:00
WerWolv
ed8c0794bb fix: Querying default folder paths not working right on the web 2023-10-04 16:10:14 +02:00
WerWolv
d7bf3746f7 build: Enable null sanitizer in the browser to avoid null derefs being okay 2023-10-04 13:53:46 +02:00
WerWolv
6c773c0135 web: Added alert when running in Firefox private mode 2023-10-04 13:41:45 +02:00
WerWolv
a06752b349 build: Updated libwolv 2023-10-04 13:41:21 +02:00
iTrooz
d15bd4771d feat: Support for building ImHex for the web (#1328)
Co-authored-by: WerWolv <werwolv98@gmail.com>
Co-authored-by: AnnsAnn <git@annsann.eu>
2023-10-04 12:00:32 +02:00
WerWolv
a62ede7840 fix: Properly fix possibility of no provider being selected when closing one 2023-10-01 20:56:25 +02:00
WerWolv
bcab657a06 fix: No provider being selected in some cases when closing a provider 2023-10-01 20:18:26 +02:00
WerWolv
9dbae2051b fix: Try search frameworks folder for nethost library on macOS 2023-10-01 18:07:16 +02:00
WerWolv
7400b9ce8a build: Fixed macOS library path 2023-10-01 16:59:04 +02:00
WerWolv
4436e8a589 build: Try to fix script loader on macOS 2023-10-01 16:18:31 +02:00
WerWolv
e241adab0e build: Update windows resource file for the first time ever 2023-09-28 08:16:24 +02:00
WerWolv
51880fc2a8 build: Fixed build/install of refactored forwarder 2023-09-27 15:13:58 +02:00
WerWolv
89bffbd1bc fix: Crash when exceptions are thrown in data processor nodes 2023-09-27 14:19:08 +02:00
WerWolv
e80c7bff1c impr: Refactored forwarder executable and add lots more information to it 2023-09-27 14:14:27 +02:00
WerWolv
b3ef615158 feat: Allow Edit -> Jump to to jump to little and big endian addresses
Closes #1324
2023-09-26 14:01:28 +02:00
StarrFox
25ddaa08dc build: Fix building with capstone < 5 (#1323)
<!--
Please provide as much information as possible about what your PR aims
to do.
PRs with no description will most likely be closed until more
information is provided.
If you're planing on changing fundamental behaviour or add big new
features, please open a GitHub Issue first before starting to work on
it.
If it's not something big and you still want to contact us about it,
feel free to do so !
-->

### Problem description
<!-- Describe the bug that you fixed/feature request that you
implemented, or link to an existing issue describing it -->
This might fix building with capstone 4 as discussed in
https://discord.com/channels/789833418631675954/1155669027306340393/1155669027306340393

### Implementation description
<!-- Explain what you did to correct the problem -->
moves the max definition inside the if statement that checks for
capstone 5
2023-09-25 21:52:28 +02:00
WerWolv
fb48eb91d6 git: Fixed Ubuntu release commit hash and branch variable setting again 2023-09-25 21:46:37 +02:00
Nik
865d7e9b20 git: Fixed Ubuntu release commit hash and branch variable setting 2023-09-24 22:41:32 +02:00
WerWolv
f5b8021405 build: Bumped version to 1.31.0 2023-09-24 20:05:03 +02:00
WerWolv
89abc8557f feat: Added shortcuts for the pattern debugger 2023-09-24 18:26:42 +02:00
WerWolv
181a7c5b3d feat: Added evaluate pattern shortcut 2023-09-24 18:17:58 +02:00
WerWolv
f79e2df11a feat: Added shortcut to switch between providers 2023-09-24 18:11:17 +02:00
Paul Sorensen
be8c679d4a impr: Return early to remove nested code (#1253)
<!--
Please provide as much information as possible about what your PR aims
to do.
PRs with no description will most likely be closed until more
information is provided.
If you're planing on changing fundamental behaviour or add big new
features, please open a GitHub Issue first before starting to work on
it.
If it's not something big and you still want to contact us about it,
feel free to do so !
-->

### Problem description
<!-- Describe the bug that you fixed/feature request that you
implemented, or link to an existing issue describing it -->
This will simplify the codebase in the pattern drawer. It returns early
on conditional statements and reduces the amount of nested code making
it easier to read and track while developing.
2023-09-20 10:49:09 +02:00
paxcut
c577a42f62 impr: Refactoring of floating point tool to decrease code complexity. (#1275)
I noticed the bad score on code factor so I reorganized it to make it
more readable and maintainable. In order to break down the big function
into it much smaller parts I encapsulated all the variables that the
functions need to access in two classes, one for the imgui related
statics and the other for non-static variables.

When writing the smaller functions I was noticed that there was room to
simplify the existing algorithms by writing functions that could be
called by parts that previously shared no code. I tested the changes the
same way I tested the original and it seems to work the same way but
maybe a bit faster. Although it may be possible to further optimize the
present code code factor no longer flags the function at all.
2023-09-20 10:48:44 +02:00
Lennard Fonteijn
ad69ac84b1 feat: Added hex::group attribute and various fixes (#1302)
As discussed (many times) on Discord, does the same as the new favorite
tag, but instead allows you to add multiple groups.

Initially, this would cause some insane issues with draw/reset
(apparantly) fighting eachother in the pattern drawer. After a lot of
trial and error, I decided to rewrite the flow that is responsible for
calling reset. Now evaluating patterns is the one to decide when the
reset happens, not the core "game"-loop.

To make sure that draw and reset can never happen at the same time, the
mutex originally used for the favorites has been repurposed. Due to the
restructuring, the mutex in the favorite-task is no longer needed, as
that will only ever kick-off after reset is called and if there are
actually patterns, which can never line up to be accessed on different
threads at the same time.

Last but not least, I noticed that hard crashes could result in your
config file getting overridden. I added a check to prevent that.

Last I issue I can see is that if you use an excessive amount of
favorites/groups, a crash can still happen, but it only happens when you
close the program (occasionally, but unpredictable). Before, this would
happen if you ran the evaluation a second time. I boiled the cause of
the crash down to these lines of code in evaluator.cpp >
patternDestroyed:

```cpp
if (pattern->isPatternLocal()) {
    if (auto it = this->m_patternLocalStorage.find(pattern->getHeapAddress()); it != this->m_patternLocalStorage.end()) {
        auto &[key, data] = *it;

        data.referenceCount--;
        if (data.referenceCount == 0)
            this->m_patternLocalStorage.erase(it);
    } else if (!this->m_evaluated) {
        err::E0001.throwError(fmt::format("Double free of variable named '{}'.", pattern->getVariableName()));
    }
}
```

Specifically, trying to access the `*it` is the reason for the crash
(this was also the cause of the crashes before my fixes, but then during
evaluation).

I'm suspecting the root cause is somewhere in the `.clone` methods of
the patterns. I'd say that for now a crash when closing the program is
more acceptable than during evaluation (which can even happen if you use
favorites).
2023-09-16 13:09:59 +02:00
Imron jehleh
64a30a45d5 fix: Error popup now showing up immediately after click (#1272)
From #1265, Looks like Error Popup doesn't handle properly in some
circumstances.

---------

Co-authored-by: iTrooz <hey@itrooz.fr>
Co-authored-by: WerWolv <werwolv98@gmail.com>
2023-09-16 13:09:24 +02:00
PerikiyoXD
691df0fc83 fix: Implemented forwarder executable (#1308)
Fixes random .NET plugin crash caused by the console window being freed
on the same process.

### Problem description
Sometimes when launching from the explorer ImHex crashes

### Implementation description
We've implemented a launcher to avoid freeing the std streams, that
generated the bug.

### Screenshots
N/A

### Additional things
Blame windows console subsystem
2023-09-16 13:08:19 +02:00
WerWolv
1a2a926b77 fix: "About ... that much" achievement not triggering correctly 2023-09-12 22:24:12 +02:00
WerWolv
da18428f27 fix: Highlighting not being cleared correctly in some cases 2023-09-12 22:23:47 +02:00
iTrooz
5e86f62a98 fix: Handle exceptions thrown by providers on loadSettings() (#1307) 2023-09-12 12:00:00 +02:00
iTrooz
e65021c85e feat: Add more details to startup tasks (#1301) 2023-09-09 12:49:15 +02:00
WerWolv
83e26522b6 fix: Potential use-after-free with the .NET SDK 2023-09-08 22:00:15 +02:00
WerWolv
d011f37658 impr: Added better provider documentation 2023-09-08 21:59:27 +02:00
iTrooz
c07842d7ca refactor: separate loop and frame logic (#1300) 2023-09-07 20:33:49 +02:00
Nik
4e7c3817ed git: Updated windows build instructions 2023-09-05 13:43:29 +02:00
WerWolv
68b203eb75 patterns: Updated pattern language 2023-09-05 10:40:10 +02:00
WerWolv
1bb0a72bed fix: Issues with various float nodes 2023-09-04 19:59:09 +02:00
WerWolv
7685a22c5f fix: Crash when pressing delete twice when data processor nodes are selected 2023-09-04 19:58:55 +02:00
WerWolv
fc91c8e4b0 patterns: Updated pattern language 2023-09-04 19:58:31 +02:00
iTrooz
57084fd797 build: Update libfmt to 10.1.1 (#1286) 2023-09-03 22:49:47 +02:00
WerWolv
2b8a9db0f0 impr: Clean up default layout file 2023-09-03 22:45:03 +02:00
WerWolv
9badfc043b patterns: Updated pattern language 2023-09-03 22:37:58 +02:00
WerWolv
4ff25819c2 fix: Pasting not working correctly on non-zero pages
Fixes #1291
2023-09-03 16:25:51 +02:00
WerWolv
563ff5a774 fix: Future proof the previous fix 2023-09-03 16:18:29 +02:00
WerWolv
b042b8327a fix: Crash when re-opening a custom section window while having a selection in it 2023-09-03 16:09:06 +02:00
WerWolv
971c8739ca fix: Potential crash when preprocessing invalid pattern file when loading a file 2023-09-03 15:49:27 +02:00
WerWolv
26f4aa0d9f fix: Buffer to integer node not working correctly 2023-09-03 15:41:00 +02:00
WerWolv
dc5e5344c5 fix: ImHex not starting at all anymore when launched through the explorer 2023-09-03 14:07:47 +02:00
WerWolv
b2d1568abb fix: First overlay being assigned to all end nodes 2023-09-03 13:44:13 +02:00
WerWolv
632f388ece impr: Make --pl subcommand automatically register ImHex's include dirs 2023-09-03 12:25:00 +02:00
WerWolv
632ca944de impr: Align log output better 2023-09-03 11:45:20 +02:00
WerWolv
0bbd21f25a fix: Build issues with older standard libraries 2023-09-03 11:44:48 +02:00
WerWolv
367c4ec9c8 impr: More view comments and refactoring 2023-09-03 10:27:03 +02:00
WerWolv
5538307838 impr: Make achievement popups stay up for longer 2023-09-03 10:26:40 +02:00
WerWolv
eba8c82699 fix: Crash when using provider overlays 2023-09-03 10:26:25 +02:00
iTrooz
be3ac26306 fix: Remove remannts of #680 bugfix (#1282) 2023-09-02 22:59:09 +02:00
iTrooz
fc1ad592cb feat: Adapt content store view for new API contents (#1268) 2023-09-02 18:36:34 +02:00
Lennard Fonteijn
f725d763d1 feat: Remember bytes per row in Hex Editor (#1276) 2023-09-02 17:52:05 +02:00
iTrooz
c2fe9f0966 fix: verify that file names queried from the store do not allow path traversal (#1277) 2023-09-02 17:51:21 +02:00
iTrooz
235f4e39b4 git: build llvm ourselves in Fedora packages (#1280) 2023-09-02 16:41:20 +02:00
WerWolv
58cef2361b impr: Added hint when patterns are still loading 2023-08-30 10:04:06 +02:00
WerWolv
60649d1cba fix: Occasional crash when using favorites 2023-08-30 09:18:24 +02:00
WerWolv
ea9457c08c patterns: Added [[hex::favorite]] attribute 2023-08-29 21:46:08 +02:00
WerWolv
7bf9634e6e patterns: Updated pattern language 2023-08-29 12:14:34 +02:00
WerWolv
4288f876e2 impr: Added lots of comments and cleaned up many views 2023-08-29 12:14:12 +02:00
iTrooz
10ad239fb9 fix: add _lang suffix to "Load into memory" localization string (#1267) 2023-08-28 02:21:41 +02:00
WerWolv
550392c8d6 fix: Texture loading from romfs 2023-08-26 23:43:35 +02:00
WerWolv
32e05cc62f patterns: Updated pattern language 2023-08-26 23:31:25 +02:00
WerWolv
886c52b322 patterns: Updated pattern language 2023-08-26 12:55:09 +02:00
WerWolv
ba66005585 impr: Various code cleanup 2023-08-26 12:54:52 +02:00
Justus Garbe
bfc835fc54 fix: add new capstone options and fixed overextending name array 2023-08-26 12:21:44 +02:00
iTrooz
32d6ac2241 feat: move PerProvider data to new provider when saving memory provider into file provider (#1264) 2023-08-26 01:47:44 +02:00
WerWolv
758cdd91f3 impr: Make sure logs are always output immediately 2023-08-26 01:44:10 +02:00
WerWolv
6e81ce152e impr: Get rid of some manual memory management 2023-08-25 23:54:39 +02:00
WerWolv
e487fd7450 fix: Crash loop when segfault gets triggered 2023-08-25 23:51:51 +02:00
WerWolv
bd75b70d85 impr: More style and comment fixes in crash handler 2023-08-25 23:19:13 +02:00
WerWolv
6ef96c5533 fix: Missing typeinfo include 2023-08-25 23:11:05 +02:00
WerWolv
6fc62bac94 build: Remove unnecessary yara autoconf file configuring 2023-08-25 22:55:09 +02:00
WerWolv
baecf66716 feat: Added .gdbinit script to aid with debugging 2023-08-25 22:55:09 +02:00
WerWolv
7476ae230c fix: Make ImHex exit cleanly when crashing 2023-08-25 22:55:09 +02:00
iTrooz
175e66a60e feat: Do not save memory providers as recent entries (#1259) 2023-08-25 15:35:15 +02:00
Nik
a1dc979217 build: Fixed plugins not having their C++ version set correctly 2023-08-22 19:29:03 +02:00
iTrooz
fbdcd22117 git: Make CI faster (#1257) 2023-08-21 16:20:36 +02:00
WerWolv
d50fb8d17b fix: Crash when deleting items from file combiner in some cases 2023-08-19 19:18:57 +02:00
WerWolv
83e42ddfd9 fix: Don't show accept pattern popup if no patterns are available 2023-08-19 19:12:48 +02:00
WerWolv
6c8a90720f feat: Added window actions popup when clicking on icon 2023-08-19 19:12:15 +02:00
WerWolv
e70ec10b0e impr: Allow the file combiner tool to select multiple files at once 2023-08-19 19:11:38 +02:00
WerWolv
b4401b7df1 fix: Rest in peace, Anonfiles 2023-08-17 09:27:14 +02:00
WerWolv
f598421705 patterns: Updated pattern language 2023-08-17 08:24:38 +02:00
lorsanta
84ceb45129 impr: Update timestamp when saving a file in windows (#1248)
### Problem description
Ref #1210 

### Implementation description
Call
[`SetFileTime()`](https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-setfiletime)
everytime `FileProvider::save()` is called.

### Additional things
I moved the call to `File::close()` from `FileProvider::open()` to
`FileProvider::close()` because `SetFileTime()` requires a file handler
as input, so I need `File::m_file` to be valid.
2023-08-16 23:18:16 +02:00
WerWolv
fc93f8bd66 fix: CI being broken on Arch Linux 2023-08-16 23:07:16 +02:00
WerWolv
8a2afd1c05 fix: Crashes when having pattern auto evaluation enabled 2023-08-16 22:26:05 +02:00
Justus Garbe
33e9ad7775 fix: Draw title bar correctly when no title bar buttons exist 2023-08-13 23:54:22 +02:00
Justus Garbe
2059ad82c3 fix: Update title on project save 2023-08-13 23:36:50 +02:00
Lennard Fonteijn
c25aad552d feat: Selectable demangler (#1250)
Supersedes #1240 - depends on #1249 and
https://github.com/WerWolv/libwolv/pull/8 to work.
2023-08-13 21:51:05 +02:00
Lennard Fonteijn
896091b124 feat: Added toggle for human-readable units in hex editor footer (#1251)
Finalization of #1245 by adding a toggle to the hex editor itself, issue
can be closed afterwards.
2023-08-13 19:08:09 +02:00
Lennard Fonteijn
d2e6d8e4d9 Added ImGui extension to create single- and multiline formatted selec… (#1249)
(Partial) implementation of #1245 with additional functionality to
supersede PR #1240.
2023-08-13 17:08:17 +02:00
Justus Garbe
285b79f31e fix: Crypto buffered hexadecimal encoding 2023-08-13 15:27:01 +02:00
Justus Garbe
d468893bb0 build: Updated libwolv 2023-08-13 14:30:52 +02:00
Lennard Fonteijn
df24d1e1e9 fix: Revert the FPS limiter back to the one used in v1.30.1 (#1247)
As requested on Discord, a PR to revert the FPS limiter back to the one
that was used in v1.30.1.

The new FPS limiter seems to be flawed in that it runs at about half the
speed it is supposed to be.

See this illustration:

![FPS](https://github.com/WerWolv/ImHex/assets/869973/8a101b4c-23d8-4806-8d53-3be7aeb84fed)

Left is v1.30.1, right is the new version (without this fix). See how
long it takes to respectively reach 0xE90.

This is not a performance issue, because when you fully unlock the
framerate on the right, it's just as fluent as on the left.
2023-08-11 22:03:30 +02:00
WerWolv
65c56a887c feat: Added option to load files into memory 2023-08-09 20:04:12 +02:00
WerWolv
ef556d07ed fix: Init task text being offset on larger screen resolutions 2023-08-09 20:02:38 +02:00
WerWolv
882849e73c fix: Highlighting of found elements not being cleared correctly 2023-08-09 20:01:57 +02:00
WerWolv
49d3fe65a3 fix: Allow converting very long hex strings to bytes 2023-08-09 20:01:29 +02:00
WerWolv
a6aafa8cd6 feat: Allow memory files to be renamed 2023-08-08 19:04:00 +02:00
WerWolv
ba9227c1e0 feat: Properly save memory provider data 2023-08-06 21:48:08 +02:00
Nik
e77f138514 feat: Added Achievements (#1230)
This PR adds Achievements to ImHex that serve as both a guide and a fun
way to learn more about ImHex and reverse engineering
2023-08-06 21:33:15 +02:00
WerWolv
64a0c3f6e2 build: Updated json and miniaudio libraries 2023-08-06 11:10:42 +02:00
WerWolv
fae8f0a8d5 build: Fixed cmake not using default settings on Windows 2023-08-06 01:52:23 +02:00
WerWolv
f2cfc70eca fix: Highest / Lowest entropy block address being wrong 2023-08-06 01:51:01 +02:00
iTrooz
55e6761bf1 build: Fix LTO not being enabled correctly (#1217)
Currently, LTO isn't enabled (at least on Linux ?), because LTO doesn't
recognize any language as being enabled.

I fixed that by explicitly enabling C and CXX languages before enabling
LTO
2023-08-05 20:39:20 +02:00
WerWolv
1a765ee5ab build: Updated libromfs 2023-08-05 10:26:27 +02:00
WerWolv
e1ca84d89c patterns: Updated pattern language
Fixes #1228
2023-08-05 09:59:53 +02:00
WerWolv
2082781cf5 fix: Correct endianess of CRC hashes
Fixes #1225
2023-08-04 16:05:21 +02:00
WerWolv
d28d6d1a1b patterns: Updated pattern language
Fixes #958
2023-08-03 23:43:40 +02:00
WerWolv
a61c93e99c impr: Better tooltip for update all button in content store
#1222
2023-08-03 21:50:28 +02:00
WerWolv
e65497ec3b fix: /imhex being appended to Application Support folder paths on macOS
Fixes #1221
2023-08-03 21:49:41 +02:00
WerWolv
50dd6405e9 patterns: Updated pattern language 2023-08-02 20:41:56 +02:00
WerWolv
79eb53eb0d fix: --pl command line interface not working correctly 2023-08-02 20:30:13 +02:00
WerWolv
05ca498343 feat: Added Fill option to hex editor 2023-08-02 13:09:21 +02:00
WerWolv
fbd4bc337b fix: Crash when trying to format invalid timestamps 2023-08-02 12:52:10 +02:00
WerWolv
89115bcdde impr: Added better data processor workspace close button 2023-08-02 12:51:58 +02:00
WerWolv
954c0d5bda fix: Writing to hex cells in big endian mode writing the value as little endian
Fixes #1219
2023-08-02 12:51:33 +02:00
WerWolv
bf8924ae0c feat: Added support for string in/out variables 2023-08-02 12:51:02 +02:00
WerWolv
30b202cf0c patterns: Updated pattern language 2023-08-01 00:00:45 +02:00
WerWolv
84766d5f6e patterns: Updated pattern language 2023-07-31 23:19:23 +02:00
WerWolv
106e669512 feat: Added setting to remember and restore window position and size
Closes #1215
#944
2023-07-31 11:17:37 +02:00
iTrooz
4d6e6cf75a fix: Magic compile dumping files into cwd (#1212)
This PR fix libmagic dumping files in the imhex cwd when compiling them

This code was actually written by you (notice the source branch), this
PR is just a reminder that the fix works and you can merge it ^^

---------

Co-authored-by: WerWolv <werwolv98@gmail.com>
2023-07-30 21:36:48 +02:00
iTrooz
26e7e12f09 git: Update custom macOS GLFW build settings (#1214)
<!--
Please provide as much information as possible about what your PR aims
to do.
PRs with no description will most likely be closed until more
information is provided.
If you're planing on changing fundamental behaviour or add big new
features, please open a GitHub Issue first before starting to work on
it.
If it's not something big and you still want to contact us about it,
feel free to do so !
-->

### Problem description
<!-- Describe the bug that you fixed/feature request that you
implemented, or link to an existing issue describing it -->

There are unused ImHex-specific flags in the custom GLFW build on MacOS.
Also, it isn't built in release mode
2023-07-30 21:36:27 +02:00
WerWolv
b469e68ddb fix: Pattern console not updating correctly 2023-07-30 21:35:31 +02:00
WerWolv
2e5a51bb05 patterns: Updated pattern language 2023-07-30 00:44:09 +02:00
WerWolv
4ae55f69e1 build: Updated libwolv 2023-07-29 11:26:18 +02:00
WerWolv
d079b8c3bb impr: Hide column headers when hiding ASCII or custom encoding column 2023-07-28 10:31:44 +02:00
WerWolv
33f0d59545 fix: Bad formatting of project open error popup 2023-07-28 00:01:49 +02:00
Nik
42c36279d1 build: Properly bundle libcurl into AppImage 2023-07-27 23:36:50 +02:00
WerWolv
b55c6fa3e1 git: Remove updating of the plugin templates from release CI 2023-07-27 11:09:20 +02:00
WerWolv
3a39d3c532 git: Updated plugins list 2023-07-27 11:08:55 +02:00
WerWolv
f67e808d0b build: Add plugins to main dependency 2023-07-27 10:45:11 +02:00
WerWolv
e1d0a057ff build: Set plugin output directory correctly 2023-07-27 02:07:36 +02:00
WerWolv
e829c407e3 fix: Writing behaving weirdly when using a custom base address 2023-07-27 02:05:35 +02:00
WerWolv
94a02c4b6d build: Streamlined plugin creation process 2023-07-27 00:53:04 +02:00
WerWolv
4792a29fac fix: Crash when passing invalid parameters to sound visualizer
Fixes #1208
2023-07-26 22:13:39 +02:00
WerWolv
27c8e19c14 build: Remove all static variables from headers to hopefully fix plugins 2023-07-26 13:50:51 +02:00
WerWolv
866c87b2bf patterns: Updated pattern language 2023-07-26 13:05:47 +02:00
WerWolv
aa4ce01c73 build: Forcefully disable LTO for libimhex 2023-07-26 12:57:38 +02:00
WerWolv
d0a5c144e6 patterns: Updated pattern language 2023-07-26 00:23:09 +02:00
WerWolv
5feb4dce51 build: Try and make libimhex export all symbols 2023-07-25 11:25:59 +02:00
WerWolv
4d4f223357 impr: Improve frame rate when lots of bytes are highlighted 2023-07-24 23:24:31 +02:00
WerWolv
440e2d91fc impr: Better logging during font loading 2023-07-24 23:24:11 +02:00
WerWolv
bca73ef01e fix: Loading of custom fonts not working anymore 2023-07-24 17:25:36 +02:00
WerWolv
a032bfa0f5 feat: Added support for hashing arbitrary strings using the string view 2023-07-24 16:58:52 +02:00
WerWolv
ff8946b851 fix: Pattern array chunks being rendered wrongly 2023-07-24 16:55:35 +02:00
WerWolv
599b43db22 impr: Initialize script loaders during splash screen again 2023-07-24 15:36:57 +02:00
WerWolv
a4e4e01d2d fix: Crash when cleaning log files that are open in another program 2023-07-24 15:36:29 +02:00
WerWolv
8b3cd2d76d impr: Properly print asserts 2023-07-23 23:39:00 +02:00
WerWolv
ffdaf0d16e impr: Use better splash screen selection color generator 2023-07-23 23:38:13 +02:00
WerWolv
b8d5e1e9c5 feat: Added built-in logging console 2023-07-23 23:37:47 +02:00
WerWolv
aa66d4b9e7 impr: Insert short delay before opening popups so the animation finishes 2023-07-23 18:22:53 +02:00
WerWolv
fdd2e1fcde patterns: Added [[hex::spec_name]] 2023-07-23 09:14:00 +02:00
WerWolv
591435761b impr: Added "Close ImHex" button to all plugin-related fatal popups 2023-07-22 22:59:05 +02:00
WerWolv
4979c65566 fix: Missing <array> include in stacktrace helper 2023-07-22 22:47:35 +02:00
WerWolv
f5fda76414 impr: Cleanup main 2023-07-22 21:30:22 +02:00
WerWolv
4b0d980d54 impr: Don't use fmt::println if it's not supported 2023-07-22 20:22:25 +02:00
WerWolv
46ee3f0faa impr: Improve uncaught exception error handling to provide actual stack trace 2023-07-22 20:16:36 +02:00
WerWolv
564ae6dd8c fix: Crash when loading bad font 2023-07-22 19:35:58 +02:00
WerWolv
8aec382440 fix: Loading of plugins and localizations after restart 2023-07-22 18:38:14 +02:00
WerWolv
a99f8f78d0 fix: Crash when trying to paste invalid data 2023-07-22 18:21:58 +02:00
WerWolv
0faea9d7c7 impr: Make splash screen look much nicer 2023-07-22 18:21:47 +02:00
WerWolv
c294619102 impr: Make script loaders be initialized synchronously 2023-07-21 20:25:56 +02:00
WerWolv
f6bbfd7283 impr: Properly print new line characters in cli 2023-07-21 15:17:21 +02:00
WerWolvTranslationBot
d3f493b6c2 lang: Translations update from Weblate (#1200)
Translations update from [Weblate](https://weblate.werwolv.net) for
[ImHex/Built-in
Plugin](https://weblate.werwolv.net/projects/imhex/built-in-plugin/).


It also includes following components:

* [ImHex/Windows
Plugin](https://weblate.werwolv.net/projects/imhex/windows-plugin/)



Current translation status:

![Weblate translation
status](https://weblate.werwolv.net/widgets/imhex/-/built-in-plugin/horizontal-auto.svg)

Co-authored-by: Justus Garbe <gihihoh@gmail.com>
2023-07-21 14:30:27 +02:00
WerWolv
bd8868d2c8 impr: Added better help output for cli 2023-07-21 14:28:15 +02:00
WerWolv
ee41a5a046 fix: Selection changes not being handled correctly 2023-07-21 14:22:53 +02:00
WerWolv
0033d9f4eb patterns: Updated pattern language 2023-07-21 14:20:57 +02:00
WerWolv
e5a793e8de fix: Subcommands not working at all on Linux 2023-07-21 14:12:08 +02:00
WerWolv
3149183450 patterns: Updated pattern language 2023-07-21 11:53:37 +02:00
WerWolv
7c321a79c3 impr: Print message if no stacktrace can be collected 2023-07-20 21:41:22 +02:00
WerWolv
7c203e0635 build: Updated libwolv
Fixes #1201
2023-07-20 21:38:37 +02:00
WerWolv
ffd3efe5fa git: Disable .NET scripts in AppImage since it hangs on startup 2023-07-20 20:59:06 +02:00
WerWolv
18dd754b31 impr: Better handling of hex editor selections 2023-07-20 20:58:28 +02:00
WerWolv
3c97759aa7 fix: Crash when trying to load files with invalid paths 2023-07-19 22:35:55 +02:00
WerWolv
f930b6e17d fix: Various .NET and plugin loading fixes 2023-07-19 21:40:24 +02:00
WerWolv
2d4f971d10 impr: Disable endianess switch in hex editor when visualizer only uses one byte 2023-07-18 14:23:02 +02:00
WerWolv
90267ec356 impr: Allow hex editor view to be scrolled slightly past the end 2023-07-18 14:22:39 +02:00
WerWolvTranslationBot
7fc53bf861 lang: Translations update from Weblate (#1199)
Translations update from [Weblate](https://weblate.werwolv.net) for
[ImHex/Built-in
Plugin](https://weblate.werwolv.net/projects/imhex/built-in-plugin/).


It also includes following components:

* [ImHex/Windows
Plugin](https://weblate.werwolv.net/projects/imhex/windows-plugin/)



Current translation status:

![Weblate translation
status](https://weblate.werwolv.net/widgets/imhex/-/built-in-plugin/horizontal-auto.svg)

---------

Co-authored-by: Justus Garbe <gihihoh@gmail.com>
Co-authored-by: xtex <xtexchooser@duck.com>
2023-07-17 16:40:40 +02:00
WerWolv
b9c2955b88 fix: Use ANSI escape codes for --plugins 2023-07-17 11:59:21 +02:00
WerWolv
ed33dd0bb0 git: Make rpm builds a bit less verbose 2023-07-17 11:50:22 +02:00
WerWolv
6d7f217e2a patterns: Updated pattern language 2023-07-17 11:20:17 +02:00
WerWolv
a83ca3c228 feat: Added --pl and --magic command 2023-07-17 10:43:29 +02:00
WerWolv
b9ec1a150d fix: Wrong libfmt header being included 2023-07-17 09:12:22 +02:00
classabbyamp
d9a4906b3c impr: Clarify portal error message (#1197)
<!--
Please provide as much information as possible about what your PR aims
to do.
PRs with no description will most likely be closed until more
information is provided.
If you're planing on changing fundamental behaviour or add big new
features, please open a GitHub Issue first before starting to work on
it.
If it's not something big and you still want to contact us about it,
feel free to do so !
-->

### Problem description
<!-- Describe the bug that you fixed/feature request that you
implemented, or link to an existing issue describing it -->

see #723


### Implementation description
<!-- Explain what you did to correct the problem -->

`xdg-desktop-portal-wlr` is not relevant because it does not provide the
FileChooser interface.

`xdg-desktop-portal` needs the `WAYLAND_DISPLAY` env var on wayland and
the `DISPLAY` and `XAUTHORITY` env vars on xorg. If the dbus user
session bus is not run in a way that it already gets those variables,
they must be given via `dbus-update-activation-environment(1)`.

### Screenshots
<!-- If your change is visual, take a screenshot showing it. Ideally,
make before/after sceenshots -->

### Additional things
<!-- Anything else you would like to say -->

fixes #723
2023-07-17 09:11:40 +02:00
WerWolv
a83f87fbfa build: Updated nativefiledialogs-extended to latest version 2023-07-17 08:08:29 +02:00
WerWolv
e9450b490f feat: Added --plugin, --calc, --hash, --encode and --decode subcommands 2023-07-16 23:46:41 +02:00
WerWolv
1588365d4a build: Use the libcurl WinSSL version on Windows to make SSL work again 2023-07-16 21:38:54 +02:00
WerWolv
76e932ecc0 build: Switch to using the system capstone version on Windows 2023-07-16 21:38:29 +02:00
WerWolv
52c517d38d fix: Potential crash when loading incorrect data processor node files 2023-07-16 20:41:06 +02:00
WerWolv
aac9bf3896 fix: Crash when using "Open in new View" button in bookmarks 2023-07-16 20:35:10 +02:00
WerWolv
54891c6d8f impr: Added proper localization for new visualizer endianess toggle 2023-07-16 20:25:31 +02:00
WerWolv
d7238a5f80 impr: Move script library to its own library 2023-07-16 20:13:50 +02:00
WerWolv
0a6815da8f fix: Always use default CA Cert 2023-07-16 19:56:07 +02:00
WerWolv
7631778edb feat: Added support for big endian in data visualizers 2023-07-16 19:53:02 +02:00
Justus Garbe
1a3debd6c9 fix: Raw Disk Provider not working correctly on Linux and macOS (#1195)
<!--
Please provide as much information as possible about what your PR aims
to do.
PRs with no description will most likely be closed until more
information is provided.
If you're planing on changing fundamental behaviour or add big new
features, please open a GitHub Issue first before starting to work on
it.
If it's not something big and you still want to contact us about it,
feel free to do so !
-->

### Problem description
- Fixed disk provider not working for linux

### Implementation description
- Used ioctl instead of fstat
- Fixed buffer issues

---------

Co-authored-by: WerWolv <werwolv98@gmail.com>
2023-07-16 18:18:41 +02:00
WerWolv
893b06c78b feat: Allow hex editor editing mode to be entered when pressing Enter 2023-07-16 18:14:48 +02:00
WerWolv
709f4b7e80 build: Remove dangerous linker options from script loader plugin 2023-07-15 23:20:38 +02:00
WerWolv
54fba5bf8b build: Always bundle CA Cert on Windows 2023-07-15 23:20:09 +02:00
WerWolv
d977f1f988 impr: Move all .NET scripts to their own subfolder 2023-07-15 14:50:39 +02:00
WerWolv
2fea1975c2 build: Don't set recommended properties if they were already set 2023-07-15 14:29:54 +02:00
Nik
5171bea0bf feat: Added cross-platform .NET scripts support (#1185)
This PR intends to add support for .NET scripts that can extend ImHex's
functionality in a portable and cross-platform way.

---------

Co-authored-by: Justus Garbe <55301990+Nowilltolife@users.noreply.github.com>
2023-07-15 14:29:14 +02:00
WerWolv
4e3b8111fd build: Make sure the arch linux package bundles the correct libraries 2023-07-15 10:33:58 +02:00
WerWolv
afcc01c3dc build: Set default settings only if they haven't been set already 2023-07-15 10:33:42 +02:00
WerWolv
3a775e982f build: Removed outdated and dangerous linker flags in plugins 2023-07-15 10:02:34 +02:00
WerWolv
0f54a3a1f3 build: Added option to disable strict warnings 2023-07-15 10:02:19 +02:00
WerWolv
8500e4cba2 build: Switch to GTK file picker on non-sandboxed Linux builds 2023-07-15 10:01:50 +02:00
WerWolv
c1cdab72ef fix: Weird behaviour when trying to open a non-existing file through the command line 2023-07-15 00:12:09 +02:00
WerWolv
f4ae1fda6d impr: Print welcome message as fast as possible 2023-07-15 00:11:48 +02:00
Nik
aae3004f1f build: Various build improvements (#1193) 2023-07-15 00:10:01 +02:00
WerWolv
1aed960a38 build: Switch build system to Ninja 2023-07-14 22:03:44 +02:00
WerWolv
6c4fdd146f build: Use llvm-ar and llvm-ranlib on Windows 2023-07-14 21:51:18 +02:00
WerWolv
04b56c3d4d patterns: Updated pattern language 2023-07-14 21:39:49 +02:00
iTrooz
1ed658bcdc feat: Added command line interface support (#1172)
System design has been discussed on discord

Should fix #948

---------

Co-authored-by: WerWolv <werwolv98@gmail.com>
2023-07-13 14:08:23 +02:00
WerWolv
8c0395bc7c fix: Prevent wayland from spamming the console with useless errors 2023-07-12 14:33:09 +02:00
WerWolv
cdc4f2db89 patterns: Updated pattern language 2023-07-11 09:21:13 +02:00
WerWolv
272b4b0cf8 feat: Added "Update All" button to content store 2023-07-11 09:19:52 +02:00
WerWolv
10756c65a6 patterns: Updated pattern language 2023-07-11 00:04:54 +02:00
WerWolv
8524e93445 impr: Display encoding types in header of hex editor
Closes #1186
2023-07-11 00:04:26 +02:00
WerWolv
511ef3ef2b build: Supress warning generated by libraries setting BUILD_SHARED_LIBS 2023-07-09 22:39:27 +02:00
WerWolv
32ade6136b build: Make sure ImHex Patterns repo gets cloned correctly 2023-07-09 22:18:53 +02:00
WerWolv
65d9509c38 build: Add checked option to enable LTO 2023-07-09 20:34:49 +02:00
WerWolv
ce9ce42c1c impr: Only reload localization when necessary 2023-07-09 20:24:56 +02:00
WerWolv
6343cb092b build: Fixed include issues 2023-07-09 12:53:31 +02:00
WerWolv
7cb26b1499 patterns: Updated pattern language 2023-07-09 12:40:51 +02:00
WerWolv
5d047a335d patterns: Updated pattern language 2023-07-09 12:30:48 +02:00
WerWolv
3e797eeea2 fix: Never create an imgui.ini file
#1166
2023-07-07 09:20:33 +02:00
WerWolv
14bb98a519 build: Updated libwolv 2023-07-07 09:02:31 +02:00
WerWolv
a78d3f9977 fix: Framerate limits not working correctly 2023-07-06 21:15:08 +02:00
WerWolv
2449b08f64 fix: Crash when trying to remove chunks larger than the whole file 2023-07-06 21:14:50 +02:00
WerWolv
33d3bea472 fix: Flickering cursor issues 2023-07-06 10:26:12 +02:00
WerWolv
c9c6f3aadb fix: New visualizers behaving weirdly with large font sizes 2023-07-06 10:08:47 +02:00
WerWolv
c9dbcbb3d3 build: Updated dependencies 2023-07-06 08:26:36 +02:00
WerWolv
924c816dbd fix: Chunk size setting in information view being reset the first time 2023-07-06 00:00:56 +02:00
WerWolv
695e11477e feat: Added single stepping feature to pattern debugger 2023-07-05 21:32:11 +02:00
iTrooz
ac2a609d0a impr: Use execvp() instead of system() on Linux (#1170)
This PR it just a hack to fix #1160 , it doesn't solve the underlying
problem.

It fixes the problem because by using execvp() directly, it avoids the
call to `sh` done with `system()`, which has a bug on Ubuntu 22.04 which
makes it i,compatibles with the glibc inside the AppImage.
It doesn't fix the underlying problem because the programs we call
themselves still link to the AppImage's libraries instead of the system
ones.
2023-07-05 20:50:46 +02:00
iTrooz
e3ae169833 impr: Separate the behaviour of being savable and being dumpable for provider (#1183)
### Problem description

Currently, the providers use the method `isSavable()` to determine both
if they can use "Save" or "Save as".
This behaviour is problematic because some providers may need to be
saveable but not saveable as: for example the view provider. The
original provider may not allow to be saved.

### Implementation description
I separate these two behaviour by creating another function:
`isDumpable()`, that return true by default but can be overridden by the
provider to return false, if the provider should not be dumped in any
way.

### Additional things

While I was at it, I also marked "export" operations as needing the
"dumpable" flag. That way, we can't accidentally export the whole
address space of a process as base64.

I also added documentation for these some functions in Provider
2023-07-05 20:49:57 +02:00
WerWolv
25d6380963 build: Upgraded capstone to full V5 release 2023-07-05 20:45:46 +02:00
WerWolv
f00b9f05ac build: Fixed Ubuntu build issues 2023-07-05 20:25:40 +02:00
WerWolv
b6881d2362 feat: Added timestamp visualizer 2023-07-05 19:54:18 +02:00
WerWolv
8e0349e2ac fix: Projects failing to be loaded when another project is being unloaded 2023-07-04 23:30:37 +02:00
WerWolv
86c4c8fa96 feat: Added new pattern inline visualizers 2023-07-04 22:18:06 +02:00
WerWolv
33566137c2 impr: Allow bitmap visualizers to be zoomed 2023-07-04 22:17:51 +02:00
WerWolv
f16bbfb469 feat: Added coordinates visualizer 2023-07-04 09:40:05 +02:00
WerWolv
b265d8e54a build: Restructure romfs assets 2023-07-04 08:42:33 +02:00
WerWolv
6a667d9493 impr: Allow image visualizer image to be scaled 2023-07-03 21:24:36 +02:00
WerWolv
ceed8c7420 pattern: Properly display Start/End/Size column again for zero sized types 2023-07-03 21:24:15 +02:00
WerWolv
d297b2d1cc impr: Hide sections with an empty name 2023-07-03 12:04:20 +02:00
WerWolv
39e74c627e impr: Handle unidentifiable data in the data information view better 2023-07-02 10:27:56 +02:00
WerWolv
28dea8e5bd fix: Menu Bar being scrollable sideways 2023-07-01 22:55:59 +02:00
WerWolv
a0c89858ed patterns: Don't re-evaluate format functions during highlighting 2023-07-01 14:06:15 +02:00
iTrooz
c6c3ca4d26 fix: Reset terminate handler directly when being called + some other crashes to crash handling (#1174)
This PR fixes some things about crash handling:
- when the terminate handler is called, immediately set it back to the
original one, so can't make a recursion if the crash-handling code fails
- Only save projects if the crash occured after Imhex finished startup
- do not update the project location when saving the crash backup file:
this will remove problems when `EventAbnormalTermination` is called
before `crashCallback()`

I also added a bit more documentation
2023-07-01 12:32:28 +02:00
WerWolv
301418c728 fix: Bookmarks not being loaded correctly when multiple providers are in project 2023-07-01 12:27:59 +02:00
Nik
730e67881b build: Added Ubuntu 23.04 builds (#1173) 2023-06-30 23:58:20 +02:00
iTrooz
aec38328d0 impr: Added "Hold SHIFT for more info" text to provider tooltip (#1171)
As discussed on discord
2023-06-30 22:28:37 +02:00
WerWolv
050a71913a impr: Improved construction of language settings dropdown 2023-06-30 14:00:10 +02:00
WerWolv
8cc6994dd0 fix: Properly apply UI scaling on launch 2023-06-30 13:40:39 +02:00
WerWolv
f9909dab98 fix: Properly clear all global registries 2023-06-30 13:40:16 +02:00
WerWolv
bc98556897 impr: Automatically scroll pattern console to the bottom when new lines are added 2023-06-30 00:11:48 +02:00
WerWolv
4f08ba3590 patterns: Fixed race condition when evaluating patterns 2023-06-30 00:11:26 +02:00
WerWolv
78cb0a2592 patterns: Updated pattern language 2023-06-28 18:15:29 +02:00
WerWolv
a5fac85727 fix: Commit hash/branch in statistics being in wrong order 2023-06-27 01:46:11 +02:00
WerWolv
8fdb60758b impr: Load plugins asynchronously to speed up startup times 2023-06-27 00:52:13 +02:00
WerWolv
7510fa091e patterns: Updated pattern language 2023-06-27 00:26:50 +02:00
WerWolv
b87c32a94b build: Fedora fix again 2023-06-26 14:52:00 +02:00
WerWolv
b13494a192 build: Try fixing Fedora build 2023-06-26 14:37:35 +02:00
WerWolv
d527675bda build: Make sure changing commit hash doesn't trigger a full rebuild
Closes #1137
2023-06-26 14:01:45 +02:00
WerWolv
15cd2b693c fix: Crash when using paste without a valid selection 2023-06-26 11:14:10 +02:00
WerWolv
cda883bb0f fix: Page count displaying wrongly in empty files 2023-06-26 11:13:12 +02:00
WerWolv
e03c91b888 impr: Better UI for all data information diagrams 2023-06-26 10:51:37 +02:00
WerWolv
9282f1fe75 fix: Multiwindow support not being disabled by default on Linux 2023-06-26 09:02:23 +02:00
WerWolv
af147b4f54 fix: Titlebar button localization keys still being inside the windows plugin 2023-06-26 08:54:30 +02:00
WerWolv
13b4201446 build: Clean up build logs 2023-06-26 08:45:33 +02:00
WerWolv
83bcbfebdd patterns: Updated pattern language 2023-06-25 12:45:34 +02:00
WerWolv
1a31b4aaff patterns: Updated pattern language 2023-06-25 00:29:21 +02:00
WerWolv
c280b16787 fix: Make disassembler view not clear selection when typing in region 2023-06-24 20:53:36 +02:00
WerWolv
cc55ca3117 build: Bumped version to 1.30.1 2023-06-24 16:40:57 +02:00
WerWolv
a449478e39 patterns: Make updating favorites and pattern tooltips not lag out ImHex 2023-06-24 16:40:34 +02:00
WerWolv
c1babc2a55 fix: Prevent data inspector table from being scrollable 2023-06-24 15:39:19 +02:00
WerWolv
b644020e0f impr: Allow Accept Pattern popup to be closed with Escape 2023-06-24 15:32:05 +02:00
WerWolv
07ffd21c5a fix: Entropy and byte type graph sometimes stopping in the middle 2023-06-24 15:20:26 +02:00
WerWolv
ddc0457d9a fix: Unifont not being loaded correctly in some cases
Fixes #1155
2023-06-24 14:55:10 +02:00
WerWolv
13599908f8 build: Bumped version to 1.30.0 2023-06-24 12:07:39 +02:00
WerWolv
af951e3526 fix: Entropy and byte type diagram address and display being wrong 2023-06-24 11:53:21 +02:00
WerWolv
568e8d8d42 build: Don't generated PDBs in Debug mode 2023-06-24 11:52:37 +02:00
WerWolv
ade05f8e12 impr: Only load a limited subset of unicode characters by default 2023-06-24 10:58:42 +02:00
WerWolv
cabe9cf995 build: Fixed PDB generation again 2023-06-24 01:48:13 +02:00
WerWolv
1e9cc97263 feat: Added scope selector dropdown to pattern debugger 2023-06-24 00:49:43 +02:00
WerWolv
35d2fda0a4 build: More pdb gen fixes 2023-06-23 23:20:56 +02:00
WerWolv
2c6f1503ef build: Corrected pdb generation and install issues 2023-06-23 23:00:06 +02:00
WerWolv
dd72c0cc46 patterns: Updated pattern language 2023-06-23 21:39:46 +02:00
WerWolv
a7ecefb5a0 fix: Don't load constants files that start with a _ 2023-06-23 21:39:39 +02:00
WerWolv
1b028dfc0a fix: Crash on exit 2023-06-23 21:39:22 +02:00
WerWolv
c787532ed9 build: Fixed pdb creation removing bundled debug info 2023-06-23 21:39:13 +02:00
WerWolv
b019283a2f impr: Force disable unicode support when the NoGPU version is used 2023-06-22 17:56:09 +02:00
WerWolv
ae06954771 fix: Stack trace printing on Windows not working right 2023-06-22 15:15:06 +02:00
WerWolv
cb3b71e2f3 fix: Typo in content registry comment 2023-06-21 23:59:40 +02:00
WerWolv
d65e669bbb impr: Make loading of large table files significantly faster 2023-06-21 23:58:21 +02:00
WerWolv
e1b0c1c268 build: Fixed commit hash define being set incorrectly 2023-06-21 23:09:22 +02:00
iTrooz
b7d8e46288 feat: Display detailed error message when loading of project fails (#1135)
In order to do this I add to make some other additions :
- Add a warning popup (TODO, maybe add some icons to differentiate
error/warning popups in a future PR ?)
- create showError() and showWarning() functions, as helpers to show a
message both to the logs and as a popup
2023-06-21 20:07:36 +02:00
WerWolv
3fe6cd057b impr: Upper case pattern data export options 2023-06-21 17:49:03 +02:00
WerWolv
da11c47693 impr: Better sorting of hex cell visualizers 2023-06-21 17:48:51 +02:00
WerWolv
98395afe9d patterns: Updated pattern language 2023-06-21 13:55:40 +02:00
WerWolv
9cd19063da fix: Occasional crashes when evaluating patterns 2023-06-21 10:30:00 +02:00
WerWolv
6435d8d955 feat: Name runner threads for tasks 2023-06-21 09:29:57 +02:00
WerWolv
0da87cdb68 patterns: Updated pattern language 2023-06-21 09:29:40 +02:00
WerWolv
eed785d73f impr: Better layout for statistics value in statistics popup 2023-06-21 00:33:06 +02:00
shenleban tongying
b223d9b0ff fix: Wrong drawing logic for custom encoding characters (#1150)
fix https://github.com/WerWolv/ImHex/issues/1146
related
3a840c4ced
2023-06-21 00:30:26 +02:00
WerWolv
c8150f3261 impr: Make statistics format not suck a whole lot 2023-06-21 00:21:16 +02:00
WerWolv
6d1f639bc6 impr: Added GPU vendor and portable version flag to statistics 2023-06-20 20:37:17 +02:00
Nik
f703b15165 feat: Added statistics and crash log uploading (#1149)
Co-authored-by: Justus Garbe <gihihoh@gmail.com>
2023-06-20 11:55:56 +02:00
WerWolv
54061c56bf fix: Logging race conditions 2023-06-18 22:32:55 +02:00
WerWolv
25154dd450 build: Force enable exceptions and rtti 2023-06-18 14:42:48 +02:00
WerWolv
d9af85f458 impr: Split offset column into Start and End column in pattern data view 2023-06-18 12:23:47 +02:00
WerWolv
e09b678426 patterns: Updated pattern language 2023-06-18 10:58:24 +02:00
WerWolv
5f6bc2507c impr: Make ImHex not use lots of CPU when waiting for conditions 2023-06-18 10:18:58 +02:00
WerWolv
03f377bf40 fix: Don't try to initialize plugins that failed to load 2023-06-18 10:18:41 +02:00
WerWolv
c2e023f567 fix: Pattern editor console scrolling back to the top constantly 2023-06-16 22:17:01 +02:00
WerWolv
90a576c3c7 fix: Highlighting and updating of the new console not working well 2023-06-14 10:35:23 +02:00
WerWolv
0e5371b298 fix: Properly handle multithreading for new pattern console 2023-06-14 06:57:43 +02:00
WerWolv
fdb1cace2d fix: Properly print fatal error messages when ImHex crashes 2023-06-13 23:31:49 +02:00
KOLANICH
330c8399ce build: Only enable GCC-exclusive warnings on GCC (#1091)
Move all the flags added into an if block, since the flags are for
GCC/Clang and are not suitable for Visual Studio.
2023-06-13 23:01:26 +02:00
WerWolv
dd832bfa7e ui: Make pattern editor console use another text editor 2023-06-13 22:58:57 +02:00
WerWolv
5c31b5cf0d patterns: Updated pattern language 2023-06-13 13:50:01 +02:00
WerWolv
3b514003f8 fix: Pattern editor drag bar not always getting dragged correctly 2023-06-12 08:55:30 +02:00
WerWolv
7de367a944 impr: Properly allow multi-threaded logging without messing up output 2023-06-12 08:24:36 +02:00
WerWolv
ef1d831158 impr: Better UI/UX of the new debugger 2023-06-11 22:00:49 +02:00
WerWolv
54c6c9360a fix: Reverted back reordering of crash callback call 2023-06-11 21:55:48 +02:00
WerWolv
da137b3e3b feat: Allow pattern editor console to be resized 2023-06-11 21:41:24 +02:00
WerWolv
03673b5846 feat: Added basic Pattern Language debugger 2023-06-11 21:41:11 +02:00
WerWolv
9a9b211ebb fix: Crash backups not getting saved when when an exception is thrown 2023-06-11 17:27:09 +02:00
iTrooz
f2509cda1d git: Added pull request template and renamed contributing guide (#1133) 2023-06-11 13:10:30 +02:00
iTrooz
cac9a69ea2 fix: Use Mode::Create instead of Mode::Write when creating crash file (#1134) 2023-06-11 13:10:04 +02:00
WerWolv
f0be585fd8 patterns: Updated pattern language 2023-06-11 12:14:24 +02:00
WerWolv
34732a1ee7 fix: Corrected some memory leaks 2023-06-11 10:47:17 +02:00
WerWolv
ee57c449e7 fix: Crash when clearing old logs on exit 2023-06-11 09:45:06 +02:00
KOLANICH
e8ca139246 fix: Remove unused member variable in HexEditor class (#1129)
Fixes `error: private field 'm_grayZeroHighlighter' is not used
[-Werror,-Wunused-private-field]`
2023-06-11 00:49:34 +02:00
WerWolv
ef9cb31204 patterns: Updated pattern language 2023-06-11 00:08:34 +02:00
WerWolv
cde5940063 fix: Popups sometimes not appearing centered on the main window 2023-06-10 15:15:52 +02:00
WerWolv
e90e414d5a impr: Show infinity icon in pattern editor view when pattern limit is disabled 2023-06-10 15:09:20 +02:00
WerWolv
73d4214fd3 fix: Window title being cleared after ImHex exits 2023-06-10 15:08:56 +02:00
WerWolv
0e8273eaa7 impr: Make sure icons are more centered 2023-06-09 00:30:12 +02:00
WerWolv
a485a0bc3a fix: Crash when loading files in some cases 2023-06-08 17:02:28 +02:00
WerWolv
903d1fb555 impr: Analyze file content of newly loaded files only when they are selected 2023-06-08 17:02:16 +02:00
WerWolv
6e3204b443 patterns: Updated pattern language 2023-06-08 12:16:48 +02:00
WerWolv
9baca91b16 impr: Better unthrown exception error handling 2023-06-08 12:16:37 +02:00
WerWolv
81971eaf4a patterns: Updated pattern language 2023-06-08 09:58:26 +02:00
WerWolv
46270ab213 patterns: Updated pattern language 2023-06-08 09:09:37 +02:00
WerWolv
57bf878312 patterns: Updated pattern language 2023-06-07 23:46:18 +02:00
WerWolv
110c3ac310 patterns: Updated pattern language 2023-06-07 11:08:17 +02:00
WerWolv
99831a66a7 feat: Added file handlers for .hexlyt and .hexproj files 2023-06-06 21:35:13 +02:00
WerWolv
456895a6a6 fix: Various pattern drawer issues 2023-06-06 11:29:58 +02:00
WerWolv
1e2cf87532 fix: Properly clear pattern editor when all providers are closed 2023-06-06 10:36:02 +02:00
WerWolv
48022bc295 fix: Bad formatting of array chunks in pattern data view 2023-06-06 10:06:54 +02:00
Sergei Rebrov
b4ac46f719 impr: Set currently selected address in selection popup (#1125)
Set the Begin field to the current selected address
2023-06-06 08:22:10 +02:00
WerWolv
44bbbb03af fix: Various pattern visualizer issues
Closes #1119
2023-06-06 08:20:58 +02:00
WerWolv
a125408410 patterns: Updated pattern language 2023-06-05 17:09:31 +02:00
WerWolv
b8457439a4 fix: Crash when loading custom encodings 2023-06-05 16:56:50 +02:00
WerWolv
c690f7627f fix: Bad sentence wrapping in advanced provider information popup 2023-06-05 15:36:47 +02:00
WerWolv
849e4ea370 feat: Make paths in about page clickable 2023-06-05 13:50:55 +02:00
WerWolv
9712329924 feat: Added pattern export option to pattern data view 2023-06-05 11:57:26 +02:00
WerWolv
59aa52e744 patterns: Allow console log to be printed immediately and from format functions 2023-06-05 09:45:25 +02:00
WerWolv
60a95eddd7 fix: Crash due to uninitialized data visualizer in hex editor 2023-06-05 09:45:03 +02:00
WerWolv
7c23b215ba impr: Allow detached tools to always be rendered 2023-06-05 09:08:41 +02:00
WerWolv
ae48ae659b impr: Move various settings from settings window to hex editor and pattern data view 2023-06-05 09:07:58 +02:00
WerWolv
e78c21cbfb impr: Use better icons for favorites and filter text boxes 2023-06-04 22:52:36 +02:00
WerWolv
cc55e5ec74 fix: Added missing pattern data favorites lang entry 2023-06-04 18:41:58 +02:00
WerWolv
1134697b90 fix: Pattern filter RValue parsing 2023-06-04 18:35:44 +02:00
WerWolv
e518b8360c feat: Allow patterns to be marked as favorite 2023-06-04 18:30:47 +02:00
WerWolv
244e34ab84 feat: Added pattern data filter field 2023-06-04 16:13:46 +02:00
WerWolv
100b9e3bca fix: Cursor icons on Windows not working correctly after imgui update 2023-06-04 12:12:15 +02:00
WerWolv
07aabe8efa impr: Improved types used in provider functions 2023-06-04 10:42:11 +02:00
iTrooz
25476d4e1e build: Update ImGui and its dependencies (#1122)
This PR updates imgui and its dependencies from the last time, ~1 year
ago
(deabacbd50)

Commits will be refactored before merging

Things you might ask :
- why did you remove `ImGui_ImplGlfw_SetBorderlessWindowMode()` ?
-> Where is it used ? The only usage of it I see is commented
(cb9a3b1f55/lib/external/imgui/source/imgui_impl_glfw.cpp (L757))
- why did you remove the implot anti aliasing flag ?
-> They.. seem to have removed it altogether ?
https://github.com/epezent/implot/issues/479
2023-06-04 00:09:45 +02:00
WerWolv
de76c37ffb fix: Multiple file provider resize issues 2023-06-03 23:57:41 +02:00
WerWolv
6d19b33e32 fix: Don't require providers to be writable to save a project 2023-06-03 23:18:43 +02:00
WerWolv
1dff81f7cd fix: Crash when deleting overlays 2023-06-03 22:50:37 +02:00
WerWolv
aca949175d impr: Disable advanced provider information popup if there are none 2023-06-03 15:57:47 +02:00
WerWolv
d2e455c4cb fix: Intel hex provider not displaying data correctly 2023-06-03 15:53:55 +02:00
WerWolv
09dda0bc5e feat: Added provider information to advanced provider tab tooltip 2023-06-02 14:44:19 +02:00
WerWolv
d10f033439 fix: Key presses not always unlocking frame rate correctly 2023-06-02 14:43:45 +02:00
WerWolv
62ecfb0e0e fix: Make sure crash backup doesn't end up in recents list 2023-06-02 11:03:44 +02:00
WerWolv
504c022f01 patterns: Added hex_viewer visualizer 2023-06-02 10:47:23 +02:00
iTrooz
117832e007 impr: Handle crashes that may happen before the main loop (#1115)
Draft because I absolutely do not trust myself writing good code at 2AM.
I will review it tomorrow
2023-06-01 18:35:41 +02:00
WerWolv
9dafdeb70a patterns: Updated pattern language 2023-05-29 10:52:39 +02:00
WerWolv
5e0ca4ac50 patterns: Properly display exported variables 2023-05-28 15:44:01 +02:00
WerWolv
8d8a5a70f3 fix: Find view replace and hex editor paste logic being wrong 2023-05-28 14:30:33 +02:00
WerWolv
c8c3f5e753 feat: Added primitive replace feature to find view 2023-05-28 11:50:10 +02:00
iTrooz
ea756e620e fix: Explicitely convert std::fs::path to std::string (#1116)
This should fix the current crash when opening a project on Windows
2023-05-28 11:36:08 +02:00
iTrooz
e599d31625 fix: Properly Check if crash.json has valid json, remove it otherwise (#1117) 2023-05-28 11:35:51 +02:00
iTrooz
0ba011dbe1 feat: Add a native error message when glfw window creation fails (#1104)
Draft because I want to test it again tomorrow with all OSes, first

---------

Co-authored-by: Nik <werwolv98@gmail.com>
2023-05-27 17:45:41 +02:00
iTrooz
e578127f67 feat: Save opened projects as recent entries (#1105)
This PR does two things :
- save opened projects as recent entries
- refactor stuff about recent entries in a separate file. The reason is
that I felt like welcome_screen.cpp was really big ( 685 lines before
this, 500 now). What do you think ?

---------

Co-authored-by: Nik <werwolv98@gmail.com>
2023-05-27 16:59:30 +02:00
WerWolv
acfd89aee0 patterns: Updated pattern language 2023-05-27 14:43:53 +02:00
paxcut
950760691c fix: 3D Visualizer calculating normals incorrectly (#1108) 2023-05-26 09:01:16 +02:00
WerWolv
ba33629e80 patterns: Updated pattern language 2023-05-25 12:03:11 +02:00
iTrooz
d671cde6d2 impr: Ensure program exits when set_terminate() lambda is called (#1101)
Draft for now because I am waiting for feedback from Jay
2023-05-25 09:30:25 +02:00
iTrooz
ee94870e83 fix: Do not loop over 'END' ImHexPath (#1098)
Really small issue, in Help->About->Imhex directories, there would be an
extra entry at the end because you seemed to loop over the
fs::ImHexPath::END entry
2023-05-25 09:27:10 +02:00
iTrooz
d2638c4f27 feat: Display titlebar buttons when not running borderless (#1099)
Tested on Linux (non-borderless) and Windows (borderless)

You may want to also test it just to be sure
2023-05-25 09:26:40 +02:00
iTrooz
7d457998d7 fix: Explicitly convert path to string for crash file (#1102) 2023-05-25 09:25:40 +02:00
iTrooz
79306fa6e1 impr: Show which commit was used to compile ImHex on CLI (#1103) 2023-05-25 09:25:22 +02:00
WerWolv
320973c5ff fix: Crash when sorting Value column 2023-05-24 21:05:14 +02:00
WerWolv
26eac61ddf feat: Allow themes to set the background blur color 2023-05-24 21:05:14 +02:00
WerWolv
cb9a3b1f55 fix: Invalid key code error spam 2023-05-24 21:05:14 +02:00
Nik
5bbf4342ee git: Added plugins list 2023-05-23 15:08:14 +02:00
WerWolv
0e3da22c76 feat: Added support for changing the page size 2023-05-23 11:34:30 +02:00
Jonathan Wright
28778eaf8c build: Remove fedora 36 builds (#1097)
Fedora 36 is EOL.

Build roots for it were taken offline this morning so builds against it
will fail now.
2023-05-22 17:49:49 +02:00
WerWolv
e32fc639c2 fix: Turning off blur again not working 2023-05-22 13:25:11 +02:00
iTrooz
7ce0613977 impr: Added better crash backup and restore mechanism (#1094)
- Add a new file 'crash.json' to store metadata about the crash, like
the log file or project opened
- show the log file of the session that caused the crash to the user
- Correctly restore the project path
2023-05-22 13:24:48 +02:00
iTrooz
91635346be feat: Allow to remove recent providers with right click (#1085)
![image](https://github.com/WerWolv/ImHex/assets/42669835/648d2c8f-6518-4989-bc92-808898cb0f87)
2023-05-22 13:22:18 +02:00
iTrooz
bfe698f883 build: Do not install _schema.json files (#1095) 2023-05-22 13:20:55 +02:00
WerWolv
f81276f7e3 feat: Added support for transparent and blurry window styles 2023-05-22 12:00:35 +02:00
WerWolv
6b28828174 fix: Prevent horizontal scroll on welcome screen 2023-05-22 10:37:30 +02:00
WerWolv
2191eb14ae impr: Cleanup hashes view a bit 2023-05-22 09:58:56 +02:00
WerWolv
e7b51a56a5 feat: Added support for automatically loading patterns using binary pattern magic 2023-05-22 00:01:58 +02:00
WerWolv
df75218ecb fix: Ranges found by find view not being highlighted 2023-05-22 00:00:50 +02:00
WerWolv
f57d4f2f7a impr: Manually sort file chooser popup list 2023-05-21 18:41:43 +02:00
WerWolv
a2333fa22e patterns: Updated pattern language 2023-05-21 18:02:39 +02:00
WerWolv
2179c3c014 fix: View shortcuts acting like global shortcuts 2023-05-21 18:02:29 +02:00
WerWolv
0563a59b1b impr: Reset back all signals when a fatal error occurred 2023-05-21 17:33:33 +02:00
WerWolv
446e0751a6 fix: Force entropy and type distribution graphs to always span the entire plot 2023-05-21 13:46:14 +02:00
iTrooz
5666a5c5fb feat: Added context menu with right-clicking on file provider (#1084)
Co-authored-by: Nik <werwolv98@gmail.com>
2023-05-21 13:21:53 +02:00
WerWolv
047c39e2c7 build: Checkout repo properly in release CI 2023-05-21 11:12:53 +02:00
WerWolv
dc8245ce4c build: Bumped version to 1.29.0 2023-05-21 10:44:41 +02:00
WerWolv
1b88b3704d feat: Allow layouts to be deleted again 2023-05-21 10:43:35 +02:00
WerWolv
6dbaac4283 impr: Make sure hex editor popups have their input focused 2023-05-21 10:35:14 +02:00
WerWolv
180a27fdc9 fix: Local keybindings not working correctly 2023-05-21 10:28:55 +02:00
WerWolv
c02465b892 fix: Byte type and Entropy graph being shifted 2023-05-21 10:23:33 +02:00
WerWolv
f503a89f98 fix: Typo in IEEE754 tool 2023-05-20 21:49:45 +02:00
WerWolv
f94e5488d4 fix: Mouse cursor not adjusting anymore properly 2023-05-20 21:36:15 +02:00
WerWolv
87621e9337 impr: Disable some Import... options when the provider isn't writable 2023-05-20 21:23:15 +02:00
WerWolv
3219ba68de impr: Better layout of ImHex subtitle on welcome screen 2023-05-20 21:20:32 +02:00
WerWolv
5d608603cb fix: Selection in diff view being retained 2023-05-20 21:13:40 +02:00
WerWolv
7336c8dddc fix: Cursor types on Windows sometimes getting stuck 2023-05-20 21:10:12 +02:00
WerWolv
c91e3875d4 build: Updated libwolv 2023-05-20 19:27:00 +02:00
WerWolv
0181325b64 build: Updated libwolv 2023-05-20 18:10:26 +02:00
WerWolv
11f55a7561 fix: File handles not being closed correctly 2023-05-20 18:07:15 +02:00
WerWolv
9bb3a92e12 build: Updated libwolv 2023-05-20 15:47:21 +02:00
KOLANICH
3e9ba8c636 build: Add EOLs to the end of all "own" CMakeLists.txt files (#1093)
Text editors on Unix-like OSes add them automatically and it is usually
considered to be a good practice.
2023-05-20 13:38:24 +02:00
KOLANICH
4faebf435c impr: Remove an unused std::mutex in TaskManager::runner (#1088) 2023-05-20 13:38:12 +02:00
KOLANICH
749823e044 build: Move -s additional compiler flags into linker flags, and enable it only when gcc/clang are used. (#1087)
Compiler when compiling doesn't use them in those cases and emit a
warning, which is turned into an error by `-Werror`. Unfortunately,
CPack doesn't expose the logic it uses for stripping binaries.
2023-05-20 13:37:57 +02:00
KOLANICH
608c9e2e7a fix: WASM disassembler not being available in Capstone < 5 (#1086)
This fixes build on Debian with Capstone from packages.
2023-05-20 13:37:45 +02:00
WerWolv
96ee544538 build: Updated libwolv 2023-05-20 13:31:41 +02:00
WerWolv
7ea7c531e2 fix: Logs not being written to disk on Windows 2023-05-20 13:10:35 +02:00
WerWolv
969a37877a fix: Crash on exit 2023-05-20 13:10:24 +02:00
WerWolv
3cb8e37182 fix: Broken file open logic
Closes #1090
2023-05-20 11:52:24 +02:00
paxcut
3e4c4430d5 feat: Greatly improved the IEEE754 tool (#1047)
I just realized one feature request existed about this tool and have
added a comment to it referring this pr. Errors and additions are
described in the fork commit already. I'm not sure if I should repeat
them here again. I have tested the changes thoroughly, but it is always
possible some fringe case was not tested and is incorrect. The tests
were done using the many similar online calculators for IEEE 754
floating point formats.
IEEE 745 floating point tool redesign modeled after 'float toy' web app
(http://evanw.github.io/float-toy/)

Streamlined output using colors and compact layout which can be further
simplified.
Chosen display mode (detailed or simplified) is automatically saved and
set on new sessions.
Edit the binary bits, the integer hexadecimal or the floating point
decimal values and the entire app will update with the change.
Supports the main IEEE745 standard formats (half, single and double
precision) together with custom formats of size <= 64 bits.
Each format choice uses and displays the number of significant decimal
digits defined by the mantissa size.
Added labels to identify the location of each bit box inside the binary
representation.
Satisfies round trip / idempotent (reproducing) conversion property
Added theme colors, radio buttons for display mode and a clear button
that resets the tool.
Removed previously and incorrectly added locale translation to various
labels and languages
Attempted to adhere to code style formatting using existing code as
example.
An effort was made to use preferred variable types and functions from
std namespace when appropriate.
Attempted to document code using comments. 

Not implemented / left to complete at an later time

Arbitrary width and precision formats. 
Extended precision formats.
Shortest string property.
hexadecimal floating point display and conversions.
2023-05-19 21:18:38 +02:00
WerWolv
4ad66365d0 fix: Crash when saving patches
Fixes #1077
2023-05-19 20:01:42 +02:00
WerWolv
39276e123e patterns: Allow bitfield values to be edited 2023-05-19 19:56:55 +02:00
WerWolv
0f9434740f fix: Crash when deleting last environment variable in pattern editor 2023-05-19 17:15:37 +02:00
WerWolv
7ed153a47b patterns: Updated pattern language 2023-05-19 16:14:54 +02:00
WerWolv
c9d673ce40 patterns: Updated pattern language 2023-05-19 15:29:18 +02:00
WerWolv
0be610f1cd patterns: Updated pattern language 2023-05-18 23:20:10 +02:00
WerWolv
f75aa1f1b0 git: Fixed color of docs shield 2023-05-18 11:46:51 +02:00
Justus Garbe
5ef58cdf76 feat: Added bit and byte reverse and bit display data processor nodes (#1082)
#1081
2023-05-18 10:25:59 +02:00
WerWolv
511375feb5 patterns: Updated pattern language 2023-05-18 09:51:24 +02:00
WerWolv
8119929ece fix: Don't wait for services on exit 2023-05-16 14:59:14 +02:00
iTrooz
e1620966e5 feat: Keep only 10 latest logs on exit (#1079)
Co-authored-by: Nik <werwolv98@gmail.com>
2023-05-16 14:45:24 +02:00
WerWolv
a5b0a8614a impr: Automatically re-evaluate pattern when changing provider and code sync is on
Closes #1078
2023-05-16 14:45:04 +02:00
WerWolv
e28f2dfea1 fix: Only 5 patterns per byte being highlighted
Fixes #1076
2023-05-16 14:41:02 +02:00
WerWolv
0dcfeaefb3 fix: Build when git commit hash or branch is not available 2023-05-16 12:02:17 +02:00
WerWolv
3bd4a3ba8b impr: Better JSON error handling in many places 2023-05-16 11:33:00 +02:00
WerWolv
7e9b23de7d impr: Improve network interface error handling 2023-05-16 11:20:46 +02:00
WerWolv
a758676b0d fix: Change network interface port to 31337 2023-05-16 11:01:59 +02:00
WerWolv
636ed0095d feat: Added new imhex/capabilities network interface 2023-05-16 11:01:40 +02:00
WerWolv
14341d611d impr: Handle macOS Open with... correctly 2023-05-15 18:07:49 +02:00
WerWolv
07565eea63 build: Updated libwolv 2023-05-15 18:07:35 +02:00
WerWolv
c006062540 feat: Added basic network interface support 2023-05-15 11:30:24 +02:00
WerWolv
e685d65be8 fix: Scrolling not working correctly on welcome screen
Fixes #1071
2023-05-15 08:33:35 +02:00
WerWolv
ab67e274b2 fix: Hex editor editing value not updating correctly 2023-05-15 08:17:16 +02:00
WerWolv
7656fd7a4e patterns: Updated pattern language 2023-05-15 08:17:02 +02:00
WerWolv
60a2b30e91 fix: Another wrong include on macOS 2023-05-14 22:53:52 +02:00
WerWolv
7ec7e562d1 fix: Wrong editing values in hex editor in some circumstances 2023-05-14 22:52:47 +02:00
WerWolv
c50d52d0a6 fix: Crash when reading from modified bytes 2023-05-14 22:46:19 +02:00
WerWolv
2b765617ce impr: Disallow saving pattern files if they're empty 2023-05-14 22:24:16 +02:00
WerWolv
79cdf51588 fix: Wrong include on macOS 2023-05-14 22:23:05 +02:00
WerWolv
7b048d9b96 fix: Compile on macOS _again_ 2023-05-14 22:03:04 +02:00
WerWolv
d96fc6d41b fix: Compilation on macOS 2023-05-14 21:50:58 +02:00
WerWolv
610f109e2a fix: Crash when too many entries are being logged at once 2023-05-14 21:39:18 +02:00
WerWolv
609afebc55 fix: Updated build script 2023-05-14 20:20:40 +02:00
WerWolv
3bd9ab6349 fix: Hopefully open files now on macOS 2023-05-14 20:20:22 +02:00
WerWolv
5027f36d95 fix: Open with crashing on macOS
#1070
2023-05-14 18:35:35 +02:00
WerWolv
a5498995ff impr: Hopefully allow macOS to open any file type
#1070
2023-05-14 09:58:15 +02:00
WerWolv
f40b5d9811 fix: Search button in numeric find option being active by default 2023-05-13 17:51:16 +02:00
WerWolv
d00fae03a9 fix: Diff table not being cleared when closing providers 2023-05-13 17:50:33 +02:00
WerWolv
3c4e1b2f27 impr: Various cleanup 2023-05-13 17:50:16 +02:00
WerWolv
6e5d6810e7 build: Disable assertions in release builds 2023-05-13 17:49:53 +02:00
WerWolv
4afd5a7905 patterns: Updated pattern language
#1069
2023-05-13 17:21:44 +02:00
WerWolv
6709baa710 patterns: Updated pattern language 2023-05-13 15:43:37 +02:00
WerWolv
aa1bf0b764 impr: Make about page resizable 2023-05-13 12:26:13 +02:00
WerWolv
a7327290ea fix: Only save custom encoding to project file when necessary 2023-05-13 11:17:27 +02:00
WerWolv
857e90a37b fix: ImHex freezing when evaluating patterns 2023-05-13 11:12:38 +02:00
WerWolv
aaeebd3fe9 fix: Various pattern execution race conditions 2023-05-12 15:46:13 +02:00
WerWolv
0a7a190b04 impr: Added tooltips to pattern data view when name or value is too long 2023-05-12 08:49:08 +02:00
WerWolv
21d922113d impr: Make sure to clear selections when all providers are deleted 2023-05-12 08:38:52 +02:00
WerWolv
b0876e1c35 impr: Move some options into a new Extras menu 2023-05-12 08:38:32 +02:00
WerWolv
18bc5de169 fix: Copy-as options not being disabled correctly 2023-05-12 08:38:07 +02:00
WerWolv
0321743f1e fix: Missing save layout localization keys 2023-05-12 08:37:43 +02:00
WerWolv
f2af90fe06 fix: Help hover icon issues 2023-05-11 23:56:51 +02:00
WerWolv
2f511ec4fa impr: Improve frame cap handling 2023-05-11 23:22:06 +02:00
WerWolv
0649e0dcd3 impr: Clean up old layout stuff 2023-05-11 23:21:52 +02:00
WerWolv
0b21e30e44 fix: White border around maximized window on WIndows 2023-05-11 20:49:07 +02:00
WerWolv
ceeaca1a4b feat: Added layout manager to save and restore custom layouts 2023-05-11 18:44:50 +02:00
WerWolv
2da89f4b9b fix: Position of restore layout button being wrong with different scalings 2023-05-11 18:44:33 +02:00
WerWolv
49371398bc fix: Resizing on windows still being janky 2023-05-11 18:43:19 +02:00
iTrooz
2e73d74cea impr: Open .hexproj files as projects when opened though the Open File option (#1061) 2023-05-11 12:38:22 +02:00
WerWolv
688471fd61 build: Updated libfmt to 10.0 2023-05-11 12:06:58 +02:00
WerWolv
ea482ff0f5 fix: Crash when closing providers too quickly 2023-05-11 12:01:06 +02:00
WerWolv
5c9d0e29c2 fix: Left/Right resizing not working correctly on Windows 2023-05-11 12:00:56 +02:00
WerWolv
8f07f0f8ae impr: Better look and feel of the welcome screen close button 2023-05-11 12:00:45 +02:00
WerWolv
4f17a96707 build: Updated libwolv 2023-05-11 10:04:09 +02:00
iTrooz
b0ab8698ec fix: Loading data processor nodes from project thowing errors (#1065)
This will correct the errors `cannot use operator[] with a string
argument with string[..]` when loading a project
2023-05-11 09:57:29 +02:00
WerWolv
ab41899cc2 build: Updated libwolv 2023-05-11 09:54:06 +02:00
WerWolv
50c3cf8272 build: Replace old interval tree in favour of custom libwolv one 2023-05-11 09:27:23 +02:00
WerWolv
1d2b8ac1f3 fix: Closing popups using Esc causing them to re-appear 2023-05-10 22:29:17 +02:00
WerWolv
0b29719fe9 patterns: Updated pattern language 2023-05-10 19:15:01 +02:00
WerWolv
5a6e5d2255 build: Switch to better interval tree implementation 2023-05-07 23:27:43 +02:00
WerWolv
82111617a4 patterns: Updated pattern language 2023-05-06 10:09:33 +02:00
WerWolv
0574387ee1 fix: Properly use absolute paths when compiling magic files 2023-05-06 10:09:23 +02:00
WerWolv
2d1381860d fix: Corrected build issues with GCC 13 2023-05-06 10:07:22 +02:00
classabbyamp
82f5900759 build: Added option to disable update checking (#1036)
This is aimed at use by linux distros, where package updates come from a
central location, and users shouldn't need to worry about updating ImHex
on their own. This disables parts of the ImHex UI that would not be
useful in that case.

Tested and confirmed that this works in both states of the of the
`-DIMHEX_DISABLE_UPDATE_CHECK` switch.
2023-05-05 22:03:45 +02:00
iTrooz
e44eb2aa8e impr: Added more documentation to libimhex (#1052)
This PR adds some documentation. It's actually pretty random, I followed
the function calls I was curious about and commented whenever I wasn't
sure/I thought it needed clarification

You might want to make sure to squash them, because the commits are kind
of a mess, I didn't went through the effort of interactive rebase
2023-05-05 22:02:18 +02:00
iTrooz
34e12e2515 feat: Added a button to restore default layout when there are no views open (#1053)
Co-authored-by: Nik <werwolv98@gmail.com>
2023-05-05 22:00:17 +02:00
iTrooz
980e4cad06 fix: Handle errors in Tar::readVector() (#1059) 2023-05-05 21:57:37 +02:00
WerWolv
5680b90549 fix: Project files failing to save when no custom encoding is loaded 2023-05-04 23:23:44 +02:00
WerWolv
bec655a8c6 impr: Added event logging in debug mode 2023-05-02 20:35:30 +02:00
WerWolv
0c8b3e31e7 fix: Dangerous function call popup not showing up 2023-05-02 20:34:37 +02:00
WerWolv
a33c7135d1 fix: Crash when closing some popups 2023-05-01 14:15:00 +02:00
iTrooz
13a3942f8f impr: Show an error message when ImHex can't open a file (#1050)
This PR does two correlated things:

- Show a generic error message (Failed to open provider) rather than a
file-specific message (Failed to open file) when a provider fails to
open
- Set the error to something more specific when opening a file fails
2023-04-30 18:37:22 +02:00
WerWolv
1bdc1d7241 build: Added CMakePresets.json file to make configuring/building easier 2023-04-30 11:53:51 +02:00
iTrooz
fe9026b68d build: Update my (iTrooz) email in PKGBUILD (#1049) 2023-04-28 18:01:30 +02:00
XorTroll
b0028b0e51 lang: Added Spanish translations (#1042)
This translates ImHex for the Spanish language

(made a new PR since I got a bit messed up on the other one, this was
faster to fix)
2023-04-21 17:44:36 +02:00
WerWolv
f54617e92f patterns: Updated pattern language 2023-04-21 11:02:12 +02:00
WerWolv
306690762c impr: Drastically improve file read speeds 2023-04-21 10:52:10 +02:00
WerWolv
58a0fe8109 patterns: Updated pattern language 2023-04-20 14:32:45 +02:00
WerWolv
1e39f4354f fix: Provider reader being broken 2023-04-20 13:46:44 +02:00
WerWolv
e1b12546da build: Updated dependencies 2023-04-20 10:48:17 +02:00
WerWolv
1b28bf1474 patterns: Updated pattern language
Fixes #1037
2023-04-20 10:41:27 +02:00
WerWolv
8245f3d4c9 build: Updated libwolv 2023-04-19 21:56:34 +02:00
Nik
5fc8e710a5 git: Added vulnearability report info file 2023-04-18 16:15:48 +02:00
Nik
b8636a8589 git: Added Code of Conduct 2023-04-18 16:11:41 +02:00
WerWolv
bb8b4afb85 patterns: Updated pattern language 2023-04-18 10:32:38 +02:00
WerWolv
d5b1ef7875 patterns: Updated pattern language 2023-04-18 10:17:37 +02:00
WerWolv
6c122e5fbe patterns: Updated to new API 2023-04-18 10:06:47 +02:00
WerWolv
7ae814f7fb fix: Various localization issues 2023-04-17 22:18:50 +02:00
WerWolv
bdc51dd8a5 patterns: Updated pattern language 2023-04-17 17:06:52 +02:00
WerWolv
04a5efc7a3 fix: Crash when evaluating patterns to quickly 2023-04-17 17:02:10 +02:00
WerWolv
99a736df27 impr: Replace horrible pattern extra data class with a more modular system 2023-04-17 16:18:48 +02:00
WerWolv
535aeb5e39 impr: Give access to a console in clion in debug mode 2023-04-17 16:06:06 +02:00
WerWolv
07bef10092 patterns: Updated pattern language 2023-04-17 09:22:21 +02:00
WerWolv
c32515bc44 impr: Clean up some more clang-tidy issues 2023-04-16 22:12:35 +02:00
WerWolv
1690cd2740 fix: Various issues with the new popup system 2023-04-16 21:34:29 +02:00
WerWolv
52925c99e8 impr: Default to monitor synchronized FPS limit 2023-04-13 17:12:40 +02:00
WerWolv
1367e9cebe build: Fixed Objective-C compiler flags 2023-04-13 17:07:34 +02:00
WerWolv
3e87022da1 fix: Provider undo stack not being handled correctly 2023-04-13 16:12:00 +02:00
WerWolv
143fe36d35 build: Fixed various build warnings 2023-04-13 16:11:39 +02:00
WerWolv
18d5fd5d3e fix: Commit link in about page not working correctly 2023-04-13 16:10:55 +02:00
WerWolv
2829bf2640 fix: New lines appearing in pattern editor when switching provider 2023-04-13 15:03:50 +02:00
WerWolv
ffafb05d3d fix: Providers with the same name not being selectable in diff view
Fixes #1034
2023-04-13 15:03:14 +02:00
WerWolv
cf72b5ec5c fix: Some shortcuts triggering twice 2023-04-12 19:50:03 +02:00
WerWolv
803b99f2a9 impr: Immensely improve provider read speeds 2023-04-12 19:21:48 +02:00
WerWolv
86b49f34d9 patterns: Updated pattern language
Fixes #1031
2023-04-12 17:18:46 +02:00
WerWolv
7e144b136b patterns: Updated pattern language
Fixes #1030
2023-04-12 16:03:58 +02:00
WerWolv
aa7c5422c0 fix: Make sure provider data is properly cleared when deleting provider 2023-04-11 15:26:18 +02:00
WerWolv
5512585cc5 fix: Make sure docs question request is always properly formatted 2023-04-10 23:05:44 +02:00
WerWolv
013eaae715 fix: Disable multi window support on Linux by default as it causes issues
Fixes #1026
2023-04-10 22:51:21 +02:00
WerWolv
349b5da810 fix: Prevent constants view from growing past the size of the screen
Fixes #1025
2023-04-10 21:30:27 +02:00
WerWolv
e7494be5e7 fix: Last line of patterns going missing in projects with multiple files
Fixes #1012
2023-04-10 16:50:23 +02:00
WerWolv
320629931c fix: Yet another popup centering issue 2023-04-10 14:10:35 +02:00
WerWolv
87d0aae608 feat: Added selection range radio button to various views
Closes #1024
2023-04-10 14:08:21 +02:00
WerWolv
391c8acfe4 impr: Added path tooltips to accept pattern popup 2023-04-10 01:46:55 +02:00
WerWolv
dc77d81e1b feat: Added documentation helper AI 2023-04-10 01:42:53 +02:00
WerWolv
00c9a92977 fix: Localization being broken in the content store 2023-04-10 01:42:28 +02:00
WerWolv
af4dd9f5b0 fix: Popup positioning being wrong 2023-04-09 23:24:48 +02:00
WerWolv
09f1b56964 fix: Popups not being centered correctly 2023-04-09 15:28:48 +02:00
WerWolv
f9a08f5c11 feat: Allow custom alignment to be used in binary sequence search 2023-04-09 15:28:31 +02:00
WerWolv
e79664256a patterns: Updated pattern language 2023-04-09 12:26:13 +02:00
WerWolv
70f3014390 fix: Some more popup rendering issues 2023-04-08 23:34:46 +02:00
WerWolv
b4d0f984a4 build: Updated libwolv 2023-04-08 21:13:19 +02:00
WerWolv
d4ad457af1 fix: Crash when closing provider that was used in view provider 2023-04-08 21:07:57 +02:00
WerWolv
cb5d197700 impr: Added tooltips to icon buttons in bookmarks view 2023-04-08 21:07:41 +02:00
WerWolv
78e66f8959 feat: Added non-ranged and aligned search to sequence and value finder 2023-04-08 20:59:33 +02:00
WerWolv
f562260e42 fix: Build error again 2023-04-08 12:30:38 +02:00
WerWolv
21f38974a8 impr: Use smart pointers to allocate Views 2023-04-08 12:08:45 +02:00
WerWolv
dfca7e923c feat: Make pins in data processor nodes more visible 2023-04-08 11:58:49 +02:00
WerWolv
6913598de4 fix: Build error 2023-04-08 11:58:12 +02:00
WerWolv
ac858b37ed fix: Main Menu items not being clickable at the outer most pixel
Closes #1020
2023-04-08 11:37:42 +02:00
WerWolv
80edaea392 impr: Update all of ImHex to the new popup system 2023-04-08 00:58:53 +02:00
WerWolv
9c9ac23818 feat: Added a much more flexible popup system 2023-04-07 10:21:27 +02:00
WerWolv
51e615095e fix: Make sure placing a type through the Edit menu re-evaluates the pattern 2023-04-06 23:01:45 +02:00
WerWolv
d92e7d19cc fix: Submenu items ignoring enabled flag 2023-04-06 22:33:02 +02:00
WerWolv
248b93f41a patterns: Updated pattern language 2023-04-06 19:23:16 +02:00
WerWolv
c73f33aac2 impr: Added various new events 2023-04-06 17:36:28 +02:00
WerWolv
7c18ad49ae impr: Allow windows that overlap the main window title bar to be movable 2023-04-06 14:58:05 +02:00
WerWolv
5f713882d4 fix: Occasional crash when loading project files 2023-04-06 12:44:25 +02:00
WerWolv
1698f1599b impr: Allow file chooser to open files using double click 2023-04-05 18:33:05 +02:00
WerWolv
24e584c77b fix: Crash when trying to place pattern language variable through the Edit menu
Fixes #1013
2023-04-05 18:29:30 +02:00
WerWolv
a5568d09d8 patterns: Updated pattern language
Fixes #1011
2023-04-05 18:03:30 +02:00
WerWolv
7a4f909c68 fix: Disassembler arch names not correctly corresponding to their ids
Fixes #1010
2023-04-05 18:02:47 +02:00
WerWolv
89aee456c6 patterns: Updated pattern language
Fixes #1011
2023-04-05 07:26:44 +02:00
WerWolv
4cf92103d8 fix: Names of disassembler architectures not corresponding to their actual type
Fixes #1010
2023-04-05 07:20:06 +02:00
WerWolv
e3b1ebb826 patterns: Updated pattern language 2023-04-04 23:42:39 +02:00
WerWolv
3658d8d96e fix: Disassembler not supporting any Capstone 5 features anymore
Fixes #1010
2023-04-04 23:08:10 +02:00
WerWolv
6c047f01f9 git: Fixed release CI not reading version correctly 2023-04-04 21:59:43 +02:00
WerWolv
fc105ecc3d build: Bumped version to 1.28.0 2023-04-04 12:04:22 +02:00
WerWolv
649f6c28bf patterns: Updated pattern language 2023-04-04 11:20:09 +02:00
WerWolv
867972b7f5 patterns: Updated pattern language 2023-04-04 10:23:01 +02:00
WerWolv
efe3227ef2 patterns: Updated pattern language 2023-04-04 09:34:50 +02:00
H1X4
aab8c88a96 feat: allow loading and saving pattern code via events (#1004)
Currently there is no way to save the pattern code progamically from a
plugin unless the builtin plugin is modified to add those events. This
pull request will be adding ability to load and save pattern code from
specified file.
2023-04-01 11:18:52 +02:00
Thomas
af18ca011b fix: Modified bytes visually reverting back after saving (#1003)
Fix #988

Co-authored-by: Nik <werwolv98@gmail.com>
2023-04-01 11:18:03 +02:00
Thomas
24106b860a impr: Added some documentation to providers (#1001) 2023-04-01 11:17:19 +02:00
WerWolv
60efb6973b fix: Filtering of long strings in find view not working correctly 2023-04-01 11:04:07 +02:00
WerWolv
cffd55bdda fix: UTF-16BE search being broken 2023-03-31 22:20:00 +02:00
WerWolv
88e767aaaf fix: Crash when loading big encoding files 2023-03-31 19:56:20 +02:00
WerWolv
d6cda43618 fix: Modified bytes visually reverting back after saving 2023-03-31 19:18:31 +02:00
WerWolv
3b229cd5cb impr: Added path tooltips to entries in the file chooser popup 2023-03-31 19:17:27 +02:00
WerWolv
72c4dbdb2f patterns: Updated pattern language 2023-03-31 13:49:59 +02:00
WerWolv
4da18d3630 fix: Custom encoding and text padding setting not applying to custom encoding column
Actually fixes #1005
2023-03-31 13:49:33 +02:00
WerWolv
2f04cfd5c6 fix: Entering decimal and float values in hex editor cells being broken 2023-03-31 11:34:08 +02:00
WerWolv
8195db6d4c fix: Prevent occasional crash when having ImHex open and connecting to the computer over RDP 2023-03-31 11:08:53 +02:00
WerWolv
722f6315c4 impr: Make sure shortcuts can't be used when popups are open 2023-03-31 11:07:53 +02:00
WerWolv
173ed5475c fix: Remove empty column when ASCII row is off and custom encoding is on
Fixes #1005
2023-03-31 11:07:32 +02:00
WerWolv
1460044e91 impr: Save custom encoding file to project
Fixes #1005
2023-03-31 11:06:51 +02:00
WerWolv
06a7b6e446 patterns: Fixed namespace of hex::prv:: functions 2023-03-28 10:27:49 +02:00
WerWolv
28b7b4b7f1 fix: File -> Open Others... menu not working correctly 2023-03-28 10:13:41 +02:00
WerWolv
8930adf532 patterns: Updated pattern language 2023-03-28 09:29:49 +02:00
WerWolv
f44b8a5618 patterns: Updated pattern language 2023-03-27 22:40:19 +02:00
WerWolv
6a9f79628e impr: Don't try to apply patches if there are none 2023-03-26 12:48:22 +02:00
Jonathan Wright
245c56ba8a build: Added Fedora 38 build (#928)
Co-authored-by: Thomas <hey@itrooz.fr>
2023-03-26 11:37:46 +02:00
WerWolv
98846421f6 build: Update dependencies 2023-03-26 11:23:32 +02:00
WerWolv
0aaeeffff7 build: Fixed capitalization of ImHex in MSI installer 2023-03-26 11:22:50 +02:00
Thomas
c2823facc2 lang: Fix weblate (#997)
This should (hopefully) fix weblate. I tried to fix merge conflicts
using instructions at
https://weblate.werwolv.net/projects/imhex/windows-plugin/#alerts

---------

Co-authored-by: xtex <xtexchooser@duck.com>
2023-03-26 11:03:30 +02:00
Thomas
fabb1596e5 impr: Handle and show NFD errors (#995)
This PR handles errors that NFD might encounter (both in Init() and the
other method to open the dialog), and log them in the logs and in the
GUI

This (among other) fix the crash I had running ImHex as root and opening
a file
2023-03-26 11:02:51 +02:00
Thomas
725e32250b fix: Move config files to XDG_CONFIG_HOME (#993)
This pull request changes Config Directories on Linux to only include
the XDG_CONFIG_HOME directory, as opposed to all directories in
XDG_DATA_DIRS before (introduced in
https://github.com/WerWolv/ImHex/pull/644/files#diff-c1a4d2b63fed168a9a3568944e9cadeae096f2ddcec3649e4a9b2d29fd104be0L162-L166).

Reasons:
- This changes the location of the config file to the standard directory
meant for configurations
- This prevents the config file from being read/written in system
locations, like /usr/share

This PR also includes a migration task that will run on Linux and move
config/GUI dimensions to the new directory

as a bonus, as discussed on discord, it writes the logs to a Data
directory instead of a Config directory
2023-03-26 11:02:23 +02:00
Zaggy1024
5fa264ea18 patterns: Update pattern_language and implement support for new bitfield features (#992)
This requires https://github.com/WerWolv/PatternLanguage/pull/34 to be
merged first, and then this can be amended to update the submodule and
merged to add support for the new features.
2023-03-26 11:01:37 +02:00
WerWolv
5e175b118d build: Updated libwolv 2023-03-25 11:24:24 +01:00
WerWolv
635173e55a impr: Make sure themes are added correctly when downloaded from the store 2023-03-23 20:35:16 +01:00
WerWolv
eb2ed6852c build: Make SSL work when using system curl on WIndows 2023-03-23 20:12:33 +01:00
WerWolv
2296766746 build: Allow building with capstone 4.X again 2023-03-23 16:45:00 +01:00
WerWolv
13be499510 build: Pull in latest version of libyara and libcurl 2023-03-23 16:30:55 +01:00
WerWolv
fec5c567e1 ui: Improve look and feel of content store 2023-03-23 13:32:47 +01:00
WerWolv
8ef863cae1 fix: Progress not working with with new http wrapper 2023-03-23 13:32:35 +01:00
WerWolv
9463105172 fix: Header memory leak in http requests class 2023-03-23 12:08:33 +01:00
WerWolv
bb4819bce4 sys: Fixed http request stack overflow 2023-03-23 11:43:07 +01:00
WerWolv
15be24db62 sys: Updated to use the new HttpRequest helper instead of Net 2023-03-23 11:23:07 +01:00
WerWolv
e7e2af9f91 patterns: Updated pattern language 2023-03-23 09:41:32 +01:00
WerWolv
8c5fd021f7 api: Hook up new http wrapper to the rest of ImHex 2023-03-22 23:05:18 +01:00
WerWolv
1a1ba19770 api: Added new, more flexible curl http wrapper 2023-03-22 21:48:14 +01:00
WerWolv
f95214d8fe patterns: Updated pattern language 2023-03-22 17:43:45 +01:00
WerWolv
631cfce2f8 impr: Added tooltip informing about font size if no custom font was selected 2023-03-22 16:30:49 +01:00
WerWolv
45649264f9 patterns: Updated pattern language 2023-03-22 13:12:57 +01:00
WerWolv
0fd3cb0c4a fix: Don't jump to previous editing position when selecting new region in hex editor
Potenially fixes issues mentioned in #924
2023-03-22 13:11:09 +01:00
Jacob Creedon
3cfec69020 feat: Added additional CRC hash types (#991)
This adds some common CRC types.

---------

Signed-off-by: Jacob Creedon <jcreedon@gmail.com>
2023-03-22 10:53:57 +01:00
WerWolv
cec62d23b0 fix: Window resizing causing freezes in some cases 2023-03-21 22:39:35 +01:00
WerWolv
f3f0dda3d4 fix: Properly clear valid region when switching to a different provider 2023-03-21 16:11:40 +01:00
WerWolv
be16b66ac0 fix: Make sure files don't get truncated when using Save As on itself
Fixes #987
2023-03-21 15:42:10 +01:00
WerWolv
b9059aaa01 fix: Make find process in the find view more easily cancelable 2023-03-21 15:37:49 +01:00
WerWolv
57a62d0544 impr: Clean up entire API and added doc comments 2023-03-21 15:33:43 +01:00
WerWolv
d82f0e952f fix: Custom data inspector rows not being writable correctly 2023-03-21 13:16:22 +01:00
Thomas
8731b7582b impr: Display a more detailed errors when opening a raw disk provider failed (#970)
PR title is self explaining

I may modify other providers implementations to display a detailed error
message later

I'm not sure how to deal with other locales because the format changed.
Before, I had to add and comment the key in all locale files, now I'm
not so sure.
2023-03-21 10:33:00 +01:00
WerWolv
e6959dc572 patterns: Updated pattern language
Fixes #954
2023-03-21 10:31:13 +01:00
WerWolv
a36b4d65e3 build: Make sure commit hash and branch end up in nightly builds 2023-03-21 10:14:09 +01:00
WerWolv
060ff56f9d impr: Improve file reading performance if opening of files is slow 2023-03-21 09:47:42 +01:00
WerWolv
0a0c0c0d07 feat: Added bytes swapper tool 2023-03-20 22:25:27 +01:00
WerWolv
17c4e405a6 impr: Update the command palette for the modern ages 2023-03-20 17:05:26 +01:00
WerWolv
53afa6ea43 fix: Crash on exit 2023-03-20 15:18:48 +01:00
WerWolv
a182e8daf2 patterns: Updated pattern language
Fixes #983
2023-03-20 15:12:27 +01:00
WerWolv
a4dfaba03f fix: All menu item shortcuts being global 2023-03-20 15:12:12 +01:00
WerWolv
6e23560e80 feat: Added all menu items to command palette 2023-03-20 14:11:43 +01:00
WerWolv
39e8d557e8 sys: Completely revamped main menu item system 2023-03-20 13:11:43 +01:00
WerWolv
677c989664 feat: Allow custom data inspector rows to be edited 2023-03-20 08:30:34 +01:00
WerWolv
c9342d90fb fix: Prevent new line from appearing on every pl code save
Fixes #982
2023-03-20 08:29:00 +01:00
WerWolv
0693bb8d51 git: Fixed documentation shield style 2023-03-18 16:10:39 +01:00
WerWolv
5cd3c305d0 git: Added documentation link to readme 2023-03-18 16:09:45 +01:00
WerWolv
e00b59c393 fix: Properly discard reopened stderr 2023-03-18 11:47:42 +01:00
WerWolv
7c1e33dde6 sys: Prevent libraries from printing garbage to the console through stderr 2023-03-18 11:35:01 +01:00
WerWolv
367bd76046 ui: Mae sure all theme scaling values are scaled correctly 2023-03-18 10:52:50 +01:00
WerWolv
1a1bf98905 impr: Look for magic files recursively 2023-03-17 21:18:28 +01:00
WerWolv
4c1a24058c ui: Fixed various scaling inconsistencies on higher scaling factors 2023-03-17 19:58:08 +01:00
WerWolv
294e95caf8 fix: Store page not clearing nodes and themes section correctly 2023-03-17 17:55:39 +01:00
WerWolv
031884c327 patterns: Updated pattern language
Fixes #979
2023-03-17 17:28:17 +01:00
WerWolv
466dacaab4 ui: Improve the look and feel of the information view 2023-03-17 17:07:39 +01:00
WerWolv
1f8645fd43 fix: Occasional crash when multiple threads are reading data from a file provider 2023-03-17 11:43:50 +01:00
WerWolv
880568cc60 impr: Better find view result filter speeds 2023-03-17 11:32:08 +01:00
WerWolv
f10fb56042 impr: Drastically improve file reading performance 2023-03-17 11:31:50 +01:00
WerWolv
64be6d89ee fix: Moving cursor around using arrow keys behaving weirdly 2023-03-17 09:17:44 +01:00
WerWolv
5442c32a3f impr: Allow non-continuous provider values to be saved 2023-03-17 08:38:38 +01:00
WerWolv
4ee53701e6 impr: Allow Regex find strategy specify string type and minimum length 2023-03-17 08:16:13 +01:00
WerWolv
5097a223e3 impr: Added default saveAs implementation for all providers 2023-03-17 08:15:43 +01:00
WerWolv
7cdba75bef fix: Crash when not making a valid selection in provider load interfaces 2023-03-16 16:48:15 +01:00
WerWolv
0312027ca8 impr: Modernize look and feel of bookmarks 2023-03-16 14:40:26 +01:00
WerWolv
c726c96286 impr: Make comment field in bookmark tooltip more readable 2023-03-16 13:35:29 +01:00
WerWolv
5a2b2e0813 feat: Make yara match list sortable 2023-03-16 13:35:09 +01:00
WerWolv
4271b2e9fd fix: Yara view filtering out all but one match 2023-03-14 17:02:59 +01:00
WerWolv
13ef4c04d1 patterns: Updated pattern language
Closes #961
2023-03-14 14:41:32 +01:00
WerWolv
96c3bb1e38 feat: Limit recent files to 5 files, add option to disable saving them
Closes #950
2023-03-14 14:07:18 +01:00
WerWolv
a0b36925ed fix: Custom styles not being scaled correctly 2023-03-14 13:19:04 +01:00
WerWolv
daadc2ea71 impr: Attempt loading of full unicode plane from font if possible 2023-03-14 12:30:28 +01:00
WerWolv
ec2934b4b8 fix: Advancing to next row when editing bytes loading wrong value
Fixes #973
2023-03-14 10:24:25 +01:00
WerWolv
3a840c4ced impr: Properly display custom encoding characters that are split between lines 2023-03-14 09:35:43 +01:00
WerWolv
bd190d2b65 patterns: Updated pattern language 2023-03-13 11:36:11 +01:00
qux-bbb
9b05a36529 fix: Find view string filters filtering for some wrong characters (#972)
`\r` and `\n` need to be filtered.
2023-03-13 11:06:30 +01:00
WerWolv
d9a498e8ec build: Make sure libwolv is compiled with -fPIC 2023-03-13 10:39:34 +01:00
WerWolv
7d86b277a7 build: Updated curl and libyara 2023-03-13 10:24:56 +01:00
WerWolv
d463b3235e tests: Fixed building of tests 2023-03-13 10:24:48 +01:00
WerWolv
5a8433ede4 build: Updated libwolv 2023-03-13 09:31:24 +01:00
WerWolv
00a5fd2d7c sys: Fixed more build issues 2023-03-13 09:25:07 +01:00
WerWolv
55f9faea10 sys: Updated more code to libwolv 2023-03-13 08:58:08 +01:00
WerWolv
fb2e668589 sys: Moved more functions to libwolv 2023-03-12 18:43:05 +01:00
WerWolv
0dafb3d230 sys: Replaced many helper functions with libwolv 2023-03-12 18:27:33 +01:00
qux-bbb
e958934a22 fix: String search not including string at end of data (#963)
Before:  

![before](https://user-images.githubusercontent.com/18598419/222937056-fec74305-21a3-4bbf-a439-e8df7031bca9.png)

After:  

![after](https://user-images.githubusercontent.com/18598419/222937069-a04cb748-4266-4fbb-8182-727bb8858329.png)
2023-03-11 14:39:50 +01:00
Fenrisfulsur
069221757f feat: Added chunk based entropy analysis to information view (#933)
Issue: https://github.com/WerWolv/ImHex/issues/522

Implementation of chunk based entropy analysis in diagram.hpp available
from the data information view and in the pattern language.

---------

Co-authored-by: WerWolv <werwolv98@gmail.com>
2023-03-10 16:06:18 +01:00
WerWolv
505c1bc274 build: Fix Fedora build errors 2023-03-10 14:46:15 +01:00
qux-bbb
cdd5d33e89 feat: Make CTRL + N automatically create a memory provider (#966)
"CTRL + N" can open a mem_file directly.
2023-03-07 16:05:03 +01:00
WerWolv
f661f4d1d6 fix: GDB provider not working nicely anymore 2023-03-07 16:04:04 +01:00
Mimi1337
f435191585 fix: Dockerfile syntax error (#945) 2023-02-21 11:29:21 +01:00
WerWolv
00c2d7ea71 patterns: Updated pattern language 2023-02-20 11:35:33 +01:00
WerWolv
cddcc1e85d patterns: Updated pattern language 2023-02-19 10:49:57 +01:00
WerWolv
91928b45d8 fix: Try to fix build again 2023-02-19 10:25:39 +01:00
WerWolv
277c83e6d8 fix: Uninitialized value build issue 2023-02-19 09:18:17 +01:00
WerWolv
0017cd2e40 feat: Added binary hex cell visualizer
Closes #939
2023-02-18 22:20:02 +01:00
WerWolv
774803492c fix: Editing binary value in data inspector not working correctly
Fixes #941
2023-02-18 21:44:43 +01:00
WerWolv
83a9655772 patterns: Updated pattern language 2023-02-17 20:30:41 +01:00
WerWolv
58324b4539 build: Fixed linking against execinfo 2023-02-17 17:56:27 +01:00
WerWolv
09b7794d71 build: Added option to disable stack traces 2023-02-17 17:52:10 +01:00
WerWolv
9e3fe9beb1 patterns: Updated pattern language 2023-02-17 17:35:41 +01:00
WerWolv
ff525fe750 impr: Properly sort choose file dialog entries
Fixes #938
2023-02-17 14:59:19 +01:00
WerWolv
94977ad216 patterns: Updated pattern language 2023-02-17 14:55:56 +01:00
WerWolv
64e34e42b8 patterns: Fixed highlighting of custom sections 2023-02-17 14:53:15 +01:00
WerWolv
21dc65f42a impr: Added comments everywhere in main application 2023-02-17 12:03:53 +01:00
WerWolv
279e085887 impr: Don't create a new font texture for no reason 2023-02-17 12:03:00 +01:00
WerWolv
d84dfa2c42 feat: Allow custom CA Certs to be loaded
Fixes #907
2023-02-17 12:01:46 +01:00
WerWolv
bf8089dc7e impr: Don't memory map files, never keep a write handle open for long
Closes #592
2023-02-17 10:26:09 +01:00
WerWolv
e48761b5c0 fix: Plot lines being invisible 2023-02-17 10:02:43 +01:00
WerWolv
35437c0300 patterns: Added rotation and scale sliders to 3D visualizer 2023-02-16 23:24:24 +01:00
WerWolv
6cecc12d04 patterns: Updated pattern language 2023-02-16 22:20:03 +01:00
WerWolv
dec4231d49 impr: Make sure fonts don't get blurry on non-integer scalings 2023-02-16 20:53:58 +01:00
WerWolv
fb1d12ebf3 sys: Remove some problematic (and rarely used) scaling settings 2023-02-16 20:19:55 +01:00
WerWolv
b19276a3e9 patterns: Added match keyword to syntax highlighting 2023-02-16 19:10:08 +01:00
WerWolv
5ccbfc1ff8 feat: Allow themes and nodes to be downloaded from the content store 2023-02-16 18:55:21 +01:00
WerWolv
d3d6a8a838 patterns: Updated pattern language 2023-02-16 18:23:49 +01:00
WerWolv
ac83bbeb0e feat: Added a theme manager view to make it easier to make new themes 2023-02-16 18:06:40 +01:00
WerWolv
8cb76a26c1 fix: Font being scaled too big 2023-02-16 16:29:41 +01:00
WerWolv
20da22d59e sys: Make sure scrolling counts as an input event 2023-02-16 08:53:23 +01:00
WerWolv
d9fa4b452c impr: Clean up diff view 2023-02-16 08:53:05 +01:00
WerWolv
6216d72aa6 fix: Format string compile issues 2023-02-15 22:22:13 +01:00
WerWolv
851f132188 impr: Make Text Editor word selector also consider underlines 2023-02-15 17:12:16 +01:00
WerWolv
3067ff08ec feat: Greatly improved diff view
Fixes #631
2023-02-15 17:01:36 +01:00
WerWolv
07fd86fc9d git: Split release workflows into multiple steps 2023-02-15 10:21:56 +01:00
WerWolv
504037c115 build: Bumped version to 1.27.1 2023-02-15 09:39:23 +01:00
WerWolv
0fad21a980 patterns: Updated pattern language 2023-02-15 09:39:16 +01:00
WerWolv
8afd698284 impr: Correct some ugly code 2023-02-14 15:43:44 +01:00
WerWolv
9ec7b90192 patterns: Updated pattern language 2023-02-14 15:10:52 +01:00
WerWolv
08f0fff34b patterns: Updated pattern language 2023-02-14 12:53:37 +01:00
WerWolv
2c1073eda9 fix: Safety backup restore popup getting hidden by tip of the day 2023-02-14 11:45:32 +01:00
WerWolv
c9348f0651 patterns: Updated pattern language 2023-02-13 23:27:12 +01:00
WerWolv
accb461c08 impr: Better word select and delete in text editor
Closes #931
2023-02-13 10:21:57 +01:00
Thomas
75adcc0a96 build: Fix Arch package name in release CI (#929)
* Fix Arch package name in release CI

* update email address
2023-02-13 09:05:52 +01:00
WerWolv
61ce88ba9b build: Fix build on systems that have no backtrace or execinfo
Fixes #932
2023-02-13 08:27:08 +01:00
WerWolv
4b451fd1d3 patterns: Fixed pattern data rows not being selectable when color column is hidden 2023-02-13 08:26:43 +01:00
WerWolv
a87190960f build: Fixed one more missing imhex target name 2023-02-12 22:08:35 +01:00
WerWolv
45558027a6 git: Fixed release workflow 2023-02-12 21:55:22 +01:00
WerWolv
e426606542 build: Fixed flatpak build issues 2023-02-12 21:55:09 +01:00
WerWolv
4d60942fea build: Bumped version to 1.27.0 2023-02-12 19:24:04 +01:00
WerWolv
3003dea409 fix: Occasional error when loading recent files 2023-02-12 17:52:09 +01:00
WerWolv
0b18930017 fix: Invalid theme load error 2023-02-12 17:39:47 +01:00
WerWolv
54ef5785cd fix: ImNodes double free 2023-02-12 17:38:13 +01:00
WerWolv
d084ec78e9 nodes: Allow immediate values on integer and float inputs
Closes #427
2023-02-12 17:33:53 +01:00
WerWolv
a59c17aa83 nodes: Fixed loading saved nodes multiple times 2023-02-10 11:22:11 +01:00
WerWolv
6281adc7c3 nodes: Added a few new nodes 2023-02-10 08:18:06 +01:00
WerWolv
5cc01ae89d nodes: Added support for nested, shareable, custom data processor nodes 2023-02-09 23:07:04 +01:00
WerWolv
303dd28c7c fix: Fix macOS build again 2023-02-08 14:11:42 +01:00
WerWolv
dd87dc7046 fix: Building on macOS 2023-02-08 13:51:56 +01:00
WerWolv
235a64deef sys: One more attempt to fix macOS scaling issues 2023-02-08 12:53:34 +01:00
WerWolv
89a96c6d25 sys: Improve pattern visualizer API 2023-02-07 14:18:59 +01:00
WerWolv
4f0e5b99a8 pattern: Make visualizer button actually accessible again 2023-02-06 17:24:06 +01:00
WerWolv
f75f3f4661 pattern: Fixed wrong number of required parameters for image visualizer 2023-02-06 17:23:50 +01:00
WerWolv
b936a28921 fix: Opening files from command line not working 2023-02-06 07:11:21 +01:00
Jonathan Wright
d02507ae4b build: Re-enable Fedora rawhide builds (#920)
* re-enable rawhide builds

* Update build.yml

* Update imhex.spec

---------

Co-authored-by: Nik <werwolv98@gmail.com>
2023-02-02 21:42:13 +01:00
WerWolv
0b576adcf8 fix: Another P2468R2 issue 2023-02-02 21:26:46 +01:00
WerWolv
22ff033b5e fix: More P2468R2 issues 2023-02-02 21:13:56 +01:00
WerWolv
b1edede53a fix: Invalid json comparison 2023-02-02 20:54:38 +01:00
WerWolv
3877f0853d patterns: Updated pattern language 2023-02-02 20:41:51 +01:00
WerWolv
9af8a0113a patterns: Updated pattern language 2023-02-02 19:06:00 +01:00
WerWolv
0d01f0c9d7 feat: Added function to import patches from a modified file 2023-02-02 14:13:37 +01:00
WerWolv
9911166c24 git: Added translation status batch to readme 2023-02-02 13:12:48 +01:00
WerWolvTranslationBot
01736d6409 lang: Updated German translation (#916)
Currently translated at 100.0% (842 of 842 strings)

Translation: ImHex/Built-in Plugin
Translate-URL: https://weblate.werwolv.net/projects/imhex/built-in-plugin/de/

Co-authored-by: Nik <werwolv98@gmail.com>
2023-02-02 11:58:09 +01:00
WerWolv
4ea8971adf lang: Added base translation files 2023-02-02 10:08:47 +01:00
WerWolv
8da072b602 lang: Get codebase ready for the use with Weblate 2023-02-02 09:41:58 +01:00
Berylskid
f6823d5f13 lang: Updated Japanese translation (#915) 2023-02-02 09:39:40 +01:00
WerWolv
941c7ee61d fix: Still properly divide scaling by 2.0 on macOS 2023-02-01 23:47:22 +01:00
WerWolv
fd259dcde3 fix: Prevent native scaling from going below 1.0 on macOS 2023-02-01 23:45:07 +01:00
WerWolv
79ecf7fa59 build: Fix non-Windows build 2023-02-01 09:38:03 +01:00
WerWolv
4c761df181 build: Improve build script a bit 2023-02-01 09:20:46 +01:00
WerWolv
94dc688324 ui: Change feedback link 2023-02-01 09:20:32 +01:00
WerWolv
357dd883db fix: Hexadecimal string inputs in data processor nodes behaving weirdly 2023-01-31 11:39:08 +01:00
WerWolv
3bad5e1d9c fix: ImHex still opening files when multiple builtin plugins are detected 2023-01-31 11:38:26 +01:00
WerWolv
d09982d99f fix: Crash when opening selection view
Fixes #913
2023-01-30 18:15:42 +01:00
Nik
fe7eb582a4 git: Added code quality tag to readme 2023-01-30 11:36:34 +01:00
WerWolv
c76b4bc9e9 impr: Removed a bunch of trailing white spaces 2023-01-30 11:11:30 +01:00
WerWolv
55d7d7c026 impr: Improve code quality 2023-01-30 10:42:07 +01:00
WerWolv
6b645192d4 fix: Diff view highlighting issues 2023-01-30 10:26:37 +01:00
WerWolv
d6bb408078 fix: All bytes being selected when opening a new provider 2023-01-30 10:10:37 +01:00
WerWolv
434ced44f0 fix: Build failing on macOS 2023-01-28 21:30:17 +01:00
WerWolv
c6e1f45dc3 feat: Added option to copy custom encoding strings from hex view 2023-01-28 21:12:35 +01:00
WerWolv
c861bf9a5e fix: Copying strings and bad names 2023-01-28 21:12:08 +01:00
WerWolv
86be1ef1ec impr: Make find view string filter case insensitive 2023-01-28 20:55:11 +01:00
WerWolv
c4d52da924 ui: Added cancel button to task running popup 2023-01-28 14:36:39 +01:00
WerWolv
a142d4fe20 ui: Make file chooser popup bigger 2023-01-28 14:28:06 +01:00
WerWolv
197e86f327 fix: Duplicate highlightings for every yara rule 2023-01-28 14:27:51 +01:00
WerWolv
b1aa58d446 feat: Allow selected yara rules to be saved to Project file 2023-01-28 14:15:15 +01:00
WerWolv
60a178f75e fix: Last column of diff view displaying all zeros
Fixes #908
2023-01-28 12:44:40 +01:00
WerWolv
6799263317 sys: Added a info popup when closing ImHex while tasks are still running 2023-01-28 12:16:41 +01:00
WerWolv
9b80486285 fix: Process Memory provider search not being case insensitive 2023-01-28 11:41:09 +01:00
WerWolv
3254376d28 fix: Editing static array values being broken 2023-01-28 00:03:20 +01:00
WerWolv
29c1a0cb78 feat: Allow multiple yara files to be selected at once 2023-01-28 00:01:53 +01:00
WerWolv
800ffb5e56 feat: Make it easier to apply multiple yara rules at once 2023-01-27 12:17:10 +01:00
WerWolv
1cf9f7e990 patterns: Updated pattern language 2023-01-27 10:45:07 +01:00
WerWolv
d928325fdf fix: Loading of Intel Hex and Motorola SREC files with new lines inbetween
Fixes #906
2023-01-26 11:06:00 +01:00
WerWolv
b3556c7c91 lang: Updated language files 2023-01-25 10:56:13 +01:00
WerWolv
4b112321d2 feat: Added base64 exporter
Closes #900
2023-01-25 10:51:00 +01:00
WerWolv
fee1b985c0 feat: Added better error messages for generating and importing ips patches 2023-01-25 10:38:04 +01:00
WerWolv
111eabb84c feat: Added scatter plot visualizer 2023-01-25 10:16:46 +01:00
WerWolv
f9bb4d828a ui: Improve visualizer button layout and error messages 2023-01-25 10:16:31 +01:00
WerWolv
434b7649c3 fix: CRC8 hashing algorithm displaying 16 bits result 2023-01-25 00:06:48 +01:00
WerWolv
fc44dd4592 build: Fixed building of miniaudio on macOS 2023-01-24 23:57:43 +01:00
WerWolv
8ea0e9ce9c fix: Sound visualizer being really laggy 2023-01-24 23:57:29 +01:00
WerWolv
94cd83e0dc feat: Added sound visualizer 2023-01-24 23:27:35 +01:00
WerWolv
27790532f8 fix: Crash when closing provider that had pattern loaded in some cases 2023-01-24 23:27:15 +01:00
WerWolv
90d9c91717 build: Cleanup opengl and glfw linking 2023-01-24 14:59:19 +01:00
WerWolv
32ed2c30c0 fix: Flickering task bar progress bar 2023-01-24 13:42:08 +01:00
WerWolv
cf9df6e36d feat: Added ability to query provider information from pattern language 2023-01-24 09:07:11 +01:00
WerWolv
915106f360 patterns: Fixed various issues with the 3d visualizer 2023-01-23 16:25:23 +01:00
WerWolv
a51e4afb05 patterns: Updated pattern language 2023-01-23 13:53:29 +01:00
WerWolv
c30f8fa459 patterns: Updated pattern language 2023-01-23 07:25:44 +01:00
WerWolv
46221e936f feat: Allow the 3d visualizer to use index buffers 2023-01-22 16:17:10 +01:00
WerWolv
c86891e0c3 fix: Custom encodings not rendering correctly on non-zero page 2023-01-22 14:17:55 +01:00
WerWolv
acf6b839e5 patterns: Updated pattern language 2023-01-22 12:16:22 +01:00
WerWolv
1f50e834fc fix: Copying bytes from non-zero page not working 2023-01-22 11:28:17 +01:00
WerWolv
6322dbf46a fix: Revert back macOS scaling fix as it made it worse 2023-01-21 22:59:08 +01:00
WerWolv
0e1aeee3fb patterns: Display bitfield field bit addresses from the start of the bitfield 2023-01-21 22:32:16 +01:00
WerWolv
173f279ac8 fix: Find view not correctly accepting hexadecimal values 2023-01-21 18:44:12 +01:00
WerWolv
89e0df86a2 feat: Added scaling and rotation to 3D visualizer 2023-01-21 13:00:02 +01:00
WerWolv
7ba9349de2 patterns: Updated pattern language 2023-01-21 12:31:33 +01:00
WerWolv
15fb288a5b fix: Yara view only loading in .yar files and not .yara files 2023-01-21 10:10:05 +01:00
WerWolv
f17e04273d fix: IPS patch applying being broken 2023-01-21 00:29:16 +01:00
WerWolv
76d47bf856 fix: MacOS Build errors because of khronos includes 2023-01-21 00:11:33 +01:00
WerWolv
d4967018c2 feat: Added basic lighting and rotations to 3d visualizer model 2023-01-20 23:32:51 +01:00
WerWolv
8e759d9b5f feat: Added basic 3D visualizer, moved visualizers to separate file 2023-01-20 21:16:28 +01:00
WerWolv
a9cebed903 ui: Disable Jump To command when too many bytes are selected 2023-01-19 17:08:17 +01:00
WerWolv
58a70f6ad8 ui: Move around File menu items to make more logical sense 2023-01-19 17:05:54 +01:00
WerWolv
05c8158716 feat: Added a new division by invariant multiplication tool 2023-01-19 17:01:41 +01:00
WerWolv
17b0f2ae77 feat: Added a description to the IEEE754 decoder tool 2023-01-19 17:01:19 +01:00
WerWolv
b54e6ea531 ui: Always add a spacing at the end of all tools 2023-01-19 16:59:59 +01:00
WerWolv
b702ad4190 fix: Occasional crash when loading a provider 2023-01-19 16:59:34 +01:00
WerWolv
4fb544d59d fix: Views starting out super tiny 2023-01-19 16:59:09 +01:00
WerWolv
e37a73ae58 patterns: Updated pattern language 2023-01-19 12:19:09 +01:00
WerWolv
c5d2739a39 fix: File provider sometimes not saving path to project file 2023-01-19 11:09:24 +01:00
WerWolv
def40c908e patterns: Added basic disassembler visualizer 2023-01-18 17:17:34 +01:00
WerWolv
ef12798fe2 feat: Allow custom hashes to be saved to projects 2023-01-18 14:30:56 +01:00
WerWolv
c747c15567 fix: Buffer overflow caused by hex input boxes 2023-01-18 14:30:44 +01:00
Nik
48a57cd981 feat: Added stacktrace printing on crashes (#892)
* feat: Added simple stack trace output

* feat: Added backtrace wrapper

* build: Added libbacktrace include dirs to build

* build: Fixed libbacktrace variables

* build: More backtrace variable fixes

* build: Try to find backtrace include

* build: Get backtrace header from cmake script

* feat: Added backtrace support for execinfo

* feat: Added support for StackWalk on Windows
2023-01-17 21:38:56 +01:00
WerWolv
3ddef07284 fix: ImHex failing to load in Portable mode from a folder with no permissions
Fixes #881
2023-01-17 09:59:57 +01:00
Kuruyia
a65f0a5238 feat: Support macOS keyboard shortcuts (#889) 2023-01-17 08:16:02 +01:00
birdstakes
ca68150970 fix: Frame rate not unlocking correctly (#890)
m_hadEvent could be set during glfwWaitEventsTimeout and then
immediately cleared before ever being checked.
2023-01-17 08:14:40 +01:00
WerWolv
92f0aa9593 fix: Logs always being saved to user folders
Fixes #888
2023-01-16 19:39:00 +01:00
WerWolv
b368b9c6d1 git: Make install instructions reflect actual release names 2023-01-16 18:20:22 +01:00
WerWolv
7e17059154 sys: Improved exception debug output 2023-01-16 18:17:13 +01:00
WerWolv
e078d810de git: Added install instructions for all release builds
#887
2023-01-16 13:41:24 +01:00
WerWolv
62bf877046 patterns: Updated pattern language
Fixes #880, Fixes #863
2023-01-15 22:59:15 +01:00
WerWolv
1b56c7ffae ui: Show task progress in task bar 2023-01-14 14:21:16 +01:00
WerWolv
f7e22ce651 patterns: Updated pattern language 2023-01-14 14:20:48 +01:00
WerWolv
b9c2b1de5f patterns: Updated pattern language 2023-01-13 22:30:57 +01:00
WerWolv
0c302da0db build: Add option to use the GTK file picker instead of portals on Linux
Fixes #882
2023-01-13 20:11:27 +01:00
WerWolv
45492365be fix: Potentially fix scaling issues on macOS 2023-01-13 20:06:03 +01:00
WerWolv
b497e9d867 git: Switch to different repo dispatch action 2023-01-13 08:58:03 +01:00
Nik
2840935f3d build: Added glfw to Brewfile 2023-01-13 01:01:43 +01:00
Thomas
69c0e6ee6e git: Do not run make install for tests (#879)
Co-authored-by: Nik <werwolv98@gmail.com>
2023-01-13 00:32:17 +01:00
Thomas
78b07e0a46 git: Make runner cache keys unique (#878) 2023-01-13 00:10:28 +01:00
Thomas
5a865774d1 git: Cleanup build CI + separate Ubuntu and AppImage builds (#873)
* remove flatpak

rationale: if we need it again we can always get it back from old commits

* remove double spaces

* remove Fedora rawhide

* remove Windows installer signing

* separate Ubuntu and AppImage builds
2023-01-12 23:50:59 +01:00
WerWolv
8d9667c2e0 fix: Yara rules being unable to include files
Fixes #875
2023-01-12 23:29:48 +01:00
WerWolv
1f6acc101f feat: Allow OTF fonts to be selected 2023-01-12 11:37:19 +01:00
WerWolv
0d91db68db patterns: Added bitmap visualizer 2023-01-12 11:18:36 +01:00
WerWolv
825e788646 git: Added more information to the readme requirements section 2023-01-12 08:50:16 +01:00
Thomas
f3815673c0 git: Fix typo on 'Chocolatey' + add uppercase on 'Winget' (#870)
* Fix typo on 'Chocolatey'

* add uppercase on 'Winget'
2023-01-12 08:25:51 +01:00
Thomas
b070092a64 git: Add architecture to build artifacts (#869)
* rename win64 artifact to Windows

* add architecture to all artifact names
2023-01-12 08:25:28 +01:00
WerWolv
25ede7ad18 fix: List all intel hex and motorola srec file extensions manually
Fixes #871
2023-01-12 08:20:15 +01:00
WerWolv
03d216f116 feat: Allow most resources to be loaded relative to the current project 2023-01-11 23:31:25 +01:00
WerWolv
b1cab5ccd2 patterns: Updated pattern language 2023-01-11 11:22:01 +01:00
Jonathan Wright
04d0458ae7 build: Improve Fedora builds and add EL9 build. (#861) 2023-01-10 23:10:34 +01:00
WerWolv
3b5d54dd96 fix: Text Editor behaving a bit weirdly now 2023-01-10 19:27:27 +01:00
WerWolv
87571450f4 patterns: Updated pattern language 2023-01-10 16:20:54 +01:00
WerWolv
766fd626f2 fix: Hex editor editing cursor not advancing on non-zero pages 2023-01-10 13:48:50 +01:00
WerWolv
be1f711fda fix: Pattern editor not scrolling all the way to the right when typing 2023-01-10 13:27:16 +01:00
WerWolv
ef3627321c sys: Clear project after loading crash backup 2023-01-10 08:57:29 +01:00
WerWolv
dbcb13f473 patterns: Disallow application/octet-stream to be used as MIME type 2023-01-09 08:38:19 +01:00
WerWolv
c1359a71d6 feat: Added options to automatically expand or flatten the pattern tree 2023-01-08 16:06:26 +01:00
WerWolv
b1a26d02c1 patterns: Updated pattern language 2023-01-08 10:20:54 +01:00
WerWolv
ceae23eab1 fix: Crash when opening a project file when already having providers open 2023-01-07 22:43:48 +01:00
Thomas
ab29303c2e sys: Clear project context when closing all providers, Display project name in window title (#860)
* clear project context when closing all providers

* Show project name on window title

* refactor RequestChangeWindowTitle to RequestUpdateWindowTitle

* add spaces
2023-01-07 17:31:22 +01:00
Thomas
ed831c6fc9 fix: Do not check for writable provider to save project, disable shortcut when unavailable (#859)
* do not check for writable provider to save project

* disable save project shortcut when we can't save it

* log when project is saved
2023-01-07 17:16:43 +01:00
WerWolv
d86be9d9b3 sys: putenv sucks. Use setenv instead 2023-01-07 10:56:03 +01:00
WerWolv
c26bed894b sys: Add imhex/lib path to plugin libraries search paths 2023-01-07 10:32:01 +01:00
Chien Wong
27cf5953ae fix: Typo of IEEE 754 (#856) 2023-01-06 13:12:10 +01:00
WerWolv
d0b3a60a09 build: Bumped version to 1.26.2 2023-01-05 16:37:53 +01:00
WerWolv
15f2376c62 sys: Fixed some variable names 2023-01-05 16:27:52 +01:00
WerWolv
efeeea37f6 build: Updated libromfs properly 2023-01-05 16:27:16 +01:00
WerWolv
5726e52df2 ui: Make content store resizable again 2023-01-05 13:23:08 +01:00
WerWolv
a1b596adc0 build: Bumped version to 1.26.1 2023-01-05 09:53:49 +01:00
WerWolv
763196f0cc feat: Added filtering to Process Memory Provider 2023-01-05 09:30:15 +01:00
WerWolv
ff9048fcf0 fix: Crash on exit
Fixes #854
2023-01-05 09:29:33 +01:00
WerWolv
7d9c86f584 fix: Crash when loading themes on Linux and MacOS 2023-01-04 23:56:36 +01:00
WerWolv
6129360b06 patterns: Updated pattern language
Fixed #853
2023-01-04 19:39:01 +01:00
WerWolv
3c5e91b611 build: Bumped version to 1.26.0 2023-01-04 16:09:23 +01:00
WerWolv
e529a79ddb fix: Template pattern types being placeable using right click menu 2023-01-04 15:50:37 +01:00
WerWolv
45bb9e6706 build: Fix some more ObjC issues 2023-01-04 14:55:58 +01:00
WerWolv
e6d14507e2 fix: Window title not resetting when closing all providers 2023-01-04 14:24:18 +01:00
WerWolv
9a5881fc47 build: Fixed -Wpedantic issues on macOS 2023-01-04 14:24:07 +01:00
WerWolv
f7dd28002e build: Build everything using -Wpedantic 2023-01-04 14:03:09 +01:00
WerWolv
496b0ec41d build: Fixed more build errors 2023-01-04 13:29:39 +01:00
WerWolv
02df578939 build: Fix library linking on non-windows 2023-01-04 13:23:42 +01:00
WerWolv
eb4a1e2692 build: Try to clean up bundled dependencies a bit 2023-01-04 12:34:38 +01:00
WerWolv
e6bec7d2b2 patterns: Updated pattern language 2023-01-04 10:20:50 +01:00
WerWolv
80f3bbb0af feat: Added DLL injection option, fixed memory region addresses 2023-01-04 10:02:17 +01:00
WerWolv
3a117b3bed feat: Display process icons in process memory provider 2023-01-03 16:34:22 +01:00
WerWolv
ff91335011 fix: ImNodes theme colors 2023-01-03 13:14:23 +01:00
WerWolv
01917439dd fix: More invalid iterator accesses 2023-01-03 13:04:36 +01:00
WerWolv
f21c80c48a build: More libfmt fixes 2023-01-02 01:38:07 +01:00
WerWolv
3dc42b711c fix: Plot lines being invisible 2023-01-01 23:53:50 +01:00
WerWolv
4b2863ca14 patterns: Updated pattern language 2023-01-01 22:15:47 +01:00
WerWolv
fe1b4b45b5 patterns: Updated pattern language 2023-01-01 21:48:20 +01:00
WerWolv
a20d6aa2b2 fix: Project file creation issues 2023-01-01 21:46:41 +01:00
WerWolv
78e52a0fe3 patterns: Updated pattern language 2023-01-01 20:25:41 +01:00
WerWolv
b4b507ecc9 lang: Added missing localizations for new provider 2023-01-01 19:14:57 +01:00
WerWolv
d7d19d7594 feat: Further improve process memory provider 2023-01-01 12:26:27 +01:00
WerWolv
90df4413c3 feat: Added basic windows process memory provider 2023-01-01 02:29:38 +01:00
WerWolv
4cd6646cca build: Enable libstdc++ assertions in debug builds 2023-01-01 01:05:01 +01:00
WerWolv
87ed0d31d4 fix: Various invalid iterator and container accesses 2023-01-01 01:01:24 +01:00
WerWolv
921bdd9e3b patterns: Updated pattern language 2022-12-31 10:28:41 +01:00
WerWolv
1f51a603f0 patterns: Updated pattern language 2022-12-30 12:47:23 +01:00
WerWolv
5fbbdb8e3c git: Make main logo respect color theme 2022-12-30 12:07:51 +01:00
WerWolv
745da6ba45 build: Only use --export-all-symbols on Windows 2022-12-30 11:24:53 +01:00
WerWolv
ad71e612a3 build: Clean up some old compiler/linker flag settings 2022-12-30 10:35:11 +01:00
WerWolv
85823e8e5d build: Removed all usages of Python 2022-12-29 23:32:57 +01:00
WerWolv
b4fa8bebe9 build: Move main romfs to main application 2022-12-29 23:32:40 +01:00
WerWolv
7859a9bb1f feat: Added native custom theme support 2022-12-29 19:26:00 +01:00
WerWolv
696d8d1d54 feat: Allow pasting of bytes with prefixes and comma separators
Closes #581
2022-12-29 15:08:44 +01:00
123456abcdef
6e8d3e0d7f fix: Wrong i18n labels (#852) 2022-12-29 15:07:43 +01:00
123456abcdef
6a0422fb27 lang: Update german translation (#851) 2022-12-29 15:07:32 +01:00
WerWolv
26898feb62 ui: Improve colors of digram and layered distribution plot 2022-12-29 15:06:23 +01:00
WerWolv
0311feee9b feat: Further improve information view 2022-12-28 23:06:49 +01:00
WerWolv
cf601586fc fix: Deadlock when loading recent files 2022-12-28 23:06:27 +01:00
WerWolv
f7b988906e fix: Saving projects to unicode paths not working correctly 2022-12-28 10:46:02 +01:00
WerWolv
5777a6d401 patterns: Updated pattern language 2022-12-27 23:26:25 +01:00
WerWolv
4807ca0057 feat: Added Digram and Layered Distribution plots to information view 2022-12-27 22:50:37 +01:00
WerWolv
f1aeec309e fix: New lines not being drawn in pattern console 2022-12-27 22:50:16 +01:00
WerWolv
4b8e275254 fix: Crash when closing providers too quickly 2022-12-27 11:35:20 +01:00
WerWolv
4b6a75fb60 feat: Added type distribution graph to information view 2022-12-25 15:45:49 +01:00
WerWolv
d463491026 ui: Fixed bookmarks displaying too many bytes in some cases 2022-12-25 10:01:39 +01:00
WerWolv
df3d5e38ce ui: Load in all extended-Ascii and control characters from unifont 2022-12-25 10:01:21 +01:00
WerWolv
4e22d636d3 fix: Yet another hex editor scrolling issue 2022-12-24 15:29:42 +01:00
WerWolv
e71841b871 fix: Crash when printing NULL bytes to the pattern console 2022-12-24 15:29:20 +01:00
WerWolv
e272c5d000 build: Updated dependencies 2022-12-24 15:28:51 +01:00
WerWolv
0d7740773e sys: Improve speed and UX of entropy graph 2022-12-23 14:34:06 +01:00
WerWolv
e4fbb1b640 pattern: Added basic line plot and image visualizer 2022-12-23 14:33:27 +01:00
WerWolv
986252d97f pattern: Make sure pattern tree doesn't randomly collapse when evaluating 2022-12-21 11:31:33 +01:00
WerWolv
e0c1fc81e3 build: Download Mesa3D from werwolv.net instead 2022-12-21 07:13:31 +01:00
WerWolv
ee94e9d619 patterns: Updated pattern language 2022-12-21 00:14:42 +01:00
WerWolv
264da1ed78 pattern: Show array entries directly if there are less than 512 2022-12-20 20:56:01 +01:00
WerWolv
ce37c795a7 patterns: Updated pattern language 2022-12-19 15:38:51 +01:00
Nik
ed2297ab7f git: Fixed build badge 2022-12-19 09:05:22 +01:00
WerWolv
ae5d8c9aad build: Updated libromfs 2022-12-19 08:52:12 +01:00
WerWolv
603ff9256c build: Actually use correct fcntl.h 2022-12-19 07:16:38 +01:00
WerWolv
a966cab155 build: Use correct fcntl.h include on Linux 2022-12-19 07:15:18 +01:00
WerWolv
978dd65528 patterns: Make editing patterns feel better 2022-12-18 23:53:53 +01:00
WerWolv
6502920047 patterns: Move pattern editing behind a double click 2022-12-18 23:11:22 +01:00
Thomas
ed97757dde build: Fix AppImage building issues (#847)
From https://github.com/AppImageCrafters/appimage-builder/pull/281
2022-12-18 16:05:14 +01:00
WerWolv
da8ec1565e fix: Floating point finding not working with negative values 2022-12-18 14:17:57 +01:00
WerWolv
ad85a4a0e3 fix: Hopefully fix the hex editor position jumping around after search 2022-12-18 13:27:28 +01:00
WerWolv
f9a7cdf4dd patterns: Improve editing of pattern values 2022-12-17 22:22:20 +01:00
WerWolv
a5296bab95 feat: Added pattern value editing 2022-12-16 11:20:39 +01:00
WerWolv
bda7a2b351 patterns: Fixed bitfield fields not caring about endianess
Fixes #837
2022-12-15 16:16:49 +01:00
WerWolv
f23351f11c sys: Try to not load unifont if graphics drivers can't handle it 2022-12-14 09:25:37 +01:00
WerWolv
e3f2541fde sys: Make sure libromfs is never used in libimhex 2022-12-05 15:29:19 +01:00
WerWolv
94723dbba3 build: Updated libromfs 2022-12-05 10:08:25 +01:00
WerWolv
6e0b92a4de sys: Added logging for which romfs is being used 2022-12-05 09:31:16 +01:00
WerWolv
13a61f5249 build: Updated libromfs 2022-12-04 22:41:30 +01:00
WerWolv
1347f81236 sys: Added postJson Net helper function 2022-12-04 21:50:47 +01:00
xtexChooser
ab93894442 lang: Update Chinese(Simplified) translations (#840) 2022-12-04 12:28:07 +01:00
5idereal
8ed6c2094b lang: Add back missing zh_TW.json (#839) 2022-12-03 10:50:35 +01:00
WerWolv
42d7f1ca67 lang: Allow langtool to update invalid translation fields 2022-12-03 10:49:26 +01:00
Thomas R
cf51e04777 tips: Add tip about unicode symbols (#838) 2022-12-02 16:30:28 +01:00
WerWolv
8398c12f74 patterns: Updated pattern language 2022-12-02 15:25:34 +01:00
WerWolv
2a345e770e git: Added HACKING file with information about how contribute to ImHex 2022-12-02 15:16:32 +01:00
WerWolv
b3fcf71982 lib: Updated libromfs 2022-12-02 12:02:23 +01:00
WerWolv
3b94a42783 lang: Updated localization system to use a more versatile json format 2022-12-02 12:00:04 +01:00
WerWolv
453ddaf0d6 patterns: Updated pattern language 2022-11-29 17:06:34 +01:00
WerWolv
d4ff36fde0 build: Updated dependencies 2022-11-29 11:06:22 +01:00
Nik
6239858d0a build: Removed leftover .idea folder 2022-11-29 11:05:05 +01:00
WerWolv
1dd873462e build: Fixed build failure when VERSION file contains extra white space 2022-11-29 09:44:47 +01:00
WerWolv
825c613d64 patterns: Fixed crash when using a void expression in a placement
Fixes #822
2022-11-25 10:58:17 +01:00
André Blome
4aa314b3ab feat: Added quick "save project" action (#826)
* add quick -save project- action

* translation for -save project as- added

* removed machine translations; header file name extension fixed

* moved openProject() for consistency
2022-11-25 10:47:11 +01:00
iTrooz_
8e696e3fc4 git: Enable LTO on Linux (#819)
* Enable LTO on Fedora .spec

* CI: Enable LTO for Ubuntu and ArchLinux

* CI: remove lld to allow LTO
2022-11-25 10:40:07 +01:00
iTrooz_
217cf799c2 sys: Warn user if a net request fails while a proxy is set (#821)
* tell the user if he have a proxy set

* Improved log message

Co-authored-by: Nik <werwolv98@gmail.com>
2022-11-25 10:39:45 +01:00
iTrooz_
b10a59661e build: Tell users patterns are being downloaded (#820)
* Tell users patterns are being downloaded

* Improved log message

Co-authored-by: Nik <werwolv98@gmail.com>
2022-11-25 10:37:31 +01:00
WerWolv
0f028db856 sys: Don't load any external plugins in debug builds
Closes #833
2022-11-25 10:28:05 +01:00
WerWolv
c194588118 fix: File Provider adding zero bytes at the end of the data when saving
Fixes #835
2022-11-25 10:02:55 +01:00
WerWolv
398dc8101f patterns: Updated pattern language 2022-11-20 00:28:05 +01:00
WerWolv
13cb330711 patterns: Updated pattern language 2022-11-19 13:49:50 +01:00
WerWolv
c0740822a3 patterns: Updated pattern language 2022-11-19 11:59:57 +01:00
WerWolv
340e627af9 patterns: Updated pattern language 2022-11-19 11:55:00 +01:00
WerWolv
3089a710bd patterns: Updated pattern language 2022-11-19 11:32:09 +01:00
WerWolv
7d0474335a fix: Crash when closing section with selected bytes 2022-11-18 16:01:18 +01:00
WerWolv
3d5190f51a fix: Patterns not appearing in list if pattern editor is not open 2022-11-18 14:27:55 +01:00
WerWolv
de2de1e1d7 patterns: Updated pattern language 2022-11-18 14:27:31 +01:00
WerWolv
91a4f52f67 build: Potentially fix LTO 2022-11-14 10:42:09 +01:00
WerWolv
c8af25533d build: Bumped version to 1.25.0 2022-11-14 10:07:21 +01:00
WerWolv
b1f76aeda6 feat: Added new view provider 2022-11-14 10:02:46 +01:00
WerWolv
3fccd03bbb fix: Black screen issues when font atlas got too big 2022-11-14 10:02:34 +01:00
WerWolv
3bcfa7e10b ux: Make the pattern language text editor always insert spaces instead of tabs 2022-11-14 09:44:10 +01:00
WerWolv
cbd7c10f3d build: Updated libromfs 2022-11-13 22:53:41 +01:00
WerWolv
0d09c24840 build: Updated libromfs 2022-11-13 22:41:29 +01:00
WerWolv
d54d371ab7 build: Updated libromfs 2022-11-13 21:34:26 +01:00
WerWolv
c90aa0a742 fix: Crash after evaluating patterns a second time 2022-11-10 11:18:14 +01:00
WerWolv
7f0bdea212 fix: Opening multiple files by dragging them onto the window 2022-11-10 11:17:21 +01:00
WerWolv
b29d184488 patterns: Updated pattern language 2022-11-09 22:26:13 +01:00
WerWolv
168d6b2080 patterns: Updated pattern language 2022-11-09 20:54:01 +01:00
WerWolv
b2c970c3bd git: Removed macOS portable build again 2022-11-09 20:52:23 +01:00
WerWolv
a0445c4f7b lang: Added missing localizations 2022-11-09 19:03:57 +01:00
WerWolv
9074a6fcf1 fix: Edit menu items being always unavailable 2022-11-09 18:49:07 +01:00
WerWolv
4c5d2f6ebb feat: Finish up work on new pl section system 2022-11-08 21:43:22 +01:00
WerWolv
23ce2ec271 ui: Fixed some more macOS scaling issues 2022-11-08 18:09:48 +01:00
WerWolv
5bbc2fd94c feat: Added basic UI for the new pl section system 2022-11-07 00:04:47 +01:00
WerWolv
901b8f0424 sys: Refactored hex editor into its own reusable component 2022-11-06 12:19:12 +01:00
WerWolv
d2705988ac ui: Potentially fix weird scaling on macOS 2022-11-05 21:49:17 +01:00
WerWolv
291da649c1 ui: Limit window title length 2022-11-04 15:19:24 +01:00
WerWolv
48e9d3b4e9 patterns: Updated pattern language 2022-11-04 10:12:26 +01:00
WerWolv
45e2578c5b patterns: Updated pattern language 2022-11-04 09:50:26 +01:00
WerWolv
a6742de405 sys: Literally, fuck Valve 2022-11-02 08:24:00 +01:00
iTrooz_
948b5b2d9c ux: Change "Esc" key behavior on hex editor popups (#810)
* set same behaviour for PopupGoto and PopupFind

* Force close the popup when user is editing an input
2022-11-01 09:33:11 +01:00
iTrooz_
6cb9714f06 git: Automatically label created issues (#811) 2022-11-01 09:31:46 +01:00
Asvel
c35eaa7a4d fix: Pattern auto-loading issue on Windows (#808) 2022-10-30 13:39:40 +01:00
iTrooz_
bececff9e5 feat: Ask the users if they want to check for updates (#803)
* ask the users for updates

* Only treat 1 as enabled

* Fix formatting

* update locales

* comment to document value
2022-10-29 23:43:40 +02:00
iTrooz_
2826e6f325 git: Updated issue templates (#807)
* add "Additional context" option for feature request

* use placeholder instead of value

* Ask for installation type in bug reports
2022-10-29 20:38:22 +02:00
5idereal
6bc1f94b60 lang: Update zh_TW translation (#805) 2022-10-28 14:58:45 +02:00
WerWolv
9fd37221f6 fix: Static tooltips not rendering correctly 2022-10-28 14:33:26 +02:00
WerWolv
db3072630a feat: Allow multiple yara rules to be applied after each otherr 2022-10-28 14:32:56 +02:00
WerWolv
5cf6baca88 fix: Yara matching not being interruptable 2022-10-28 14:32:28 +02:00
WerWolv
582858c0d4 git: Download all artifacts to their own folders 2022-10-28 10:55:06 +02:00
WerWolv
7d56c64a9c git: Download only necessary artifacts in steam deploy job 2022-10-28 10:29:40 +02:00
WerWolv
902b35e189 git: Fix downloading artifacts in steam deploy job 2022-10-28 10:02:38 +02:00
WerWolv
5f6050aaec git: Fixed more build issues 2022-10-28 09:38:03 +02:00
WerWolv
cb94213a04 git: Fix some more steam deploy issues 2022-10-28 09:17:04 +02:00
WerWolv
fa6580f622 git: Move steam deploy to its own workflow 2022-10-28 09:14:01 +02:00
Frieder Bluemle
07effffa5e git: Fix various issues in the INSTALL guide (#800) 2022-10-28 08:17:10 +02:00
WerWolv
e15bcb51aa git: Fix setting of version env var on Windows 2022-10-27 14:12:46 +02:00
WerWolv
a04e2bc8f6 res: Update steam assets 2022-10-27 14:11:31 +02:00
WerWolv
6aad609a48 git: Fix more issues with the Steam Deployment 2022-10-27 14:05:06 +02:00
iTrooz_
24c0cc10a1 sys: Load Tips from a local file instead of querying an API (#797)
* store tips locally

* C++ random implementation

* show one different tip per day

* fix json conversion to string

* put tips.json in builtin romfs
2022-10-27 13:21:54 +02:00
Nik
e567061e3c git: Added automatic pushing of nightlies to Steam (#801)
* build: Upload nightly releases to steam

* git: Fixed build CI syntax

* git: Try fixing steam login

* git: Try steam TOTP login

* git: Fix steam-deploy branch

* git: Don't upload MacOS No-GPU version to Steam

* git: Added commit hash to steam nightlies, only upload on our repo

* git: Use full commit hash in steam nightly description

* git: Fixed workflow

* git: Make sure macOS doesn't upload steam releases when it shouldn't

* git: Fix macos CI again

* git: Use steam-deploy fork to fix Linux deployment
2022-10-27 13:19:06 +02:00
iTrooz_
32ab1c1a06 sys: Load content store content when it's first opened (#795)
* refresh store on open

* show the user if the request failed

* do not refresh if a refresh is in progress

This makes ImHex crash

* InProgress

* fix formatting

* use a localized message

* set localized message in other langs
2022-10-27 13:12:24 +02:00
iTrooz_
e76d5854b8 ux: Add a setting to disable loading of unicode characters (#798)
* Add setting to disable loading of unicode characters

* change message

* set message in other langs

* fix formatting
2022-10-27 13:11:09 +02:00
WerWolv
d3b6c2d0e6 nodes: Added a few new nodes 2022-10-26 09:07:09 +02:00
WerWolv
ef6cac6e92 patterns: Make more pattern editor things per-provider 2022-10-26 08:54:43 +02:00
WerWolv
0c5e72ab6a nodes: Improve precision of values passed between nodes 2022-10-26 08:54:08 +02:00
WerWolv
f67c9735c5 patterns: Fixed memory leak 2022-10-22 23:17:38 +02:00
WerWolv
858e1aed3b nodes: Fixed a few issues with locatizations, errors and overlays 2022-10-22 23:17:18 +02:00
WerWolv
3b7f2fbdaa pattern: Display evaluation time when pattern finished running 2022-10-22 15:47:50 +02:00
WerWolv
2c167d6d27 fix: Crash when scrolling to the end of a file that is multiples of 8 bytes long 2022-10-22 15:46:03 +02:00
WerWolv
f53d7fc9f3 fix: Format string syntax error 2022-10-22 13:46:48 +02:00
WerWolv
04a4957ccf fix: Null and MemFile providers dumping null into recent files 2022-10-22 09:08:18 +02:00
WerWolv
b5f7be2384 fix: Editing hex editor cells not working on some systems 2022-10-22 09:07:47 +02:00
WerWolv
33a0ee37fa build: Update ImHex-Rust-Plugin-Template on release 2022-10-21 14:59:43 +02:00
WerWolv
1eb9858f62 sys: Moved libimhex-rust out of project 2022-10-21 14:55:01 +02:00
WerWolv
b829abf56c fix: Paste all shortcut tooltip being wrong 2022-10-21 13:36:19 +02:00
WerWolv
139a379a09 feat: Added Paste all option to paste and resize file without checks
Closes #791
2022-10-21 12:14:35 +02:00
WerWolv
6a8611d98d ux: Make New File command create a new file in memory
Closes #792
2022-10-21 12:01:28 +02:00
WerWolv
241b93aab5 patterns: Added menu to Edit menu for placing types at current selection 2022-10-21 10:03:37 +02:00
WerWolv
6d08a4386d patterns: Updated pattern language 2022-10-20 22:45:46 +02:00
WerWolv
37b4d5e7b5 patterns: Updated pattern language 2022-10-20 09:48:06 +02:00
iTrooz_
f3b0971d00 sys: Improve various error messages (#789)
* Tell the user the net request which failed

* Show signal name

* Print execution time of startup tasks

* replace NULL with nullptr

* change wording for task logs

* Remove '..' from task name

* remove using namespace chrono
2022-10-20 08:28:29 +02:00
WerWolv
05e8e53451 patterns: Updated pattern language 2022-10-17 13:29:43 +02:00
iTrooz_
08251eeab7 feat: Add Ctrl+Shift+Z Redo shortcut (#787) 2022-10-17 13:28:05 +02:00
WerWolv
8c96ba1c58 patterns: Updated pattern language 2022-10-16 22:04:30 +02:00
WerWolv
e170c45556 patterns: Updated pattern language 2022-10-16 16:24:24 +02:00
iTrooz_
a537fe90a0 build: Added make uninstall (#784) 2022-10-14 15:35:45 +02:00
WerWolv
802ad96c49 patterns: Updated pattern language
Fixes #783
2022-10-13 22:11:01 +02:00
WerWolv
5d979da3e2 fix: Modified bytes on pages after the first one always displaying 0x00
Fixed #782
2022-10-13 21:23:26 +02:00
WerWolv
b843d8e98a build: Added steam resources 2022-10-13 15:15:06 +02:00
WerWolv
af6ad96cb6 fix: Detached tool windows not resizing correctly 2022-10-13 15:14:51 +02:00
WerWolv
f9e960070d nodes: Require shift to be held to enlarge visualizers 2022-10-13 15:14:16 +02:00
WerWolv
1ab949b7ef nodes: Added RGBA8 image visualizer 2022-10-13 15:13:53 +02:00
WerWolv
8b39c8f219 feat: Make all tool windows be detachable 2022-10-13 10:47:38 +02:00
iTrooz_
14b28ba899 ui: Show non existing folders in red in about view (#781)
* show non existing folders in red in about view

* use ImGuiCustomCol_ToolbarRed for theming

* Fix compilation problem for Ubuntu
2022-10-13 08:07:46 +02:00
WerWolv
dd9b6643e6 fix: Crash when loading a provider after evaluating patterns 2022-10-12 14:50:09 +02:00
WerWolv
e3f88395ec fix: Hidden attribute not applying to top-level patterns 2022-10-12 14:49:48 +02:00
WerWolv
72ee1d186e build: Bumped version to 1.24.3 2022-10-12 12:48:50 +02:00
WerWolv
ee53eca19f patterns: Updated pattern language 2022-10-12 12:25:22 +02:00
WerWolv
7331b8d5ae node: Limit width of out variable access node 2022-10-12 12:24:54 +02:00
WerWolv
d17911d753 fix: Invalid axis labels in data information view 2022-10-12 12:24:11 +02:00
WerWolv
b41d01f126 lang: Added localization for new nodes 2022-10-12 12:18:27 +02:00
WerWolv
27fc3fd659 nodes: Added out variable access node 2022-10-12 12:18:18 +02:00
WerWolv
cc9dc90655 nodes: Added Float <-> Buffer casting nodes 2022-10-12 12:09:51 +02:00
WerWolv
015266181e fix: Various issue with the hex editor editing mode 2022-10-12 10:56:03 +02:00
WerWolv
299933c4f7 feat: Allow ASCII cells in Hex editor to be edited 2022-10-11 20:18:45 +02:00
WerWolv
5312d6f9fa fix: Data inspector still displaying entries with no selection 2022-10-11 20:18:16 +02:00
WerWolv
16eb7b3dbd ui: Fixed hex editor highlighting sometimes having gaps 2022-10-11 15:06:33 +02:00
WerWolv
cb9458dab4 patterns: Updated pattern language 2022-10-11 14:15:22 +02:00
WerWolv
e32a85a33f patterns: Updated pattern language 2022-10-11 09:00:07 +02:00
WerWolv
e4680fb0a2 fix: 64-Bit hex data visualizer only displaying 32 bit 2022-10-11 09:00:00 +02:00
WerWolv
1c52e0018a fix: Prevent same pl runtime from running simultaneously when loading provider 2022-10-10 23:16:54 +02:00
WerWolv
ee2838bada build: Bumped version to 1.24.2 2022-10-10 20:52:48 +02:00
iTrooz_
4d17265e90 git: Use action to manage ccache + minor fixes (#775)
* use action for ccache + limit cache size

* remove 'prepare cache' step for Windows

* remove libpython from CI

* fix the restore key for MacOS

* remove Rust from CI

* do not pin appimage-builder version since issue with it has been resolved

* use ccache action for CodeQL

* Rebased onto latest master

Co-authored-by: WerWolv <werwolv98@gmail.com>
2022-10-10 20:37:00 +02:00
WerWolv
6a6b860622 patterns: Updated pattern language 2022-10-10 20:33:43 +02:00
WerWolv
e78c452daf fix: Hex editor selection not showing rendering properly 2022-10-10 20:33:34 +02:00
WerWolv
86e33a1ee9 build: Bumped version to 1.24.1 2022-10-10 19:11:30 +02:00
WerWolv
37850ad85a patterns: Updated pattern language 2022-10-10 18:15:11 +02:00
WerWolv
daca49658e ui: Fix highlighting of separator column in hex editor
Fixes #776
2022-10-10 17:26:05 +02:00
WerWolv
6975d7e2cd patterns: Updated pattern language 2022-10-10 16:09:50 +02:00
WerWolv
5b8bed6083 patterns: Updated pattern language 2022-10-10 14:42:13 +02:00
WerWolv
7474aa3e5d fix: New lines in wide string messing up data inspector drawing 2022-10-10 14:41:24 +02:00
WerWolv
c6d2d51d4c ui: Make sure sealed patterns get highlighted properly when selected 2022-10-10 14:40:49 +02:00
WerWolv
9055105627 fix: Evaluator not exiting evaluating state correctly on error 2022-10-09 17:31:06 +02:00
WerWolv
a44de63e24 fix: Build failing on Linux 2022-10-09 16:34:53 +02:00
WerWolv
8fc7931132 patterns: Updated pattern language 2022-10-09 15:56:41 +02:00
WerWolv
4070833229 ui: Highlight selected patterns in pattern data view 2022-10-09 15:56:26 +02:00
WerWolv
3a9c3f939e sys: Properly center hex view around selection when jumping 2022-10-09 14:47:38 +02:00
WerWolv
aa42fb5076 patterns: Updated pattern language 2022-10-08 16:28:49 +02:00
WerWolv
50158a7977 sys: Fixed hex editor scrolling issues 2022-10-08 16:23:15 +02:00
WerWolv
f2ded359d8 build: Bumped version to 1.24.0 2022-10-08 10:03:47 +02:00
WerWolv
0e358bbefe patterns: Updated pattern language 2022-10-08 10:00:57 +02:00
WerWolv
2cea561468 ui: Make sure modified bytes are correctly highlighted 2022-10-08 10:00:37 +02:00
WerWolv
8024b0a186 sys: Improve drag scrolling behaviour in hex editor view 2022-10-07 22:13:25 +02:00
WerWolv
2b135cf7e0 ui: Limit maximum length of data displayed in pattern tooltip 2022-10-07 16:27:29 +02:00
WerWolv
ce8c64a679 ui: Make sure ASCII cell content in hex editor is always centered 2022-10-07 16:18:09 +02:00
WerWolv
f0da6ec82f fix: Crash on exit when ImHex is launched through the terminal 2022-10-07 15:35:26 +02:00
WerWolv
46e3b9b5d6 build: Fixed macOS build instructions 2022-10-07 13:20:29 +02:00
WerWolv
d5a08ae568 patterns: Updated pattern language 2022-10-07 13:17:47 +02:00
WerWolv
11f63f9b02 ui: Added optional byte cell and char cell padding
Closes #771
2022-10-07 11:28:44 +02:00
WerWolv
5694eaba8c feat: Added palette to bookmark color picker
#771
2022-10-07 10:53:08 +02:00
WerWolv
484481f886 fix: Opening files with unicode names through the command line 2022-10-07 10:14:24 +02:00
WerWolv
210106901e sys: Added setting to disable multi-window support 2022-10-06 21:26:24 +02:00
WerWolv
eb247b8607 patterns: Updated pattern language 2022-10-06 21:09:58 +02:00
WerWolv
fb1453d98a lang: Fixed some language strings 2022-10-06 16:55:42 +02:00
WerWolv
b734fb5511 build: Delete system capstone in macOS CI 2022-10-06 15:22:38 +02:00
WerWolv
2cd6cb8814 patterns: Updated pattern language 2022-10-06 14:11:03 +02:00
WerWolv
2a93eab14c ui: Make sure pattern data view doesn't flicker when executing pattern 2022-10-06 13:24:22 +02:00
WerWolv
f039ea68d0 fix: Potential crashes when pasting with no clipboard content 2022-10-06 09:35:18 +02:00
WerWolv
e0c35e0002 fix: Data processor nodes not remembering their positions correctly 2022-10-06 09:14:46 +02:00
WerWolv
5ace199dc4 fix: Foreground tasks not being cancellable 2022-10-05 21:25:52 +02:00
WerWolv
556895744b build: Disable more bogus stringop warnings 2022-10-05 15:09:41 +02:00
WerWolv
7f2c60b0d7 fix: Race condition with data inspector 2022-10-05 12:02:40 +02:00
WerWolv
7bb9e7ee82 sys: Replaced awful task system with a much more efficient thread pool 2022-10-04 23:37:48 +02:00
WerWolv
26be4c3ac8 patterns: Updated pattern language 2022-10-04 23:37:25 +02:00
WerWolv
b80517ab15 sys: Improved UTF-8 path handling in various places
Fixes #768
2022-10-04 09:10:58 +02:00
WerWolv
b17cd3696c fix: Handling of exceptions that are not being caught 2022-10-03 10:36:19 +02:00
WerWolv
accd554600 sys: Reduce compile time on Windows a bit 2022-10-02 20:35:38 +02:00
WerWolv
8bf586cfa9 patterns: Fixed bitfield order not resetting correctly
Fixes #756
2022-10-02 19:20:35 +02:00
VocalFan
ebea409e6a build: Fix deprecated MAINTAINER flag in DockerFile (#767) 2022-10-02 17:53:37 +02:00
Nik
6fdba3d555 build: Remove terrible clang-format files (#766) 2022-10-02 17:35:02 +02:00
Nik
e865883611 git: Remove msi signing again since Microsoft doesn't care at all (#765) 2022-10-02 17:31:40 +02:00
Nik
9c484e7b57 fix: Various clang / clang-tidy warnings (#764) 2022-10-02 17:30:26 +02:00
WerWolv
b365e16cc9 fix: Multiple issues with the calculator 2022-10-02 14:18:56 +02:00
WerWolv
6a07a2f85d feat: Look for custom inspector entries in imhex/scripts/inspectors 2022-10-02 14:18:40 +02:00
xtexChooser
0fd7461266 lang: Updated Chinese(Simplified) translations (#762) 2022-10-02 11:32:06 +02:00
Marcelo Conceição
62eb0ccd1d fix: Bad optional access when inspectors.hexpat is missing (#761) 2022-10-02 10:28:37 +02:00
WerWolv
3367237da3 feat: Added very primitive support for adding custom data inspector entries 2022-10-01 23:16:55 +02:00
WerWolv
3504987ab3 sys: Fix OpenGL clear color 2022-10-01 21:14:49 +02:00
Aniruddha Deb
554e625bda build: Make local includes take priority over system includes (#759) 2022-10-01 11:02:59 +02:00
WerWolv
84530e0817 patterns: Added demangle function 2022-09-30 12:49:49 +02:00
WerWolv
663fb88367 sys: Various cleanup 2022-09-30 12:49:28 +02:00
WerWolv
4d99c4b59d patterns: Updated pattern language 2022-09-30 12:45:43 +02:00
WerWolv
12ee235380 fix: Hardcoded colors used in ASCII table
Fixes #757
2022-09-29 20:46:50 +02:00
WerWolv
e30ed35d69 build: Make sure windows plugin romfs folder sticks around 2022-09-29 10:57:02 +02:00
WerWolv
e2f8c7d989 build: Enable PIC for romfs libraries 2022-09-29 10:47:34 +02:00
WerWolv
ca6a8a7a46 sys: Move resources into their relevant subprojects 2022-09-29 10:33:39 +02:00
WerWolv
f52dae4297 feat: Added Edit -> Jump to option to jump to selected address 2022-09-28 22:36:43 +02:00
WerWolv
d643f8f8f7 feat: Allow bookmarks to be reordered
Closes #750
2022-09-28 21:40:31 +02:00
WerWolv
08a12dd2b0 fix: Crash when dragging the mouse onto the hex view 2022-09-28 21:39:46 +02:00
WerWolv
b33dd5d4f5 lang: Added localization for float 16 visualizer 2022-09-28 18:33:11 +02:00
WerWolv
e797ac3a57 feat: Added Float16 data visualizer
Closes #749
2022-09-28 18:30:41 +02:00
WerWolv
8bd31f6375 fix: Crash when hex editor visualizer size is not divisible by row count 2022-09-28 18:29:56 +02:00
WerWolv
d3f83e63c9 build: Properly install llvm dependency on macOS 2022-09-28 16:21:17 +02:00
WerWolv
b450f4797e feat: Added wide string to data inspector 2022-09-28 16:10:40 +02:00
WerWolv
0552084673 patterns: Updated pattern language 2022-09-28 15:41:57 +02:00
WerWolv
d021e2b362 fix: Make sure correct close function gets called 2022-09-28 15:02:55 +02:00
WerWolv
c769e9cc32 ui: Highlight modified bytes in red 2022-09-28 15:01:43 +02:00
WerWolv
639390115b sys: Allow file inspector to read bytes over the page boundary
Fixes #751
2022-09-26 11:53:29 +02:00
WerWolv
ceaf80a186 sys: Don't keep files open in File Provider
Closes #752
2022-09-26 11:49:35 +02:00
WerWolv
86274b8b94 patterns: Updated pattern language 2022-09-23 21:33:55 +02:00
WerWolv
669427eb24 patterns: Updated pattern language 2022-09-23 21:20:52 +02:00
WerWolv
5ba22e7554 patterns: Updated pattern language 2022-09-23 20:50:55 +02:00
WerWolv
65ad88eed9 patterns: Updated pattern language 2022-09-22 09:05:32 +02:00
WerWolv
e34703ea5a fix: Saving and loading projects not working correctly 2022-09-22 09:05:09 +02:00
WerWolv
55bd2c6da6 git: Add code signing for Windows installer 2022-09-21 21:24:47 +02:00
WerWolv
96b5221c1d patterns: Updated pattern language 2022-09-21 11:55:47 +02:00
iTrooz_
3a94be9abb ux: Display an error message if file picker can't be opened (#748)
* add error message for the file picker

* set a different message for Windows/MacOS

* fix typos

* Moved file dialog error handling to a callback function

Co-authored-by: Nik <werwolv98@gmail.com>
2022-09-20 15:47:59 +02:00
WerWolv
9656b40d53 fix: Clearing custom font path not updating setting correctly 2022-09-20 15:47:28 +02:00
WerWolv
7e61b513f3 patterns: Fixed highlighting of arrays of arrays 2022-09-20 15:42:07 +02:00
WerWolv
1d4cbbe418 ux: Handle project loading errors better 2022-09-20 15:33:36 +02:00
WerWolv
e0e2996e25 fix: Custom fonts not being loaded 2022-09-20 14:09:41 +02:00
WerWolv
a102f5fcbf sys: Updated a bunch of dependencies 2022-09-19 23:21:59 +02:00
WerWolv
4e5d56e2c0 fix: Files opened by the file provider appearing locked for other applications 2022-09-19 23:07:44 +02:00
WerWolv
a55177edfa fix: Curl SSL context not being thread safe in the slightest 2022-09-19 21:56:43 +02:00
WerWolv
4c01a749de sys: Improved startup time by running startup tasks in parallel 2022-09-19 16:54:19 +02:00
WerWolv
7b61268f22 ux: Reduce file loading time to basically zero 2022-09-19 16:09:22 +02:00
WerWolv
b11dbe4fe1 fix: Build failing on macOS 2022-09-19 15:26:25 +02:00
WerWolv
6dbff81f95 ui: Added chunk type information to pattern data view 2022-09-19 14:21:36 +02:00
WerWolv
9893e7a965 ui: Display array patterns in pattern data view in chunks of 512 entries 2022-09-19 14:16:23 +02:00
WerWolv
814c595c12 ui: Added functionality icons to most text input fields 2022-09-19 11:29:51 +02:00
WerWolv
f8b4d04713 feat: Added numeric value search to find view 2022-09-19 10:34:57 +02:00
WerWolv
3cdc8c5884 fix: OpenGL textures not being cleaned up correctly 2022-09-18 20:38:45 +02:00
suetake
5eabc05396 git: Fix broken link in install guide (#744) 2022-09-18 16:26:44 +02:00
WerWolv
b2932773b9 feat: Added unique selection and scrolling position to each provider 2022-09-18 16:22:08 +02:00
WerWolv
59a04e6dbf fix: Copy-As python array having a semicolon at the end 2022-09-18 15:05:56 +02:00
Nik
ddf1e8a179 git: Embed font into banner logo 2022-09-17 17:23:49 +02:00
WerWolv
17cc87d633 git: Make sure readme logo has the same font everywhere 2022-09-17 16:43:06 +02:00
WerWolv
fd7beb642f build: Bumped version to 1.23.2 2022-09-17 15:49:19 +02:00
WerWolv
b766cf0807 patterns: Updated pattern language 2022-09-17 15:48:12 +02:00
Nik
6c9469961b git: Added flatpak link to install guide 2022-09-17 13:35:54 +02:00
WerWolv
d8844236d0 git: Added install guide file, cleaned up readme 2022-09-17 10:38:02 +02:00
WerWolv
60eb59c605 build: Bumped version to 1.23.1 2022-09-17 09:00:39 +02:00
WerWolv
6a7bbb8752 fix: Crash on some Linux systems when opening files 2022-09-17 08:55:18 +02:00
WerWolv
e4431749e1 patterns: Updated pattern language 2022-09-16 15:12:12 +02:00
WerWolv
c587b357eb patterns: Updated pattern language 2022-09-16 10:52:49 +02:00
WerWolv
7357c26d54 ux: Pre-fill remove popup size value with current selection size 2022-09-16 08:33:18 +02:00
WerWolv
73ca45ad3d git: Updated winget-create to the latest release 2022-09-16 08:30:42 +02:00
WerWolv
bf00503d1f fix: BufferedReader messing up the second to last byte 2022-09-16 08:30:28 +02:00
WerWolv
44a90f5c7d build: Bumped version to 1.23.0 2022-09-15 14:40:14 +02:00
WerWolv
5c3ee9f499 fix: Dangerous function call popup keep appearing 2022-09-15 11:38:22 +02:00
WerWolv
03f357efd1 patterns: Updated pattern language 2022-09-15 11:31:13 +02:00
WerWolv
5462575f5c sys: Allow multiple files to be opened through the command line 2022-09-15 09:48:02 +02:00
WerWolv
120e2bc300 sys: Fix opening files in existing instance not working on Intel GPUs 2022-09-15 09:47:47 +02:00
WerWolv
c3137df83c patterns: Updated pattern language 2022-09-15 09:46:38 +02:00
WerWolv
737155a226 patterns: Added hex::core::get_selection function 2022-09-15 09:34:59 +02:00
WerWolv
66d64cf020 patterns: Refactor creation of default runtime 2022-09-15 09:34:40 +02:00
WerWolv
42f5c0f484 fix: Tasks being interrupted even if they already finished 2022-09-14 13:51:48 +02:00
WerWolv
75047e26e2 feat: Added various new Copy as... options 2022-09-13 23:48:47 +02:00
Colin Kinloch
9fa6d82775 build: Install Database files from subdirectory in offline builds (#737)
Signed-off-by: Colin Kinloch <colin.kinloch@collabora.com>

Signed-off-by: Colin Kinloch <colin.kinloch@collabora.com>
Co-authored-by: Colin Kinloch <colin.kinloch@collabora.com>
2022-09-13 22:34:33 +02:00
WerWolv
d1468984e7 fix: Copy as... -> ASCII Art inserting too much whitespace 2022-09-13 22:02:57 +02:00
WerWolv
20a2331504 feat: Allow task stop button to abort pattern evaluation 2022-09-13 16:05:41 +02:00
WerWolv
5b00c8ee08 feat: Added find view reset button 2022-09-13 14:22:18 +02:00
WerWolv
bda4aadc54 fix: Sequence escape codes 2022-09-13 14:10:52 +02:00
WerWolv
9d7e2eccac feat: Added "Require full match" toggle to regex string search 2022-09-13 14:06:19 +02:00
WerWolv
8c219b981c fix: Searching for invalid binary sequence causing too many matches 2022-09-13 14:05:48 +02:00
WerWolv
7d87c8bb98 patterns: Added references 2022-09-13 13:14:36 +02:00
WerWolv
13afd96806 fix: Build issues due to invalid capture 2022-09-12 23:45:37 +02:00
WerWolv
4fb74a1769 patterns: Updated pattern language 2022-09-12 21:28:29 +02:00
WerWolv
aa658b7dbc sys: Make sure constexpr variables don't get copied onto the stack 2022-09-12 21:28:02 +02:00
xtexChooser
7e3601989a lang: Update Chinese(Simplified) translation (#739) 2022-09-11 21:56:55 +02:00
WerWolv
3a1c0f8d66 fix: Disk provider slowing down loading of ImHex 2022-09-11 21:06:15 +02:00
WerWolv
91160b4311 fix: Copy as... function sometimes producing invalid results
Fixes #738
2022-09-09 20:13:49 +02:00
WerWolv
83f4093796 fix: Rendering of pattern array entries not working correctly 2022-09-08 23:03:58 +02:00
iTrooz_
f219395b25 build: Added AppImage zsync and updated metadata (#733)
* added update information

* upload zsync

* set version of appimage

* release: do not execute steps which needs a token when not provided

* set the appimage output name directly in the recipe file

* add metainfo file in every Linux package

* update metainfo file

* set categories in the metainfo file

* add both .metainfo.xml and .appdata.xml files because it is the old standard still wanted by some things

* actually use WerWolv's repository for AppImage updates

* rename metainfo files

* Typo : appdata and not appinfo

* split screenshots
2022-09-08 09:31:49 +02:00
iTrooz_
ae6a7ad8e5 build: Change Ubuntu package name, updated README (#734)
* rename Ubuntu 22.04 deb

* fix typo in readme

* says explicitely that AppImage is available for all distributions
2022-09-08 09:30:56 +02:00
WerWolv
d990ee102a sys: More cleanup 2022-09-07 23:11:24 +02:00
WerWolv
cfde9939b4 sys: Refactor and cleanup pattern drawer 2022-09-07 23:11:13 +02:00
iTrooz_
a22725bb67 build: Cleanup PKGBUILD (#732)
* [From Morten Linderud] update PKGBUILD

* quote strings in PKGBUILD

* do not use ls to

* do not hardcode version
2022-09-07 22:23:56 +02:00
WerWolv
7a4040f6ec ui: Fixed indentation of sealed patterns in pattern data view 2022-09-07 22:21:44 +02:00
WerWolv
2fbb351314 patterns: Updated pattern language 2022-09-07 11:32:47 +02:00
WerWolv
96e85c0685 ui: Removed unused space in hex editor footer 2022-09-07 11:32:33 +02:00
WerWolv
50577c9ea0 patterns: Updated pattern language 2022-09-07 00:14:05 +02:00
WerWolv
073323b517 ui: Fix invalid indentation with inlined patterns 2022-09-06 20:04:55 +02:00
WerWolv
37cc8f3aae patterns: Updated pattern language 2022-09-06 10:50:26 +02:00
WerWolv
6367152650 ux: Fixed welcome screen settings button not always working 2022-09-06 10:50:17 +02:00
WerWolv
ffbaef3872 build: Make sure cmake gets reconfigured when version file changes 2022-09-06 10:43:43 +02:00
WerWolv
a0b2473bf4 ui: Improved pattern color visualization 2022-09-05 23:34:20 +02:00
WerWolv
95a3104a56 sys: Only display FPS in debug builds 2022-09-05 22:37:28 +02:00
WerWolv
2d5f77730b patterns: Updated pattern language 2022-09-05 22:09:44 +02:00
WerWolv
033a0dfbb9 patterns: Updated pattern language 2022-09-05 14:16:44 +02:00
WerWolv
cb682b6e21 ui: Fixed graphics artifacts on welcome screen 2022-09-05 14:16:31 +02:00
WerWolv
7312908d4d resources: Invert colors of logo 2022-09-04 21:36:00 +02:00
WerWolv
b44f6035b3 resources: Added dark mode for logo text 2022-09-04 21:18:09 +02:00
WerWolv
b6bc8abf83 git: Added better logo to readme 2022-09-04 20:51:07 +02:00
WerWolv
c60c1154b9 patterns: Updated pattern language
Fixes #276
2022-09-04 20:37:40 +02:00
Jonathan Wright
219afb6244 build: Change appdata metadata file license to CC0 (#727) 2022-09-04 20:24:04 +02:00
WerWolv
22b6bdb5cf feat: Added Copy as -> Address option to Edit menu
Closes #725
2022-09-04 14:23:09 +02:00
WerWolv
d9a47fe815 fix: Crashes when resizing file
Fixes #721
2022-09-04 11:16:24 +02:00
Nik
45e987b413 git: Fixed Arch Linux package name in readme 2022-09-04 01:23:51 +02:00
Kainoa Kanter
a920696d03 git: Update AUR instructions (#722)
`yay install` is not a proper verb
2022-09-04 00:50:47 +02:00
WerWolv
f72b153fe0 build: Bumped version to 1.22.0 2022-09-04 00:05:27 +02:00
WerWolv
d240b4ed49 fix: Build errors 2022-09-04 00:04:27 +02:00
WerWolv
1a21627cdb ui: Added error popup when an exception is thrown in a task 2022-09-03 23:56:57 +02:00
WerWolv
0a115a3c03 fix: Filtering search occurrences in Find view with multiple files being broken
Fixes #685
2022-09-03 23:15:30 +02:00
WerWolv
7ef11f566b fix: Crash when resizing a non-writable provider
Fixes #704
2022-09-03 23:08:40 +02:00
WerWolv
7f6aa9f9a6 fix: Backwards searching being broken
Fixes #713
2022-09-03 23:02:46 +02:00
WerWolv
4df1496a0f patterns: Properly set current base address in pattern language runtime
Fixes #714
2022-09-03 22:04:41 +02:00
WerWolv
b68eb0bb5e patterns: Fixed accessing global variables inside [[format]] functions
Fixes #720
2022-09-03 21:34:54 +02:00
WerWolv
7c0fb7c4f2 patterns: Updated pattern language 2022-09-03 17:15:42 +02:00
Nik
ede8048680 build: Added missing language files to cmake script 2022-09-02 16:27:31 +02:00
iTrooz_
b10ba8fea0 build: Add NoGPU (Software Rendering) version for Windows (#716)
* add NoGPU (Software Rendering) version for Windows

* rename the NoGPU artifact

* add emoji to a step
2022-09-02 16:12:02 +02:00
iTrooz_
3eb2cca286 build: Add text to the PORTABLE file (#718) 2022-09-02 16:11:19 +02:00
mirusu400
721ac837e0 lang: Add Korean Translation (#719)
* Add ko-KR translation

* Remove Fallbackentry
2022-09-02 16:10:54 +02:00
Jonathan Wright
f6fef35d3d docs: Add install instructions for Linux distros (#691)
Co-authored-by: iTrooz_ <itrooz@protonmail.com>
2022-09-01 20:32:50 +02:00
iTrooz_
0569770239 git: Added NoGPU dmg for MacOS (#708) 2022-08-30 09:47:39 +02:00
WerWolv
6689b8ebfa patterns: Updated pattern language 2022-08-29 16:33:40 +02:00
WerWolv
3cb6c4f775 fix: Buffered reader returning zeros if provider size is below 16MiB
Fixes #707
2022-08-29 16:32:32 +02:00
WerWolv
b687eb88f9 fix: Pattern source code not being loaded correctly from project files 2022-08-29 13:15:17 +02:00
WerWolv
33a375910a sys: Added "New File..." menu item and shortcut 2022-08-28 20:55:48 +02:00
WerWolv
a620400e4e patterns: Fixed unions 2022-08-28 17:53:47 +02:00
WerWolv
cc7dc3597b patterns: Fixed base_address pragma not working correctly 2022-08-28 17:53:33 +02:00
WerWolv
60b5842e94 fix: Signed data inspector rows displaying invalid values
Fixes #706
2022-08-28 12:55:26 +02:00
WerWolv
2b9c6ec447 patterns: Updated pattern language 2022-08-28 12:35:36 +02:00
WerWolv
742a4e53b5 patterns: Updated pattern language 2022-08-27 14:29:04 +02:00
WerWolv
0cd10b6b70 patterns: Updated pattern language 2022-08-27 13:20:28 +02:00
WerWolv
aabf718e60 patterns: Updated pattern language 2022-08-27 12:55:11 +02:00
WerWolv
03116c4ab8 patterns: Updated pattern language 2022-08-27 11:43:43 +02:00
iTrooz_
38162c0129 build: Use the bundled CA cert in AppImage (#694)
* Added option to bundle CA

* use bundled CA for AppImage

* Fix bundled CA not working on Linux

* revert change to add null terminated string

* set IMHEX_USE_BUNDLED_CA to ON on Windows
2022-08-26 00:21:17 +02:00
WerWolv
f62edea450 build: Fix various clang build issues 2022-08-26 00:18:08 +02:00
WerWolv
940f1e30c5 patterns: Updated pattern language 2022-08-25 21:14:20 +02:00
WerWolv
af32d68c3f git: Update macOS minimal requirements 2022-08-25 19:32:26 +02:00
WerWolv
eb874ac810 patterns: Updated pattern language 2022-08-25 19:31:06 +02:00
WerWolv
a79bf4c3ec patterns: Updated pattern language 2022-08-25 13:53:21 +02:00
WerWolv
90adacab9f fix: Build issues 2022-08-24 14:55:11 +02:00
WerWolv
e86ca29b8c sys: Improved searching behaviour 2022-08-24 00:31:34 +02:00
WerWolv
4f1f9a718c fix: Not all recent providers showing up correctly 2022-08-24 00:18:10 +02:00
WerWolv
cc09014e6e patterns: Updated pattern language 2022-08-24 00:17:31 +02:00
WerWolv
de98b40c93 fix: Build failing on macOS 2022-08-22 11:12:50 +02:00
WerWolv
a6eaa34f6d fix: Diff view crash when closing provider that's being diffed 2022-08-22 11:04:32 +02:00
WerWolv
dacb64ae66 fix: Window header always displaying (Read Only) after opening a provider 2022-08-22 11:00:31 +02:00
WerWolv
c0a5e2012f patterns: Updated pattern language 2022-08-21 23:34:02 +02:00
WerWolv
389e53a8a0 fix: Net request json parser throwing exceptions 2022-08-21 23:33:08 +02:00
WerWolv
928fbe235a ui: Automatically sort pattern data table by address 2022-08-21 23:32:18 +02:00
WerWolv
7d85a8b6fc fix: Providers not being closed correctly
Fixes #692
2022-08-20 14:04:12 +02:00
WerWolv
d004962e3a patterns: Updated pattern language 2022-08-20 13:58:58 +02:00
WerWolv
1462a4689d fix: ImHex crashing on exit
Fixes #698
2022-08-20 13:43:26 +02:00
WerWolv
93be4c8ed1 fix: Resource embedding not working correctly on Linux and macOS 2022-08-20 13:38:56 +02:00
Lukas Cone
536c6df438 fix: Race condition when evaluating patterns (#696) 2022-08-19 23:01:57 +02:00
WerWolv
f8a089a61f build: Added appdata metainfo file to AppImage 2022-08-19 12:05:47 +02:00
WerWolv
491ee6aa2f patterns: Updated pattern language 2022-08-18 23:51:50 +02:00
iTrooz_
6a88c7cbaa git: Make sure Linux CI doesn't build ImHex twice (#689)
* install deb package in a different folder than AppImage

* added comment for Ubuntu cmake build

* fixed typos

* separate cmake build for deb and appimage
2022-08-18 23:03:31 +02:00
Jonathan Wright
be82ee15b7 build: Lower curl version requirement (#684)
to allow building against RHEL 9's system curl
2022-08-18 01:13:38 +02:00
WerWolv
1ddd3ea2b9 fix: Custom pattern include paths not working correctly 2022-08-18 00:30:02 +02:00
WerWolv
a56a8c1d6c fix: Some clang issues 2022-08-18 00:24:29 +02:00
WerWolv
9c4e314bb6 git: Fixed release CI 2022-08-17 23:25:52 +02:00
WerWolv
ea26722a18 build: Bumped version to 1.21.2 2022-08-17 22:51:18 +02:00
WerWolv
5aee359700 git: Send workflow dispatch request to Plugin template repo on release 2022-08-17 22:32:55 +02:00
Vladyslav
5d11fc960e build: Updated minimum required cmake version to 3.20 (#677)
As per cmake.org/cmake/help/latest/prop_tgt/CXX_STANDARD.html,
`set(CMAKE_CXX_STANDARD 23)` requires minimum cmake version bump to 3.20
2022-08-17 18:39:49 +02:00
Berylskid
707fec0e2a lang: Updated Japanese translation (#679)
- Added as many translations as possible for the "Find" function.
- Added and corrected some other translations.
2022-08-17 18:37:44 +02:00
WerWolv
55b877d5e0 fix: Region validity check not working correctly with non-zero base address
Fixes #683
2022-08-17 16:28:44 +02:00
WerWolv
e779285be4 feat: Added basic ability to interrupt long running tasks 2022-08-17 16:15:36 +02:00
WerWolv
cf6ae52889 git: Automatically update winget package on release 2022-08-17 15:50:29 +02:00
Berylskid
caad705975 lang: Updated Japanese translation (#676)
Added two translations about import/export bookmarks
2022-08-16 11:54:26 +02:00
WerWolv
0c3fc6f858 ui: Moved welcome screen close button further to the left 2022-08-16 11:49:56 +02:00
WerWolv
0529155faa fix: Import/Export bookmarks menu items being disabled when they shouldn't be 2022-08-16 11:49:40 +02:00
WerWolv
aa01d58b33 ui: Increase window size when a bigger font is being used 2022-08-16 11:49:07 +02:00
WerWolv
0c0caf6942 fix: Restarting ImHex not working correctly 2022-08-16 11:48:37 +02:00
WerWolv
7e01ff451f patterns: Fixed return statements inside of loops acting like breaks
Fixes #675
2022-08-16 09:49:29 +02:00
WerWolv
e0e4b0a5a9 fix: Learn Pattern Language welcome screen button pointing to wrong URL 2022-08-16 09:29:50 +02:00
WerWolv
0e2c1f1355 fix: Syntax errors 2022-08-16 00:39:56 +02:00
WerWolv
0ed7341f71 patterns: Updated pattern language 2022-08-16 00:35:24 +02:00
WerWolv
29e970fd81 fix: Out of bounds strlen read 2022-08-16 00:29:53 +02:00
WerWolv
43ab72dcb8 fix: Undefined behaviour in helper functions 2022-08-16 00:12:28 +02:00
WerWolv
07dc77f13d git: Build Unit tests with debug symbols 2022-08-15 23:49:42 +02:00
WerWolv
9b2ee998de git: Enabled address, leak and UB sanitizers in unit tests CI 2022-08-15 23:33:04 +02:00
WerWolv
e1c5cd1e86 patterns: Updated pattern language 2022-08-15 22:35:24 +02:00
WerWolv
0d0301f4f6 patterns: Updated pattern language 2022-08-15 22:22:05 +02:00
WerWolv
29adeae6a3 fix: Undefined behaviour in frame wait time calculation 2022-08-15 22:21:53 +02:00
WerWolv
6b62a1963e fix: Some occurrences of undefined behaviour 2022-08-15 21:08:09 +02:00
WerWolv
fb2af5593f build: Bumped version to 1.21.1 2022-08-15 17:35:18 +02:00
WerWolv
e938b75acd patterns: Fixed out of bounds read 2022-08-15 17:34:09 +02:00
WerWolv
03daf0c95b fix: Unavailable address displaying on intel hex provider 2022-08-14 22:38:01 +02:00
WerWolv
189ea1c3c7 fix: File picker showing up when restoring safety backup 2022-08-14 19:13:13 +02:00
WerWolv
8448c3367b fix: In variables resetting on evaluation 2022-08-14 19:12:46 +02:00
WerWolv
cc29707bb1 fix: Recent entries with same name not being clickable 2022-08-14 19:12:24 +02:00
WerWolv
eff9ecf7cd fix: Crash when closing provider tab
Fixes #674
2022-08-14 19:11:49 +02:00
WerWolv
21b22e7667 build: Bumped version to 1.21.0 2022-08-14 14:54:20 +02:00
WerWolv
7d5b17d5c9 build: Added option to use NFD system library 2022-08-14 14:53:27 +02:00
WerWolv
49d47a0eed feat: Added bookmark import/export function 2022-08-14 14:45:32 +02:00
WerWolv
78785ddc3c fix: More provider display issues 2022-08-14 14:45:18 +02:00
WerWolv
dea6caccf1 fix: File opening in existing instance not being unicode aware 2022-08-14 13:42:22 +02:00
iTrooz_
b917bfca07 git: Fix Fedora spec name and removed caching from Fedora CI (#672)
* changed name to 'imhex' in imhex.spec

* removed CMakeCache for Fedora
2022-08-14 10:08:58 +02:00
WerWolv
85f0e04d0e feat: Allow recents to also display other providers 2022-08-14 10:07:45 +02:00
WerWolv
440ba3823e fix: Hex editor displaying ?? for every byte after editing 2022-08-14 09:38:38 +02:00
WerWolv
b580691871 feat: Added Intel Hex and Motorola SREC provider (#670)
* feat: Initial implementation of an Intel Hex provider

* fix: Reading of bytes from intel hex files

* lang: Added localization for new provider

* ui: Only show file name in intel hex provider name

* feat: Added Motorola SREC provider
2022-08-12 15:11:27 +02:00
eoineoineoin
72c4f50871 fix: Crash when any signal is being thrown (#669)
This avoids a crash on POSIX after running a command from the command
pallete; on completion, a SIGCHILD will be raised, which was incorrectly
calling the error handler and terminating ImHex.

Co-authored-by: Eoin Mcloughlin <helloworld@eoinrul.es>
2022-08-12 11:33:20 +02:00
WerWolv
7bc2c4a0d4 build: Cleanup build scripts 2022-08-11 10:50:25 +02:00
WerWolv
128551e193 build: Fix banner of Windows installer 2022-08-10 23:07:20 +02:00
WerWolv
72f7c72094 build: Improved look and feel of the Windows installer and macOS dmg 2022-08-10 22:47:21 +02:00
WerWolv
568b7f5139 build: Move plist property setting 2022-08-10 20:26:27 +02:00
WerWolv
164cb1285b build: Set MACOSX_BUNDLE_INFO_PLIST in a different way 2022-08-10 20:18:37 +02:00
WerWolv
e16be09f9a build: Allow ImHex to open any file types on macOS 2022-08-10 19:18:32 +02:00
WerWolv
d55c59c796 feat: Added close button for welcome screen 2022-08-10 10:28:40 +02:00
WerWolv
5c13cf9dbf sys: Added support for providers with unreadable regions 2022-08-10 09:26:48 +02:00
WerWolv
19a0dc80db fix: Window title not always updating correctly 2022-08-10 00:11:16 +02:00
WerWolv
683018a9d2 dist: Improve compile instructions 2022-08-09 22:50:02 +02:00
WerWolv
4c331341e5 git: Output unit test errors on failure 2022-08-09 16:31:10 +02:00
WerWolv
ceb26add15 sys: Added better support for Windows 7 2022-08-09 16:29:52 +02:00
WerWolv
4b720ee3a2 fix: More crashes with multi-byte visualizers 2022-08-09 15:00:31 +02:00
WerWolv
d4af07ed51 sys: Improved signal handling 2022-08-09 15:00:16 +02:00
WerWolv
a3132b7d13 build: Fixed system llvm linking errors 2022-08-09 14:59:58 +02:00
WerWolv
0192c791ce sys: Updated llvm demangler, now supports D-Lang and Rust symbols 2022-08-09 13:51:03 +02:00
WerWolv
f1ec2ef0c4 lang: Added some unlocalized values 2022-08-09 08:38:41 +02:00
WerWolv
b1e93fda4b sys: Format settings file more prettily 2022-08-09 09:39:04 +02:00
WerWolv
f349aafc37 fix: Crash when auto-load-patterns is being disabled 2022-08-09 09:38:43 +02:00
WerWolv
8ebbe6fb4e patterns: Fixed crash when preprocessor throws an error 2022-08-09 08:58:31 +02:00
WerWolv
e38b6ecd2c patterns: Fixed reading from strings passed to functions 2022-08-08 23:51:13 +02:00
WerWolv
966f3b8597 sys: Replace existing bad project system with a much better one (#663)
* sys: Initial effort to replace existing project files with a better system

* sys: Added back marking provider as dirty

* sys: Remove git commit information from project files

* sys: Format data processor save file nicely

* fix: Automatic pattern loading not working correctly

* ui: Added warning popup when closing a provider with modifications

Closes #604

* sys: Fixed build issues

* tests: Removed useless debug logs

* patterns: Updated pattern language

* sys: Added log message when crashing with a signal

* sys: Make sure abnormal termination handlers are being called more reliably
2022-08-08 21:23:52 +02:00
WerWolv
f0756bceb8 git: Updated runtime requirements 2022-08-08 21:12:19 +02:00
WerWolv
423e23e3c0 fix: Windows native theme detection not working correctly 2022-08-08 12:57:51 +02:00
WerWolv
2c740cab06 sys: Added select region command 2022-08-08 12:57:44 +02:00
WerWolv
519a9edb60 build: Make sure version string is always being set 2022-08-07 23:50:49 +02:00
WerWolv
e16216b39e patterns: Fixed for-loop parsing 2022-08-07 23:27:25 +02:00
WerWolv
f221d0f430 fix: Properly place config files in .../imhex/config on Linux 2022-08-07 23:27:15 +02:00
WerWolv
1aa497cb7b build: Added support for Clang 14.0.0+ 2022-08-07 23:27:09 +02:00
WerWolv
738a537723 patterns: Fixed display issue with static array entries 2022-08-07 22:03:32 +02:00
Bernard Teo
d8d3a315a4 build: Update nfd-extended to get correct feature test detection (#661) 2022-08-07 15:32:56 +02:00
WerWolv
f62ca307b0 ui: Streamline region selection in different views
Fixes #660
2022-08-07 12:20:40 +02:00
WerWolv
edfac4ef60 fix: Evaluating patterns not creating a Task 2022-08-07 12:13:08 +02:00
WerWolv
916962cf83 ui: Added hexadecimal size of file and selection to hex editor footer 2022-08-07 00:35:36 +02:00
WerWolv
189766ceb4 build: Set library and plugin permissions to 755 on install
Fixes #655
2022-08-07 00:30:03 +02:00
WerWolv
2200e11e85 fix: Pattern language runtime not being reset properly after checking MIME types 2022-08-07 00:11:54 +02:00
WerWolv
69d000488e api: Added api function to create pattern 2022-08-06 22:29:59 +02:00
WerWolv
88f8bb9848 sys: Updated to new pattern language library structure 2022-08-06 21:38:09 +02:00
WerWolv
4f37345324 fix: Crash when exiting hex editor editing mode
Fixes #658
2022-08-06 17:47:11 +02:00
WerWolv
31fcf86008 build: Make sure plugin building works fine on Linux 2022-08-06 16:03:47 +02:00
WerWolv
7d93c54444 build: Updated nfd-extended to prevent linking of macOS 11 framework 2022-08-06 14:33:23 +02:00
WerWolv
b2b753c2b3 ui: Fix displaying of advanced decoding row with multi-byte visualizers 2022-08-06 13:23:40 +02:00
WerWolv
a97f853110 fix: More search issues 2022-08-06 13:16:53 +02:00
WerWolv
3dc5f0e2be fix: Buffered Reader not reading last byte
Closes #653
2022-08-06 13:07:02 +02:00
WerWolv
d7accb6916 feat: Allow Find view to find overlapping occurrences
Closes #653
2022-08-06 12:57:47 +02:00
Berylskid
9c01f3efe3 lang: Updated Japanese translation (#654)
* Update ja_JP.cpp

- Corrected some mistranslations
- Updated some outdated class names
- Added some translations
- Replaced all exclamation marks (!) with Japanese reading marks (。)
- Replaced all 3-dot readers (...) with 2-byte character versions (…)

* Update ja_JP.cpp

Corrected mistranslation of "Contributors"
2022-08-05 20:31:20 +02:00
WerWolv
49cc85dd3b git: Fix deb compression argument 2022-08-05 19:45:01 +02:00
WerWolv
974b9c77e0 git: Use gzip to compress .deb files 2022-08-05 19:33:32 +02:00
WerWolv
f86dffb2f0 build: Bumped version to 1.20.0 2022-08-05 12:52:34 +02:00
WerWolv
58f54caf55 ui: Added u24, i24, u48 and i48 to data inspector
Closes #651
2022-08-05 12:19:50 +02:00
WerWolv
6cb22ea75b sys: Unlock framerate when keys are pressed 2022-08-05 10:55:53 +02:00
WerWolv
e3ef7d53a7 ui: Fixed pattern tooltip of static array only showing value of last entry 2022-08-05 10:55:29 +02:00
WerWolv
0e2bfa25ab ui: Use easier to read float representation in various places 2022-08-05 09:36:04 +02:00
WerWolv
5cb326f95b build: Remove more warnings from ObjC compiler 2022-08-05 09:16:16 +02:00
WerWolv
c55a69c010 build: Fix objc not having certain warning flags 2022-08-05 09:00:03 +02:00
WerWolv
352df24160 build: Move another warning disable to the build script 2022-08-05 08:42:09 +02:00
WerWolv
5a41be48c3 build: Disable restrict warning 2022-08-05 08:32:08 +02:00
WerWolv
12547a7c8c fix: Memcpy restrict error 2022-08-05 08:10:35 +02:00
iTrooz_
ddf4eb3e2b git: Cleanup CI scripts (#650)
* RUST_PATH doesn't seem to be used on ArchLinux

* renamed jobs

* no objc code on Windows (need confirmation)

* fakeroot strace patchelf for Ubuntu : not needed ?

* try to use some system libraries on Arch

* added comments to scroll to cmake instruction easily

* No ojbC code on Ubuntu
2022-08-04 21:52:56 +02:00
WerWolv
65ed949e1b build: Try setting osx deployment target in cmake directly 2022-08-04 20:39:07 +02:00
iTrooz_
e816b67472 build: Fix various issues for upstream Fedora compatibility (#642)
* cmake: use GNUInstallDirs to find install dirs on Linux

* install plugins to lib/imhex/plugins

* fix included files in imhex.spec

* fix the release CI + do not upload x86_64 folder for Fedora

* change rpm names

* added IMHEX_STRIP_RELEASE option to optionally strip releases files (was done all the time before)

* Customize our imhex.spec file (use online building for our Fedora package)

* added IMHEX_PLUGINS_IN_SHARE option for AppImage

* test
2022-08-04 20:37:57 +02:00
WerWolv
e2d75ad6bf tools: Added support for Inf and NaN to the IEEE 754 tester 2022-08-04 13:24:53 +02:00
WerWolv
a1a3fcbe65 ui: Improved footer item displaying 2022-08-04 11:00:49 +02:00
WerWolv
881b633006 patterns: Updated pattern language 2022-08-04 10:52:50 +02:00
WerWolv
400bdaa52c fix: Auto evaluate pattern code not working 2022-08-04 10:52:01 +02:00
WerWolv
0f8ac672f3 sys: Fixed compile issue on non-Windows 2022-08-04 09:51:07 +02:00
WerWolv
be37228dc6 sys: Fixed resize cursors not appearing in non-borderless window mode 2022-08-04 09:46:17 +02:00
WerWolv
de386a9927 ui: Replace forced exponential float display in hex editor with conditional one 2022-08-04 09:05:46 +02:00
WerWolv
c1da2497a7 fs: Fix paths on macOS 2022-08-04 08:56:58 +02:00
WerWolv
14150b5a04 sys: Fix macOS build issues 2022-08-03 23:48:39 +02:00
WerWolv
deabacbd50 sys: Updated ImGui, ImPlot and imnodes to latest versions 2022-08-03 23:32:34 +02:00
ogarvey
09a1e59b8c fix: Allow Numpad Enter to work in text editor (#645)
Fixes #590
2022-08-03 19:52:45 +02:00
iTrooz_
47166db166 fix: Invalid paths being added to the default paths on Linux (#644)
* do not iterate over XDG home dir

* fixed typo

* use push_back

* same fix for getConfigPaths
2022-08-03 19:52:02 +02:00
WerWolv
90d243e0ba build: Fixed setting variable in plugin and added version define check 2022-08-03 16:36:21 +02:00
Stefan
c34df428dc git: Fixed typo in readme (#643) 2022-08-03 11:56:18 +02:00
WerWolv
c468801c6e feat: Added support for ASCII + UTF16 string extraction
Closes #641
2022-08-03 11:38:36 +02:00
WerWolv
ace25d353b fix: GLFW error on exit 2022-08-03 10:45:50 +02:00
WerWolv
0ac8fcd1eb feat: Added binary pattern search to find view 2022-08-03 10:19:34 +02:00
WerWolv
1d9e8dbda7 fix: Always evaluate in/out variables correctly
Fixes #629
2022-08-02 23:36:18 +02:00
WerWolv
6de00b3a6a ui: Fixed displaying of truncated strings in the data inspector 2022-08-02 23:07:35 +02:00
WerWolv
0a97b59228 sys: Fixed one remaining log::info occurrence 2022-08-02 23:07:12 +02:00
WerWolv
fdcce1c046 patterns: Updated pattern language 2022-08-02 22:56:07 +02:00
WerWolv
30b2378778 fs: Refactored default path handling (#637) 2022-08-02 22:55:01 +02:00
WerWolv
f1c61f44c6 git: Updated readme 2022-08-02 14:45:48 +02:00
WerWolv
4d7de8d466 sys: Make sure nativefiledialogs doesn't use macOS 11 frameworks
Fixes #597
2022-08-02 13:20:06 +02:00
WerWolv
c8edb6ec6c sys: Revert GLSL version back to 150 on macOS
Fixes #632
2022-08-02 13:12:12 +02:00
Ryan Russell
55d046fa36 refactor(imgui-rs): Rust code readability improvements (#620)
* chore: bug report template readability fix

Signed-off-by: Ryan Russell <git@ryanrussell.org>

* refactor(imgui-rs): Doc aliases readability fixes

Signed-off-by: Ryan Russell <git@ryanrussell.org>

* refactor(imgui-rs): Code comment readability

Signed-off-by: Ryan Russell <git@ryanrussell.org>
2022-08-02 12:11:04 +02:00
Emanuel Haupt
44bb963654 git: Add packaging information (#630)
Add a section about the availability in third party repositories.
2022-08-02 12:09:16 +02:00
WerWolv
00b7ebf9ec build: Allow GCC 12.0.0+ 2022-08-02 12:03:01 +02:00
WerWolv
69544bdf06 build: Make sure ImHex is being compiled with GCC 12.1.0 or higher 2022-08-02 11:59:29 +02:00
WerWolv
8a02103d5e git: Added system requirements to readme 2022-08-02 11:49:27 +02:00
Thomas Lake
06332c8f40 git: Fix link to latest Fedora RPM in README (#633)
Fix required due to CI changes in df94370598
2022-08-02 11:40:33 +02:00
WerWolv
de910acbf2 sys: Revert OpenGL version back to 3.2 on macOS because Apple doesn't like 3.0
Fixes #632
2022-08-02 08:24:56 +02:00
WerWolv
0074b0be7e sys: Lowered required OpenGL version to 3.0 as well 2022-08-01 23:33:35 +02:00
WerWolv
f94b36f415 sys: Lowered required GLSL version to OpenGL 3.0 2022-08-01 23:26:40 +02:00
WerWolv
59449bbe47 fix: Portable version detection not working correctly 2022-08-01 23:25:13 +02:00
WerWolv
a4c377dc08 fix: Compile issue 2022-08-01 15:06:17 +02:00
WerWolv
e194fcc9d4 git: Fixed nightly link in Readme
Fixes #621
2022-08-01 14:54:04 +02:00
WerWolv
b8c034f8c5 sys: Prevent portable Windows version from writing to AppData
Fixes #627
2022-08-01 14:51:40 +02:00
WerWolv
899f2b3fbd build: macOS 10.4 is apparently deprecated 2022-08-01 14:50:27 +02:00
WerWolv
84e049be07 build: Fixed some issues to make porting to other systems easier 2022-08-01 14:35:25 +02:00
WerWolv
be0fe4c0d0 build: Lower the macOS deployment target to 10.4 2022-08-01 14:19:56 +02:00
WerWolv
d8a4a94565 build: Explicitly mark libfmt as -fPIC 2022-08-01 14:07:03 +02:00
WerWolv
bed9f324ce feat: Added RGB565 color row to data inspector 2022-08-01 13:58:23 +02:00
WerWolv
3859336f0c fix: Crash when selecting folder as custom font path
Fixes #626
2022-08-01 13:57:52 +02:00
WerWolv
e530cdbc7f patterns: Updated pattern language 2022-08-01 13:20:54 +02:00
gudzpoz
eca5fb894f feat: Added LEB128 in data inspector (#615)
* feat: Added LEB128 in data inspector

* feat: Added support for editing LEB128 values

* Moved LEB functions from utils.cpp to crypto.cpp

* Added placeholders for translations

* Made DataInspector::impl::Entry.maxSize mandatory

* Fixed undefined leftshifting behaviour
2022-08-01 13:20:20 +02:00
WerWolv
64f962dbb2 patterns: Updated pattern language 2022-08-01 12:46:45 +02:00
WerWolv
763f15fa36 sys: Added setting to synchronize pattern source code between providers 2022-07-31 20:07:15 +02:00
iTrooz_
df94370598 build: Fix CI for Fedora, added caching, various other fixes (#613)
* Ci: use matrix for Fedora

* Ci: use ccache in Fedora build

* Ci: cache CMakeCache for Fedora

* build type release fedora

* Rawhide with lowercase

* strip binaries on Linux

* strip files for CPack (didn't test)

* add soversion to libimhex on Linux and MacOS

* fixed that typo
2022-07-31 17:29:57 +02:00
WerWolv
43988b8a7e ui: Modernize look and feel of data information view 2022-07-31 16:57:35 +02:00
WerWolv
4460d09140 ui: Fixed highlighting alpha value 2022-07-31 16:09:57 +02:00
iTrooz_
f23ee951d9 build: Use system curl on ArchLinux builds (#617) 2022-07-31 15:28:05 +02:00
WerWolv
a2443b26f7 fix: Crash when searching for an empty string 2022-07-31 15:17:24 +02:00
WerWolv
de2458f72d patterns: Added support for the new [[sealed]] attribute 2022-07-31 15:10:59 +02:00
WerWolv
4d3538781b sys: Copy pattern source code from current provider to newly created one 2022-07-31 11:09:20 +02:00
WerWolv
623756c4f4 fix: Duplicate provider tabs not being selectable
Fixes #616
2022-07-31 10:55:15 +02:00
Jonathan Wright
f12f10bc9e git: Added Fedora .rpm packaging to CI (#608)
* Update build.yml

* Update build.yml

* Update build.yml

* Update build.yml

* Update build.yml

* Update build.yml

* Update build.yml

* Update build.yml

* Update build.yml

* Update build.yml

* Update build.yml

* Update get_deps_fedora.sh

* Update build.yml

* Update get_deps_fedora.sh

* Update build.yml

* Update build.yml

* Update get_deps_fedora.sh

* Update build.yml

* Update build.yml

* Update build.yml

* Update build.yml

* Update build.yml

* Create imhex.spec

* Update build.yml

* Update build.yml

* Update build.yml

* Update build.yml

* Update imhex.spec

* Update build.yml

* Update README.md

* remove duplicate fedora build deps

* Fix license

* Use release tag 0

fedora official packaging starts at 1 so this will prevent conflicts and allow someone who manually installs the RPM to then later get updates from fedora repositories

* add RPMs to releases

* include rpms in releases

* fixed order of ops for fedora builds

* can't checkout without git...
2022-07-31 00:43:42 +02:00
WerWolv
1ed88f3910 fix: Byte editing mode not exiting when clicking somewhere else
Fixes #607
2022-07-30 23:01:25 +02:00
WerWolv
45ea22083e fix: Out of bounds memory read in hex editor with multi-byte visualizers 2022-07-30 22:44:02 +02:00
WerWolv
9ede1ab32c sys: Added provider open error message 2022-07-30 22:34:23 +02:00
WerWolv
3d5568f65f sys: Fixed global shortcuts not working correctly
Fixes #606
2022-07-30 22:01:49 +02:00
WerWolv
a097f162a7 ui: Added x3.0 and x4.0 scaling options
Closes #489
2022-07-30 21:38:46 +02:00
WerWolv
7a4541dac7 ui: Change the provider selector from a dropdown to a tab bar 2022-07-30 21:25:18 +02:00
WerWolv
376cf6e8fa git: Updated readme feature list a bit 2022-07-30 11:43:25 +02:00
WerWolv
063f59065b git: Fixed Windows portable nightly download link in readme 2022-07-30 11:32:09 +02:00
WerWolv
004cab13dc sys: Replaced many info logs with debug logs 2022-07-30 11:26:51 +02:00
WerWolv
24c243bcf6 sys: Reset settings if it cannot be parsed anymore 2022-07-30 11:19:56 +02:00
WerWolv
5c3a0cc654 ui: Fix window on macOS appearing really small
#551
2022-07-30 11:12:33 +02:00
WerWolv
2b9e43db82 fix: Crash when using BufferedReader ReverseIterator 2022-07-29 21:44:00 +02:00
WerWolv
419a2875b3 sys: Added filter option to find view 2022-07-29 18:49:43 +02:00
WerWolv
ce193a0098 ui: Improved hovering detection for drawing hex editor tooltips 2022-07-29 18:02:44 +02:00
WerWolv
6f3a5e896c sys: Fixed hidpi framebuffer scaling
Actually fixes #598
2022-07-29 17:37:30 +02:00
WerWolv
19222aefcc fix: Accidental syntax error 2022-07-29 14:05:30 +02:00
WerWolv
b7324913e9 sys: Replaced Search view with a generic Find view
Closes #551
2022-07-29 13:59:57 +02:00
WerWolv
1b68ea4eba sys: Prevent providers from being modified when any async task is running 2022-07-29 11:35:29 +02:00
WerWolv
621c28bf6f sys: Fix Intel GPU detection not being used 2022-07-29 11:34:55 +02:00
SiderealArt
864b853306 lang; Added Chinese (Traditional) translation (#593)
* add zh-tw translation

* translator name & remove duplicate
2022-07-27 16:47:03 +02:00
WerWolv
438386a224 build: Fixed build outside of plugins 2022-07-27 08:45:33 +02:00
WerWolv
80c4949dfb build: Cleanup version loading logic to make it available for plugins 2022-07-27 08:27:38 +02:00
WerWolv
54b31b8a55 build: Bumped version to 1.19.3 2022-07-26 16:13:07 +02:00
WerWolv
93aa1247df fix: Switching page when jumping to selection not working 2022-07-26 15:01:21 +02:00
WerWolv
fb4c21b97a build: Fix weird macOS build errors (#591)
* cleanup

* Remove prints
2022-07-26 14:59:08 +02:00
WerWolv
d356993e33 fix: Various search issues 2022-07-26 13:28:21 +02:00
WerWolv
cf017540e2 ui: Fixed rendering of advanced decoding highlighting with multi-byte visualizers 2022-07-25 23:46:32 +02:00
WerWolv
c776bb6c03 ui: Fixed hex editor highlighting with multi-byte visualizers 2022-07-25 15:13:26 +02:00
Polshakov Dmitry
e7399d223d fix: Bitfields not being displayed correctly in Pattern Data view (#580)
Co-authored-by: Dmitry Polshakov <dmitry.polshakov@dsr-corporation.com>
2022-07-25 12:09:28 +02:00
Forrest
8aff20b374 docs: Correct minor typo in windows.md (#582)
should read msys2 instead of mys2
2022-07-25 12:08:41 +02:00
catsout
3b8b95a22f fix: Add Config/DataHomeDir paths before Config/DataDirs paths (#586)
fix not saving to "XDG_DATA_HOME", when "XDG_DATA_DIRS" is available.  
fix "Content Store" persist in flatpak.

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
2022-07-25 12:08:10 +02:00
xtexChooser
2cb65aac72 lang: Fix typo in Chinese translation (#589) 2022-07-25 12:07:18 +02:00
WerWolv
0c8deecfc5 patterns: Updated pattern language 2022-07-25 11:50:46 +02:00
WerWolv
74f17fd638 ui: Properly hide hidden patterns in hex editor view 2022-07-25 11:33:30 +02:00
WerWolv
f3f13ae4d3 fix: Jumping to selection not working correctly with set base address 2022-07-23 21:31:54 +02:00
WerWolv
daffa4e555 fix: Edit -> Create Bookmark shortcut creating bookmark at wrong address 2022-07-23 21:17:17 +02:00
WerWolv
c618eec843 fix: Hex editor selection not working correctly when setting base address 2022-07-23 20:46:20 +02:00
WerWolv
71a7ae70d0 git: Fixed Arch Linux CI build issue 2022-07-23 20:42:59 +02:00
WerWolv
c1a2697e42 ui: Added filter to bookmarks view 2022-07-23 20:38:38 +02:00
WerWolv
d4dd57c7c8 fix: Setting base address causing hex editor to display zeros 2022-07-23 18:21:37 +02:00
WerWolv
9e3c6898ad fix: Multi-byte hex editor visualizers displaying incorrect bytes 2022-07-23 15:21:24 +02:00
WerWolv
b6d7fd6984 git: Make analysis workflow also pull latest patterns 2022-07-18 20:18:41 +02:00
WerWolv
d8eb027c94 git: Make tests also pull latest patterns 2022-07-18 20:15:14 +02:00
WerWolv
80d47b658e git: Fixed CI, updated all env var names 2022-07-18 20:13:01 +02:00
WerWolv
51f2b24daa git: Create new ImHex-Patterns release on new ImHex release 2022-07-18 20:02:12 +02:00
WerWolv
fe86f69da3 fix: Duplicate pattern data view entries when sorting the list
Fixes #584
2022-07-18 11:40:49 +02:00
WerWolv
2fb51d1a56 patterns: Fixed Bit and Bool operator mixup 2022-07-18 11:39:50 +02:00
WerWolv
ca3b5b72ca ui: Fixed highlighting color and tooltips 2022-07-17 13:12:28 +02:00
WerWolv
3db8e2aec2 build: Bumped version to 1.19.2 2022-07-16 13:41:37 +02:00
WerWolv
499b68b7ad build: Updated nativefiledialog library 2022-07-16 13:26:07 +02:00
WerWolv
2e3bb8e555 patterns: Don't display empty strings in pattern data view 2022-07-16 13:08:08 +02:00
WerWolv
0c9eab70d5 fix: Crash when searching for an empty string 2022-07-16 13:01:40 +02:00
WerWolv
0d3eaa5d86 patterns: Updated pattern language 2022-07-16 12:57:33 +02:00
WerWolv
c20634e093 sys: Fixed crash on exit 2022-07-16 12:14:15 +02:00
WerWolv
5ee3b550bc ui: Fixed advanced decoding cell sizes 2022-07-16 12:14:06 +02:00
WerWolv
831dac9b47 patterns: Updated pattern language 2022-07-15 11:38:46 +02:00
WerWolv
626c34dce8 sys: Upgrade codebase to C++23 2022-07-15 11:37:10 +02:00
Lukas Cone
ed67c20cba fix: User folders didnt load at startup (#578) 2022-07-14 11:38:23 +02:00
Lukas Cone
35c209c791 fix: In/Out variables not working, add recusive pattern scan (#579) 2022-07-14 11:37:02 +02:00
WerWolv
315109aa1f fix: Open File shortcut only working when Hex Editor view is selected
Fixes #576
2022-07-08 14:26:13 +02:00
WerWolv
a57fa34f82 build: Added option for Offline builds 2022-07-08 14:17:22 +02:00
iTrooz_
d1a2f7d6ed build: Cleanup package dependencies (#573)
* removed DEBIAN/imhex.desktop

* added licence to cmake install directory + fixed PKGBUILD to copy desktop file/licence

* removed gtk3 from packaging files

* added xdg-desktop-portal dependency

* adwaita theme should not be needed anymore

* added dbus dependency
2022-07-08 09:23:53 +02:00
WerWolv
8382f68601 fix: Data inspector string row not being editable correctly
Fixes #575
2022-07-08 09:21:49 +02:00
WerWolv
3aa1dd1e06 build: Added usp10 library to maybe provide Windows 7 support 2022-07-07 23:30:09 +02:00
WerWolv
0571fe383c fix: Duplicate file chooser popup entries not being selectable 2022-07-07 23:29:50 +02:00
WerWolv
461c5eac3e fix: Crash when closing the file picker without picking a file 2022-07-07 23:28:40 +02:00
KokaKiwi
e34f94bb79 build: Add xdg-desktop-portal for AUR package (#572)
* Add xdg-desktop-portal for AUR package

* Fix archlinux package build
2022-07-07 22:08:27 +02:00
WerWolv
071bae345e patterns: Fixed passing placed values to functions 2022-07-07 21:32:25 +02:00
WerWolv
9f4625aa00 fix: Editing float and double data inspector rows yielding wrong values
Fixes #571
2022-07-07 18:35:10 +02:00
iTrooz_
9837473810 git: Automatically create PatternLanguage release on new ImHex releases (#570) 2022-07-07 16:10:21 +02:00
WerWolv
9d3759c6cd build: Bumped version to 1.19.1 2022-07-07 08:48:37 +02:00
WerWolv
6aa55eb056 git: Make nightly download options more clear 2022-07-07 08:01:20 +02:00
WerWolv
c8b7f350ad ui: Fix rendering and default view initializing 2022-07-07 07:16:38 +02:00
WerWolv
b6b5045340 build: Downgrade nativefiledialog again 2022-07-06 16:58:36 +02:00
WerWolv
ab4f17a6f4 patterns: Fixed provider operation crash 2022-07-06 16:46:33 +02:00
WerWolv
541f1d5550 ui: Fixed positioning of UI 2022-07-06 16:40:30 +02:00
WerWolv
12942a4e71 build: Updated libromfs 2022-07-06 16:29:26 +02:00
WerWolv
1a378381bd build: Updated pattern language 2022-07-06 11:30:23 +02:00
WerWolv
1354c913a4 fix: UI stuttering when resizing or restoring window 2022-07-06 11:30:06 +02:00
WerWolv
c752fba1c4 ui: Added backdrop image when no views are open 2022-07-06 11:30:06 +02:00
WerWolv
d40a445f33 build: Updated various dependencies 2022-07-06 11:30:06 +02:00
WerWolv
e0cae1dacb patterns: Improved pattern formatting 2022-07-06 11:30:06 +02:00
WerWolv
31a746f3fc fix: Issue opening files that contain special characters on Linux
This is a (hopefully temporary) hack. Fixes #568
2022-07-06 11:29:24 +02:00
WerWolv
b401059678 ux: Automatically restore default layout when no view is open and a file is loaded 2022-07-05 12:10:54 +02:00
iTrooz_
a30f49c75e git: Improve size of Full Sources tar (#569)
* remove .git directories from Full sources

* actually compress Full sources
2022-07-05 10:12:16 +02:00
WerWolv
e981fa53f3 fix: std::u8string usage with nlohmann::json 2022-07-05 09:01:09 +02:00
WerWolv
4cd390ab02 fix: Various more unicode issues 2022-07-05 00:00:00 +02:00
WerWolv
716d6ae850 build: Bumped version to 1.19.0 2022-07-04 21:53:18 +02:00
iTrooz_
ceb07b7425 build: Added AUR/ArchLinux support (#566)
* store version in file

* use version file in release workflow

* use new version file in build workflow

* ArchLinux build

* setup cache for ArchLinux

* add version check in release CI

* edit step description

* update pkgbuild to install correctly

* AUR deploy

* rename version file to VERSION

* install all default plugins in PKGBUILD

* Added emojis to build workflow

* Added emojis to release workflow

* separate update packages and install dependencies in two steps

* fix Release CI

* add md5Sums to PKGBUILD

* make PKGBUILD point to the official repo + set v in tag
2022-07-04 21:40:22 +02:00
WerWolv
4885175ac6 build: Go back to macOS 11 to hopefully still support Catalina 2022-07-04 00:11:47 +02:00
WerWolv
d0f1a40f16 fix: Command Palette focus not working 2022-07-02 21:38:58 +02:00
WerWolv
fc20d751bb build: Use Portal instead of GTK file dialogs on Linux 2022-07-02 20:11:43 +02:00
iTrooz_
dfc22abf35 build: Fix AppImage file chooser crash (#567)
* add librsvg2-common

* removed that comment I should not have made in the first place
2022-07-02 19:04:51 +02:00
WerWolv
de269e7a48 sys: Remove remaining references to hex.builtin from libimhex 2022-07-02 17:53:13 +02:00
WerWolv
0ed885fe0f sys: Removed all references to hex.builtin from main application 2022-07-02 16:22:38 +02:00
WerWolv
f9fc7051fc tests: Added UTF-8 file operation tests 2022-07-02 10:05:25 +02:00
WerWolv
ab1f4df9d9 fix: In/Out variables not being added to the interface when using menu item to load pattern 2022-07-01 19:56:28 +02:00
WerWolv
710771b8b1 patterns: Cleanup pattern search 2022-07-01 19:12:01 +02:00
WerWolv
2d982e2088 fix: Drastically improve pattern highlighting performance 2022-07-01 19:05:53 +02:00
Shiroki Satsuki
ef5fbba56b feature: Added network proxy support for hex::Net (#562)
* feat(i18n): update Chinese(Simplified) translation

* feat: proxy setting

* refactor: add hex::Net::setProxy

* fix: undefined symbol: hex::Net::m_proxyUrl

* style: m_proxyUrl -> s_proxyUrl
2022-07-01 14:05:32 +02:00
WerWolv
eadcc6f38c sys: Modernize some constexpr arrays 2022-07-01 12:14:15 +02:00
WerWolv
3db50a690c fix: Various issues with UTF-8 paths 2022-06-30 19:39:06 +02:00
WerWolv
96aa929c31 fix: Removed additional } 2022-06-30 15:33:21 +02:00
WerWolv
e07fc76abf fix: MacOS include 2022-06-30 15:28:51 +02:00
WerWolv
f01e227c87 sys: Added missing macOS includes 2022-06-30 15:20:13 +02:00
iTrooz_
cd34d567a7 build: Install pattern files in the right place (#564) 2022-06-30 15:11:00 +02:00
WerWolv
bb429aae62 fix: Theme detection issues on all OSes 2022-06-30 15:09:57 +02:00
WerWolv
19f99bab0c fix: Issues when opening files with unicode names 2022-06-30 14:57:05 +02:00
WerWolv
1f433fc36d sys: Fixed byte units 2022-06-30 11:43:40 +02:00
WerWolv
034cc0cd2f ui: Improved byte selection text 2022-06-30 11:29:20 +02:00
WerWolv
3efdc02fed patterns: Improved automatic heap management 2022-06-30 11:19:37 +02:00
WerWolv
501d141e13 patterns: Added support for custom local types 2022-06-30 08:14:33 +02:00
WerWolv
9c1006f3ae fix: Compile errors because of Windows function defined on all systems 2022-06-30 07:47:32 +02:00
WerWolv
5b0813478e fix: Copying to clipboard not working correctly with non-english locales
Fixes #563
2022-06-30 07:44:22 +02:00
WerWolv
ac964dc5ec fix: Path handling and plugin loading breaking with non-ASCII paths 2022-06-29 21:34:17 +02:00
iTrooz_
11c2f240a1 git: Add version to artifact names (#559)
* Version file test

* change artifacts names

* Release updated

* Set release job name

* set branch to the branch used to release

* Set version for Windows Portable

* git: New cache update (#558)

* add CMakeCache.txt to cache

* added workflow_dispatch to workflows

* remove restore-keys from workflows

* Separated cache

* re-added restore-keys

* put the version file for all OS

* fix: In/Out parameters not working correctly when using the preprocessor

* update submodules

Co-authored-by: WerWolv <werwolv98@gmail.com>
2022-06-29 15:01:08 +02:00
WerWolv
8db2bdb6a7 fix: In/Out parameters not working correctly when using the preprocessor 2022-06-29 10:25:30 +02:00
iTrooz_
7242eb8f4c git: New cache update (#558)
* add CMakeCache.txt to cache

* added workflow_dispatch to workflows

* remove restore-keys from workflows

* Separated cache

* re-added restore-keys
2022-06-29 00:24:53 +02:00
Shiroki Satsuki
60c6abbfcc lang: Update Chinese(Simplified) translation (#556)
* feat(i18n): update Chinese(Simplified) translation

* format: plugins/builtin/source/lang/zh_CN.cpp

* feat(i18n): update Chinese(Simplified) translation

* fix: revert submodule downgrade
2022-06-28 08:39:30 +02:00
WerWolv
a4c432f435 git: Moved build instructions from the readme to individual files 2022-06-27 21:11:35 +02:00
WerWolv
d50be26771 lang: Fixed hardcoded localization string
#556
2022-06-27 18:41:13 +02:00
WerWolv
673027c82d fix: Crash on exit 2022-06-27 17:01:21 +02:00
WerWolv
e02ccd9b9b patterns: Actually fixed endian inversion in functions 2022-06-27 16:27:19 +02:00
WerWolv
956276d1ee patterns: Fixed endian inversion in functions
Fixes #555
2022-06-27 15:15:10 +02:00
WerWolv
a936cf1ce4 fix: Another file read issue 2022-06-27 15:08:22 +02:00
WerWolv
5800546369 fix: Tar extraction and file string read error 2022-06-27 14:58:40 +02:00
iTrooz_
01adc8a2cd build: Fix various CI caching issues (#553)
* removed restore-keys

* updated cache for Ubuntu 22

* using ccache on OBJC and OBJCXX

* Bonus: fix release workflow
2022-06-27 00:20:32 +02:00
WerWolv
b1b33b2ae4 ui: Added back missing selection byte count value 2022-06-25 23:01:38 +02:00
WerWolv
6506291e4e ui: Updated About page icon 2022-06-25 12:29:16 +02:00
WerWolv
3471b314dd build: Switch to GCC on MacOS (#552)
* build: Experimentally switch to gcc on macOS

* build: Corrected gcc paths

* build: Enable objective c support on macOS

* build: Enable ObjC and ObjC++ on macOS

* build: Add ObjC and ObjC++ flags

* build: Try compiling objc with clang

* build: Remove invalid flags again

* fix: Let's not include objc headers in C++ code

* sys: Move macos utils code to its own file

* fix: Missing unistd include on mac

* sys: Removed loader script stuff since it's currently unused and broken

* fix: Missing include

* fix: Another missing include

* fix: CFURLCreateWithBytes wants a pointer to mutable data

* fix: Try disabling name mangling of ObjC functions

* sys: Move macos utils declarations to its own header file

* fix: C Linkage

* fix: Move objc function prototypes to C++ headers

* fix: More missing includes

* fix: Warning error

* sys: Call ObjC with C ABI instead of trying to use C++

* build: Update libraries

* sys: Fixed build errors

* sys: No const correctness I guess

* sys: Fixed prototypes

* sys: This is C now

* sys: More nullptr -> NULL

* sys: Fix crash on exit

* sys: Try using proper std concepts instead of custom ones

* sys: Replaced another hex::is_signed

* build: Upgrade to gcc 12 and MacOS Monterey

* build: Fixed MacOS runner name

* build: Cache correct ccache folder on macOS
2022-06-25 12:19:59 +02:00
iTrooz_
546d0a4922 build: Fix the .dmg structure (#550)
* build: Initial attempt to fix .dmg mess

* build: Still download database resources on other OSes

* build: Try fixing path recursion error

* build: Move main executable and database files to correct folder

* build: Install main executable without installing python stuff

* build: Move things around to maybe get them to be bundled

* I wanna die

* renamed imhex.app to Imhex.app

* net.WerWolv.ImHex

Co-authored-by: WerWolv <werwolv98@gmail.com>
2022-06-24 00:27:35 +02:00
iTrooz_
c6989c2ef7 build: Fixed various issues with the CI and Linux packages (#548)
* Ci: added workflow_dispatch trigger

* Ci: removed fetch depth

* Ci: Add information to generated artifacts

* Ci: Updated Linux runner to Ubuntu 22.04

* Packaging: Updated .deb dependencies

* Ci: Removed ELF artifact

* Ci: Upgraded actions versions

* Ci: Switch to gcc-11 for unit tests and analysis
2022-06-23 23:48:02 +02:00
WerWolv
a5aa002752 patterns: Moved most built-in functions to the pattern language repo 2022-06-23 19:33:30 +02:00
Zakhar Afonin
b89490bca3 ui: New icons, as discussed in #545 (#546)
* Restyled macOS icon for Big Sur

* Update other icons

* Different gradients

* Reverted macOS icon because of design guidelines

* Final version of new icons
2022-06-20 14:12:34 +02:00
iTrooz_
e33726f526 git: Added automatic release and source tar upload on release (#537)
* added release.yml

* Build CI now only triggers on branch push
2022-06-19 15:16:03 +02:00
WerWolv
c238767750 fix: Hex editor selection moving with shift + arrow keys not working correctly 2022-06-19 15:09:38 +02:00
WerWolv
116aeede2d lang: Fixed some localization issues 2022-06-17 14:35:54 +02:00
Polshakov Dmitry
662d80abea feat: Add ability to remove bytes (#531)
Co-authored-by: Dmitry Polshakov <dmitry.polshakov@dsr-corporation.com>
2022-06-17 14:21:56 +02:00
WerWolv
f6ddb3c5e7 fix: Hex editor cell editing value taking value of next cell when double clicking
Fixes #541
2022-06-17 14:08:12 +02:00
WerWolv
6490e565d3 patterns: Fixed formatting issue with values of static arrays
Fixes #540
2022-06-17 13:47:49 +02:00
WerWolv
6b7ade8d61 fix: MacOS build error 2022-06-17 10:42:54 +02:00
WerWolv
9b77d7b5e2 fix: MacOS build error 2022-06-17 10:31:28 +02:00
WerWolv
1785088456 fix: MacOS looking for plugins in wrong folder inside of bundle
Hopefully addresses #539
2022-06-17 10:23:28 +02:00
WerWolv
4dcd26a21f fix: Editing value not being updated correctly when moving to next hex cell
Fixes #538
2022-06-17 10:16:58 +02:00
WerWolv
12e99a9d4c build: Output plugin files to correct path on build on Windows as well 2022-06-16 15:42:27 +02:00
WerWolv
5e67a1f27b sys: Refactor tar file operations into their own class 2022-06-16 15:42:08 +02:00
WerWolv
2a76e45dc5 build: Output plugin files to correct path on build on Linux
Fixes #536
2022-06-16 06:55:57 +02:00
WerWolv
6266883e81 fix: Crash when undocking hex editor view 2022-06-14 13:37:37 +02:00
WerWolv
aed9d15625 ux: Fix hex editor selection sometimes setting end to max address 2022-06-14 11:58:50 +02:00
WerWolv
5551e82fea ui: Fix hash function name localization 2022-06-14 11:54:34 +02:00
WerWolv
653a688fe6 fix: Very inefficient iterating over static array patterns
Fixes #532
2022-06-14 10:29:41 +02:00
WerWolv
dfc1dc2529 fix: Highlighting of static arrays that start at uneven addresses
Fixes #534
2022-06-14 10:19:59 +02:00
WerWolv
1e511acf37 fix: More vector out of bounds accesses 2022-06-14 10:17:50 +02:00
WerWolv
141ee62af9 ui: Fixed various background color issues with the new hex editor view
Closes #533
2022-06-13 23:43:34 +02:00
WerWolv
a5d202ffc8 fix: Vector out of bounds access 2022-06-13 21:56:02 +02:00
Polshakov Dmitry
f243ac7464 fix: correctly show checked plugin files (#529)
Co-authored-by: Dmitry Polshakov <dmitry.polshakov@dsr-corporation.com>
2022-06-09 15:58:40 +02:00
Polshakov Dmitry
91ac9ca120 fix: change displayEnd by reference in case of double click (#530)
Co-authored-by: Dmitry Polshakov <dmitry.polshakov@dsr-corporation.com>
2022-06-09 15:58:18 +02:00
WerWolv
a56ba50cf9 ux: Improved scrolling behaviour in hex editor view
Fixes #528
2022-06-09 15:57:25 +02:00
WerWolv
fdaad55cc6 ui: Fix misaligned selection highlighting in very big files 2022-06-09 15:10:33 +02:00
dependabot[bot]
9d19214be9 build(deps): Bump regex from 1.5.4 to 1.5.6 in /lib/libimhex-rs (#526)
Bumps [regex](https://github.com/rust-lang/regex) from 1.5.4 to 1.5.6.
- [Release notes](https://github.com/rust-lang/regex/releases)
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/regex/compare/1.5.4...1.5.6)

---
updated-dependencies:
- dependency-name: regex
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-08 16:19:16 +02:00
gordon--
038a6b9757 fix: Fallback languge being set to Portuguese (#524) 2022-06-04 15:52:02 +02:00
WerWolv
bad109ef8d fix: Resize and Insert bytes popups not working correctly 2022-06-03 18:47:03 +02:00
WerWolv
5623e1342b fix: Crashes when parsing invalid wstrings 2022-06-03 18:46:38 +02:00
WerWolv
6bad50c78b build: Bumped version to 1.18.2 2022-06-03 13:33:21 +02:00
WerWolv
6929ffb865 lang: Hooked up Brazilian Portuguese translation to the interface 2022-06-03 11:34:31 +02:00
WerWolv
2d7fdc0896 ui: Added hovering zoom popup to all visualizer nodes
Closes #519
2022-06-03 11:17:41 +02:00
WerWolv
d1d73bcff6 fix: Editing bytes in the hex editor being broken
Fixed #521
2022-06-03 10:53:03 +02:00
WerWolv
bf1441223c fix: Crash when no monitors have been defined by the OS 2022-06-03 10:35:47 +02:00
WerWolv
fadca9a34a fix: Bookmark header collapsing when name gets changed 2022-06-03 10:35:47 +02:00
Douglas Vianna
2ef3a0c157 lang: Added Brazilian Portuguese translation (#520)
* Add files via upload

* Add files via upload

* Update pt_BR.cpp
2022-06-01 20:17:28 +02:00
WerWolv
c96a0a7bda lang: Added missing localization for the hash view rewrite 2022-05-30 16:53:01 +02:00
WerWolv
fe6be686b7 ui/ux: Complete rewrite of the Hash view 2022-05-30 16:36:46 +02:00
WerWolv
05862ae991 ui: Make pattern editor error popup text more readable
Closes #517
2022-05-29 21:54:40 +02:00
WerWolv
6a6b6b94cf fix: std::pow on macOS not supporting i128 2022-05-29 20:52:22 +02:00
WerWolv
4701b1b67c fix: Pasting bytes in hex editor yielding wrong results
Closes #516
2022-05-29 19:00:21 +02:00
WerWolv
f1b2d5881e tools: Added IEEE 756 floating point number tester 2022-05-29 14:57:59 +02:00
WerWolv
efed07ac8b ux: Fixed another hex editor scroll issue 2022-05-28 22:31:40 +02:00
WerWolv
e5ff987392 build: Bumped version to 1.18.1 2022-05-28 20:14:30 +02:00
WerWolv
8a24517fb9 fix: Disable warnings only on GCC 12 and higher 2022-05-28 19:59:38 +02:00
WerWolv
a4c8bcab18 fix: Disable another warning to make macOS happy 2022-05-28 16:36:00 +02:00
WerWolv
4fd8ada4ff fix: Crash on exit 2022-05-28 16:33:52 +02:00
WerWolv
7bf94ffe42 fix: Compile errors on platforms that don't support -Wstringop-overread yet 2022-05-28 16:24:57 +02:00
WerWolv
088205385f fix: Workaround that broke functionality. Instead disable warnings
This actually fixes #515 for now
2022-05-28 16:19:08 +02:00
WerWolv
39c743631b fix: Weird build error on GCC 12.1.0 again
This fixes #515
2022-05-28 15:46:39 +02:00
WerWolv
603a95debb patterns: Updated pattern language 2022-05-28 14:14:12 +02:00
WerWolv
28a8adb26d fix: Hex editor selection scrolling not working correctly 2022-05-28 13:38:36 +02:00
WerWolv
e2bfd26bb3 fix: Bookmark menu entry causing wrong region to be marked 2022-05-28 12:56:26 +02:00
WerWolv
857aadfa61 build: Bumped version to 1.18.0 2022-05-28 11:44:56 +02:00
WerWolv
b8bbbd5489 feature: Added bool, DOS Date and DOS Time data inspector line 2022-05-27 20:49:38 +02:00
WerWolv
ffb9a8b7ed feature: Added Invert option to data inspector 2022-05-27 20:46:16 +02:00
WerWolv
b751f98e91 ui/ux: Rewrite of the entire hex editor view to make it more flexible (#512)
* ui/ux: Initial recreation of the hex editor view

* ui/ux: Added back support for editing cells

* ux: Make scrolling and selecting bytes feel nice again

* ui/ux: Improved byte selecting, added footer

* sys: Make math evaluator more generic to support integer only calculations

* patterns: Moved value formatting into pattern language

* ui/ux: Added Goto and Search popups, improved selection

* ui: Added better tooltips for bookmarks and patterns

* sys: Use worse hex search algorithm on macOS

Sadly it still doesn't support `std::boyer_moore_horsepool_searcher`

* ui: Added back missing events, menu items and shortcuts

* fix: Bookmark highlighting being rendered off by one

* fix: Various macOS build errors

* fix: size_t is not u64 on macos

* fix: std::fmod and std::pow not working with integer types on macos

* fix: Missing semicolons

* sys: Added proper integer pow function

* ui: Added back support for custom encodings

* fix: Editor not jumping to selection when selection gets changed

* ui: Turn Hexii setting into a data visualizer

* sys: Added back remaining shortcuts

* sys: Remove old hex editor files

* sys: Moved more legacy things away from the hex editor view, updated localization

* fix: Hex editor scrolling behaving weirdly and inconsistently

* sys: Cleaned up Hex editor code

* sys: Added selection color setting, localized all new settings

* fix: Search feature not working correctly

* ui: Replace custom ImGui::Disabled function with native ImGui ones

* ui: Fix bookmark tooltip rendering issues

* fix: Another size_t not being 64 bit issue on MacOS
2022-05-27 20:42:07 +02:00
Matthias Mailänder
c0ceaa4195 build: Fixed the .desktop file (#513)
* Don't hardcode the path in here

* This is not a GNOME application
2022-05-27 20:20:42 +02:00
WerWolv
6121c35e02 git: Remove yaru icon theme from AppImage bundling 2022-05-23 13:44:36 +02:00
iTrooz_
c3ea0c74ee git: Fixed libicu version for AppImages (#510) 2022-05-23 10:13:20 +02:00
xtexChooser
610f189839 feat(wiki): Support custom language for Wikipedia (#505)
* sys: support typeless settings

* feat(wiki): support custom language for Wikipedia

* update
2022-05-22 23:26:46 +02:00
iTrooz_
5b74739c51 git: Fixed CI failing with AppImages (#509) 2022-05-22 23:23:54 +02:00
WerWolv
775e87ff1f patterns: Updated pattern language 2022-05-22 09:27:02 +02:00
WerWolv
c4b7d89713 fix: Random build errors with GCC 12.1.0 2022-05-17 20:46:42 +02:00
WerWolv
5f17d7aa75 fix: Narrowing conversion error in Encoding File parsing 2022-05-17 17:49:14 +02:00
xtexChooser
3595a94b67 feat(i18n): update Chinese(Simplified) translation (#502) 2022-05-11 21:52:50 +02:00
WerWolv
435edad604 patterns: Updated pattern language 2022-04-29 23:02:10 +02:00
WerWolv
87e616ad23 patterns: Fixed MIME pragma not being registered correctly 2022-04-27 08:54:38 +02:00
WerWolv
9d556ecc0f build: Bumped version to 1.17.0 2022-04-18 01:53:01 +02:00
WerWolv
ea2c2df614 sys: Updated pattern language library 2022-04-18 01:22:06 +02:00
Lukas Cone
202a02af10 fix: Crash on linux when opened file gets modified (#487) 2022-04-17 23:07:14 +02:00
WerWolv
6ee71e3a9e sys: Fixed log spam when displaying the custom paths settings tab 2022-04-17 23:05:03 +02:00
WerWolv
1e7ed14810 tests: Removed pattern language tests as they are now done in their own repo 2022-04-17 18:11:39 +02:00
WerWolv
17383083fb patterns: Use standalone pattern language library instead of built-in one 2022-04-17 16:57:30 +02:00
WerWolv
f5fe49923b fix: Let's not cause UB on every event call... 2022-04-15 19:02:36 +02:00
WerWolv
457d338a97 ui: Include null byte in InputText fields 2022-04-14 15:29:54 +02:00
Polshakov Dmitry
4928c044af patterns: Move pattern drawer into builtin plugin (#482)
Co-authored-by: Dmitry Polshakov <dmitry.polshakov@dsr-corporation.com>
2022-04-08 16:08:02 +02:00
WerWolv
299c69686e git: Move pattern repo link further up to make it easier to find 2022-04-08 14:26:56 +02:00
WerWolv
b7132af214 patterns: Added missing override 2022-04-07 18:19:19 +02:00
WerWolv
74a5c974e6 patterns: Fixed comments behind pre-processor defines 2022-04-07 13:15:07 +02:00
WerWolv
942a4e9616 patterns: Fixed selection of static array entries 2022-04-07 12:59:23 +02:00
WerWolv
76f732dc53 patterns: Fixed various render issues 2022-04-07 12:47:45 +02:00
WerWolv
0462cc3d0c sys: Enable -Wall, -Wextra, -Werror and fix all warnings on all Platforms (#483)
* sys: Make ImHex compile with -Wall -Wextra -Werror

* sys: Fixed various build errors on Linux

* sys: Explicitly ignore return value of `system` function

* sys: More fixes for the warnings GitHub Actions enables somehow

* sys: More fixes

* sys: Remove -Werror again to see all GitHub Actions warnings

* sys: Hopefully fixed all remaining warnings

* sys: Added back -Werror

* git: Change windows icon in GitHub Actions
2022-03-27 00:01:28 +01:00
WerWolv
965207d688 ui: Replace data inspector endian and format radio boxes with sliders 2022-03-26 17:44:01 +01:00
WerWolv
0f0a836fa0 ui: Enable undo and redo menu items only if that action is available 2022-03-26 17:21:51 +01:00
WerWolv
29fb1de882 ui/ux: Make information view plots not capture scroll, removed plot background 2022-03-26 17:19:08 +01:00
WerWolv
a807dc81a0 ui: Fixed displaying of file stat times in information view 2022-03-26 17:18:40 +01:00
WerWolv
a4d3173da9 ux: Moved bookmark remove button from body to header 2022-03-26 16:55:48 +01:00
WerWolv
4b6a76bf02 fix: Bookmarks not always creating new highlights correctly 2022-03-26 16:54:15 +01:00
WerWolv
35a520f132 ux: Disable various menu items when no provider is active 2022-03-26 16:42:11 +01:00
WerWolv
1c53d2c123 ux: Automatically remove recently opened file entries if the file doesn't exist anymore 2022-03-26 16:34:29 +01:00
WerWolv
591d98b55b sys: Improved string search filtering 2022-03-25 21:08:38 +01:00
WerWolv
f39ec58435 ui: Use pretty hexadecimal input fields in more places 2022-03-25 21:07:41 +01:00
WerWolv
e72a30ca59 patterns: Make default parameters work properly with parameter packs 2022-03-25 09:53:58 +01:00
WerWolv
368c943040 patterns: Added default parameters 2022-03-24 20:31:45 +01:00
WerWolv
a16e387dff patterns: Fixed copying of type decl nodes 2022-03-24 18:00:00 +01:00
WerWolv
95cf828975 patterns: Prevent usage of incomplete types 2022-03-24 17:00:10 +01:00
WerWolv
c09d85f46d patterns: Allow forward declaring of types 2022-03-24 16:57:12 +01:00
WerWolv
c2803fe1e2 sys: Fixed build errors and warnings on Unix 2022-03-22 09:34:26 +01:00
WerWolv
98dfc2e286 sys: Replace __builtin_unreachable() with hex::unreachable() 2022-03-22 09:08:34 +01:00
WerWolv
ea848dbfc0 ux: Added support for mathematical expressions in goto fields 2022-03-22 09:06:02 +01:00
WerWolv
f7cfee55d5 ui: Enable multi viewports on Linux again if you're not on Wayland 2022-03-22 08:20:14 +01:00
WerWolv
26a7b3325d patterns: Unified displaying and stringifying string patterns 2022-03-22 08:19:46 +01:00
WerWolv
47fd5bdc00 patterns: Fixed pointer type displaying causing crashes
Fixes #480
2022-03-22 08:19:14 +01:00
Polshakov Dmitry
5dfa9cf501 patterns: Move logic to draw patterns into separate class (#472)
* refactor(patterns): add visitor interface

* refactor(patterns): add public accessors

* refactor(patterns): add method to get pattern value

* refactor(pattern): make some methods public

* refactor(pattern): extract code to draw GUI

* refactor(patterns): remove GUI related code from patterns

* refactor: move common GUI function from pattern to pattern_drawer

* refactor(pattern_drawer): extract common code into methods

* refactor: rename ImGuiDrawer -> PatternDrawer

* refactor(patternr): move displayEnd into PatternDrawer

* refactor: use ArrayPattern concept to restrict argument type

Co-authored-by: Dmitry Polshakov <dmitry.polshakov@dsr-corporation.com>
2022-03-21 13:52:07 +01:00
WerWolv
854c99bafa build: Replace manual AppImage bundling with appimage-builder script (#477)
* build: Tried to streamline and fix AppImage building

* build: Tried fixing build

* build: Added back version key

* build: Fixed AppImage name

* build: Fixed python bundling, fixed ELF uploading

* build: Don't upload a bunch of AppImage garbage files in the portable ELF version

* build: Fixed another wrong library path

* build: Removed old manual AppImage building scripts
2022-03-20 23:43:55 +01:00
Polshakov Dmitry
937ccbc5bd patterns: Restore data offset for local variables / added array, nested structs and functions tests (#475)
* fix(eval): restore data offset for local variables

* test(pattern_lang): add tests for arrays, nested structs and functions

Co-authored-by: Dmitry Polshakov <dmitry.polshakov@dsr-corporation.com>
2022-03-20 21:42:21 +01:00
WerWolv
bc7c494316 patterns: Fixed highlighting of static array entries 2022-03-19 00:47:36 +01:00
WerWolv
17a2be41da patterns: Fixed crash when applying certain attributes to types 2022-03-19 00:24:41 +01:00
Lukas Cone
ab5966fa9d ui: fixed theme not changing on startup (#474) 2022-03-18 17:01:39 +01:00
WerWolv
89fe063b02 patterns: Fixed struct members that overlap with [[no_unique_address]] members not being highlighted 2022-03-17 23:32:22 +01:00
WerWolv
7061a1ebfa patterns: Allow bitfield fields to be selected 2022-03-17 23:31:36 +01:00
WerWolv
ec9a947259 patterns: Fixed highlight colors of arrays not matching color shown in pattern data view 2022-03-17 23:31:16 +01:00
WerWolv
11441d632b patterns: Fixed indentation of inlined variables 2022-03-17 23:30:38 +01:00
WerWolv
a17b647e79 patterns: Fixed static arrays showing same value for all entries 2022-03-17 23:29:52 +01:00
WerWolv
2d87d29fa0 patterns: Fixed recursive types 2022-03-17 00:10:16 +01:00
WerWolv
844845223f fix: Saving interface.ini file failing if imhex is installed in a non-writable location
Fixes #473
2022-03-16 13:23:36 +01:00
WerWolv
f2159e26d2 build: Updated libromfs 2022-03-16 00:15:06 +01:00
Polshakov Dmitry
d677762dff perf(pattern): save display value in cache (#466)
Co-authored-by: Dmitry Polshakov <dmitry.polshakov@dsr-corporation.com>
2022-03-16 00:01:01 +01:00
WerWolv
3801e0d60b build: Remove yara's cuckoo module again since we don't have jansson available 2022-03-15 23:54:55 +01:00
WerWolv
f6a498854c ui: Added console to yara view, add support for yara's new console module 2022-03-15 23:48:49 +01:00
WerWolv
29ded2483c sys: Make sure deferred call adding is thread safe 2022-03-15 23:46:02 +01:00
WerWolv
050e17298a build: Updated various dependencies 2022-03-15 23:45:33 +01:00
WerWolv
af882b172e sys: Cache provider validity when drawing toolbar items
Possibly addresses issue mentioned in #465
2022-03-13 17:46:59 +01:00
WerWolv
caad8c25ad sys: Prevent splash screen from creating a imgui.ini save file
Fixes #467
2022-03-13 17:36:50 +01:00
WerWolv
74ef9ece30 ui: Properly clear highlighting cache when switching provider
Fixes #471
2022-03-13 17:33:27 +01:00
WerWolv
97bfb4004b fix: Crash when custom font file can't be found
Fixes #468
2022-03-13 17:11:02 +01:00
Lukas Cone
3da1b3f05d ui/patterns: Added settings tooltips, fixed pattern crash (#464)
* fix: pattern segfault typo

* ui: added few tooltips into settings

Co-authored-by: WerWolv <werwolv98@gmail.com>
2022-03-05 23:32:30 +01:00
xtexChooser
f21b22ae15 feat(i18n): update Chinese(Simplified) translations (#463)
* feat(i18n): update Chinese(Simplified) translations

* fix(i18n): fix typo

* feat(i18n): update translations
2022-03-05 23:30:21 +01:00
WerWolv
327e904dbc sys: Fixed many clang tidy warnings and typos 2022-03-04 20:52:39 +01:00
WerWolv
57c449936f sys: Improved math evaluator 2022-03-04 19:20:21 +01:00
WerWolv
efe6137067 ui: Improved look of the about page 2022-03-04 19:06:29 +01:00
WerWolv
96e9400761 sys: Fixed unit test building 2022-03-04 14:34:37 +01:00
WerWolv
6a517feda3 sys: More Linux and macOS build fixes 2022-03-04 14:00:02 +01:00
WerWolv
3b7a928313 sys: Fixed missing includes on Unix 2022-03-04 11:44:11 +01:00
WerWolv
2739320f10 sys: Refactor of filesystem functions. Fixed crashes where fs errors weren't caught correctly
Addresses the crash mentioned in #462
2022-03-04 11:36:37 +01:00
WerWolv
7866e3fc2a build: Bumped version to 1.16.2 2022-03-03 14:32:30 +01:00
WerWolv
2abf89cd16 tests: Fixed build 2022-03-03 13:35:12 +01:00
WerWolv
8b2dcf976f patterns: Fixed auto parameter crash 2022-03-03 13:34:05 +01:00
WerWolv
559b86efe1 patterns: Display actual type name of types declared with using 2022-03-03 13:33:45 +01:00
WerWolv
949a26ca0e patterns: Fixed memory leak when using format attribute 2022-03-03 12:11:47 +01:00
WerWolv
2880ca00da patterns: Fixed crash when using attributes 2022-03-03 11:19:46 +01:00
WerWolv
39da62532b fix: Trailing zero at end of string input buffers 2022-03-03 09:27:27 +01:00
WerWolv
483ba95d80 fix: Some text boxes not being writable 2022-03-03 09:24:09 +01:00
WerWolv
2300b0c692 fix: Searching not working at all 2022-03-03 09:06:10 +01:00
WerWolv
cc59b36c54 patterns: Properly reset back current control flow type in arrays
Fixes issue mentioned in #460
2022-03-01 20:57:21 +01:00
WerWolv
61d9918dae patterns: Evaluate return value before setting control flow type
Fixes another issue mentioned in #460
2022-03-01 20:37:27 +01:00
WerWolv
2c361f9b0a build: Don't bundle yara rules anymore because Microsoft Defender is a little cry baby 2022-03-01 20:27:19 +01:00
WerWolv
775b3e8c52 patterns: Fixed crash when using control flow statements without value
Fixes #460
2022-03-01 20:17:03 +01:00
WerWolv
2a989c6cc1 build: Bumped version to 1.16.1 2022-03-01 18:18:56 +01:00
WerWolv
3d7adf6483 patterns: Make std::mem::find_sequence_in_range return -1 when no sequence is found 2022-03-01 16:55:45 +01:00
WerWolv
56079f70c7 ui: Added alpha preview to color picker tool 2022-03-01 16:36:06 +01:00
WerWolv
6c9e969099 ui: Improved base address setter popup 2022-03-01 16:23:53 +01:00
WerWolv
76f8e6d6ef fix: Crash when searching for empty strings 2022-03-01 16:18:39 +01:00
WerWolv
174cf3ed95 fix: Crash when entering too much text in various text boxes 2022-03-01 16:12:00 +01:00
WerWolv
540f468e8a patterns: Fixed offset being incorrectly incremented when calling functions 2022-03-01 09:40:08 +01:00
1059 changed files with 265664 additions and 220329 deletions

View File

@@ -1,178 +0,0 @@
---
Language: Cpp
# BasedOnStyle: LLVM
AccessModifierOffset: -4
AlignAfterOpenBracket: false
AlignArrayOfStructures: Left
AlignConsecutiveMacros: Consecutive
AlignConsecutiveAssignments: Consecutive
AlignConsecutiveBitFields: AcrossEmptyLinesAndComments
AlignConsecutiveDeclarations: None
AlignEscapedNewlines: Left
AlignOperands: Align
AlignTrailingComments: true
AllowAllArgumentsOnNextLine: true
AllowAllConstructorInitializersOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortEnumsOnASingleLine: false
AllowShortBlocksOnASingleLine: Always
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: All
AllowShortLambdasOnASingleLine: All
AllowShortIfStatementsOnASingleLine: AllIfsAndElse
AllowShortLoopsOnASingleLine: true
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: Yes
AttributeMacros:
- __capability
BinPackArguments: false
BinPackParameters: false
BraceWrapping:
AfterCaseLabel: false
AfterClass: false
AfterControlStatement: Never
AfterEnum: false
AfterFunction: false
AfterNamespace: false
AfterObjCDeclaration: false
AfterStruct: false
AfterUnion: false
AfterExternBlock: false
BeforeCatch: false
BeforeElse: false
BeforeLambdaBody: false
BeforeWhile: false
IndentBraces: false
SplitEmptyFunction: false
SplitEmptyRecord: false
SplitEmptyNamespace: false
BreakBeforeBinaryOperators: None
BreakBeforeConceptDeclarations: false
BreakBeforeBraces: Attach
BreakBeforeInheritanceComma: false
BreakInheritanceList: AfterComma
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: false
BreakConstructorInitializers: BeforeColon
BreakAfterJavaFieldAnnotations: false
BreakStringLiterals: false
ColumnLimit: 0
CommentPragmas: '^ IWYU pragma:'
CompactNamespaces: false
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: false
DeriveLineEnding: true
DerivePointerAlignment: false
DisableFormat: false
EmptyLineAfterAccessModifier: Never
EmptyLineBeforeAccessModifier: LogicalBlock
ExperimentalAutoDetectBinPacking: true
FixNamespaceComments: false
ForEachMacros:
- foreach
- Q_FOREACH
- BOOST_FOREACH
IfMacros:
- KJ_IF_MAYBE
IncludeBlocks: Regroup
IncludeCategories:
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
Priority: 2
SortPriority: 0
CaseSensitive: false
- Regex: '^(<|"(gtest|gmock|isl|json)/)'
Priority: 3
SortPriority: 0
CaseSensitive: false
- Regex: '.*'
Priority: 1
SortPriority: 0
CaseSensitive: false
IncludeIsMainRegex: '(Test)?$'
IncludeIsMainSourceRegex: ''
IndentAccessModifiers: false
IndentCaseLabels: true
IndentCaseBlocks: true
IndentGotoLabels: true
IndentPPDirectives: BeforeHash
IndentExternBlock: Indent
IndentRequires: false
IndentWidth: 4
IndentWrappedFunctionNames: false
InsertTrailingCommas: None
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: true
LambdaBodyIndentation: Signature
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 2
NamespaceIndentation: All
ObjCBinPackProtocolList: Auto
ObjCBlockIndentWidth: 4
ObjCBreakBeforeNestedBlockParam: true
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: true
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyBreakTemplateDeclaration: 10
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 60
PenaltyIndentedWhitespace: 0
PointerAlignment: Right
PPIndentWidth: 4
ReferenceAlignment: Pointer
ReflowComments: true
ShortNamespaceLines: 5
SortIncludes: Never
SortJavaStaticImport: Before
SortUsingDeclarations: true
SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: false
SpaceBeforeAssignmentOperators: true
SpaceBeforeCaseColon: false
SpaceBeforeCpp11BracedList: true
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: ControlStatements
SpaceAroundPointerQualifiers: Default
SpaceBeforeRangeBasedForLoopColon: true
SpaceInEmptyBlock: true
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 4
SpacesInAngles: Never
SpacesInConditionalStatement: false
SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false
SpacesInLineCommentPrefix:
Minimum: 1
Maximum: -1
SpacesInParentheses: false
SpacesInSquareBrackets: false
SpaceBeforeSquareBrackets: false
BitFieldColonSpacing: Both
Standard: Latest
StatementAttributeLikeMacros:
- Q_EMIT
StatementMacros:
- Q_UNUSED
- QT_REQUIRE_VERSION
TabWidth: 4
UseCRLF: false
UseTab: Never
WhitespaceSensitiveMacros:
- STRINGIZE
- PP_STRINGIZE
- BOOST_PP_STRINGIZE
- NS_SWIFT_NAME
- CF_SWIFT_NAME
...

69
.clang-tidy Normal file
View File

@@ -0,0 +1,69 @@
# Generated from CLion Inspection settings
---
Checks: '-*,
mpi-*,
bugprone-*,
-bugprone-signal-handler,
-bugprone-narrowing-conversions,
-bugprone-redundant-branch-condition,
-bugprone-exception-escape,
-bugprone-shared-ptr-array-mismatch,
-bugprone-implicit-widening-of-multiplication-result,
-bugprone-signed-char-misuse,
-bugprone-unhandled-exception-at-new,
-bugprone-infinite-loop,
-bugprone-easily-swappable-parameters,
cert-err52-cpp,
cert-err60-cpp,
cert-err34-c,
cert-str34-c,
cert-dcl21-cpp,
cert-msc50-cpp,
cert-msc51-cpp,
cert-dcl58-cpp,
cert-flp30-c,
cppcoreguidelines-avoid-const-or-ref-data-members,
cppcoreguidelines-pro-type-member-init,
cppcoreguidelines-slicing,
cppcoreguidelines-interfaces-global-init,
cppcoreguidelines-pro-type-static-cast-downcast,
cppcoreguidelines-narrowing-conversions,
google-default-arguments,
google-runtime-operator,
google-explicit-constructor,
hicpp-multiway-paths-covered,
hicpp-exception-baseclass,
misc-*,
-misc-definitions-in-headers,
-misc-unused-parameters,
-misc-unused-alias-decls,
-misc-use-anonymous-namespace,
-misc-misleading-identifier,
-misc-confusable-identifiers,
-misc-misleading-bidirectional,
-misc-static-assert,
-misc-no-recursion,
-misc-const-correctness,
modernize-*,
-modernize-use-trailing-return-type,
openmp-use-default-none,
performance-*,
-performance-no-int-to-ptr,
portability-*,
-portability-restrict-system-includes,
readability-*,
-readability-redundant-preprocessor,
-readability-named-parameter,
-readability-function-size,
-readability-use-anyofallof,
-readability-identifier-length,
-readability-magic-numbers,
-readability-braces-around-statements,
-readability-suspicious-call-argument,
-readability-isolate-declaration,
-readability-else-after-return,
-readability-redundant-access-specifiers,
-readability-function-cognitive-complexity,
-readability-identifier-naming,
*-include-cleaner,
-readability-qualified-auto'

5
.dockerignore Normal file
View File

@@ -0,0 +1,5 @@
cmake-build-*/
build*/
local/
**/Dockerfile

16
.gdbinit Normal file
View File

@@ -0,0 +1,16 @@
# Skip all std:: and __gnu_debug:: symbols
skip -rfu ^std::
skip -rfu ^__gnu_debug::
# Skip all ImGui:: symbols
skip -rfu ^ImGui::
# Trigger breakpoint when execution reaches triggerSafeShutdown()
break triggerSafeShutdown
# Print backtrace after execution jumped to an invalid address
define fixbt
set $pc = *(void **)$rsp
set $rsp = $rsp + 8
bt
end

5
.gitattributes vendored
View File

@@ -1,3 +1,4 @@
lib/external/** linguist-vendored
lib/libimhex-rs/imgui-rs/** linguist-vendored
lib/libimhex-rs/imgui-sys/** linguist-vendored
dist/*.sh eol=lf
dist/**/*Dockerfile eol=lf

View File

@@ -1,6 +1,7 @@
name: Bug Report
description: Something doesn't work correctly in ImHex.
title: "[Bug] "
labels: bug
body:
- type: dropdown
id: os
@@ -39,11 +40,18 @@ body:
label: ImHex Build Type
options:
- label: Nightly or built from sources
- type: input
attributes:
label: Installation type
description: |
How did you install ImHex ? MSI/Portable/DMG/AppImage/Fedora package/etc..
validations:
required: true
- type: textarea
attributes:
label: Additional context?
value: |
placeholder: |
- Additional information about your environment.
- If possible and useful, please upload the binary you've been editing when the bug occured.
- If possible and useful, please upload the binary you've been editing when the bug occurred.
validations:
required: false

View File

@@ -1,6 +1,7 @@
name: Feature Request
description: Something you'd like to see added to ImHex in the future
title: "[Feature] "
labels: feature request
body:
- type: textarea
attributes:
@@ -20,3 +21,6 @@ body:
label: Request Type
options:
- label: I can provide a PoC for this feature or am willing to work on it myself and submit a PR
- type: textarea
attributes:
label: Additional context?

18
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,18 @@
<!--
Please provide as much information as possible about what your PR aims to do.
PRs with no description will most likely be closed until more information is provided.
If you're planing on changing fundamental behaviour or add big new features, please open a GitHub Issue first before starting to work on it.
If it's not something big and you still want to contact us about it, feel free to do so !
-->
### Problem description
<!-- Describe the bug that you fixed/feature request that you implemented, or link to an existing issue describing it -->
### Implementation description
<!-- Explain what you did to correct the problem -->
### Screenshots
<!-- If your change is visual, take a screenshot showing it. Ideally, make before/after sceenshots -->
### Additional things
<!-- Anything else you would like to say -->

5
.github/codecov.yml vendored Normal file
View File

@@ -0,0 +1,5 @@
comment: false
ignore:
- "lib/third_party" # Third party libraries should be ignored
- "lib/external" # Our own libraries should be checked in their own repositories
- "tests" # https://about.codecov.io/blog/should-i-include-test-files-in-code-coverage-calculations/

View File

@@ -3,11 +3,12 @@ name: "CodeQL"
on:
schedule:
- cron: '0 0 * * *'
workflow_dispatch:
jobs:
codeql:
name: 🐛 CodeQL
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
permissions:
actions: read
contents: read
@@ -15,23 +16,28 @@ jobs:
steps:
- name: 🧰 Checkout
uses: actions/checkout@v2
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: recursive
- name: ✋ Initialize CodeQL
uses: github/codeql-action/init@v1
uses: github/codeql-action/init@v2
with:
languages: 'cpp'
- name: 📜 Restore cache
uses: actions/cache@v2
- name: 📜 Setup ccache
uses: hendrikmuhs/ccache-action@v1
with:
key: ${{ runner.os }}-analysis-build-${{ github.run_id }}
restore-keys: ${{ runner.os }}-analysis-build
max-size: 50M
- name: 📜 Restore CMakeCache
uses: actions/cache@v4
with:
path: |
~/.ccache
key: ${{ runner.os }}-${{ secrets.CACHE_VERSION }}-build-${{ hashFiles('**/CMakeLists.txt') }}
restore-keys: ${{ runner.os }}-${{ secrets.CACHE_VERSION }}-build-${{ hashFiles('**/CMakeLists.txt') }}
build/CMakeCache.txt
key: ${{ runner.os }}-analysis-build-${{ hashFiles('**/CMakeLists.txt') }}
- name: ⬇️ Install dependencies
run: |
@@ -40,17 +46,19 @@ jobs:
- name: 🛠️ Build
run: |
set -x
mkdir -p build
cd build
CC=gcc-10 CXX=g++-10 cmake \
CC=gcc-12 CXX=g++-12 cmake \
-DCMAKE_BUILD_TYPE=$BUILD_TYPE \
-DCMAKE_INSTALL_PREFIX="$PWD/install" \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_C_FLAGS="-fuse-ld=lld" \
-DCMAKE_CXX_FLAGS="-fuse-ld=lld" \
-DIMHEX_PATTERNS_PULL_MASTER=ON \
..
make -j 4 install
- name: 🗯️ Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1
uses: github/codeql-action/analyze@v2

View File

@@ -2,253 +2,692 @@ name: Build
on:
push:
branches:
- 'master'
- 'releases/**'
- 'tests/**'
pull_request:
workflow_dispatch:
env:
BUILD_TYPE: Release
BUILD_TYPE: RelWithDebInfo
jobs:
# Windows build
win:
runs-on: windows-2022
name: 🟦 Windows MINGW64
name: 🪟 Windows MINGW64
defaults:
run:
shell: msys2 {0}
env:
CCACHE_DIR: "${{ github.workspace }}/.ccache"
CCACHE_MAXSIZE: "1000M"
CCACHE_COMPRESS: "true"
steps:
- name: 🧰 Checkout
uses: actions/checkout@v2
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: recursive
- name: 📜 Setup ccache
uses: hendrikmuhs/ccache-action@v1
id: cache-ccache
with:
key: ${{ runner.os }}-ccache-${{ github.run_id }}
restore-keys: ${{ runner.os }}-ccache
max-size: 1G
- name: 🟦 Install msys2
uses: msys2/setup-msys2@v2
with:
msystem: mingw64
pacboy: >-
gcc:p
lld:p
cmake:p
make:p
ccache:p
glfw:p
file:p
mbedtls:p
python:p
freetype:p
dlfcn:p
- name: ⬇️ Install dependencies
run: |
curl --proto '=https' --tlsv1.2 -sSf https://win.rustup.rs > rustup-init.exe
./rustup-init.exe -y --default-host=x86_64-pc-windows-gnu --default-toolchain=none
rm rustup-init.exe
$USERPROFILE/.cargo/bin/rustup.exe target add x86_64-pc-windows-gnu
$USERPROFILE/.cargo/bin/rustup.exe default nightly
set -x
dist/get_deps_msys2.sh
- name: 📜 Prepare Cache
id: prep-ccache
shell: bash
run: |
mkdir -p "${CCACHE_DIR}"
echo "::set-output name=dir::$CCACHE_DIR"
- name: 📜 Restore Cache
uses: actions/cache@v1
id: cache-ccache
- name: ⬇️ Install .NET
uses: actions/setup-dotnet@v4
with:
path: ${{ steps.prep-ccache.outputs.dir }}
key: ${{ runner.os }}-${{ secrets.CACHE_VERSION }}-build-${{ hashFiles('**/CMakeLists.txt') }}
restore-keys: ${{ runner.os }}-${{ secrets.CACHE_VERSION }}-build-${{ hashFiles('**/CMakeLists.txt') }}
dotnet-version: '8.0.100'
- name: 🛠️ Build
- name: 📜 Set version variable
run: |
echo "IMHEX_VERSION=`cat VERSION`" >> $GITHUB_ENV
# Windows cmake build
- name: 🛠️ Configure CMake
run: |
set -x
mkdir -p build
cd build
# Get path to mingw python library
PYTHON_LIB_NAME=$(pkg-config --libs-only-l python3 | sed 's/^-l//' | sed 's/ //')
PYTHON_LIB_PATH=$(cygpath -m $(which lib${PYTHON_LIB_NAME}.dll))
cmake -G "MinGW Makefiles" \
-DCMAKE_BUILD_TYPE=$BUILD_TYPE \
-DCMAKE_INSTALL_PREFIX="$PWD/install" \
-DCREATE_PACKAGE=ON \
-DPython_LIBRARY="$PYTHON_LIB_PATH" \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_C_FLAGS="-fuse-ld=lld" \
-DCMAKE_CXX_FLAGS="-fuse-ld=lld" \
-DRUST_PATH="$USERPROFILE/.cargo/bin/" \
cmake -G "Ninja" \
-DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} \
-DCMAKE_INSTALL_PREFIX="$PWD/install" \
-DIMHEX_GENERATE_PACKAGE=ON \
-DIMHEX_USE_DEFAULT_BUILD_SETTINGS=ON \
-DIMHEX_PATTERNS_PULL_MASTER=ON \
-DIMHEX_COMMIT_HASH_LONG="${GITHUB_SHA}" \
-DIMHEX_COMMIT_BRANCH="${GITHUB_REF##*/}" \
-DUSE_SYSTEM_CAPSTONE=ON \
-DIMHEX_GENERATE_PDBS=ON \
-DIMHEX_REPLACE_DWARF_WITH_PDB=ON \
-DDOTNET_EXECUTABLE="C:/Program Files/dotnet/dotnet.exe" \
..
mingw32-make -j4 install
- name: 🛠️ Build
run: |
cd build
ninja install
cpack
mv ImHex-*.msi ../imhex-${{env.IMHEX_VERSION}}-Windows-x86_64.msi
echo "ImHex checks for the existence of this file to determine if it is running in portable mode. You should not delete this file" > $PWD/install/PORTABLE
- name: ⬆️ Upload Windows Installer
uses: actions/upload-artifact@v4
with:
if-no-files-found: error
name: Windows Installer x86_64
path: |
imhex-*.msi
- name: ⬆️ Upload Portable ZIP
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v4
with:
name: Windows Portable ZIP
if-no-files-found: error
name: Windows Portable x86_64
path: |
build/install/*
- name: Upload Windows Installer
uses: actions/upload-artifact@v2
- name: Download Mesa3D for NoGPU version
shell: bash
run: |
set -x
echo "NoGPU version Powered by Mesa 3D : https://fdossena.com/?p=mesa%2Findex.frag" > build/install/MESA.md
curl https://werwolv.net/downloads/mesa/MesaForWindows-x64-latest.7z -L -o mesa.7z
7z e mesa.7z
mv opengl32.dll build/install
- name: ⬆️ Upload NoGPU Portable ZIP
uses: actions/upload-artifact@v4
with:
name: Windows Installer
if-no-files-found: error
name: Windows Portable NoGPU x86_64
path: |
build/*.msi
build/install/*
# MacOS build
macos:
runs-on: macos-11.0
name: 🍎 macOS 11.0
steps:
runs-on: macos-12
strategy:
fail-fast: false
matrix:
include:
- suffix: "-NoGPU"
custom_glfw: true
- suffix: ""
custom_glfw: false
name: 🍎 macOS 12.0${{matrix.suffix}}
steps:
- name: 🧰 Checkout
uses: actions/checkout@v2
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: recursive
- name: 📜 Set version variable
run: |
echo "IMHEX_VERSION=`cat VERSION`" >> $GITHUB_ENV
- name: 📜 Setup ccache
uses: hendrikmuhs/ccache-action@v1
with:
key: ${{ runner.os }}${{ matrix.suffix }}-ccache-${{ github.run_id }}
restore-keys: ${{ runner.os }}${{ matrix.suffix }}-ccache
max-size: 1G
- name: ⬇️ Install dependencies
run: |
set -x
brew reinstall python || brew link --overwrite python
brew bundle --no-lock --file dist/Brewfile
rm -rf /usr/local/Cellar/capstone
- name: 📜 Restore cache
uses: actions/cache@v2
with:
path: |
~/.ccache
key: ${{ runner.os }}-${{ secrets.CACHE_VERSION }}-build-${{ hashFiles('**/CMakeLists.txt') }}
restore-keys: ${{ runner.os }}-${{ secrets.CACHE_VERSION }}-build-${{ hashFiles('**/CMakeLists.txt') }}
- name: 🛠️ Build
- name: ⬇️ Install classic glfw
if: ${{! matrix.custom_glfw}}
run: |
brew install glfw
- name: ⬇️ Install .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.100'
- name: 🧰 Checkout glfw
if: ${{matrix.custom_glfw}}
uses: actions/checkout@v4
with:
repository: glfw/glfw
path: glfw
# GLFW custom build (to allow software rendering)
- name: ⬇️ Patch and install custom glfw
if: ${{matrix.custom_glfw}}
run: |
set -x
cd glfw
git apply ../dist/macOS/0001-glfw-SW.patch
mkdir build
cd build
cmake -G "Ninja" \
-DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} \
-DBUILD_SHARED_LIBS=ON \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_OBJC_COMPILER_LAUNCHER=ccache \
-DCMAKE_OBJCXX_COMPILER_LAUNCHER=ccache \
..
ninja install
# MacOS cmake build
- name: 🛠️ Configure CMake
run: |
set -x
mkdir -p build
cd build
CC=$(brew --prefix llvm)/bin/clang \
CXX=$(brew --prefix llvm)/bin/clang++ \
PKG_CONFIG_PATH="$(brew --prefix openssl)/lib/pkgconfig":"$(brew --prefix)/lib/pkgconfig" \
MACOSX_DEPLOYMENT_TARGET="10.15" \
cmake \
-DCMAKE_BUILD_TYPE=$BUILD_TYPE \
-DCREATE_BUNDLE=ON \
-DCREATE_PACKAGE=ON \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
CC=$(brew --prefix gcc@12)/bin/gcc-12 \
CXX=$(brew --prefix gcc@12)/bin/g++-12 \
OBJC=$(brew --prefix llvm)/bin/clang \
OBJCXX=$(brew --prefix llvm)/bin/clang++ \
PKG_CONFIG_PATH="$(brew --prefix openssl)/lib/pkgconfig":"$(brew --prefix)/lib/pkgconfig" \
cmake -G "Ninja" \
-DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} \
-DIMHEX_GENERATE_PACKAGE=ON \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_OBJC_COMPILER_LAUNCHER=ccache \
-DCMAKE_OBJCXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_INSTALL_PREFIX="./install" \
-DIMHEX_PATTERNS_PULL_MASTER=ON \
-DIMHEX_COMMIT_HASH_LONG="${GITHUB_SHA}" \
-DIMHEX_COMMIT_BRANCH="${GITHUB_REF##*/}" \
..
make -j4 package
- name: 🛠️ Build
run: cd build && ninja install
- name: ✒️ Fix Signature
run: |
set -x
cd build/install
mv imhex.app ImHex.app
codesign --remove-signature ImHex.app
codesign --force --deep --sign - ImHex.app
- name: 📁 Fix permissions
run: |
set -x
cd build/install
chmod -R 755 ImHex.app/
- name: 📦 Create DMG
run: |
set -x
mkdir bundle
mv build/install/ImHex.app bundle
cd bundle
ln -s /Applications Applications
cd ..
hdiutil create -volname "ImHex" -srcfolder bundle -ov -format UDZO imhex-${{env.IMHEX_VERSION}}-macOS${{matrix.suffix}}-x86_64.dmg
- name: ⬆️ Upload DMG
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v4
with:
name: macOS DMG
path: build/*.dmg
if-no-files-found: error
name: macOS DMG${{matrix.suffix}} x86_64
path: ./*.dmg
# Linux build
linux:
runs-on: ubuntu-20.04
name: 🐧 Ubuntu 20.04
macos-arm64-build:
runs-on: ubuntu-22.04
name: 🍎 macOS 12.1 arm64
outputs:
IMHEX_VERSION: ${{ steps.build.outputs.IMHEX_VERSION }}
steps:
- name: 🧰 Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: 📁 Restore docker /cache
uses: actions/cache@v4
with:
path: cache
key: build-macos-arm64-cache
- name: 🐳 Inject /cache into docker
uses: reproducible-containers/buildkit-cache-dance@v2
with:
cache-source: cache
cache-target: /cache
- name: 🛠️ Build using docker
id: build
run: |
echo "IMHEX_VERSION=`cat VERSION`" >> $GITHUB_OUTPUT
docker buildx build . -f dist/macOS/arm64.Dockerfile --progress=plain --build-arg 'JOBS=4' --build-arg "BUILD_TYPE=$(BUILD_TYPE)" --build-context imhex=$(pwd) --output out
- name: ⬆️ Upload artifacts
uses: actions/upload-artifact@v4
with:
name: macos_arm64_intermediate
path: out/
# See https://github.com/actions/cache/issues/342#issuecomment-1711054115
- name: 🗑️ Delete old cache
continue-on-error: true
env:
GH_TOKEN: ${{ github.token }}
run: |
gh extension install actions/gh-actions-cache
gh actions-cache delete "build-macos-arm64-cache" --confirm || true
macos-arm64-package:
runs-on: macos-12
name: 🍎 macOS 12.1 arm64 Packaging
needs: macos-arm64-build
env:
IMHEX_VERSION: ${{ needs.macos-arm64-build.outputs.IMHEX_VERSION }}
steps:
- name: ⬇️ Download artifact
uses: actions/download-artifact@v4
with:
name: macos_arm64_intermediate
path: out
- name: 🗑️ Delete artifact
uses: geekyeggo/delete-artifact@v5
with:
name: macos_arm64_intermediate
- name: ✒️ Fix Signature
run: |
set -x
cd out
mv imhex.app ImHex.app
codesign --remove-signature ImHex.app
codesign --force --deep --sign - ImHex.app
- name: 📁 Fix permissions
run: |
set -x
cd out
chmod -R 755 ImHex.app/
- name: 📦 Create DMG
run: |
set -x
mkdir bundle
mv out/ImHex.app bundle
cd bundle
ln -s /Applications Applications
cd ..
hdiutil create -volname "ImHex" -srcfolder bundle -ov -format UDZO imhex-${{env.IMHEX_VERSION}}-macOS-arm64.dmg
- name: ⬆️ Upload DMG
uses: actions/upload-artifact@v4
with:
if-no-files-found: error
name: macOS DMG arm64
path: ./*.dmg
# Ubuntu build
ubuntu:
strategy:
fail-fast: false
matrix:
include:
- release_num: 22.04
- release_num: 24.04
name: 🐧 Ubuntu ${{ matrix.release_num }}
runs-on: ubuntu-latest
container:
image: "ubuntu:${{ matrix.release_num }}"
options: --privileged
steps:
- name: ⬇️ Install setup dependencies
run: apt update && apt install -y git curl
- name: 🧰 Checkout
uses: actions/checkout@v2
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: recursive
- name: 📜 Restore cache
uses: actions/cache@v2
- name: 📜 Setup ccache
uses: hendrikmuhs/ccache-action@v1
with:
path: |
~/.ccache
.flatpak-builder
key: ${{ runner.os }}-${{ secrets.CACHE_VERSION }}-build-${{ hashFiles('**/CMakeLists.txt') }}
restore-keys: ${{ runner.os }}-${{ secrets.CACHE_VERSION }}-build-${{ hashFiles('**/CMakeLists.txt') }}
key: Ubuntu-${{matrix.release_num}}-ccache-${{ github.run_id }}
restore-keys: Ubuntu-${{matrix.release_num}}-ccache
max-size: 1G
- name: ⬇️ Install dependencies
run: |
sudo rm -rf /usr/share/dotnet
sudo rm -rf /opt/ghc
sudo rm -rf "/usr/local/share/boost"
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
apt update
bash dist/get_deps_debian.sh
sudo apt update
sudo bash dist/get_deps_debian.sh
- name: ⬇️ Install .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.100'
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs > rustup-init.sh
sh rustup-init.sh -y --default-toolchain none
rm rustup-init.sh
$HOME/.cargo/bin/rustup install nightly
$HOME/.cargo/bin/rustup target add x86_64-unknown-linux-gnu
$HOME/.cargo/bin/rustup default nightly
- name: 🛠️ Build
# Ubuntu cmake build
- name: 🛠️ Configure CMake
shell: bash
run: |
set -x
git config --global --add safe.directory '*'
mkdir -p build
cd build
CC=gcc-10 CXX=g++-10 cmake \
-DCMAKE_BUILD_TYPE=$BUILD_TYPE \
-DCMAKE_INSTALL_PREFIX="$PWD/install/usr" \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_C_FLAGS="-fuse-ld=lld" \
-DCMAKE_CXX_FLAGS="-fuse-ld=lld" \
-DRUST_PATH="$HOME/.cargo/bin/" \
CC=gcc-12 CXX=g++-12 cmake -G "Ninja" \
-DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} \
-DCMAKE_INSTALL_PREFIX="/usr" \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DIMHEX_PATTERNS_PULL_MASTER=ON \
-DIMHEX_COMMIT_HASH_LONG="${GITHUB_SHA}" \
-DIMHEX_COMMIT_BRANCH="${GITHUB_REF##*/}" \
-DIMHEX_ENABLE_LTO=ON \
-DIMHEX_USE_GTK_FILE_PICKER=ON \
-DDOTNET_EXECUTABLE="dotnet" \
..
make -j 4 install
- name: 🛠️ Build
run: cd build && DESTDIR=DebDir ninja install
#- name: 📦 Bundle Flatpak
# run: |
# sudo apt install flatpak flatpak-builder
# flatpak --user remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
# flatpak --user install -y flathub org.freedesktop.Platform//20.08
# flatpak --user install -y flathub org.freedesktop.Sdk//20.08
# flatpak-builder --jobs=4 --repo=imhex _flatpak dist/net.werwolv.ImHex.yaml --ccache --keep-build-dirs
# flatpak build-bundle imhex imhex.flatpak net.werwolv.ImHex stable
- name: 📜 Set version variable
run: |
echo "IMHEX_VERSION=`cat VERSION`" >> $GITHUB_ENV
- name: 📦 Bundle DEB
run: |
cp -r build/DEBIAN build/install
dpkg-deb --build build/install
mv build/install.deb imhex.deb
rm -rf build/install/DEBIAN
cp -r build/DEBIAN build/DebDir
dpkg-deb -Zgzip --build build/DebDir
mv build/DebDir.deb imhex-${{env.IMHEX_VERSION}}-Ubuntu-${{ matrix.release_num }}-x86_64.deb
- name: 📦 Bundle AppImage
- name: ⬆️ Upload DEB
uses: actions/upload-artifact@v4
with:
if-no-files-found: error
name: Ubuntu ${{ matrix.release_num }} DEB x86_64
path: '*.deb'
# AppImage build
appimage:
runs-on: ubuntu-22.04
name: ⬇️ AppImage
steps:
- name: 🧰 Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: 📁 Restore docker /cache
uses: actions/cache@v4
with:
path: cache
key: appimage-ccache-${{ github.run_id }}
restore-keys: appimage-cache
- name: 🐳 Inject /cache into docker
uses: reproducible-containers/buildkit-cache-dance@v2
with:
cache-source: cache
cache-target: /cache
- name: 🛠️ Build using docker
run: |
dist/AppImage/package.sh build
mv build/ImHex-x86_64.AppImage imhex.AppImage
docker buildx build . -f dist/appimage/Dockerfile --progress=plain --build-arg "BUILD_TYPE=$BUILD_TYPE" \
--build-arg "GIT_COMMIT_HASH=$GITHUB_SHA" --build-arg "GIT_BRANCH=${GITHUB_REF##*/}" --output out
- name: ⬆️ Upload ELF
uses: actions/upload-artifact@v2
with:
name: Linux ELF
path: |
build/install/*
- name: ⬆️ Upload Flatpak
uses: actions/upload-artifact@v2
with:
name: Linux Flatpak
path: |
imhex.flatpak
- name: ⬆️ Upload .deb
uses: actions/upload-artifact@v2
with:
name: Linux DEB
path: |
imhex.deb
- name: ⬆️ Upload AppImage
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v4
with:
name: Linux AppImage
path: |
imhex.AppImage
if-no-files-found: error
name: Linux AppImage x86_64
path: 'out/*.AppImage'
- name: ⬆️ Upload AppImage zsync
uses: actions/upload-artifact@v4
with:
if-no-files-found: error
name: Linux AppImage zsync x86_64
path: 'out/*.AppImage.zsync'
# ArchLinux build
archlinux-build:
name: 🐧 ArchLinux
runs-on: ubuntu-latest
container:
image: archlinux:base-devel
steps:
- name: ⬇️ Update all packages
run: |
pacman -Syyu --noconfirm
- name: ⬇️ Install setup dependencies
run: |
pacman -Syu git ccache --noconfirm
- name: 🧰 Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: ⬇️ Install ImHex dependencies
run: |
dist/get_deps_archlinux.sh --noconfirm
- name: ⬇️ Install .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.100'
- name: 📜 Setup ccache
uses: hendrikmuhs/ccache-action@v1
with:
key: archlinux-ccache-${{ github.run_id }}
restore-keys: archlinux-ccache
max-size: 1G
# ArchLinux cmake build
- name: 🛠️ Configure CMake
run: |
set -x
mkdir -p build
cd build
CC=gcc CXX=g++ cmake -G "Ninja" \
-DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} \
-DCMAKE_INSTALL_PREFIX="/usr" \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DUSE_SYSTEM_FMT=ON \
-DUSE_SYSTEM_YARA=ON \
-DUSE_SYSTEM_NLOHMANN_JSON=ON \
-DUSE_SYSTEM_CAPSTONE=OFF \
-DIMHEX_PATTERNS_PULL_MASTER=ON \
-DIMHEX_COMMIT_HASH_LONG="${GITHUB_SHA}" \
-DIMHEX_COMMIT_BRANCH="${GITHUB_REF##*/}" \
-DIMHEX_ENABLE_LTO=ON \
-DIMHEX_USE_GTK_FILE_PICKER=ON \
..
- name: 🛠️ Build
run: cd build && DESTDIR=installDir ninja install
- name: 📜 Set version variable
run: |
echo "IMHEX_VERSION=`cat VERSION`" >> $GITHUB_ENV
- name: ✒️ Prepare PKGBUILD
run: |
cp dist/Arch/PKGBUILD build
sed -i 's/%version%/${{env.IMHEX_VERSION}}/g' build/PKGBUILD
# makepkg doesn't want to run as root, so I had to chmod 777 all over
- name: 📦 Package ArchLinux .pkg.tar.zst
run: |
set -x
cd build
# the name is a small trick to make makepkg recognize it as the source
# else, it would try to download the file from the release
tar -cvf imhex-${{env.IMHEX_VERSION}}-ArchLinux-x86_64.pkg.tar.zst -C installDir .
chmod -R 777 .
sudo -u nobody makepkg
# Replace the old file
rm imhex-${{env.IMHEX_VERSION}}-ArchLinux-x86_64.pkg.tar.zst
rm *imhex-bin-debug* # rm debug package which is created for some reason
mv *.pkg.tar.zst imhex-${{env.IMHEX_VERSION}}-ArchLinux-x86_64.pkg.tar.zst
- name: ⬆️ Upload imhex-archlinux.pkg.tar.zst
uses: actions/upload-artifact@v4
with:
if-no-files-found: error
name: ArchLinux .pkg.tar.zst x86_64
path: |
build/imhex-${{env.IMHEX_VERSION}}-ArchLinux-x86_64.pkg.tar.zst
# RPM distro builds
rpm-build:
strategy:
fail-fast: false
matrix:
include:
- name: Fedora
mock_release: rawhide
release_num: rawhide
mock_config: fedora-rawhide
- name: Fedora
mock_release: f39
release_num: 39
mock_config: fedora-39
- name: Fedora
mock_release: f38
release_num: 38
mock_config: fedora-38
- name: RHEL-AlmaLinux
mock_release: epel9
release_num: 9
mock_config: "alma+epel-9"
name: 🐧 ${{ matrix.name }} ${{ matrix.release_num }}
runs-on: ubuntu-latest
container:
image: "fedora:latest"
options: --privileged
steps:
- name: ⬇️ Install git-core
run: dnf install --disablerepo="*" --enablerepo="fedora" git-core -y
- name: 🧰 Checkout
uses: actions/checkout@v4
with:
path: ImHex
submodules: recursive
- name: 📜 Setup DNF Cache
uses: actions/cache@v4
with:
path: /var/cache/dnf
key: ${{ matrix.mock_release }}-dnf-${{ github.run_id }}
restore-keys: |
${{ matrix.mock_release }}-dnf-
- name: ⬇️ Update all packages and install dependencies
run: |
set -x
dnf upgrade --disablerepo="*" --enablerepo="fedora,updates" -y
dnf install --disablerepo="*" --enablerepo="fedora,updates" -y \
fedpkg \
ccache
- name: ⬇️ Install .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.100'
- name: 📜 Setup ccache
uses: hendrikmuhs/ccache-action@v1
with:
key: ${{ matrix.mock_release }}-rpm-${{ github.run_id }}
restore-keys: ${{ matrix.mock_release }}-rpm
max-size: 1G
- name: 📜 Set version variable
run: |
echo "IMHEX_VERSION=`cat ImHex/VERSION`" >> $GITHUB_ENV
- name: 🗜️ Create tarball from sources with dependencies
run: tar --exclude-vcs -czf $GITHUB_WORKSPACE/imhex-$IMHEX_VERSION.tar.gz ImHex
- name: ✒️ Modify spec file
run: |
sed -i \
-e 's/Version: VERSION$/Version: ${{env.IMHEX_VERSION}}/g' \
-e 's/IMHEX_OFFLINE_BUILD=ON/IMHEX_OFFLINE_BUILD=OFF/g' \
-e '/IMHEX_OFFLINE_BUILD=OFF/a -D IMHEX_PATTERNS_PULL_MASTER=ON \\' \
-e '/BuildRequires: cmake/a BuildRequires: git-core' \
-e '/%files/a %{_datadir}/%{name}/' \
$GITHUB_WORKSPACE/ImHex/dist/rpm/imhex.spec
- name: 📜 Fix ccache on EL9
if: matrix.mock_release == 'epel9'
run: sed -i '/\. \/opt\/rh\/gcc-toolset-12\/enable/a PATH=/usr/lib64/ccache:$PATH' $GITHUB_WORKSPACE/ImHex/dist/rpm/imhex.spec
- name: 🟩 Copy spec file to build root
run: mv $GITHUB_WORKSPACE/ImHex/dist/rpm/imhex.spec $GITHUB_WORKSPACE/imhex.spec
- name: 📜 Enable ccache for mock
run: |
cat <<EOT > $GITHUB_WORKSPACE/mock.cfg
include('${{ matrix.mock_config }}-x86_64.cfg')
config_opts['plugin_conf']['ccache_enable'] = True
config_opts['plugin_conf']['ccache_opts']['max_cache_size'] = '1G'
config_opts['plugin_conf']['ccache_opts']['compress'] = True
config_opts['plugin_conf']['ccache_opts']['dir'] = "$GITHUB_WORKSPACE/.ccache"
EOT
# Fedora cmake build (in imhex.spec)
- name: 📦 Build RPM
run: |
fedpkg --path $GITHUB_WORKSPACE --release ${{ matrix.mock_release }} mockbuild --enable-network -N --root $GITHUB_WORKSPACE/mock.cfg extra_args -- -v
- name: 🟩 Move and rename finished RPM
run: |
mv $GITHUB_WORKSPACE/results_imhex/${{env.IMHEX_VERSION}}/*/imhex-${{env.IMHEX_VERSION}}-0.*.x86_64.rpm \
$GITHUB_WORKSPACE/imhex-${{env.IMHEX_VERSION}}-${{matrix.name}}-${{matrix.release_num}}-x86_64.rpm
- name: ⬆️ Upload RPM
uses: actions/upload-artifact@v4
with:
if-no-files-found: error
name: ${{ matrix.name }} ${{ matrix.release_num }} RPM x86_64
path: |
imhex-${{env.IMHEX_VERSION}}-${{matrix.name}}-${{matrix.release_num}}-x86_64.rpm

80
.github/workflows/build_web.yml vendored Normal file
View File

@@ -0,0 +1,80 @@
name: Build for the web
on:
push:
branches:
- 'master'
- 'releases/**'
- 'tests/**'
pull_request:
workflow_dispatch:
env:
BUILD_TYPE: Release
permissions:
pages: write
id-token: write
actions: write
jobs:
build:
runs-on: ubuntu-22.04
name: 🌍 WebAssembly
steps:
- name: 🧰 Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: 📁 Restore docker /cache
uses: actions/cache@v4
with:
path: cache
key: web-cache-${{ hashFiles('**/CMakeLists.txt') }}
- name: 🐳 Inject /cache into docker
uses: reproducible-containers/buildkit-cache-dance@v2
with:
cache-source: cache
cache-target: /cache
- name: 🛠️ Build using docker
run: |
docker buildx build . -f dist/web/Dockerfile --progress=plain --build-arg 'JOBS=4' --output out --target raw
- name: 🔨 Fix permissions
run: |
chmod -c -R +rX "out/"
- name: ⬆️ Upload artifacts
uses: actions/upload-pages-artifact@v2
with:
path: out/
# See https://github.com/actions/cache/issues/342#issuecomment-1711054115
- name: 🗑️ Delete old cache
continue-on-error: true
env:
GH_TOKEN: ${{ github.token }}
run: |
gh extension install actions/gh-actions-cache
gh actions-cache delete "build-web-cache" --confirm
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
name: 📃 Deploy to GitHub Pages
runs-on: ubuntu-latest
if: ${{ github.ref == 'refs/heads/master' && github.event.repository.fork == false }}
needs: build
steps:
- name: 🌍 Deploy
id: deployment
uses: actions/deploy-pages@v2

173
.github/workflows/release.yml vendored Normal file
View File

@@ -0,0 +1,173 @@
permissions:
contents: write
name: Release
on:
release:
types: [published]
workflow_dispatch:
jobs:
release-update-repos:
runs-on: ubuntu-latest
name: Release Update Repos
steps:
- name: 🧰 Checkout
uses: actions/checkout@v4
with:
path: ImHex
- name: 📜 Verify version and set version variable
run: |
set -x
project_version=`cat ImHex/VERSION`
tag_version="${{github.event.release.tag_name}}"
tag_version="${tag_version:1}"
if [ "$project_version" != "$tag_version" ]; then
echo "::warning::$project_version and $tag_version are not the same ! Refusing to populate release"
exit 1
fi
echo "IMHEX_VERSION=$project_version" >> $GITHUB_ENV
- name: 🎫 Create PatternLanguage release
uses: ncipollo/release-action@v1
env:
RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }}
if: "${{ env.RELEASE_TOKEN != '' }}"
with:
tag: ImHex-v${{ env.IMHEX_VERSION }}
repo: PatternLanguage
token: ${{ secrets.RELEASE_TOKEN }}
- name: 🎫 Create ImHex-Patterns release
uses: ncipollo/release-action@v1
env:
RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }}
if: "${{ env.RELEASE_TOKEN != '' }}"
with:
tag: ImHex-v${{ env.IMHEX_VERSION }}
repo: ImHex-Patterns
token: ${{ secrets.RELEASE_TOKEN }}
- name: 🎫 Create imhex-download-sdk release
uses: ncipollo/release-action@v1
env:
RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }}
if: "${{ env.RELEASE_TOKEN != '' }}"
with:
tag: v${{ env.IMHEX_VERSION }}
repo: imhex-download-sdk
token: ${{ secrets.RELEASE_TOKEN }}
release-upload-artifacts:
runs-on: ubuntu-latest
name: Release Upload Artifacts
steps:
- name: 🧰 Checkout
uses: actions/checkout@v4
with:
path: ImHex
submodules: recursive
- name: 📜 Verify version and set version variable
run: |
set -x
project_version=`cat ImHex/VERSION`
tag_version="${{github.event.release.tag_name}}"
tag_version="${tag_version:1}"
if [ "$project_version" != "$tag_version" ]; then
echo "::warning::$project_version and $tag_version are not the same ! Refusing to populate release"
exit 1
fi
echo "IMHEX_VERSION=$project_version" >> $GITHUB_ENV
- name: 🗜️ Create tarball from sources with dependencies
run: tar --exclude-vcs -czvf Full.Sources.tar.gz ImHex
- name: ⬇️ Download artifacts from latest workflow
uses: dawidd6/action-download-artifact@v3
with:
github_token: ${{secrets.GITHUB_TOKEN}}
workflow: build.yml
branch: ${{ github.event.release.target_commitish }}
workflow_conclusion: success
skip_unpack: true
- name: 🗜️ Unzip files when needed
run: |
set -x
for zipfile in ./*.zip
do
if [ `zipinfo -1 "$zipfile" | wc -l` -eq 1 ];
then
echo "unzipping $zipfile"
unzip "$zipfile"
rm "$zipfile"
else
echo "keeping $zipfile zipped"
fi
done
- name: 🟩 Rename artifacts when needed
run: |
mv "Windows Portable x86_64.zip" imhex-${{ env.IMHEX_VERSION }}-Windows-Portable-x86_64.zip
mv "Windows Portable NoGPU x86_64.zip" imhex-${{ env.IMHEX_VERSION }}-Windows-Portable-NoGPU-x86_64.zip
- name: ⬆️ Upload everything to release
uses: softprops/action-gh-release@4634c16e79c963813287e889244c50009e7f0981
with:
files: '*'
- name: ✒️ Prepare PKGBUILD
run: |
set -x
cp ImHex/dist/Arch/PKGBUILD .
hash=`md5sum imhex-${{ env.IMHEX_VERSION }}-ArchLinux-x86_64.pkg.tar.zst | cut -d ' ' -f 1`
sed -i 's/%version%/${{ env.IMHEX_VERSION }}/g' PKGBUILD
sed -i "s/(SKIP)/($hash)/g" PKGBUILD
- name: ⬆️ Publish AUR package
env:
AUR_SSH_PRIVATE_KEY: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
if: "${{ env.AUR_SSH_PRIVATE_KEY != '' }}"
uses: KSXGitHub/github-actions-deploy-aur@v2
with:
pkgname: imhex-bin
pkgbuild: ./PKGBUILD
commit_username: iTrooz
commit_email: itrooz@protonmail.com
ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
commit_message: Bump to version ${{ env.IMHEX_VERSION }}
ssh_keyscan_types: rsa,dsa,ecdsa,ed25519
release-update-winget:
name: Release update winget package
needs: release-upload-artifacts
runs-on: windows-latest
steps:
- name: ⬇️ Download dependencies
shell: pwsh
run: |
iwr https://aka.ms/wingetcreate/latest -OutFile wingetcreate.exe
- name: ⬆️ Update winget manifest
shell: pwsh
env:
WINGET_GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}
if: "${{ env.WINGET_GITHUB_TOKEN != '' }}"
run: |
$tagname = $env:GITHUB_REF.Replace("refs/tags/", "")
$version = $tagname.Replace("v", "")
$url = "https://github.com/WerWolv/ImHex/releases/download/${tagname}/imhex-${version}-Windows-x86_64.msi"
.\wingetcreate.exe update WerWolv.ImHex -u $url --version $version
if ($version -notmatch "-") {
.\wingetcreate.exe submit .\manifests\w\WerWolv\ImHex\${version}\ --token $env:WINGET_GITHUB_TOKEN
}

View File

@@ -2,14 +2,20 @@ name: "Unit Tests"
on:
push:
branches: [ master ]
branches:
- 'master'
- 'releases/**'
- 'tests/**'
pull_request:
branches: [ master ]
branches:
- 'master'
- 'releases/**'
workflow_dispatch:
jobs:
tests:
name: 🧪 Unit Tests
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
permissions:
actions: read
contents: read
@@ -17,39 +23,71 @@ jobs:
steps:
- name: 🧰 Checkout
uses: actions/checkout@v2
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: recursive
- name: 📜 Restore cache
uses: actions/cache@v2
- name: 📜 Setup ccache
uses: hendrikmuhs/ccache-action@v1
with:
path: |
~/.ccache
key: ${{ runner.os }}-${{ secrets.CACHE_VERSION }}-build-${{ hashFiles('**/CMakeLists.txt') }}
restore-keys: ${{ runner.os }}-${{ secrets.CACHE_VERSION }}-build-${{ hashFiles('**/CMakeLists.txt') }}
key: ${{ runner.os }}-tests-build-${{ github.run_id }}
restore-keys: ${{ runner.os }}-tests-build
max-size: 50M
- name: ⬇️ Install dependencies
run: |
sudo apt update
sudo bash dist/get_deps_debian.sh
sudo apt install gcovr -y
- name: 🛠️ Build
run: |
set -x
mkdir -p build
cd build
CC=gcc-10 CXX=g++-10 cmake \
-DCMAKE_BUILD_TYPE=$BUILD_TYPE \
-DCMAKE_INSTALL_PREFIX="$PWD/install" \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_C_FLAGS="-fuse-ld=lld" \
-DCMAKE_CXX_FLAGS="-fuse-ld=lld" \
CC=gcc-12 CXX=g++-12 cmake \
-DCMAKE_BUILD_TYPE=Debug \
-DIMHEX_ENABLE_UNIT_TESTS=ON \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_C_FLAGS="-fuse-ld=lld -fsanitize=address,leak,undefined -fno-sanitize-recover=all --coverage" \
-DCMAKE_CXX_FLAGS="-fuse-ld=lld -fsanitize=address,leak,undefined -fno-sanitize-recover=all --coverage" \
-DIMHEX_OFFLINE_BUILD=ON \
..
make -j4 unit_tests install
make -j4 unit_tests
- name: 🧪 Perform plcli Integration Tests
run: |
cd lib/external/pattern_language
python tests/integration/integration.py ../../../build/imhex --pl
- name: 🧪 Perform Unit Tests
run: |
cd build
ctest
ctest --output-on-failure
# Generate report from all gcov .gcda files
- name: 🧪 Generate coverage report
run: |
gcovr --gcov-executable /usr/bin/gcov-12 -r . build --xml coverage_report.xml --verbose
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v4
with:
fail_ci_if_error: true
token: ${{ secrets.CODECOV_TOKEN }}
file: coverage_report.xml
langs:
name: 🧪 Langs
runs-on: ubuntu-22.04
steps:
- name: 🧰 Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Check langs
run:
python3 tests/check_langs.py

13
.gitignore vendored
View File

@@ -1,16 +1,15 @@
.vscode/
.idea/
.kdev4/
cmake-build-*/
build-linux/
build*/
local/
venv/
*.mgc
*.kdev4
imgui.ini
.DS_Store
plugins/.rustc_info.json
**/target
plugins/example_rust/Cargo.lock
CMakeUserPresets.json
Brewfile.lock.json

50
.gitmodules vendored
View File

@@ -1,28 +1,46 @@
[submodule "lib/external/nativefiledialog"]
path = lib/external/nativefiledialog
[submodule "lib/third_party/nativefiledialog"]
path = lib/third_party/nativefiledialog
url = https://github.com/btzy/nativefiledialog-extended
ignore = dirty
[submodule "lib/external/yara/yara"]
path = lib/external/yara/yara
[submodule "lib/third_party/yara/yara"]
path = lib/third_party/yara/yara
url = https://github.com/VirusTotal/yara
ignore = dirty
[submodule "lib/external/xdgpp"]
path = lib/external/xdgpp
url = https://git.sr.ht/~danyspin97/xdgpp
[submodule "lib/third_party/xdgpp"]
path = lib/third_party/xdgpp
url = https://github.com/WerWolv/xdgpp
ignore = dirty
[submodule "lib/external/fmt"]
path = lib/external/fmt
[submodule "lib/third_party/fmt"]
path = lib/third_party/fmt
url = https://github.com/fmtlib/fmt
ignore = dirty
[submodule "lib/external/curl"]
path = lib/external/curl
url = https://github.com/curl/curl
ignore = dirty
[submodule "lib/external/capstone"]
path = lib/external/capstone
[submodule "lib/third_party/capstone"]
path = lib/third_party/capstone
url = https://github.com/capstone-engine/capstone
ignore = dirty
[submodule "lib/third_party/jthread/jthread"]
path = lib/third_party/jthread/jthread
url = https://github.com/josuttis/jthread
ignore = dirty
[submodule "lib/third_party/edlib"]
path = lib/third_party/edlib
url = https://github.com/Martinsos/edlib
ignore = dirty
[submodule "lib/third_party/lunasvg"]
path = lib/third_party/lunasvg
url = https://github.com/sammycage/lunasvg
ignore = dirty
[submodule "lib/external/libromfs"]
path = lib/external/libromfs
url = https://github.com/WerWolv/libromfs
ignore = dirty
[submodule "lib/external/pattern_language"]
path = lib/external/pattern_language
url = https://github.com/WerWolv/PatternLanguage
[submodule "lib/external/libwolv"]
path = lib/external/libwolv
url = https://github.com/WerWolv/libwolv
[submodule "lib/third_party/HashLibPlus"]
path = lib/third_party/HashLibPlus
url = https://github.com/WerWolv/HashLibPlus

8
.idea/.gitignore generated vendored
View File

@@ -1,8 +0,0 @@
# Default ignored files
/shelf/
/workspace.xml
# Datasource local storage ignored files
/../../../../../:\_Dev\Cpp\HexEditor\.idea/dataSources/
/dataSources.local.xml
# Editor-based HTTP Client requests
/httpRequests/

1
.idea/.name generated
View File

@@ -1 +0,0 @@
imhex

14
.idea/deployment.xml generated
View File

@@ -1,14 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="PublishConfigData" remoteFilesAllowedToDisappearOnAutoupload="false">
<serverData>
<paths name="WSL (e494f5fa-cb38-49f1-b2cb-b9524b92ed51)">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
</serverData>
</component>
</project>

2
.idea/imhex.iml generated
View File

@@ -1,2 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module classpath="CMake" type="CPP_MODULE" version="4" />

4
.idea/misc.xml generated
View File

@@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CMakeWorkspace" PROJECT_DIR="$PROJECT_DIR$" />
</project>

8
.idea/modules.xml generated
View File

@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/imhex.iml" filepath="$PROJECT_DIR$/.idea/imhex.iml" />
</modules>
</component>
</project>

13
.idea/vcs.xml generated
View File

@@ -1,13 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
<mapping directory="$PROJECT_DIR$/lib/external/capstone" vcs="Git" />
<mapping directory="$PROJECT_DIR$/lib/external/curl" vcs="Git" />
<mapping directory="$PROJECT_DIR$/lib/external/fmt" vcs="Git" />
<mapping directory="$PROJECT_DIR$/lib/external/libromfs" vcs="Git" />
<mapping directory="$PROJECT_DIR$/lib/external/nativefiledialog" vcs="Git" />
<mapping directory="$PROJECT_DIR$/lib/external/xdgpp" vcs="Git" />
<mapping directory="$PROJECT_DIR$/lib/external/yara/yara" vcs="Git" />
</component>
</project>

View File

@@ -1,41 +1,87 @@
cmake_minimum_required(VERSION 3.16)
cmake_minimum_required(VERSION 3.20)
# Updating the version here will update it throughout ImHex as well
set(IMHEX_VERSION "1.16.0")
project(imhex VERSION ${IMHEX_VERSION})
# Options
option(IMHEX_PLUGINS_IN_SHARE "Put the plugins in share/imhex/plugins instead of lib[..]/imhex/plugins (Linux only)" OFF)
option(IMHEX_STRIP_RELEASE "Strip the release builds" ON )
option(IMHEX_OFFLINE_BUILD "Enable offline build" OFF)
option(IMHEX_IGNORE_BAD_CLONE "Disable the bad clone prevention checks" OFF)
option(IMHEX_PATTERNS_PULL_MASTER "Download latest files from master branch of the ImHex-Patterns repo" OFF)
option(IMHEX_IGNORE_BAD_COMPILER "Allow compiling with an unsupported compiler" OFF)
option(IMHEX_USE_GTK_FILE_PICKER "Use GTK file picker instead of xdg-desktop-portals (Linux only)" OFF)
option(IMHEX_DISABLE_STACKTRACE "Disables support for printing stack traces" OFF)
option(IMHEX_BUNDLE_DOTNET "Bundle .NET runtime" ON )
option(IMHEX_ENABLE_LTO "Enables Link Time Optimizations if possible" OFF)
option(IMHEX_USE_DEFAULT_BUILD_SETTINGS "Use default build settings" OFF)
option(IMHEX_STRICT_WARNINGS "Enable most available warnings and treat them as errors" ON )
option(IMHEX_STATIC_LINK_PLUGINS "Statically link all plugins into the main executable" OFF)
option(IMHEX_GENERATE_PACKAGE "Specify if a native package should be built. (Windows and MacOS only)" OFF)
option(IMHEX_ENABLE_UNITY_BUILD "Enables building ImHex as a unity build." OFF)
option(IMHEX_GENERATE_PDBS "Enable generating PDB files in non-debug builds (Windows only)" OFF)
option(IMHEX_REPLACE_DWARF_WITH_PDB "Remove DWARF information from binaries when generating PDBS (Windows only)" OFF)
option(IMHEX_ENABLE_STD_ASSERTS "Enable debug asserts in the C++ std library. (Breaks Plugin ABI!)" OFF)
option(IMHEX_ENABLE_UNIT_TESTS "Enable building unit tests" OFF)
option(IMHEX_ENABLE_PRECOMPILED_HEADERS "Enable precompiled headers" OFF)
option(IMHEX_COMPRESS_DEBUG_INFO "Compress debug information" ON )
set(CMAKE_CXX_STANDARD 20)
set(IMHEX_BASE_FOLDER ${CMAKE_CURRENT_SOURCE_DIR})
set(IMHEX_BASE_FOLDER "${CMAKE_CURRENT_SOURCE_DIR}")
set(CMAKE_MODULE_PATH "${IMHEX_BASE_FOLDER}/cmake/modules")
# Optional IDE support
include("${IMHEX_BASE_FOLDER}/cmake/ide_helpers.cmake")
# Basic compiler and cmake configurations
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_INCLUDE_DIRECTORIES_BEFORE ON)
include("${IMHEX_BASE_FOLDER}/cmake/build_helpers.cmake")
# Setup project
loadVersion(IMHEX_VERSION)
setVariableInParent(IMHEX_VERSION ${IMHEX_VERSION})
configureCMake()
project(imhex
LANGUAGES C CXX
VERSION ${IMHEX_VERSION}
DESCRIPTION "The ImHex Hex Editor"
HOMEPAGE_URL "https://imhex.werwolv.net"
)
configureProject()
# Add ImHex sources
add_custom_target(imhex_all ALL)
# Make sure project is configured correctly
setDefaultBuiltTypeIfUnset()
detectBadClone()
verifyCompiler()
# List plugin names here. Project name must match folder name
set(PLUGINS
builtin
windows
)
detectBundledPlugins()
# Add various defines
detectOS()
detectArch()
addVersionDefines()
configurePackingResources()
addDefines()
# Configure packaging and install targets
configurePackingResources()
setUninstallTarget()
addBundledLibraries()
# Add ImHex sources
add_subdirectory(lib/libimhex)
add_subdirectory(main)
add_custom_target(imhex_all ALL DEPENDS main)
addPluginDirectories()
# Add unit tests
enable_testing()
add_subdirectory(tests EXCLUDE_FROM_ALL)
if (IMHEX_ENABLE_UNIT_TESTS)
enable_testing()
add_subdirectory(tests EXCLUDE_FROM_ALL)
endif ()
# Configure packaging
# Configure more resources that will be added to the install package
generatePDBs()
generateSDKDirectory()
# Handle package generation
createPackage()
# Download and install all current files from the ImHex-Patterns repo
downloadImHexPatternsFiles()
# Accomodate IDEs with FOLDER support
tweakTargetsForIDESupport()

61
CMakePresets.json Normal file
View File

@@ -0,0 +1,61 @@
{
"version": 2,
"cmakeMinimumRequired": {
"major": 3,
"minor": 20,
"patch": 0
},
"configurePresets": [
{
"name": "base",
"displayName": "Base",
"description": "Base configuration for all builds",
"hidden": true,
"binaryDir": "${sourceDir}/build/${presetName}",
"generator": "Ninja",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"CMAKE_C_COMPILER": "gcc",
"CMAKE_CXX_COMPILER": "g++",
"IMHEX_PATTERNS_PULL_MASTER": "ON",
"CMAKE_INSTALL_PREFIX": "./install",
"USE_SYSTEM_CAPSTONE": "ON",
"IMHEX_USE_DEFAULT_BUILD_SETTINGS": "ON"
}
},
{
"name": "x86_64",
"displayName": "x86_64 Build",
"description": "x86_64 build",
"inherits": [ "base" ]
},
{
"name": "xcode",
"inherits": [ "base" ],
"displayName": "Xcode",
"description": "Xcode with external compiler override",
"generator": "Xcode",
"cacheVariables": {
"CMAKE_C_COMPILER": "clang",
"CMAKE_CXX_COMPILER": "clang++",
"CMAKE_CXX_FLAGS": "-fexperimental-library -Wno-shorten-64-to-32 -Wno-deprecated-declarations",
"IMHEX_IDE_HELPERS_OVERRIDE_XCODE_COMPILER": "ON"
}
}
],
"buildPresets": [
{
"name": "x86_64",
"description": "x86_64 build",
"configurePreset": "x86_64",
"targets": [ "imhex_all" ]
}
],
"testPresets": [
]
}

128
CODE_OF_CONDUCT.md Normal file
View File

@@ -0,0 +1,128 @@
# Contributor Covenant Code of Conduct
## Our Pledge
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
## Our Standards
Examples of behavior that contributes to a positive environment for our
community include:
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the
overall community
Examples of unacceptable behavior include:
* The use of sexualized language or imagery, and sexual attention or
advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email
address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Enforcement Responsibilities
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
## Scope
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
Discord @WerWolv#1337.
All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
## Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
### 1. Correction
**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series
of actions.
**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or
permanent ban.
### 3. Temporary Ban
**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.
**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within
the community.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
Community Impact Guidelines were inspired by [Mozilla's code of conduct
enforcement ladder](https://github.com/mozilla/diversity).
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
https://www.contributor-covenant.org/translations.

68
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,68 @@
# Contribution guide
## Introduction
This document is a guide for developers who want to contribute to ImHex in any way. It contains information about the codebase, the build process and the general workflow.
## Making Changes
### Adding new features
If you'd like to add new features, the best way to start is by joining our Discord and telling us about your idea. We can then discuss the best way to implement it and how it should be integrated into ImHex or if it should be done in a separate plugin.
There are standalone plugin templates that use ImHex as a submodule. You can find them here:
- https://github.com/WerWolv/ImHex-Cpp-Plugin-Template
- https://github.com/WerWolv/ImHex-Rust-Plugin-Template
### Adding a new language
If you'd like to support a new language in ImHex, the best way is by using the `dist/langtool.py` tool. It will create the necessary file for you and help you fill them out.
First, run the tool with `python3 dist/langtool.py create plugins/builtin/romfs/lang <iso_code>` where `<iso_code>` is the ISO 639-1 code of your language. This will create a new file in the language directory.
Afterwards follow the prompts of the program to populate the entire file. Once you're done, rerun cmake and rebuild ImHex. Your language should now be available in the settings.
### Updating an existing language
If you'd like to add missing keys to an existing language, you can also use the `dist/langtool.py` tool. Run it with `python3 dist/langtool.py translate plugins/builtin/romfs/lang <iso_code>` where `<iso_code>` is the ISO 639-1 code of the language.
This will one by one list all the missing translation keys that are present in the default translation file, and you can fill them in with the correct translation for your language.
## Codebase
ImHex is written in C++ and usually uses the latest compiler and standard library features available in gcc on all supported OSes. At the time of writing this is C++23.
### Structure
- `main`: Contains the main application code
- Important to understand here is that the main ImHex application is basically just an empty shell.
- All it does is create a Window and a OpenGL context using GLFW, load all available plugins, properly configure ImGui and render it to the screen.
- Everything else is done inside of plugins. ImHex comes with a few plugins by default, most notably the `builtin` plugin which contains the majority of the application code.
- In most cases, this code doesn't need to be modified. Most features should be self-contained inside a plugin.
- `lib`
- `libimhex`: Contains all helper utilities as well as various APIs for plugins to interact with ImHex.
- The library's main purpose is for Dependency Inversion. The ImHex main application as well as libimhex do not know about the existence of plugins at build time. Plugins and the main application instead link against libimhex and use it as a common API to interact with each other.
- Since libimhex is a doesn't know about the existence of plugins, it cannot depend on any of them. This includes localizations and things that get registered by plugins after launch.
- Even if the builtin plugin is technically always available, it is still a plugin and should be treated that way.
- All important APIs can be found in the `hex/api` include directory and are documented in the respective header file.
- `external`: All libraries that need custom patches or aren't typically available in package managers go into here.
- If you'd like to add new features to the Pattern language, please make a PR to https://github.com/WerWolv/PatternLanguage instead. ImHex usually depends on the latest commit of the master branch of this repo.
- `plugins`
- `builtin`: The builtin plugin. Contains the majority of the application code.
- It's the heart of ImHex's functionality. It contains most of the default views, providers, etc. so if you want to add new functionality to ImHex, this is the place to start.
- `tests`: Contains all unit tests for ImHex. These are run automatically by the CI and should be kept up to date, especially when adding new helper functions to libimhex.
### RomFS
ImHex uses a custom library called [libromfs](https://github.com/WerWolv/libromfs). It's a simple static library which uses CMake's code generation feature to embed files into the binary at compile time so they can be accessed at runtime.
All plugins have a `romfs` folder which contains all files that should be embedded into the binary. Resources that need to be embedded into the main application (this is usually not necessary), go into the `resources/romfs` folder.
When adding, changing files or removing files, make sure to re-run CMake to update the generated code. Otherwise, the changes might not be reflected in the binary.
## Development Environment
I personally use CLion for development since it makes configuring and building the project very easy on all platforms.
### Windows
- Install MSYS2 from https://www.msys2.org/ and use the `dist/get_deps_msys2.sh` script to install all dependencies.
### Linux
- Install all dependencies using one of the `dist/get_deps_*.sh` scripts depending on your distribution or install them manually with your package manager.
### macOS
- Install all dependencies using brew and the `dist/Brewfile` script.

101
INSTALL.md Normal file
View File

@@ -0,0 +1,101 @@
# Installing ImHex
## Official Releases
The easiest way to install ImHex is to download the latest release from the [GitHub Releases page](https://github.com/WerWolv/ImHex/releases/latest).
There's also a NoGPU version available for users who don't have a GPU or want to run ImHex in a VM without GPU passthrough.
### Windows
#### Installer
Simply run the installer to install ImHex on your system
#### Portable
Extract the zip file to any location on your system.
### macOS
Simply use the drag-n-drop dmg package to install ImHex on your system. It's possible that you need to allow the app to run in the security settings.
### Linux
#### AppImage
To run the AppImage, make sure it's executable. Then simply run it.
```bash
chmod +x imhex-*.AppImage
./imhex-*.AppImage
```
#### Flatpak
To install the Flatpak, make sure you have the Flathub repository added to your system. Then simply run the following command:
```bash
flatpak install flathub net.werwolv.ImHex
```
#### Ubuntu DEB Package
To install the DEB package, simply run the following command:
```bash
sudo apt install ./imhex-*.deb
```
#### Arch Linux
To install the Arch Linux package, simply run the following command:
```bash
sudo pacman -U imhex-*.pkg.tar.zst
```
#### Fedora / RHEL / AlmaLinux RPM Package
To install the RPM package, simply run the following command:
```bash
sudo dnf install ./imhex-*.rpm
```
## Nightly Builds
The GitHub Actions CI builds a new release package on every commit made to repository. These builds are available on the [GitHub Actions page](https://github.com/WerWolv/ImHex/actions?query=workflow%3A%22Build%22).
These builds are not guaranteed to be stable and may contain bugs, however they also contain new features that are not yet available in the official releases.
## Building from source
Build instructions for Windows, Linux and macOS can be found under `/dist/compiling`:
- Windows: [Link](dist/compiling/windows.md)
- macOS: [Link](dist/compiling/macos.md)
- Linux: [Link](dist/compiling/linux.md)
## Package managers
ImHex is also available on various package managers. The officially supported ones are listed here:
### Windows
- **Chocolatey**
- [imhex](https://community.chocolatey.org/packages/imhex) (Thanks to @Jarcho)
- `choco install imhex`
- **Winget**
- [WerWolv.ImHex](https://github.com/microsoft/winget-pkgs/tree/master/manifests/w/WerWolv/ImHex)
- `winget install WerWolv.ImHex`
### Linux
- **Arch Linux AUR**
- [imhex-bin](https://aur.archlinux.org/packages/imhex-bin/) (Thanks to @iTrooz)
- `yay -S imhex-bin`
- [imhex](https://aur.archlinux.org/packages/imhex/) (Thanks to @KokaKiwi)
- `yay -S imhex`
- **Fedora**
- [imhex](https://src.fedoraproject.org/rpms/imhex/) (Thanks to @jonathanspw)
- `dnf install imhex`
- **Flatpak**
- [net.werwolv.Imhex](https://flathub.org/apps/details/net.werwolv.ImHex) (Thanks to @Mailaender)
- `flatpak install flathub net.werwolv.ImHex`
### Available on other package managers
Packages that aren't explicitly mentioned above are not officially supported but they will most likely still work.
Contact the maintainer of the package if you have any issues.
[![Packaging status](https://repology.org/badge/vertical-allrepos/imhex.svg)](https://repology.org/project/imhex/versions)

19
PLUGINS.md Normal file
View File

@@ -0,0 +1,19 @@
# Plugins
ImHex is entirely built around the possibility to easily load plugins (most of it's features are actually implemented as a plugin!).
To install plugins, simply download the relevant `.hexplug` file and drop it in your `plugins` folder. The location of that folder can be found under `Help -> About -> ImHex Directories`.
## Available Plugins
(If you're developing a Plugin on your own, please feel free to add it to this list)
### Official Plugins
- [Extra Hashes Plugin](https://github.com/WerWolv/ImHex-Hashes-Plugin)
- Adds support for a variety of new hashes to the Hashes view including Blake, Adler32, Murmur and Tiger
- [Discord RPC Plugin](https://github.com/WerWolv/ImHex-Plugin-DiscordRPC)
- Adds support for Discord Rich Presence
### Third-Party Plugins
- [Pcap Plugin](https://github.com/Professor-plum/ImHex-Plugin-Pcap)
- Adds support for reading packet capture files

491
README.md
View File

@@ -1,11 +1,27 @@
<a href="https://imhex.werwolv.net"><h1 align="center" >:mag: ImHex</h1></a>
<a href="https://imhex.werwolv.net">
<h1 align="center">
<picture>
<img height="300px" src="./resources/dist/common/logo/ImHexLogoSVGBG.svg">
</picture>
</h1>
</a>
<p align="center">A Hex Editor for Reverse Engineers, Programmers and people who value their retinas when working at 3 AM.</p>
<p align="center">
<a title="'Build' workflow Status" href="https://github.com/WerWolv/ImHex/actions?query=workflow%3ABuild"><img alt="'Build' workflow Status" src="https://img.shields.io/github/workflow/status/WerWolv/ImHex/Build?longCache=true&style=for-the-badge&label=Build&logoColor=fff&logo=GitHub%20Actions"></a>
<a title="Discord Server" href="https://discord.gg/X63jZ36xBY"><img alt="Discord Server" src="https://img.shields.io/discord/789833418631675954?label=Discord&logo=Discord&style=for-the-badge"></a>
<a title="'Build' workflow Status" href="https://github.com/WerWolv/ImHex/actions?query=workflow%3ABuild"><img alt="'Build' workflow Status" src="https://img.shields.io/github/actions/workflow/status/WerWolv/ImHex/build.yml?longCache=true&style=for-the-badge&label=Build&logoColor=fff&logo=GitHub%20Actions&branch=master"></a>
<a title="Discord Server" href="https://discord.gg/X63jZ36xBY"><img alt="Discord Server" src="https://img.shields.io/discord/789833418631675954?label=Discord&logo=Discord&logoColor=fff&style=for-the-badge"></a>
<a title="Total Downloads" href="https://github.com/WerWolv/ImHex/releases/latest"><img alt="Total Downloads" src="https://img.shields.io/github/downloads/WerWolv/ImHex/total?longCache=true&style=for-the-badge&label=Downloads&logoColor=fff&logo=GitHub"></a>
<a title="Code Quality" href="https://www.codefactor.io/repository/github/werwolv/imhex"><img alt="Code Quality" src="https://img.shields.io/codefactor/grade/github/WerWolv/ImHex?longCache=true&style=for-the-badge&label=Code%20Quality&logoColor=fff&logo=CodeFactor&branch=master"></a>
<a title="Translation" href="https://weblate.werwolv.net/projects/imhex/"><img alt="Translation" src="https://img.shields.io/weblate/progress/imhex?logo=weblate&logoColor=%23FFFFFF&server=https%3A%2F%2Fweblate.werwolv.net&style=for-the-badge"></a>
<a title="Plugins" href="https://github.com/WerWolv/ImHex/blob/master/PLUGINS.md"><img alt="Plugins" src="https://img.shields.io/badge/Plugins-Supported-brightgreen?logo=stackedit&logoColor=%23FFFFFF&style=for-the-badge"></a>
</p>
<p align="center">
<a title="Download the latest version of ImHex" href="https://imhex.download"><img alt="Download the latest version of ImHex!" src="resources/dist/common/get_release_banner.png"></a>
<a title="Download the latest nightly pre-release version of ImHex" href="https://imhex.download/#nightly"><img alt="Download the latest nightly pre-release version of ImHex" src="resources/dist/common/get_nightly_banner.png"></a>
<a title="Use the Web version of ImHex right in your browser!" href="https://web.imhex.werwolv.net"><img alt="Use the Web version of ImHex right in your browser!" src="resources/dist/common/try_online_banner.png"></a>
<a title="Read the documentation of ImHex!" href="https://docs.werwolv.net"><img alt="Read the documentation of ImHex!" src="resources/dist/common/read_docs_banner.png"></a>
</p>
## Supporting
@@ -13,231 +29,364 @@
If you like my work, please consider supporting me on GitHub Sponsors, Patreon or PayPal. Thanks a lot!
<p align="center">
<a href="https://github.com/sponsors/WerWolv"><img src="https://werwolv.net/assets/github_banner.png" alt="GitHub donate button" /> </a>
<a href="https://www.patreon.com/werwolv"><img src="https://c5.patreon.com/external/logo/become_a_patron_button.png" alt="Patreon donate button" /> </a>
<a href="https://werwolv.net/donate"><img src="https://werwolv.net/assets/paypal_banner.png" alt="PayPal donate button" /> </a>
<a href="https://github.com/sponsors/WerWolv"><img src="https://werwolv.net/assets/github_banner.png" alt="GitHub donate button" /></a>
<a href="https://www.patreon.com/werwolv"><img src="https://c5.patreon.com/external/logo/become_a_patron_button.png" alt="Patreon donate button" /></a>
<a href="https://werwolv.net/donate"><img src="https://werwolv.net/assets/paypal_banner.png" alt="PayPal donate button" /></a>
</p>
## Screenshots
![Hex editor, patterns and data information](https://github.com/WerWolv/ImHex/assets/10835354/4f358238-2d27-41aa-9015-a2c6cc3708cf)
![Bookmarks, disassembler and data processor](https://github.com/WerWolv/ImHex/assets/10835354/183bc2cc-2439-4ded-b4c5-b140e19fc92f)
![Hex editor, patterns and data information](https://user-images.githubusercontent.com/10835354/139717326-8044769d-527b-4d88-8adf-2d4ecafdca1f.png)
![Bookmarks, disassembler and data processor](https://user-images.githubusercontent.com/10835354/139717323-1f8c9d52-f7eb-4f43-9f11-097ac728ed6c.png)
<details>
<summary><strong>More Screenshots</strong></summary>
![Data Processor decrypting some data and displaying it as an image](https://github.com/WerWolv/ImHex/assets/10835354/d0623081-3094-4840-a8a8-647b38724db8)
![STL Parser written in the Pattern Language visualizing a 3D model](https://github.com/WerWolv/ImHex/assets/10835354/62cbcd18-1c3f-4dd6-a877-2bf2bf4bb2a5)
![Data Information view displaying various stats about the file](https://github.com/WerWolv/ImHex/assets/10835354/d4706c01-c258-45c9-80b8-fe7a10d5a1de)
</details>
## Features
- Featureful hex view
<details>
<summary><strong>Featureful hex view</strong></summary>
- Byte patching
- Patch management
- Copy bytes as feature
- Infinite Undo/Redo
- "Copy bytes as..."
- Bytes
- Hex string
- C, C++, C#, Rust, Python, Java & JavaScript array
- ASCII-Art hex view
- HTML self contained div
- String and hex search
- Colorful highlighting
- HTML self-contained div
- Simple string and hex search
- Goto from start, end and current cursor position
- Custom C++-like pattern language for parsing highlighting a file's content
- Automatic loading based on MIME type
- arrays, pointers, structs, unions, enums, bitfields, namespaces, little and big endian support, conditionals and much more!
- Colorful highlighting
- Configurable foreground highlighting rules
- Background highlighting using patterns, find results and bookmarks
- Displaying data as a list of many different types
- Hexadecimal integers (8, 16, 32, 64 bit)
- Signed and unsigned decimal integers (8, 16, 32, 64 bit)
- Floats (16, 32, 64 bit)
- RGBA8 Colors
- HexII
- Binary
- Decoding data as ASCII and custom encodings
- Built-in support for UTF-8, UTF-16, ShiftJIS, most Windows encodings and many more
- Paged data view
</details>
<details>
<summary><strong>Custom C++-like pattern language for parsing highlighting a file's content</strong></summary>
- Automatic loading based on MIME types and magic values
- Arrays, pointers, structs, unions, enums, bitfields, namespaces, little and big endian support, conditionals and much more!
- Useful error messages, syntax highlighting and error marking
- Data importing
- Support for visualizing many different types of data
- Images
- Audio
- 3D Models
- Coordinates
- Time stamps
</details>
<details>
<summary><strong>Theming support</strong></summary>
- Doesn't burn out your retinas when used in late-night sessions
- Dark mode by default, but a light mode is available as well
- Customizable colors and styles for all UI elements through shareable theme files
- Support for custom fonts
</details>
<details>
<summary><strong>Importing and Exporting data</strong></summary>
- Base64 files
- IPS and IPS32 patches
- Data exporting
- IPS and IPS32 patches
- Data inspector allowing interpretation of data as many different types (little and big endian)
- Huge file support with fast and efficient loading
- String search
- Copying of strings
- Copying of demangled strings
- File hashing support
- CRC16 and CRC32 with custom initial values and polynomials
- MD4, MD5
- SHA-1, SHA-224, SHA-256, SHA-384, SHA-512
- Disassembler supporting many architectures (frontend for Capstone)
- ARM32 (ARM, Thumb, Cortex-M, AArch32)
- ARM64
- MIPS (MIPS32, MIPS64, MIPS32R6, Micro)
- x86 (16-bit, 32-bit, 64-bit)
- PowerPC (32-bit, 64-bit)
- SPARC
- IBM SystemZ
- xCORE
- M68K
- TMS320C64X
- M680X
- Ethereum
- RISC-V
- WebAssembly
- MOS565XX
- Berkeley Packet Filter
- Bookmarks
- Region highlighting
- Comments
- Data Analyzer
- Markdown reports
</details>
<details>
<summary><strong>Data Inspector</strong></summary>
- Interpreting data as many different types with endianness, decimal, hexadecimal and octal support and bit inversion
- Unsigned and signed integers (8, 16, 24, 32, 48, 64 bit)
- Floats (16, 32, 64 bit)
- Signed and Unsigned LEB128
- ASCII, Wide and UTF-8 characters and strings
- time32_t, time64_t, DOS date and time
- GUIDs
- RGBA8 and RGB65 Colors
- Copying and modifying bytes through the inspector
- Adding new data types through the pattern language
- Support for hiding rows that aren't used
</details>
<details>
<summary><strong>Node-based data pre-processor</strong></summary>
- Modify, decrypt and decode data before it's being displayed in the hex editor
- Modify data without touching the underlying source
- Support for adding custom nodes
</details>
<details>
<summary><strong>Loading data from many different data sources</strong></summary>
- Local Files
- Support for huge files with fast and efficient loading
- Raw Disks
- Loading data from raw disks and partitions
- GDB Server
- Access the RAM of a running process or embedded devices through GDB
- Intel Hex and Motorola SREC data
- Process Memory
- Inspect the entire address space of a running process
</details>
<details>
<summary><strong>Data searching</strong></summary>
- Support for searching the entire file or only a selection
- String extraction
- Option to specify minimum length and character set (lower case, upper case, digits, symbols)
- Option to specify encoding (ASCII, UTF-8, UTF-16 big and little endian)
- Sequence search
- Search for a sequence of bytes or characters
- Option to ignore character case
- Regex search
- Search for strings using regular expressions
- Binary Pattern
- Search for sequences of bytes with optional wildcards
- Numeric Value search
- Search for signed/unsigned integers and floats
- Search for ranges of values
- Option to specify size and endianness
- Option to ignore unaligned values
</details>
<details>
<summary><strong>Data hashing support</strong></summary>
- Many different algorithms available
- CRC8, CRC16 and CRC32 with custom initial values and polynomials
- Many default polynomials available
- MD5
- SHA-1, SHA-224, SHA-256, SHA-384, SHA-512
- Adler32
- AP
- BKDR
- Bernstein, Bernstein1
- DEK, DJB, ELF, FNV1, FNV1a, JS, PJW, RS, SDBM
- OneAtTime, Rotating, ShiftAndXor, SuperFast
- Murmur2_32, MurmurHash3_x86_32, MurmurHash3_x86_128, MurmurHash3_x64_128
- SipHash64, SipHash128
- XXHash32, XXHash64
- Tiger, Tiger2
- Blake2B, Blake2S
- Hashing of specific regions of the loaded data
- Hashing of arbitrary strings
</details>
<details>
<summary><strong>Diffing support</strong></summary>
- Compare data of different data sources
- Difference highlighting
- Table view of differences
</details>
<details>
<summary><strong>Integrated disassembler</strong></summary>
- Support for all architectures supported by Capstone
- ARM32 (ARM, Thumb, Cortex-M, AArch32)
- ARM64
- MIPS (MIPS32, MIPS64, MIPS32R6, Micro)
- x86 (16-bit, 32-bit, 64-bit)
- PowerPC (32-bit, 64-bit)
- SPARC
- IBM SystemZ
- xCORE
- M68K
- TMS320C64X
- M680X
- Ethereum
- RISC-V
- WebAssembly
- MOS65XX
- Berkeley Packet Filter
</details>
<details>
<summary><strong>Bookmarks</strong></summary>
- Support for bookmarks with custom names and colors
- Highlighting of bookmarked region in the hex editor
- Jump to bookmarks
- Open content of bookmark in a new tab
- Add comments to bookmarks
</details>
<details>
<summary><strong>Featureful data analyzer and visualizer</strong></summary>
- File magic-based file parser and MIME type database
- Byte distribution graph
- Byte type distribution graph
- Entropy graph
- Highest and average entropy
- Encrypted / Compressed file detection
- Built-in Content Store
- Download all files found in the database directly from within ImHex
- Yara Rules support
- Quickly scan a file for vulnearabilities with official yara rules
- Helpful tools
- Itanium and MSVC demangler
- Digram and Layered distribution graphs
</details>
<details>
<summary><strong>YARA Rule support</strong></summary>
- Scan a file for vulnerabilities with official yara rules
- Highlight matches in the hex editor
- Jump to matches
- Apply multiple rules at once
</details>
<details>
<summary><strong>Helpful tools</strong></summary>
- Itanium, MSVC, Rust and D-Lang demangler based on LLVM
- ASCII table
- Regex replacer
- Mathematical expression evaluator (Calculator)
- Hexadecimal Color picker
- Graphing calculator
- Hexadecimal Color picker with support for many different formats
- Base converter
- Byte swapper
- UNIX Permissions calculator
- Anonfiles File upload tool
- Wikipedia term definition finder
- File utilities
- File splitter
- File combiner
- File shredderer
- Built-in cheat sheet for pattern language and Math evaluator
- Doesn't burn out your retinas when used in late-night sessions
- File shredder
- IEEE754 Float visualizer
- Division by invariant multiplication calculator
- TCP Client/Server
- Euclidean algorithm calculator
</details>
<details>
<summary><strong>Built-in Content updater</strong></summary>
- Download all files found in the database directly from within ImHex
- Pattern files for decoding various file formats
- Libraries for the pattern language
- Magic files for file type detection
- Custom data processor nodes
- Custom encodings
- Custom themes
- Yara rules
</details>
<details>
<summary><strong>Modern Interface</strong></summary>
- Support for multiple workspaces
- Support for custom layouts
- Detachable windows
</details>
<details>
<summary><strong>Easy to get started</strong></summary>
- Support for many different languages
- Simplified mode for beginners
- Extensive documentation
- Many example files available on [the Database](https://github.com/WerWolv/ImHex-Patterns)
- Achievements guiding you through the features of ImHex
- Interactive tutorials
</details>
## Pattern Language
The custom C-like Pattern Language developed and used by ImHex is easy to read, understand and learn. A guide with all features of the language can be found [on the docs page](http://imhex.werwolv.net/docs).
The Pattern Language is the completely custom programming language developed for ImHex.
It allows you to define structures and data types in a C-like syntax and then use them to parse and highlight a file's content.
## Plugin development
- Source Code: [Link](https://github.com/WerWolv/PatternLanguage/)
- Documentation: [Link](https://docs.werwolv.net/pattern-language/)
To develop plugins for ImHex, use one of the following two templates projects to get startet. You then have access to the entirety of libimhex as well as the ImHex API and the Content Registry to interact with ImHex or to add new content.
- [C++ Plugin Template](https://github.com/WerWolv/ImHex-Cpp-Plugin-Template)
- [Rust Plugin Template](https://github.com/WerWolv/ImHex-Rust-Plugin-Template)
## Database
## Additional Files
For format patterns, libraries, magic and constant files, check out the [ImHex-Patterns](https://github.com/WerWolv/ImHex-Patterns) repository.
For format patterns, includable libraries and magic files, check out the [ImHex-Patterns](https://github.com/WerWolv/ImHex-Patterns) repository. Feel free to PR your own files there as well!
**Feel free to PR your own files there as well!**
## Nightly builds
## Requirements
Nightlies are available via GitHub Actions [here](https://github.com/WerWolv/ImHex/actions?query=workflow%3ABuild).
To use ImHex, the following minimal system requirements need to be met.
- Windows • __x86_64__
- [MSI](https://nightly.link/WerWolv/ImHex/workflows/build/master/Windows%20Installer.zip)
- [EXE](https://nightly.link/WerWolv/ImHex/workflows/build/master/Windows%20Portable%20ZIP.zip)
- MacOS • __x86_64__
- [DMG](https://nightly.link/WerWolv/ImHex/workflows/build/master/macOS%20DMG.zip)
- Linux • __x86_64__
- [ELF](https://nightly.link/WerWolv/ImHex/workflows/build/master/Linux%20ELF.zip)
- [DEB](https://nightly.link/WerWolv/ImHex/workflows/build/master/Linux%20DEB.zip)
- [Flatpak](https://nightly.link/WerWolv/ImHex/workflows/build/master/Linux%20Flatpak.zip)
- [AppImage](https://nightly.link/WerWolv/ImHex/workflows/build/master/Linux%20AppImage.zip)
> [!IMPORTANT]
> ImHex requires a GPU with OpenGL 3.0 support in general.
> There are releases available (with the `-NoGPU` suffix) that are software rendered and don't require a GPU, however these can be a lot slower than the GPU accelerated versions.
>
> If possible at all, make ImHex use the dedicated GPU on your system instead of the integrated one (especially Intel HD GPUs are known to cause issues).
- **OS**:
- **Windows**: Windows 7 or higher (Windows 10/11 recommended)
- **macOS**: macOS 11 (Big Sur) or higher,
- **Linux**: "Modern" Linux. The following distributions have official releases available. Other distros are supported through the AppImage and Flatpak releases.
- Ubuntu 22.04/23.04
- Fedora 36/37
- RHEL/AlmaLinux 9
- Arch Linux
- **CPU**: x86_64 (64 Bit)
- **GPU**: OpenGL 3.0 or higher
- Intel HD drivers are really buggy and often cause graphic artifacts
- In case you don't have a GPU available, there are software rendered releases available for Windows and macOS
- **RAM**: 256MB, more may be required for more complicated analysis
- **Storage**: 100MB
## Installing
Information on how to install ImHex can be found in the [Install](/INSTALL.md) guide
## Compiling
You need a C++20 compatible compiler such as GCC 10.2.0 to compile ImHex.
To compile ImHex on any platform, GCC (or Clang) is required with a version that supports C++23 or higher.
On macOS, Clang is also required to compile some ObjC code.
All releases are being built using latest available GCC.
Many dependencies are bundled into the repository using submodules so make sure to clone it using the `--recurse-submodules` option.
All dependencies that aren't bundled, can be installed using the dependency installer scripts found in the `/dist` folder.
> [!NOTE]
> Many dependencies are bundled into the repository using submodules so make sure to clone it using the `--recurse-submodules` option.
> All dependencies that aren't bundled, can be installed using the dependency installer scripts found in the `/dist` folder.
For working examples
For more information, check out the [Compiling](/dist/compiling) guide.
### Windows
## Contributing
See [Contributing](/CONTRIBUTING.md)
On Windows, ImHex is built through msys2 / mingw. To install all dependencies, open a mys2 window and run the PKGCONFIG script in the [dist/msys2](dist/msys2) folder.
After all the dependencies are installed, run the following commands to build ImHex:
## Plugin development
```sh
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j
```
To develop plugins for ImHex, use the following template project to get started. You then have access to the entirety of libimhex as well as the ImHex API and the Content Registry to interact with ImHex or to add new content.
- [ImHex Plugin Template](https://github.com/WerWolv/ImHex-Plugin-Template)
---
To create a standalone zipfile on Windows, get the Python standard library (e.g. from https://github.com/python/cpython/tree/master/Lib) and place the files and folders in `lib/python3.8` next to your built executable. Don't forget to also copy the `libpython3.8.dll` and `libwinpthread-1.dll` from your mingw setup next to the executable.
- Copy the files inside the `/resources/lib/python` folder into the `lib` folder next to your built executable.
- Place your magic databases in the `magic` folder next to your built executable
- Place your patterns in the `pattern` folder next to your built executable
- Place your include pattern files in the `include` folder next to your built executable
### macOS
To build ImHex on macOS, run the following commands:
```sh
brew bundle --no-lock --file dist/Brewfile
mkdir build
cd build
CC=$(brew --prefix llvm)/bin/clang CXX=$(brew --prefix llvm)/bin/clang++ PKG_CONFIG_PATH="$(brew --prefix openssl)/lib/pkgconfig":"$(brew --prefix)/lib/pkgconfig" cmake -DCMAKE_BUILD_TYPE=Release ..
make -j
```
Install the ImHex executable as well as libimhex.dylib to wherever ImHex should be installed.
All other files belong in `~/Library/Application Support/imhex`:
```
Patterns: ~/Library/Application Support/imhex/patterns
Pattern Includes: ~/Library/Application Support/imhex/includes
Magic files: ~/Library/Application Support/imhex/magic
Python: ~/Library/Application Support/imhex/lib/pythonX.X
Plugins: ~/Library/Application Support/imhex/plugins
Configuration: ~/Library/Application Support/imhex/config
Resources: ~/Library/Application Support/imhex/resources
```
If the build fails while trying to find the macOS libraries, make sure you have
XCode installed with `xcode-select --install`. Homebrew will also help get the
most recent SDK installed and configured with `brew doctor`.
### Linux
Dependency installation scripts are available for many common Linux distributions in the [/dist](dist) folder.
After all the dependencies are installed, run the following commands to build ImHex:
```sh
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j
```
---
Put the ImHex executable into the `/usr/bin` folder.
Put libimhex.so into the `/usr/lib` folder.
Configuration files go to `/etc/xdg/imhex` or `~/.config/imhex`.
All other files belong in `/usr/share/imhex` or `~/.local/share/imhex`:
```
Patterns: /usr/share/imhex/patterns
Pattern Includes: /usr/share/imhex/includes
Magic files: /usr/share/imhex/magic
Python: /usr/share/imhex/lib/pythonX.X
Plugins: /usr/share/imhex/plugins
Configuration: /etc/xdg/imhex/config
Resources: /usr/share/imhex/resources
```
All paths follow the XDG Base Directories standard, and can thus be modified
with the environment variables `XDG_CONFIG_HOME`, `XDG_CONFIG_DIRS`,
`XDG_DATA_HOME` and `XDG_DATA_DIRS`.
## Credits
### Contributors
- [Mary](https://github.com/Thog) for her immense help porting ImHex to MacOS and help during development
- [iTrooz](https://github.com/iTrooz) for getting ImHex onto the Web as well as hundreds of contributions in every part of the project
- [jumanji144](https://github.com/jumanji144) for huge contributions to the Pattern Language and ImHex's infrastructure
- [Mary](https://github.com/marysaka) for her immense help porting ImHex to MacOS and help during development
- [Roblabla](https://github.com/Roblabla) for adding MSI Installer support to ImHex
- [jam1garner](https://github.com/jam1garner) and [raytwo](https://github.com/raytwo) for their help with adding Rust support to plugins
- All other people that have been reporting issues on Discord or GitHub that I had great conversations with :)
- [Mailaender](https://github.com/Mailaender) for getting ImHex onto Flathub
- Everybody else who has reported issues on Discord or GitHub that I had great conversations with :)
### Libraries
### Dependencies
- Thanks a lot to ocornut for their amazing [Dear ImGui](https://github.com/ocornut/imgui) which is used for building the entire interface
- Thanks to ocornut as well for their hex editor view used as base for this project.
- Thanks to BalazsJako for their incredible [ImGuiColorTextEdit](https://github.com/BalazsJako/ImGuiColorTextEdit) used for the pattern language syntax highlighting
- Thanks to nlohmann for their [json](https://github.com/nlohmann/json) library used for project files
- Thanks to aquynh for [capstone](https://github.com/aquynh/capstone) which is the base of the disassembly window
- Thanks to epezent for [ImPlot](https://github.com/epezent/implot) used to plot data in various places
- Thanks to Nelarius for [ImNodes](https://github.com/Nelarius/imnodes) used as base for the data processor
- Thanks to BalazsJako for [ImGuiColorTextEdit](https://github.com/BalazsJako/ImGuiColorTextEdit) used for the pattern language syntax highlighting
- Thanks to nlohmann for their [json](https://github.com/nlohmann/json) library used for configuration files
- Thanks to vitaut for their [libfmt](https://github.com/fmtlib/fmt) library which makes formatting and logging so much better
- Thanks to btzy for [nativefiledialog-extended](https://github.com/btzy/nativefiledialog-extended) and their great support, used for handling file dialogs on all platforms
- Thanks to danyspin97 for [xdgpp](https://sr.ht/~danyspin97/xdgpp) used to handle folder paths on Linux
- Thanks to aquynh for [capstone](https://github.com/aquynh/capstone) which is the base of the disassembly window
- Thanks to rxi for [microtar](https://github.com/rxi/microtar) used for extracting downloaded store assets
- Thanks to VirusTotal for [Yara](https://github.com/VirusTotal/yara) used by the Yara plugin
- Thanks to Martinsos for [edlib](https://github.com/Martinsos/edlib) used for sequence searching in the diffing view
- Thanks to ron4fun for [HashLibPlus](https://github.com/ron4fun/HashLibPlus) which implements every hashing algorithm under the sun
- Thanks to mackron for [miniaudio](https://github.com/mackron/miniaudio) used to play audio files
- Thanks to all other groups and organizations whose libraries are used in ImHex
### License
The biggest part of ImHex is under the GPLv2-only license.
Notable exceptions to this are the following parts which are under the LGPLv2.1 license:
- **/lib/libimhex**: The library that allows Plugins to interact with ImHex.
- **/plugins/ui**: The UI plugin library that contains some common UI elements that can be used by other plugins
The reason for this is to allow for proprietary plugins to be developed for ImHex.

10
SECURITY.md Normal file
View File

@@ -0,0 +1,10 @@
# Security Policy
## Supported Versions
Supported is generally only the latest version that can be downloaded from the Release tab. If you have issues, you might get instructed to use the Nightly release version instead.
If you built ImHex yourself and experience issues that are not present in the version built by GitHub, you're on your own.
## Reporting a Vulnerability
Any critical vulnerabilities can be reported through Discord (@werwolv).

1
VERSION Normal file
View File

@@ -0,0 +1 @@
1.34.0

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,21 @@
if(NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt")
message(FATAL_ERROR "Cannot find install manifest: @CMAKE_BINARY_DIR@/install_manifest.txt")
endif()
file(READ "@CMAKE_BINARY_DIR@/install_manifest.txt" files)
string(REGEX REPLACE "\n" ";" files "${files}")
foreach(file ${files})
message(STATUS "Uninstalling $ENV{DESTDIR}${file}")
if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
exec_program(
"@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\""
OUTPUT_VARIABLE rm_out
RETURN_VALUE rm_retval
)
if(NOT "${rm_retval}" STREQUAL 0)
message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}")
endif()
else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
message(STATUS "File $ENV{DESTDIR}${file} does not exist.")
endif()
endforeach()

149
cmake/ide_helpers.cmake Normal file
View File

@@ -0,0 +1,149 @@
option(IMHEX_IDE_HELPERS_OVERRIDE_XCODE_COMPILER "Enable choice of compiler for Xcode builds, despite CMake's best efforts" OFF)
option(IMHEX_IDE_HELPERS_INTRUSIVE_IDE_TWEAKS "Enable intrusive CMake tweaks to better support IDEs with folder support" OFF)
# The CMake infrastructure silently ignores the CMAKE_<>_COMPILER settings when
# using the `Xcode` generator.
#
# A particularly nasty (and potentially only) way of getting around this is to
# temporarily lie about the generator being used, while CMake determines and
# locks in the compiler to use.
#
# Needless to say, this is hacky and fragile. Use at your own risk!
if (IMHEX_IDE_HELPERS_OVERRIDE_XCODE_COMPILER AND CMAKE_GENERATOR STREQUAL "Xcode")
set(CMAKE_GENERATOR "Unknown")
enable_language(C CXX)
set(CMAKE_GENERATOR "Xcode")
set(CMAKE_XCODE_ATTRIBUTE_CC "${CMAKE_C_COMPILER}")
set(CMAKE_XCODE_ATTRIBUTE_CXX "${CMAKE_CXX_COMPILER}")
if (CLANG)
set(CMAKE_XCODE_ATTRIBUTE_LD "${CMAKE_C_COMPILER}")
set(CMAKE_XCODE_ATTRIBUTE_LDPLUSPLUS "${CMAKE_CXX_COMPILER}")
endif()
# By default Xcode passes a `-index-store-path=<...>` parameter to the compiler
# during builds to build code completion indexes. This is not supported by
# anything other than AppleClang
set(CMAKE_XCODE_ATTRIBUTE_COMPILER_INDEX_STORE_ENABLE "NO")
endif()
# Generate a launch/build scheme for all targets
set(CMAKE_XCODE_GENERATE_SCHEME YES)
# Utility function that helps avoid messing with non-standard targets
macro(returnIfTargetIsNonTweakable target)
get_target_property(targetIsAliased ${target} ALIASED_TARGET)
get_target_property(targetIsImported ${target} IMPORTED)
if (targetIsAliased OR targetIsImported)
return()
endif()
get_target_property(targetType ${target} TYPE)
if (targetType MATCHES "INTERFACE_LIBRARY|UNKNOWN_LIBRARY")
return()
endif()
endmacro()
# Targets usually don't specify their private headers, nor group their source files
# which results in very spotty coverage by IDEs with folders support
#
# Unfortunately, CMake does not have a `target_source_group` like construct yet, therefore
# we have to play by the limitations of `source_group`.
#
# A particularly problematic part is that the function must be called within the directoryies
# scope for the grouping to take effect.
#
# See: https://discourse.cmake.org/t/topic/7388
function(tweakTargetForIDESupport target)
returnIfTargetIsNonTweakable(${target})
# Don't assume directory structure of third parties
get_target_property(targetSourceDir ${target} SOURCE_DIR)
if (targetSourceDir MATCHES "third_party")
return()
endif()
# Add headers to target
get_target_property(targetSourceDir ${target} SOURCE_DIR)
if (targetSourceDir)
file(GLOB_RECURSE targetPrivateHeaders CONFIGURE_DEPENDS "${targetSourceDir}/include/*.hpp")
target_sources(${target} PRIVATE "${targetPrivateHeaders}")
endif()
# Organize target sources into directory tree
get_target_property(sources ${target} SOURCES)
foreach(file IN LISTS sources)
get_filename_component(path "${file}" ABSOLUTE)
if (NOT path MATCHES "^${targetSourceDir}")
continue()
endif()
source_group(TREE "${targetSourceDir}" PREFIX "Source Tree" FILES "${file}")
endforeach()
endfunction()
if (IMHEX_IDE_HELPERS_INTRUSIVE_IDE_TWEAKS)
# See tweakTargetForIDESupport for rationale
function(add_library target)
_add_library(${target} ${ARGN})
tweakTargetForIDESupport(${target})
endfunction()
function(add_executable target)
_add_executable(${target} ${ARGN})
tweakTargetForIDESupport(${target})
endfunction()
endif()
# Adjust target's FOLDER property, which is an IDE only preference
function(_tweakTarget target path)
get_target_property(targetType ${target} TYPE)
if (TARGET generator-${target})
set_target_properties(generator-${target} PROPERTIES FOLDER "romfs/${target}")
endif()
if (TARGET romfs_file_packer-${target})
set_target_properties(romfs_file_packer-${target} PROPERTIES FOLDER "romfs/${target}")
endif()
if (TARGET libromfs-${target})
set_target_properties(libromfs-${target} PROPERTIES FOLDER "romfs/${target}")
endif()
if (${targetType} MATCHES "EXECUTABLE|LIBRARY")
set_target_properties(${target} PROPERTIES FOLDER "${path}")
endif()
endfunction()
macro(_tweakTargetsRecursive dir)
get_property(subdirectories DIRECTORY ${dir} PROPERTY SUBDIRECTORIES)
foreach(subdir IN LISTS subdirectories)
_tweakTargetsRecursive("${subdir}")
endforeach()
if(${dir} STREQUAL ${CMAKE_SOURCE_DIR})
return()
endif()
get_property(targets DIRECTORY "${dir}" PROPERTY BUILDSYSTEM_TARGETS)
file(RELATIVE_PATH rdir ${CMAKE_SOURCE_DIR} "${dir}/..")
foreach(target ${targets})
_tweakTarget(${target} "${rdir}")
endforeach()
endmacro()
# Tweak all targets this CMake build is aware about
function(tweakTargetsForIDESupport)
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
_tweakTargetsRecursive("${CMAKE_SOURCE_DIR}")
endfunction()

View File

@@ -0,0 +1,91 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.
#[=======================================================================[.rst:
FindBacktrace
-------------
Find provider for `backtrace(3) <https://man7.org/linux/man-pages/man3/backtrace.3.html>`__.
Checks if OS supports ``backtrace(3)`` via either ``libc`` or custom library.
This module defines the following variables:
``Backtrace_HEADER``
The header file needed for ``backtrace(3)``. Cached.
Could be forcibly set by user.
``Backtrace_INCLUDE_DIRS``
The include directories needed to use ``backtrace(3)`` header.
``Backtrace_LIBRARIES``
The libraries (linker flags) needed to use ``backtrace(3)``, if any.
``Backtrace_FOUND``
Is set if and only if ``backtrace(3)`` support detected.
The following cache variables are also available to set or use:
``Backtrace_LIBRARY``
The external library providing backtrace, if any.
``Backtrace_INCLUDE_DIR``
The directory holding the ``backtrace(3)`` header.
Typical usage is to generate of header file using :command:`configure_file`
with the contents like the following::
#cmakedefine01 Backtrace_FOUND
#if Backtrace_FOUND
# include <${Backtrace_HEADER}>
#endif
And then reference that generated header file in actual source.
#]=======================================================================]
include(CMakePushCheckState)
include(CheckSymbolExists)
include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
# List of variables to be provided to find_package_handle_standard_args()
set(_Backtrace_STD_ARGS Backtrace_INCLUDE_DIR)
if(Backtrace_HEADER)
set(_Backtrace_HEADER_TRY "${Backtrace_HEADER}")
else(Backtrace_HEADER)
set(_Backtrace_HEADER_TRY "execinfo.h")
endif(Backtrace_HEADER)
find_path(Backtrace_INCLUDE_DIR "${_Backtrace_HEADER_TRY}")
set(Backtrace_INCLUDE_DIRS ${Backtrace_INCLUDE_DIR})
if (NOT DEFINED Backtrace_LIBRARY)
# First, check if we already have backtrace(), e.g., in libc
cmake_push_check_state(RESET)
set(CMAKE_REQUIRED_INCLUDES ${Backtrace_INCLUDE_DIRS})
set(CMAKE_REQUIRED_QUIET ${Backtrace_FIND_QUIETLY})
check_symbol_exists("backtrace" "${_Backtrace_HEADER_TRY}" _Backtrace_SYM_FOUND)
cmake_pop_check_state()
endif()
if(_Backtrace_SYM_FOUND)
# Avoid repeating the message() call below each time CMake is run.
if(NOT Backtrace_FIND_QUIETLY AND NOT DEFINED Backtrace_LIBRARY)
message(STATUS "backtrace facility detected in default set of libraries")
endif()
set(Backtrace_LIBRARY "" CACHE FILEPATH "Library providing backtrace(3), empty for default set of libraries")
else()
# Check for external library, for non-glibc systems
if(Backtrace_INCLUDE_DIR)
# OpenBSD has libbacktrace renamed to libexecinfo
find_library(Backtrace_LIBRARY "execinfo")
else() # respect user wishes
set(_Backtrace_HEADER_TRY "backtrace.h")
find_path(Backtrace_INCLUDE_DIR ${_Backtrace_HEADER_TRY})
find_library(Backtrace_LIBRARY "backtrace")
endif()
# Prepend list with library path as it's more common practice
set(_Backtrace_STD_ARGS Backtrace_LIBRARY ${_Backtrace_STD_ARGS})
endif()
set(Backtrace_LIBRARIES ${Backtrace_LIBRARY})
set(Backtrace_HEADER "${_Backtrace_HEADER_TRY}" CACHE STRING "Header providing backtrace(3) facility")
find_package_handle_standard_args(Backtrace FOUND_VAR Backtrace_FOUND REQUIRED_VARS ${_Backtrace_STD_ARGS})
mark_as_advanced(Backtrace_HEADER Backtrace_INCLUDE_DIR Backtrace_LIBRARY)

View File

@@ -0,0 +1,8 @@
find_path(CAPSTONE_INCLUDE_DIR capstone.h PATH_SUFFIXES capstone)
find_library(CAPSTONE_LIBRARY NAMES capstone)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Capstone DEFAULT_MSG CAPSTONE_LIBRARY CAPSTONE_INCLUDE_DIR)
mark_as_advanced(CAPSTONE_INCLUDE_DIR CAPSTONE_LIBRARY)

View File

@@ -0,0 +1,92 @@
set(CoreClrEmbed_FOUND FALSE)
set(CORECLR_ARCH "linux-x64")
set(CORECLR_SUBARCH "x64")
if (WIN32)
set(CORECLR_ARCH "win-x64")
endif()
if (UNIX)
if (CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
set(CORECLR_ARCH "linux-arm64")
set(CORECLR_SUBARCH "arm64")
endif()
endif()
if (APPLE)
if (CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64")
set(CORECLR_ARCH "osx-arm64")
set(CORECLR_SUBARCH "arm64")
else()
set(CORECLR_ARCH "osx-x64")
endif()
endif()
if (NOT DOTNET_EXECUTABLE)
set(DOTNET_EXECUTABLE dotnet)
endif ()
set(CORECLR_VERSION "8.0")
execute_process(COMMAND ${DOTNET_EXECUTABLE} "--list-runtimes" OUTPUT_VARIABLE CORECLR_LIST_RUNTIMES_OUTPUT OUTPUT_STRIP_TRAILING_WHITESPACE)
if (CORECLR_LIST_RUNTIMES_OUTPUT STREQUAL "")
message(STATUS "Unable to find any .NET runtimes")
return()
endif ()
set(_ALL_RUNTIMES ${CORECLR_LIST_RUNTIMES_OUTPUT})
string(REPLACE "\n" ";" _ALL_RUNTIMES_LIST ${_ALL_RUNTIMES})
foreach(X ${_ALL_RUNTIMES_LIST})
string(REGEX MATCH "Microsoft\.NETCore\.App ([0-9]+)\.([0-9]+)\.([a-zA-Z0-9.-]+) [\[](.*)Microsoft\.NETCore\.App[\]]"
CORECLR_VERSION_REGEX_MATCH ${X})
set(_RUNTIME_VERSION ${CMAKE_MATCH_1}.${CMAKE_MATCH_2})
if (CMAKE_MATCH_1 AND CMAKE_MATCH_4)
if (${_RUNTIME_VERSION} STREQUAL ${CORECLR_VERSION})
set(CORECLR_RUNTIME_VERSION ${_RUNTIME_VERSION})
set(CORECLR_RUNTIME_VERSION_FULL ${CORECLR_VERSION}.${CMAKE_MATCH_3})
set(CORECLR_RUNTIME_ROOT_PATH ${CMAKE_MATCH_4})
message(STATUS "Found matching .NET runtime version '${CORECLR_RUNTIME_VERSION_FULL}' path='${CORECLR_RUNTIME_ROOT_PATH}'")
endif()
endif()
endforeach()
if (CORECLR_RUNTIME_ROOT_PATH)
get_filename_component(CORECLR_RUNTIME_ROOT_PATH ${CORECLR_RUNTIME_ROOT_PATH} DIRECTORY)
endif()
set(CoreClrEmbed_ROOT_PATH "${CORECLR_RUNTIME_ROOT_PATH}")
file(GLOB _CORECLR_HOST_ARCH_PATH_LIST "${CORECLR_RUNTIME_ROOT_PATH}/packs/Microsoft.NETCore.App.Host.*-${CORECLR_SUBARCH}")
if (_CORECLR_HOST_ARCH_PATH_LIST)
foreach(_CORECLR_HOST_ARCH_PATH ${_CORECLR_HOST_ARCH_PATH_LIST})
get_filename_component(_CORECLR_HOST_ARCH_FILENAME ${_CORECLR_HOST_ARCH_PATH} NAME)
string(REPLACE "Microsoft.NETCore.App.Host." "" _CORECLR_COMPUTED_ARCH "${_CORECLR_HOST_ARCH_FILENAME}")
if (_CORECLR_COMPUTED_ARCH)
set(CORECLR_ARCH "${_CORECLR_COMPUTED_ARCH}")
break()
endif()
endforeach()
endif()
set(CORECLR_HOST_BASE_PATH "${CORECLR_RUNTIME_ROOT_PATH}/packs/Microsoft.NETCore.App.Host.${CORECLR_ARCH}/${CORECLR_RUNTIME_VERSION_FULL}")
file(GLOB _CORECLR_FOUND_PATH ${CORECLR_HOST_BASE_PATH})
if (_CORECLR_FOUND_PATH)
set(CORECLR_NETHOST_ROOT "${_CORECLR_FOUND_PATH}/runtimes/${CORECLR_ARCH}/native")
endif()
find_library(CoreClrEmbed_LIBRARY nethost PATHS
${CORECLR_NETHOST_ROOT}
)
find_path(CoreClrEmbed_INCLUDE_DIR nethost.h PATHS
${CORECLR_NETHOST_ROOT}
)
find_file(CoreClrEmbed_SHARED_LIBRARY nethost.dll nethost.so libnethost.so nethost.dylib libnethost.dylib PATHS
${CORECLR_NETHOST_ROOT})
if (CoreClrEmbed_INCLUDE_DIR AND CoreClrEmbed_LIBRARY)
set(CoreClrEmbed_FOUND TRUE)
set(CoreClrEmbed_LIBRARIES "${CoreClrEmbed_LIBRARY}" CACHE STRING "CoreClrEmbed libraries" FORCE)
set(CoreClrEmbed_SHARED_LIBRARIES "${CoreClrEmbed_SHARED_LIBRARY}" CACHE STRING "CoreClrEmbed shared libraries" FORCE)
set(CoreClrEmbed_INCLUDE_DIRS "${CoreClrEmbed_INCLUDE_DIR}" CACHE STRING "CoreClrEmbed include directories" FORCE)
endif()

View File

@@ -0,0 +1,139 @@
#.rst:
# Find GLFW
# ---------
#
# Finds the GLFW library using its cmake config if that exists, otherwise
# falls back to finding it manually. This module defines:
#
# GLFW_FOUND - True if GLFW library is found
# GLFW::GLFW - GLFW imported target
#
# Additionally, in case the config was not found, these variables are defined
# for internal usage:
#
# GLFW_LIBRARY - GLFW library
# GLFW_DLL_DEBUG - GLFW debug DLL on Windows, if found
# GLFW_DLL_RELEASE - GLFW release DLL on Windows, if found
# GLFW_INCLUDE_DIR - Root include dir
#
#
# This file is part of Magnum.
#
# Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019,
# 2020, 2021, 2022 Vladimír Vondruš <mosra@centrum.cz>
# Copyright © 2016 Jonathan Hale <squareys@googlemail.com>
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.
#
# GLFW installs cmake package config files which handles dependencies in case
# GLFW is built statically. Try to find first, quietly, so it doesn't print
# loud messages when it's not found, since that's okay. If the glfw target
# already exists, it means we're using it through a CMake subproject -- don't
# attempt to find the package in that case.
if(NOT TARGET glfw)
find_package(glfw3 CONFIG QUIET)
endif()
# If either a glfw config file was found or we have a subproject, point
# GLFW::GLFW to that and exit -- nothing else to do here.
if(TARGET glfw)
if(NOT TARGET GLFW::GLFW)
# Aliases of (global) targets are only supported in CMake 3.11, so we
# work around it by this. This is easier than fetching all possible
# properties (which are impossible to track of) and then attempting to
# rebuild them into a new target.
add_library(GLFW::GLFW INTERFACE IMPORTED)
set_target_properties(GLFW::GLFW PROPERTIES INTERFACE_LINK_LIBRARIES glfw)
endif()
# Just to make FPHSA print some meaningful location, nothing else
get_target_property(_GLFW_INTERFACE_INCLUDE_DIRECTORIES glfw INTERFACE_INCLUDE_DIRECTORIES)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args("GLFW" DEFAULT_MSG
_GLFW_INTERFACE_INCLUDE_DIRECTORIES)
if(CORRADE_TARGET_WINDOWS)
# .dll is in LOCATION, .lib is in IMPLIB. Yay, useful!
get_target_property(GLFW_DLL_DEBUG glfw IMPORTED_LOCATION_DEBUG)
get_target_property(GLFW_DLL_RELEASE glfw IMPORTED_LOCATION_RELEASE)
endif()
return()
endif()
if(CORRADE_TARGET_WINDOWS)
if(MSVC)
if(MSVC_VERSION VERSION_LESS 1910)
set(_GLFW_LIBRARY_PATH_SUFFIX lib-vc2015)
elseif(MSVC_VERSION VERSION_LESS 1920)
set(_GLFW_LIBRARY_PATH_SUFFIX lib-vc2017)
elseif(MSVC_VERSION VERSION_LESS 1930)
set(_GLFW_LIBRARY_PATH_SUFFIX lib-vc2019)
elseif(MSVC_VERSION VERSION_LESS 1940)
set(_GLFW_LIBRARY_PATH_SUFFIX lib-vc2022)
else()
message(FATAL_ERROR "Unsupported MSVC version")
endif()
elseif(MINGW)
set(_GLFW_LIBRARY_PATH_SUFFIX lib-mingw-w64)
else()
message(FATAL_ERROR "Unsupported compiler")
endif()
endif()
# In case no config file was found, try manually finding the library. Prefer
# the glfw3dll as it's a dynamic library.
find_library(GLFW_LIBRARY
NAMES glfw glfw3dll glfw3
PATH_SUFFIXES ${_GLFW_LIBRARY_PATH_SUFFIX})
if(CORRADE_TARGET_WINDOWS AND GLFW_LIBRARY MATCHES "glfw3dll.(lib|a)$")
# TODO: debug?
find_file(GLFW_DLL_RELEASE
NAMES glfw3.dll
PATH_SUFFIXES ${_GLFW_LIBRARY_PATH_SUFFIX})
endif()
# Include dir
find_path(GLFW_INCLUDE_DIR
NAMES GLFW/glfw3.h)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args("GLFW" DEFAULT_MSG
GLFW_LIBRARY
GLFW_INCLUDE_DIR)
if(NOT TARGET GLFW::GLFW)
add_library(GLFW::GLFW UNKNOWN IMPORTED)
# Work around BUGGY framework support on macOS
# https://cmake.org/Bug/view.php?id=14105
if(CORRADE_TARGET_APPLE AND GLFW_LIBRARY MATCHES "\\.framework$")
set_property(TARGET GLFW::GLFW PROPERTY IMPORTED_LOCATION ${GLFW_LIBRARY}/GLFW)
else()
set_property(TARGET GLFW::GLFW PROPERTY IMPORTED_LOCATION ${GLFW_LIBRARY})
endif()
set_property(TARGET GLFW::GLFW PROPERTY
INTERFACE_INCLUDE_DIRECTORIES ${GLFW_INCLUDE_DIR})
endif()
mark_as_advanced(GLFW_LIBRARY GLFW_INCLUDE_DIR)

View File

@@ -0,0 +1,18 @@
find_path(LIBMAGIC_INCLUDE_DIR magic.h)
find_library(LIBMAGIC_LIBRARY NAMES magic)
if (LIBMAGIC_INCLUDE_DIR AND LIBMAGIC_LIBRARY)
set(LIBMAGIC_FOUND TRUE)
endif (LIBMAGIC_INCLUDE_DIR AND LIBMAGIC_LIBRARY)
find_package_handle_standard_args("libmagic" DEFAULT_MSG
LIBMAGIC_LIBRARY
LIBMAGIC_INCLUDE_DIR
)
mark_as_advanced(
LIBMAGIC_INCLUDE_DIR
LIBMAGIC_LIBRARY
LIBMAGIC_FOUND
)

View File

@@ -0,0 +1,611 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.
#[=======================================================================[.rst:
FindPackageHandleStandardArgs
-----------------------------
This module provides functions intended to be used in :ref:`Find Modules`
implementing :command:`find_package(<PackageName>)` calls.
.. command:: find_package_handle_standard_args
This command handles the ``REQUIRED``, ``QUIET`` and version-related
arguments of :command:`find_package`. It also sets the
``<PackageName>_FOUND`` variable. The package is considered found if all
variables listed contain valid results, e.g. valid filepaths.
There are two signatures:
.. code-block:: cmake
find_package_handle_standard_args(<PackageName>
(DEFAULT_MSG|<custom-failure-message>)
<required-var>...
)
find_package_handle_standard_args(<PackageName>
[FOUND_VAR <result-var>]
[REQUIRED_VARS <required-var>...]
[VERSION_VAR <version-var>]
[HANDLE_VERSION_RANGE]
[HANDLE_COMPONENTS]
[CONFIG_MODE]
[NAME_MISMATCHED]
[REASON_FAILURE_MESSAGE <reason-failure-message>]
[FAIL_MESSAGE <custom-failure-message>]
)
The ``<PackageName>_FOUND`` variable will be set to ``TRUE`` if all
the variables ``<required-var>...`` are valid and any optional
constraints are satisfied, and ``FALSE`` otherwise. A success or
failure message may be displayed based on the results and on
whether the ``REQUIRED`` and/or ``QUIET`` option was given to
the :command:`find_package` call.
The options are:
``(DEFAULT_MSG|<custom-failure-message>)``
In the simple signature this specifies the failure message.
Use ``DEFAULT_MSG`` to ask for a default message to be computed
(recommended). Not valid in the full signature.
``FOUND_VAR <result-var>``
.. deprecated:: 3.3
Specifies either ``<PackageName>_FOUND`` or
``<PACKAGENAME>_FOUND`` as the result variable. This exists only
for compatibility with older versions of CMake and is now ignored.
Result variables of both names are always set for compatibility.
``REQUIRED_VARS <required-var>...``
Specify the variables which are required for this package.
These may be named in the generated failure message asking the
user to set the missing variable values. Therefore these should
typically be cache entries such as ``FOO_LIBRARY`` and not output
variables like ``FOO_LIBRARIES``.
.. versionchanged:: 3.18
If ``HANDLE_COMPONENTS`` is specified, this option can be omitted.
``VERSION_VAR <version-var>``
Specify the name of a variable that holds the version of the package
that has been found. This version will be checked against the
(potentially) specified required version given to the
:command:`find_package` call, including its ``EXACT`` option.
The default messages include information about the required
version and the version which has been actually found, both
if the version is ok or not.
``HANDLE_VERSION_RANGE``
.. versionadded:: 3.19
Enable handling of a version range, if one is specified. Without this
option, a developer warning will be displayed if a version range is
specified.
``HANDLE_COMPONENTS``
Enable handling of package components. In this case, the command
will report which components have been found and which are missing,
and the ``<PackageName>_FOUND`` variable will be set to ``FALSE``
if any of the required components (i.e. not the ones listed after
the ``OPTIONAL_COMPONENTS`` option of :command:`find_package`) are
missing.
``CONFIG_MODE``
Specify that the calling find module is a wrapper around a
call to ``find_package(<PackageName> NO_MODULE)``. This implies
a ``VERSION_VAR`` value of ``<PackageName>_VERSION``. The command
will automatically check whether the package configuration file
was found.
``REASON_FAILURE_MESSAGE <reason-failure-message>``
.. versionadded:: 3.16
Specify a custom message of the reason for the failure which will be
appended to the default generated message.
``FAIL_MESSAGE <custom-failure-message>``
Specify a custom failure message instead of using the default
generated message. Not recommended.
``NAME_MISMATCHED``
.. versionadded:: 3.17
Indicate that the ``<PackageName>`` does not match
``${CMAKE_FIND_PACKAGE_NAME}``. This is usually a mistake and raises a
warning, but it may be intentional for usage of the command for components
of a larger package.
Example for the simple signature:
.. code-block:: cmake
find_package_handle_standard_args(LibXml2 DEFAULT_MSG
LIBXML2_LIBRARY LIBXML2_INCLUDE_DIR)
The ``LibXml2`` package is considered to be found if both
``LIBXML2_LIBRARY`` and ``LIBXML2_INCLUDE_DIR`` are valid.
Then also ``LibXml2_FOUND`` is set to ``TRUE``. If it is not found
and ``REQUIRED`` was used, it fails with a
:command:`message(FATAL_ERROR)`, independent whether ``QUIET`` was
used or not. If it is found, success will be reported, including
the content of the first ``<required-var>``. On repeated CMake runs,
the same message will not be printed again.
.. note::
If ``<PackageName>`` does not match ``CMAKE_FIND_PACKAGE_NAME`` for the
calling module, a warning that there is a mismatch is given. The
``FPHSA_NAME_MISMATCHED`` variable may be set to bypass the warning if using
the old signature and the ``NAME_MISMATCHED`` argument using the new
signature. To avoid forcing the caller to require newer versions of CMake for
usage, the variable's value will be used if defined when the
``NAME_MISMATCHED`` argument is not passed for the new signature (but using
both is an error)..
Example for the full signature:
.. code-block:: cmake
find_package_handle_standard_args(LibArchive
REQUIRED_VARS LibArchive_LIBRARY LibArchive_INCLUDE_DIR
VERSION_VAR LibArchive_VERSION)
In this case, the ``LibArchive`` package is considered to be found if
both ``LibArchive_LIBRARY`` and ``LibArchive_INCLUDE_DIR`` are valid.
Also the version of ``LibArchive`` will be checked by using the version
contained in ``LibArchive_VERSION``. Since no ``FAIL_MESSAGE`` is given,
the default messages will be printed.
Another example for the full signature:
.. code-block:: cmake
find_package(Automoc4 QUIET NO_MODULE HINTS /opt/automoc4)
find_package_handle_standard_args(Automoc4 CONFIG_MODE)
In this case, a ``FindAutmoc4.cmake`` module wraps a call to
``find_package(Automoc4 NO_MODULE)`` and adds an additional search
directory for ``automoc4``. Then the call to
``find_package_handle_standard_args`` produces a proper success/failure
message.
.. command:: find_package_check_version
.. versionadded:: 3.19
Helper function which can be used to check if a ``<version>`` is valid
against version-related arguments of :command:`find_package`.
.. code-block:: cmake
find_package_check_version(<version> <result-var>
[HANDLE_VERSION_RANGE]
[RESULT_MESSAGE_VARIABLE <message-var>]
)
The ``<result-var>`` will hold a boolean value giving the result of the check.
The options are:
``HANDLE_VERSION_RANGE``
Enable handling of a version range, if one is specified. Without this
option, a developer warning will be displayed if a version range is
specified.
``RESULT_MESSAGE_VARIABLE <message-var>``
Specify a variable to get back a message describing the result of the check.
Example for the usage:
.. code-block:: cmake
find_package_check_version(1.2.3 result HANDLE_VERSION_RANGE
RESULT_MESSAGE_VARIABLE reason)
if (result)
message (STATUS "${reason}")
else()
message (FATAL_ERROR "${reason}")
endif()
#]=======================================================================]
include(${CMAKE_CURRENT_LIST_DIR}/FindPackageMessage.cmake)
cmake_policy(PUSH)
# numbers and boolean constants
cmake_policy (SET CMP0012 NEW)
# IN_LIST operator
cmake_policy (SET CMP0057 NEW)
# internal helper macro
macro(_FPHSA_FAILURE_MESSAGE _msg)
set (__msg "${_msg}")
if (FPHSA_REASON_FAILURE_MESSAGE)
string(APPEND __msg "\n Reason given by package: ${FPHSA_REASON_FAILURE_MESSAGE}\n")
endif()
if (${_NAME}_FIND_REQUIRED)
message(FATAL_ERROR "${__msg}")
else ()
if (NOT ${_NAME}_FIND_QUIETLY)
message(STATUS "${__msg}")
endif ()
endif ()
endmacro()
# internal helper macro to generate the failure message when used in CONFIG_MODE:
macro(_FPHSA_HANDLE_FAILURE_CONFIG_MODE)
# <PackageName>_CONFIG is set, but FOUND is false, this means that some other of the REQUIRED_VARS was not found:
if(${_NAME}_CONFIG)
_FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE}: missing:${MISSING_VARS} (found ${${_NAME}_CONFIG} ${VERSION_MSG})")
else()
# If _CONSIDERED_CONFIGS is set, the config-file has been found, but no suitable version.
# List them all in the error message:
if(${_NAME}_CONSIDERED_CONFIGS)
set(configsText "")
list(LENGTH ${_NAME}_CONSIDERED_CONFIGS configsCount)
math(EXPR configsCount "${configsCount} - 1")
foreach(currentConfigIndex RANGE ${configsCount})
list(GET ${_NAME}_CONSIDERED_CONFIGS ${currentConfigIndex} filename)
list(GET ${_NAME}_CONSIDERED_VERSIONS ${currentConfigIndex} version)
string(APPEND configsText "\n ${filename} (version ${version})")
endforeach()
if (${_NAME}_NOT_FOUND_MESSAGE)
if (FPHSA_REASON_FAILURE_MESSAGE)
string(PREPEND FPHSA_REASON_FAILURE_MESSAGE "${${_NAME}_NOT_FOUND_MESSAGE}\n ")
else()
set(FPHSA_REASON_FAILURE_MESSAGE "${${_NAME}_NOT_FOUND_MESSAGE}")
endif()
else()
string(APPEND configsText "\n")
endif()
_FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE} ${VERSION_MSG}, checked the following files:${configsText}")
else()
# Simple case: No Config-file was found at all:
_FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE}: found neither ${_NAME}Config.cmake nor ${_NAME_LOWER}-config.cmake ${VERSION_MSG}")
endif()
endif()
endmacro()
function(FIND_PACKAGE_CHECK_VERSION version result)
cmake_parse_arguments (PARSE_ARGV 2 FPCV "HANDLE_VERSION_RANGE;NO_AUTHOR_WARNING_VERSION_RANGE" "RESULT_MESSAGE_VARIABLE" "")
if (FPCV_UNPARSED_ARGUMENTS)
message (FATAL_ERROR "find_package_check_version(): ${FPCV_UNPARSED_ARGUMENTS}: unexpected arguments")
endif()
if ("RESULT_MESSAGE_VARIABLE" IN_LIST FPCV_KEYWORDS_MISSING_VALUES)
message (FATAL_ERROR "find_package_check_version(): RESULT_MESSAGE_VARIABLE expects an argument")
endif()
set (${result} FALSE PARENT_SCOPE)
if (FPCV_RESULT_MESSAGE_VARIABLE)
unset (${FPCV_RESULT_MESSAGE_VARIABLE} PARENT_SCOPE)
endif()
if (_CMAKE_FPHSA_PACKAGE_NAME)
set (package "${_CMAKE_FPHSA_PACKAGE_NAME}")
elseif (CMAKE_FIND_PACKAGE_NAME)
set (package "${CMAKE_FIND_PACKAGE_NAME}")
else()
message (FATAL_ERROR "find_package_check_version(): Cannot be used outside a 'Find Module'")
endif()
if (NOT FPCV_NO_AUTHOR_WARNING_VERSION_RANGE
AND ${package}_FIND_VERSION_RANGE AND NOT FPCV_HANDLE_VERSION_RANGE)
message(AUTHOR_WARNING
"`find_package()` specify a version range but the option "
"HANDLE_VERSION_RANGE` is not passed to `find_package_check_version()`. "
"Only the lower endpoint of the range will be used.")
endif()
set (version_ok FALSE)
unset (version_msg)
if (FPCV_HANDLE_VERSION_RANGE AND ${package}_FIND_VERSION_RANGE)
if ((${package}_FIND_VERSION_RANGE_MIN STREQUAL "INCLUDE"
AND version VERSION_GREATER_EQUAL ${package}_FIND_VERSION_MIN)
AND ((${package}_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE"
AND version VERSION_LESS_EQUAL ${package}_FIND_VERSION_MAX)
OR (${package}_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE"
AND version VERSION_LESS ${package}_FIND_VERSION_MAX)))
set (version_ok TRUE)
set(version_msg "(found suitable version \"${version}\", required range is \"${${package}_FIND_VERSION_RANGE}\")")
else()
set(version_msg "Found unsuitable version \"${version}\", required range is \"${${package}_FIND_VERSION_RANGE}\"")
endif()
elseif (DEFINED ${package}_FIND_VERSION)
if(${package}_FIND_VERSION_EXACT) # exact version required
# count the dots in the version string
string(REGEX REPLACE "[^.]" "" version_dots "${version}")
# add one dot because there is one dot more than there are components
string(LENGTH "${version_dots}." version_dots)
if (version_dots GREATER ${package}_FIND_VERSION_COUNT)
# Because of the C++ implementation of find_package() ${package}_FIND_VERSION_COUNT
# is at most 4 here. Therefore a simple lookup table is used.
if (${package}_FIND_VERSION_COUNT EQUAL 1)
set(version_regex "[^.]*")
elseif (${package}_FIND_VERSION_COUNT EQUAL 2)
set(version_regex "[^.]*\\.[^.]*")
elseif (${package}_FIND_VERSION_COUNT EQUAL 3)
set(version_regex "[^.]*\\.[^.]*\\.[^.]*")
else()
set(version_regex "[^.]*\\.[^.]*\\.[^.]*\\.[^.]*")
endif()
string(REGEX REPLACE "^(${version_regex})\\..*" "\\1" version_head "${version}")
if (NOT ${package}_FIND_VERSION VERSION_EQUAL version_head)
set(version_msg "Found unsuitable version \"${version}\", but required is exact version \"${${package}_FIND_VERSION}\"")
else ()
set(version_ok TRUE)
set(version_msg "(found suitable exact version \"${_FOUND_VERSION}\")")
endif ()
else ()
if (NOT ${package}_FIND_VERSION VERSION_EQUAL version)
set(version_msg "Found unsuitable version \"${version}\", but required is exact version \"${${package}_FIND_VERSION}\"")
else ()
set(version_ok TRUE)
set(version_msg "(found suitable exact version \"${version}\")")
endif ()
endif ()
else() # minimum version
if (${package}_FIND_VERSION VERSION_GREATER version)
set(version_msg "Found unsuitable version \"${version}\", but required is at least \"${${package}_FIND_VERSION}\"")
else()
set(version_ok TRUE)
set(version_msg "(found suitable version \"${version}\", minimum required is \"${${package}_FIND_VERSION}\")")
endif()
endif()
else ()
set(version_ok TRUE)
set(version_msg "(found version \"${version}\")")
endif()
set (${result} ${version_ok} PARENT_SCOPE)
if (FPCV_RESULT_MESSAGE_VARIABLE)
set (${FPCV_RESULT_MESSAGE_VARIABLE} "${version_msg}" PARENT_SCOPE)
endif()
endfunction()
function(FIND_PACKAGE_HANDLE_STANDARD_ARGS _NAME _FIRST_ARG)
# Set up the arguments for `cmake_parse_arguments`.
set(options CONFIG_MODE HANDLE_COMPONENTS NAME_MISMATCHED HANDLE_VERSION_RANGE)
set(oneValueArgs FAIL_MESSAGE REASON_FAILURE_MESSAGE VERSION_VAR FOUND_VAR)
set(multiValueArgs REQUIRED_VARS)
# Check whether we are in 'simple' or 'extended' mode:
set(_KEYWORDS_FOR_EXTENDED_MODE ${options} ${oneValueArgs} ${multiValueArgs} )
list(FIND _KEYWORDS_FOR_EXTENDED_MODE "${_FIRST_ARG}" INDEX)
unset(FPHSA_NAME_MISMATCHED_override)
if (DEFINED FPHSA_NAME_MISMATCHED)
# If the variable NAME_MISMATCHED variable is set, error if it is passed as
# an argument. The former is for old signatures, the latter is for new
# signatures.
list(FIND ARGN "NAME_MISMATCHED" name_mismatched_idx)
if (NOT name_mismatched_idx EQUAL "-1")
message(FATAL_ERROR
"The `NAME_MISMATCHED` argument may only be specified by the argument or "
"the variable, not both.")
endif ()
# But use the variable if it is not an argument to avoid forcing minimum
# CMake version bumps for calling modules.
set(FPHSA_NAME_MISMATCHED_override "${FPHSA_NAME_MISMATCHED}")
endif ()
if(${INDEX} EQUAL -1)
set(FPHSA_FAIL_MESSAGE ${_FIRST_ARG})
set(FPHSA_REQUIRED_VARS ${ARGN})
set(FPHSA_VERSION_VAR)
else()
cmake_parse_arguments(FPHSA "${options}" "${oneValueArgs}" "${multiValueArgs}" ${_FIRST_ARG} ${ARGN})
if(FPHSA_UNPARSED_ARGUMENTS)
message(FATAL_ERROR "Unknown keywords given to FIND_PACKAGE_HANDLE_STANDARD_ARGS(): \"${FPHSA_UNPARSED_ARGUMENTS}\"")
endif()
if(NOT FPHSA_FAIL_MESSAGE)
set(FPHSA_FAIL_MESSAGE "DEFAULT_MSG")
endif()
# In config-mode, we rely on the variable <PackageName>_CONFIG, which is set by find_package()
# when it successfully found the config-file, including version checking:
if(FPHSA_CONFIG_MODE)
list(INSERT FPHSA_REQUIRED_VARS 0 ${_NAME}_CONFIG)
list(REMOVE_DUPLICATES FPHSA_REQUIRED_VARS)
set(FPHSA_VERSION_VAR ${_NAME}_VERSION)
endif()
if(NOT FPHSA_REQUIRED_VARS AND NOT FPHSA_HANDLE_COMPONENTS)
message(FATAL_ERROR "No REQUIRED_VARS specified for FIND_PACKAGE_HANDLE_STANDARD_ARGS()")
endif()
endif()
if (DEFINED FPHSA_NAME_MISMATCHED_override)
set(FPHSA_NAME_MISMATCHED "${FPHSA_NAME_MISMATCHED_override}")
endif ()
if (DEFINED CMAKE_FIND_PACKAGE_NAME
AND NOT FPHSA_NAME_MISMATCHED
AND NOT _NAME STREQUAL CMAKE_FIND_PACKAGE_NAME)
message(AUTHOR_WARNING
"The package name passed to `find_package_handle_standard_args` "
"(${_NAME}) does not match the name of the calling package "
"(${CMAKE_FIND_PACKAGE_NAME}). This can lead to problems in calling "
"code that expects `find_package` result variables (e.g., `_FOUND`) "
"to follow a certain pattern.")
endif ()
if (${_NAME}_FIND_VERSION_RANGE AND NOT FPHSA_HANDLE_VERSION_RANGE)
message(AUTHOR_WARNING
"`find_package()` specify a version range but the module ${_NAME} does "
"not support this capability. Only the lower endpoint of the range "
"will be used.")
endif()
# to propagate package name to FIND_PACKAGE_CHECK_VERSION
set(_CMAKE_FPHSA_PACKAGE_NAME "${_NAME}")
# now that we collected all arguments, process them
if("x${FPHSA_FAIL_MESSAGE}" STREQUAL "xDEFAULT_MSG")
set(FPHSA_FAIL_MESSAGE "Could NOT find ${_NAME}")
endif()
if (FPHSA_REQUIRED_VARS)
list(GET FPHSA_REQUIRED_VARS 0 _FIRST_REQUIRED_VAR)
endif()
string(TOUPPER ${_NAME} _NAME_UPPER)
string(TOLOWER ${_NAME} _NAME_LOWER)
if(FPHSA_FOUND_VAR)
set(_FOUND_VAR_UPPER ${_NAME_UPPER}_FOUND)
set(_FOUND_VAR_MIXED ${_NAME}_FOUND)
if(FPHSA_FOUND_VAR STREQUAL _FOUND_VAR_MIXED OR FPHSA_FOUND_VAR STREQUAL _FOUND_VAR_UPPER)
set(_FOUND_VAR ${FPHSA_FOUND_VAR})
else()
message(FATAL_ERROR "The argument for FOUND_VAR is \"${FPHSA_FOUND_VAR}\", but only \"${_FOUND_VAR_MIXED}\" and \"${_FOUND_VAR_UPPER}\" are valid names.")
endif()
else()
set(_FOUND_VAR ${_NAME_UPPER}_FOUND)
endif()
# collect all variables which were not found, so they can be printed, so the
# user knows better what went wrong (#6375)
set(MISSING_VARS "")
set(DETAILS "")
# check if all passed variables are valid
set(FPHSA_FOUND_${_NAME} TRUE)
foreach(_CURRENT_VAR ${FPHSA_REQUIRED_VARS})
if(NOT ${_CURRENT_VAR})
set(FPHSA_FOUND_${_NAME} FALSE)
string(APPEND MISSING_VARS " ${_CURRENT_VAR}")
else()
string(APPEND DETAILS "[${${_CURRENT_VAR}}]")
endif()
endforeach()
if(FPHSA_FOUND_${_NAME})
set(${_NAME}_FOUND TRUE)
set(${_NAME_UPPER}_FOUND TRUE)
else()
set(${_NAME}_FOUND FALSE)
set(${_NAME_UPPER}_FOUND FALSE)
endif()
# component handling
unset(FOUND_COMPONENTS_MSG)
unset(MISSING_COMPONENTS_MSG)
if(FPHSA_HANDLE_COMPONENTS)
foreach(comp ${${_NAME}_FIND_COMPONENTS})
if(${_NAME}_${comp}_FOUND)
if(NOT DEFINED FOUND_COMPONENTS_MSG)
set(FOUND_COMPONENTS_MSG "found components:")
endif()
string(APPEND FOUND_COMPONENTS_MSG " ${comp}")
else()
if(NOT DEFINED MISSING_COMPONENTS_MSG)
set(MISSING_COMPONENTS_MSG "missing components:")
endif()
string(APPEND MISSING_COMPONENTS_MSG " ${comp}")
if(${_NAME}_FIND_REQUIRED_${comp})
set(${_NAME}_FOUND FALSE)
string(APPEND MISSING_VARS " ${comp}")
endif()
endif()
endforeach()
set(COMPONENT_MSG "${FOUND_COMPONENTS_MSG} ${MISSING_COMPONENTS_MSG}")
string(APPEND DETAILS "[c${COMPONENT_MSG}]")
endif()
# version handling:
set(VERSION_MSG "")
set(VERSION_OK TRUE)
# check that the version variable is not empty to avoid emitting a misleading
# message (i.e. `Found unsuitable version ""`)
if (DEFINED ${_NAME}_FIND_VERSION)
if(DEFINED ${FPHSA_VERSION_VAR})
if(NOT "${${FPHSA_VERSION_VAR}}" STREQUAL "")
set(_FOUND_VERSION ${${FPHSA_VERSION_VAR}})
if (FPHSA_HANDLE_VERSION_RANGE)
set (FPCV_HANDLE_VERSION_RANGE HANDLE_VERSION_RANGE)
else()
set(FPCV_HANDLE_VERSION_RANGE NO_AUTHOR_WARNING_VERSION_RANGE)
endif()
find_package_check_version ("${_FOUND_VERSION}" VERSION_OK RESULT_MESSAGE_VARIABLE VERSION_MSG
${FPCV_HANDLE_VERSION_RANGE})
else()
set(VERSION_OK FALSE)
endif()
endif()
if("${${FPHSA_VERSION_VAR}}" STREQUAL "")
# if the package was not found, but a version was given, add that to the output:
if(${_NAME}_FIND_VERSION_EXACT)
set(VERSION_MSG "(Required is exact version \"${${_NAME}_FIND_VERSION}\")")
elseif (FPHSA_HANDLE_VERSION_RANGE AND ${_NAME}_FIND_VERSION_RANGE)
set(VERSION_MSG "(Required is version range \"${${_NAME}_FIND_VERSION_RANGE}\")")
else()
set(VERSION_MSG "(Required is at least version \"${${_NAME}_FIND_VERSION}\")")
endif()
endif()
else ()
# Check with DEFINED as the found version may be 0.
if(DEFINED ${FPHSA_VERSION_VAR})
set(VERSION_MSG "(found version \"${${FPHSA_VERSION_VAR}}\")")
endif()
endif ()
if(VERSION_OK)
string(APPEND DETAILS "[v${${FPHSA_VERSION_VAR}}(${${_NAME}_FIND_VERSION})]")
else()
set(${_NAME}_FOUND FALSE)
endif()
# print the result:
if (${_NAME}_FOUND)
FIND_PACKAGE_MESSAGE(${_NAME} "Found ${_NAME}: ${${_FIRST_REQUIRED_VAR}} ${VERSION_MSG} ${COMPONENT_MSG}" "${DETAILS}")
else ()
if(FPHSA_CONFIG_MODE)
_FPHSA_HANDLE_FAILURE_CONFIG_MODE()
else()
if(NOT VERSION_OK)
set(RESULT_MSG)
if (_FIRST_REQUIRED_VAR)
string (APPEND RESULT_MSG "found ${${_FIRST_REQUIRED_VAR}}")
endif()
if (COMPONENT_MSG)
if (RESULT_MSG)
string (APPEND RESULT_MSG ", ")
endif()
string (APPEND RESULT_MSG "${FOUND_COMPONENTS_MSG}")
endif()
_FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE}: ${VERSION_MSG} (${RESULT_MSG})")
else()
_FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE} (missing:${MISSING_VARS}) ${VERSION_MSG}")
endif()
endif()
endif ()
set(${_NAME}_FOUND ${${_NAME}_FOUND} PARENT_SCOPE)
set(${_NAME_UPPER}_FOUND ${${_NAME}_FOUND} PARENT_SCOPE)
endfunction()
cmake_policy(POP)

View File

@@ -0,0 +1,48 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.
#[=======================================================================[.rst:
FindPackageMessage
------------------
.. code-block:: cmake
find_package_message(<name> "message for user" "find result details")
This function is intended to be used in FindXXX.cmake modules files.
It will print a message once for each unique find result. This is
useful for telling the user where a package was found. The first
argument specifies the name (XXX) of the package. The second argument
specifies the message to display. The third argument lists details
about the find result so that if they change the message will be
displayed again. The macro also obeys the QUIET argument to the
find_package command.
Example:
.. code-block:: cmake
if(X11_FOUND)
find_package_message(X11 "Found X11: ${X11_X11_LIB}"
"[${X11_X11_LIB}][${X11_INCLUDE_DIR}]")
else()
...
endif()
#]=======================================================================]
function(find_package_message pkg msg details)
# Avoid printing a message repeatedly for the same find result.
if(NOT ${pkg}_FIND_QUIETLY)
string(REPLACE "\n" "" details "${details}")
set(DETAILS_VAR FIND_PACKAGE_MESSAGE_DETAILS_${pkg})
if(NOT "${details}" STREQUAL "${${DETAILS_VAR}}")
# The message has not yet been printed.
message(STATUS "${msg}")
# Save the find details in the cache to avoid printing the same
# message again.
set("${DETAILS_VAR}" "${details}"
CACHE INTERNAL "Details about finding ${pkg}")
endif()
endif()
endfunction()

View File

@@ -0,0 +1,4 @@
find_library(YARA_LIBRARIES NAMES yara)
find_file(yara.h YARA_INCLUDE_DIRS)
mark_as_advanced(YARA_LIBRARIES YARA_INCLUDE_DIRS)

View File

@@ -0,0 +1,41 @@
# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# - Try to find Facebook zstd library
# This will define
# ZSTD_FOUND
# ZSTD_INCLUDE_DIR
# ZSTD_LIBRARY
#
find_path(ZSTD_INCLUDE_DIR NAMES zstd.h)
find_library(ZSTD_LIBRARY_DEBUG NAMES zstdd zstd_staticd)
find_library(ZSTD_LIBRARY_RELEASE NAMES zstd zstd_static)
include(SelectLibraryConfigurations)
SELECT_LIBRARY_CONFIGURATIONS(ZSTD)
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(
ZSTD DEFAULT_MSG
ZSTD_LIBRARY ZSTD_INCLUDE_DIR
)
if (ZSTD_FOUND)
message(STATUS "Found Zstd: ${ZSTD_LIBRARY}")
endif()
mark_as_advanced(ZSTD_INCLUDE_DIR ZSTD_LIBRARY)

View File

@@ -0,0 +1,117 @@
macro(add_imhex_plugin)
# Parse arguments
set(options LIBRARY_PLUGIN)
set(oneValueArgs NAME IMHEX_VERSION)
set(multiValueArgs SOURCES INCLUDES LIBRARIES FEATURES)
cmake_parse_arguments(IMHEX_PLUGIN "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
if (IMHEX_PLUGIN_IMHEX_VERSION)
message(STATUS "Compiling plugin ${IMHEX_PLUGIN_NAME} for ImHex Version ${IMHEX_PLUGIN_IMHEX_VERSION}")
set(IMHEX_VERSION_STRING "${IMHEX_PLUGIN_IMHEX_VERSION}")
endif()
if (IMHEX_STATIC_LINK_PLUGINS)
set(IMHEX_PLUGIN_LIBRARY_TYPE STATIC)
target_link_libraries(libimhex PUBLIC ${IMHEX_PLUGIN_NAME})
configure_file(${CMAKE_SOURCE_DIR}/dist/web/plugin-bundle.cpp.in ${CMAKE_CURRENT_BINARY_DIR}/plugin-bundle.cpp @ONLY)
target_sources(main PUBLIC ${CMAKE_CURRENT_BINARY_DIR}/plugin-bundle.cpp)
set(IMHEX_PLUGIN_SUFFIX ".hexplug")
else()
if (IMHEX_PLUGIN_LIBRARY_PLUGIN)
set(IMHEX_PLUGIN_LIBRARY_TYPE SHARED)
set(IMHEX_PLUGIN_SUFFIX ".hexpluglib")
else()
set(IMHEX_PLUGIN_LIBRARY_TYPE MODULE)
set(IMHEX_PLUGIN_SUFFIX ".hexplug")
endif()
endif()
# Define new project for plugin
project(${IMHEX_PLUGIN_NAME})
# Create a new shared library for the plugin source code
add_library(${IMHEX_PLUGIN_NAME} ${IMHEX_PLUGIN_LIBRARY_TYPE} ${IMHEX_PLUGIN_SOURCES})
# Add include directories and link libraries
target_include_directories(${IMHEX_PLUGIN_NAME} PUBLIC ${IMHEX_PLUGIN_INCLUDES})
target_link_libraries(${IMHEX_PLUGIN_NAME} PUBLIC ${IMHEX_PLUGIN_LIBRARIES})
target_link_libraries(${IMHEX_PLUGIN_NAME} PRIVATE libimhex ${FMT_LIBRARIES} imgui_all_includes libwolv)
addIncludesFromLibrary(${IMHEX_PLUGIN_NAME} libpl)
addIncludesFromLibrary(${IMHEX_PLUGIN_NAME} libpl-gen)
precompileHeaders(${IMHEX_PLUGIN_NAME} "${CMAKE_CURRENT_SOURCE_DIR}/include")
# Add IMHEX_PROJECT_NAME and IMHEX_VERSION define
target_compile_definitions(${IMHEX_PLUGIN_NAME} PRIVATE IMHEX_PROJECT_NAME="${IMHEX_PLUGIN_NAME}")
target_compile_definitions(${IMHEX_PLUGIN_NAME} PRIVATE IMHEX_VERSION="${IMHEX_VERSION_STRING}")
target_compile_definitions(${IMHEX_PLUGIN_NAME} PRIVATE IMHEX_PLUGIN_NAME=${IMHEX_PLUGIN_NAME})
# Enable required compiler flags
enableUnityBuild(${IMHEX_PLUGIN_NAME})
setupCompilerFlags(${IMHEX_PLUGIN_NAME})
# Configure build properties
set_target_properties(${IMHEX_PLUGIN_NAME}
PROPERTIES
RUNTIME_OUTPUT_DIRECTORY "${IMHEX_MAIN_OUTPUT_DIRECTORY}/plugins"
CXX_STANDARD 23
PREFIX ""
SUFFIX ${IMHEX_PLUGIN_SUFFIX}
)
# Set rpath of plugin libraries to the plugins folder
if (APPLE)
set_target_properties(${IMHEX_PLUGIN_NAME} PROPERTIES BUILD_RPATH "@executable_path/../Frameworks;@executable_path/plugins")
endif()
# Setup a romfs for the plugin
list(APPEND LIBROMFS_RESOURCE_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/romfs)
set(LIBROMFS_PROJECT_NAME ${IMHEX_PLUGIN_NAME})
add_subdirectory(${IMHEX_BASE_FOLDER}/lib/external/libromfs ${CMAKE_CURRENT_BINARY_DIR}/libromfs)
target_link_libraries(${IMHEX_PLUGIN_NAME} PRIVATE ${LIBROMFS_LIBRARY})
foreach(feature ${IMHEX_PLUGIN_FEATURES})
string(TOUPPER ${feature} feature)
add_definitions(-DIMHEX_PLUGIN_${IMHEX_PLUGIN_NAME}_FEATURE_${feature}=0)
endforeach()
# Add the new plugin to the main dependency list so it gets built by default
if (TARGET imhex_all)
add_dependencies(imhex_all ${IMHEX_PLUGIN_NAME})
endif()
if (IMHEX_EXTERNAL_PLUGIN_BUILD)
install(TARGETS ${IMHEX_PLUGIN_NAME} DESTINATION ".")
endif()
# Fix rpath
if (APPLE)
set_target_properties(${IMHEX_PLUGIN_NAME} PROPERTIES INSTALL_RPATH "@executable_path/../Frameworks;@executable_path/plugins")
elseif (UNIX)
set_target_properties(${IMHEX_PLUGIN_NAME} PROPERTIES INSTALL_RPATH_USE_ORIGIN ON INSTALL_RPATH "$ORIGIN/")
endif()
if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/tests/CMakeLists.txt AND IMHEX_ENABLE_UNIT_TESTS)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/tests)
target_link_libraries(${IMHEX_PLUGIN_NAME} PUBLIC ${IMHEX_PLUGIN_NAME}_tests)
target_compile_definitions(${IMHEX_PLUGIN_NAME}_tests PRIVATE IMHEX_PROJECT_NAME="${IMHEX_PLUGIN_NAME}-tests")
endif()
endmacro()
macro(add_romfs_resource input output)
configure_file(${input} ${CMAKE_CURRENT_BINARY_DIR}/romfs/${output} COPYONLY)
list(APPEND LIBROMFS_RESOURCE_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/romfs)
endmacro()
macro (enable_plugin_feature feature)
string(TOUPPER ${feature} feature)
if (NOT (feature IN_LIST IMHEX_PLUGIN_FEATURES))
message(FATAL_ERROR "Feature ${feature} is not enabled for plugin ${IMHEX_PLUGIN_NAME}")
endif()
remove_definitions(-DIMHEX_PLUGIN_${IMHEX_PLUGIN_NAME}_FEATURE_${feature}=0)
add_definitions(-DIMHEX_PLUGIN_${IMHEX_PLUGIN_NAME}_FEATURE_${feature}=1)
endmacro()

View File

@@ -14,39 +14,47 @@ if(CMAKE_GENERATOR)
# Being called as include(PostprocessBundle), so define a helper function.
set(_POSTPROCESS_BUNDLE_MODULE_LOCATION "${CMAKE_CURRENT_LIST_FILE}")
function(postprocess_bundle out_target in_target)
add_custom_command(TARGET ${out_target} POST_BUILD
COMMAND ${CMAKE_COMMAND} -DBUNDLE_PATH="$<TARGET_FILE_DIR:${in_target}>/../.." -DCODE_SIGN_CERTIFICATE_ID="${CODE_SIGN_CERTIFICATE_ID}"
-P "${_POSTPROCESS_BUNDLE_MODULE_LOCATION}"
)
install(CODE "set(BUNDLE_PATH ${CMAKE_INSTALL_PREFIX}/${BUNDLE_NAME})")
install(CODE "set(CODE_SIGN_CERTIFICATE_ID ${CODE_SIGN_CERTIFICATE_ID})")
install(CODE "set(EXTRA_BUNDLE_LIBRARY_PATHS ${EXTRA_BUNDLE_LIBRARY_PATHS})")
install(SCRIPT ${_POSTPROCESS_BUNDLE_MODULE_LOCATION})
endfunction()
return()
endif()
# IMHEX PATCH BEGIN
# The function defined above doesn't keep in mind that if we are cross-compiling to MacOS, APPLE must be 1,
# so we force it here (where else would this script be run anyway ? This seems to be MacOS-specific code)
SET(APPLE 1)
# IMHEX PATCHE END
get_filename_component(BUNDLE_PATH "${BUNDLE_PATH}" ABSOLUTE)
message(STATUS "Fixing up application bundle: ${BUNDLE_PATH}")
# Make sure to fix up any included ImHex plugin.
file(GLOB_RECURSE extra_libs "${BUNDLE_PATH}/Contents/MacOS/plugins/*.hexplug")
file(GLOB_RECURSE plugins "${BUNDLE_PATH}/Contents/MacOS/plugins/*.hexplug")
message(STATUS "Fixing up application bundle: ${extra_dirs}")
# BundleUtilities doesn't support DYLD_FALLBACK_LIBRARY_PATH behavior, which
# makes it sometimes break on libraries that do weird things with @rpath. Specify
# equivalent search directories until https://gitlab.kitware.com/cmake/cmake/issues/16625
# is fixed and in our minimum CMake version.
set(extra_dirs "/usr/local/lib" "/lib" "/usr/lib")
set(extra_dirs "/usr/local/lib" "/lib" "/usr/lib" ${EXTRA_BUNDLE_LIBRARY_PATHS} "${BUNDLE_PATH}/Contents/MacOS/plugins" "${BUNDLE_PATH}/Contents/Frameworks")
message(STATUS "Fixing up application bundle: ${extra_dirs}")
# BundleUtilities is overly verbose, so disable most of its messages
function(message)
if(NOT ARGV MATCHES "^STATUS;")
_message(${ARGV})
endif()
endfunction()
#function(message)
# if(NOT ARGV MATCHES "^STATUS;")
# _message(${ARGV})
# endif()
#endfunction()
include(BundleUtilities)
set(BU_CHMOD_BUNDLE_ITEMS ON)
fixup_bundle("${BUNDLE_PATH}" "${extra_libs}" "${extra_dirs}" IGNORE_ITEM "Python")
fixup_bundle("${BUNDLE_PATH}" "${plugins}" "${extra_dirs}")
if (CODE_SIGN_CERTIFICATE_ID)
# Hack around Apple Silicon signing bugs by copying the real app, signing it and moving it back.
@@ -58,4 +66,13 @@ if (CODE_SIGN_CERTIFICATE_ID)
endif()
# Add a necessary rpath to the imhex binary
get_bundle_main_executable("${BUNDLE_PATH}" IMHEX_EXECUTABLE)
get_bundle_main_executable("${BUNDLE_PATH}" IMHEX_EXECUTABLE)
file(GLOB_RECURSE plugin_libs "${BUNDLE_PATH}/Contents/MacOS/*.hexpluglib")
foreach(plugin_lib ${plugin_libs})
get_filename_component(plugin_lib_name ${plugin_lib} NAME)
set(plugin_lib_dest "${BUNDLE_PATH}/Contents/MacOS/plugins/${plugin_lib_name}")
configure_file(${plugin_lib} "${plugin_lib_dest}" COPYONLY)
message(STATUS "Copying plugin library: ${plugin_lib} to ${plugin_lib_dest}")
endforeach ()

View File

@@ -1,3 +0,0 @@
set (CPACK_BUNDLE_NAME "ImHex")
set (CPACK_BUNDLE_ICON "${CMAKE_SOURCE_DIR}/resources/AppIcon.icns" )
set (CPACK_BUNDLE_PLIST "${CMAKE_BINARY_DIR}/ImHex.app/Contents/Info.plist")

58
cmake/sdk/CMakeLists.txt Normal file
View File

@@ -0,0 +1,58 @@
cmake_minimum_required(VERSION 3.20)
project(ImHexSDK)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules")
set(CMAKE_POSITION_INDEPENDENT_CODE ON CACHE BOOL "" FORCE)
include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/build_helpers.cmake")
set(IMHEX_BASE_FOLDER ${CMAKE_CURRENT_SOURCE_DIR} PARENT_SCOPE)
include(ImHexPlugin)
function(add_subdirectory_if_exists folder)
if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${folder}/CMakeLists.txt")
add_subdirectory("${folder}" EXCLUDE_FROM_ALL)
endif()
endfunction()
set(IMHEX_EXTERNAL_PLUGIN_BUILD ON PARENT_SCOPE)
set(IMHEX_EXTERNAL_PLUGIN_BUILD ON)
add_custom_target(imhex_all)
add_subdirectory(lib/third_party/imgui EXCLUDE_FROM_ALL)
set(FMT_INSTALL OFF CACHE BOOL "" FORCE)
add_subdirectory_if_exists(lib/third_party/fmt)
set(FMT_LIBRARIES fmt::fmt-header-only PARENT_SCOPE)
set(FMT_LIBRARIES fmt::fmt-header-only)
add_subdirectory_if_exists(lib/third_party/nlohmann_json)
set(NLOHMANN_JSON_LIBRARIES nlohmann_json PARENT_SCOPE)
set(NLOHMANN_JSON_LIBRARIES nlohmann_json)
add_subdirectory(lib/external/libwolv EXCLUDE_FROM_ALL)
set(LIBPL_ENABLE_CLI OFF CACHE BOOL "" FORCE)
add_subdirectory(lib/external/pattern_language EXCLUDE_FROM_ALL)
find_package(CURL REQUIRED)
find_package(mbedTLS 3.4.0 REQUIRED)
set(CURL_LIBRARIES ${CURL_LIBRARIES} PARENT_SCOPE)
set(MBEDTLS_LIBRARIES ${MBEDTLS_LIBRARIES} PARENT_SCOPE)
add_subdirectory(lib/libimhex)
if (WIN32)
set_target_properties(libimhex PROPERTIES
IMPORTED_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}/../libimhex.dll"
IMPORTED_IMPLIB "${CMAKE_CURRENT_SOURCE_DIR}/lib/libimhex.dll.a"
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/lib/libimhex/include")
elseif (APPLE)
file(GLOB LIBIMHEX_DYLIB "${CMAKE_CURRENT_SOURCE_DIR}/../../Frameworks/libimhex.*.dylib")
set_target_properties(libimhex PROPERTIES
IMPORTED_LOCATION "${LIBIMHEX_DYLIB}"
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/lib/libimhex/include")
else()
set_target_properties(libimhex PROPERTIES
IMPORTED_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}/../libimhex.so"
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/lib/libimhex/include")
endif()

View File

@@ -0,0 +1,60 @@
# ImHex Plugin Template
# =====================
# This is the official CMake template for making your own ImHex plugins
# To use this template, copy the file into its own directory and modify it to your needs
# For the most part, this is a regular CMake project with some extra functions provided by the ImHex SDK
#
# [NOTE FOR NON-C++ PLUGINS]
# The template is laid out for a C++ plugin, however you can write your plugin in any language you want
# and just make the plugin statically link against your code. The only thing that's required is a .cpp file with
# the IMHEX_PLUGIN_SETUP() macro used in it. This macro is used to setup the plugin and register it with ImHex
#
# [CMAKE FUNCTIONS]
# add_imhex_plugin(): Registers a new plugin
# NAME: The name of the plugin
# IMHEX_VERSION: The ImHex version this plugin is compatible with. If unset, the plugin will be loaded on all versions (this may not work though)
# SOURCES: Source files of the plugin
# INCLUDES: Include directories of the plugin
# LIBRARIES: Libraries to link against
# FEATURES: Optional features that can be enabled or disabled
# LIBRARY_PLUGIN: If set, turns this plugin into a library plugin. Library plugins can be linked against by other plugins
#
# add_romfs_resource(filePath romfsPath): Adds a file to the romfs of the plugin
# The RomFS is a virtual filesystem whose files can be accessed by the plugin using the functions in the `romfs::` namespace
# This function is used to add a single file to the romfs. You can however also simply create a `romfs` directory in your plugin directory and place your files and folders in there
# filePath: The path to the file on the disk
# romfsPath: The path to the file in the romfs
#
# enable_plugin_feature(feature): Enables a plugin feature
# Features are optional parts of the plugin that may or may not be available depending on build settings
# When a feature is enabled, `IMHEX_FEATURE_ENABLED(feature)` will be defined to true. Otherwise, it will be defined to false
# Use the `IMHEX_PLUGIN_FEATURES` macro in the main plugin file to define names to each feature and have them be listed in the plugin list
# feature: The name of the feature to enable
cmake_minimum_required(VERSION 3.20)
project(ImHexPlugin)
# Include the ImHex SDK
# For this to work, you need to set the IMHEX_SDK_PATH environment variable to the path of the ImHex SDK
#
# On Windows, the SDK is next to the ImHex executable
# On Linux, the SDK is usually in /usr/share/imhex/sdk but this may vary depending on your distribution
# On MacOS, the SDK is located inside of the ImHex.app bundle under ImHex.app/Contents/Resources/sdk
if (NOT EXISTS $ENV{IMHEX_SDK_PATH})
message(FATAL_ERROR "The IMHEX_SDK_PATH environment variable is not set")
endif()
add_subdirectory($ENV{IMHEX_SDK_PATH} ImHexSDK)
# Register the plugin
# This will configure everything you need to make your plugin work
# Modify the arguments to your needs. Right now it defines a plugin called `example_plugin`
# with a single source file called `example_plugin.cpp` in the `source` directory
# By default you have access to the libimhex library to interact with ImHex
# as well as libwolv, libromfs, libfmt and ImGui, but you can link against any libraries you want
add_imhex_plugin(
NAME
example_plugin
SOURCES
source/example_plugin.cpp
)

View File

@@ -0,0 +1,11 @@
#include <hex/plugin.hpp>
// Browse through the headers in lib/libimhex/include/hex/api/ to see what you can do with the API.
// Most important ones are <hex/api/imhex_api.hpp> and <hex/api/content_registry.hpp>
// This is the main entry point of your plugin. The code in the body of this construct will be executed
// when ImHex starts up and loads the plugin.
// The strings in the header are used to display information about the plugin in the UI.
IMHEX_PLUGIN_SETUP("Example Plugin", "Author", "Description") {
// Put your init code here
}

View File

@@ -1,40 +0,0 @@
FROM debian:bullseye-slim
LABEL maintainer Example <example@example.com>
ARG TAG=master
ARG REPO=https://github.com/WerWolv/ImHex.git
USER root
# Bring packages up to date
RUN apt-get update \
&& apt-get upgrade -y \
&& apt-get autoremove -y \
&& apt-get install -y \
git \
cmake \
curl \
squashfs-tools
# Fetch source and dependencies
RUN mkdir -p /source \
&& cd /source \
&& git clone $REPO \
&& cd ImHex \
&& git checkout $TAG \
&& git submodule update --init --recursive \
&& cd /source/ImHex/dist \
&& ./get_deps_debian.sh
ARG CXX=g++-10
# Build ImHex
RUN mkdir -p /source/ImHex/build \
&& cd /source/ImHex/build \
&& cmake --install-prefix /usr -DCMAKE_BUILD_TYPE=Release .. \
&& make -j
# Prepare for AppImage
RUN cd /source/ImHex/dist/AppImage \
&& ./package.sh /source/ImHex/build \
&& mv /source/ImHex/build/ImHex-x86_64.AppImage /

View File

@@ -1,6 +0,0 @@
[Desktop Entry]
Name=ImHex
Exec=imhex
Icon=imhex
Type=Application
Categories=Utility;

View File

@@ -1,22 +0,0 @@
# Building an AppImage
There are two ways of building an AppImage for ImHex, using the provided
tools here.
If you want to create an AppImage and do not have a build to work from
already, you can use docker to build ImHex and package an AppImage.
Alternatively you can create an AppImage using an existing build.
## Using docker
First run `build.sh` to create a docker image. Then run `extract.sh` to get the
AppImage out. This needs to be in two steps, as a docker build cannot copy
files out. Nor can docker build use volume mounts.
The environment variable TAG can be set to build for a specific git tag.
Without the master branch is build.
## Using an existing build
Run `package.sh` with the build dir as an argument. E.g.:
```
./package.sh ../../build
```

View File

@@ -1,16 +0,0 @@
#!/bin/bash
# Set the TAG environment variable to build a specific tag
# Set the REPO environment variable to point at a different git repository
# Make sure we're in the same directory as this script
pushd $(dirname "$(realpath "$0")")
BUILDARG=""
SUFFIX=""
[ -n "${TAG}" ] && BUILDARG="${BUILDARG} --build-arg=TAG=${TAG}" && SUFFIX=":${TAG}"
[ -n "${REPO}" ] && BUILDARG="${BUILDARG} --build-arg=REPO=${REPO}"
docker build ${BUILDARG} -t imhex-appimage-build${SUFFIX} .
popd

View File

@@ -1,26 +0,0 @@
#!/bin/bash
# Set the TAG environment variable to move to a versioned name while extracting
# Make sure we're in the same directory as this script
pushd $(dirname "$(realpath "$0")")
SUFFIX=""
[ -n "$TAG" ] && SUFFIX=":$TAG"
# Remove old containers
docker rm imhex 2>&1 > /dev/null
docker run -d --name imhex imhex-appimage-build${SUFFIX} sleep 30 &
sleep 15
docker cp imhex:/ImHex-x86_64.AppImage .
# Move to tagged name if $TAG set
if [ -n "$TAG" ]; then
mv ImHex-x86_64.AppImage ImHex-${TAG}-x86_64.AppImage
echo -e "\nThe created AppImage can be found here:\n $(pwd)/ImHex-${TAG}-x86_64.AppImage\n\n"
else
echo -e "\nThe created AppImage can be found here:\n $(pwd)/ImHex-x86_64.AppImage\n\n"
fi
popd

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

View File

@@ -1,58 +0,0 @@
#!/bin/bash
set -e # Exit on error
set -o pipefail # Bash specific
usage() {
echo "Tool to package an ImHex build into an AppImage"
echo
echo "Usage:"
echo "$0 <build dir>"
echo
exit
}
MYDIR=$(dirname "$(realpath "$0")")
# Check is a build dir has been specified and it's a dir
[ -z "$1" ] && usage
[ -d "$1" ] || usage
set -u # Throw errors when unset variables are used
BUILDDIR=$1
APPDIR=${BUILDDIR}/ImHex.AppDir
APPIMAGE=${BUILDDIR}/ImHex-x86_64.AppImage
# Prepare for AppImage
## Fetch the needed AppImage binaries
curl -L https://github.com/AppImage/AppImageKit/releases/download/13/AppRun-x86_64 -o ${MYDIR}/AppRun-x86_64
curl -L https://github.com/AppImage/AppImageKit/releases/download/13/runtime-x86_64 -o ${MYDIR}/runtime-x86_64
## Setup directory structure
mkdir -p ${BUILDDIR}/ImHex.AppDir/usr/{bin,lib} ${BUILDDIR}/ImHex.AppDir/usr/share/imhex/plugins
## Add ImHex files to structure
cp ${BUILDDIR}/imhex ${APPDIR}/usr/bin
cp ${BUILDDIR}/plugins/builtin/builtin.hexplug ${APPDIR}/usr/share/imhex/plugins
cp ${MYDIR}/{AppRun-x86_64,ImHex.desktop,imhex.png} ${APPDIR}/
mv ${BUILDDIR}/ImHex.AppDir/AppRun-x86_64 ${APPDIR}/AppRun
chmod a+x ${BUILDDIR}/ImHex.AppDir/AppRun
## Add all dependencies
ldd ${BUILDDIR}/imhex | awk '/ => /{print $3}' | awk '!/(libc|libstdc++|libc++|libdl|libpthread|libselinux|ld-linux|libgdk)/' | xargs -I '{}' cp '{}' ${APPDIR}/usr/lib
ldd ${BUILDDIR}/plugins/builtin/builtin.hexplug | awk '/ => /{print $3}' | awk '!/(libc|libstdc++|libc++|libdl|libpthread|libselinux|ld-linux|libgdk)/' | xargs -I '{}' cp '{}' ${APPDIR}/usr/lib
ldd ${BUILDDIR}/lib/libimhex/libimhex.so | awk '/ => /{print $3}' | awk '!/(libc|libstdc++|libc++|libdl|libpthread|libselinux|ld-linux|libgdk)/' | xargs -I '{}' cp '{}' ${APPDIR}/usr/lib
# Package it up as described here:
# https://github.com/AppImage/AppImageKit#appimagetool-usage
# under 'If you want to generate an AppImage manually'
# This builds a v2 AppImage according to
# https://github.com/AppImage/AppImageSpec/blob/master/draft.md#type-2-image-format
mksquashfs ${APPDIR} ${BUILDDIR}/ImHex.squashfs -root-owned -noappend
cat ${MYDIR}/runtime-x86_64 > ${APPIMAGE}
cat ${BUILDDIR}/ImHex.squashfs >> ${APPIMAGE}
chmod a+x ${APPIMAGE}
if [ ! -f /.dockerenv ]; then
echo -e "\nThe created AppImage can be found here:\n ${APPIMAGE}\n\n"
fi

137
dist/AppImageBuilder.yml vendored Normal file
View File

@@ -0,0 +1,137 @@
# appimage-builder recipe see https://appimage-builder.readthedocs.io for details
version: 1
AppDir:
path: .AppDir
app_info:
id: imhex
name: ImHex
icon: imhex
version: "{{VERSION}}"
exec: usr/bin/imhex
exec_args: $@
apt:
arch:
- amd64
allow_unauthenticated: true
sources:
- sourceline: deb http://us.archive.ubuntu.com/ubuntu/ jammy main restricted
- sourceline: deb http://us.archive.ubuntu.com/ubuntu/ jammy-updates main restricted
- sourceline: deb http://us.archive.ubuntu.com/ubuntu/ jammy universe
- sourceline: deb http://us.archive.ubuntu.com/ubuntu/ jammy-updates universe
- sourceline: deb http://us.archive.ubuntu.com/ubuntu/ jammy multiverse
- sourceline: deb http://us.archive.ubuntu.com/ubuntu/ jammy-updates multiverse
- sourceline: deb http://us.archive.ubuntu.com/ubuntu/ jammy-backports main restricted
universe multiverse
- sourceline: deb http://security.ubuntu.com/ubuntu jammy-security main restricted
- sourceline: deb http://security.ubuntu.com/ubuntu jammy-security universe
- sourceline: deb http://security.ubuntu.com/ubuntu jammy-security multiverse
include:
- librsvg2-common
- libbz2-1.0:amd64
- libcap2:amd64
- libdbus-1-3:amd64
- libgpg-error0:amd64
- liblzma5:amd64
- libnss-mdns:amd64
- libpcre3:amd64
- libselinux1:amd64
- libtinfo6:amd64
files:
include:
- /lib/x86_64-linux-gnu/libLLVM-13.so.1
- /lib/x86_64-linux-gnu/libOpenGL.so.0
- /lib/x86_64-linux-gnu/libX11.so.6
- /lib/x86_64-linux-gnu/libXau.so.6
- /lib/x86_64-linux-gnu/libXcomposite.so.1
- /lib/x86_64-linux-gnu/libXcursor.so.1
- /lib/x86_64-linux-gnu/libXdamage.so.1
- /lib/x86_64-linux-gnu/libXdmcp.so.6
- /lib/x86_64-linux-gnu/libXext.so.6
- /lib/x86_64-linux-gnu/libXfixes.so.3
- /lib/x86_64-linux-gnu/libXi.so.6
- /lib/x86_64-linux-gnu/libXinerama.so.1
- /lib/x86_64-linux-gnu/libXrandr.so.2
- /lib/x86_64-linux-gnu/libXrender.so.1
- /lib/x86_64-linux-gnu/libXxf86vm.so.1
- /lib/x86_64-linux-gnu/libatk-1.0.so.0
- /lib/x86_64-linux-gnu/libatk-bridge-2.0.so.0
- /lib/x86_64-linux-gnu/libatspi.so.0
- /lib/x86_64-linux-gnu/libblkid.so.1
- /lib/x86_64-linux-gnu/libbrotlicommon.so.1
- /lib/x86_64-linux-gnu/libbrotlidec.so.1
- /lib/x86_64-linux-gnu/libbsd.so.0
- /lib/x86_64-linux-gnu/libcairo-gobject.so.2
- /lib/x86_64-linux-gnu/libcairo.so.2
- /lib/x86_64-linux-gnu/libcurl-gnutls.so.4
- /lib/x86_64-linux-gnu/libdatrie.so.1
- /lib/x86_64-linux-gnu/libedit.so.2
- /lib/x86_64-linux-gnu/libelf.so.1
- /lib/x86_64-linux-gnu/libepoxy.so.0
- /lib/x86_64-linux-gnu/libffi.so.8
- /lib/x86_64-linux-gnu/libfontconfig.so.1
- /lib/x86_64-linux-gnu/libfreetype.so.6
- /lib/x86_64-linux-gnu/libfribidi.so.0
- /lib/x86_64-linux-gnu/libgcrypt.so.20
- /lib/x86_64-linux-gnu/libgdk-3.so.0
- /lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0
- /lib/x86_64-linux-gnu/libgio-2.0.so.0
- /lib/x86_64-linux-gnu/libglfw.so.3
- /lib/x86_64-linux-gnu/libglib-2.0.so.0
- /lib/x86_64-linux-gnu/libgmodule-2.0.so.0
- /lib/x86_64-linux-gnu/libgmp.so.10
- /lib/x86_64-linux-gnu/libgnutls.so.30
- /lib/x86_64-linux-gnu/libgobject-2.0.so.0
- /lib/x86_64-linux-gnu/libgraphite2.so.3
- /lib/x86_64-linux-gnu/libharfbuzz.so.0
- /lib/x86_64-linux-gnu/libhogweed.so.6
- /lib/x86_64-linux-gnu/libicudata.so.70
- /lib/x86_64-linux-gnu/libicuuc.so.70
- /lib/x86_64-linux-gnu/libidn2.so.0
- /lib/x86_64-linux-gnu/libjpeg.so.8
- /lib/x86_64-linux-gnu/liblber-2.5.so.0
- /lib/x86_64-linux-gnu/libldap-2.5.so.0
- /lib/x86_64-linux-gnu/liblz4.so.1
- /lib/x86_64-linux-gnu/libmagic.so.1
- /lib/x86_64-linux-gnu/libmbedcrypto.so.7
- /lib/x86_64-linux-gnu/libmbedtls.so.14
- /lib/x86_64-linux-gnu/libmbedx509.so.1
- /lib/x86_64-linux-gnu/libmd.so.0
- /lib/x86_64-linux-gnu/libmount.so.1
- /lib/x86_64-linux-gnu/libnettle.so.8
- /lib/x86_64-linux-gnu/libp11-kit.so.0
- /lib/x86_64-linux-gnu/libpango-1.0.so.0
- /lib/x86_64-linux-gnu/libpangocairo-1.0.so.0
- /lib/x86_64-linux-gnu/libpangoft2-1.0.so.0
- /lib/x86_64-linux-gnu/libpcre2-8.so.0
- /lib/x86_64-linux-gnu/libpixman-1.so.0
- /lib/x86_64-linux-gnu/libpng16.so.16
- /lib/x86_64-linux-gnu/libsasl2.so.2
- /lib/x86_64-linux-gnu/libsensors.so.5
- /lib/x86_64-linux-gnu/libstdc++.so.6
- /lib/x86_64-linux-gnu/libsystemd.so.0
- /lib/x86_64-linux-gnu/libtasn1.so.6
- /lib/x86_64-linux-gnu/libthai.so.0
- /lib/x86_64-linux-gnu/libunistring.so.2
- /lib/x86_64-linux-gnu/libuuid.so.1
- /lib/x86_64-linux-gnu/libvulkan.so.1
- /lib/x86_64-linux-gnu/libwayland-client.so.0
- /lib/x86_64-linux-gnu/libwayland-cursor.so.0
- /lib/x86_64-linux-gnu/libwayland-egl.so.1
- /lib/x86_64-linux-gnu/libxcb-dri2.so.0
- /lib/x86_64-linux-gnu/libxcb-dri3.so.0
- /lib/x86_64-linux-gnu/libxcb-present.so.0
- /lib/x86_64-linux-gnu/libxcb-sync.so.1
- /lib/x86_64-linux-gnu/libxkbcommon.so.0
- /lib/x86_64-linux-gnu/libxml2.so.2
- /lib/x86_64-linux-gnu/libxshmfence.so.1
- /lib/x86_64-linux-gnu/libzstd.so.1
exclude:
- usr/share/man
- usr/share/doc/*/README.*
- usr/share/doc/*/changelog.*
- usr/share/doc/*/NEWS.*
- usr/share/doc/*/TODO.*
AppImage:
arch: x86_64
update-information: gh-releases-zsync|WerWolv|ImHex|latest|imhex-*-x86_64.AppImage.zsync
file_name: imhex-{{VERSION}}-x86_64.AppImage

View File

@@ -1,6 +1,6 @@
FROM archlinux:latest
MAINTAINER WerWolv "hey@werwolv.net"
LABEL maintainer="hey@werwolv.net WerWolv"
# Install dependencies
RUN pacman -Syy --needed --noconfirm
@@ -13,9 +13,10 @@ RUN pacman -S --needed --noconfirm \
glfw-x11 \
file \
mbedtls \
python3 \
freetype2 \
gtk3
curl \
dbus \
xdg-desktop-portal
# Clone ImHex
RUN git clone https://github.com/WerWolv/ImHex --recurse-submodules /root/ImHex
@@ -24,4 +25,4 @@ RUN git clone https://github.com/WerWolv/ImHex --recurse-submodules /root/ImHex
RUN mkdir /root/ImHex/build
WORKDIR /root/ImHex/build
RUN cmake .. && make -j
WORKDIR /root/ImHex
WORKDIR /root/ImHex

30
dist/Arch/PKGBUILD vendored Normal file
View File

@@ -0,0 +1,30 @@
# Maintainer: iTrooz_ <aur at itrooz dot fr>
# Contributor: Morten Linderud <foxboron@archlinux.org>
pkgname=imhex-bin
pkgver=%version%
pkgrel=1
pkgdesc="A Hex Editor for Reverse Engineers, Programmers and people who value their retinas when working at 3 AM. "
arch=("x86_64")
url="https://github.com/WerWolv/ImHex"
license=('GPL2')
depends=(glfw mbedtls freetype2 libglvnd dbus gtk3 curl fmt yara nlohmann-json zlib bzip2 xz zstd)
makedepends=(git)
provides=(imhex)
conflicts=(imhex)
source=("$url/releases/download/v$pkgver/imhex-$pkgver-ArchLinux-x86_64.pkg.tar.zst")
md5sums=(SKIP)
package() {
install -Dm755 "$srcdir/usr/bin/imhex" "$pkgdir/usr/bin/imhex"
install -Dm755 "$srcdir/usr/bin/imhex-updater" "$pkgdir/usr/bin/imhex-updater"
install -Dm644 "$srcdir/usr/lib/libimhex.so.$pkgver" "$pkgdir/usr/lib/libimhex.so.$pkgver"
for plugin in "$srcdir/usr/lib/imhex/plugins/"*.hexplug*; do
install -Dm644 "$plugin" "$pkgdir/usr/lib/imhex/plugins/${plugin##*/}"
done
install -d "$pkgdir/usr/share/imhex"
cp -r "$srcdir/usr/share/imhex/"{constants,encodings,includes,magic,patterns} "$pkgdir/usr/share/imhex"
cp -r "$srcdir/usr/share/"{applications,licenses,pixmaps} "$pkgdir/usr/share"
}

12
dist/Brewfile vendored
View File

@@ -1,12 +1,16 @@
brew "glfw"
brew "mbedtls"
brew "nlohmann-json"
brew "cmake"
brew "ccache"
brew "python3"
brew "freetype2"
brew "libmagic"
brew "pkg-config"
# TODO: Remove this when XCode version of clang will support the same level as LLVM 10
brew "curl"
brew "gcc@12"
brew "llvm"
brew "glfw"
brew "ninja"
brew "zlib"
brew "xz"
brew "bzip2"
brew "zstd"

View File

@@ -4,7 +4,7 @@ Section: editors
Priority: optional
Architecture: amd64
License: GNU GPL-2
Depends: libglfw3-dev, libmagic-dev, libmbedtls-dev, libcapstone-dev, python3-dev, libfreetype-dev, libgtk-3-dev, libldap2-dev
Depends: libglfw3 | libglfw3-wayland, libmagic1, libmbedtls14, libfreetype6, libopengl0, libdbus-1-3, xdg-desktop-portal
Maintainer: WerWolv <hey@werwolv.net>
Description: ImHex Hex Editor
A Hex Editor for Reverse Engineers, Programmers and

View File

@@ -1,11 +0,0 @@
[Desktop Entry]
Name=ImHex
Comment=ImHex Hex Editor
GenericName=Hex Editor
Exec=/usr/bin/imhex %U
Icon=/usr/share/pixmaps/imhex.png
Type=Application
StartupNotify=true
Categories=GNOME;GTK;Development;
StartupWMClass=imhex

View File

@@ -9,24 +9,24 @@ HOMEPAGE="https://github.com/WerWolv/ImHex"
SRC_URI=""
EGIT_REPO_URI="https://github.com/WerWolv/ImHex.git"
PYTHON_COMPAT=( python3_{6,7,8,9} )
inherit git-r3 python-single-r1 cmake
inherit git-r3 cmake
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64"
IUSE=""
REQUIRED_USE="${PYTHON_REQUIRED_USE}"
DEPEND=""
RDEPEND="${DEPEND}
${PYTHON_DEPS}
media-libs/glfw
sys-apps/file
dev-libs/mbedtls
dev-cpp/nlohmann_json
x11-libs/gtk+
dbus
xdg-desktop-portal
sys-libs/zlib
app-arch/bzip2
app-arch/lzma
app-arch/zstd
"
BDEPEND="${DEPEND}"

84
dist/appimage/Dockerfile vendored Normal file
View File

@@ -0,0 +1,84 @@
FROM ubuntu:22.04 as build
# Used to invalidate layer cache but not mount cache
# See https://github.com/moby/moby/issues/41715#issuecomment-733976493
ARG UNIQUEKEY 1
COPY dist/get_deps_debian.sh /tmp
RUN --mount=type=cache,target=/var/apt/cache <<EOF
# Install apt dependencies
set -xe
apt update
# general deps
apt install -y ccache git wget
# appimage tools deps
apt install -y python3-pip python3-setuptools desktop-file-utils libgdk-pixbuf2.0-dev fuse ninja-build
apt install -y squashfs-tools zsync
# imhex deps
/tmp/get_deps_debian.sh
EOF
RUN --mount=type=cache,target=/cache <<EOF
# Download appimage-builder
set -xe
mkdir -p /cache/bin
wget -nc https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage -O /cache/bin/appimagetool || true
chmod +x /cache/bin/appimagetool
pip3 install git+https://github.com/AppImageCrafters/appimage-builder@f38699e
EOF
ENV PATH="/cache/bin/:${PATH}"
# Copy Imhex source
COPY . /imhex
ARG LTO=ON
ARG BUILD_TYPE=RelWithDebInfo
ARG GIT_COMMIT_HASH
ARG GIT_BRANCH
WORKDIR /build
SHELL ["bash", "-c"] # Ubuntu sh doesnt support string substitution
RUN <<EOF
# Prepare ImHex build
set -xe
CC=gcc-12 CXX=g++-12 cmake -G "Ninja" \
-DCMAKE_BUILD_TYPE=${BUILD_TYPE} \
-DCMAKE_INSTALL_PREFIX="/usr" \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DIMHEX_PATTERNS_PULL_MASTER=ON \
-DIMHEX_COMMIT_HASH_LONG="${GIT_COMMIT_HASH}" \
-DIMHEX_COMMIT_BRANCH="${GIT_BRANCH}" \
-DIMHEX_ENABLE_LTO=${LTO} \
-DIMHEX_PLUGINS_IN_SHARE=ON \
/imhex
EOF
ENV CCACHE_DIR /cache/ccache
RUN --mount=type=cache,target=/cache <<EOF
# Build Imhex
set -xe
ccache -zs
DESTDIR=AppDir ninja install
ccache -s
EOF
RUN <<EOF
# Package ImHex as AppImage
set -xe
export VERSION=$(cat /imhex/VERSION)
appimage-builder --recipe /imhex/dist/AppImageBuilder.yml
EOF
FROM scratch
# Copy build artifact
COPY --from=build /build/*.AppImage /build/*.AppImage.zsync ./

49
dist/compiling/docker.md vendored Normal file
View File

@@ -0,0 +1,49 @@
For a TLDR of commands see [How to build](#How-to-build)
# Introduction
The original CI we used (vanilla Github Actions) was great for specifying what steps to execute to build packages. It could even do some custom steps with reusable actions. But it had problem: no local reproducibility. This meant that:
- We couldn't test code properly locally, we were dependent on GitHub to do it
- If something was wrong and we had to debug the build script, it was *long and painful* because we had to wait for Github runners to finish builds, and couldn't quickly iterate
To solve this, we are now trying to move the CI build script to docker containers (so using Dockerfiles)
# How to build
Commands are available in the [CI](../../.github/workflows/build.yml) and you should prefer copying them from there.
But here is a general command that should work for every build we have:
```
docker buildx build . -f <DOCKERFILE_PATH> --progress plain --build-arg 'JOBS=4' --build-arg 'BUILD_TYPE=Debug' --build-context imhex=$(pwd) --output local
```
where `<DOCKERFILE_PATH>` should be replaced by the wanted Dockerfile base d on the build you want to do:
| Wanted build | Dockerfile path | Target |
|--------------|-----------------------------|--------|
| MacOS M1 | dist/macOS/arm64.Dockerfile | - |
| AppImage | dist/appimage/Dockerfile | - |
| Web version | dist/web/Dockerfile | raw |
We'll explain this command in the next section
# Useful knowledge about Docker builds
Docker-based builds work with a Dockerfile. You run the Dockerfile, it builds the package.
We are using a base environment (often given to us by dockerhub) (e.g. ubuntu:22.04) which is really just a root filesystem, and we then run shell commands in that env, just like a shell script
Docker-based builds have two kind of caches used:
- layer cache, which mean that if a layer (instruction) hasn't been changed, and previous layers haven't changed, it will not be run again
- a `COPY` layer will be invalidated if one of the file copied has changed
- mount cache, which are per-instructions mounts that will be cached and restored in the next run. Mounts on different folders will not collide
Docker cache tends to grow very quickly when constantly making changes in the Dockerfile and rebuilding (a.k.a debugging what's going on), you can clear it with something like `docker system prune -a`
In the command saw earlier:
- `.` is the base folder that the Dockerfile will be allowed to see
- `-f <path>` is to specify the Dockerfile path
- `--progress plain` is to allow you to see the output of instructions
- `--build-arg <key>=<value>` is to allow to specify arguments to the build (like -DKEY=VALUE in CMake)
- `--build-context key=<folder>` is to specify folders other than the base folder that the Dockerfile is allowed to see
- `--output <path>` is the path to write the output package to. If not specified, Docker will create an image as the output (probably not what you want)
- `--target <target>` specifies which docker target to build

22
dist/compiling/linux.md vendored Normal file
View File

@@ -0,0 +1,22 @@
### Compiling ImHex on Linux
On Linux, ImHex is built through regular GCC (or optionally Clang).
1. Clone the repo using `git clone https://github.com/WerWolv/ImHex --recurse-submodules`
2. Install the dependencies using one of the `dist/get_deps_*.sh` scripts. Choose the one that matches your distro.
3. Build ImHex itself using the following commands:
```sh
cd ImHex
mkdir -p build
cd build
CC=gcc-12 CXX=g++-12 \
cmake -G "Ninja" \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX="/usr" \
..
ninja install
```
All paths follow the XDG Base Directories standard, and can thus be modified
with the environment variables `XDG_CONFIG_HOME`, `XDG_CONFIG_DIRS`,
`XDG_DATA_HOME` and `XDG_DATA_DIRS`.

22
dist/compiling/macos.md vendored Normal file
View File

@@ -0,0 +1,22 @@
### Compiling ImHex on macOS
On macOS, ImHex is built through regular GCC and LLVM clang.
1. Clone the repo using `git clone https://github.com/WerWolv/ImHex --recurse-submodules`
2. Install all the dependencies using `brew bundle --no-lock --file dist/Brewfile`
3. Build ImHex itself using the following commands:
```sh
cd ImHex
mkdir -p build
cd build
CC=$(brew --prefix llvm)/bin/clang \
CXX=$(brew --prefix llvm)/bin/clang++ \
OBJC=$(brew --prefix llvm)/bin/clang \
OBJCXX=$(brew --prefix llvm)/bin/clang++ \
cmake -G "Ninja" \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX="./install" \
-DIMHEX_GENERATE_PACKAGE=ON \
..
ninja install
```

25
dist/compiling/windows.md vendored Normal file
View File

@@ -0,0 +1,25 @@
### Compiling ImHex on Windows
On Windows, ImHex is built through [msys2 / mingw](https://www.msys2.org/)'s gcc.
1. Download and install msys2 from their [website](https://www.msys2.org/).
2. Open the `MSYS2 MinGW x64` shell
3. Clone the repo using `git clone https://github.com/WerWolv/ImHex --recurse-submodules`
4. Install all the dependencies using `./ImHex/dist/get_deps_msys2.sh`
5. Build ImHex itself using the following commands:
```sh
cd ImHex
mkdir build
cd build
cmake -G "Ninja" \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX="./install" \
-DIMHEX_USE_DEFAULT_BUILD_SETTINGS=ON \
..
ninja install
```
ImHex will look for any extra resources either in various folders directly next to the executable or in `%localappdata%/imhex`
For low RAM-usage system, you can use `mingw32-make -j N install` instead, to reduce RAM usage at compile time. Where `N` is amount of jobs you are willling to run at once. Roughly ~1 GB of RAM usage per job.

48
dist/gen_release_notes.py vendored Normal file
View File

@@ -0,0 +1,48 @@
import subprocess
import sys
def get_commits(branch: str, start_tag: str, end_tag: str) -> list[str]:
try:
commits_raw = subprocess.check_output([ "git", "--no-pager", "log", branch, "--no-color", "--pretty=oneline", "--abbrev-commit", f"{start_tag}..{end_tag}"], stderr=subprocess.DEVNULL).decode("UTF-8").split("\n")
except:
return []
commits = []
for line in commits_raw:
commits.append(line[9:])
return commits
def main(args: list) -> int:
if len(args) != 2:
print(f"Usage: {args[0]} prev_minor")
return 1
last_minor_version = f"v1.{args[1]}"
master_commits = get_commits("master", f"{last_minor_version}.0", "master")
for i in range(1, 100):
branch_commits = get_commits(f"releases/{last_minor_version}.X", f"{last_minor_version}.0", f"{last_minor_version}.{i}")
if len(branch_commits) == 0:
break
master_commits = [commit for commit in master_commits if commit not in branch_commits]
sorted_commits = {}
for commit in master_commits:
category, commit_name = commit.split(":", 1)
if category not in sorted_commits:
sorted_commits[category] = []
sorted_commits[category].append(commit_name)
for category in sorted_commits:
print(f"## {category}\n")
for commit in sorted_commits[category]:
print(f"- {commit}")
print(f"\n")
if __name__ == "__main__":
exit(main(sys.argv))

View File

@@ -1,12 +1,21 @@
#!/usr/bin/env sh
pacman -S --needed \
cmake \
gcc \
lld \
glfw \
file \
mbedtls \
python3 \
freetype2 \
gtk3
pacman -S $@ --needed \
cmake \
gcc \
lld \
glfw \
file \
mbedtls \
freetype2 \
dbus \
gtk3 \
curl \
fmt \
yara \
nlohmann-json \
ninja \
zlib \
bzip2 \
xz \
zstd

View File

@@ -1,9 +1,5 @@
#!/usr/bin/env sh
echo "As of 2020-12, Debian stable does not include g++-10, needs debian testing or unstable."
# Tested on 2020-12-09 with Docker image bitnami/minideb:unstable
# Install pkgconf (adds minimum dependencies) only if the equivalent pkf-config is not already installed.
if ! which pkg-config
then
@@ -12,20 +8,22 @@ fi
apt install -y \
build-essential \
gcc-10 \
g++-10 \
gcc-12 \
g++-12 \
lld \
${PKGCONF:-} \
cmake \
make \
ccache \
libglfw3-dev \
libglm-dev \
libmagic-dev \
libmbedtls-dev \
python3-dev \
libfreetype-dev \
libdbus-1-dev \
libcurl4-gnutls-dev \
libgtk-3-dev \
echo "Please consider this before running cmake (useful on e.g. Ubuntu 20.04):"
echo "export CXX=g++-10"
ninja-build \
zlib1g-dev \
libbz2-dev \
liblzma-dev \
libzstd-dev

View File

@@ -1,13 +1,19 @@
#!/usr/bin/env sh
dnf install \
dnf install -y \
cmake \
gcc-c++ \
lld \
dbus-devel \
file-devel \
glfw-devel \
mesa-libGL-devel \
mbedtls-devel \
python-devel \
freetype-devel \
gtk3-devel
libcurl-devel \
gcc-c++ \
git \
mesa-libGL-devel \
glfw-devel \
lld \
mbedtls-devel \
gtk3-devel \
libzstd-devel \
zlib-devel \
bzip2-devel \
xz-devel

View File

@@ -1,14 +1,20 @@
#!/usr/bin/env sh
pacman -S --needed --noconfirm \
mingw-w64-x86_64-gcc \
mingw-w64-x86_64-lld \
mingw-w64-x86_64-cmake \
mingw-w64-x86_64-make \
mingw-w64-x86_64-ccache \
mingw-w64-x86_64-glfw \
mingw-w64-x86_64-file \
mingw-w64-x86_64-mbedtls \
mingw-w64-x86_64-python \
mingw-w64-x86_64-freetype \
mingw-w64-x86_64-dlfcn
pacman -S --needed --noconfirm pactoys
pacboy -S --needed --noconfirm \
gcc:p \
lld:p \
cmake:p \
ccache:p \
glfw:p \
file:p \
curl-winssl:p \
mbedtls:p \
freetype:p \
dlfcn:p \
ninja:p \
capstone:p \
zlib:p \
bzip2:p \
xz:p \
zstd:p

19
dist/get_deps_tumbleweed.sh vendored Executable file
View File

@@ -0,0 +1,19 @@
#!/usr/bin/env sh
zypper install \
cmake \
ninja \
gcc12 \
gcc12-c++ \
freetype2-devel \
libcurl-devel \
dbus-1-devel \
file-devel \
Mesa-libGL-devel \
libglfw-devel \
mbedtls-devel \
gtk3-devel \
libzstd-devel \
zlib-devel \
bzip3-devel \
xz-devel

8
dist/imhex.desktop vendored
View File

@@ -2,10 +2,10 @@
Name=ImHex
Comment=ImHex Hex Editor
GenericName=Hex Editor
Exec=/usr/bin/imhex %U
Icon=/usr/share/pixmaps/imhex.png
Exec=imhex %U
Icon=imhex
Type=Application
StartupNotify=true
Categories=GNOME;GTK;Development;
Categories=Development;IDE;
StartupWMClass=imhex
Keywords=static-analysis;reverse-engineering;disassembler;disassembly;hacking;forensics;hex-editor;cybersecurity;security;binary-analysis;

208
dist/langtool.py vendored Executable file
View File

@@ -0,0 +1,208 @@
#!/usr/bin/env python3
from pathlib import Path
import argparse
import json
# This fixes a CJK full-width character input issue
# which makes left halves of deleted characters displayed on screen
# pylint: disable=unused-import
import re
import readline
DEFAULT_LANG = "en_US"
DEFAULT_LANG_PATH = "plugins/*/romfs/lang/"
INVALID_TRANSLATION = ""
def main():
parser = argparse.ArgumentParser(
prog="langtool",
description="ImHex translate tool",
)
parser.add_argument(
"command",
choices=[
"check",
"translate",
"update",
"create",
"retranslate",
"untranslate",
"fmtzh",
],
)
parser.add_argument(
"-c", "--langdir", default=DEFAULT_LANG_PATH, help="Language folder glob"
)
parser.add_argument("-l", "--lang", default="", help="Language to translate")
parser.add_argument(
"-r", "--reflang", default="", help="Language for reference when translating"
)
parser.add_argument(
"-k", "--keys", help="Keys to re-translate (only in re/untranslate mode)"
)
args = parser.parse_args()
command = args.command
lang = args.lang
print(f"Running in {command} mode")
lang_files_glob = f"{lang}.json" if lang != "" else "*.json"
lang_folders = set(Path(".").glob(args.langdir))
if len(lang_folders) == 0:
print(f"Error: {args.langdir} matches nothing")
return 1
for lang_folder in lang_folders:
if not lang_folder.is_dir():
print(f"Error: {lang_folder} is not a folder")
return 1
default_lang_data = {}
default_lang_path = lang_folder / Path(DEFAULT_LANG + ".json")
if not default_lang_path.exists():
print(
f"Error: Default language file {default_lang_path} does not exist in {lang_folder}"
)
return 1
with default_lang_path.open("r", encoding="utf-8") as file:
default_lang_data = json.load(file)
reference_lang_data = None
reference_lang_path = lang_folder / Path(args.reflang + ".json")
if reference_lang_path.exists():
with reference_lang_path.open("r", encoding="utf-8") as file:
reference_lang_data = json.load(file)
if command == "create" and lang != "":
lang_file_path = lang_folder / Path(lang + ".json")
if lang_file_path.exists():
continue
exist_lang_data = None
for lang_folder1 in lang_folders:
lang_file_path1 = lang_folder1 / Path(lang + ".json")
if lang_file_path1.exists():
with lang_file_path1.open("r", encoding="utf-8") as file:
exist_lang_data = json.load(file)
break
print(f"Creating new language file '{lang_file_path}'")
with lang_file_path.open("w", encoding="utf-8") as new_lang_file:
new_lang_data = {
"code": lang,
"language": (
exist_lang_data["language"]
if exist_lang_data
else input("Enter language name: ")
),
"country": (
exist_lang_data["country"]
if exist_lang_data
else input("Enter country name: ")
),
"translations": {},
}
json.dump(new_lang_data, new_lang_file, indent=4, ensure_ascii=False)
lang_files = set(lang_folder.glob(lang_files_glob))
if len(lang_files) == 0:
print(f"Warn: Language file for '{lang}' does not exist in '{lang_folder}'")
for lang_file_path in lang_files:
if (
lang_file_path.stem == f"{DEFAULT_LANG}.json"
or lang_file_path.stem == f"{args.reflang}.json"
):
continue
print(f"\nProcessing '{lang_file_path}'")
if not (command == "update" or command == "create"):
print("\n----------------------------\n")
with lang_file_path.open("r+", encoding="utf-8") as target_lang_file:
lang_data = json.load(target_lang_file)
for key, value in default_lang_data["translations"].items():
has_translation = (
key in lang_data["translations"]
and lang_data["translations"][key] != INVALID_TRANSLATION
)
if not has_translation and not (
(command == "retranslate" or command == "untranslate")
and re.compile(args.keys).fullmatch(key)
):
continue
if command == "check":
print(
f"Error: Translation {lang_data['code']} is missing translation for key '{key}'"
)
exit(2)
elif (
command == "translate"
or command == "retranslate"
or command == "untranslate"
):
if command == "untranslate" and not has_translation:
continue
reference_tranlsation = (
" '%s'" % reference_lang_data["translations"][key]
if reference_lang_data
else ""
)
print(
f"\033[1m'{key}' '{value}'{reference_tranlsation}\033[0m => {lang_data['language']}",
end="",
)
if has_translation:
translation = lang_data["translations"][key]
print(f" <= \033[1m'{translation}'\033[0m")
print() # for a new line
if command == "untranslate":
lang_data["translations"][key] = INVALID_TRANSLATION
continue
try:
new_value = input("=> ")
lang_data["translations"][key] = new_value
except KeyboardInterrupt:
break
elif command == "update" or command == "create":
lang_data["translations"][key] = INVALID_TRANSLATION
elif command == "fmtzh":
if has_translation:
lang_data["translations"][key] = fmtzh(
lang_data["translations"][key]
)
keys_to_remove = []
for key, value in lang_data["translations"].items():
if key not in default_lang_data["translations"]:
keys_to_remove.append(key)
for key in keys_to_remove:
lang_data["translations"].pop(key)
print(
f"Removed unused key '{key}' from translation '{lang_data['code']}'"
)
target_lang_file.seek(0)
target_lang_file.truncate()
json.dump(
lang_data,
target_lang_file,
indent=4,
sort_keys=True,
ensure_ascii=False,
)
def fmtzh(text: str) -> str:
text = re.sub(r"(\.{3}|\.{6})", "……", text)
text = text.replace("!", "")
text = re.sub(r"([^\.\na-zA-Z\d])\.$", "\1", text, flags=re.M)
text = text.replace("?", "")
return text
if __name__ == "__main__":
exit(main())

25
dist/macOS/0001-glfw-SW.patch vendored Normal file
View File

@@ -0,0 +1,25 @@
From 9c8665af4c2e2ce66555c15c05c72027bfdf0cb6 Mon Sep 17 00:00:00 2001
From: iTrooz <itrooz@protonmail.com>
Date: Mon, 29 Aug 2022 17:29:38 +0200
Subject: [PATCH] Use software rendering on MacOS
---
src/nsgl_context.m | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/nsgl_context.m b/src/nsgl_context.m
index fc1f7521..e5906575 100644
--- a/src/nsgl_context.m
+++ b/src/nsgl_context.m
@@ -198,7 +198,7 @@ GLFWbool _glfwCreateContextNSGL(_GLFWwindow* window,
NSOpenGLPixelFormatAttribute attribs[40];
int index = 0;
- ADD_ATTRIB(NSOpenGLPFAAccelerated);
+ ADD_ATTRIB(NSOpenGLPFARendererID);ADD_ATTRIB(kCGLRendererGenericFloatID);
ADD_ATTRIB(NSOpenGLPFAClosestPolicy);
if (ctxconfig->nsgl.offline)
--
2.37.2

173
dist/macOS/arm64.Dockerfile vendored Normal file
View File

@@ -0,0 +1,173 @@
# This base image is also known as "crosscompile". See arm64.crosscompile.Dockerfile
FROM ghcr.io/itrooz/macos-crosscompile:clang17-nosdk as build
ENV MACOSX_DEPLOYMENT_TARGET 12.1
# -- DOWNLOADING STUFF
## Install make
RUN --mount=type=cache,target=/var/lib/apt/lists/ apt update && apt install -y make
## fix environment
### add install_name_tool for cmake command that won't have the right env set (see PostprocessBundle.cmake function postprocess_bundle())
RUN cp /osxcross/build/cctools-port/cctools/misc/install_name_tool /usr/bin/install_name_tool
### a cmake thing wants 'otool' and not '' apparently
RUN cp /osxcross/target/bin/aarch64-apple-darwin23-otool /usr/bin/otool
## Clone glfw
RUN <<EOF
set -xe
if [ "$CUSTOM_GLFW" ]; then
git clone https://github.com/glfw/glfw /mnt/glfw
fi
EOF
RUN --mount=type=cache,target=/cache <<EOF
## Download SDK is missing (it may have been removed from the image)
set -xe
if [ ! -d /osxcross/target/SDK/MacOSX14.0.sdk ]; then
wget https://github.com/joseluisq/macosx-sdks/releases/download/14.0/MacOSX14.0.sdk.tar.xz -O /cache/MacOSX14.0.sdk.tar.xz -nc || true
mkdir -p /osxcross/target/SDK
tar -C /osxcross/target/SDK -xf /cache/MacOSX14.0.sdk.tar.xz
fi
EOF
## Download libmagic
### Clone libmagic
RUN git clone --depth 1 --branch FILE5_45 https://github.com/file/file /mnt/file
### Download libmagic dependencies
RUN --mount=type=cache,target=/var/lib/apt/lists/ apt update && apt install -y libtool autoconf
# -- DOWNLOADING + BUILDING STUFF
ENV VCPKG_DEFAULT_BINARY_CACHE /cache/vcpkg
RUN --mount=type=cache,target=/cache <<EOF
## Install dependencies with vcpkg
set -xe
mkdir -p $VCPKG_DEFAULT_BINARY_CACHE
vcpkg install --triplet=arm-osx-mytriplet curl
vcpkg install --triplet=arm-osx-mytriplet mbedtls
vcpkg install --triplet=arm-osx-mytriplet freetype
vcpkg install --triplet=arm-osx-mytriplet josuttis-jthread
vcpkg install --triplet=arm-osx-mytriplet zlib
vcpkg install --triplet=arm-osx-mytriplet bzip2
vcpkg install --triplet=arm-osx-mytriplet liblzma
vcpkg install --triplet=arm-osx-mytriplet zstd
EOF
## Install glfw3 dep
ARG CUSTOM_GLFW
RUN --mount=type=cache,target=/cache <<EOF
set -xe
if [ "$CUSTOM_GLFW" ]; then
echo "Flag confirmation: using custom GLFW for software rendering"
else
echo "Flag confirmation: using system GLFW"
vcpkg install --triplet=arm-osx-mytriplet glfw3
fi
EOF
# -- BUILDING STUFF
ARG JOBS 1
ARG BUILD_TYPE Debug
## Build libmagic
RUN --mount=type=cache,target=/cache <<EOF
ccache -zs
set -xe
cd /mnt/file
autoreconf -is
# when cross-compiling, libmagic needs to have an the same version installed in the system.
# So we install it normally first
./configure --prefix /usr
make -j $JOBS install
# Now, we cross-compile it and install it in the libraries folder
CC=/osxcross/target/bin/aarch64-apple-darwin23-clang CXX=/osxcross/target/bin/aarch64-apple-darwin23-clang++ ./configure --prefix /vcpkg/installed/arm-osx-mytriplet --host $OSXCROSS_HOST
make -j $JOBS
make install
ccache -s
EOF
## Patch glfw
COPY --from=imhex /dist/macOS/0001-glfw-SW.patch /tmp
RUN <<EOF
set -xe
if [ "$CUSTOM_GLFW" ]; then
cd /mnt/glfw
git apply /tmp/0001-glfw-SW.patch
fi
EOF
RUN mkdir -p /vcpkg/installed/arm-osx-mytriplet/lib/pkgconfig
RUN mkdir -p /osxcross/target/macports/pkgs/vcpkg/installed/arm-osx-mytriplet/lib/pkgconfig
## Build glfw
RUN --mount=type=cache,target=/cache <<EOF
set -xe
if [ "$CUSTOM_GLFW" ]; then
ccache -zs
cd /mnt/glfw
mkdir build
cd build
CC=o64-gcc CXX=o64-g++ cmake -G "Ninja" \
-DCMAKE_BUILD_TYPE=$BUILD_TYPE \
-DBUILD_SHARED_LIBS=ON \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_OBJC_COMPILER_LAUNCHER=ccache \
-DCMAKE_OBJCXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_INSTALL_PREFIX=/vcpkg/installed/arm-osx-mytriplet \
-DVCPKG_TARGET_TRIPLET=arm-osx-mytriplet -DCMAKE_TOOLCHAIN_FILE=/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=/osxcross/target/toolchain.cmake -DCMAKE_OSX_SYSROOT=/osxcross/target/SDK/MacOSX14.0.sdk -DCMAKE_OSX_DEPLOYMENT_TARGET=12.1 \
..
ninja -j $JOBS install
ccache -s
fi
EOF
# Build ImHex
## Copy ImHex
COPY --from=imhex / /mnt/ImHex
## Patch ImHex with hacks
# COPY toolchain.cmake.2 /osxcross/target/toolchain.cmake
# Configure ImHex build
RUN --mount=type=cache,target=/cache --mount=type=cache,target=/mnt/ImHex/build/_deps \
cd /mnt/ImHex && \
# compilers
CC=o64-clang CXX=o64-clang++ OBJC=/osxcross/target/bin/aarch64-apple-darwin23-clang OBJCXX=/osxcross/target/bin/aarch64-apple-darwin23-clang++ \
cmake -G "Ninja" \
`# ccache flags` \
-DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_OBJC_COMPILER_LAUNCHER=ccache -DCMAKE_OBJCXX_COMPILER_LAUNCHER=ccache \
`# MacOS cross-compiling flags` \
-DVCPKG_TARGET_TRIPLET=arm-osx-mytriplet -DCMAKE_TOOLCHAIN_FILE=/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=/osxcross/target/toolchain.cmake -DCMAKE_OSX_SYSROOT=/osxcross/target/SDK/MacOSX14.0.sdk -DCMAKE_OSX_DEPLOYMENT_TARGET=12.1 \
`# Override compilers for code generators` \
-DNATIVE_CMAKE_C_COMPILER=/usr/bin/clang -DNATIVE_CMAKE_CXX_COMPILER=/usr/bin/clang++ \
`# Normal ImHex flags` \
-DIMHEX_GENERATE_PACKAGE=ON -DCMAKE_BUILD_TYPE=$BUILD_TYPE \
`# other flags` \
-DIMHEX_STRICT_WARNINGS=OFF \
-DCMAKE_INSTALL_PREFIX=/mnt/ImHex/build/install \
-B build
## Build ImHex
RUN --mount=type=cache,target=/cache --mount=type=cache,target=/mnt/ImHex/build/_deps <<EOF
ccache -zs
set -xe
cd /mnt/ImHex
cmake --build build --parallel $JOBS --target install
ccache -s
EOF
FROM scratch
COPY --from=build /mnt/ImHex/build/install/imhex.app imhex.app

View File

@@ -0,0 +1,96 @@
# This image is is provided for reference, but a (probably more up to date) image should be available at https://github.com/iTrooz/macos-crosscompile
FROM ubuntu:22.04
ENV PATH $PATH:/osxcross/target/bin
ENV LD_LIBRARY_PATH /osxcross/target/lib
ENV OSXCROSS_SDK /osxcross/target/SDK/MacOSX14.0.sdk
ENV OSXCROSS_TARGET darwin23
ENV OSXCROSS_TARGET_DIR /osxcross/target
ENV OSXCROSS_HOST aarch64-apple-darwin23
# -- DOWNLOADING STUFF
# Install common stuff
RUN --mount=type=cache,target=/var/lib/apt/lists/ export DEBIAN_FRONTEND=noninteractive &&\
export TZ=Etc/UTC &&\
dpkg --add-architecture i386 &&\
apt update &&\
apt -y install lsb-release build-essential python3 python3-pip git wget zip unzip pkg-config curl ninja-build software-properties-common gnupg libssl-dev ccache
# Install clang 17
RUN --mount=type=cache,target=/var/lib/apt/lists/ wget https://apt.llvm.org/llvm.sh && chmod +x llvm.sh && ./llvm.sh 17 &&\
ln -s /usr/bin/clang-17 /usr/bin/clang &&\
ln -s /usr/bin/clang++-17 /usr/bin/clang++
# Install vcpkg
RUN cd / &&\
git clone --depth 1 https://github.com/Microsoft/vcpkg.git vcpkg &&\
cd /vcpkg &&\
./bootstrap-vcpkg.sh -disableMetrics &&\
ln -s /vcpkg/vcpkg /usr/bin/ &&\
vcpkg install vcpkg-cmake &&\
ln -s /vcpkg/downloads/tools/cmake-*/cmake-*/bin/cmake /usr/bin/
RUN --mount=type=cache,target=/cache <<EOF
## Clone osxcross
set -xe
git clone https://github.com/tpoechtrager/osxcross /cache/osxcross || true
cd /cache/osxcross
git pull
cp -r /cache/osxcross /osxcross
EOF
RUN --mount=type=cache,target=/cache <<EOF
## Download SDK
set -xe
wget https://github.com/joseluisq/macosx-sdks/releases/download/14.0/MacOSX14.0.sdk.tar.xz -O /cache/MacOSX14.0.sdk.tar.xz -nc || true
cp /cache/MacOSX14.0.sdk.tar.xz /osxcross/tarballs
EOF
# Init stuff
## setup ccache dir
ENV CCACHE_DIR /cache/ccache
# Install triplet file
COPY arm-osx-mytriplet.cmake /vcpkg/triplets/community
# -- BUILDING STUFF
ARG JOBS 1
# Install osxcross
## Build cross-compiler clang-17
RUN --mount=type=cache,target=/cache <<EOF
set -xe
ccache -zs
cd /osxcross
UNATTENDED=1 CC=/usr/lib/ccache/clang-17 CXX=/usr/lib/ccache/clang++-17 ./build.sh
ccache -s
EOF
# Not needed, because we don't use gcc for cross-compiling anymore
# ## Install dependencies for gcc-13
# RUN apt install -y gcc g++ zlib1g-dev libmpc-dev libmpfr-dev libgmp-dev
# ## Build cross-compiler gcc-13
# RUN --mount=type=cache,target=/cache <<EOF
# set -xe
# ccache -zs
# cd /osxcross
# UNATTENDED=1 CC=/usr/lib/ccache/gcc CXX=/usr/lib/ccache/g++ GCC_VERSION=13.2.0 ./build_gcc.sh
# ccache -s
# EOF
ARG DELETE_SDK=1
RUN <<EOF
# Conditionally delete the SDK from the image
set -xe
if [ "$DELETE_SDK" ]; then
rm -r /osxcross/target/SDK
echo "Deleted the SDK from the image"
else
echo "NOT deleting the SDK from the image"
fi
EOF

8
dist/msys2/PKGBUILD vendored
View File

@@ -7,7 +7,6 @@ pkgdesc="${_realname}: a Hex Editor for Reverse Engineers, Programmers and peopl
arch=('any')
url="https://github.com/WerWolv/ImHex"
license=('GPLv2')
depends=("${MINGW_PACKAGE_PREFIX}-python")
makedepends=("${MINGW_PACKAGE_PREFIX}-gcc"
"${MINGW_PACKAGE_PREFIX}-lld"
"${MINGW_PACKAGE_PREFIX}-cmake"
@@ -17,8 +16,11 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-gcc"
"${MINGW_PACKAGE_PREFIX}-file"
"${MINGW_PACKAGE_PREFIX}-mbedtls"
"${MINGW_PACKAGE_PREFIX}-polly"
"${MINGW_PACKAGE_PREFIX}-python"
"${MINGW_PACKAGE_PREFIX}-freetype")
"${MINGW_PACKAGE_PREFIX}-freetype"
"${MINGW_PACKAGE_PREFIX}-zlib"
"${MINGW_PACKAGE_PREFIX}-bzip2"
"${MINGW_PACKAGE_PREFIX}-xz"
"${MINGW_PACKAGE_PREFIX}-zstd")
source=()
sha256sums=()

View File

@@ -12,49 +12,10 @@ finish-args:
- --device=all
modules:
- name: libiconv
sources:
- type: archive
url: https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.16.tar.gz
sha256: e6a1b1b589654277ee790cce3734f07876ac4ccfaecbee8afa0b649cf529cc04
- name: glfw
buildsystem: cmake-ninja
builddir: true
config-opts:
- -DCMAKE_BUILD_TYPE=RelWithDebInfo
- -DBUILD_SHARED_LIBS:BOOL=ON
sources:
- type: archive
url: https://github.com/glfw/glfw/releases/download/3.3.2/glfw-3.3.2.zip
sha256: 08a33a512f29d7dbf78eab39bd7858576adcc95228c9efe8e4bc5f0f3261efc7
cleanup:
- /include
- /lib/pkgconfig
- name: mbedtls
buildsystem: cmake-ninja
config-opts:
- -DCMAKE_C_FLAGS=-fPIC
sources:
- type: archive
url: https://github.com/ARMmbed/mbedtls/archive/refs/tags/v2.27.0.tar.gz
sha256: 2a07856e541f0e5f6eaee4f78018c52f25bd244ed76f9020dea54a8b02cac6ea
- name: nlohmann-json
buildsystem: cmake-ninja
builddir: true
config-opts:
- -DCMAKE_BUILD_TYPE=RelWithDebInfo
- -DBUILD_TESTING=OFF
sources:
- type: archive
url: https://github.com/nlohmann/json/archive/v3.9.1.tar.gz
sha256: 4cf0df69731494668bdd6460ed8cb269b68de9c19ad8c27abc24cd72605b2d5b
- name: imhex
buildsystem: cmake
config-opts:
- -DCMAKE_BUILD_TYPE=RelWithDebInfo
sources:
- type: git

34
dist/net.werwolv.imhex.metainfo.xml vendored Normal file
View File

@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop-application">
<id>imhex</id>
<metadata_license>CC0-1.0</metadata_license>
<project_license>GPL-2.0</project_license>
<name>ImHex</name>
<developer_name>WerWolv</developer_name>
<update_contact>hey@werwolv.net</update_contact>
<summary>A Hex Editor for Reverse Engineers, Programmers and people who value their retinas when working at 3 AM</summary>
<description>
<p>ImHex is a feature-rich Hex Editor aimed towards Reverse Engineers working with foreign data formats, malware, executables and raw memory.
Besides all the features a common Hex Editor has, ImHex also features a custom scripting language used to declare and dissect data structures, support for running YARA rules, a node-based graphical data pre-processor and support for various data sources such as files, raw disks or GDB Servers.</p>
</description>
<launchable type="desktop-id">imhex.desktop</launchable>
<url type="homepage">https://imhex.werwolv.net</url>
<screenshots>
<screenshot type="default">
<image>https://user-images.githubusercontent.com/10835354/139717326-8044769d-527b-4d88-8adf-2d4ecafdca1f.png</image>
</screenshot>
<screenshot>
<image>https://user-images.githubusercontent.com/10835354/139717323-1f8c9d52-f7eb-4f43-9f11-097ac728ed6c.png</image>
</screenshot>
</screenshots>
<provides>
<id>imhex.desktop</id>
</provides>
<categories>
<category>Development</category>
</categories>
</component>

130
dist/rpm/imhex.spec vendored Normal file
View File

@@ -0,0 +1,130 @@
Name: imhex
Version: VERSION
Release: 0%{?dist}
Summary: A hex editor for reverse engineers and programmers
License: GPL-2.0-only AND Zlib AND MIT AND Apache-2.0
# imhex is gplv2. capstone is custom. nativefiledialog is Zlib.
# see license dir for full breakdown
URL: https://imhex.werwolv.net/
# We need the archive with deps bundled
Source0: https://github.com/WerWolv/%{name}/releases/download/v%{version}/Full.Sources.tar.gz#/%{name}-%{version}.tar.gz
BuildRequires: cmake
BuildRequires: desktop-file-utils
BuildRequires: dbus-devel
BuildRequires: file-devel
BuildRequires: freetype-devel
BuildRequires: fmt-devel
BuildRequires: gcc-c++
BuildRequires: libappstream-glib
BuildRequires: libglvnd-devel
BuildRequires: glfw-devel
BuildRequires: json-devel
BuildRequires: libcurl-devel
BuildRequires: llvm-devel
BuildRequires: mbedtls-devel
BuildRequires: yara-devel
BuildRequires: nativefiledialog-extended-devel
BuildRequires: dotnet-sdk-8.0
BuildRequires: libzstd-devel
BuildRequires: zlib-devel
BuildRequires: bzip2-devel
BuildRequires: xz-devel
%if 0%{?rhel}
BuildRequires: gcc-toolset-12
%endif
Provides: bundled(gnulib)
Provides: bundled(capstone) = 5.0-rc2
Provides: bundled(imgui)
Provides: bundled(libromfs)
Provides: bundled(microtar)
Provides: bundled(xdgpp)
# ftbfs on these arches. armv7hl might compile when capstone 5.x
# is released upstream and we can build against it
# [7:02 PM] WerWolv: We're not supporting 32 bit anyways soooo
# [11:38 AM] WerWolv: Officially supported are x86_64 and aarch64
ExclusiveArch: x86_64 %{arm64} ppc64le
%description
ImHex is a Hex Editor, a tool to display, decode and analyze binary data to
reverse engineer their format, extract informations or patch values in them.
What makes ImHex special is that it has many advanced features that can often
only be found in paid applications. Such features are a completely custom binary
template and pattern language to decode and highlight structures in the data, a
graphical node-based data processor to pre-process values before they're
displayed, a disassembler, diffing support, bookmarks and much much more. At the
same time ImHex is completely free and open source under the GPLv2 language.
%prep
%autosetup -n ImHex
# remove bundled libs we aren't using
rm -rf lib/third_party/{fmt,nlohmann_json,yara}
%build
%if 0%{?rhel}
. /opt/rh/gcc-toolset-12/enable
%set_build_flags
CXXFLAGS+=" -std=gnu++2b"
%endif
%cmake \
-D CMAKE_BUILD_TYPE=Release \
-D IMHEX_STRIP_RELEASE=OFF \
-D IMHEX_OFFLINE_BUILD=ON \
-D USE_SYSTEM_NLOHMANN_JSON=ON \
-D USE_SYSTEM_FMT=ON \
-D USE_SYSTEM_YARA=ON \
-D USE_SYSTEM_NFD=ON \
-D IMHEX_USE_GTK_FILE_PICKER=ON \
-D IMHEX_BUNDLE_DOTNET=OFF \
# when capstone >= 5.x is released we should be able to build against \
# system libs of it \
# -D USE_SYSTEM_CAPSTONE=ON
%cmake_build
%check
%if 0%{?rhel}
. /opt/rh/gcc-toolset-12/enable
%set_build_flags
CXXFLAGS+=" -std=gnu++2b"
%endif
%install
%cmake_install
desktop-file-validate %{buildroot}%{_datadir}/applications/%{name}.desktop
# this is a symlink for the old appdata name that we don't need
rm -f %{buildroot}%{_metainfodir}/net.werwolv.%{name}.appdata.xml
# AppData
appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/net.werwolv.%{name}.metainfo.xml
# install licenses
cp -a lib/third_party/nativefiledialog/LICENSE %{buildroot}%{_datadir}/licenses/%{name}/nativefiledialog-LICENSE
cp -a lib/third_party/capstone/LICENSE.TXT %{buildroot}%{_datadir}/licenses/%{name}/capstone-LICENSE
cp -a lib/third_party/capstone/suite/regress/LICENSE %{buildroot}%{_datadir}/licenses/%{name}/capstone-regress-LICENSE
cp -a lib/third_party/microtar/LICENSE %{buildroot}%{_datadir}/licenses/%{name}/microtar-LICENSE
cp -a lib/third_party/xdgpp/LICENSE %{buildroot}%{_datadir}/licenses/%{name}/xdgpp-LICENSE
%files
%license %{_datadir}/licenses/%{name}/
%doc README.md
%{_bindir}/imhex
%{_bindir}/imhex-updater
%{_datadir}/pixmaps/%{name}.png
%{_datadir}/applications/%{name}.desktop
%{_libdir}/libimhex.so*
%{_libdir}/%{name}/
%{_metainfodir}/net.werwolv.%{name}.metainfo.xml
%changelog

105
dist/web/Dockerfile vendored Normal file
View File

@@ -0,0 +1,105 @@
FROM emscripten/emsdk:3.1.51 as build
# Used to invalidate layer cache but not mount cache
# See https://github.com/moby/moby/issues/41715#issuecomment-733976493
ARG UNIQUEKEY 1
RUN apt update
RUN apt install -y git ccache autoconf automake libtool cmake pkg-config
RUN <<EOF
# Install vcpkg
# Note: we are a patch on the libmagic port
set -xe
git clone https://github.com/microsoft/vcpkg /vcpkg
/vcpkg/bootstrap-vcpkg.sh
sed -i 's/vcpkg_install_make(${EXTRA_ARGS})/vcpkg_install_make(${EXTRA_ARGS} SUBPATH src)/g' /vcpkg/ports/libmagic/portfile.cmake
EOF
# Patch vcpkg build instructions to add -pthread
RUN <<EOF
set -xe
echo '
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pthread")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
' >> /emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake
EOF
ENV VCPKG_DEFAULT_BINARY_CACHE /cache/vcpkg
RUN --mount=type=cache,target=/cache <<EOF
# Install dependencies with vcpkg
set -xe
mkdir -p $VCPKG_DEFAULT_BINARY_CACHE
/vcpkg/vcpkg install --triplet=wasm32-emscripten libmagic
/vcpkg/vcpkg install --triplet=wasm32-emscripten freetype
/vcpkg/vcpkg install --triplet=wasm32-emscripten mbedtls
/vcpkg/vcpkg install --triplet=wasm32-emscripten zlib
/vcpkg/vcpkg install --triplet=wasm32-emscripten bzip2
/vcpkg/vcpkg install --triplet=wasm32-emscripten liblzma
/vcpkg/vcpkg install --triplet=wasm32-emscripten zstd
EOF
# Build ImHex
ARG JOBS=4
ENV CCACHE_DIR /cache/ccache
RUN mkdir /build
WORKDIR /build
RUN --mount=type=cache,target=/cache \
--mount=type=bind,source=.,target=/imhex <<EOF
set -xe
ccache -zs
cmake /imhex \
-DIMHEX_OFFLINE_BUILD=ON \
-DIMHEX_STATIC_LINK_PLUGINS=ON \
-DIMHEX_EXCLUDE_PLUGINS="script_loader" \
-DIMHEX_COMPRESS_DEBUG_INFO=OFF \
-DNATIVE_CMAKE_C_COMPILER=gcc \
-DNATIVE_CMAKE_CXX_COMPILER=g++ \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_TOOLCHAIN_FILE=/vcpkg/scripts/buildsystems/vcpkg.cmake \
-DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=/emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake \
-DCMAKE_BUILD_TYPE=Release
make -j $JOBS
cp /imhex/dist/web/source/* /build
ccache -s
EOF
# Create a file dedicated to store wasm size, because I know no way to get the wasm content length if the web server uses compression
# See https://stackoverflow.com/questions/41701849/cannot-modify-accept-encoding-with-fetch https://github.com/AnthumChris/fetch-progress-indicators/issues/13
RUN du -b /build/imhex.wasm | cut -f1 > imhex.wasm.size
FROM scratch as raw
COPY --from=build [ \
# ImHex \
"/build/imhex.wasm", \
"/build/imhex.wasm.size", \
"/build/imhex.js", \
"/build/imhex.worker.js", \
\
# Static files \
"/build/index.html", \
"/build/style.css", \
"/build/wasm-config.js", \
"/build/enable-threads.js", \
"/build/favicon.ico", \
"/build/icon.png", \
"/build/manifest.json", \
"/build/robots.txt", \
"/build/sitemap.xml", \
\
# Destination \
"./" \
]
FROM nginx
COPY --from=raw . /usr/share/nginx/html

10
dist/web/compose.yml vendored Normal file
View File

@@ -0,0 +1,10 @@
# docker compose -f dist/web/compose.yml up --build
version: '3'
services:
imhex_web:
image: imhex_web:latest
build:
context: ../../ # ImHex folder
dockerfile: ./dist/web/Dockerfile
ports:
- 8080:80

13
dist/web/plugin-bundle.cpp.in vendored Normal file
View File

@@ -0,0 +1,13 @@
#include <hex/helpers/logger.hpp>
extern "C" void forceLinkPlugin_@IMHEX_PLUGIN_NAME@();
namespace {
struct StaticLoad {
StaticLoad() {
forceLinkPlugin_@IMHEX_PLUGIN_NAME@();
}
};
}
static StaticLoad staticLoad;

15
dist/web/serve.py vendored Normal file
View File

@@ -0,0 +1,15 @@
import http.server
import os
class MyHttpRequestHandler(http.server.SimpleHTTPRequestHandler):
def end_headers(self):
self.send_header("Cross-Origin-Embedder-Policy", "require-corp")
self.send_header("Cross-Origin-Opener-Policy", "same-origin")
http.server.SimpleHTTPRequestHandler.end_headers(self)
if __name__ == '__main__':
os.chdir(".")
httpd = http.server.HTTPServer(("localhost", 9090), MyHttpRequestHandler)
print(f"Serving {os.getcwd()} on http://{httpd.server_address[0]}:{httpd.server_address[1]}")
httpd.serve_forever()

79
dist/web/source/enable-threads.js vendored Normal file
View File

@@ -0,0 +1,79 @@
// NOTE: This file creates a service worker that cross-origin-isolates the page (read more here: https://web.dev/coop-coep/) which allows us to use wasm threads.
// Normally you would set the COOP and COEP headers on the server to do this, but Github Pages doesn't allow this, so this is a hack to do that.
/* Edited version of: coi-serviceworker v0.1.6 - Guido Zuidhof, licensed under MIT */
// From here: https://github.com/gzuidhof/coi-serviceworker
if(typeof window === 'undefined') {
self.addEventListener("install", () => self.skipWaiting());
self.addEventListener("activate", e => e.waitUntil(self.clients.claim()));
async function handleFetch(request) {
if(request.cache === "only-if-cached" && request.mode !== "same-origin") {
return;
}
if(request.mode === "no-cors") { // We need to set `credentials` to "omit" for no-cors requests, per this comment: https://bugs.chromium.org/p/chromium/issues/detail?id=1309901#c7
request = new Request(request.url, {
cache: request.cache,
credentials: "omit",
headers: request.headers,
integrity: request.integrity,
destination: request.destination,
keepalive: request.keepalive,
method: request.method,
mode: request.mode,
redirect: request.redirect,
referrer: request.referrer,
referrerPolicy: request.referrerPolicy,
signal: request.signal,
});
}
let r = await fetch(request).catch(e => console.error(e));
if(r.status === 0) {
return r;
}
const headers = new Headers(r.headers);
headers.set("Cross-Origin-Embedder-Policy", "require-corp"); // or: require-corp
headers.set("Cross-Origin-Opener-Policy", "same-origin");
return new Response(r.body, { status: r.status, statusText: r.statusText, headers });
}
self.addEventListener("fetch", function(e) {
e.respondWith(handleFetch(e.request)); // respondWith must be executed synchonously (but can be passed a Promise)
});
} else {
(async function() {
if(window.crossOriginIsolated !== false) return;
if (!('serviceWorker' in navigator)) {
alert("Your browser doesn't support service workers.\nIf you're using Firefox, you need to not be in a private window.")
}
let registration = await navigator.serviceWorker.register(window.document.currentScript.src).catch(e => console.error("COOP/COEP Service Worker failed to register:", e));
if(registration) {
console.log("COOP/COEP Service Worker registered", registration.scope);
registration.addEventListener("updatefound", () => {
console.log("Reloading page to make use of updated COOP/COEP Service Worker.");
window.location.reload();
});
// If the registration is active, but it's not controlling the page
if(registration.active && !navigator.serviceWorker.controller) {
console.log("Reloading page to make use of COOP/COEP Service Worker.");
window.location.reload();
}
}
})();
}
// Code to deregister:
// let registrations = await navigator.serviceWorker.getRegistrations();
// for(let registration of registrations) {
// await registration.unregister();
// }

BIN
dist/web/source/favicon.ico vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

BIN
dist/web/source/icon.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

104
dist/web/source/index.html vendored Normal file
View File

@@ -0,0 +1,104 @@
<!doctype html>
<html lang="en-us">
<head>
<title>ImHex Web - Free Online Hex Editor for Reverse Engineers</title>
<link rel="manifest" href="manifest.json">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Primary Meta Tags -->
<meta name="title" content="ImHex">
<meta name="description" content="Free and extremely powerful Online Hex Editor for your Web Browser. ImHex is a free and open source Hex Editor for Reverse Engineers and Developers and Data Analysts.">
<link rel="icon" type="image/x-icon" href="favicon.ico">
<link rel="apple-touch-icon" href="icon.png">
<!-- Open Graph / Facebook -->
<meta property="og:type" content="website">
<meta property="og:url" content="https://imhex.werwolv.net/">
<meta property="og:title" content="ImHex Web - Online Hex Editor">
<meta property="og:image" content="https://imhex.werwolv.net/assets/splash_wasm.png">
<!-- Twitter -->
<meta property="twitter:card" content="summary_large_image">
<meta property="twitter:url" content="https://imhex.werwolv.net/">
<meta property="twitter:title" content="ImHex Web - Online Hex Editor">
<meta property="twitter:description"
content="A Hex Editor for Reverse Engineers, Programmers and people who value their retinas when working at 3 AM.">
<meta property="twitter:image" content="https://imhex.werwolv.net/assets/splash_wasm.png">
<link rel="stylesheet" type="text/css" href="style.css">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"alumni": "WerWolv",
"email": "hey@werwolv.net",
"founder": "WerWolv",
"slogan": "A Hex Editor for Reverse Engineers, Programmers and people who value their retinas when working at 3 AM.",
"url": "https://imhex.werwolv.net",
"logo": "https://imhex.werwolv.net/assets/logos/logo.png"
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "ImHex Web",
"operatingSystem": "Windows, MacOS, Linux",
"applicationCategory": "DeveloperApplication",
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD"
}
}
</script>
<script src="enable-threads.js"></script>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div id="loading" class="centered">
<img src="https://raw.githubusercontent.com/WerWolv/ImHex/master/plugins/builtin/romfs/assets/dark/banner.png" id="logo" alt="ImHex Logo">
<h1>A Hex Editor for Reverse Engineers, Programmers and people who value their retinas when working at 3 AM.</h1>
<h2>Available both natively and on the web</h2>
<h5>ImHex runs directly in your web browser with the help of Emscripten and WebAssembly.</h5>
<div style="height: 50%">
<div style="height: 30%"> </div>
<h2 id="not_working">
Not loading in your Browser? <a href="https://imhex.werwolv.net">Try the native version</a>
</h2>
<div class="progress-bar-container">
<div class="progress progress-moved">
<div class="progress-bar" id="progress-bar-content">
</div>
</div>
</div>
</div>
<div class="loading_ripple">
<div class="lds-ripple"><div></div><div></div></div>
</div>
<div style="height: 10%">
</div>
<div class="footer">
<a href="https://imhex.werwolv.net">Homepage</a>
<p>Made with ♥️ by the ImHex Team</p>
<a href="https://github.com/WerWolv/ImHex">GitHub</a>
</div>
</div>
<canvas class="emscripten" id="canvas" oncontextmenu="event.preventDefault()"></canvas>
<script src="wasm-config.js"></script>
<script async src="imhex.js"></script>
</body>
</html>

20
dist/web/source/manifest.json vendored Normal file
View File

@@ -0,0 +1,20 @@
{
"name": "ImHex",
"description": "🔍 A Hex Editor for Reverse Engineers, Programmers and people who value their retinas when working at 3 AM.",
"background_color": "#0F0F0F",
"theme_color": "#0F0F0F",
"categories": [
"education",
"productivity",
"utilities"
],
"icons": [
{
"src": "icon.png",
"type": "image/png",
"sizes": "640x640"
}
],
"start_url": ".",
"display": "standalone"
}

4
dist/web/source/robots.txt vendored Normal file
View File

@@ -0,0 +1,4 @@
User-agent: *
Allow: /
Sitemap: https://imhex.werwolv.net/sitemap.xml

62
dist/web/source/sitemap.xml vendored Normal file
View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
<url>
<loc>https://web.imhex.werwolv.net/</loc>
<lastmod>2024-01-02T11:44:00+00:00</lastmod>
<priority>1.00</priority>
</url>
<url>
<title>English</title>
<loc>https://web.imhex.werwolv.net?lang=en-US</loc>
<lastmod>2024-01-02T11:44:00+00:00</lastmod>
<priority>1.00</priority>
</url>
<url>
<title>Deutsch</title>
<loc>https://web.imhex.werwolv.net?lang=de-DE</loc>
<lastmod>2024-01-02T11:44:00+00:00</lastmod>
<priority>1.00</priority>
</url>
<url>
<title>Português</title>
<loc>https://web.imhex.werwolv.net?lang=pt-BR</loc>
<lastmod>2024-01-02T11:44:00+00:00</lastmod>
</url>
<url>
<title>中国</title>
<loc>https://web.imhex.werwolv.net?lang=zh-CN</loc>
<lastmod>2024-01-02T11:44:00+00:00</lastmod>
</url>
<url>
<title>國語</title>
<loc>https://web.imhex.werwolv.net?lang=zh-TW</loc>
<lastmod>2024-01-02T11:44:00+00:00</lastmod>
</url>
<url>
<title>日本語</title>
<loc>https://web.imhex.werwolv.net?lang=ja-JP</loc>
<lastmod>2024-01-02T11:44:00+00:00</lastmod>
</url>
<url>
<title>한국어</title>
<loc>https://web.imhex.werwolv.net?lang=ko-KR</loc>
<lastmod>2024-01-02T11:44:00+00:00</lastmod>
</url>
<url>
<title>Español</title>
<loc>https://web.imhex.werwolv.net?lang=es-ES</loc>
<lastmod>2024-01-02T11:44:00+00:00</lastmod>
</url>
<url>
<title>Italiano</title>
<loc>https://web.imhex.werwolv.net?lang=it-IT</loc>
<lastmod>2024-01-02T11:44:00+00:00</lastmod>
</url>
</urlset>

177
dist/web/source/style.css vendored Normal file
View File

@@ -0,0 +1,177 @@
html, body {
height: 100%;
margin: 0;
user-select: none;
}
body {
display: flex;
align-items: center;
background-color: #121212;
overflow: hidden;
}
.emscripten {
padding-right: 0;
margin-left: auto;
margin-right: auto;
display: none;
border: 0 none;
image-rendering: smooth;
}
h1, h2, h5 {
color: #F0F0F0;
font-size: 20px;
font-family: monospace;
width: 100%;
text-align: center;
margin-top: 60px;
margin-bottom: 10px;
}
h2 {
margin-top: 15px;
font-size: 17px;
}
h5 {
margin-top: 0;
font-size: 17px;
}
#not_working {
opacity: 0;
}
#not_working.visible {
opacity: 1;
transition: opacity 2s ease;
}
a {
color: #7893ff;
text-decoration: none;
}
a:hover {
text-shadow: #3a4677 0 0 10px;
}
.footer {
width: 100%;
height: 20px;
position: absolute;
bottom: 0;
text-align: center;
color: #F0F0F0;
background-color: #0A0A0A;
padding: 10px;
font-family: monospace;
font-size: 15px;
display: flex;
justify-content: center;
align-items: center;
flex-direction: row;
gap: 10%;
}
.centered {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
}
.lds-ripple {
display: inline-block;
position: relative;
width: 80px;
height: 80px;
}
.lds-ripple div {
position: absolute;
border: 4px solid #fff;
opacity: 1;
border-radius: 50%;
animation: lds-ripple 1s cubic-bezier(0, 0.2, 0.8, 1) infinite;
}
.lds-ripple div:nth-child(2) {
animation-delay: -0.5s;
}
@keyframes lds-ripple {
0% {
top: 36px;
left: 36px;
width: 0;
height: 0;
opacity: 0;
}
4.9% {
top: 36px;
left: 36px;
width: 0;
height: 0;
opacity: 0;
}
5% {
top: 36px;
left: 36px;
width: 0;
height: 0;
opacity: 1;
}
100% {
top: 0;
left: 0;
width: 72px;
height: 72px;
opacity: 0;
}
}
:root {
--progress: 25%;
}
.progress-bar-container {
margin: 100px auto;
width: 600px;
text-align: center;
}
.progress {
padding: 6px;
border-radius: 30px;
background: rgba(0, 0, 0, 0.25);
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.25),
0 1px rgba(255, 255, 255, 0.08);
}
.progress-bar {
color: rgba(240, 240, 240, 0.9);
height: 18px;
border-radius: 30px;
font-size: 13px;
font-family: monospace;
font-weight: bold;
text-wrap: avoid;
white-space: nowrap;
overflow: hidden;
background-image: linear-gradient(
to bottom,
rgba(255, 255, 255, 0.2),
rgba(255, 255, 255, 0.0)
);
}
.progress-moved .progress-bar {
width: var(--progress);
background-color: #3864cb;
}

157
dist/web/source/wasm-config.js vendored Normal file
View File

@@ -0,0 +1,157 @@
let wasmSize = null;
// See comment in dist/web/Dockerfile about imhex.wasm.size
fetch("imhex.wasm.size").then(async (resp) => {
wasmSize = parseInt((await resp.text()).trim());
console.log(`Real WASM binary size is ${wasmSize} bytes`);
});
// Monkeypatch WebAssembly to have a progress bar
// inspired from: https://github.com/WordPress/wordpress-playground/pull/46 (but had to be modified)
function monkeyPatch(progressFun) {
const _instantiateStreaming = WebAssembly.instantiateStreaming;
WebAssembly.instantiateStreaming = (response, ...args) => {
// Do not collect wasm content length here see above
const file = response.url.substring(
new URL(response.url).origin.length + 1
);
const reportingResponse = new Response(
new ReadableStream(
{
async start(controller) {
const reader = response.clone().body.getReader();
let loaded = 0;
for (; ;) {
const { done, value } = await reader.read();
if (done) {
if(wasmSize) progressFun(file, wasmSize);
break;
}
loaded += value.byteLength;
progressFun(file, loaded);
controller.enqueue(value);
}
controller.close();
}
},
{
status: response.status,
statusText: response.statusText
}
)
);
for (const pair of response.headers.entries()) {
reportingResponse.headers.set(pair[0], pair[1]);
}
return _instantiateStreaming(reportingResponse, ...args);
}
}
monkeyPatch((file, done) => {
if (!wasmSize) return;
if (done > wasmSize) {
console.warn(`Downloaded binary size ${done} is larger than expected WASM size ${wasmSize}`);
return;
}
const percent = ((done / wasmSize) * 100).toFixed(0);
const mibNow = (done / 1024**2).toFixed(1);
const mibTotal = (wasmSize / 1024**2).toFixed(1);
let root = document.querySelector(':root');
root.style.setProperty("--progress", `${percent}%`)
document.getElementById("progress-bar-content").innerHTML = `${percent}% &nbsp;[${mibNow} MiB / ${mibTotal} MiB]`;
});
function glfwSetCursorCustom(wnd, shape) {
let body = document.getElementsByTagName("body")[0]
switch (shape) {
case 0x00036001: // GLFW_ARROW_CURSOR
body.style.cursor = "default";
break;
case 0x00036002: // GLFW_IBEAM_CURSOR
body.style.cursor = "text";
break;
case 0x00036003: // GLFW_CROSSHAIR_CURSOR
body.style.cursor = "crosshair";
break;
case 0x00036004: // GLFW_HAND_CURSOR
body.style.cursor = "pointer";
break;
case 0x00036005: // GLFW_HRESIZE_CURSOR
body.style.cursor = "ew-resize";
break;
case 0x00036006: // GLFW_VRESIZE_CURSOR
body.style.cursor = "ns-resize";
break;
default:
body.style.cursor = "default";
break;
}
}
function glfwCreateStandardCursorCustom(shape) {
return shape
}
var notWorkingTimer = setTimeout(() => {
document.getElementById("not_working").classList.add("visible")
}, 5000);
var Module = {
preRun: [],
postRun: [],
onRuntimeInitialized: function() {
// Triggered when the wasm module is loaded and ready to use.
document.getElementById("loading").style.display = "none"
document.getElementById("canvas").style.display = "initial"
clearTimeout(notWorkingTimer);
},
print: (function() { })(),
printErr: function(text) { },
canvas: (function() {
let canvas = document.getElementById('canvas');
// As a default initial behavior, pop up an alert when webgl context is lost. To make your
// application robust, you may want to override this behavior before shipping!
// See http://www.khronos.org/registry/webgl/specs/latest/1.0/#5.15.2
canvas.addEventListener("webglcontextlost", function(e) { alert('WebGL context lost. You will need to reload the page.'); e.preventDefault(); }, false);
return canvas;
})(),
setStatus: function(text) { },
totalDependencies: 0,
monitorRunDependencies: function(left) {
},
instantiateWasm: function(imports, successCallback) {
imports.env.glfwSetCursor = glfwSetCursorCustom
imports.env.glfwCreateStandardCursor = glfwCreateStandardCursorCustom
instantiateAsync(wasmBinary, wasmBinaryFile, imports, (result) => {
successCallback(result.instance, result.module)
});
},
arguments: []
};
// Handle passing arguments to the wasm module
const queryString = window.location.search;
const urlParams = new URLSearchParams(queryString);
if (urlParams.has("lang")) {
Module["arguments"].push("--language");
Module["arguments"].push(urlParams.get("lang"));
}
window.addEventListener('resize', js_resizeCanvas, false);
function js_resizeCanvas() {
let canvas = document.getElementById('canvas');
canvas.width = Math.min(document.documentElement.clientWidth, window.innerWidth || 0);
canvas.height = Math.min(document.documentElement.clientHeight, window.innerHeight || 0);
canvas.classList.add("canvas_full_screen")
if (GLFW.active && GLFW.active.windowPosFunc) {
getWasmTableEntry(GLFW.active.windowPosFunc)(GLFW.active.id, GLFW.active.x, GLFW.active.y);
}
GLFW.onWindowSizeChanged();
}

Submodule lib/external/capstone deleted from c7c665f8f3

1
lib/external/curl vendored

Submodule lib/external/curl deleted from 801bd5138c

1
lib/external/fmt vendored

Submodule lib/external/fmt deleted from d141cdbeb0

Some files were not shown because too many files have changed in this diff Show More