mmann78@xxxxxxxxxxxx wrote:
I was looking at the possibility of implementing an API for "statistics 
preferences" (for say, stats_tree plugin).   The preference module 
(prefs.[ch]) seems to be written generically enough to support such a 
concept, however I'm having a little trouble with the implementation.  
I'd like to create a "module" at the same (tree) level as "Printing" and 
"Name Resolution".  I called prefs_register_module() from 
prefs_register_modules(), expecting a "subtree" at the "top level" 
within the Preferences dialog.  No such luck.  I called 
prefs_register_subtree(), followed by prefs_register_module() in 
prefs_register_modules(), and I got a "subtree" at the "top level" (with 
the "subtree" name), with my "module" as a subtree off of that.  Not 
exactly what I was looking for.  Can someone offer any advice?  I got 
lost trying to debug through the prefs_modules_foreach_submodules() 
function trying to figure out why my module wasn't populating at the 
"top level".
I think that all of that preferences code is only for dissectors (stuff 
under the Protocols tree).  The subtrees stuff is/was really intended 
for subtrees under Protocols.  So, since you're doing something new, 
you'll probably need new functions to do it.
Also taking this generic implementation farther, it appears that most of 
the non-dissector preferences could be replaced with the existing 
preferences API (and implemented within prefs_register_modules()).  This 
would certainly reduce the amount of "GUI code" (for each dialog 
specific to "Statistics", "Name Resolution", "Printing", etc) and make 
the gtk->qt transition easier.  Is this something worth pursuing?  My 
I'd think so; the current non-dissector preferences stuff is a mess and 
a pain to maintain.  I noticed that again recently:
http://anonsvn.wireshark.org/viewvc/viewvc.cgi?view=rev&revision=42648
biggest concern (besides my current implementation troubles) would be 
possible backwards compatibility issues when switching to "individual 
variables" from the current "global preferences structure" (e_prefs)
Well, the 1.8 branch has been cut so we've got a year to sort those out...