We can pre-compute the list of valid in-progress escape sequences and only compare the escape text against the set. This is much faster than verifying that no valid character starts with the current input.
* fairy script wasn't adding correctly
* right-click menus for inner-pointers weren't showing the right addresses
* appending a table and then updating the new pointer to point into a new table wasn't clearing the old pointer location from the old anchor
* search was causing thread-lock issues
* Display As Text was causing thread-lock issues
* python tool needs to update related fields when updating a table (structType, child table length from parent)
* fix character set issues
* fix crashes with mapper when tables don't have expected elements
* fix showing map options when there's no mapper
* improve handling of custom character escape sequences
* truncate text in tooltips
* Replace the static PCSString.Convert method with an instance method on a TextConverter that's owned by the Model. The TextConverter can know about different macros depending on which rom is being edited.
* Add macros to pcsReference.txt
Other programs let you edit the way text is interpreted using .ini files. Add a new pcsReference.txt file that lets users see the interpretation of bytes-to-text, the number of arguments used for different control codes, and allow them to change it.
It seems that CC is *not* a double-byte escape character, at least not as we're seeing it used in the FireRed text "this isn't the time" from Oak. Instead, it's a function-escape character, which means the code after it is variable length.
Merging lists takes a long time. Since we want the pointer sources to be sorted at all times, lets expose that detail and take advantage of it to allow us to merge-sort any time we combine tables together. This significantly increases list-merging speeds.
The multichoice didn't load right for a number of reasons
* The PCS has a double-escape character that I wasn't handling right.
* The check to see if a value is correct should verify that the value doesn't look like a pointer (high-byte on a 4-byte value should be less than 0x08).
* Had the wrong source for FireRed: typo
* Inner formats weren't being verified correctly for added tables
When copying text, don't copy all the bytes (in the case of a fixed-length string): just copy until the end-of-stream byte. This makes paste work better.