The current implementation of Diff just compares the file with the original version of it, and then highlights the bytes that have been changed since last save. Nothing fancy, but it should allow us to test the current thumb routines.
When multiple results are close together, allow them to be combined into a single result within the new tab. This makes the overall result shorter, and makes it easier to see when 2 pieces of data are near each other.
The idea here is that we still want to do work on the UI thread (because we're doing a bunch of command and collection notifications, which can't cleanly be done from a background thread). So we break the long "paste" operations into chunks, and allow UI updates between.
Add 3 new properties to the ViewModel:
* Auto Adjust Data Width, which allows the selection to adjust the width after a goto based on the width of the target data.
* Allow Multiple Elements per Line, which allows the selection to adjust the width in multiples of the desired width, to better utilize the availabe space.
* Stretch Data, which signals the view that it should make cells wider if possible, up to twice their normal width.
All 3 of these preference are stored at the Editor level.
Add default styles for Toggle Buttons, Expanders, and Tooltips, since all 3 of those are now needed.
Most of this is boilerplate. The actual implementation change is in ArrayRunElementSegment.ToText. Converting a pointer element segment to text can now optionally collect the *content* of that pointer, instead of the pointer itself.
The second test is to fix a bug in plm AppendTo.
Selecting a sprite or string or something _should_ deselect most tools to change the tool to whatever the most useful option is automatically. But don't deselect the Raw tool, because that's useful in all situations.
* Add `AnimateScroll` property to `EditorViewModel` so the user can toggle this feature. Show it in the menu.
* Add `PreviewScrollChanged` event to `IViewPort` so the ViewPort can notify that a scroll is about to start.
* Notify more carefully on ScrollValue changes in ScrollRegion so that we don't get weird false vertical scrolls during user-initiated horizontal scrolls.
* Notify HexContent that the ViewPort content has changed when the Headers change, to properly update the blinky cursor.
* Do most of the animation work in the TabView. Add some extra UI elements around the HexContent/Header so we can render a copy of it right before scrolling, so that you can see the extra content that's being scrolled offscreen.
A common feature request is to see the raw hex of data that is formatted, either to better understand what the editor is doing or because the user does not trust that the format is correct. Besides putting this in the raw tool, there's also room for it in the status bar. Added it in so the raw bytes are easily visible / copyable.
change tracking was previously done in the model, but exposed in the ViewModel via a data format. The problem with this is that it meant that all changed formats were wrapped in a new format, which would require a lot of work to fully validate.
The new implementation is still in the model, but exposed in the ViewModel through a new property on the HexElement. The data formats are unchanged.
`Goto -> table` will currently adjust the data alignment to make the table rows line up in a useful way. However, getting the alignment back to normal after that requires doing another goto, which isn't intuitive.
make it possible to reset the alignment to default via a button.
Search Results headers were getting truncated because of the new logic to draw most data formats extremely quickly. Switching it to use a different data format that doesn't get the fast-draw treatment, so that it still looks correct.
* Don't offer table tool in context menu of loose text
* Yield buttons for IContextItems with commands
* Ctrl+Click on pointer out of range returns an error
* Auto-moving a parent table that's being extended notifies about the move.
these operations were previously in the view. They didn't belong there. There is now a simple helper object (IContextItem) that is used to transfer info from the ViewModel to the View, so the View can build up the menu based on directions from the ViewModel. This should make further ContextMenu extending easier, and now possible to test.
model should be able to create new text runs given possible start
locations.
ToolTray should be able to expose errors
PCSTool should be able to expose errors
PCSTool should give messages when the address is incorrect.
PCSTool needs a button to say "dude, this address has text"
Make the ViewModel code that searches for starting text locations in
a span public and static so that the PCSTool can reuse it.
- moved tools from the right side to the left side
- tool title is now part of the tool instead of part of the tools children
- tool has previous / next buttons
- fixed weird visual back/forth with the row of column headers not
knowing how tall to be
- buttons know how to look disabled now
-