From: Douglas S. B. <db...@cs...> - 2008-04-22 12:03:43
|
> Benny wrote: [snip] > Now that the date is bold, we will obtain the question: 'Why do I see a > bold > date', although opening an editor and seeing it turn red, should explain > it, > so it is somewhat self explanatory, which is good. Did you dates can show up as italic? That means that a different date was substituted rather than the normal one. For example, a baptism date might be used rather than the birth date. The more information we indicate the better, even if you have to look it up to see what it means. > I agree also the bold is better than the color to indicate this in view of > themes/color blind. I would hence do away with the config option (however > nice the freedom), and let it be bold for everybody. The reasons: > > 1/config option is not visible That could be a good thing > 2/difficult config option, people need to know gtk markup, this is not how > it could be presented in a option screen. I suppose it can even crash > GRAMPS? Many settings can be configured to make gramps act badly. > 3/if you as a developer have an itch, you can put the setting of markup in > a > utility function reused in all places (if you did not implement it already > like that), and change the setting there once for yourself. It is python, > no > need to recompile. That's a big pain if you ever commit your changes to svn. > 4/if people complain about the bold, we can add a config option then, > combined with the reusable function from 3/ this is easy, and implement a > correct way of setting this value, which would not be to let users enter a > string containing %s. I don't think it would be that big of an issue. You could even make that part of the get_format interface (below). > To end, this function is reusable for other data, and is not limited to > invalid date, eg, one can indicate invalid latitude/longitude in the same > manner, I would even ask you to implement that. It would hence be a > function > to indicate invalid data in a treeview, whereas the editor use the markup > data entry to show this. I'm not sure it would be this easy, because some treeview columns use markup and others do not. If you want to use markup, then you will need to parse for HTML codes. If you parse for HTML codes then you need to cgi.escape all of those that are not codes. Both of these take some time (not much). It may be that we want to make all columns allow markup so to allow this. (I made the Quick View table auto-detect if there is any formatting in a column and only cgi.escape when it needs to.) Still, if I were to write this function, I'd still keep the values in an easy to change place not in svn. Maybe something like: import Config format_cache = {} # memoized format values def get_format(format_name, data, use_cache=1): """ Retrieve a format string from the config .gramps/key.ini file. This function also memoizes the value for fast access. By default, it uses the cache, but pass in use_cache=0 to force going to Config. """ format_tuple = ("formats", format_name, 2) if format_tuple not in format_cache: format_cache[format_tuple] = Config.get(format_tuple) elif not use_cache: # forced to re-get, but save too: format_cache[format_tuple] = Config.get(format_tuple) try: return format_cache[format_tuple] % data except: raise ValueError("invalid format in keys.ini: %s=%s" % (format_name, format_cache[format_tuple])) def clear_format_cache(): """ Clear the memoized format cache. """ global format_cache format_cache = {} This is really just a cached layer on Config.get(). -Doug > Benny |