Initial commit
This commit is contained in:
commit
209ba130c0
4852 changed files with 1517959 additions and 0 deletions
95
.config/lite-xl/libraries/widget/progressbar.lua
Normal file
95
.config/lite-xl/libraries/widget/progressbar.lua
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
--
|
||||
-- ProgressBar Widget.
|
||||
-- @copyright Jefferson Gonzalez
|
||||
-- @license MIT
|
||||
--
|
||||
|
||||
local style = require "core.style"
|
||||
local Widget = require "libraries.widget"
|
||||
|
||||
---@class widget.progressbar : widget
|
||||
---@field public percent number
|
||||
---@field public show_percent boolean
|
||||
---@field private percent_width number
|
||||
---@field private percent_x number
|
||||
---@field private percent_y number
|
||||
local ProgressBar = Widget:extend()
|
||||
|
||||
---Constructor
|
||||
---@param parent widget
|
||||
---@param percent number
|
||||
---@param width number
|
||||
function ProgressBar:new(parent, percent, width)
|
||||
ProgressBar.super.new(self, parent)
|
||||
self.type_name = "widget.progressbar"
|
||||
self.clickable = false
|
||||
self.percent = percent or 0
|
||||
self.percent_width = 0
|
||||
self.show_percent = true
|
||||
self:set_size(width or 200, self:get_font():get_height() + style.padding.y)
|
||||
end
|
||||
|
||||
---@param percent number
|
||||
function ProgressBar:set_percent(percent)
|
||||
self.percent = percent
|
||||
end
|
||||
|
||||
---@return number
|
||||
function ProgressBar:get_percent()
|
||||
return self.percent
|
||||
end
|
||||
|
||||
function ProgressBar:update()
|
||||
if not ProgressBar.super.update(self) then return false end
|
||||
|
||||
local font = self:get_font()
|
||||
|
||||
-- update the size
|
||||
self:set_label(self.percent .. "%")
|
||||
|
||||
self:set_size(
|
||||
nil,
|
||||
font:get_height() + style.padding.y
|
||||
)
|
||||
|
||||
local percent_width = (self.size.x * (self.percent / 100))
|
||||
|
||||
self:move_towards(self, "percent_width", percent_width, 0.2)
|
||||
|
||||
if self.show_percent then
|
||||
self.percent_x = (self:get_width() / 2)
|
||||
- (font:get_width(self.label) / 2)
|
||||
|
||||
self.percent_y = style.padding.y / 2
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
function ProgressBar:draw()
|
||||
if not ProgressBar.super.draw(self) then return false end
|
||||
|
||||
renderer.draw_rect(
|
||||
self.position.x,
|
||||
self.position.y,
|
||||
self.percent_width,
|
||||
self.size.y,
|
||||
style.dim
|
||||
)
|
||||
|
||||
if self.show_percent then
|
||||
renderer.draw_text(
|
||||
self:get_font(),
|
||||
self.label,
|
||||
self.position.x + self.percent_x,
|
||||
self.position.y + self.percent_y,
|
||||
style.text
|
||||
)
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
|
||||
return ProgressBar
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue