-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
Andrei Thorp wrote:
> I wanna get my patches reviewed dammit ;)
Ok, here we go:
> Subject: [PATCH 1/4] Lib: hooks lib w/ awful timer wrapper functions
[...]
> diff --git a/lib/hooks/init.lua b/lib/hooks/init.lua
> new file mode 100644
> index 0000000..ec94102
> --- /dev/null
> +++ b/lib/hooks/init.lua
[...]
> +-- Register a timer just as you would with awful.hooks.timer.register, but
> +-- with one slight twist: you set your regular speed, (optionally) your slow
> +-- speed, and then your function.
> +-- @param reg_time Regular speed for the widget
> +-- @param slow_time Slow time for the widget
> +-- @param fn The function that the timer should call
> +-- @param descr The description of this function
> +function timer.register(reg_time, slow_time, fn, descr)
> + if not slow_time then slow_time = reg_time * 4 end
> + registry[fn] = {
> + regular=reg_time,
> + slow=slow_time,
> + speed="regular",
> + running=true,
> + description=descr or "Undescribed timer"
> + }
> + timer.set_speed(registry[fn].speed, fn)
> +end
How is this "(optionally) your slow speed" supposed to work?
I would propose something like this:
function timer.register(fn, desc, reg_time, slow_time)
That way timer.register(bla, "bla", 42) results in "slow_time" being nil, waaay
more optionally. (BTW, is slow_time being nil handled anywhere?)
> +-- Unregister the timer altogether
> +-- Maybe you should just turn it to zero with timer.stop()?
> +-- @param fn The function you want to unregister.
> +function timer.unregister(fn)
> + registry[fn] = nil
> + awful.hooks.timer.unregister(fn)
> +end
Maybe you should not tell me what I want. :P
How about this: "Please note that you can use timer.stop() and timer.start() to
pause and unpause a timer"?
> +-- Generic "let timer run at foo speed" function
"Generic function to modify an existing timer's speed"
"Switch timers between "slow" and "regular" mode"
Something like this...
> +-- @param speed The speed at which you want the function(s) to run: one of
> +-- "regular" or "slow"
> +-- @param fn (Optional) Function that you want to set to foo speed. If you
> +-- do not supply this argument, the system sets all timers to foo speed.
That "foo" really sounds weird, sorry.
> +function timer.set_speed(speed, fn)
> + if fn then
> + registry[fn].speed = speed
> + if not registry[fn].running then
> + return
> + end
> + awful.hooks.timer.unregister(fn)
> + if speed == "regular" then
> + awful.hooks.timer.register(registry[fn].regular, fn)
> + elseif speed == "slow" then
> + awful.hooks.timer.register(registry[fn].slow, fn)
> + end
> + else
> + for key, value in pairs(registry) do
> + registry[key].speed = speed
> + if registry[key].running then
> + awful.hooks.timer.unregister(key)
> + if speed == "regular" then
> + awful.hooks.timer.register(registry[key].regular, key)
> + elseif speed == "slow" then
> + awful.hooks.timer.register(registry[key].slow, key)
> + end
> + end
> + end
> + end
> +end
How about this for the else branch:
for key, value in pairs(registry) do
timer.set_speed(speed, key)
done
Way less code duplication...
> +-- Edit a function's speeds.
Modify? Dunno, edit sounds weird (to me).
> +-- @param reg_time Regular speed for the function
> +-- @param slow_time Slow speed for the function
s/_time/_speed/? (just a proposal)
> +-- @param fn Function that you want to alter the speed of
Why isn't this optional her but everywhere else?
> +function timer.set_speeds(reg_time, slow_time, fn)
> + registry[fn] = {
> + regular=reg_time,
> + slow=slow_time,
> + speed=registry[fn].speed,
> + running=registry[fn].running,
> + }
> + timer.set_speed(registry[fn].speed, fn)
> +end
The code looks almost identical to timer.register().. :/
> +-- @param fn (Optional) Function that you want to know the data for. If not
> +-- specified, this returns a table of all registered timers with their data.
> +-- @return A table with the regular speed, the slow speed, the currently used
> +-- speed, whether the timer is running or not, and the description.
> +-- Note: This function returns a copy of the internal registry, so assigning
> to
> +-- it doesn't work.
This comment needs some love. I really miss the general description at the
beginning. Maybe it's just me, but I'd prefer something like
This function returns the speeds of the timer
@param The timer function you are interested in. Nil for all timers
@return A table with one entry per timer (if multiple timers are returned,
else directly the next thing (TODO: improve documenataion). Each item has the
following table keys: <insert keys>
> +function timer.get_speeds(fn)
> + copy = {}
> + if fn then
> + for key, value in pairs(registry[fn]) do
> + copy[key] = value
> + end
> + else
> + for key, value in pairs(registry) do
> + subcopy = {}
> + for subkey, subvalue in pairs(registry[key]) do
in pairs(value)
> + subcopy[subkey] = subvalue
> + end
> + copy[key] = subcopy
> + end
> + end
> + return copy
> +end
> +
> +-- Pause timer(s)
> +-- @param fn (Optional) Function to pause the timer for. If none is
> specified,
> +-- this pauses all registered timers.
> +function timer.stop(fn)
> + if fn then
> + registry[fn].running = false
> + awful.hooks.timer.unregister(fn)
> + else
> + for key, value in pairs(registry) do
> + registry[key].running = false
> + awful.hooks.timer.unregister(key)
> + end
> + end
> +end
> +
> +-- Start timer(s)
> +-- @param fn (Optional) Function to start the timer for. If none is
> specified,
> +-- this starts all registered timers.
> +function timer.start(fn)
> + if fn then
> + registry[fn].running = true
> + timer.set_speed(registry[fn].speed, fn)
> + else
> + for key, value in pairs(registry) do
> + registry[key].running = true
> + timer.set_speed(registry[key].speed, fn)
> + end
> + end
> +end
I don't like this idea myself, but what do you think about calling timer.start()
for each entry in the else branch?
> +-- Checks whether the given function is registered
> +-- @return boolean true/false of whether the function is registered
> +function timer.has(fn)
> + if registry[fn] then
> + return true
> + else
> + return false
> + end
> +end
> +
> +-- vim:
> filetype=lua:expandtab:shiftwidth=4:tabstop=4:softtabstop=4:encoding=utf-8:textwidth=80
> diff --git a/lib/init.lua b/lib/init.lua
> new file mode 100644
> index 0000000..a290db1
> --- /dev/null
> +++ b/lib/init.lua
> @@ -0,0 +1,9 @@
> +------------------------------------------
> +-- Author: Andrei "Garoth" Thorp --
> +-- Copyright 2009 Andrei "Garoth" Thorp --
> +------------------------------------------
> +
> +require("obvious.lib.hooks")
> +
> +module("obvious.lib")
> +-- vim:
> filetype=lua:expandtab:shiftwidth=4:tabstop=4:softtabstop=4:encoding=utf-8:textwidth=80
Is this really necessary? :(
When will the next lib item be added? If that's not too soon, we could skip this
file for now... Dunno, I guess we can't
Uli
who know has to get to work before his colleagues notice he hasn't been working
- --
"Do you know that books smell like nutmeg or some spice from a foreign land?"
-- Faber in Fahrenheit 451
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
iQEcBAEBCAAGBQJKcYSYAAoJECLkKOvLj8sGb+MH/3/s1RhiCrB9U5Za8zWg3QoW
Zgqr8odjWKeQsJz2rSfFvYMVJmmX3OoiNCy2eMKGox0KOVsZaZc1YmklapP6j5If
PJjp1Mr+Wx5/JI15xFLJpgbgnuzKSy9p9S0avYslVmYHUGwp4BQ7aDUP68bqxlJP
mso4eynzzArPfBCQZ82pchmEaciYa6npv7KXI2F6Fw1uA+zmkC30K44wG6LXYGPP
G9WMIoHHUlncOTKeNGERMk6p6P/IZZluVXqeUgLHAVxaDtbL5cTEkoE7XsCnfKT/
eIoCa3Z+ne5UjbDvFPKX1eTjrikrJrWjqzZWtSafCUhDUrE4ib4xe5cVmmfNRio=
=f58k
-----END PGP SIGNATURE-----
--
To unsubscribe, send mail to [email protected].