Forgot to actually attach it.

Attachment: signature.asc
Description: PGP signature

From 0f8bc49bd939b0093e8ad47c62771a35f49ebef2 Mon Sep 17 00:00:00 2001
From: Adrian C. (anrxc) <an...@sysphere.org>
Date: Fri, 26 Feb 2010 21:25:35 +0100
Subject: [PATCH] awful.widget: add progressbar set_max_value property

The awful.widget.graph allows to change the maximum value a graph can
handle, thus allows users to use widgets and scripts that don't scale
the values down to 0 - 1 range. The progressbars did not allow this
and worked with a hard-coded value of 1.

Signed-off-by: Adrian C. (anrxc) <an...@sysphere.org>
---
 lib/awful/widget/progressbar.lua.in |   23 ++++++++++++++++++-----
 1 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/lib/awful/widget/progressbar.lua.in 
b/lib/awful/widget/progressbar.lua.in
index d32ca6d..23a2680 100644
--- a/lib/awful/widget/progressbar.lua.in
+++ b/lib/awful/widget/progressbar.lua.in
@@ -49,9 +49,15 @@ local data = setmetatable({}, { __mode = "k" })
 -- @param progressbar The progressbar.
 -- @param vertical A boolean value.
 
+--- Set the maximum value the progressbar should handle.
+-- @name set_max_value
+-- @class function
+-- @param progressbar The progressbar.
+-- @param value The value.
+
 local properties = { "width", "height", "border_color",
                      "gradient_colors", "color", "background_color",
-                     "vertical", "value" }
+                     "vertical", "value", "max_value" }
 
 local function update(pbar)
     local width = data[pbar].width or 100
@@ -60,6 +66,12 @@ local function update(pbar)
     -- Create new empty image
     local img = capi.image.argb32(width, height, nil)
 
+    local value = data[pbar].value
+    local max_value = data[pbar].max_value
+    if value >= 0 then
+        value = value / max_value
+    end
+
     local over_drawn_width = width
     local over_drawn_height = height
     local border_width = 0
@@ -89,14 +101,14 @@ local function update(pbar)
 
     -- Cover the part that is not set with a rectangle
     if data[pbar].vertical then
-        local rel_height = math.floor(over_drawn_height * (1 - 
data[pbar].value))
+        local rel_height = math.floor(over_drawn_height * (1 - value))
         img:draw_rectangle(border_width,
                            border_width,
                            over_drawn_width,
                            rel_height,
                            true, data[pbar].background_color or "#000000aa")
     else
-        local rel_x = math.floor((over_drawn_width * data[pbar].value) + 0.5)
+        local rel_x = math.floor((over_drawn_width * value) + 0.5)
         img:draw_rectangle(border_width + rel_x,
                            border_width,
                            over_drawn_width - rel_x,
@@ -113,7 +125,8 @@ end
 -- @param value The progress bar value between 0 and 1.
 function set_value(pbar, value)
     local value = value or 0
-    data[pbar].value = math.min(1, math.max(0, value))
+    local max_value = data[pbar].max_value
+    data[pbar].value = math.min(max_value, math.max(0, value))
     update(pbar)
     return pbar
 end
@@ -163,7 +176,7 @@ function new(args)
     pbar.widget = capi.widget(args)
     pbar.widget.resize = false
 
-    data[pbar] = { width = width, height = height, value = 0 }
+    data[pbar] = { width = width, height = height, value = 0, max_value = 1 }
 
     -- Set methods
     for _, prop in ipairs(properties) do
-- 
1.7.0

Reply via email to