Just to clarify: the Categories from the vFolder spec are used for categorization by the code. The only part where we differ is whether an XML vFolder file is used to map Categories values into locations in the menu hierarchy. So instead of something like:
<!-- Accesories --> <Folder> <Name>Accesories</Name> <Desktop>Accessories.directory</Desktop> <Query> <And> <Keyword>Application</Keyword> <Keyword>Utility</Keyword> <Not> <Keyword>System</Keyword> </Not> </And> </Query> <DontShowIfEmpty/> </Folder> the ClassicCategorizer class uses (abridged): elif 'Utility' in categories: if 'System' in categories: return 'system/utility'+appendstr else: return 'accessory'+appendstr where each path component is a <filename>.directory file and appendstr is the group, if there is one specified. The whole "DontShowIfEmpty" stuff is expressed more dynamically; if there aren't any menu entries located in a part of the hierarchy, that part won't show up. There's also some balancing code involved, but that could be used with the vFolder XML categorizer just as well, or if you want the verbatim vFolder layout, or even the verbatim ClassicCategorizer layout, you can switch off the balancing by allowing one-entry menus. One-entry menus are IMHO a usability hurdle, but I haven't brought in hordes of doofuses off the street to test this theory (yet). Hope this clarifies things. Chris -- Chris Lawrence <[EMAIL PROTECTED]> - http://www.lordsutch.com/chris/