The Configurator


Contents

  1. Introduction
  2. Users
    1. Getting Started
    2. Updating
  3. Technical Information
    1. General
    2. Using TSZ / zipped skins
    3. Command Line Parameters
    4. Profiles
    5. Themes
    6. Plugins
    7. Changing Directory Names
    8. Trillian Advanced Settings
  4. Skinners
    1. Why should I use The Configurator for my skin?
    2. Simple Getting Started tutorial
    3. Configurator.ini Reference
    4. NSIS Sample Code
    5. Trillian Advanced Settings
  5. Troubleshooting
  6. Thanks / Credits
  7. Version Information

Introduction

"The Configurator? What's that?"
Well, first it is NOT a skin generator. That's left for other people. Also, it does not arbitrarily insert code in skins (like emoticon installers). The skinner can build their skin however they want and give the user whatever options they want. This just helps with the tedious programming end.

"What is The Configurator?"
It's a generalized skin configuration utility.
It's a common place where users can configure their skins.
It's the SkinChooser on steroids.
It's thousands lines of code so skinners only have to write tens of lines.

"No, really, what is The Configurator?"
OK, you caught me. The Configurator is really an evil cyborg from the future who has returned to the past to reconfigure the universe so it is ready for total computer domination in the year 2020.

Useful links: The Configurator's Homepage, Mailing List, Feedback Page

Back to Contents


General Users Information

Getting Started, by CPAGirlNC

What is The Configurator (TC)? Tom calls it "skin chooser on steroids." :D That's actually not too far off. It is a one-stop place to change certain elements of skins which have a configuration feature. Even skins that have no "built-in" configuration program will show up in TC, and at the very least, the IM window text colors can be changed. TC also allows you to change the skin for any of your Trillian profiles, even while Trillian isn't running. You will, of course, have to restart Trillian if it is running for the skin to change.

When you open The Configurator for the first time, your current skin will be displayed. The Skin menu lets you select another skin to configure. In the skin menu you can also change the Trillian Profile. Different skins have different features enabled in TC. SETi is currently the only skin that fully uses all of TC's fetures. Microscopic Open Edition and Aikon3 are also two skins in development that allow you to make many settings changes from within TC.

Some skins may have (ZIP) or (TSZ) at the end of their names in the menu. This means that these are skins in ZIP or TSZ files. The Configurator allows you to keep your skins zipped up until you need them, unzipping the skin when you set it as the current Trillian skin. You can configure these skins just like any other skin. (Any configuration done on a TSZ / ZIP before setting it as the current skin gets saved into the ZIP file. A backup of the original file is made with a .TCRestore extension, so you don't lose it.) Once a zipped skin is set as the 'current skin', it will appear in the skin menu without the (TSZ) / (ZIP) the next time you start TC. Changes made to that will be saved for your current Trillian profile only and won't be saved to the compressed skin.

SETi uses the "skin profile" feature that is unique. Much like Trillian has different profiles which can be saved and switched, SETi (along with TC) has limitless combinations of skin settings (themes, emoticons, etc.) that can be saved as a skin profile. Skin profiles are saved and appear as separate skins in Trillian's skin chooser. With most skins, there is only one skin profile, so when you make changes and save, previous settings are overwritten.

In some skins, "skin plugins" are available. These are much like Trillian plugins; you can select some or none. Skin plugins include emoticon sets, sound sets, avatar sets, and others. With the skin plugin system, you can easily choose the skin features you want.

On the General tabs of TC, you can begin to configure the skin. Most of the fields are self-explanatory and vary from skin to skin. (Skinners create these options in a file called "configurator.ini".)

Many skins have different color themes. The Themes tab of TC lets you change message window text colors, the current theme selected and the preview that shows up in Trillian. The other Theme tabs (like Theme 01) let you change theme specific settings like contact list font colors and attributes. These tabs only show up in skins that have enabled them.

The Plugins and Global Plugins tabs are also only available for skins that have enabled them. You may simply click on the listed plugins to select them. If you click on conflicting selections, (for example, you click two emoticon packs), the topmost one will be the active one. Global Plugins are those that can be used with many skins. Global Plugins profiles can be saved and invoked for use with different skins.

Once you've made your changes to your desired skin, you'll want to preserve the changes by clicking the [OK] or [Apply] buttons. If you've completely messed things up, you can click the [restore] button to restore the skin to the "factory settings". (If you use this button on a skin that hasn't set the default settings already, TC will create default settings files for you so you can restore them later.) NOTE: if you've used the 'set current settings as defaults' menu option, it will restore the settings to what they were at that point.

If your saved skin is not the current skin in Trillian, you can select it for the next time you run Trillian by going to Skin->Trillian profiles->Set current skin. Likewise, you can work with or select a skin in any of your Trillian profiles from this menu by selecting the profile first, then selecting the skin you want then using Set current skin.

NOTE: If you're on win98/ME and Trillian 0.7x, Profiles and Global Skin Plugins will NOT work. If a skin supports either of these, use only the (default) profile and choose (none) in global plugins. This is a Trillian bug.

Step-by-step instructions for your first time

Run The Configurator
This can be usually found in your start menu under Trillian -> TheConfigurator
Go to the skin menu and click Trillian Profiles then your profile
If you don't know what Trillian profiles are, don't worry about this step. Usually you can skip this step because it will automatically load the last Trillian profile used. (You only need to do this if you use multiple Trillian profiles and you want to 'set the current skin' on a profile that wasn't the last one used in Trillian.)
On the skin menu, select your skin.
Configurator enhanced skins are on the main skin menu. Non-Configurator skins are under Skin -> Other Skins. If the skin you want to edit is already displayed, you can skip this step.
To set this skin as the current skin for Trillian, select Skin -> Trillian Profiles -> Set Current Skin
(You can also press F8 to do the same thing.) You can skip this step if you are not changing the current skin.
Change any configuration settings you want to edit, like text colors, etc.
Click [OK] to save your settings and exit
If you just wanted to set the current skin without configuring, you can click [Cancel]. If you want to make more changes or make changes to another skin or another profile, just click [Apply] to save your settings without exiting.

Back to Contents


Updating

For updates, go to http://tometheus.com/Trillian/configurator.php or choose "help->about" in The Configurator and click on 'check for updates' (This will show you your current version information on the webpage.)

Usually it will be fine to just install a new Configurator.exe over the old file. Be sure to check for updates to all your plugins though.

If a skinner supplies a new configurator.ini for their skin, BE SURE TO RESAVE ALL YOUR SETTINGS/PROFILES of that skin. (Even the (default) one.) This updates your old config files to the new format. They should work correctly without updating, but they may cause unforseen problems in the future.

Back to Contents


Technical Information

General

The Configurator reads the settings from whatever profile is currently selected.

The Configurator should work with all versions of configurator.ini files older than it is.

Similarly, if your configuration is corrupted, just delete/rename it and run the configuration utility and it will regenerate one.

Selections on the plugins lists function essentially like the default behavior for list selections with one change and a few additions. The change is that I switched the leftclick and the ctrl-leftclick behaviors because non-techie people were having difficulty figuring it out. (See the PLUGINS section below for more information.) Some plugins may conflict with other plugins. In order to overcome this, if you select ones that clash, the highest one up in the list will take precedence.

Again, plugins, profiles, and themes automatically show up in The Configurator, so when you download them, just run the utility and there they are.

Back to Contents

Using TSZ / zipped skins

After version 0.22.1, The Configurator supports using zipped skins. Users on Trillian 0.7x and 1.0 can now take advantage of Trillian Skin Zip (TSZ) files. Also, TC extends the functionality to .ZIP files, so older skin distributions are still useful without renaming.

Basically all a user needs to do is copy a ZIP or TSZ skin file to the %Trillian%\skins folder, then launch TC to select the skin.

This is done by selecting the skin under the Skin and Skin->Other skins menus. If you only use one profile in Trillian, you can then press F8 to set that skin as the current skin for Trillian. If you use multiple profiles in Trillian, be sure to select the correct profile under Skin->Trillian profiles.

For Trillian 2.0, using a TSZ file, The Configurator sets the current skin as the TSZ file, which Trillian knows how to handle. For other versions of Trillian and ZIP files, TC creates a temp_skins_directory_TC[Profile] folder when you set this skin as the current skin. After this is done, all changes under those circumstances are made to the extracted skin, not the original file. Any changes made before setting the skin as the current skin, or for TSZ files on Trillian 2.0 are saved to the TSZ / ZIP file itself. TC saves a backup of the original file to a TCRestore file. You can restore this file by hitting the [Restore] button while it's still in compressed file edit mode. (NOTE: these settings aren't affected by the 'set current settings as defaults' menu option.)

Back to Contents

Command-line parameters

The Configurator has a few command line parameters... Don't know how to use command line parameters? Right-click on The Configurator, (configurator.exe) go to 'create shortcut'. Right-click on the shortcut and go to 'properties'. At the end of the "Target" field, put /showhidden, or whatever parameter you want. Note: many of the parameters can be combined, for instance

configurator.exe /skin SETi /profile "Tom's Profile"
/showhidden
show any themes / plugins that were hidden using the "!" at the beginning of the file name. Also shows controls and panels that have the hidden flag. This is useful if you need to put configuration options in your skin that only theme designers need to worry about. (See Aikon3's config as an example. Juz wanted to keep end users from modifying the colors easily.)
/globalplugins
Launches The Configurator in Global Skin Plugin configuration mode
/skin "skinname"
Launches The Configurator with a specific skin loaded
/profile "profile name"
Launches The Configurator with a specific profile loaded (most useful when combined with /skin)
/trillprofile "profile name"
Launches The Configurator with a specific Trillian profile's current skin loaded.
/debug
Launches The Configurator in debug mode. Basically for testing purposes only if something keeps crashing it. Writes to TCDebug.txt.
/ini "inifile"
Launches The Configurator with an alternate .ini file.

Back to Contents

Profiles

Unfortunately, profiles do not work in Trillian 0.7x under windows 98/ME yet. This is a Trillian bug. However, the (default) profile should work fine.

To add a profile, simply type the name you want in the profile box in The Configurator. When you save it will save under that profile name.

To delete unwanted profiles, select the profile then press the [del] button.

To modify a profile, select the profile in the configuration utility, make your changes, then click [OK] or [Apply].

Profiles store settings files for your settings... each profile can store an entire set of configuration information (i.e. text colors for each theme). They also store enough extra information to make a complete skin in the skinchooser. (i.e. trillian.xml and desc.txt files) See the Changing Directory Names section below for information on the directory names.

Since profiles all store separate configuration information, you will have to resave all profiles when you want to enable a new plugin in all profiles.

To share a profile with a friend or take your settings from one computer to another, all you have to do is copy the profile directory (only about 40 kb). It has all your configuration information: colors, settings, and plugins enabled.

From the skinning standpoint, in order to enable profiles, all you need to do is add &SkinDir; and %SkinDir; to all of your file references except for the config files (mainconfig, theme config, colors.ini). You can display the profile name in skinchooser by setting a name like desc.txt name=Myskin - %profile% profile Also, you can set a custom description that gets set for profiles by setting desc.txt desc profile.

When setting the SYSTEM entities with %SkinDir;, be sure to force the parser to evaluate it by placing it in another entity, replacing < with &#60; and % with &#37; then evaluate the wrapping entity.. So, for <!ENTITY % dtdentity SYSTEM "xml\filename.xml"> I'd have:

<!ENTITY % ENTdtdentity '
   &#60;!ENTITY &#37; dtdentity SYSTEM "%SkinDir;xml\filename.xml>" >
.'> %ENTdtdentity;  <!-- %dtdentity; can then be used to insert the file elsewhere -->

Note: You can have a bunch of entities evaluated in one single wrapper entity like this. Also, after the first one, you con't need to replace the rest of the <s, since you only need to force the parser to evaluate the entity once.

After you've done that, just set EnableProfiles=1

Back to Contents

Themes

Themes are variations on a skin. For instance, a skinner could have alternate colors, alternate graphics, etc. It is really up to the skinner to decide how to implement themes. For instance, Aikon3 themes are basically just color changes on the Aikon3 look, but Stixe themes are essentially new skins. (such as Whistler, Luna, etc.)

A skinner tells The Configurator where theme files are located by giving it the ThemeConfig name in the Configurator.ini file. For instance, a skinner could have ThemeConfig=mods\%theme%\theme.dtd The Configurator then looks for all of the first subfolders of mods\ that have theme.dtd in them. Then The Configurator populates the list with all of the matching folders.

Another variation would be to have individual files set the theme names. For instance I could have ThemeConfig=xml\theme_%theme%.dtd and TC will look for all files in the XML folder named theme_*.dtd.

After v0.21, The Configurator supports themepacks. TC will search one more directory down for the theme config file. That way a skinner can group themes by color, style, etc.

If a theme name begins with '!', or '.', or the name is 'all', The Configurator leaves it out of the theme list. '!' and '.' are 'hidden' themes. Ones with '!' will show up in the list when 'ShowHidden' mode is active. 'all' folders are intended for putting default graphics that are used by all themes.

A skinner could set the colors of The Configurator based on colors found in the theme so that the end user can get a feel of what the skin will look like in their system. Also, a skinner should supply a theme preview image for the user. (See the preview reference)

Version 0.21 added a themeinfo file along with the tooltip for the theme control. To use this, create a file the same as your theme config file, and add .themeinfo to the end of the filename. So, if my theme config file is themes\blue\theme.dtd, my themeinfo file would be: themes\blue\theme.dtd.themeinfo . It is a normal .ini file with [themeinfo] as the main section. It should look something like this:

[ThemeInfo]
Author=JoeBob
Name=Purdy theme
Description=Ain't it purdy LuluBelle?
Author=JoeBob
Author of the theme
Name=Purdy theme
Name of the theme. Shows up in the tooltip and will later be the name in the theme selector.
Description=Ain't it purdy LuluBelle?
Description of the theme.

Back to Contents

Plugins

Selections on the plugins lists function essentially like the default behavior for list selections with one change and a few additions. The change is that I switched the leftclick and the ctrl-leftclick behaviors because non-techie people were having difficulty figuring it out.

LEFTCLICK
adds/removes current list item from selection
CTRL-LEFTCLICK
Clears selection and selects/unselects current item
SHIFT-LEFTCLICK
Selects a range of entries from your last click
CTRL-SHIFT-LEFTCLICK
Adds range of entries to current selection
DOUBLE-CLICK
Launches webpage
RIGHTCLICK-LEFTCLICK
Clears all selections
SHIFT-RIGHTCLICK-LEFTCLICK
Resets selection to original selection
RIGHTCLICK
Brings up the context menu where you can also do many of the above things.

NOTE: Do NOT delete or rename the "default" plugin directory!

Plugins make use of hooks that are placed in the skin to allow things to be inserted. All hooks should have defaults defined elsewhere later in the skin so that the skin works smoothly. (For example, I use the %plugins%\default\main.dtd file.)

Plugins require plugin.ini (or the older desc.txt). They also use main.dtd, main.xml, and prefs.xml files, but none of these have to be in the plugin. These files in turn can reference other files. Check out the sample plugins to see how to reference filenames.

MAIN.DTD: Usually defines entities that hook into the skin. (You can define any .dtd-level things you want here for your own use in the plugin.)

MAIN.XML: inserted into the main <TRILLIAN> level.

PREFS.XML: inserted into the <PREFS> level

PLUGIN.INI, looks like this:

[Plugin]
Variable=MyPlugin
Description=This is My Plugin
Priority=13
WebPage=http://my.webpage.com
Config=config.exe, .ini, or stixe
Author=Created by
Port=Ported by
About=basic readme file with extended information .txt or .html
TrillVerMin=(default: 0.74)
TrillVerMax=(default: 256.0)

Notes:
1: Variable (used in <!ENTITY> references for directory names, etc)
2: Description of the plugin (used in the configuration utility)
3: priority level (1 to MAXINT) This allows one plugin to supersede another. working guideline: Trillian pro 1.0 plugins will be 1000+, 2.0 plugins will start with 2000, etc.

(Webpage and Config can be left out, but the others are necessary.)

With v0.19, Config can be a Configurator.ini file, which will launch a separate instance of The Configurator with the plugin's configuration loaded up... Just create it like a normal skin config file. Be sure to disable desc.txt and other features you don't use. Using "stixe" as the config will launch the advanced settings window. As an example, one could put plugin.ini here and then go on to include configurator.ini style settings in the same file.

Version 0.19+ allows the skinner to indicate minimum and maximum Trillian versions required. TC will automatically hide plugins that don't fit the user's version of Trillian. (Unless they're using showhidden mode.)

In the future, I'm planning on adding skin version required, skin version obsoletion, other plugin required, and entities used here, but for now these are all that's needed.

The directory name can be whatever you want. When the configuration utility runs it will save the directory name automatically in case someone wants to rename a plugin directory or something. The only exception is that directories starting with '!' are hidden in the plugin list.

The 'priority level' is used to help The Configurator decide what to do when there are clashes. If plugins try to use the same hooks, the plugin with the highest level is the one that gets used. (This makes use of a feature in XML where earlier defined entities take precedence over later ones so that people can use global .dtd's but customize elements for their own application.) So for instance, if we have 2 emoticons sets that will cause problems if used simultaneously, we set them to use the same hook that way only the one with the highest priority that the user chose actually gets inserted. The default plugin has a priority level of 0.

Use the following conventions when defining filenames so they work with profiles and the flexible directory naming architecture...

<!ENTITY thisentity "&SkinDir;plugins\&modpack_<VariableName>;\<filename>">
<!ENTITY % dtdentity "&SkinDir;plugins\&modpack_<VariableName>;\<filename>">
<!-- &thisentity; and %dtdentity; can then be used elsewhere -->

for SYSTEM entities you have to be a little trickier... Not sure if this is a Trillian or expat or XML glitch that you have to do SYSTEM entities like this, but this works.

<!ENTITY % ENTthisentity '
   &#60;!ENTITY thisentity SYSTEM "%SkinDir;plugins\%modpack_<VariableName>;\<filename>" >
'> %ENTthisentity; <!-- &thisentity; can then be used to insert the file elsewhere -->

--== and ==--

<!ENTITY % ENTdtdentity '
   &#60;!ENTITY &#37; dtdentity SYSTEM "%SkinDir;plugins\%modpack_<VariableName>;\<filename>" >
.'> %ENTdtdentity;  <!-- %dtdentity; can then be used to insert the file elsewhere -->

Back to Contents

Changing Directory Names

The Configurator's directory, plugins directories, and color theme directories can all be renamed whatever you wish. However you must resave all profiles -- including the '(default)' one -- in order for the changes to not cause a crash. Also, you'll have to move plugins/mods/themes to the new directory when you download them.

Changing the directory name of the themes changes the name of the theme accordingly in the configuration utility. (In the future I'll have a theme.ini file or something to give extra information like author, etc.) Changing the directory name for the plugins does not change the plugin name, as that information is in the plugins\<plugin>\plugins.ini file.

Profile directory names can also be changed to whatever you want, but for the profile to still be available to The Configurator, the name must start with '_profile_'. (i.e. the default SETi directory is 'SETi', so the Aqua profile is: 'SETi_profile_Aqua'.) You can lock a profile so it can't be changed in the configuration utility by changing the first part of the name from Skin_profile_* to something else, like Skin_lockedprofile_*

Back to Contents


Skinners Information

Why should I use The Configurator for my next skin?

You may be asking yourself, "Why should I use The Configurator for my next skin?" I hope this helps clear it up a little :D

The advantages to you as a skinner for your next skin:

Skin download size
Since TheConfigurator is a centralized config utility, you don't have to send a config utility with your skin... only a .ini file. I was able to replicate MdXP2's config functionality in ~200 lines. (Configurator.ini=6kb; MdXP Config Utility.exe=332kb)
Development time
I was able to make the Configurator.ini file for MdXP2 in a couple of hours... enough said :D
Ease of development
No programming skills needed :D
User learning curve
a common config utility means users don't have to learn a new utility with each skin
Config utility Updates/bug fixes
... You don't have to worry about it, I do it :D
Adding config options
Just add a couple of lines to the .ini file
Extra features
TheConfigurator allows skinners access to features like skin profiles (like in the SETi skin), skin plugins and global skin plugins. (Where users can save a configuration for emoticons, etc., etc and have the settings carry over to all skins that use global plugins) (Similar to Trillian 2.0's advanced options for stixe skins, but allowing more types of plugins and working in .7x / 1.0 also.)

Back to Contents


Tutorial

So, you want to start a configurator for your skin? The following is a tutorial to get you started.

(You may want to open up the microscopic or SETi Configurator.ini just to look at.)

First, you can create a .bat file called "configurator.bat" in your skin's folder so people can use it to launch The Configurator. You should have already picked a short skin name for your skin. (Maybe an acronym of the full name or something.) Put that at the end of the command line. This is all you need in the .bat file:

@"..\Configurator.lnk" "MySkinName"

If your skin is going to be used in Trillian Pro 2.0, put "..\Configurator.lnk" at the end of the desc.txt for your skin so that it can use the advanced features button to launch The Configurator. (Note this behavior is preferred after configurator v 16. Previously you would call ..\configurator.bat, but this method does not leave a console for the user and will work if the user has disabled .bat execution.)

If you make an installer like NSIS for your skin, you can actually copy the ..\configurator.lnk to the skin's folder. (Also, you can check to see if the user has The Configurator installed in the first place and give them the option to donwload it.) (See NSIS Sample Code)

Next, make a file called Configurator.ini in your skin's main directory. At the beginning, make the following entries:

[Configurator]
ShortName=MySkinName

ShortName is the name that is used elsewhere to recognize variables and stuff... So, for instance, the ShortName for SETi is 'SETi' whereas the full name is 'Search for an Extra Tiny Interface'. This is the same name that was used in the batch file above.

This is all for this section right now. Further detail can be found in the Reference.

Next, you'll have a section called:

[MySkinName]

This section sets basic Configurator options for this skin... (This is the name you set above for ShortName, remember) (In the future you will be able to have multiple configurations in one file, that's why you use this.)

In a .ini file, options can appear in any order as long as they're in their correct section (i.e. [MySkinName] for these)

Now we have enabled flags for different things... '1' means it's enabled, '0' means it's disabled.... for now you'll want to disable all of them except the 'text' one... (so all '0' except that one) when you enable these in the future, you can just get rid of the variable because they all default to enabled... except text, which defaults to being the same as 'Theme'...

EnableMain=0
Main config settings
EnableTheme=0
Theme config settings
EnableText=1
Text colors settings (colors.ini)
EnableProfiles=0
Skin Profiles
EnablePlugins=0
Local skin plugins
EnableGlobalPlugins=0
Global skin plugins

So what the above would do is disable all settings options except the ability to set text colors. Don't worry about the others yet, we'll turn them on later as we go along.

The Configurator automatically allows a user to set the preview bitmap and sets the skinnname, etc in the desc.txt file for your skin. If you want to disable this functionality, use

desc.txt enable=0

Skin Profiles will not work if you use this.

Now let's set where to find our text colors (colors.ini) file. ( Civillians colors.ini reference )

colors.ini=path\to\colors.ini

It will insert the theme name for the %theme% variable, when you get themes enabled... but for now you'd probably have something like colors.ini=xml\colors.ini

Once you've done all this you can launch The Configurator to see your results... You now have your configurator manually set up to the stage that TheConfigurator does automatically for the 'non-configurator' skins... but you've laid the groundwork for doing the more complex things. (and you have the ability to customize the things that TheConfigurator sets automatically for those others)

There are many more options you can set in this section, but for the sake of the tutorial, I'll leave those in the Reference. (You can customize The Configurator's look by setting colors, fonts, logos, long display name, description, etc, etc.)

So here's what our sample Configurator.ini file looks like.

[Configurator]
ShortName=MySkinName

[MySkinName]
EnableMain=0
EnableTheme=0
EnableText=1
EnableProfiles=0
EnablePlugins=0
EnableGlobalPlugins=0
desc.txt enable=1
colors.ini=path\to\colors.ini

Once you are satisfied with all of the colors and settings, hit the [restore] button and The Configurator will create *_default* files for all of your settings files... Then if a user changes things, they can hit [restore] to reset everything back to the 'factory settings'. (If you want to change the settings later, just delete the _default files that you want changed...) (NOTE: it does it for all themes at once.. and since you are the skinner and doing this once, just ignore the 'are you sure' message.) Another method available since 0.23 is the 'set current settings as defaults' menu option. This will reset all of the _default files to the current state.

Back to Contents


Configurator.ini Reference

[Configurator] section

ShortName=MySkinName

That's essentially the only entry in the [Configurator] section for now. (in the future I'm going to make it so you can specify 'subskins' and possibly other things. MySkinName is the name that's used in all of the sections below and is listed in the skin menu in The Configurator.

NOTE: After v0.19 You can also use another .ini file (i.e. MyCustom.ini) and have the user launch the configurator with the command line parameter "/ini MyCustom". (You can create a shortcut to it when they install the skin or use a .bat file to launch it.) Be sure to change the name of the [Configurator] section to [MyCustom] below. This will allow skinners to make customized .ini files for themers, simplified, etc. Only skins with a MyCustom.ini file will show up in the main Configurator skin list. Conversely, the MyCustom configuration will not show up in a normal instance of The Configurator -- In other words, the [Advanced >>] button in Trillian WILL NOT work for these configurations. However, with this a skinner could in theory say "I only want my skins to show up" and give all of his skins a special config file for TC to search on. (then make duplicates as configurator.ini files so people can see it from the default mode also.) This also allows you to have a custom global plugins folder for these configs.

Plugins can tell TC to use a different set of defaults by including the following in the main section. (TC automatically checks for a 'Variable' first to see if it's being called with the plugin.ini file, then checks this.) This makes the LongSkinName default to the plugin description, all plugins, preview, themes are disabled and a grey color scheme are set as defaults.

Plugin=1


[MySkinName] section

In the reference, when it says there is a default behavior, that option can be left out if you choose. Most of these don't actually need to be set in your Configurator.ini file, but the option is there if you want it. Also, options can appear in any order as long as they are in their correct section (i.e. [MySkinName] for these)

If you want to comment out an option, just put either # or ; in front of the variable name. (All this does is just change the name of the variable so TheConfigurator doesn't recognize it.)

ConfigVer=<21,minimum version>

Probably the most important option to have in the [MySkinName] section is the ConfigVer. This tells The Configurator what version your skin was designed for. If the end user has an older version TC tells them they should upgrade. This also tells TC how to treat your config if things change between versions. For example, versions before v0.15 defaulted to having all tabs enabled unless you explicitly disabled them. Version 0.17 and above default to disabled tabs if you do not explicitly enable them. After v0.21 this supports the new major.minor.bug.build version format. Prior to that it used the old format (i.e. v0.19 --> 019) In order to tell TC you're using this format (and tell older versions to upgrade), put '21,' (or greater) in front of the version... i.e. ConfigVer=21, 0.22.4.

LongSkinName=a long version of the skin name if you want (defaults to ShortName)

Configurator feature enabling:

EnableMain
Main config settings
EnableTheme
Theme config settings
EnableText
Text colors settings (colors.ini)
EnableProfiles
Skin Profiles
EnablePlugins
Local skin plugins
EnableGlobalPlugins
Global skin plugins
DisablePreviewTab
If, for some reason, you don't want the users seeing the skin preview if you have themes and text disabled.

('1' means it's enabled, '0' means it's disabled....)

The following options are available for what gets written to the desc.txt file. Most are just logic toggles (1=true, 0=false).

desc.txt enable
Does TC try to write desc.txt (1: yes, 0:no)
desc.txt name
name that is written to the desc.txt file
desc.txt desc profile
The skinchooser description that gets written on skin profiles
desc.txt update preview
Does TC change the preview images (1: yes, 0:no)
desc.txt trillian version
The trillian skin version, (default: 700)
desc.txt advanced tab
(v019) Create a customized advanced tab setting (i.e. "stixe")
desc.txt stixe advanced tab
Advanced settings option (0: 'configurator.lnk') (1: 'stixe')

desc.txt enable is also aliased to enable desc.txt and disable desc.txt for older versions of The Configurator

desc.txt name (old alias: SkinChooserName) is the name that shows up in the SkinChooser. You can include variables in it like %LongSkinName% , %theme% %profile%, etc... i.e SkinChooserName=%LongSkinName% - "%profile%" Profile - "%theme%" Theme There's also a %version% but it's a little tricky to use so we'll ignore that for now. (Defaults to using the name that is already in desc.txt)

desc.txt desc profile defaults to: "A profile of the %ShortName% skin. To set preferences select the '%profile%' profile in The Configurator. If Trillian doesn't load, try the (default) profile." If you change it, try to indicate to the user that it is a profile, not the main skin. For non-profiles, TC just uses the description that's already in desc.txt.

Description0=this is the description that's listed 
Description1=at the top of The Configurator in the logo area.
   ...
Description9=(%variables% can be used)

Rather than using Description1, etc, you can put all lines in Description0 separating lines with '%n%'. i.e. for Microscopic Pro:

Description0=%LongSkinName% Trillian skin - %theme% theme%n%A tiny skin for Trillian.

SETi does this way instead

Description0=Change settings for SETi Trillian skin 
Description1=by Charlie Rhodes and Tom Elmer  
Description2=(Click here to visit webpage)

Default behavior: Description0=%ShortName% Config Utility

Webpage=(... not necessary but fun :D )

Click on the title banner or menu-->help-->skin's webpage to go here. (Default behavior is no webpage.)

The following sets the style of buttons used in The Configurator.

ButtonStyle=0
Orignal style of flat rounded buttons.
ButtonStyle=1
(default) Raised rounded buttons with a shadow.
ButtonStyle=2
Windows style buttons (after v0.23)
MainFont=font face
MainFontSize=size

This is the font you want The Configurator to display in... it defaults to face=MS Sans Serif, size=8.

if you want to display a logo in the banner...

LogoLf=Left Logo .BMP / .PNG filename
LogoRt=Right logo .BMP / .PNG filename

For now, The Configurator only handles .BMP and .PNG files, and they should be less than 50 pixels high. (PNG support was added with v0.22) These default to using no logo. You can also use LogoLf=%icon% and %icon2% as the name here to use The Configurator's logo.

Now, you can set different foreground/background colors... they default to using a black and white color scheme (like the non-configurator skins use)

MainFG
Main foreground color of The Configurator
MainBG
Main background color of The Configurator
DisabledFG/DisabledBG
Colors of disabled tabs
GroupFG/GroupBG
Colors of grouped elements/out of focus tabs
ListFG/ListBG
Colors for the popup lists and background of the 'text colors'
LogoFG/LogoBG
Colors of your logo banner

For the values of these, you can use a color RGB triplet, like for cyan foreground text on my disabled tabs: DisabledFG=0,255,255

...or a greyscale singlet like for black logo text: LogoFG=0

...or, you can use the special variable %text% to set a color to the text color defined in your colors.ini file.

So, for example, if I want my lists to show up with a white background and the color of my text as the foreground, I have:

ListFG=%text%
ListBG=255

...or you can also use a color variable name defined in schemes later... This allows you to make the colors change when a person changes themes or sets colors differently. So if I have a color Parameter00Name=FGRed,FGGreen,FGBlue defined later, I can use "GroupFG=FGRed,FGGreen,FGBlue" here. For now ignore this, since you don't have any colors built yet, just know it's there :D

(NOTE: Since ListBG is used for the background of the text colors, ListBG should usually reflect the background colors of your message windows.)

Default behavior: looks for 'colors.ini' in the same directory as your ThemeConfig. i.e. colors.ini=mods\%theme%\colors.ini

Lastly, we have our skin's preview file. You can set the preview here, but disable writing it to the desc.txt file, that way you can keep the skinchooser preview the same, but allow the users to see what different themes look like. (Note: in most places, 'Theme' and 'Scheme' are interchangable.) TC v0.22+ supports PNGs for the previews, but Trillian doesn't. Be warned.

ThemePreview=path\to\preview.bmp(.png)

i.e. for BlueTurtle I have:

SchemePreview=mods\%scheme%\%scheme%Turtle.bmp

This defaults to using the preview that's listed in your desc.txt. Also, you can use this to give your users a theme preview and disable it changing the desc.txt's preview. You can either disable writing to the desc.txt entirely or just disable the preview image itself. (See above)

After v0.21, The Configurator supports multiple images in the desc.txt file. To use this format, use the following:

ThemePreviewXX=path\to\preview.bmp(.png)
Preview image number XX (XX is a 0-padded 2+ digit number, i.e. 00, 05, 56, 239)
ThemePreviewXXTimer=X
Delay time in milliseconds before the next image is displayed. (i.e. 1 second=1000)
ThemePreviewDefault=X
Which image to display when a user switches themes.
TC will display this image for 5 seconds before going back into the normal rotation.
This allows you to have a general skin preview first then the theme preview, but display the theme preview first when they change themes

The [Edit] button allows you to Add/Edit/Delete images for the distribution version.


The following are other options you can include in the [MySkinName] section, but they will be described in more detail later.

ThemeConfig=path\to\%theme%\config.file
Path to theme config file (default: mods\%theme%\config.dtd )
As of v0.21, TC supports themepacks. Use the same format, but TC now looks one folder deeper to see if themes have been grouped together in subfolders.
(See the Theme technical reference.)
MainConfig=path\to\config.dtd
Location of our main configuration file (default: config.dtd)
PluginConfig=path\to\pluginconfig.dtd
Location of an alternate plugin configuration file (default: writes to the main config file)
Dir-Plugins=path\to\plugins
Directory for the Local skin plugins (default: plugins)
ThemeDefault=blue
default theme if an invalid theme is listed
ThemeEntity=color
Entity The Configurator saves to identify what theme has been selected
CommentTheme=1
Comments out the theme entity if you don't want it available to your skin or if you are saving a non-dtd file
CommentSkinDir=1
Comments out the SkinDir entity if you don't want it available to your skin or if you are saving a non-dtd file
don't write theme=1
Allows you to have a theme selector based on ThemeConfig, but doesn't actually change the theme
don't write main=1
Allows you to load main config settings without saving them. (i.e. to have a config for a second theme config file)
don't write text=1
Allows you to load text colors without saving them


With v0.19, the following allows you to name the tabs.

TabName - %s - %02d

where %s is the tab type ('theme', 'general') and %02d is a 0-padded two+ digit number. Note: this is 1-based indexing. i.e. for the first 'theme' options tab:

TabName - Theme - 01=Pretty Colors

v0.23 adds the following to rename the three default tabs.

TabName - Themes
TabName - Plugins
TabName - Global Plugins


Other sections

as for the rest of the config, each section starts with

[MySkinName - general/theme - PanelXX]

where each tab in The Configurator has three panels...

You can skip up to 10 numbers to leave yourself room for later...

You can specify that a panel is hidden by default. This panel will be hidden until the user enables the 'show hidden controls' mode. (Useful for advanced options.) To hide the panel, use the following code.

hidden=1

Controls in the panels are either displayed alone or in groups... you can set background colors for the groups, etc...

GroupXX
the value of this should be #-# i.e. 7-15. This tells TC what range of controls are to be grouped together here.
GroupXXDesc
the text shown at the top of the group (the description)
GroupXXBG
the background color of the group. (this uses the same rules for possible values as the MainBG above.)
GroupXXHidden
if this is '1', hide this group unless the user is in showhidden mode

... where XX is a zero-padded number. i.e. it starts at 00, 01 and goes to 99, then 100, 101, etc. NOTE: the numbering resets to zero in each panel.

So, for example we could have
Group00=0-9
Group00Desc=General skin colors
Group00BG=rbdr,gbdr,bbdr

This will group any controls that have a number between 0 and 9. It will display the text 'General skin colors' for the group. The background of the group will be whatever color is set by the control named 'rbdr,gbdr,bbdr'.

Most controls have the following parameters:

ParameterXXName
the name of the entity it saves for simple config items
ParameterXXDesc
description displayed in The Configurator
ParameterXXType
control type
ParameterXXValues
default,min-max values
ParameterXXWrite
special write instructions to create your own custom output
ParameterXXTip
tooltip for the control
ParameterXXHidden
if this is '1', this parameter is hidden unless until user enables showhidden mode. (i.e. for advanced options)

... where XX is a zero-padded number. i.e. it starts at 00, 01 and goes to 99, then 100, 101, etc. For the ease of coding, you can skip up to 9 numbers between parameters. So you can have 00, 05, 14, etc. NOTE: the numbering resets to zero in each panel.

Things can be left out on most of them... so if you just have a static text display, all you need is the ParameterXXDesc... if you just want to write something to a file without making a control, use the ParameterXXWrite one alone, etc...

ParameterXXtype:

checkbox
a checkbox
3state
a checkbox with 3 states
combobox / combo
a popup list of items
combosimple
a combobox without the ability to manually enter a value
edit
a box to put text
editnum
a box to put a number
color / colour
a button that sets (background) colors. It can have a ParameterXXFG to set the foreground color of the control. The 'Name' of this type of parameter should be in the format 'RedEntity,GreenEntity,BlueEntity'. This name can be used as the FG or BG values of other controls / main window colors.
text
a button that sets (foreground) colors. (i.e. text colors) This parameter type can also have ParameterXXBold=EntityBold and ParameterXXItalic=EntityItalic associated with it, giving checkboxes for bold and italic font. It can also have ParameterXXBG to set the background color of the button. This is different from 'color' in that it has a small box to display the chosen color and sets the text to this color, whereas 'color' sets the background of the button to the chosen color. The same naming rules as for 'color' apply here.
font
a button that sets a font using the win32 API's ChooseFont dialog. This parameter type can also have ParameterXXBold=EntBold and ParameterXXItalic=EntItalic associated with it, saving the ChooseFont settings for bold and italic font.
button
a button that launches an external file (like a webpage) -- i.e. you could have a 'check for newer version' button. The ParameterXXName field gives the filename to launch. ParameterXXValues gives the command-line options
static
a simple text display in The Configurator
usectl
Uses another control defined elsewhere. Be careful with using 'usectl'. whichever parameter is last actually sets the value of the control. -- useful if you want one control to set multiple entities.
file
Gives a list of files from which to select (used along with ParameterXXFileName). (i.e. Parameter00FileName=XML\Icons*.dtd) If no files exist, TC removes "SYSTEM" from the Name and saves the string as "" so that Trillian doesn't crash from a null SYSTEM entity. Automatically prepends the relative directory reference (%skindirrel%) if you're using profiles. If you don't want this, use ".\path\name". (Most people shouldn't worry about this.)
language
Gives your skin a personalized language selector. Uses /stixe and Cordillera language files (use "file" to make your own)
Advanced Settings / AdvSet
Display an Advanced Settings button for your users to select Trillian's advanced settings (from any version)
TCLaunch
Launch another instance of The Configurator. The ParameterXXValues field supplies the command-line parameters. So, for instance, you can use this button to launch TC with the /ini command line parameter to use another .ini file, allowing you to have an unlimited number of files you can edit.

(will add 'image', 'listbox' types later)

Note that there currently is a limit of 300 controls each of the different control types in each of the config types -- i.e. you can have 300 checkboxes in the General section, 300 colors, etc. This limit will most likely be removed in the future... Although if you have more than 300 controls, you really have taken configurability too far :D. (It probably will be pretty slow initializing your skin too.)

ParameterXXDesc:
A text label on controls. A value of %null% hides the label on things like language, file, etc.

The [RESTORE] button

The [restore] button allows a user to restore all the settings he has changed in the (default) profile to the "factory defaults". As the skinner, once you are satisfied with all of your settings, hit the [restore] button and The Configurator will create *_default* files for all of your settings files... When a user then hits [restore] it will copy these files, restoring your default settings. (If you want to change the default settings later, just delete the _default files that you want changed then hit [restore] again...) (NOTE: it creates _backup* files for all themes at once.. and since you are the skinner doing this once, just ignore the 'are you sure' message.) Another method available since 0.23 is the 'set current settings as defaults' menu option. This will reset all of the _default files to the current state.

Back to Contents


Trillian Advanced Settings

The Configurator now allows you to make changes to Trillian's Advanced Settings from inside The Configurator itself. skin -> Trillian Advanced Settings Also, using TC to set Advanced Settings will work on all current versions of Trillian! (with one big note for 0.7x) So, you can choose the plugins for all of the default skins of Trillian. (Just a note: The Chinese language may not work on 1.0 since 1.0 didn't support unicode... I know it crashed my version.)

If you've messed things up you can always [restore] back to the version of the file you had the first time you started The Configurator.

Clicking the [>] button by the emoticons launches preview.bmp and by the sounds plays preview.wav or trillian-load.wav .

Skinners can still tap into the Advanced Settings the normal way, by loading ../../stixe/trillian.dtd. (This method of course doesn't work on 1.0 or .74 unless you actively set the file to load based on their version using some sort of config utility :D) However, skinners also have a new option now that will work in both 1.0 and 2.0 (as well as a slightly modified 0.74 on win2k/XP*). Skinners can load %GPdir%default\<file> where <file> is one of TC_Language.dtd, TC_Sounds.dtd, or TC_Emoticonse.dtd. Using the TC_*.dtd files means you're not loading the entire /stixe DTD structure, so you don't have to preinitialize entities to block them -- you're only loading the files you're actually using. One drawback to this method is that the user has to save settings before they run the skin the first time, in order to get the right directory. As an example, in your Configurator.ini you can use something like the following to load the language settings:

ParameterXXWrite=<!ENTITY % ENTLanguage SYSTEM "%GPdir%default\TC_Language.dtd">%n%%ENTLanguage;%n%

... and that's it! Your settings file is now hooked into Trillian's language system on all* versions! The user just has to save the settings before they load the skin to get the correct path for %GPdir%. The TC_*.dtd files are updated every time they load The Configurator and when they save new advanced settings.

(Of course, if your skin is only going to support 2.0+, then just use the old method since it's one less hassle for your users.)

There's also a new control for you to allow your users to launch the Advanced Settings dialog from a button on your settings pages. The control type is "advset" or "advanced settings".

ParameterXXType=Advanced Settings

Note on Trillian Basic (0.7x)

The Advanced Settings will work in Trillian 0.7x. However, it is only guaranteed to work for the default skin (Cordillera / TP2). If you're using another skin that relies on the The Configurator's Advanced Settings files, it will only work with TP2 emoticons and sounds plugins modified for relative directory referencing. (i.e. edit the main.xml files and add '../TP2/' to the beginning of all of the <sound> and <bitmap> lines.) Language files should work without modifications except on win9x/ME. Note, adding relative directory referencing will NOT work on win9x/ME for Trillian 0.7x. It's a Trillian bug with relative referencing on 0.7x.

(Note: Trillian's Advanced Settings icon used by permission of Cerulean Studios.)

Back to Contents


NSIS Sample Code

NSIS stands for Nullsoft Scriptable Install System by the makers of Winamp. It's a really great way to make an installer for your skin or other programs. (Here's a copy of Configurator.nsi for the curious types.)

The following locates the Trillian installation from the registry and copies %trillian%\skins\MySkinName to $INSTDIR. It also leaves the Trillian folder at the top of the stack in case you want to grab it later. (So be sure to pop it off after the function runs if you're using the stack for something else.)

Find Trillian location

Function .onInit ;GetTrillianInstPath Push $0 Push $1 Push $2 ReadRegStr $0 HKLM \ "Software\Microsoft\Windows\CurrentVersion\Uninstall\Trillian" \ "UninstallString" StrCmp $0 "" fin StrCpy $1 $0 1 0 ; get firstchar StrCmp $1 '"' "" getparent ; if first char is ", let's remove "'s first. StrCpy $0 $0 "" 1 StrCpy $1 0 rqloop: StrCpy $2 $0 1 $1 StrCmp $2 '"' rqdone StrCmp $2 "" rqdone IntOp $1 $1 + 1 Goto rqloop rqdone: StrCpy $0 $0 $1 getparent: ; the uninstall string goes to an EXE, let's get the directory. StrCpy $1 -1 gploop: StrCpy $2 $0 1 $1 StrCmp $2 "" gpexit StrCmp $2 "\" gpexit IntOp $1 $1 - 1 Goto gploop gpexit: StrCpy $0 $0 $1 StrCmp $0 "" fin ;Check that Trillian is actually there. IfFileExists $0\trillian.exe fin StrCpy $0 "" fin: StrCmp $0 "" trildefault StrCpy $INSTDIR "$0\skins\MySkinName" Goto skip trildefault: IfFileExists "c:\program files\trillian\trillian.exe" trildefexists ;you might set a default $INSTDIR here Goto skip trildefexists: StrCpy $0 "c:\program files\trillian" StrCpy $INSTDIR "$0\skins\MySkinName" skip: Pop $2 Pop $1 Exch $0 FunctionEnd

The following code makes sure the user's chosen folder for your skin is one folder below the trillian.exe file, and leaves the %skins% directory in $7. (It doesn't actually check that it's in "skins" though.) (You'll probably want to change the $7 to something else... that was just what I was using.)

Check skin install location

Function .onVerifyInstDir ;Check for Trillian installation StrCpy $7 "$INSTDIR\..\" IfFileExists "$INSTDIR\..\..\trillian.exe" Good StrCpy $7 "" Abort Good: FunctionEnd

The following locates The Configurator's installation folder and checks the version information. Requires NSIS 2 beta 4 and above (for Var).

Find The Configurator location / version

Var TCInstall Var TCMajVer Var TCMinVer Var TCSubVer Function GetTCInstall push $0 push $1 ReadRegStr $TCInstall HKCU "Software\TheConfigurator" "" GetDLLVersion "$TCInstall\Configurator.exe" $0 $1 IntOp $TCMajVer $0 / 0x00010000 IntOp $TCMinVer $0 & 0x0000FFFF IntOp $TCSubVer $1 / 0x00010000 ;CHANGE THESE TO REFLECT THE VERSION YOU NEED IntCmp $TCMajVer "0" "" VerOlder VerNewer IntCmp $TCMinVer "24" "" VerOlder VerNewer IntCmp $TCSubVer "2" "" VerOlder VerNewer VerNewer: ;They alredy have a newer version ;Display a message to that effect, whatever Goto VerEnd VerOlder: ;Either they don't have The Configurator or it is too old. ;Set up your custom variables, download, etc. ;If you install the core installer in silent mode, ; let the user opt out VerEnd: pop $1 pop $0 FunctionEnd

This will create very simple configurator.lnk file for people to launch The Configurator. (Requires that they've installed v0.17 and higher.) Put it in your core files section so it always gets installed. (Change the two MySkinNames of course.)

Create a shortcut to The Configurator

CreateShortCut "Configure MySkinName.lnk" "..\Configurator.lnk \"MySkinName\""

Back to Contents


Troubleshooting

Note To Win98/Me Users On Trillian .7X (Free)

If you have trouble with Trillian crashing, profiles and Global Skin Plugins won't work, so only use the (default) profile and (none) for the Global Plugin profile. (You can delete all the extra profiles in the configuration utility if you want.)

If windows show up without graphics, try using the (default) profile.

Known bugs

configurator in a skin folder changes globalplugindir every time you load.
Loading a Trillian profile that points to a non-existing skin crashes TC
globalplugindir set to (none) crashes TC
setting globalplugindir to somewhere else besides .\ seems to be plain buggy.
switching skins several times crashes
This may be a race condition, because it doesn't affect all machines the same. Most people seem to never see this. (This may be fixed now.. I have to test on the other computer)
starting in /globalplugins mode then switching skins sometimes crashes
these are probably all related
occasionally can't read globalplugin
Again, this seems to be the result of a race condition
If Whistler / TP2 don't exist, crashes on trying to load Trillian Advanced Settings
Profile section of the statusbar displays the wrong thing

Back to Contents


Thanks / Credits

Core programmer: Tom Elmer http://tometheus.com

Created using UltraEdit and Borland's free C++ compiler. (MAKE is our friend.)

The Configurator uses the following open source libraries: LIBPNG ZLIB (with Zip extensions by Gilles Vollant) and PNGDIB. Much appreciation is given for all the hard work people have done on these to make our lives easier.

Installers created using Nullsoft Scriptable Install System

Many thanks to Kevin Kurtz and James McNeill for answering my questions about Trillian technical details and Win32API programming when I become thoroughly stumped trying to do something by hand.

Thanks to Charlie Rhodes for hosting tometheus.com. (And for coming up with the name of The Configurator.)

Thanks to CPAGirlNC for the getting started guide and Win98 testing

Trillian's Advanced Settings icon used by permission of Cerulean Studios.

Back to Contents


Version Information

The version numbering system, major.minor.bug.build, is designed so that major changes in The Configurator behavior (i.e. new config options) deserve a new minor version number. This way The Configurator can work correctly with all past versions of Configurator.ini files. Any time a new feature is added that wouldn't work with older versions of The Configurator, a new minor version number is added. Skins should set their ConfigVer to the minimum version number that has all the necessary features, so that people using older Configurators can be alerted to the fact that they need to update to use features in the skin. Versions above v0.21 should use this format: ConfigVer=21, 0.21.0 (The "21," tells users with older versions that you want them to upgrade.)

The official first release was intended to be version 1.0. These were originally planned out according to a set guideline I had in the beginning, but I've already gone through 6 major release stages without an 'official' release :D Major releases indicate something fundamentally different in The Configurator. (For example, the planned release 6 was going from being just a SETi/BlueTurtle skin config utility to being a generalized one.) Currently, 1.0's fundamental change is planned to allow an arbitrary number and type of config files, along with automatically inserting global plugin code into a skin.

Version 0.26

SKINNERS: if your skin uses Trillian 3.0 skin packs, you should change the ConfigVer=26,0.26.0 to get your users to update.

0.26.1 (2005.10.11)
Updating the 'Pack Rat to version 3.1.05
0.26.0 (2005.10.09)
On modern operating systems, launches the 'Pack Rat for Trillian Advanced Settings now.
  PackRat has more features than the old TAS dialog, including allowing TC to configure emotes / sounds / interfaces.
  Also, this allows me to just develop one app instead of two to do the same job
  This also allows skins to suggest skinpack setups by including a PackRat.ini in their folder.
  (Trillian versions before 2.0 and Win98 / ME still use the internal TAS dialog.)
Internal Trillian Advanced Settings dialog writes trillian.dtd more like Trillian itself.
Internal Trillian Advanced Settings dialog adds support for iconpack extensions in stixe.
Optimized a few more internal routines / misc bug fixes.

Version 0.25

0.25.2 (2005.06.28)
Fixed a bug with WM_SETCURSOR
0.25.1 (2005.06.15)
Added uninstall info to the add/remove programs
0.25.0 (2005.03.19)
Just a reminder for skinners: desc.txt trillian version=3000
A lot of code optimizing, attempting to hunt down a couple of crash bugs
Updated to libpng13.dll
Trillian Advanced Settings dialog's language pack selector now correctly sets the language pack for the current Trillian profile

Version 0.24

SKINNERS: if your skin uses Trillian 3.0 skin packs, you should change the ConfigVer=24,0.24.5 to get your users to update.

0.24.6 (2005.03)
Disabled the skin menu when configuring plugins / iconpacks.
  (A few people were crashing due to this.)
Fixed a crash bug when exiting in /debug mode
0.24.5 (2005.02.09)
Forgot to add the tooltips to the advanced settings dialog... oops.
0.24.4 (2005.02.01)
Fixed stixe interface saving. (Forgot to save a couple of other entities.)
0.24.3 (2005.01.31)
Unified the stixe skinpacks plugins for 3.0... end user just configures the plugin to select which parts to enable
0.24.2 (2005.01.30)
Added the ability to configure icon packs
Updated the icon pack plugin to include default entities to make unenhanced iconpacks work.
0.24.1 (2005.01.26)
Switched the order of the main.dtd and main.xml being called in trillian.dtd for icon packs so that the DTD has a chance to override the ICONS entity
Fixed the IconPack global plugin (defines entities so Trillian doesn't choke)
0.24.0 (2005.01.26)
Added: a setting for IconPacks to the Trillian Advanced Settings dialog.
  NOTE: Trillian rewrites this setting to the default if you use Trillian's Advanced settings.
  Also writes a DTD file setting if there's a main.dtd file.
Added: a setting for the /stixe Interface to the Trillian Advanced Settings dialog.
Added: Enabled the configure button for /stixe skins.
  Loads Stixe Studio if present or opens the Advanced Settings dialog
Added: Can load Trillian 3.0 profiles by display name as well as profile name.
Changed: Trillian 3+ uses display name instead of profile name on the Trillian profile menu
  Also cleaned up the code a bit to make it more robust/faster after this change.
Changed: Uses Microsoft's desktop text color algorithm for choosing the text background color for non-TC skins
Fixed: a bug in reading the skin's config setting in desc.txt.
Fixed: a bug if the input argument was ".\"
Fixed: a bug if the input directory was a skin profile directory (that's been bugging me a while)
Fixed: a bug where ZIP files would never get processed if there wasn't a TSZ file there also.

Version 0.23

SKINNERS: if your skin uses PluginConfig, you must change the ConfigVer=23,0.23.0 to get your users to update.

0.23.1 (2004.05.28)
Now hides TheConfigurator* folders in the skin list
Updated the Trillian version checking to look for /stixe/elements/main.xml
  (instead of /stixe/trillian.dtd, since PickupStixe creates this file.)
0.23.0 (2004.05.28)
Added PluginConfig to save plugin settings to a separate file
Added a 'set current settings as defaults' menu item
  This resets all of the *_default.* files for the restore button.
  Once a skin/theme is done, designers should use this option to set their defaults.
Plugins / Global Plugins / Themes tabs get hidden when not used
Added option to add TC to the context menu for .TSZ files in the installer.
Added TabName - Themes, TabName - Plugins, TabName - Global Plugins
  Allows you to rename the default names for these tabs
Added a configure button for non-configurator skins with a config line in desc.txt
  For an example, see the MCP skin.
Added ButtonStyle=2 for more traditional (windows) looking buttons.
Added ownerdrawn up-down controls for the tab control
Skin menus now hide skins in the temp_skins_directory* folders
Fixed a couple of /showhidden and multi-preview crash bugs
Fixed a lockflag bug
Fixed a few other memory bugs... still a couple of crashes I'm trying to hunt down. See Known Bugs
(Plus a few 0.24 0.25 features that will remain hidden for now.)

Version 0.22

SKINNERS: if your skin uses PNG previews / logos, be sure to change the ConfigVer=22,0.22.4 to get your users to update.

0.22.4 (2004.02.03)
Fixed PNG alpha support for Win98
Finally got around to fixing the 'default theme' code so that a user can delete the default without problems
Fixed a race condition when using ok/cancel/exit while still saving.
Fixed a crash bug when a config has no parameters to read (MBG)
Cleaned up the drawing algorithm for the preview. (now Giger looks sweet)
0.22.2 β (2004.01.26)
Added TSZ / ZIP support while I'm trying to figure out the win98 PNG bug
  Now users on Trillian 1.0 / 0.7 can use skins zipped until needed.
  See the ZIP/TSZ Reference
0.22.1 β (2004.01.24)
Fixed /debug and /showhidden command lines: no longer default to /globalplugins
Fixed window positioning bugs
Fixed Win98 menu bug
Fix(ing) PNG AlphaBlend bugs for Win98
  Can't display alpha yet, but at least the image shows.
0.22.0 β (2004.01.22)
Added PNG support for logos / previews.
  Many thanks to Kevin for helping me get this working
  NOTE: Trillian doesn't support PNG in the skinchooser
Fixed /ini command line so it will also work if you don't strip the '.ini' off first
Changed to using my own message dispatching for certain dialogs.
  Closing window while About, Preview edit, etc are displayed shouldn't crash now
Added keyboard accelerators (ctrl-tab for changing tabs, etc).
Windows now remember last positions

Version 0.21

SKINNERS: if your skin uses these features, be sure to change the ConfigVer=21,0.21 to get your users to update.

0.21.0 (2004.01.16)
Added the ability to use themepacks -- subdirectories that group themes together.
Changed the save buttons to reflect a more familiar interface. (OK, cancel, apply)
Removed extra confirmation messages
TC Now saves GlobalSkinPlugin settings when the main skin is saved. No need to 'save' twice now.
Added more tooltips
Added theme information. (See the Theme technical reference.)
Added multiple image support to desc.txt previews (See Reference)
Added new preview editing dialog. Button hidden if desc.txt or preview writing are disabled.
Added DisablePreviewTab to disable the preview tab if you have themes and text disabled
  (Skins with ConfigVer 20.1 and higher will leave the preview enabled otherwise.)
Added Plugin=0/1 to the [configurator] section.
  If there's no 'Variable' in the [plugin] section (i.e. a plugin.ini) it checks this.
  Basically this just tells TC to use a different set of defaults, like it is configuring a plugin
Added "don't write main=1" to not write the main config file.
Added "don't write text=1" to not write the text colors .ini file.
ConfigVer now supports the normal Major.Minor.Bug.Build version system, so from now on I don't have to bump the version every time I fix a bug :)
In order to tell TC you're using this format (and tell older versions to upgrade), put '21,' in front of the version... i.e. ConfigVer=21, 0.21.0.0 (Any number over 20 will do, but this is a nice round one :D You can still do the old (i.e. 020) method too, but you can now specify the specific build this way.

Version 0.20

SKINNERS: if your skin uses the file control, be sure to change the ConfigVer to 0.20 to get your users to update. I had to bump the version because the File type was really broken, and any skins that used it would need this.

0.20.0 (2004.01.08)
Added %skindirrel% variable. (Relative path to the base skin directory... useful for skin profiles)
Fixed File control type. 2.0 Language support broke it.

Version 0.19

SKINNERS: if your skin uses any of the 0.19 features be sure to change the ConfigVer to 019 to get your users to update.

0.19.0 (2004.01.07)
Changed plugin displays to listview controls (whew.. a lot of work, that)
Added Author, Port, About, Config, Type, TrillVerMin, TrillVerMax to plugin.ini
Added built-in plugin configuration capabilities -- Config=configurator.ini ..
  then make your plugin configurator.ini just like a normal skin..
  be sure to disable desc.txt.
Added: TC hides plugins based on Trillian version
Added context menu for plugins (moved hide / delete to the context menu)
Added: desc.txt advanced tab= to create a customized advanced tab setting
Added /ini command line argument to specify your own ini file
  You must change the name of the [configurator] section to the name of your ini file
  Can specify an alternate .ini file for plugins: Config=MyCfg.ini
  Will force only skins with MyConfig.ini to show up in the main configurator list
  also disables yours from showing up in the normal list though...
Added TCLaunch control type to launch another instance of TC
  ParameterXXValues supplies the command-line parameters.
  (so you could have more than 2 config files for your skin)
Added command-line parameters for the Button control (ParameterXXValues)
Added ability to name tabs "TabName - %s - %02d"
  i.e. for 'theme' tabs: TabName - Theme - 01=Pretty Colors
  Note: this is 1-based indexing instead of 0-based like the panels
Fixed: using "." as the skinname on the command line works now

Version 0.18

SKINNERS: if your skin uses any of the 0.16, 0.17, or 0.18 features be sure to change the ConfigVer to 018 to get your users to update.
(changed to 0.18 instead of 0.17 final since I deleted the 0.15 install accidentally and a lot of people got 0.17α. Since I've added alot of things since 0.17α, I didn't want skins using the new features to break on that older one. If your skin doesn't use any of these new features, you can keep the ConfigVer=017. This just bumps back my planned release schedule by 1 :)

0.18.7 (2004.01.01)
Plays preview.wav without launching separate program.
Find skins folder now does some error checking
Added checkmarks to skin menu to help when multiple skins share the same name
Fixed skin loading when multiple skins share the same name
Fixed combobox selection bug when the first item shares characters with another item
Fixed: TC works without a config file..
0.18.6 (2003.12.27)
Added a tooltip for parameters: ParameterXXTip=Text here
Added showhidden to the menus
Added debug menu item. Debug mode now writes to TCDebug.txt. Fixed webpage upload form.
Added a help -> Feedback to TC, fixed feedback form on the webpage
Added a button in Advanced Settings that launches preview.wav or trillian-load.wav for sounds
Fixed Trillian 0.74 Advance Settings bug... oops
Fixed a couple of preview bugs (one appears to be a Microsoft API bug.)
Fixed a startup bug when the shortname is not the same as the folder name.
Fixed a setpage bug when changing skins.
(2003.12.22)
Added a new user's guide by CPAGirlNC
Added an Advanced Settings dialog that will work under all versions of Trillian (*)
Added "advset" / "advanced settings" parameter type to display an 'advanced settings' button.
Added tooltips (more to come and customizable too)
Added "don't write theme=1" to not write the theme file.
  i.e. you can use the theme selector by using EnableTheme=1 but not actually save a file.
Added "desc.txt enable=1/0" Does TC try to write desc.txt? ("enable desc.txt" was added earlier and still works.) (default: 1)
Added "desc.txt name=" alias for "SkinChooserName" (defaults to whatever is already in desc.txt)
Added "desc.txt stixe advanced tab=1/0" write 'stixe' instead of 'configurator.lnk' in desc.txt (default: 0)
Added "desc.txt update preview=1/0" Does TC change the preview images? (default:1)
  I haven't added multiple previews for TC itself, but this allows you to keep your own settings
Added "desc.txt trillian version=" The trillian skin version, (default: 700)
Added "desc.txt desc profile=" The skinchooser description that gets written on skin profiles
  Try to indicate to the user that it is a profile, not the main skin.
  default: "A profile of the %ShortName% skin. To set preferences select the '%profile%' profile in The Configurator. If Trillian doesn't load, try the (default) profile."
Changed the order of the tabs to have the preview up front.
Changed the button style to give a 3-D effect to clue new users in better thaat they're buttons
  If you want the old flat button style, use "ButtonStyle=0"
Changed: No longer changes the desc.txt files for non-configurator enhanced skins
Fixed the %date% desc.txt bug
Fixed language selector in 2.0
Fixed Trillian version detection on win98
Fixed the hide / delete theme bug
  (remember, to unhide a theme, remove the '!' in front of its folder name.)

Version 0.17 (only released in α)

(2003.12.07)
FINALLY fixed the crashing bug that's been holding me up on releasing v017 (AGAIN)
Added an uninstaller
Changed the color.ini search to search for anything in the [colors] section instead of the Nick color
Should show the whole skin preview image in smallfonts mode now
(This also adds room for an extra control or two in each panel)
Fixed a couple of crashing bugs
Added language / file control types
Handles TSZ files as the active skin
Reads Trillian's version number now that Trilly supplies it in 2.0
(Started adding ZIP support)

Version 0.16 (only partially released as v015 features due to hard drive crash)

(2003.06.07)
Fixed profile deleting bug.
(2003.05.31)
Changed behavior of disabling tabs... now uses 'EnableXXXX'... everything now defaults to being disabled except text colors.
(2003.05.28)
Changed default behavior for colors.ini. Now searches for colors.ini if none is supplied rather than defaulting to SETi-style.
(2003.05.15)
Started adding 'modify skin for global plugins' feature.

Version 0.15

(2003.05.12)
Added "file" control type (similar to "language")
Can supply a transparency color for logos
Reads logo dimensions from image now.
(2003.05.10)
Added ability to read hex colors (start the color with '#')
(2003.05.07)
Added "language" type

Version 0.14

(2003.05.04)
'disable desc.txt' option. (MBG updated to use this)
allow 'colours' alternate spelling for controls / colors.ini
  (MdXP2 updated to use this)

Version 0.13

(2003.05.03)
fixed ListFG
Completely changed the behavior of plugins/global plugins listboxes
  Switched: (ctrl-lfclick) and (lfclick).
  Added: (rtclick-lfclick) --> clear selection
    (shift-rtclick-lfclick) --> reset selection to loaded selection

(2003.05.02)
Fixed reading config files to allow for non-standard [CR] only terminated lines instead of [CR][LF] (for MdXP2)

Versions 0.08-0.12

(2003)
SkinConfig / The Configurator and installer in alpha / beta testing stages. Many thanks to CPAGirlNC, Zipmaster, Folio, and other loyal SETi / BlueTurtle users for helping me test this out. First tested with MicroscopicPro around version 0.10. Version 0.12 added the 'minimum version' (ConfigVer=) checking.

Version 0.07

(2003)
SkinPlugins Trillian Plugin created for configuring global skin plugins within Trillian. *** Removed around version 11, when reading Trillian's profile settings was added, making an internal Trillian plugin obsolete.

Version 0.06

(2002.12)
Global plugin architecture layed out. PluginConfig.exe started. *** Merged into SkinConfig.exe, later renamed Configurator.exe

Version 0.04

(2002.11.02)
SETiConfig as released with SETi's official release

Versions 0.00-0.03

(2002)
SETiConfig in beta testing stages.

Back to Contents

NOTE: LOCAL PLUGIN SETTINGS MAY OVERRIDE THE GLOBAL SETTINGS.  If a plugin 
doesn't seem to be working, check that you have all similar plugins disabled in 
your skins private settings

Variables available
   %theme% - Current theme name, i.e. 'blue'
   %skindir% - Directory the base skin is in
   %skindirrel% - Relative path to %skindir% from the current directory
   %n% - newline

values for editnum:
default,min-max