Commit Graph

3392 Commits

Author SHA1 Message Date
Benjamin Popp
dd22595afa - "delete" with a bunch of bytes highlighted should clear them to FF 2019-01-23 22:27:21 -06:00
Benjamin Popp
1e59fcd4d3 fixed a bug where pasting an array could accidentally switch formats if a string was too long
fixed a bug where string arrays were cropping the first character of the strings
2019-01-23 22:18:19 -06:00
Benjamin Popp
a97ac3f510 make it possible to extend arrays in the data
fix a bug where typing " to end a string in an array wouldn't append the 0xFF end byte
tools for string arrays are not fully implemented yet, but at least it doesn't crash now
make the string tool add a scrollbar when it gets really tall instead of growing past the bottom edge of the screen
make it possible to copy/paste an array
make it possible to edit arrays in the data
2019-01-23 21:00:21 -06:00
Benjamin Popp
67dcee0d14 test that up/down commands work correctly for the goto viewmodel
note that this involved updating to a newer version of AutoImplement,
  which contained a bugfix that allows for testing of the IModel interface.
2019-01-21 21:40:44 -06:00
Benjamin Popp
c4c46063c7 goto / follow pointer, when going to the exact address of an array,
restricts the width of the data to be a multiple (or divisor) of
the array's element width. This makes things look much nicer.
2019-01-20 22:46:54 -06:00
Benjamin Popp
c0040e7932 add autocomplete menu for goto based on known anchor names
- there are enough properties / commands needed for goto now that it deserves its own viewmodel.
2019-01-20 20:09:28 -06:00
Benjamin Popp
e049979fbc support for searching datasets for known data formats
it is now possible to specify an array based on a format and no length,
and the app will look for that data based on known pointers.
It will automatically match the longest values, and the results will
be stored in the metadata file. Therefor, this search will only occur
when loading a file that has no associated metadata.

This searching functionality is exposed in a new model subclass, so that the
tests won't be effected. However, the functionality exists in the general model,
so it's still possible to write specific tests based on bugs found.

Since an array can call something a string when it's not, added a new "ErrorPCS"
implementation of IDataFormat, to display the raw byte in red. This will help
find string errors and possibly missing string characters.
2019-01-20 10:58:03 -06:00
Benjamin Popp
520b8d78b2 support for dynamic array length
when writing a string, I do need to know that it has an end byte (0xFF)
adjusted usages to handle the change in API.
2019-01-19 15:16:38 -06:00
Benjamin Popp
039cb68b84 whenever the string tool's content textbox updates its cursor position,
update the viewport selection to match.
2019-01-18 22:39:31 -06:00
Benjamin Popp
ca48afa272 - string tool address & content should update when changes are made in the primary view. 2019-01-18 07:09:16 -06:00
Benjamin Popp
e22293ce56 if there is not enough room in the dataset for a data move, expand the dataset. 2019-01-18 06:38:25 -06:00
Benjamin Popp
0b6a7410b0 adjusting the free-space-finder algorithm based on real-data feedback. 2019-01-17 21:53:18 -06:00
Benjamin Popp
48606e2e21 - add a 1 pixel border above the main tab content that's a different color.
This visual cue helps the user see the top data border when there's no anchor text box.
- add a message display to the error display / goto box / find box area.
- animate errors and messages to help draw the user attention to them.
- pressing escape should clear the context control
2019-01-17 21:35:18 -06:00
Benjamin Popp
0129f2dd4e - add support for finding pointers if the search term is just 3 bytes
- refactor find method, it was too long
2019-01-17 20:44:28 -06:00
Benjamin Popp
40f6bd098b make anchor thick only on mouse-over. This little bit of interaction on hover may promote understanding that the anchor can be interacted with somehow. 2019-01-16 22:47:11 -06:00
Benjamin Popp
a9c5620fc3 adding a border to the selection to make it more visible 2019-01-16 22:28:19 -06:00
Benjamin Popp
fd1cd72c2b - allow header mouse events to trigger events on the content
- double-clicking a search (or search header) should open that search in the main view
2019-01-16 22:20:12 -06:00
Benjamin Popp
80f1576607 fixing a crash (thanks Daniel!)
- when using the Delete key to clear data, clear the format as well as the data.
2019-01-16 22:08:20 -06:00
Benjamin Popp
7c66b30f1b bugfix: change the color of the None Format when the Theme changes. 2019-01-16 20:16:44 -06:00
Benjamin Popp
12a3ec3460 add tab/enter support in UI 2019-01-15 22:22:09 -06:00
Benjamin Popp
3482e215e7 make undo/redo follow changes visually a bit better. Cleanup some edge cases with string tool address. 2019-01-15 22:12:05 -06:00
Benjamin Popp
02a8edd4ef fix a crash if you try to use back/forward from a search tab. 2019-01-15 21:50:00 -06:00
Benjamin Popp
62ddff0e30 fix a string truncation undo/redo bug. Make it possible to backspace in a string segment in an array. Make it possible to backspace multiple times in a string. 2019-01-15 21:46:14 -06:00
Benjamin Popp
096d87b0a4 make it possible to edit an anchor while the head is offscreen, possible via the anchor editor. 2019-01-15 21:20:56 -06:00
haven1433
c0413315c5 Merge pull request #17 from haven1433/dev
Updates from usability test 1
2019-01-14 22:51:54 -06:00
Benjamin Popp
4b7dd4cb92 first submission for array runs
arrayrun is a rather complex run. Each arrayrun is made of a number of elements, each of which contains a fixed set of segments.
Right now, the only type of segment it supports is strings. But ideally a segment could also be a number, a pointer, or something else.
The entire run could represent a large block of data. But the point is that the block is fairly homogeneus.

- added support for adding runs via typing
- added support for comprehending string segments to display/edit as PCS
- fixed a StringModelTest that was wrong, since this feature exposed it
2019-01-14 22:50:24 -06:00
Benjamin Popp
ab6ac40c20 adding remaining needed tests after user test 2019-01-11 20:53:24 -06:00
Benjamin Popp
54c5ce1917 Merge branch 'temp' into dev 2019-01-11 20:46:04 -06:00
Benjamin Popp
0b23bdbea5 adding tests for most recent changes 2019-01-11 20:43:54 -06:00
Benjamin Popp
099b9f48d6 temporary commit of yesterdays changes. I want to write the tests without these changes in, so that I can verify that the tests fail. 2019-01-11 17:09:24 -06:00
haven1433
3004e646b9 Merge pull request #16 from haven1433/dev
String Support
2019-01-10 20:28:05 -06:00
Benjamin Popp
a8e4519e69 file -> open should load metadata 2019-01-09 21:35:10 -06:00
Benjamin Popp
c1e58dd2d7 search results double-click wasn't aligning properly 2019-01-09 21:25:16 -06:00
Benjamin Popp
e6e99331f9 performance improvement: caching strings
PCSRun was a bit slow if you have multiple long strings on screen at the same time.
this was because CreateDataFormat was reloading the same long string for every cell in that string.
This is an n^2 operation.
To fix this, only load the screen for the FIRST index, then don't reload it again until reading a previous index again.

SearchResultsViewPort.AnchorText needs get and set for binding purposes.
strings should work with the tool (and to auto-open the tool) when hitting the first byte in the string.
2019-01-09 21:17:57 -06:00
Benjamin Popp
7155285736 replacing usages of ", &, and <> with string constants... just in case
adding an AnchorText/AnchorTextVisible property to the ViewPort, so that the UI can display an editable text field as a better way of editng anchors
make Metadata not crash if there's a parse error
load metadata on app start
2019-01-09 20:56:11 -06:00
Benjamin Popp
b07d2b2591 - undo was broken when undoing in the middle of a pointer.
- undo didn't treat unmapped pointers correctly
- cannot put a pointer in a string
2019-01-07 20:34:46 -06:00
Benjamin Popp
9127a61257 when editing an anchor, include the format (if there is one) 2019-01-07 19:25:25 -06:00
Benjamin Popp
962f015fcf change the order of operations so it's possible to name an anchor that has a string format 2019-01-07 19:15:11 -06:00
Benjamin Popp
69fd1cb3a3 - basic model should use the NullRun for GetNextRun instead of null
- PCSString.ReadString should optionally only recognize a string if it has a minimal number of repeated characters.
- don't automatically show a tool when one of its fields changes
- fix a bug where following a link in a multi-find document would shift the results in the main tab
- since a tool doesn't auto-show when a property changes, manually show it on double-click
- when a selection changes, if a string is selected, change the string tool to show that string
- slightly widen the string tool: it wasn't fitting all the strings it should on one line.
2019-01-06 22:20:32 -06:00
Benjamin Popp
80777626d0 made it possible to save names / unmapped pointers to a metadata file as part of saving/loading.
All the tests are passing and all the features are present... now I just need to actually test the app :)
2019-01-06 19:58:55 -06:00
Benjamin Popp
acb75df04d we now support undo/redo changes to names 2019-01-06 16:01:04 -06:00
Benjamin Popp
97725576bc tools can now undo
partial refactoring to enable undo/redo of anchor name changes
also wrote the test for it, which is currently failing.
2019-01-06 13:22:01 -06:00
Benjamin Popp
822035d7d8 basic implementation of undo/redo for formats and from strings 2019-01-05 22:29:19 -06:00
Benjamin Popp
201fa1e428 creating the delta model object in preparation for being able to undo model changes 2019-01-05 14:29:46 -06:00
Benjamin Popp
1a5dd243eb cleanup: making the app behave as expected
- PCSString conversion puts newlines after \n and \pn
- Goto/Back/Forward go to addresses, not lines
- fix visual glitches with PCS escaped bytes
- use monospace font for string tool. Use a width that works well with newlines.
- change app width to better default to work with tools
2019-01-04 20:09:17 -06:00
Benjamin Popp
49583e76aa replace the tool toggle button with a normal button. Fixes both the style and the show/hide behavior. 2019-01-04 07:08:23 -06:00
Benjamin Popp
6f1845f5fe make string tool interact with main viewport in the expected ways. 2019-01-03 21:23:44 -06:00
Benjamin Popp
07e14fc264 first pass at UI for the string tool 2018-12-19 22:18:17 -06:00
Benjamin Popp
ee77d42bed adding the rest of the model for the tool for String editing. 2018-12-19 21:40:07 -06:00
Benjamin Popp
0d9fa6d6b6 first pass at adding hooks in the ViewPort to support tools for working with custom data types. Functionality isn't there yet, just architecture. 2018-12-19 06:32:22 -06:00