diff --git a/lib/wibox/widget/background.lua.in b/lib/wibox/widget/background.lua.in index 09ded3e7c..560d74fc9 100644 --- a/lib/wibox/widget/background.lua.in +++ b/lib/wibox/widget/background.lua.in @@ -13,10 +13,11 @@ local setmetatable = setmetatable local pairs = pairs local type = type -module("wibox.widget.background") +-- wibox.widget.background +local background = { mt = {} } --- Draw this widget -function draw(box, wibox, cr, width, height) +function background.draw(box, wibox, cr, width, height) if not box.widget then return end @@ -46,7 +47,7 @@ function draw(box, wibox, cr, width, height) end --- Fit this widget into the given area -function fit(box, width, height) +function background.fit(box, width, height) if not box.widget then return 0, 0 end @@ -55,7 +56,7 @@ function fit(box, width, height) end --- Set the widget that is drawn on top of the background -function set_widget(box, widget) +function background.set_widget(box, widget) if box.widget then box.widget:disconnect_signal("widget::updated", box._emit_updated) end @@ -68,7 +69,7 @@ function set_widget(box, widget) end --- Set the background to use -function set_bg(box, bg) +function background.set_bg(box, bg) if bg then box.background = color(bg) else @@ -78,7 +79,7 @@ function set_bg(box, bg) end --- Set the foreground to use -function set_fg(box, fg) +function background.set_fg(box, fg) if fg then box.foreground = color(fg) else @@ -88,7 +89,7 @@ function set_fg(box, fg) end --- Set the background image to use -function set_bgimage(box, image) +function background.set_bgimage(box, image) box.bgimage = surface.load(image) box._emit_updated() end @@ -96,7 +97,7 @@ end local function new() local ret = base.make_widget() - for k, v in pairs(_M) do + for k, v in pairs(background) do if type(v) == "function" then ret[k] = v end @@ -109,6 +110,10 @@ local function new() return ret end -setmetatable(_M, { __call = function (_, ...) return new(...) end }) +function background.mt:__call(...) + return new(...) +end + +return setmetatable(background, background.mt) -- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80 diff --git a/lib/wibox/widget/base.lua.in b/lib/wibox/widget/base.lua.in index 9ee6bb70f..99f934bcc 100644 --- a/lib/wibox/widget/base.lua.in +++ b/lib/wibox/widget/base.lua.in @@ -10,19 +10,20 @@ local pairs = pairs local type = type local table = table -module("wibox.widget.base") +-- wibox.widget.base +local base = {} --- Set/get a widget's buttons -function buttons(widget, buttons) - if buttons then - widget.widget_buttons = buttons +function base.buttons(widget, _buttons) + if _buttons then + widget.widget_buttons = _buttons end return widget.widget_buttons end --- Handle a button event on a widget. This is used internally. -function handle_button(event, widget, x, y, button, modifiers) +function base.handle_button(event, widget, x, y, button, modifiers) local function is_any(mod) return #mod == 1 and mod[1] == "Any" end @@ -62,7 +63,7 @@ end -- that the needed signals are added and mouse input handling is set up. -- @param proxy If this is set, the returned widget will be a proxy for this -- widget. It will be equivalent to this widget. -function make_widget(proxy) +function base.make_widget(proxy) local ret = object() -- This signal is used by layouts to find out when they have to update. @@ -75,14 +76,14 @@ function make_widget(proxy) -- No buttons yet ret.widget_buttons = {} - ret.buttons = buttons + ret.buttons = base.buttons -- Make buttons work ret:connect_signal("button::press", function(...) - return handle_button("press", ...) + return base.handle_button("press", ...) end) ret:connect_signal("button::release", function(...) - return handle_button("release", ...) + return base.handle_button("release", ...) end) if proxy then @@ -98,7 +99,7 @@ end --- Do some sanity checking on widget. This function raises a lua error if -- widget is not a valid widget. -function check_widget(widget) +function base.check_widget(widget) debug.assert(type(widget) == "table") for k, func in pairs({ "draw", "fit", "add_signal", "connect_signal", "disconnect_signal" }) do debug.assert(type(widget[func]) == "function", func .. " is not a function") @@ -109,4 +110,6 @@ function check_widget(widget) debug.assert(type(height) == "number") end +return base + -- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80 diff --git a/lib/wibox/widget/imagebox.lua.in b/lib/wibox/widget/imagebox.lua.in index 14acb8a67..cad62c9b3 100644 --- a/lib/wibox/widget/imagebox.lua.in +++ b/lib/wibox/widget/imagebox.lua.in @@ -12,10 +12,11 @@ local type = type local pcall = pcall local print = print -module("wibox.widget.imagebox") +-- wibox.widget.imagebox +local imagebox = { mt = {} } --- Draw an imagebox with the given cairo context in the given geometry. -function draw(box, wibox, cr, width, height) +function imagebox.draw(box, wibox, cr, width, height) if not box.image then return end cr:save() @@ -37,7 +38,7 @@ function draw(box, wibox, cr, width, height) end --- Fit the imagebox into the given geometry -function fit(box, width, height) +function imagebox.fit(box, width, height) if not box.image then return 0, 0 end @@ -70,7 +71,7 @@ end --- Set an imagebox' image -- @param image Either a string or a cairo image surface. A string is -- interpreted as the path to a png image file. -function set_image(box, image) +function imagebox.set_image(box, image) local image = image if type(image) == "string" then @@ -101,7 +102,7 @@ end --- Should the image be resized to fit into the available space? -- @param allowed If false, the image will be clipped, else it will be resized -- to fit into the available space. -function set_resize(box, allowed) +function imagebox.set_resize(box, allowed) box.resize_forbidden = not allowed box:emit_signal("widget::updated") end @@ -110,7 +111,7 @@ end local function new() local ret = base.make_widget() - for k, v in pairs(_M) do + for k, v in pairs(imagebox) do if type(v) == "function" then ret[k] = v end @@ -119,6 +120,10 @@ local function new() return ret end -setmetatable(_M, { __call = function (_, ...) return new(...) end }) +function imagebox.mt:__call(...) + return new(...) +end + +return setmetatable(imagebox, imagebox.mt) -- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80 diff --git a/lib/wibox/widget/init.lua.in b/lib/wibox/widget/init.lua.in index 900a7566c..39d7082d1 100644 --- a/lib/wibox/widget/init.lua.in +++ b/lib/wibox/widget/init.lua.in @@ -4,12 +4,15 @@ -- @release @AWESOME_VERSION@ --------------------------------------------------------------------------- -require("wibox.widget.base") -require("wibox.widget.textbox") -require("wibox.widget.imagebox") -require("wibox.widget.background") -require("wibox.widget.systray") +-- wibox.widget -module("wibox.widget") +return +{ + base = require("wibox.widget.base"); + textbox = require("wibox.widget.textbox"); + imagebox = require("wibox.widget.imagebox"); + background = require("wibox.widget.background"); + systray = require("wibox.widget.systray"); +} -- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80 diff --git a/lib/wibox/widget/systray.lua.in b/lib/wibox/widget/systray.lua.in index a7e504260..9cc0ac288 100644 --- a/lib/wibox/widget/systray.lua.in +++ b/lib/wibox/widget/systray.lua.in @@ -11,13 +11,14 @@ local capi = { awesome = awesome } local setmetatable = setmetatable local error = error -module("wibox.widget.systray") +-- wibox.widget.systray +local systray = { mt = {} } local created_systray = false local horizontal = true local base_size = nil -function draw(box, wibox, cr, width, height) +function systray.draw(box, wibox, cr, width, height) local x, y, width, height = lbase.rect_to_device_geometry(cr, 0, 0, width, height) local num_entries = capi.awesome.systray() local bg = beautiful.bg_systray or beautiful.bg_normal @@ -36,7 +37,7 @@ function draw(box, wibox, cr, width, height) capi.awesome.systray(wibox.drawin, x, y, base, horizontal, bg) end -function fit(box, width, height) +function systray.fit(box, width, height) local num_entries = capi.awesome.systray() local base = base_size if base == nil then @@ -60,8 +61,8 @@ local function new() end created_systray = true - ret.fit = fit - ret.draw = draw + ret.fit = systray.fit + ret.draw = systray.draw ret.set_base_size = function(_, size) base_size = size end ret.set_horizontal = function(_, horiz) horizontal = horiz end @@ -72,6 +73,10 @@ local function new() return ret end -setmetatable(_M, { __call = function (_, ...) return new(...) end }) +function systray.mt:__call(...) + return new(...) +end + +return setmetatable(systray, systray.mt) -- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80 diff --git a/lib/wibox/widget/textbox.lua.in b/lib/wibox/widget/textbox.lua.in index a439f6822..07fd79509 100644 --- a/lib/wibox/widget/textbox.lua.in +++ b/lib/wibox/widget/textbox.lua.in @@ -16,7 +16,8 @@ local setmetatable = setmetatable local pairs = pairs local error = error -module("wibox.widget.textbox") +-- wibox.widget.textbox +local textbox = { mt = {} } -- Setup a pango layout for the given textbox and cairo context local function setup_layout(box, width, height) @@ -26,7 +27,7 @@ local function setup_layout(box, width, height) end --- Draw the given textbox on the given cairo context in the given geometry -function draw(box, wibox, cr, width, height) +function textbox.draw(box, wibox, cr, width, height) cr:update_layout(box._layout) setup_layout(box, width, height) local ink, logical = box._layout:get_pixel_extents() @@ -41,7 +42,7 @@ function draw(box, wibox, cr, width, height) end --- Fit the given textbox -function fit(box, width, height) +function textbox.fit(box, width, height) setup_layout(box, width, height) local ink, logical = box._layout:get_pixel_extents() return logical.width, logical.height @@ -49,7 +50,7 @@ end --- Set a textbox' text. -- @param text The text to set. This can contain pango markup (e.g. bold) -function set_markup(box, text) +function textbox.set_markup(box, text) local attr, parsed = Pango.parse_markup(text, -1, 0) -- In case of error, attr is false and parsed is an error message if not attr then error(parsed) end @@ -61,7 +62,7 @@ end --- Set a textbox' text. -- @param text The text to display. Pango markup is ignored and shown as-is. -function set_text(box, text) +function textbox.set_text(box, text) box._layout.text = text box._layout.attributes = nil box:emit_signal("widget::updated") @@ -69,7 +70,7 @@ end --- Set a textbox' ellipsize mode. -- @param mode Where should long lines be shortened? "start", "middle" or "end" -function set_ellipsize(box, mode) +function textbox.set_ellipsize(box, mode) local allowed = { none = "NONE", start = "START", middle = "MIDDLE", ["end"] = "END" } if allowed[mode] then box._layout:set_ellipsize(allowed[mode]) @@ -79,7 +80,7 @@ end --- Set a textbox' wrap mode. -- @param mode Where to wrap? After "word", "char" or "word_char" -function set_wrap(box, mode) +function textbox.set_wrap(box, mode) local allowed = { word = "WORD", char = "CHAR", word_char = "WORD_CHAR" } if allowed[mode] then box._layout:set_wrap(allowed[mode]) @@ -89,7 +90,7 @@ end --- Set a textbox' vertical alignment -- @param mode Where should the textbox be drawn? "top", "center" or "bottom" -function set_valign(box, mode) +function textbox.set_valign(box, mode) local allowed = { top = true, center = true, bottom = true } if allowed[mode] then box._valign = mode @@ -99,7 +100,7 @@ end --- Set a textbox' horizontal alignment -- @param mode Where should the textbox be drawn? "left", "center" or "right" -function set_align(box, mode) +function textbox.set_align(box, mode) local allowed = { left = "LEFT", center = "CENTER", right = "RIGHT" } if allowed[mode] then box._layout:set_alignment(allowed[mode]) @@ -109,7 +110,7 @@ end --- Set a textbox' font -- @param font The font description as string -function set_font(box, font) +function textbox.set_font(box, font) box._layout:set_font_description(beautiful.get_font(font)) end @@ -117,7 +118,7 @@ end local function new() local ret = base.make_widget() - for k, v in pairs(_M) do + for k, v in pairs(textbox) do if type(v) == "function" then ret[k] = v end @@ -135,6 +136,10 @@ local function new() return ret end -setmetatable(_M, { __call = function (_, ...) return new(...) end }) +function textbox.mt:__call(...) + return new(...) +end + +return setmetatable(textbox, textbox.mt) -- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80