Tuple autocomplete is weird, because it happens in stages. This is different compared to other things, where choosing autocomplete always finishes the cell.
Using this in the tests, it becomes clear that the autocomplete really just wants to expose a new line to replace the input line. Update the IStreamRun interface to match.
* fix a context menu test that broke when I refactor the "Add New" option in the context menu
* implement autocomplete options for single element streams
The HexContent doesn't need to create a whole UI-that-watches-ViewModel-for-changes when all it wants is the bitmap source. Introduce a new lighter-weight method that doesn't do all the property changed registering so that we don't have the viewmodel hold on to countless view objects here.
Clover does some dirty things with the type names to add Fairy type, which makes the type map too long and it overlaps the type chart. I'm ok with this failing: it's clover's fault.
copy for a type chart needs to not only copy the data, but the format of the data needed for pasting.
This is already the case, almost: we copy the table format for the stream table. However, adding the stream table won't work correctly unless we also paste the end token. Otherwise the initial length of the stream table will be wrong.
Update existing tests that use the !00 metacommand: the !00 metacommand should only change the data if the data is unused, and should only cause the model to stop the edit if the data is used.
Don't adjust the selection after a double-click-follow-link operation. Only adjust the selection after a double-click-select operation.
Inner Pointers were not previously correctly tracked during cut/paste operations. There needed to be some way to say that an address was attached not only to a name that does not exist, but to a specific index of such an array. The answer is to store the array offset in the bytes that are left behind, since the value of those bytes does not matter.
* Update autosearch test to care about the new tuple format instead of the PLM format.
* Update the tuple parser to understand that enums can have '.' in the middle of their name, which should not be counted towards the bitlength of the tuple segment, but are part of the enum name.
2 failing tests now pass, plus 5 more passing tests. Tuples are segments-within-segments, so they act as a second layer of list information within the table. They can be checkboxes, numbers, or enums.
Import from table should respect the selected sprite/palette pages
Whenever the user moves the mouse over the palette, refresh the copy/paste commands.
* ViewPort needs to be able to understand thumb directives. This means that .whatever must be interpreted as a directive and not as a constant. So constant names are required to *contain* at least one dot. For example, `.some.number`.
* When reading data that's been pasted in, if you find a `.thumb` directive, read until you find a `.end` directive, then interpret that whole thing as a thumb script, all at once.
* allow the `.end` directive to appear in thumb code
* `.align` directives should work in the viewport. Other directives that appear towards the top of thumb scripts before the `thumb` directive should be ignored.