ThemePrefs, v0.7
----------------

ThemePrefs is a system for handling theme-specific preferences in a standard,
efficient, and predictable way. All you do, basically, is declare a table of
preferences and options and use GetThemePref(name) to get your preference
values as needed. This system will handle all disk I/O as well.

Additionally, it can work in combination with ThemePrefsRows to generate 
OptionsRows for all preferences, saving you (most of) the trouble with
integrating it into your theme. More on that later.

The prefs are written, using IniFile, into Save/ThemePrefs.ini, written under
the section corresponding to your theme name (if ThemeInfo exists, it will
use the Name field listed there; otherwise, it will use the folder name).

----------------------
Section 1: Declaration
----------------------

To declare preferences for your theme to use, make a table with named
tables in it; its name is used for the preference, and the tables hold 
the options for that preference. All you need to know for now is that
Default is required; for more options, check ThemePrefsRows.

After the table is declared, pass it to the function ThemePrefs.InitAll().
(If you're planning not to use any OptionsRows at all, you can just use
ThemePrefs.Init() to save some processing time, but seriously give the
ThemePrefsRows system a look before you disregard it.)

[code]
local Prefs =
{
	BoolPref = { Default = false },
	IntPref = { Default = 3 },
}

ThemePrefs.InitAll( Prefs )
[/code]

If your theme is "default", this will generate a ThemePrefs.ini like so:

[default]
BoolPref=false
IntPref=3

----------------
Section 2: Usage
----------------

You can access the value with ThemePrefs.Get(name) or GetThemePref(name):
both calls work identically. The return type will be based on whatever you set
it to, but the subsystem will always try number, then bool, then string, in
that order. Use true and false for bools, not 1 and 0.

For example, if you wanted to branch something in the metrics based on 
the value of BoolPref (which is a boolean), you could use the following:

NextScreen=GetThemePref('BoolPref') and "ScreenTrue" or "ScreenFalse"

If you want to set a preference value for some reason, you can use either
ThemePrefs.Set(name, value) or SetThemePref(name, value), but the point of
this API is to simplify and standardize prefs handling, so you really should
not need it. (Use ThemePrefsRows instead.)

-----------------------
Section 3: Localization
-----------------------

ThemePrefs has two strings that can be localized, to be placed under 
[ThemePrefs] in the appropriate language INI.

IniFileMissing - displayed when IniFile.lua is not found, which means
	ThemePrefs cannot be loaded from or written to disk

UnknownPreference - displayed when an attempt is made to read or write
	a preference that does not exist in the system. Uses %s for the
	name of the unknown preference.

---------------------
Section 4: Disclaimer
---------------------

Though this is working fine so far, it is still experimental! If you run 
into problems, or have suggestions, comments, questions, etc., please talk
to "vyhd" in #sm-ssc on irc.badnik.net, as it's his code to maintain; he 
hates subjecting other people to his code (and occasionally vice versa),
but will gladly address concerns that come up.
