334 Commits

Author SHA1 Message Date
MegaBlocksTM
9ec06d9658 Move alignas alignment to context menu, fix hover state across refreshes
Replace inline alignas() editing with a proper "Align Members" submenu
in the right-click context menu. Remove alignas display from command row
and all related span/hit-test/edit machinery. Preserve hover highlight
state across document refreshes.
2026-02-07 10:40:04 -07:00
sysadmin
02a5542f38 Add quick-convert suggestions in right-click menu for Hex nodes
- Hex64: offers Change to uint64_t and uint32_t
- Hex32: offers Change to uint32_t
- Hex16: offers Change to int16_t
- Items appear at top of context menu with separator below

Co-Authored-By: combuter <combuter@users.noreply.github.com>
2026-02-07 10:12:27 -07:00
sysadmin
d9fd01f1d1 Add class keyword picker, alignas alignment picker with member realignment
- Class keyword (struct/class/union/enum) persists in JSON, drives generator output
- CommandRow2 shows alignas(N) pill computed from struct member alignment
- Clicking alignas opens picker (1, 4, 8, 16) to realign all members
- Going up: members repositioned to N-byte boundaries, padding fills gaps
- Going down: excess padding removed, members pack tighter
- Add cmd::ChangeOffset for undoable offset repositioning
- All 11 tests pass

Co-Authored-By: combuter <combuter@users.noreply.github.com>
2026-02-07 10:07:38 -07:00
sysadmin
60fda32af0 Add async auto-refresh with change detection and self-test harness
BBB
2026-02-07 05:46:01 -07:00
Ccccc
6232577f87 Unify right-click menu: all items available everywhere
Right-click menu is now one unified menu. Node-specific actions
(edit value, rename, change type, add field below, duplicate, delete,
copy address/offset) appear when clicking on a node. Creation actions
(Add Hex64, Add Struct, Append 128 bytes), Undo/Redo, and Copy All
as Text are always present regardless of where you click.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 18:02:25 -07:00
Ccccc
3cf9a311d2 Add context menu icons, expand empty-area menu, add test_context_menu
- Right-click on empty area: Add Hex64, Add Struct, Append 128 bytes,
  Undo/Redo, Copy All as Text (with icons for each)
- Right-click on node: icons for Edit Value, Rename, Change Type,
  Add Field, Add Child, Expand/Collapse, Duplicate, Delete,
  Copy Address, Copy Offset, Copy All as Text
- Multi-select menu: icons for batch delete and batch change type
- Add test_context_menu.cpp (20 tests): insert adds exactly one node,
  auto-offset placement, duplicate adds exactly one copy, duplicate
  preserves original, duplicate undo, struct duplicate no-op, root
  insert, append 128 bytes (16 nodes), append undo (macro), insert
  child, remove+undo, multiple duplicates, parent correctness, struct
  with children, batch remove, invalid parent, invalid index guards
- Add vsicons to qrc: trash, clippy, link, diff-added, expand-all,
  collapse-all, rename, whole-word, list-selection

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 17:38:02 -07:00
BBBBbbbb
0069c942c7 Add C++ code generator, rendered view, fix Hex node display
- Add generator.h/cpp: C++ struct emission with padding gaps, tail
  padding, pragma pack, static_assert, nested structs, pointers
- Add rendered view (QStackedWidget per tab, QsciScintilla + C++ lexer)
- View menu: C/C++ switches to rendered view, Reclass View switches back
- File > Export C++ Header writes full SDK to .h file
- Fix Hex8-Hex64 display: show name + value columns like normal types
  instead of hiding name behind ASCII preview (only Padding keeps that)
- Update column span detection, compose width calc, controller edit
  dispatch, and editor dimming to match new Hex layout
- Sample data: Entity struct with health, armor, speed, flags fields
- Add test_generator (21 tests) and test_validation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 17:31:39 -07:00
sysadmin
f1e3da6e95 Remove command row leading spaces, add right-click menu in empty area
- Command row text is now flush-left (no 3-space fold prefix)
- Right-clicking empty area below nodes shows a limited context menu
  with "Append 128 bytes" (inserts 16 Hex64 fields at root level)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 13:40:30 -07:00
sysadmin
238d895e83 Add saved sources with quick-switch in source picker
Source picker now remembers loaded files and attached processes below a
separator with checkmarks. Clicking a saved source instantly switches
back to it, preserving base addresses per-source.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 13:16:26 -07:00
DreamTeam2026
13d403a568 Merge codicons branch: add vscodicon icons to menu bar, refactor createMenus() 2026-02-06 12:58:32 -07:00
DreamTeam2026
6852e0915e Fix 13 logic bugs and UI issues across editor, controller, and core
Round 1: Fix updateCommandRow offset, structTypeName undo, changeNodeKind
macro, shift-click kCommandRowId leak, type filter byte-vs-column bug.
Round 2: Move kFooterIdBit to core.h, add RcxEditor destructor for cursor
cleanup, defer refresh during batch ops, use newline separator in type
picker, narrow selection on double-click edit, clear hover on keyboard
scroll, guard 0x prefix from deletion, cap array count at 100k.
2026-02-06 12:57:01 -07:00
Sen66
6a23ebe495 Add vscodicon icons to menu bar items, refactor createMenus() a bit 2026-02-06 20:35:58 +01:00
sysadmin
e36d1591ba Trim README description
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 08:04:33 -07:00
sysadmin
6b92f65aee Fix README screenshot, remove powershell reference
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 08:03:58 -07:00
sysadmin
8daed45414 Remove ambient validation markers, show ptr64 as void*, add struct types to picker, add README
- Remove M_ERR and M_PTR0 ambient markers from compose (validation only during inline edit)
- Change ptr64 display name to void* in kKindMeta
- Type picker now includes custom struct type names from the tree
- Controller handles struct type selection from picker
- Add project README

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 08:02:08 -07:00
sen66
be0c818075 Refactor build scripts
- No more hardcoded QT path
- Searches for QT first in registry, then fallsback to C:/Qt and other drives
2026-02-06 15:46:09 +01:00
sysadmin
78b10ce68f Remove vendored QScintilla_src.tar.gz
No longer needed now that QScintilla is a git submodule.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 06:56:25 -07:00
sysadmin
e1dc53d84d Convert QScintilla to git submodule
Replace vendored QScintilla source files with a submodule pointing to
https://github.com/brCreate/QScintilla.git. Removes 765 tracked files
from the repo in favor of the submodule reference.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 06:55:28 -07:00
sysadmin
44e4d88f58 Provider refactor: 2-method base class, ProcessProvider, ProcessPicker
Collapse Provider interface from 9 virtual methods to 2 (read + size),
move providers to src/providers/, add name()/kind()/getSymbol() virtuals.
Replace FileProvider with BufferProvider, add ProcessProvider (Win32)
with module-based symbol resolution, wire ProcessPicker dialog, and
integrate getSymbol into pointer display and command row.

- Fix isReadable overflow for large addresses
- Guard deferred showSourcePicker/showTypeAutocomplete against stale edits
- 7/7 tests pass including 3 new provider test suites

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 06:52:44 -07:00
sysadmin
637aa7a550 Shadcn-style command row: pill chips, chevron breadcrumbs, left-elide
- Add ROUNDBOX pill indicators behind editable SRC and ADDR spans
- Switch breadcrumb separator from > to › (U+203A)
- Collapse deep paths (>4 parts) with ellipsis
- Left-elide breadcrumb path to keep current selection visible
- Clear base-addr indicator before repainting (prevents smear)
- Wire pill + addr decorators into setCommandRowText refresh
2026-02-05 18:32:44 -07:00
sysadmin
82e1520ded CommandRow: * icon, SRC: label, remove separator, clean margins
- Replace diamond with * for pixel-perfect fold alignment
- Add SRC: label prefix to command row source field
- Remove vertical bar separator from command row
- Clear footer margin text (no more ---)
- Remove + prefix from offset margin (0x instead of +0x)
- Remove codicon font infrastructure (use editor font chars)
2026-02-05 17:25:51 -07:00
sysadmin
6b9adf03fe Struct headers: type+name format, auto-collapse, no footer when collapsed
- Add structTypeName field to Node for struct type names
- Struct headers now show: struct TYPENAME name {
- Auto-collapse structs/arrays by default
- Skip footer rendering when collapsed (cleaner view)
- Fix header span calculations for new format
- Disable brace matching (not needed for structured viewer)
- Change hover color to muted teal (distinct from keywords)
2026-02-05 08:56:50 -07:00
sysadmin
a0d6b769b6 Fix 7 data bugs: hex endian, signed hex, array span, UTF-8 positions, array undo, offset sign 2026-02-05 07:15:51 -07:00
IChooChoose
4d35db224e Condensed array display + per-scope column widths + MIT license
- Array element structs render without { } braces (condensed display)
- [N] separators show element indices within arrays
- Per-scope column width calculation (nested elements use tighter spacing)
- Array headers show struct[N] for struct arrays
- [N] separators are not interactive (no hover/click highlight)
- Dynamic type column width (min 8, max 14)
- PE32+ sample data with full headers, DataDirectory[16], SectionHeaders[4]
- Added MIT license

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 06:26:00 -07:00
sysadmin
04252a3c96 Fix type picker popup cursor, sanitize string display
- Use isListActive() to detect popup and force arrow cursor
- Remove broken widget-search hack from showTypeListFiltered()
- Escape \n \r \t and control chars in char[]/wchar_t[] display
2026-02-04 09:28:12 -07:00
sysadmin
5d24a5594f Type picker: skip I-beam cursor, set arrow on popup 2026-02-04 09:10:48 -07:00
sysadmin
b7b0cbf2d2 Dynamic name column width + click-in-padding keeps edit active
- Compute effective name column width from longest field name (8-22 chars)
- Store layout in ComposeResult, cache in editor for span calculations
- Parameterize span functions to use runtime nameW instead of fixed constant
- Click within column padding during edit moves cursor to end instead of committing

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 09:03:18 -07:00
sysadmin
490486ca7c Type picker refactor: use SCI_USERLISTSHOW, fix coordinate handling
- Switch type picker from SCI_AUTOCSHOW to SCI_USERLISTSHOW for proper
  signal handling (userListActivated now fires correctly)
- Fix coordinate system mixing by using posFromCol() consistently
- Skip 0x prefix in value/base address edit selection
- Dynamic hint positioning: 2 spaces after value with // prefix
- Clearer validation errors ("too large! max=0x..." instead of "max")
- Green colored hint text using IND_BASE_ADDR indicator

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 07:48:59 -07:00
sysadmin
06c3251f74 Inline edit UX improvements: selection clamping, auto-select, validation fixes
- Constrain selection/cursor to edit span boundaries during inline edit
- Auto-select entire text when entering edit mode (Name, Value, Type)
- Double-click during edit selects entire editable text
- Fix vector component validation (subLine >= 0 for x component)
- Accept EU decimal separator (comma) for float parsing
- Darker selection highlight (35,35,35) vs hover (43,43,43)
- Remove blue text indicator, use hidden style
- Fix validation error message display

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 14:33:40 -07:00
sysadmin
a7e67b12fe Dynamic comment field for value editing with validation feedback
- Comment shows "Enter=Save Esc=Cancel" when valid, "! value" when invalid
- Only updates on validation state change to avoid lag
- Uses deferred timer for Scintilla document sync
- Added tests for comment echo and validation error display
2026-02-03 11:35:40 -07:00
sysadmin
2c00902020 Fix mouse event sync: hover on click, drag threshold, indicator/selection alignment 2026-02-03 08:34:31 -07:00
sysadmin
af183f27f0 KindFlags refactor, indicator helpers, auto-padding, sizeof format fix
- Add KindFlags bitmask enum (KF_HexPreview, KF_Container, KF_String, KF_Vector)
- Add helper functions: isHexPreview(), flagsFor(), allTypeNamesForUI()
- Add editor helpers: clearIndicatorLine(), fillIndicatorCols(), resolvedSpanFor()
- Use SCI_FINDCOLUMN for UTF-8 safe column-to-position conversion
- Auto-emit hex padding nodes when changing type to smaller size
- Fix struct footer format: sizeof(Name)=0x... (no spaces)
- Add tests for sizeof recalculation after node deletion
- Add debug output to investigate sizeof refresh issue
- Replace icons.qrc with resources.qrc, add embedded fonts

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 05:55:29 -07:00
sysadmin
abe5e3ebd9 selection and hover use full-row bg markers instead of indicators
- replace IND_SELECTED/IND_HOVER indicators with M_HOVER(6) M_SELECTED(7) bg markers
- disable caret line highlight and native selection rendering
- re-enable sel rendering only during inline edit
- add drag-select support via nodeClicked shift signals
- use lineRangeNoEol helper to exclude EOL from indicator ranges
- add drag tracking state to editor
2026-02-01 17:04:40 -07:00
sysadmin
0be67c8396 Initial commit: ReclassX structured binary editor 2026-02-01 11:37:32 -07:00