On Dec 3, 2003, at 10:48 AM, Ian Schorr wrote:
I guess the only issue I have with trying to "remember" the column 
widths is the same problem I have with other GUI items we're trying to 
"remember" - both the window position/sizse and file dialog directory 
"remembering" happens by setting prefs_write_needed to true.  
Unfortunately this means that if the user has these GUI options 
selected and one of them changes, Ethereal saves ALL current settings 
to the prefs file on exiting - including prefs that the user didn't 
necessarily want to change.
Or prefs that don't exist in earlier versions of Ethereal that one 
might be using when doing regression tests and the like.
Ethereal *should*, when writing the window position information, read 
in the existing preferences file, update *those* preferences, and write 
those values out.  If not, that's a bug.  However, that doesn't fix the 
problem I mentioned.
There's also the issue of what width columns should be by default - 
when no prefs exist for column widths, or a "new" column is added 
whose width has not been adjusted by the user yet.
MAX(width of column heading, wired-in width for columns for which we 
have such a width).  Use the width of the string from 
"get_column_longest_string()" as the wired-in width.
If possible, arrange that the rightmost column (which will, in most 
cases, be the Info column) take up all the space left over from the 
other columns (I think that can be done with most GUI toolkits we'd be 
using).  If a toolkit allows some column other than the rightmost 
column to be the "free hog" (to use the SunOS disk partitioning term), 
perhaps with that toolkit we should make the Info column be the "free 
hog".
I'm thinking this:
- "Remember" column widths in the prefs file, but change the way we're 
flushing prefs:
      (I suppose we could add "flags" for marking each pref that 
should be flushed on exit and written by write_prefs() on exit, but 
I'm thinking that perhaps there should be a new, seperate function for 
writing individual prefs that accepts a pref name and value.)
Or, alternatively, have a separate file to remember things that aren't 
explicitly set via Edit->Preference, such as window sizes and 
positions, column widths, last file selection box directory (and 
possibly, on platforms where the desktop environment has its own 
mechanism for saving information such as that, use that rather than a 
file).
If we supported a "recent items" list, that'd be the place to store it 
as well.
- Call the new function and save the column width(s) every time a 
column is resized.
Yes.
- Associate a "default" column width with each column type - I don't 
think a "general" default (i.e. each type of column gets, say, 100 
pixels by default) makes any sense.
See above.
- Add a "Reset column widths" button to the Columns Preferences window
What does "Reset column widths" mean?  Reset them to the "factory 
defaults"?
Is there a good reason that we can't dynamically add/remove columns 
from the packet list when added or removed by the user?
Because GtkClist isn't very friendly towards that, and we haven't 
bothered writing code to rebuild the clist - I was thinking of this as 
something to fix when doing the "virtual" list stuff, but if somebody 
wants to implement that, it's probably something reasonable to do until 
we have a "virtual" list.