fah-control/fah/wraplabel.py
2014-03-29 02:02:09 -07:00

50 lines
1.2 KiB
Python

import gtk
import gobject
import pango
class WrapLabel(gtk.Label):
__gtype_name__ = 'WrapLabel'
def __init__(self, str = None):
gtk.Label.__init__(self)
self.__wrap_width = 0
self.layout = self.get_layout()
self.layout.set_wrap(pango.WRAP_WORD_CHAR)
if str != None: self.set_text(str)
self.set_alignment(0, 0)
def do_size_request(self, requisition):
layout = self.get_layout()
width, height = layout.get_pixel_size()
requisition.width = 0
requisition.height = height
def do_size_allocate(self, allocation):
gtk.Label.do_size_allocate(self, allocation)
self.__set_wrap_width(allocation.width)
def set_text(self, str):
gtk.Label.set_text(self, str)
self.__set_wrap_width(self.__wrap_width)
def set_markup(self, str):
gtk.Label.set_markup(self, str)
self.__set_wrap_width(self.__wrap_width)
def __set_wrap_width(self, width):
if width == 0: return
layout = self.get_layout()
layout.set_width(width * pango.SCALE)
if self.__wrap_width != width:
self.__wrap_width = width
self.queue_resize()