Initial commit
This commit is contained in:
commit
209ba130c0
4852 changed files with 1517959 additions and 0 deletions
94
.config/lite-xl/libraries/widget/label.lua
Normal file
94
.config/lite-xl/libraries/widget/label.lua
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
--
|
||||
-- Label Widget.
|
||||
-- @copyright Jefferson Gonzalez
|
||||
-- @license MIT
|
||||
--
|
||||
|
||||
local style = require "core.style"
|
||||
local Widget = require "libraries.widget"
|
||||
|
||||
---@class widget.label : widget
|
||||
local Label = Widget:extend()
|
||||
|
||||
---Constructor
|
||||
---@param parent widget
|
||||
---@param label string
|
||||
function Label:new(parent, label)
|
||||
Label.super.new(self, parent)
|
||||
self.type_name = "widget.label"
|
||||
self.clickable = false
|
||||
self.border.width = 0
|
||||
self.custom_size = {x = 0, y = 0}
|
||||
|
||||
self:set_label(label or "")
|
||||
end
|
||||
|
||||
---@param width? integer
|
||||
---@param height? integer
|
||||
function Label:set_size(width, height)
|
||||
Label.super.set_size(self, width, height)
|
||||
self.custom_size.x = self.size.x
|
||||
self.custom_size.y = self.size.y
|
||||
end
|
||||
|
||||
---Set the label text and recalculates the widget size.
|
||||
---@param text string|widget.styledtext
|
||||
function Label:set_label(text)
|
||||
Label.super.set_label(self, text)
|
||||
|
||||
local font = self:get_font()
|
||||
|
||||
if self.custom_size.x <= 0 then
|
||||
if type(text) == "table" then
|
||||
self.size.x, self.size.y = self:draw_styled_text(text, 0, 0, true)
|
||||
else
|
||||
self.size.x = font:get_width(self.label)
|
||||
self.size.y = font:get_height()
|
||||
end
|
||||
|
||||
if self.border.width > 0 then
|
||||
self.size.x = self.size.x + style.padding.x
|
||||
self.size.y = self.size.y + style.padding.y
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function Label:update()
|
||||
if not Label.super.update(self) then return false end
|
||||
|
||||
if self.custom_size.x <= 0 then
|
||||
-- update the size
|
||||
self:set_label(self.label)
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
function Label:draw()
|
||||
if not self:is_visible() then return false end
|
||||
|
||||
self:draw_border()
|
||||
|
||||
local px = self.border.width > 0 and (style.padding.x / 2) or 0
|
||||
local py = self.border.width > 0 and (style.padding.y / 2) or 0
|
||||
|
||||
local posx, posy = self.position.x + px, self.position.y + py
|
||||
|
||||
if type(self.label) == "table" then
|
||||
self:draw_styled_text(self.label, posx, posy)
|
||||
else
|
||||
renderer.draw_text(
|
||||
self:get_font(),
|
||||
self.label,
|
||||
posx,
|
||||
posy,
|
||||
self.foreground_color or style.text
|
||||
)
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
|
||||
return Label
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue