Initial Commit
This commit is contained in:
80
widget/material/icon.lua
Normal file
80
widget/material/icon.lua
Normal file
@@ -0,0 +1,80 @@
|
||||
-- Default widget requirements
|
||||
local base = require('wibox.widget.base')
|
||||
local gtable = require('gears.table')
|
||||
local setmetatable = setmetatable
|
||||
|
||||
-- Commons requirements
|
||||
local wibox = require('wibox')
|
||||
|
||||
-- Local declarations
|
||||
|
||||
local mat_list_item = {mt = {}}
|
||||
|
||||
function mat_list_item:layout(_, width, height)
|
||||
local layout = {}
|
||||
|
||||
-- Add divider if present
|
||||
if self._private.icon then
|
||||
table.insert(
|
||||
layout,
|
||||
base.place_widget_at(
|
||||
self._private.imagebox,
|
||||
width / 2 - self._private.size / 2,
|
||||
height / 2 - self._private.size / 2,
|
||||
self._private.size,
|
||||
self._private.size
|
||||
)
|
||||
)
|
||||
end
|
||||
return layout
|
||||
end
|
||||
|
||||
function mat_list_item:fit(_, width, height)
|
||||
local min = math.min(width, height)
|
||||
return min, min
|
||||
end
|
||||
|
||||
function mat_list_item:set_icon(icon)
|
||||
self._private.icon = icon
|
||||
self._private.imagebox.image = icon
|
||||
end
|
||||
|
||||
function mat_list_item:get_icon()
|
||||
return self._private.icon
|
||||
end
|
||||
|
||||
function mat_list_item:set_size(size)
|
||||
self._private.size = size
|
||||
self:emit_signal('widget::layout_changed')
|
||||
end
|
||||
|
||||
function mat_list_item:get_size()
|
||||
return self._private.size
|
||||
end
|
||||
|
||||
local function new(icon, size)
|
||||
local ret =
|
||||
base.make_widget(
|
||||
nil,
|
||||
nil,
|
||||
{
|
||||
enable_properties = true
|
||||
}
|
||||
)
|
||||
|
||||
gtable.crush(ret, mat_list_item, true)
|
||||
ret._private.icon = icon
|
||||
ret._private.imagebox = wibox.widget.imagebox(icon)
|
||||
ret._private.size = size
|
||||
return ret
|
||||
end
|
||||
|
||||
function mat_list_item.mt:__call(...)
|
||||
return new(...)
|
||||
end
|
||||
|
||||
--@DOC_widget_COMMON@
|
||||
|
||||
--@DOC_object_COMMON@
|
||||
|
||||
return setmetatable(mat_list_item, mat_list_item.mt)
|
||||
Reference in New Issue
Block a user