Author: Donal K. Fellows <[email protected]> State: Draft Type: Project Vote: Pending Created: 07-Nov-2019 Post-History: Tcl-Version: 9.1 Keywords: Tk, label, listbox, entry
This TIP proposes a mechanism for getting Tk widgets to insert an ellipsis instead of wrapping or scrolling (in widgets where this makes sense) a line of text.
Adding an ellipsis when a piece of text is too wide to be shown in its
entirety is a common modern GUI idiom, and one that is relatively easily
implemented in Tcl/Tk as is. However, we do this in general by measuring the
font measure) by hand and determining where the ellipsis should
be inserted, and then modifying the text itself to insert the ellipsis. This
makes it difficult to make the position of the ellipsis change as the width
of the widget changes, as we have to add code that observes the change to the
View (via a
<Configure> event on the widget) and update the Model in
response, despite the true underlying Model not changing at all.
Instead, we should have the widgets do the work for us, so that we can just indicate what the true text is and tell Tk that it should insert ellipses as and where required without further user intervention.
When a widget supports applying an ellipsis, it will take a new option,
-ellipsis, that will allow the specification of an ellipsis (as a string;
there are multiple ways of expressing an ellipsis, and the right choice
depends on other features of the interface) that gives a symbol to use after
trimming off the text at a character boundary in order for the text
including the ellipsis to fit inside the widget's width.
For label-based widgets (i.e., labels, buttons, checkbuttons, radiobuttons)
-wraplength will be used as the limit width for ellipsis
insertion, where defined. Otherwise the width of the text part of the
widget (based on the widget width and the impact of any compound images) will
For the entry-based and listbox-based widgets (including spinboxes and comboboxes) the widget width will be used.
Note that the ellipsis insertion code will always use the font set in the widget, and widgets that are so narrow that they cannot display the ellipsis itself may look strange.
To be done.
This document is placed in public domain.