Files
japanese-srs-trainer-wanikani/awesome/src/modules/context_menu.lua

113 lines
3.3 KiB
Lua

---------------------------------------
-- This is the brightness_osd module --
---------------------------------------
-- Awesome Libs
local awful = require("awful")
local dpi = require("beautiful").xresources.apply_dpi
local gears = require("gears")
local wibox = require("wibox")
return function(args)
if not args then
return
end
local function get_entries()
local menu_entries = { layout = wibox.layout.fixed.vertical, spacing = dpi(10) }
if args.entries then
for _, entry in ipairs(args.entries) do
local menu_entry = wibox.widget {
{
{
{
{ -- Icon
widget = wibox.widget.imagebox,
image = gears.color.recolor_image(entry.icon, Theme_config.context_menu.entry.icon_color),
valign = "center",
halign = "center",
resize = true,
icon = entry.icon,
id = "icon"
},
widget = wibox.container.constraint,
stragety = "exact",
width = dpi(24),
height = dpi(24),
id = "const"
},
{ -- Text
widget = wibox.widget.textbox,
text = entry.name,
id = "name"
},
id = "lay",
spacing = dpi(5),
layout = wibox.layout.fixed.horizontal
},
margins = dpi(10),
widget = wibox.container.margin,
id = "mar"
},
bg = Theme_config.context_menu.entry.bg,
fg = Theme_config.context_menu.entry.fg,
shape = Theme_config.context_menu.entry.shape,
border_width = Theme_config.context_menu.entry.border_width,
border_color = Theme_config.context_menu.entry.border_color,
widget = wibox.container.background,
id = "menu_entry"
}
menu_entry:buttons(gears.table.join(
awful.button({
modifiers = {},
button = 1,
on_release = function()
awesome.emit_signal("context_menu::hide")
entry.callback()
end
})
))
Hover_signal(menu_entry, nil, Theme_config.context_menu.entry.hover_fg,
Theme_config.context_menu.entry.hover_border, Theme_config.context_menu.entry.icon_color,
Theme_config.context_menu.entry.icon_color_hover)
table.insert(menu_entries, menu_entry)
end
end
return menu_entries
end
local menu = awful.popup {
widget = {
get_entries(),
margins = dpi(10),
widget = wibox.container.margin
},
bg = Theme_config.context_menu.bg,
fg = Theme_config.context_menu.fg,
border_width = Theme_config.context_menu.border_width,
border_color = Theme_config.context_menu.border_color,
shape = Theme_config.context_menu.shape,
x = mouse.coords().x,
y = mouse.coords().y,
visible = false,
ontop = true,
placement = awful.placement.no_offscreen,
}
menu:connect_signal("mouse::leave", function()
awesome.emit_signal("context_menu::hide")
end)
awesome.connect_signal(
"context_menu::hide",
function()
menu.visible = false
end
)
return menu
end