diff options
Diffstat (limited to 'py3status/modules')
| -rwxr-xr-x | py3status/modules/rate_counter.py | 172 |
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) |
