/
mmgui.py
77 lines (71 loc) · 2.6 KB
/
mmgui.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#!/usr/bin/env python
# mmgui - Class for gui display in MorbidMeter
# Copyright (c) 2009 EP Studios, Inc.
# license - GPL v 3 or later
from Tkinter import *
from threading import *
from time import sleep
from timescale import *
from user import *
from mmshared import os_is_windows, play_sound
class SimpleWindow(Frame):
def __init__(self, parent, ts, user,
show_msec=True,
update_interval=1000, reverse_time=False,
use_sound=False):
Frame.__init__(self, parent)
parent.title("MorbidMeter")
self.ts = ts
self.user=user
self.show_msec = show_msec
self.update_interval = update_interval
self.reverse_time = reverse_time
self.use_sound = use_sound
self.v = StringVar()
self.v.set(self.format_time())
self.label = Label(self, textvariable=self.v)
self.update_label()
icon_name = 'skull'
self.sound_on = True
if os_is_windows():
icon_file = icon_name + '.ico'
else:
icon_file = '@' + icon_name + '.xbm'
try:
parent.iconbitmap(icon_file)
except TclError:
print 'No ico file found.'
parent.minsize(250,0)
def update_label(self):
self.v.set(self.format_time())
self.label.textvariable = self.v
self.label.pack(expand=YES, fill=BOTH)
self.label.after(self.update_interval, self.update_label)
def format_time(self):
if self.ts.name == "age":
t = self.ts.proportional_time(self.user.percent_alive()) - self.user.birthday
else:
t = self.ts.proportional_time(self.user.percent_alive())
if self.reverse_time:
t = self.ts.reverse_proportional_time(self.user.percent_alive())
if self.ts.name == "percent":
return "%.6f %%" % t
elif self.ts.name == "universe":
return "%.2f years" % t
elif self.ts.name == "age":
return t
elif self.reverse_time:
return t
elif self.show_msec:
return t.strftime(self.ts.format_string) + \
" " + str(t.microsecond / 1000).zfill(3) + " msec"
else:
if self.use_sound:
mins_secs = t.strftime(self.ts.format_string)[-8:-3]
if mins_secs != "00:00":
self.sound_on = True
if self.sound_on and mins_secs == "00:00":
self.sound_on = False
play_sound()
return t.strftime(" " + self.ts.format_string
+ " ")