Source code for enaml.qt.qt_label
#------------------------------------------------------------------------------
# Copyright (c) 2012, Enthought, Inc.
# All rights reserved.
#------------------------------------------------------------------------------
from .qt.QtCore import Qt
from .qt.QtGui import QLabel
from .qt_constraints_widget import size_hint_guard
from .qt_control import QtControl
ALIGN_MAP = {
'left': Qt.AlignLeft,
'right': Qt.AlignRight,
'center': Qt.AlignHCenter,
'justify': Qt.AlignJustify,
}
VERTICAL_ALIGN_MAP = {
'top': Qt.AlignTop,
'bottom': Qt.AlignBottom,
'center': Qt.AlignVCenter,
}
[docs]class QtLabel(QtControl):
""" A Qt implementation of an Enaml Label.
"""
#--------------------------------------------------------------------------
# Setup Methods
#--------------------------------------------------------------------------
[docs] def create(self, tree):
""" Create and initialize the underlying widget.
"""
super(QtLabel, self).create(tree)
self.set_text(tree['text'])
self.set_align(tree['align'])
self.set_vertical_align(tree['vertical_align'])
#--------------------------------------------------------------------------
# Message Handlers
#--------------------------------------------------------------------------
[docs] def on_action_set_text(self, content):
""" Handle the 'set_text' action from the Enaml widget.
"""
with size_hint_guard(self):
self.set_text(content['text'])
[docs] def on_action_set_align(self, content):
""" Handle the 'set_align' action from the Enaml widget.
"""
self.set_align(content['align'])
[docs] def on_action_set_vertical_align(self, content):
""" Handle the 'set_vertical_align' action from the Enaml widget.
"""
self.set_vertical_align(content['vertical_align'])
#--------------------------------------------------------------------------
# Widget Update Methods
#--------------------------------------------------------------------------
[docs] def set_text(self, text):
""" Set the text in the underlying widget.
"""
self.widget().setText(text)
[docs] def set_align(self, align):
""" Set the alignment of the text in the underlying widget.
"""
widget = self.widget()
alignment = widget.alignment()
alignment &= ~Qt.AlignHorizontal_Mask
alignment |= ALIGN_MAP[align]
widget.setAlignment(alignment)
[docs] def set_vertical_align(self, align):
""" Set the vertical alignment of the text in the underlying
widget.
"""
widget = self.widget()
alignment = widget.alignment()
alignment &= ~Qt.AlignVertical_Mask
alignment |= VERTICAL_ALIGN_MAP[align]
widget.setAlignment(alignment)