OverviewFilesCommitsIssuesDocsReleasesPeers

hardops / ui_framework / form_ui / elements / label.py

50 lines · python ref:
from ....utility.screen import dpi_factor
from ... graphics.draw import render_text
from ... utils.geo import get_blf_text_dims
from . import Dims


class Label:
    def __init__(self, text="", font_primary=True, font_size=12, width=0, height=0):
        self.dims = Dims()
        self.text = text
        self.font_primary = font_primary
        self.font_size = font_size
        self.width = width * dpi_factor(min=0.5)
        self.height = height * dpi_factor(min=0.5)
        self.font_color = (0,0,0,1)


    def build(self, db, x_offset, h_offset):
        self.font_color = db.color.text if self.font_primary else db.color.secondary_text

        dims = get_blf_text_dims(self.text, self.font_size)
        pad = self.dims.padding

        # Use width
        if self.width:
            self.dims.max_width = self.width
        # Use text
        else:
            self.dims.max_width = dims[0] + pad * 2

        # Use height
        if self.height:
            self.dims.max_height = self.height
        # Use text
        else:
            self.dims.max_height = dims[1] + pad * 2

        self.dims.x_pos = x_offset + pad
        self.dims.y_pos = h_offset + pad


    def update(self, context, event, db): pass


    def draw(self, db):
        render_text(self.text, (self.dims.x_pos, self.dims.y_pos), self.font_size, self.font_color)


    def draw_tips(self, db): pass
    def shut_down(self, context): pass