2610.1 - First commit
This commit is contained in:
1 parent
1a247323f1
commit
d8d131e1c1
69 files changed
+2073
-2
No files matched your search
@@ -0,0 +1,137 @@
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
import tkinter as tk
|
||||
|
||||
from . import globals as g
|
||||
from .frm_history import FrmHistory
|
||||
from .resources import load_image
|
||||
|
||||
HISTORY_WINDOW = None
|
||||
|
||||
|
||||
def show_history(master, gun):
|
||||
global HISTORY_WINDOW
|
||||
if HISTORY_WINDOW is None or not HISTORY_WINDOW.winfo_exists():
|
||||
HISTORY_WINDOW = FrmHistory(master)
|
||||
HISTORY_WINDOW.set_gun(gun)
|
||||
HISTORY_WINDOW.lift()
|
||||
HISTORY_WINDOW.focus_set()
|
||||
|
||||
|
||||
class GunButton(tk.Frame):
|
||||
|
||||
def __init__(self, master, gun):
|
||||
super().__init__(master, bd=1, relief="solid", bg="#d9d9d9")
|
||||
self.gun = gun
|
||||
self.change_battery = False
|
||||
self.flash_state = False
|
||||
|
||||
self._gun_img = load_image("Custom98.png")
|
||||
self._gun_img_fired = load_image("Custom98_2.png")
|
||||
self._gun_img_w = self._gun_img.width()
|
||||
|
||||
self.pb_battery = tk.Label(self, image=load_image("100.png"), bd=0, bg="#d9d9d9")
|
||||
self.pb_battery.image = self.pb_battery.cget("image")
|
||||
self.pb_battery.place(x=3, y=3)
|
||||
|
||||
self.pb_gun = tk.Label(self, image=self._gun_img, bd=0, bg="#d9d9d9")
|
||||
self.pb_gun.image = self.pb_gun.cget("image")
|
||||
self.pb_gun.place(x=122, y=3)
|
||||
|
||||
self.lbl_main = tk.Label(self, text="lblMain", anchor="center", justify="center", bg="#d9d9d9",
|
||||
font=("Consolas", 10, "bold"))
|
||||
self.lbl_main.place(x=-1, y=0, relwidth=1.0, relheight=1.0)
|
||||
self.lbl_main.bind("<Button-1>", lambda e: show_history(self, self.gun))
|
||||
|
||||
self.bind("<Configure>", self._on_size_changed)
|
||||
|
||||
self.after(250, self._timer_update)
|
||||
self.after(500, self._timer_battery)
|
||||
|
||||
def _on_size_changed(self, event=None):
|
||||
self.pb_gun.place(x=self.winfo_width() - self._gun_img_w - 10, y=3)
|
||||
|
||||
def _set_background(self, color):
|
||||
self.configure(bg=color)
|
||||
self.lbl_main.configure(bg=color)
|
||||
self.pb_gun.configure(bg=color)
|
||||
self.pb_battery.configure(bg=color)
|
||||
|
||||
def _timer_update(self):
|
||||
try:
|
||||
now = datetime.now()
|
||||
self.lbl_main.configure(
|
||||
text="\n{}\n{}\nshot: {}\ntime: {}".format(
|
||||
self.gun.gun_id,
|
||||
self.gun.gun_mac,
|
||||
self.gun.fired + self.gun.fired_overall,
|
||||
g.minutes_to_string(self.gun.battery + self.gun.battery_overall)))
|
||||
|
||||
if self.gun.last_seen > now - timedelta(seconds=1):
|
||||
if self.change_battery:
|
||||
self._set_background("#ff960a")
|
||||
else:
|
||||
self._set_background("#14ff96")
|
||||
elif self.gun.last_seen > now - timedelta(seconds=30):
|
||||
secs = (now - self.gun.last_seen).total_seconds()
|
||||
rg_col = int(secs / 30 * 220) + 20
|
||||
self._set_background("#{:02x}{:02x}{:02x}".format(rg_col, 240, rg_col))
|
||||
else:
|
||||
self._set_background("#d9d9d9")
|
||||
|
||||
if self.gun.fired_last > now:
|
||||
self.pb_gun.configure(image=self._gun_img_fired)
|
||||
else:
|
||||
self.pb_gun.configure(image=self._gun_img)
|
||||
if self.gun.last_seen < now - timedelta(minutes=g.count_interval):
|
||||
self.pb_gun.configure(image="")
|
||||
|
||||
if self.gun.battery + self.gun.battery_overall >= self.gun.settings_battery_life:
|
||||
self.change_battery = True
|
||||
if self.gun.fired + self.gun.fired_overall >= self.gun.settings_fired_max:
|
||||
self.change_battery = True
|
||||
|
||||
if self.change_battery:
|
||||
if (self.gun.battery + self.gun.battery_overall < self.gun.settings_battery_life) and \
|
||||
(self.gun.fired + self.gun.fired_overall < self.gun.settings_fired_max):
|
||||
self.change_battery = False
|
||||
|
||||
if not self.change_battery:
|
||||
t_val = 100 - int((((self.gun.battery + self.gun.battery_overall) / self.gun.settings_battery_life) * 100))
|
||||
s_val = 100 - int((((self.gun.fired + self.gun.fired_overall) / self.gun.settings_fired_max) * 100))
|
||||
if s_val < t_val:
|
||||
t_val = s_val
|
||||
if t_val >= 95:
|
||||
img = "100.png"
|
||||
elif t_val >= 85:
|
||||
img = "090.png"
|
||||
elif t_val >= 75:
|
||||
img = "080.png"
|
||||
elif t_val >= 65:
|
||||
img = "070.png"
|
||||
elif t_val >= 55:
|
||||
img = "060.png"
|
||||
elif t_val >= 45:
|
||||
img = "050.png"
|
||||
elif t_val >= 35:
|
||||
img = "040.png"
|
||||
elif t_val >= 20:
|
||||
img = "030.png"
|
||||
elif t_val >= 10:
|
||||
img = "020.png"
|
||||
else:
|
||||
img = "010.png"
|
||||
self.pb_battery.configure(image=load_image(img))
|
||||
finally:
|
||||
self.after(250, self._timer_update)
|
||||
|
||||
def _timer_battery(self):
|
||||
try:
|
||||
if self.change_battery:
|
||||
self.flash_state = not self.flash_state
|
||||
if self.flash_state:
|
||||
self.pb_battery.configure(image=load_image("000.png"))
|
||||
else:
|
||||
self.pb_battery.configure(image=load_image("010.png"))
|
||||
finally:
|
||||
self.after(500, self._timer_battery)
|
||||
Reference in new issue
Block a user