A guide to adding Skill Icon Groups to EVEMon
OK, this isn't really all that hard once you know how.
There are default icons for some instances, and there are icons that need a group.
Name in Options | Index in Code ------------------+---------------- Book | book Pre-Reqs NOT met | PrereqsNOTMet Pre-Reqs met | PrereqsMet Level 0 | lvl0 Level 1 | lvl1 Level 2 | lvl2 Level 3 | lvl3 Level 4 | lvl4 Level 5 | lvl5
'book', 'PrereqsNOTMet', 'PrereqsMet?' and 'lvl0' exist in a default set, as does 'book_old' but that isn't used for anything... it's only there due to me archiving stuff and incase anyone wanted it instead of the 'book' icon that arrived later, as no one has shouted for it to be used it'll probably get deleted in the next clean up I do. All the other icons need to exist in an icon group. That icon group can redefine what each of the default icons looks like by simply containing an icon with the same index.
OK, so... how do I create my icon group?
Well... first you'll need a collection of icons. These need to be in .ico files at 16x16 with 24bit colour depth with a name that is logical - I used the code index to name mine (I found 'SnIco? Edit' from http://www.snidesoft.com/ works well).
For your Information: http://www.snidesoft.com/ is down!
Use this link for 'SnIco? Edit': http://www.clubic.com/lancer-le-telechargement-9533-0-snico-edit.html
Don't get disturb of the France on the page - the software is in english.
You can create an icon group with just lvl1.ico, lvl2.ico, lvl3.ico, lvl4.ico and lvl5.ico files in it. The rest of the icons will be loaded from the default set.
Once you have your collection of .ico files you then need to add them to a .resx file... or straight to a .resources file if you can find an editor (Microsoft Express VC# has one embedded for .resx files). Now you'll find out why you used the code index to name your .ico files. Each entry in the .resx file needs to have the name of the index that is used in code to find it... you guessed it, each .ico file needs it's corresponding code index as it's name. If you used the code index to name them, then the names of the icons in the .resx file should already be correct.
Now this is important: Select the image link in the resx file, go to the properties for it and change "Persistence" from "Linked at compile time" to "Embedded in .resx", now you only need to think about the .resx file rather than the .ico files aswell.
You can now either attach your .resx file to a ticket for it to be looked at by a dev (who will either accept it or not) or you can turn it into a .resources file for your own use.
So... how do I turn my icon group .resx file into a .resource file?
Hmm, so you have your .resx file, you now need to use a tool called 'Resgen' to turn that into a .resources file. This is fairly straight forward, even if it is involved.
To make my life easier I added 'Resgen' to the external tools drop down on the VC# menu bar. To do this:
1) With VC# open click 'Tools'->'External Tools'
2) Click 'Add'
3) Change:
'Title' to 'ResGen',
'Command' to 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\ResGen.exe'
(if you installed it there with VC# express... it might be elsewhere if you used a different installation path)
'Arguements' to '$(ItemPath)'
and 'Initial Directory' to '$(ItemDir)'
4) Select "Use output window'
5) Click 'ok'
6) You should now have a new entry on the 'Tools' menu saying 'ResGen'
Now select your icon groups .resx file in the project's 'Solution Explorer' and click 'Tools'->'Resgen'. A window should open telling you how it went. If it was successful you should now have a .resource file in the same directory as your .resx file (the solution explorer may need to be refreshed to see it).
Well... so I have a .resource file.... what do I do with it?
OK, due to the way the current system is coded, you need to make an entry in 'Resources/icons/Skill_Select/IconSettings.settings'. Lets say you have developed a group of icons that can best be called.... 'Monkeys'. At the time of writing this the next free group is 'Group6', so your entry here should look like this (in the VC# UI):
| Name | Type | Scope | Value --+---------+---------+---------------+------------- | Group0 | string | Application | Default | Group1 | string | User | Dice_Spots | Group2 | string | User | Slashes | Group3 | string | User | Pie_Slices | Group4 | string | User | Pentagons | Group5 | string | User | Pentagrams * | Group6 | string | User | Monkeys
You need to make sure your .resource file is called 'Monkeys.resources' and needs to live in 'Resources/icons/Skill_Select/Group6/'.
The .resources files properties in the project need to be:
Build Action: 'None' Copy to Output Directory: 'Copy always'
Now when you do a 'build' of the project you need to check that all the various 'Group' directories in the test build resource directory have the relevant .resources files in them... for some reason it doesn't always copy them properly, it might need a little fiddling with to get working properly, but it does eventually work.
Congratulations... you should now be able to boot up your copy of EVEMon and switch to your new icon set from the options page.
Oh how I wish I could automate this....
