** Many of the changes in this update will improve performance and robustness. If I did them correctly. If not, we could see data corruption and/or an increase in odd behavior and crashes. **
I have changed how trait handling, tag lists, and the rollback of changes, are handled in the Edit Items, Advanced Edit Items, and Modifiers windows. This should make things more robust and less prone to damage from bad data.
I have adjusted the code that determines relationships between traits (which is what determines which traits are recalculated when you change something). Relationship determination should be done a bit more quickly now.
I have rebuilt a number of the parser routines to be more robust, which should reduce (hopefully eliminate) the instances where an errant open or close paren within braces or quotes was still being counted as a valid part of another container pair.
Given the change above, the %closeparen, %openparen, %closebrace, and %openbrace special variables mentioned in b 220.127.116.11 for @EndsWith and @StartsWith should no longer be necessary, if the corresponding characters are enclosed within quotes in the function, such as @endswith(“)”). The %quotes variable is still required, as there is no way to enclose the double quote character safely, but it’s also the least likely to be needed for anything. I’m leaving all of the variables available, though.
Vars are now run through the Text Function Solver during the trait’s calculation phase. This should speed things up when they’re used.
GCA will now read tag help information, for use in edit windows, from the tagdefs.xml file.
I changed a few things in various support routines to use certain Enums rather than Integers, which broke binary compatibility.