Added a bit of code to the MiserOptionsBlock control.
Rebuilt the category warnings on classic view (shows when categories between character and library don’t match) to avoid using a third-party control I no longer want to use.
Adjusted Updater to examine library data beyond simply *.gdf files.
Updated a bunch of the error messages in the GCALibrary object to be more standardized, and to provide line numbers for the lines causing problems during the loading and processing of data files. (Still more to do here.)
* Unified View
Rebuilt the newbie box in the Unified view (the green one that appears only when no characters are loaded) to avoid using a third-party control I no longer want to use.
Adjusted how the Unified view handles locking/disabling the display, so that the newbie box is readable even when the rest of the stuff is disabled.
* Data Files: #Verbose
I have added the command #Verbose to data files. This has only two options, On or Off, like so:
This allows you to turn on VerboseBookProcessing for a specific file, or portion of a file, for testing purposes, without having to have full-on verbosity for every file you’re loading. (Technically, this sets a different property, and does not affect the user’s VerboseBookProcessing setting at all; if they have that turned on, this will have no impact on it at all, and they’ll get the verbosity they desire.)
It should be considered polite to remove these directives from files before they’re made publicly available, as many users will find verbose book processing quite annoying.
* Data Files: #IF
I have added limited support for #IF blocks in data files. The structure is like this:
#IF want = value [THEN]
[#ELSEIF want = value [THEN]]
Notice that the [THEN] parts are optional; GCA will remove them, but they’re not necessary. Same with the IF in #ENDIF; GCA considers any #END to be the end of the current #IF structure.
You may nest #IF..#END blocks.
Note that there is *no* expression evaluator involved here. Support exists for a tiny set of very specific comparisons, which I’ll cover here. If you try anything else, GCA will consider the block FALSE and continue on, happily ignoring that section (and provide an error in the log if you have verbose book processing turned on).
The two types of ‘want = value’ comparisons currently supported are these:
1) fileloaded = “name of file”
This allows you to see if a file has been loaded before this one. The file currently being processed does *not* count. You must use the exact file name that GCA has loaded (ignoring path information, and ignoring case).
GCA supports the following aliases for ‘fileloaded’, so you may use whichever you remember: fileloaded, loadedfile, fileisloaded, loaded, bookloaded, bookisloaded.
“name of file” may be in quotes or braces.
2) traitloaded = “name of trait”
This allows you to see if a particular trait exists in the current library data. Anything loaded before this comparison is a possibly valid subject.
GCA supports the following aliases for ‘traitloaded’, so you may use whichever you remember: traitloaded, traitexists, traitpresent, loadedtrait.
“name of trait” may be in quotes or braces, and must be in the standard fully qualified format, with prefix and full name and extension, as applicable.