[GRASS-dev] new std options for files

Glynn Clements glynn at gclements.plus.com
Thu Mar 22 10:36:17 EDT 2007

Hamish wrote:

> > I'm not sure that you really need tooltips when you already have a
> > text label, but if they are desired, they may as well contain the
> > contents of the ->description field.
> so parser.c/GUI acts like:
> if (->label == NULL)
> {
>    label = description;
>    description = NULL;
> }
> then the GUI only prints the shortened label, or if that doesn't exist
> it uses the full description as the label. (and tooltip is not possible)

When the ->label field was originally added, G_tcltk() did:

	desc = opt->label ? opt->label : opt->description;

However, this was changed to output both the ->label and ->description
fields verbatim, with the behaviour left up to the GUI code.

Currently, if ->label is provided, that is used for the item label
while ->description is used for the tooltip. If you don't have
->label, then ->description is used for the item label, and there's no
need for a tooltip (I would only repeat what the item label says).

Essentially, a two-sentence description is fine in the --help output
or the manual page, but not as a GUI label, hence the addition of the
->label field. But some descriptions are only a couple of words, so
there's no need for separate label text.

> > > Also in Flag and GModule structs.
> > > 
> > > Alternative (which I'm leaning towards):  keep ->label, just remove
> > > the weirdness and make it always be the tooltip.
> > 
> > The weirdness (e.g. misuse of those fields by G_OPT_WHERE and
> > G_OPT_V_CATS) should definitely be removed.
> >
> > I see no point in having a tooltip which says exactly the same thing
> > as the label. Tooltips are only useful if they contain additional
> > information which isn't in the button/checkbox/etc label (e.g. because
> > the button uses an icon or a terse description).
> so we have three possible levels of verbosity for an option description:
>   ->label:       a few words
>   ->description: a sentence
>   ->tooltip:     a paragraph/short example showing format (doesn't exist)

I'm not a fan of paragraph-length tooltips; there comes a point at
which you just need to refer to the manual.

> I think it is a good idea to keep ->description (as commonly used now)
> short and to the point, ie shorter than ~65 chars (so it fits on one
> line).

There are plenty of ->description fields which are longer than that,
some with embedded newlines. E.g.:

	case G_OPT_V_FIELD:
	    Opt->description  = _("A single vector map can be connected to multiple database "
				  "tables.\nThis number determines which table to use.");

> Certainly the label should quite short. It looks bad when the
> description is line wrapped in --help, or colliding with the right side
> of the GUI window.
> I guess what I don't like is that the description has a dual meaning
> depending on the context (ie if a label is present). I agree that it's
> dumb to duplicate the description as a tooltip in the 99% of the cases
> where there is no label.

The reasoning is that if the ->description is short enough to use as a
label, there's no need to go through all 300+ modules adding ->label
entries which simply duplicate the ->description.

> Also, the long description (or tooltip) with --help needs to have
> \t\t, as the text starts in a column determined by the longest option
> name and often it looks odd ("tooltip" extra descr starts out-of-line).

I'd rather see G_usage() do the formatting; tabs wouldn't be
appropriate if the description is used in a tooltip (and probably
wouldn't have the desired result in HTML).

Glynn Clements <glynn at gclements.plus.com>

More information about the grass-dev mailing list