Commit Graph

2748 Commits

Author SHA1 Message Date
paxcut
e18d583a00 feat: Added experimental external editor support. (#2347)
Users can now synchronize the content of the pattern editor with a file
on disk when exporting a pattern. Any modifications made in the pattern
editor are automatically saved to the file and when the pattern editor
gains focus it will automatically load any changes to the file on disk.
This feature is brand new and can have unforeseen problems so test it
fully before risking losing work.

Added major changes to how the text editor handles utf8 characters with
the added ability to obtain them using the [] operator and column
coordinates as indices. Sanitize coordinates was renamed to Set
Coordinates and can be used instead of the constructor to guarantee no
out of range asserts and/or exceptions. Improved move left and right
readability and cursor accuracy when clicking. Fixed single character
selection by double-clicking it. Deleted old and unused code and other
changes that I can't remember about atm.
2025-07-22 11:52:44 +02:00
WerWolv
22c9d77909 fix: Don't draw the same pattern tooltip multiple times 2025-07-21 12:43:47 +02:00
WerWolv
55b3b3a188 impr: Display all patterns in hover tooltip when hovering over a larger hex editor cell 2025-07-21 11:19:49 +02:00
WerWolv
c93e5ba183 git: Put remote plugin under LGPLv2.1 to support the cases where libssh2 is using OpenSSL internally 2025-07-21 09:55:22 +02:00
paxcut
5df8ec78aa improv: removing tabs (#2345)
These changes are part of an effort aimed at removing tabs from ImHex
that started some time ago. Here text preprocessing is removed from all
the places were it was done before and moved to the places where files
are read that go in the pattern editor with two notable exceptions.
1) Pattern import reads patterns in order to present a list that can be
filtered.That can safely ignore preprocessing since only needs to get
information needed to filter.
2) The pattern editor can incorporate text from the clipboard so that
needs to be preprocessed as well.

find/replace is unable to add tabs or carriage returns so this should
cover all angles.
2025-07-20 13:10:45 -07:00
WerWolv
cc6590d780 fix: Remove unused variable 2025-07-20 11:36:34 +02:00
WerWolv
9ce18d1a42 feat: Added bfloat and fp24 data inspector entries 2025-07-20 11:11:51 +02:00
WerWolv
9ff8d42143 fix: Reordering of toolbar items not working correctly
Fixes #2343
2025-07-20 11:07:47 +02:00
WerWolv
17ab429a8c fix: Intel Hex and Motorola SREC providers always being at least 1 byte long 2025-07-20 00:46:20 +02:00
WerWolv
5df50ef380 fix: Make Banner button more visible 2025-07-20 00:44:08 +02:00
WerWolv
8da007af6c impr: Make version info in about screen selectable
#2341
2025-07-20 00:40:33 +02:00
WerWolv
f053b94f68 impr: Replace reload provider icon with actual reload icon
#2343
2025-07-20 00:35:49 +02:00
WerWolv
d02ea09529 fix: Many issues and code style of the TTY console 2025-07-17 20:13:27 +02:00
WerWolv
79333593bf fix: Pattern Editor footer moving around when switching tabs 2025-07-17 20:13:09 +02:00
WerWolv
de62a4c71e impr: Better icon centering in icon buttons 2025-07-17 20:12:38 +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
WerWolv
5744ad588f impr: Better icon sizes for process list 2025-07-16 10:33:24 +02: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
38c5868029 feat: added matched bracket highlights + updating pattern language library (#2335)
Added clion-like bracket matching feature with shortcut to go to the
other one. Also improved some cumbersome repeated function call.
Added support for using negative indices in coordinates so -1 is the last 
line or column, -2 the previous, etc..
Pattern library has fixes for column errors being incorrectly set for lines
containing tabs that are not replaced by 4 spaces.
2025-07-15 18:47:33 -07:00
WerWolv
de9efe6c4d fix: Cut off text display of toolbar items 2025-07-15 22:04:36 +02:00
WerWolv
88ce3a2490 fix: Default toolbar items not showing up in settings window 2025-07-15 22:04:19 +02:00
WerWolv
7454221b3b fix: Goto address not updating when switching between jump modes 2025-07-14 18:39:05 +02:00
C3pa
fcc4709ed9 fix: Multiple typos (#2333)
Fix a typo in `screenshot_descriptions.json` reported in #2330. While I
was presented with the contributing doc, I came across another typo
that's fixed in the second commit.
2025-07-14 17:01:52 +02:00
WerWolv
aeb77559a7 build: Properly link against OpenSSL and LibCrypto 2025-07-14 16:49:17 +02:00
WerWolv
9acaf33410 impr: Allow GDB Provider to work without NoAckMode, added run length encoding support 2025-07-14 16:25:25 +02:00
WerWolv
4146047cdb build: Link against OpenSSL when needed 2025-07-14 01:57:13 +02:00
WerWolv
18e02fbf5c impr: Split up optional provider features into multiple abstract interfaces 2025-07-14 00:37:12 +02:00
WerWolv
b94519362c impr: Make gdb provider use cached provider 2025-07-14 00:06:17 +02:00
WerWolv
1e59a82c59 fix: More build issues 2025-07-13 20:07:46 +02:00
WerWolv
830be0b0d3 build: Fix more build issues 2025-07-13 20:07:46 +02:00
WerWolv
1570f379df fix: macOS build issue 2025-07-13 20:07:46 +02:00
WerWolv
bdc108d021 feat: Added remote SSH file provider 2025-07-13 20:07:46 +02:00
WerWolv
26de4c11e1 impr: Move pattern sections from pattern editor view to pattern data view 2025-07-12 22:05:13 +02:00
WerWolv
58d0d09eae fix: EventProviderOpened being called before the provider finished opening 2025-07-12 21:09:45 +02: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
5782236379 impr: Disable hinting for pixel perfect font 2025-07-11 15:04:21 +02:00
WerWolv
88de5f6be4 impr: Better font settings window 2025-07-11 14:55:25 +02:00
WerWolv
4520637aed fix: Pixel perfect font not scaling correctly 2025-07-11 14:54:54 +02:00
WerWolv
3c16adf169 fix: Don't update welcome screen textures if dpi didn't change 2025-07-10 16:13:48 +02:00
WerWolv
2ab54baa2c fix: DPI scaling 2025-07-10 14:39:52 +02: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
WerWolv
f2b6af8bdc fix: Duplicate ImGui IDs in data information view 2025-07-07 11:15:46 +02:00
WerWolv
c71411a527 fix: UDP Providers not being marked as dirty when data is received 2025-07-07 00:00:49 +02:00
WerWolv
af70234519 fix: Build issue due to imgui test engine test 2025-06-29 17:42:13 +02:00
WerWolv
053f7655c3 fix: Crashes on exit due to font deletion
#2287
2025-06-28 22:58:55 +02:00
WerWolv
a4ced46628 fix: Missing include 2025-06-25 20:39:03 +02:00
paxcut
6f42c4b3b3 fix: fixes for pattern language dissassembler support (#2314)
Following the documentation (which is not being updated for this type)
on using `hex::type::Instruction` fails to produce any patterns
regardless of how you format the string that is passed to capstone to
select architecture and options.

The error is traced back to mishandling the input string so that the
correct parts are not selected properly. Rather than manually selecting
the parts of the input string from the result of find it is much simpler
to use splitString() (which uses find internally) and does all the work
for us with fewer chances for errors.

There are still problems. The resulting string for the formatter doesn't
return the disassembled instruction and prints the variable name with
the @ used to place it. To view the instruction you need to unseal the
pattern and open the child which then shows the instruction. That only
happens after this fix has been applied.
2025-06-25 03:53:17 -07:00
Stephen Hewitt
4c20ceb94e Issue 2196 disassembler upper bound (#2272)
Issue #2196: Disassembler region range upper bound not inclusive

### Problem description
The issue is described
[here](https://github.com/WerWolv/ImHex/issues/2196)

### Implementation description
Some off by 1s

Co-authored-by: paxcut <53811119+paxcut@users.noreply.github.com>
2025-06-24 03:51:20 -07: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