Re: Adria - Inventory Management System
A quick preview of the new tradelist printer that is still in the making (but progressing smoothly):
The main goal with the new system is to give the user even better control on the printout layout. However, with added functionality there's also some added complexity. Users that do not want to have to customize the details will just find the extra options confusing, so to fix this we're going for a "templates" approach.
Introducing the Tradelist Setup Tree:
In the above picture you see a single root node and some of its subnodes.
1 The root node
A root node, aka a node at the top most level of the treeview specify what I would like to call a "tradelist template". To print using that template you need only to double-click on it. We can add as many of these as we wish, so assuming we create a good starting set of templates this should give the general user a simple and effective way to try out and switch between different printout styles.
2 The header nodes
Header nodes are those nodes below the root without "Items:" in their names. These are free to have any name except for that particular keyword, and the system supports 3 levels of headers for all your categorization enjoyment. You may not add headers any deeper then that, but why would you want too ...
3 The item nodes
The only item node visible in the picture above is the one below the header node named "Unique". Item nodes are not allowed to have subnodes since they're not headers

whistling

. You may notice the "Color=Gold" thingy in it's name, and just as obvious that means this node specifies where items that have "Golden" names (uniques, runewords) may be inserted in the printout chain.
There's a bit more to it:
When creating an item node you can choose up to five filters/requirements that an item must fulfill to belong to a node. You can specify, class, color, quality, sockets, ethereal, containstring, lackstring and IsRuneword as requirements. Up to a maximum of four ones and items will face them as "AND" requirements (must fulfill all).
Just with containstring and lackstring you can made all kinds of funky tradelist categorizations.
Advanced settings
With a tree structure there's some quite a lot funky things one can do to how the user edits settings. I've gone for a simple approach, each node decides how it prints out it's own contents. Here's a view of the node editor:
As I'm sure you see from the pic there's quite a lot of options to fiddle around with, however not all nodes have use for all of them while printing.
1 Global settings
The topmost settings govern how the start and end of the tradelist is printed, basically if the whole tradelist should be surrounded by some global tags + some minor starting/ending things.
2 Inherit and Pass down
Because opening each node and editing their settings can be a hassle, these let you make a node pass down all its setting to all its subnodes, or grab settings from its parent node (grayed out because the node in the example is a root node thus has no parent).
3 Tradelist Headers
Here you can edit the printout style of the headings for different node depths, again note that these options are "by node". You can edit the heading style in a root node and use "pass down" to edit the entire tradelist "template" to use a new style, or just change the style in a specific node. A headernode will when it is being printed grab only the style corresponding to its node depth, the others are present for edit so that subnodes can inherit them.
4 Item printout formatting
Ah, here's the fun part. The previous style used multiple fields and then combined them into some kind of obscure mixture from hell. This time it's one field for the general printout style, again with a set of keywords to show what goes where. You can of course move they keywords around and mixture as you like. The small field to the right is for specifying the separator to be used between mods. As some of you may have noticed there's "[CR]" strings in the header formatting fields, these can of course be inserted here to to achieve a "full printout" look.
5 General functions and tags
Nothing too obscure, but remember that all options operate on node level grouping and sorting will only be done for items of the same item node. You can create several item nodes beside each other provide additional sorting under a header. For example:
Code:
Root
|-Jewels
|- Items: ;Class=Jewel;Color=Gold;Nothing;Nothing;Nothing
|- Items: ;Class=Jewel;Color=Yellow;Nothing;Nothing;Nothing
|- Items: ;Class=Jewel;Nothing;Nothing;Nothing;Nothing
While printing the items are printed "fall through style", in other words an item that is to be printed will not be so until it's the turn of an item node of which it fulfills all requirements. The above nodes will make all Rainbow facets be printed first, then rare jewels and lastly magic ones. Ranbow facets, rares, and magic jewels are alphabetically sorted only under their specific item node when using the sort option, so the "by quality" node specification will remain.
Because of the fall through printing it's a good idea to have a "No requirements" node last to catch anything that didn't fit anywhere else.
Not to mention the tags, these will be placed in place of the "Tags" keyword. The socket one will replace the symbol "X" with the number of sockets an item has, using this will also remove sockets from the "Mods" list. Ethereal works just as sockets, but no X to replace.
The perfection tag is a bit experimental and not really functional yet, the aim is to have a function calculate how close a unique/set is to perfect, and if higher then a certain percentage print out it as a tag to highlight the item.
6 Reduce text
A few known ones and a few new, extra functions that aim to reduce the amount of unnecessary text. No magic/rare names will name all items of those qualities to "Magic Circlet" or "Rare Amulet" etc. No set info aims to remove all non "item specific" adds to the mod list of set items. Then there's a bunch of functions to remove specific parts of the item description ...
The "Runeword" and No Runes function puts runeword names in quotation marks and removes the "inserted runes" list (strings like 'JahEthBer') from the mod lines + removes the "Socketed (X)" line.
No static mods has gotten an upgrade, as you users know we have a "Generic description" of many items, this time around any line of an item that is exactly found in that generic description is removed (varying mods stay for uniques, unless a unique is upgraded the base item will disappear etc).
Abbreviations are same as before, something at the end to make everything left shorter.
Crap mods is basically just a text file that you check mods against, if a mod has a match in the textfile then it's assumed to be crap and not worth mentioning thus removed.
7 Hidden
Of course there's a couple of extra things, like that headers without any items under them will not be printed etc, with a big template everything would look kinda dumb if there where lots of empty sections.
Well that was a bunch of info, now what? Oh right, Aprils fools none of the above is true!
J/K ...
Now that you've all gotten a bit info on the progress you're free to come with suggestions and/or plain old criticism.