"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
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.
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.
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.
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.)
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"
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 < and % with % then evaluate the wrapping entity.. So, for <!ENTITY % dtdentity SYSTEM "xml\filename.xml"> I'd have:
<!ENTITY % ENTdtdentity ' <!ENTITY % 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
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?
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.
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 ' <!ENTITY thisentity SYSTEM "%SkinDir;plugins\%modpack_<VariableName>;\<filename>" > '> %ENTthisentity; <!-- &thisentity; can then be used to insert the file elsewhere -->
--== and ==--
<!ENTITY % ENTdtdentity ' <!ENTITY % dtdentity SYSTEM "%SkinDir;plugins\%modpack_<VariableName>;\<filename>" > .'> %ENTdtdentity; <!-- %dtdentity; can then be used to insert the file elsewhere -->
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
'
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
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'...
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.
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
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:
('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 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 ElmerDescription2=(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.
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)
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:
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.
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
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...
... 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 haveGroup00=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:
... 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...
(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 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.
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
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.)
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\""
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.
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.
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.
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.
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
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.
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.)
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
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.
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.
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
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 :)
(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)
(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.
(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
(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)
(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)
(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.
(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.
(2002.12)
Global plugin architecture layed out. PluginConfig.exe started.
*** Merged into SkinConfig.exe, later renamed Configurator.exe
(2002.11.02)
SETiConfig as released with SETi's official release
(2002)
SETiConfig in beta testing stages.
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