# utils.py # # Copyright (c) 2004 Thomas Woerner # Copyright (c) 2006 Florian Festi # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. import gtk from pango import SCALE ### set autowrapping for all labels in this widget tree def set_autowrap(widget): if isinstance(widget, gtk.Container): children = widget.get_children() for i in xrange(len(children)): set_autowrap(children[i]) elif isinstance(widget, gtk.Label) and widget.get_line_wrap(): widget.connect_after("size-allocate", label_size_allocate) ### set wrap width to the pango.Layout of the labels ### def label_size_allocate(widget, allocation): layout = widget.get_layout() lw_old, lh_old = layout.get_size() # fixed width labels if lw_old/SCALE == allocation.width: return layout.set_width(allocation.width * SCALE) lw, lh = layout.get_size() if lh_old != lh: widget.set_size_request(-1, lh/SCALE) return