Pasting raw bytes is useful in a few situations. But pasting over a pointer isn't safe. So any time you paste over a pointer (or pointer in a table), paste-raw-bytes will clear the formatting. Other than that, it's an easy way to paste arbitrary data, but can cause issues if you're not careful, such as pasting over compressed data.
When pasting text or using a .hma file, allow use of python to access various options inside the editor, such as the table tool Append-to-table feature
Don't CascadeScripts right away. Instead, wait until the model is done loading, and _then_ cascade scripts. RefreshBackingData at the same time so as to refresh the cells on the screen.
Visibility mode changes the coloring of bytes to help certain bytes stick out more clearly. Previously, it only worked with a single byte. Now it's been more fully integrated into the model, and can work with any number of bytes. Note that it only cares about bytes that are on screen, so it won't find byte chunks where part of the chunk is off screen.
Users need a way to distinguish between when a save is needed for actual data changes to their rom, vs when a save is needed because they've made changes to their metadata but not their rom.
This is useful if you want to view multiple locations in the same rom at the same time. This was previously possible by following a pointer into a new tab, but often the thing you want to see isn't available from an onscreen pointer, so it makes more sense to open up a new goto.
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.
ViewPort should have IWorkDispatcher as a constructor paramater, not an .Edit parameter. Optional parameters that make the program act different between test mode and real mode are bad.
For the same reason, this should be a required parameter. But changing the constructor of ViewPort is hard, since so many tests use it. This is an initial refactor to make less tests use the constructor directly.
Previously, the creating a new ViewPort loaded from 2 text files and creating a new HardcodeTablesMoel loaded from 1 text file. This is a lot of parsing!
Refactor to do the parsing once, in the EditorViewModel, using a Singleton class to hold the non-editable loaded data. Inject that data into the appropriate structers later on.
To prevent massive refactoring in the tests, not every ViewPort needs to be given a Singletons instance. Instead, allow a ViewPort to still do its own parsing. However, BaseViewModelTestClass has been updated to make this work for a majority of tests, along with changes to AutoSearchTests's fixture and several of the Setup methods that are used by multiple tests.