luca-awesome-dotfiles/home/.config/awesome/ui/widgets/button.lua
2023-03-10 23:53:57 +01:00

108 lines
No EOL
3.3 KiB
Lua

local wibox = require("wibox")
local beautiful = require("beautiful")
local dpi = beautiful.xresources.apply_dpi
local gears = require("gears")
local button = {}
button.create = function(image, size, radius, margin, bg, bg_hover, bg_press,
command)
local button_image = wibox.widget {
image = image,
forced_height = size,
forced_width = size,
widget = wibox.widget.imagebox
}
local button = wibox.widget {
{button_image, margins = dpi(margin), widget = wibox.container.margin},
bg = bg,
shape = function(cr, width, height)
gears.shape.rounded_rect(cr, width, height, dpi(radius))
end,
widget = wibox.container.background
}
button:connect_signal("button::press", function()
button.bg = bg_press
command()
end)
button:connect_signal("button::leave", function() button.bg = bg end)
button:connect_signal("mouse::enter", function() button.bg = bg_hover end)
button:connect_signal("mouse::leave", function() button.bg = bg end)
button.update_image = function(image) button_image.image = image end
return button
end
button.create_widget = function(widget, command)
local button = wibox.widget {
{widget, margins = dpi(10), widget = wibox.container.margin},
bg = beautiful.bg_normal,
shape = function(cr, width, height)
gears.shape.rounded_rect(cr, width, height, dpi(10))
end,
widget = wibox.container.background
}
button:connect_signal("button::press", function()
button.bg = beautiful.bg_very_light
command()
end)
button:connect_signal("button::leave",
function() button.bg = beautiful.bg_normal end)
button:connect_signal("mouse::enter",
function() button.bg = beautiful.bg_light end)
button:connect_signal("mouse::leave",
function() button.bg = beautiful.bg_normal end)
return button
end
button.create_image = function(image, image_hover)
local image_widget = wibox.widget {
image = image,
widget = wibox.widget.imagebox
}
image_widget:connect_signal("mouse::enter",
function() image_widget.image = image_hover end)
image_widget:connect_signal("mouse::leave",
function() image_widget.image = image end)
return image_widget
end
button.create_image_onclick = function(image, image_hover, onclick)
local image = button.create_image(image, image_hover)
local container = wibox.widget {image, widget = wibox.container.background}
container:connect_signal("button::press", onclick)
return container
end
button.create_text = function(color, color_hover, text, font)
local textWidget = wibox.widget {
font = font,
markup = "<span foreground='" .. color .. "'>" .. text .. "</span>",
widget = wibox.widget.textbox
}
textWidget:connect_signal("mouse::enter", function()
textWidget.markup =
"<span foreground='" .. color_hover .. "'>" .. text .. "</span>"
end)
textWidget:connect_signal("mouse::leave", function()
textWidget.markup = "<span foreground='" .. color .. "'>" .. text ..
"</span>"
end)
return textWidget
end
return button