textclock: Move to wibox.widget

It doesn't depend on `awful`, so it doesn't belong in `awful`.
This commit is contained in:
Emmanuel Lepage Vallee 2016-05-23 00:46:01 -04:00
parent 44a4eca40e
commit ae0d306114
7 changed files with 66 additions and 47 deletions

View File

@ -115,7 +115,7 @@ mykeyboardlayout = awful.widget.keyboardlayout()
-- {{{ Wibox -- {{{ Wibox
-- Create a textclock widget -- Create a textclock widget
mytextclock = awful.widget.textclock() mytextclock = wibox.widget.textclock()
-- Create a wibox for each screen and add it -- Create a wibox for each screen and add it
mywibox = {} mywibox = {}

View File

@ -10,7 +10,7 @@
-- How to create a tooltip? -- How to create a tooltip?
-- --- -- ---
-- --
-- myclock = awful.widget.textclock({}, "%T", 1) -- myclock = wibox.widget.textclock({}, "%T", 1)
-- myclock_t = awful.tooltip({ -- myclock_t = awful.tooltip({
-- objects = { myclock }, -- objects = { myclock },
-- timer_function = function() -- timer_function = function()

View File

@ -1,52 +1,17 @@
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
--- Text clock widget. -- This widget has moved to `wibox.widget.textclock`
-- --
-- @author Julien Danjou <julien@danjou.info> -- @author Julien Danjou <julien@danjou.info>
-- @copyright 2009 Julien Danjou -- @copyright 2008-2009 Julien Danjou
-- @release @AWESOME_VERSION@ -- @release @AWESOME_VERSION@
-- @classmod awful.widget.textclock -- @classmod awful.widget.textclock
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
local util = require("awful.util")
local setmetatable = setmetatable return util.deprecate_class(
local os = os require("wibox.widget.textclock"),
local textbox = require("wibox.widget.textbox") "awful.widget.textclock",
local timer = require("gears.timer") "wibox.widget.textclock"
local DateTime = require("lgi").GLib.DateTime )
local textclock = { mt = {} }
--- This lowers the timeout so that it occurs "correctly". For example, a timeout
-- of 60 is rounded so that it occurs the next time the clock reads ":00 seconds".
local function calc_timeout(real_timeout)
return real_timeout - os.time() % real_timeout
end
--- Create a textclock widget. It draws the time it is in a textbox.
--
-- @param format The time format. Default is " %a %b %d, %H:%M ".
-- @param timeout How often update the time. Default is 60.
-- @return A textbox widget.
function textclock.new(format, timeout)
format = format or " %a %b %d, %H:%M "
timeout = timeout or 60
local w = textbox()
local t
function w._textclock_update_cb()
w:set_markup(DateTime.new_now_local():format(format))
t.timeout = calc_timeout(timeout)
t:again()
return true -- Continue the timer
end
t = timer.weak_start_new(timeout, w._textclock_update_cb)
t:emit_signal("timeout")
return w
end
function textclock.mt:__call(...)
return textclock.new(...)
end
return setmetatable(textclock, textclock.mt)
-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80 -- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80

View File

@ -12,6 +12,7 @@ return setmetatable({
imagebox = require("wibox.widget.imagebox"); imagebox = require("wibox.widget.imagebox");
background = require("wibox.widget.background"); background = require("wibox.widget.background");
systray = require("wibox.widget.systray"); systray = require("wibox.widget.systray");
textclock = require("wibox.widget.textclock");
}, {__call = function(_, args) return base.make_widget_declarative(args) end}) }, {__call = function(_, args) return base.make_widget_declarative(args) end})
-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80 -- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80

View File

@ -0,0 +1,53 @@
---------------------------------------------------------------------------
--- Text clock widget.
--
-- @author Julien Danjou <julien@danjou.info>
-- @copyright 2009 Julien Danjou
-- @release @AWESOME_VERSION@
-- @classmod wibox.widget.textclock
---------------------------------------------------------------------------
local setmetatable = setmetatable
local os = os
local textbox = require("wibox.widget.textbox")
local timer = require("gears.timer")
local DateTime = require("lgi").GLib.DateTime
local textclock = { mt = {} }
--- This lowers the timeout so that it occurs "correctly". For example, a timeout
-- of 60 is rounded so that it occurs the next time the clock reads ":00 seconds".
local function calc_timeout(real_timeout)
return real_timeout - os.time() % real_timeout
end
--- Create a textclock widget. It draws the time it is in a textbox.
--
-- @tparam[opt=" %a %b %d, %H:%M "] string format The time format.
-- @tparam[opt=60] number timeout How often update the time (in seconds).
-- @treturn table A textbox widget.
-- @function wibox.widget.textclock
function textclock.new(format, timeout)
format = format or " %a %b %d, %H:%M "
timeout = timeout or 60
local w = textbox()
local t
function w._textclock_update_cb()
w:set_markup(DateTime.new_now_local():format(format))
t.timeout = calc_timeout(timeout)
t:again()
return true -- Continue the timer
end
t = timer.weak_start_new(timeout, w._textclock_update_cb)
t:emit_signal("timeout")
return w
end
function textclock.mt:__call(...)
return textclock.new(...)
end
return setmetatable(textclock, textclock.mt)
-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80

View File

@ -13,7 +13,7 @@ return { create_wibox = function()
-- Widgets that are aligned to the right -- Widgets that are aligned to the right
local right_layout = wibox.layout.fixed.horizontal() local right_layout = wibox.layout.fixed.horizontal()
local textclock = awful.widget.textclock() local textclock = wibox.widget.textclock()
right_layout:add(textclock) right_layout:add(textclock)
right_layout:add(awful.widget.layoutbox(1)) right_layout:add(awful.widget.layoutbox(1))

View File

@ -63,7 +63,7 @@ collectable(wibox.layout.align.horizontal())
-- Then some random widgets from awful -- Then some random widgets from awful
collectable(awful.widget.launcher({ image = cairo.ImageSurface(cairo.Format.ARGB32, 20, 20), command = "bash" })) collectable(awful.widget.launcher({ image = cairo.ImageSurface(cairo.Format.ARGB32, 20, 20), command = "bash" }))
collectable(awful.widget.prompt()) collectable(awful.widget.prompt())
collectable(awful.widget.textclock()) collectable(wibox.widget.textclock())
collectable(awful.widget.layoutbox(1)) collectable(awful.widget.layoutbox(1))
-- Some widgets do things via timer.delayed_call -- Some widgets do things via timer.delayed_call