summaryrefslogtreecommitdiffstats
path: root/py3status/modules/rate_counter.py
diff options
context:
space:
mode:
Diffstat (limited to 'py3status/modules/rate_counter.py')
-rwxr-xr-xpy3status/modules/rate_counter.py172
1 files changed, 94 insertions, 78 deletions
diff --git a/py3status/modules/rate_counter.py b/py3status/modules/rate_counter.py
index 7606c32..6852c18 100755
--- a/py3status/modules/rate_counter.py
+++ b/py3status/modules/rate_counter.py
@@ -1,97 +1,113 @@
# -*- coding: utf-8 -*-
"""
-Display days/hours/minutes spent and calculated the price of your service for you
+Display days/hours/minutes spent and calculate the price of your service.
Configuration parameters:
- - config_file: file path to store the time already spent and restore it the next session.
- - tax : tax value (1.02 = 2%)
+ - config_file: file path to store the time already spent
+ and restore it the next session
- hour_price : your price per hour
+ - tax : tax value (1.02 = 2%)
@author Amaury Brisou <py3status AT puzzledge.org>
"""
+import os
+import time
-import time, os
class Py3status:
- cache_timeout = 5
-
- start_time=time.time()
- current_time=time.time()
- saved_time = 0
- diff_time = 0
-
- config_file = "%s%s" % (os.environ['HOME'] , "/.i3/py3status/counter-config.save")
- started = False
- restarted = False
+ """
+ """
+ # available configuration parameters
+ cache_timeout = 5
+ config_file = '%s%s' % (os.environ['HOME'],
+ '/.i3/py3status/counter-config.save')
+ hour_price = 30
+ tax = 1.02
- tax=1.02
- hour_price=30
- full_text=""
+ def __init__(self):
+ self.current_time = time.time()
+ self.diff_time = 0
+ self.full_text = ''
+ self.restarted = False
+ self.saved_time = 0
+ self.start_time = time.time()
+ self.started = False
+ try:
+ # Use file to refer to the file object
+ with open(self.config_file) as file:
+ self.saved_time = float(file.read())
+ except:
+ pass
- def __init__(self):
- try:
- with open(self.config_file) as file: # Use file to refer to the file object
- self.saved_time = float(file.read())
- except:
- pass
+ def kill(self, i3s_output_list, i3s_config):
+ if self.started is True:
+ self.saved_time = self.current_time - self.start_time
+ with open(self.config_file, 'w') as f:
+ f.write(str(self.saved_time))
- def kill(self, i3s_output_list, i3s_config):
- if self.started == True:
- self.saved_time = self.current_time - self.start_time
- with open(self.config_file, "w") as f:
- f.write(str(self.saved_time))
-
- def on_click(self, i3s_output_list, i3s_config, event):
- if event['button'] == 1:
- if self.started == True:
- self.saved_time = time.time() - self.start_time
- self.started = False
- else:
- self.start_time = time.time() - self.saved_time
- self.started = True
- elif event['button'] == 3:
- self._reset()
-
- def _reset(self):
- self.saved_time = 0
- with open(self.config_file, "w") as f:
- f.write('0')
-
+ def on_click(self, i3s_output_list, i3s_config, event):
+ if event['button'] == 1:
+ if self.started is True:
+ self.saved_time = time.time() - self.start_time
+ self.started = False
+ else:
+ self.start_time = time.time() - self.saved_time
+ self.started = True
+ elif event['button'] == 3:
+ self._reset()
+
+ def _reset(self):
+ self.saved_time = 0
+ with open(self.config_file, 'w') as f:
+ f.write('0')
- def counter(self, i3s_output_list, i3s_config):
- if self.started:
- self.current_time = time.time()
- self.diff_time = time.gmtime(self.current_time - self.start_time)
- cost = float(self.hour_price) * float(self.diff_time.tm_mday - 1) * 24 + float(self.hour_price) * float(self.diff_time.tm_hour) + float(self.diff_time.tm_min) * float(self.hour_price) / 60 + float(self.diff_time.tm_sec) * float(self.hour_price) / 3600
- self.full_text = 'Time: %d day %d:%d Cost: %.2f$' % (self.diff_time.tm_mday - 1, self.diff_time.tm_hour , self.diff_time.tm_min, float(cost) * float(self.tax))
- color = i3s_config['color_good']
- else :
- if self.full_text == "" :
- if self.saved_time != 0 :
- t = time.gmtime(self.saved_time)
- cost = float(self.hour_price) * float(t.tm_mday - 1) * 24 + float(self.hour_price) * float(t.tm_hour) + float(t.tm_min) * float(self.hour_price) / 60 + float(t.tm_sec) * float(self.hour_price) / 3600
- self.full_text = 'Time: %d day %d:%d Cost: %.2f$' % (t.tm_mday - 1, t.tm_hour, t.tm_min, float(cost) * float(self.tax))
+ def counter(self, i3s_output_list, i3s_config):
+ if self.started:
+ self.current_time = time.time()
+ self.diff_time = time.gmtime(self.current_time - self.start_time)
+ cost = (
+ float(self.hour_price) * float(self.diff_time.tm_mday - 1) * 24
+ + float(self.hour_price) * float(self.diff_time.tm_hour) +
+ float(self.diff_time.tm_min) * float(self.hour_price) / 60 +
+ float(self.diff_time.tm_sec) * float(self.hour_price) / 3600)
+ self.full_text = 'Time: %d day %d:%d Cost: %.2f$' % (
+ self.diff_time.tm_mday - 1, self.diff_time.tm_hour,
+ self.diff_time.tm_min, float(cost) * float(self.tax))
+ color = i3s_config['color_good']
else:
- self.full_text = "Time: 0 day 0:0 Cost: 0$"
+ if self.full_text == '':
+ if self.saved_time != 0:
+ t = time.gmtime(self.saved_time)
+ cost = float(self.hour_price) * float(
+ t.tm_mday - 1) * 24 + float(self.hour_price) * float(
+ t.tm_hour) + float(t.tm_min) * float(
+ self.hour_price) / 60 + float(
+ t.tm_sec) * float(self.hour_price) / 3600
+ self.full_text = 'Time: %d day %d:%d Cost: %.2f$' % (
+ t.tm_mday - 1, t.tm_hour, t.tm_min, float(cost) *
+ float(self.tax))
+ else:
+ self.full_text = "Time: 0 day 0:0 Cost: 0$"
+
+ color = i3s_config['color_bad']
+
+ response = {
+ 'cached_until': time.time() + self.cache_timeout,
+ 'full_text': self.full_text,
+ 'color': color,
+ }
+ return response
- color= i3s_config['color_bad']
- response = {
- 'cached_until': time.time() + self.cache_timeout,
- 'full_text': self.full_text,
- 'color': color,
- }
- return response
-
if __name__ == "__main__":
-
- from time import sleep
- x = Py3status()
- config = {
- 'color_bad': '#FF0000',
- 'color_degraded': '#FFFF00',
- 'color_good': '#00FF00',
- }
- while True:
- print(x.counter([], config))
- sleep(1) \ No newline at end of file
+
+ from time import sleep
+ x = Py3status()
+ config = {
+ 'color_bad': '#FF0000',
+ 'color_degraded': '#FFFF00',
+ 'color_good': '#00FF00',
+ }
+ while True:
+ print(x.counter([], config))
+ sleep(1)