* don't include " within the string when getting the value
* use `TryParse` instead of `Write` for converting the enum value from a string, since this is an all-to-one edit, not a pull-from-stream edit.
Now works right for capital letters that come after escape bytes
also fix random crash in ModelTable string recognition
also fi random assert from adding an anchor to a pointer
* python tool should support reading/writing tuples in tables
* writing `0` to a length in a table should update the children to be null (and delete the data)
* change an element count from 0 should create new data if the pointer is null
* creating new data via `@{` should update the length
* tested that this also works as expected with trainer teams (tpt)
* might have issues with ows, but they handle length differently
* 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
* ToString for model elements
* ability to read bit arrays as a number, sort of
* better error message when a field isn't found
* wrap text in python output
When showing a sprite in the table tool, we check to see what table index it is so we can use that index to find the palette. We need to do the same thing with tilesets. This means that GetPixels() needs a new parameter, the tableIndex, which can be passed in from any context that cares about it. Most of the time, getting the pixels doesn't care what the table index is. But now tilemaps can use this to figure out which tileset to use.
This method is used when calling TableStreamRun.DeserializeRun. There is always a parent table that owns the element. We need to know the parent in order to correctly deserialize child pointers.
* print elements in list as results
* change layout for wider content
* allow zooming in/out of script
* don't print "" around text from tables in the ModelTable
* allowing printing the address of an element in a ModelTable
* Add button in View menu to bring up the python section
The panel is currently tucked into the right edge of the app, not taking any space. It's an advanced beta feature. The python context only gets access to 2 special variables (editor and table), plus an override for the print function.
* 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
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.
This adds a prototype 'model' element for working with tables/table elements. If you're working with data in a known format, it provides an easier way to navigate through the data. Should be useful for scripts.