diff --git a/lib/awful/widget/common.lua.in b/lib/awful/widget/common.lua.in index f7e008ad..cc38d6c2 100644 --- a/lib/awful/widget/common.lua.in +++ b/lib/awful/widget/common.lua.in @@ -13,6 +13,7 @@ local pcall = pcall local setmetatable = setmetatable local capi = { button = button } local util = require("awful.util") +local wibox = require("wibox") local imagebox = require("wibox.widget.imagebox") local textbox = require("wibox.widget.textbox") diff --git a/lib/wibox/layout/align.lua.in b/lib/wibox/layout/align.lua.in index d3a3d397..b98f1b65 100644 --- a/lib/wibox/layout/align.lua.in +++ b/lib/wibox/layout/align.lua.in @@ -11,7 +11,8 @@ local type = type local base = require("wibox.layout.base") local widget_base = require("wibox.widget.base") -module("wibox.layout.align") +-- wibox.layout.align +local align = {} -- Draw the given align layout. dir describes the orientation of the layout, "x" -- means horizontal while "y" is vertical. @@ -73,24 +74,24 @@ local function widget_changed(layout, old_w, new_w) end --- Set the layout's first widget. This is the widget that is at the left/top -function set_first(layout, widget) +function align.set_first(layout, widget) widget_changed(layout, layout.first, widget) layout.first = widget end --- Set the layout's second widget. This is the centered one. -function set_second(layout, widget) +function align.set_second(layout, widget) widget_changed(layout, layout.second, widget) layout.second = widget end --- Set the layout's third widget. This is the widget that is at the right/bottom -function set_third(layout, widget) +function align.set_third(layout, widget) widget_changed(layout, layout.third, widget) layout.third = widget end -function reset(layout) +function align.reset(layout) for k, v in pairs({ "first", "second", "third" }) do layout[v] = nil end @@ -110,7 +111,7 @@ local function get_layout(dir) ret:emit_signal("widget::updated") end - for k, v in pairs(_M) do + for k, v in pairs(align) do if type(v) == "function" then ret[k] = v end @@ -123,7 +124,7 @@ end -- three widgets. The widget set via :set_left() is left-aligned. :set_right() -- sets a widget which will be right-aligned. The remaining space between those -- two will be given to the widget set via :set_middle(). -function horizontal() +function align.horizontal() local ret = get_layout("x") ret.set_left = ret.set_first @@ -137,7 +138,7 @@ end -- three widgets. The widget set via :set_top() is top-aligned. :set_bottom() -- sets a widget which will be bottom-aligned. The remaining space between those -- two will be given to the widget set via :set_middle(). -function vertical() +function align.vertical() local ret = get_layout("y") ret.set_top = ret.set_first @@ -147,4 +148,6 @@ function vertical() return ret end +return align + -- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80 diff --git a/lib/wibox/layout/base.lua.in b/lib/wibox/layout/base.lua.in index c3449d5b..f4758589 100644 --- a/lib/wibox/layout/base.lua.in +++ b/lib/wibox/layout/base.lua.in @@ -8,11 +8,12 @@ local pairs = pairs local pcall = pcall local print = print -module("wibox.layout.base") +-- wibox.layout.base +local base = {} --- Figure out the geometry in device coordinate space. This will break if -- someone rotates the coordinate space by a non-multiple of 90°. -function rect_to_device_geometry(cr, x, y, width, height) +function base.rect_to_device_geometry(cr, x, y, width, height) local function min(a, b) if a < b then return a end return b @@ -40,7 +41,7 @@ end -- @param y The position that the widget should get -- @param width The widget's width -- @param height The widget's height -function draw_widget(wibox, cr, widget, x, y, width, height) +function base.draw_widget(wibox, cr, widget, x, y, width, height) -- Use save() / restore() so that our modifications aren't permanent cr:save() @@ -58,9 +59,11 @@ function draw_widget(wibox, cr, widget, x, y, width, height) end -- Register the widget for input handling - wibox:widget_at(widget, rect_to_device_geometry(cr, 0, 0, width, height)) + wibox:widget_at(widget, base.rect_to_device_geometry(cr, 0, 0, width, height)) cr:restore() end +return base + -- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80 diff --git a/lib/wibox/layout/fixed.lua.in b/lib/wibox/layout/fixed.lua.in index 0d6d793d..a163ab37 100644 --- a/lib/wibox/layout/fixed.lua.in +++ b/lib/wibox/layout/fixed.lua.in @@ -9,7 +9,8 @@ local widget_base = require("wibox.widget.base") local table = table local pairs = pairs -module("wibox.layout.fixed") +-- wibox.layout.fixed +local fixed = {} --- Draw a fixed layout. Each widget gets just the space it asks for. -- @param dir "x" for a horizontal layout and "y" for vertical. @@ -20,7 +21,7 @@ module("wibox.layout.fixed") -- @param width The available width. -- @param height The available height. -- @return The total space needed by the layout. -function draw_fixed(dir, widgets, fill_space, wibox, cr, width, height) +function fixed.draw_fixed(dir, widgets, fill_space, wibox, cr, width, height) local pos = 0 for k, v in pairs(widgets) do @@ -53,7 +54,7 @@ function draw_fixed(dir, widgets, fill_space, wibox, cr, width, height) end --- Add a widget to the given fixed layout -function add(layout, widget) +function fixed.add(layout, widget) widget_base.check_widget(widget) table.insert(layout.widgets, widget) widget:connect_signal("widget::updated", layout._emit_updated) @@ -65,7 +66,7 @@ end -- @param widgets The widgets to fit. -- @param orig_width The available width. -- @param orig_height The available height. -function fit_fixed(dir, widgets, orig_width, orig_height) +function fixed.fit_fixed(dir, widgets, orig_width, orig_height) local width, height = orig_width, orig_height local used_in_dir, used_max = 0, 0 @@ -101,7 +102,7 @@ function fit_fixed(dir, widgets, orig_width, orig_height) end --- Reset a fixed layout. This removes all widgets from the layout. -function reset(layout) +function fixed.reset(layout) for k, v in pairs(layout.widgets) do v:disconnect_signal("widget::updated", layout._emit_updated) end @@ -112,25 +113,25 @@ end --- Set the layout's fill_space property. If this property is true, the last -- widget will get all the space that is left. If this is false, the last widget -- won't be handled specially and there can be space left unused. -function fill_space(layout, val) +function fixed.fill_space(layout, val) layout._fill_space = val layout:emit_signal("widget::updated") end local function get_layout(dir) local function draw(layout, ...) - draw_fixed(dir, layout.widgets, layout._fill_space, ...) + fixed.draw_fixed(dir, layout.widgets, layout._fill_space, ...) end local function fit(layout, ...) - return fit_fixed(dir, layout.widgets, ...) + return fixed.fit_fixed(dir, layout.widgets, ...) end local ret = widget_base.make_widget() ret.draw = draw ret.fit = fit - ret.add = add - ret.reset = reset - ret.fill_space = fill_space + ret.add = fixed.add + ret.reset = fixed.reset + ret.fill_space = fixed.fill_space ret.widgets = {} ret.get_dir = function () return dir end ret._emit_updated = function() @@ -143,15 +144,17 @@ end --- Returns a new horizontal fixed layout. Each widget will get as much space as it -- asks for and each widget will be drawn next to its neighboring widget. -- Widgets can be added via :add(). -function horizontal() +function fixed.horizontal() return get_layout("x") end --- Returns a new vertical fixed layout. Each widget will get as much space as it -- asks for and each widget will be drawn next to its neighboring widget. -- Widgets can be added via :add(). -function vertical() +function fixed.vertical() return get_layout("y") end +return fixed + -- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80 diff --git a/lib/wibox/layout/flex.lua.in b/lib/wibox/layout/flex.lua.in index 7f59aa12..92ee41d3 100644 --- a/lib/wibox/layout/flex.lua.in +++ b/lib/wibox/layout/flex.lua.in @@ -11,7 +11,8 @@ local table = table local pairs = pairs local floor = math.floor -module("wibox.layout.flex") +-- wibox.layout.flex +local flex = {} local function round(x) return floor(x + 0.5) @@ -24,7 +25,7 @@ end -- @param width The available width. -- @param height The available height. -- @return The total space needed by the layout. -function draw_flex(dir, widgets, wibox, cr, width, height) +function flex.draw_flex(dir, widgets, wibox, cr, width, height) local pos = 0 local num = #widgets @@ -72,7 +73,7 @@ end local function get_layout(dir) local function draw(layout, wibox, cr, width, height) - draw_flex(dir, layout.widgets, wibox, cr, width, height) + flex.draw_flex(dir, layout.widgets, wibox, cr, width, height) end local function fit(layout, width, height) @@ -95,14 +96,16 @@ end --- Returns a new horizontal flex layout. A flex layout shares the available space -- equally among all widgets. Widgets can be added via :add(widget). -function horizontal() +function flex.horizontal() return get_layout("x") end --- Returns a new vertical flex layout. A flex layout shares the available space -- equally among all widgets. Widgets can be added via :add(widget). -function vertical() +function flex.vertical() return get_layout("y") end +return flex + -- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80 diff --git a/lib/wibox/layout/init.lua.in b/lib/wibox/layout/init.lua.in index 0b934a55..d50a5ba6 100644 --- a/lib/wibox/layout/init.lua.in +++ b/lib/wibox/layout/init.lua.in @@ -4,14 +4,17 @@ -- @release @AWESOME_VERSION@ --------------------------------------------------------------------------- -require("wibox.layout.base") -require("wibox.layout.fixed") -require("wibox.layout.align") -require("wibox.layout.flex") -require("wibox.layout.rotate") -require("wibox.layout.margin") -require("wibox.layout.mirror") +-- wibox.layout -module("wibox.layout") +return +{ + base = require("wibox.layout.base"); + fixed = require("wibox.layout.fixed"); + align = require("wibox.layout.align"); + flex = require("wibox.layout.flex"); + rotate = require("wibox.layout.rotate"); + margin = require("wibox.layout.margin"); + mirror = require("wibox.layout.mirror"); +} -- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80 diff --git a/lib/wibox/layout/margin.lua.in b/lib/wibox/layout/margin.lua.in index d6a52bb7..62f0c932 100644 --- a/lib/wibox/layout/margin.lua.in +++ b/lib/wibox/layout/margin.lua.in @@ -10,10 +10,11 @@ local setmetatable = setmetatable local base = require("wibox.layout.base") local widget_base = require("wibox.widget.base") -module("wibox.layout.margin") +-- wibox.layout.margin +local margin = { mt = {} } --- Draw a margin layout -function draw(layout, wibox, cr, width, height) +function margin.draw(layout, wibox, cr, width, height) local x = layout.left local y = layout.top local w = layout.right @@ -27,7 +28,7 @@ function draw(layout, wibox, cr, width, height) end --- Fit a margin layout into the given space -function fit(layout, width, height) +function margin.fit(layout, width, height) local extra_w = layout.left + layout.right local extra_h = layout.top + layout.bottom local w, h = 0, 0 @@ -38,7 +39,7 @@ function fit(layout, width, height) end --- Set the widget that this layout adds a margin on. -function set_widget(layout, widget) +function margin.set_widget(layout, widget) if layout.widget then layout.widget:disconnect_signal("widget::updated", layout._emit_updated) end @@ -51,7 +52,7 @@ function set_widget(layout, widget) end --- Set all the margins to val. -function set_margins(layout, val) +function margin.set_margins(layout, val) layout.left = val layout.right = val layout.top = val @@ -60,7 +61,7 @@ function set_margins(layout, val) end --- Reset this layout. The widget will be unreferenced and the margins set to 0. -function reset(layout) +function margin.reset(layout) layout:set_widget(nil) layout:set_margins(0) end @@ -91,7 +92,7 @@ end -- Create setters for each direction for k, v in pairs({ "left", "right", "top", "bottom" }) do - _M["set_" .. v] = function(layout, val) + margin["set_" .. v] = function(layout, val) layout[v] = val layout:emit_signal("widget::updated") end @@ -106,7 +107,7 @@ end local function new(widget, left, right, top, bottom) local ret = widget_base.make_widget() - for k, v in pairs(_M) do + for k, v in pairs(margin) do if type(v) == "function" then ret[k] = v end @@ -128,6 +129,10 @@ local function new(widget, left, right, top, bottom) return ret end -setmetatable(_M, { __call = function(_, ...) return new(...) end }) +function margin.mt:__call(...) + return new(...) +end + +return setmetatable(margin, margin.mt) -- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80 diff --git a/lib/wibox/layout/mirror.lua.in b/lib/wibox/layout/mirror.lua.in index df5176b9..ffa17dfc 100644 --- a/lib/wibox/layout/mirror.lua.in +++ b/lib/wibox/layout/mirror.lua.in @@ -12,10 +12,11 @@ local setmetatable = setmetatable local base = require("wibox.layout.base") local widget_base = require("wibox.widget.base") -module("wibox.layout.mirror") +-- wibox.layout.mirror +local mirror = { mt = {} } --- Draw this layout -function draw(layout, wibox, cr, width, height) +function mirror.draw(layout, wibox, cr, width, height) if not layout.widget then return { width = 0, height = 0 } end if not layout.horizontal and not layout.vertical then layout.widget:draw(wibox, cr, width, height) @@ -44,7 +45,7 @@ function draw(layout, wibox, cr, width, height) end --- Fit this layout into the given area -function fit(layout, ...) +function mirror.fit(layout, ...) if not layout.widget then return 0, 0 end @@ -54,7 +55,7 @@ end --- Set the widget that this layout mirrors. -- @param layout The layout -- @param widget The widget to mirror -function set_widget(layout, widget) +function mirror.set_widget(layout, widget) if layout.widget then layout.widget:disconnect_signal("widget::updated", layout._emit_updated) end @@ -68,7 +69,7 @@ end --- Reset this layout. The widget will be removed and the axes reset. -- @param layout The layout -function reset(layout) +function mirror.reset(layout) layout.horizontal = false layout.vertical = false layout:set_widget(nil) @@ -77,7 +78,7 @@ end --- Set the reflection of this mirror layout. -- @param layout The layout -- @param reflection a table which contains new values for horizontal and/or vertical (booleans) -function set_reflection(layout, reflection) +function mirror.set_reflection(layout, reflection) if type(reflection) ~= 'table' then error("Invalid type of reflection for mirror layout: " .. type(reflection) .. " (should be a table)") @@ -93,7 +94,7 @@ end --- Get the reflection of this mirror layout. -- @param layout The layout -- @return a table of booleans with the keys "horizontal", "vertical". -function get_reflection(layout) +function mirror.get_reflection(layout) return { horizontal = layout.horizontal, vertical = layout.vertical } end @@ -119,6 +120,10 @@ local function new() return ret end -setmetatable(_M, { __call = function(_, ...) return new(...) end }) +function mirror.mt:__call(...) + return new(...) +end + +return setmetatable(mirror, mirror.mt) -- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80 diff --git a/lib/wibox/layout/rotate.lua.in b/lib/wibox/layout/rotate.lua.in index 9c6d8480..760a6a91 100644 --- a/lib/wibox/layout/rotate.lua.in +++ b/lib/wibox/layout/rotate.lua.in @@ -13,7 +13,8 @@ local tostring = tostring local base = require("wibox.layout.base") local widget_base = require("wibox.widget.base") -module("wibox.layout.rotate") +-- wibox.layout.rotate +local rotate = { mt = {} } local function transform(layout, width, height) local dir = layout:get_direction() @@ -24,7 +25,7 @@ local function transform(layout, width, height) end --- Draw this layout -function draw(layout, wibox, cr, width, height) +function rotate.draw(layout, wibox, cr, width, height) if not layout.widget then return { width = 0, height = 0 } end cr:save() @@ -50,7 +51,7 @@ function draw(layout, wibox, cr, width, height) end --- Fit this layout into the given area -function fit(layout, width, height) +function rotate.fit(layout, width, height) if not layout.widget then return 0, 0 end @@ -58,7 +59,7 @@ function fit(layout, width, height) end --- Set the widget that this layout rotates. -function set_widget(layout, widget) +function rotate.set_widget(layout, widget) if layout.widget then layout.widget:disconnect_signal("widget::updated", layout._emit_updated) end @@ -71,14 +72,14 @@ function set_widget(layout, widget) end --- Reset this layout. The widget will be removed and the rotation reset. -function reset(layout) +function rotate.reset(layout) layout.direction = nil layout:set_widget(nil) end --- Set the direction of this rotating layout. Valid values are "north", "east", -- "south" and "west". On an invalid value, this function will throw an error. -function set_direction(layout, dir) +function rotate.set_direction(layout, dir) local allowed = { north = true, east = true, @@ -95,7 +96,7 @@ function set_direction(layout, dir) end --- Get the direction of this rotating layout -function get_direction(layout) +function rotate.get_direction(layout) return layout.direction or "north" end @@ -118,6 +119,10 @@ local function new() return ret end -setmetatable(_M, { __call = function(_, ...) return new(...) end }) +function rotate.mt:__call(...) + return new(...) +end + +return setmetatable(rotate, rotate.mt) -- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80