wibox: Add a `to_widget()` and `save_to_svg()` method.

Take a wibox snapshot as a widget. It also add an helper to save
it to a file. This is useful for debugging when called from
`awesome-client`
This commit is contained in:
Emmanuel Lepage Vallee 2017-07-01 22:43:01 -04:00
parent 1592180c83
commit cedeb2bb5a
1 changed files with 31 additions and 0 deletions

View File

@ -63,6 +63,37 @@ function wibox:find_widgets(x, y)
return self._drawable:find_widgets(x, y) return self._drawable:find_widgets(x, y)
end end
--- Create a widget that reflects the current state of this wibox.
-- @treturn widget A new widget.
function wibox:to_widget()
local bw = self.border_width or beautiful.border_width or 0
return wibox.widget {
{
self:get_widget(),
margins = bw,
widget = wibox.container.margin
},
bg = self.bg or beautiful.bg_normal or "#ffffff",
fg = self.fg or beautiful.fg_normal or "#000000",
shape_border_color = self.border_color or beautiful.border_color or "#000000",
shape_border_width = bw*2,
shape_clip = true,
shape = self._shape,
forced_width = self:geometry().width + 2*bw,
forced_height = self:geometry().height + 2*bw,
widget = wibox.container.background
}
end
--- Save a screenshot of the wibox to `path`.
-- @tparam string path The path.
-- @tparam[opt=nil] table context A widget context.
function wibox:save_to_svg(path, context)
wibox.widget.draw_to_svg_file(
self:to_widget(), path, self:geometry().width, self:geometry().height, context
)
end
function wibox:_apply_shape() function wibox:_apply_shape()
local shape = self._shape local shape = self._shape