comboentry in toolbar determines optimal width automatically

svn: r15840
This commit is contained in:
Benny Malengier 2010-08-31 10:00:46 +00:00
parent e24b184508
commit 5d4246b0a7
2 changed files with 12 additions and 3 deletions

View File

@ -82,11 +82,19 @@ class ShortlistComboEntry(ValidatedComboEntry):
# create the model and insert the items
model = gtk.ListStore(gtype, gobject.TYPE_BOOLEAN)
maxlen = -1
for item in items:
if len(str(item)) > maxlen:
maxlen = len(str(item))
model.append((item, False))
width = -1 #default width
if 1 < maxlen < 4:
width = 4
elif 1 < maxlen < 10:
width = maxlen + 1
ValidatedComboEntry.__init__(self, data_type, model,
COLUMN_ITEM, validator)
COLUMN_ITEM, validator, width=width)
if shortlist:
self._shortlist = []
self.connect("changed", self._on_combobox_changed)

View File

@ -65,10 +65,11 @@ class ValidatedComboEntry(gtk.ComboBox, gtk.CellLayout):
"""
__gtype_name__ = "ValidatedComboEntry"
def __init__(self, datatype, model=None, column=-1, validator=None):
def __init__(self, datatype, model=None, column=-1, validator=None, width=-1):
gtk.ComboBox.__init__(self, model)
self._entry = gtk.Entry()
self._entry.set_width_chars(width)
# <hack description="set the GTK_ENTRY(self._entry)->is_cell_renderer
# flag to TRUE in order to tell the entry to fill its allocation.">
dummy_event = gtk.gdk.Event(gtk.gdk.NOTHING)