Commit Graph

192 Commits

Author SHA1 Message Date
WerWolv
715e970d99 fix: Last column in text editor not being selectable 2025-08-31 16:59:40 +02:00
paxcut
c8caf6124e Fix: Very long lines in text editor could make it hang. (#2426)
Fixed by only processing text that's visible.

Also fixed the cursor jumping to breakpoint line when selected by
clicking the line number and added highlighting of the current editing
line. An optimization that caches the number of utf-8 chars in each line
was included as well.
Finally, an error that caused ImHex to crash if a pattern was saved as
itself was also fixed.
2025-08-30 20:01:05 -07:00
WerWolv
a063eb96c6 fix: Markdown elements overflowing window width 2025-08-27 21:27:47 +02:00
WerWolv
c1a14cb4d4 impr: Ensure that wrapped text doesn't end up wrapping at every character 2025-08-25 21:22:43 +02:00
WerWolv
0178ba014a fix: Region picker widget overflowing in many views 2025-08-24 16:29:36 +02:00
WerWolvTranslationBot
013fa85c1c lang: Updated localization (#2412)
Translations update from [Weblate](https://weblate.werwolv.net) for
[ImHex/Builtin](https://weblate.werwolv.net/projects/imhex/builtin/).


It also includes following components:

* [ImHex/Diffing](https://weblate.werwolv.net/projects/imhex/diffing/)

* [ImHex/Yara
Rules](https://weblate.werwolv.net/projects/imhex/yara-rules/)

*
[ImHex/Disassembler](https://weblate.werwolv.net/projects/imhex/disassembler/)

* [ImHex/Fonts](https://weblate.werwolv.net/projects/imhex/fonts/)

* [ImHex/Hashes](https://weblate.werwolv.net/projects/imhex/hashes/)

* [ImHex/Remote](https://weblate.werwolv.net/projects/imhex/remote/)

* [ImHex/Script
Loader](https://weblate.werwolv.net/projects/imhex/script-loader/)

* [ImHex/UI](https://weblate.werwolv.net/projects/imhex/ui/)

*
[ImHex/Visualizers](https://weblate.werwolv.net/projects/imhex/visualizers/)

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



Current translation status:

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

Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: OctopuSSX <vladik0701@gmail.com>
2025-08-24 13:07:16 +02:00
Nik
d012ad08f8 feat: Added proper Markdown renderer (#2415) 2025-08-20 20:37:44 +02:00
WerWolv
fbde2942de build: Refactor ContentRegistry into multiple separate files 2025-08-14 21:22:03 +02:00
WerWolv
d920718b44 build: Refactor ImHexAPI into multiple separate files 2025-08-14 20:16:40 +02:00
WerWolv
50b25882cd fix: MSVC build errors 2025-08-12 19:21:00 +02:00
WerWolv
b5a3a8b4c2 impr: Rewrite Localization Manager to use more standard format and load localizations on the fly 2025-08-12 18:00:10 +02:00
WerWolv
25c8f4b588 fix: Jump to certain array-member patterns not working
Fixes #2398
2025-08-11 21:46:47 +02:00
WerWolv
09b2e20a3d impr: Save most of the hex editor settings
#2398
2025-08-11 21:03:18 +02:00
paxcut
50f1fe2b2d improv: moved text editor to the ui plugin. (#2397)
Reorganized source code into files named in the fashion of imhex and
split large functions into smaller ones. Moved all function definitions
out of the header except for one-liners. All variable types were
switched to use imHex standard (u8,...) and removed duplicated functions
that were needed when the text editor was isolated.

Minor improvements to find/replace while making sure they still worked
with utf-8 chars.
2025-08-10 14:35:21 -07:00
WerWolv
80003a4843 impr: Condense and modernize find view 2025-08-10 20:04:36 +02:00
WerWolv
d683c04519 fix: ID and layout issues with static array members in the pattern data view
Fixes #2393
2025-08-09 14:09:32 +02:00
WerWolv
9cff9043ee impr: Remove hex::format, improve format and logging type safety 2025-08-06 20:02:23 +02:00
paxcut
d429424f67 improv: refactor text editor to follow imhex style. (#2382)
Also fixes two bugs:
1) error messages not staying visible
2) uncaught exception when struct name is duplicated.

A lot of the code using coordinates for start and end has been moved to
use Selections instead. Created more string manipulation code that uses
utf8 indices aka Coordinates directly. This makes implementing editing
functions easier by not having to go back and forth from string indices
to char indices and back. Currently, the substring, erase and []
operator support coordinates and str indices.
2025-08-06 01:01:07 -07:00
WerWolv
e05825b9f4 feat: Added extended/unprintable ASCII character display toggle to hex editor 2025-08-05 23:33:02 +02:00
WerWolv
baebfe96ba impr: Make banners easier to read 2025-08-05 22:19:04 +02:00
WerWolv
95465e2fc3 fix: Tree expand working differently for favorites and static arrays in the pattern data view 2025-08-05 17:57:59 +02:00
paxcut
56d1e2670e fix: segment numbers are still being cutoff. (#2370)
I noticed that an earlier fix was missing parenthesis, so I checked a
file of a big size and used a segment size of 1 and only 3 digits were
being displayed in spite of needing 6.
2025-08-02 23:44:35 -07:00
WerWolv
29354f0bcb fix: Hex Editor segment numbers being cut off 2025-08-02 17:30:49 +02:00
WerWolv
83d92dde35 build: Update VSCode Icons font 2025-07-30 23:17:13 +02:00
WerWolv
be6a90675b fix: Some cell visualizer types not updating their values correctly 2025-07-26 11:58:30 +02:00
WerWolv
e0180b718f feat: Added simplified pattern value editor 2025-07-24 23:29:13 +02:00
WerWolv
0e720a1e02 fix: Hex editor insert mode inserting or removing too many bytes 2025-07-24 19:28:46 +02:00
WerWolv
f6860015eb fix: Rendering of insert cursor in hex editor 2025-07-24 18:13:02 +02:00
WerWolv
5df50ef380 fix: Make Banner button more visible 2025-07-20 00:44:08 +02:00
paxcut
24732b304b fix: more problems with bytes per row. (#2338)
The scrollbar, mini map and the segment delimiters were also using the
incorrect bytes per row value when changing data size forced a change in
the number of bytes per row. From the definition of the new value it
follows that bytesPerRow/bytesPercell == m_bytesPerRow/bytesPerCell, so
it is not necessary to switch it when it is divided by that quantity.
2025-07-16 13:23:14 -07:00
paxcut
5ea021d57a fix: fix for issue 2334 (#2337)
The error was that if `m_bytesPerRow` was not divisible by the number of
bytes per column then ImHex would crash but wouldn't crash if it was.
When `m_bytesPerRow` is not equal to the resultant bytes per row
obtained by the product of column count and bytes per column, then the
later bytes per row were be allocated but the former bytes per row were
being written causing heap corruption and crashes.

Instead of resetting `m_bytePerRow` when it can't be used, a new
variable (`bytesPerRow`) is created with the correct value and used in
the rest of the function. This way if the user goes back to choose a
data size that divides the old `m_bytesPerRow` then the number would
still be available and not overwritten. Test indicate that this approach
works and previous crashes are eliminated while producing the desired
output.
2025-07-15 23:55:52 -07:00
paxcut
e7a2729d36 feat: semantic syntax highlights for pattern editor. (#2214)
allows the ability to assign colors to global placed and non-placed
variables, pattern, local and calculated pointer variables, template
arguments, function variables and arguments, etc etc etc. It
accomplishes this using the parser and the token sequence generated by
the lexer. It still uses the original colorizing code but the underlying
data holding the pattern has been updated to be easier to use and to
debug. The changes are too numerous to cite here.It is a big but
necessary step to bring the pattern editor to a somewhat useful state.
There may be one commit in the pattern language repo needed to be able
to run this code
2025-07-11 22:47:56 -07:00
WerWolv
da2aa85a8a build: Fix cppcheck issues 2025-07-10 13:57:08 +02:00
Nik
d1840a2184 build: Update ImGui to v1.92.1 (#2325)
Update ImGui to the latest version and rewrite most of the font handling
code
2025-07-10 10:00:39 +02:00
Shadow775711
df3b85765d Polish translation (#2295)
Feature description

This pull request introduces full Polish language support to ImHex.
It is a new feature that allows users to switch the UI to Polish,
improving accessibility for Polish-speaking users.

Implementation description

-Translated a total of 10 JSON language files into Polish (pl_PL.json)

-All translations were done manually, with the help of tools such as
DeepL, large language models (LLMs), and technical dictionaries

-Validated the JSON files using [jsonlint.com](https://jsonlint.com/)

-Performed initial UI testing — all translated strings appear and render
correctly

Screenshots

Below is an example of the UI in Polish:
![Zrzut ekranu z 2025-06-05
21-31-55](https://github.com/user-attachments/assets/762ab695-0851-4183-80c5-f52d4e02ac18)

![Zrzut ekranu z 2025-06-05
21-34-47](https://github.com/user-attachments/assets/2df0b26d-4f88-4ddc-b445-8793c8549723)



Additional things

-I'm a beginner with both ImHex and English, so I may have missed some
things

-I'm fully open to any suggestions or corrections — whether related to
translation accuracy or JSON formatting/style

-I would greatly appreciate it if the reviewer could:

-Confirm that the project still compiles correctly (it built fine on my
side using ninja)

-Check that the pl_PL.json files are properly formatted and follow the
project's standards

If there are preferred tools or workflows for validating and formatting
JSON in this repository, I’d be happy to adopt them in the future.

---------

Co-authored-by: paxcut <53811119+paxcut@users.noreply.github.com>
2025-06-24 02:02:42 -07:00
only9464
2b352c6d7a i18n: update Chinese (Simplified) translations (#2313)
<!--
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 -->
Updated
[plugins/builtin/romfs/lang/zh_CN.json](https://github.com/only9464/ImHex/blob/master/plugins/builtin/romfs/lang/zh_CN.json)、
[plugins/diffing/romfs/lang/zh_CN.json](https://github.com/only9464/ImHex/blob/master/plugins/diffing/romfs/lang/zh_CN.json)、
[plugins/disassembler/romfs/lang/zh_CN.json](https://github.com/only9464/ImHex/blob/master/plugins/disassembler/romfs/lang/zh_CN.json)、
[plugins/fonts/romfs/lang/zh_CN.json](https://github.com/only9464/ImHex/blob/master/plugins/fonts/romfs/lang/zh_CN.json)、
[plugins/hashes/romfs/lang/zh_CN.json](https://github.com/only9464/ImHex/blob/master/plugins/hashes/romfs/lang/zh_CN.json)、
[plugins/ui/romfs/lang/zh_CN.json](https://github.com/only9464/ImHex/blob/master/plugins/ui/romfs/lang/zh_CN.json)、
[plugins/visualizers/romfs/lang/zh_CN.json](https://github.com/only9464/ImHex/blob/master/plugins/visualizers/romfs/lang/zh_CN.json)
file to add support for Chinese language
### Implementation description
<!-- Explain what you did to correct the problem -->
| Plugin | Before
Modification([WerWolv/ImHex](https://github.com/WerWolv/ImHex)) | After
Modification([only9464/ImHex](https://github.com/only9464/ImHex)) |

|---------------|-------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------|
| builtin |
[plugins/builtin/romfs/lang/zh_CN.json](https://github.com/WerWolv/ImHex/blob/master/plugins/builtin/romfs/lang/zh_CN.json)
|
[plugins/builtin/romfs/lang/zh_CN.json](https://github.com/only9464/ImHex/blob/master/plugins/builtin/romfs/lang/zh_CN.json)
|
| diffing |
[plugins/diffing/romfs/lang/zh_CN.json](https://github.com/WerWolv/ImHex/blob/master/plugins/diffing/romfs/lang/zh_CN.json)
|
[plugins/diffing/romfs/lang/zh_CN.json](https://github.com/only9464/ImHex/blob/master/plugins/diffing/romfs/lang/zh_CN.json)
|
| disassembler |
[plugins/disassembler/romfs/lang/zh_CN.json](https://github.com/WerWolv/ImHex/blob/master/plugins/disassembler/romfs/lang/zh_CN.json)
|
[plugins/disassembler/romfs/lang/zh_CN.json](https://github.com/only9464/ImHex/blob/master/plugins/disassembler/romfs/lang/zh_CN.json)
|
| fonts |
[plugins/fonts/romfs/lang/zh_CN.json](https://github.com/WerWolv/ImHex/blob/master/plugins/fonts/romfs/lang/zh_CN.json)
|
[plugins/fonts/romfs/lang/zh_CN.json](https://github.com/only9464/ImHex/blob/master/plugins/fonts/romfs/lang/zh_CN.json)
|
| hashes |
[plugins/hashes/romfs/lang/zh_CN.json](https://github.com/WerWolv/ImHex/blob/master/plugins/hashes/romfs/lang/zh_CN.json)
|
[plugins/hashes/romfs/lang/zh_CN.json](https://github.com/only9464/ImHex/blob/master/plugins/hashes/romfs/lang/zh_CN.json)
|
| ui |
[plugins/ui/romfs/lang/zh_CN.json](https://github.com/WerWolv/ImHex/blob/master/plugins/ui/romfs/lang/zh_CN.json)
|
[plugins/ui/romfs/lang/zh_CN.json](https://github.com/only9464/ImHex/blob/master/plugins/ui/romfs/lang/zh_CN.json)
|
| visualizers |
[plugins/visualizers/romfs/lang/zh_CN.json](https://github.com/WerWolv/ImHex/blob/master/plugins/visualizers/romfs/lang/zh_CN.json)
|
[plugins/visualizers/romfs/lang/zh_CN.json](https://github.com/only9464/ImHex/blob/master/plugins/visualizers/romfs/lang/zh_CN.json)
|

### Screenshots
<!-- If your change is visual, take a screenshot showing it. Ideally,
make before/after sceenshots -->
I don't think this PR needs a screenshot, maybe
### Additional things
<!-- Anything else you would like to say -->
Nothing
2025-06-23 05:07:43 -07:00
WerWolv
11e70511e6 build: Fix plugin SDK issues 2025-05-29 18:19:20 +02:00
WerWolv
f341413248 fix: Crash when opening diff view
#2269
2025-05-26 18:34:00 +02:00
WerWolv
7067ffafe7 patterns: Display pattern errors in red in the pattern data view 2025-05-25 11:46:41 +02:00
WerWolv
145c88db31 patterns: Updated pattern language
Fixes #2266
2025-05-25 11:00:59 +02:00
WerWolv
bd8c4e807c fix: Remove extra pixel from Hex Editor selection frame 2025-05-24 16:19:13 +02:00
Stephen Hewitt
f729d36214 fix: Crash when sorting for value fields in pattern data view, fix HTML export encoding (#2242)
<!--
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 is a fix for the ImHex bug "ImHex crashes when analysing any PE
file #2221"

### Implementation description
This is a fix for the ImHex bug "ImHex crashes when analysing any PE
file #2221". The fix requires changes to the Pattern Language and the
ImHex UI. Revision would be wise. We want to avoid collateral damage.
It's a big code base and I'm new to it and the compilers/build-systems
used. And the bug is complex and low-level. I suspect this will fix
other random crashes. The problem is caused by two issues:
- The std::sort algorithm conjuring up garbage due to the sorting
criteria not being a strict weak ordering. See
[this](https://github.com/Voultapher/sort-research-rs/blob/main/writeup/sort_safety/text.md)
link.
- We sort shared_ptr&lt;ptrn::Pattern&gt; by pointer value, and the
object is a clone. In essence we're changing the values as we're
sorting.
 
Fixes #2221

### IMPORTANT
I'm not sure how "plugins/builtin/source/content/data_formatters.cpp"
got into the PR. Been trying for an hour to rectify. I'm not a Git
expert (the last time I used source control seriously SourceSafe was a
thing) please ignore that file. It's a fix for another PR I submitted. I
suspect I stuffed up the branching and merging.

---------

Co-authored-by: Nik <werwolv98@gmail.com>
2025-05-17 20:50:21 +00:00
WerWolv
e32c5784af impr: Further refine pattern tree indenting 2025-05-16 20:24:38 +02:00
WerWolv
1496a6e755 impr: Improve indentation of pattern data tree
#2252
2025-05-16 18:50:35 +02:00
paxcut
ff286f3e05 fix: subpixel effects on hex editor. (#2247)
The implementation of subpixel rendering using draw call lists with
callbacks prevents call list merging and their associated clip rects in
tables. As a result clip rects become as narrow as the columns of the
table which can clip previously renderable primitives. The hex editor
has several draw calls that render outside their column so if subpixel
rendering is selected those primitives cease to be displayed.

To fix this issue, and to verify that this was indeed the cause behind
the issue, we simply push an adequately sized clip rect before the draw
call command and pop it right after.

A problem with segment vertical separators not being rendered in the
first tow was also fixed.
2025-05-16 01:31:29 -07:00
WerWolv
4b9a3d121d fix: Visualizer popups being draggable from their body 2025-05-09 17:23:55 +02:00
Geky
be44676b01 i18n: Added french translation (#2171) 2025-04-24 11:14:41 +02:00
Stefan
a4360dfe76 lang: Use ß in German translation where needed (#2135) 2025-03-11 14:55:12 +01:00
WerWolv
ccaf1e33c0 build: Make this modules stuff actually mostly work on Clang 2025-02-18 00:39:53 +01:00
WerWolv
879e4c9d58 build: Move menu items handler into libimhex 2025-02-16 15:48:44 +01:00