Skip to content

Commit d7e3a0b

Browse files
committed
New Icons, Default Team Members, Fading Background
1 parent 3083175 commit d7e3a0b

14 files changed

+121
-25
lines changed
Lines changed: 52 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
from tkinter import ttk, N, E, W
22

33

4+
5+
from Infrastructure.ImageUtility import ImageUtility
6+
7+
48
class MinimalScreenBlockerFrame(ttk.Frame):
59
def __init__(self, master, controller, time_options_manager, mobber_manager, countdown_manager, settings_manager,
6-
tips_manager,theme_manager,
10+
tips_manager, theme_manager,
711
**kwargs):
812
super().__init__(master, **kwargs)
913

@@ -13,62 +17,90 @@ def __init__(self, master, controller, time_options_manager, mobber_manager, cou
1317
self.time_options_manager = time_options_manager
1418
self.mobber_manager = mobber_manager
1519
self.settings_manager = settings_manager
16-
self.build_window_content()
20+
self.theme_manager = theme_manager
1721
self.tips_manager = tips_manager
22+
self.build_window_content()
1823
self.mobber_manager.subscribe_to_mobber_list_change(self.mobber_list_change_callback)
1924

2025
def build_window_content(self):
2126
center_frame = ttk.Frame(self)
22-
center_frame.grid(row=0, column=0)
23-
center_frame.grid_columnconfigure(0, weight=0)
24-
center_frame.grid_columnconfigure(1, weight=0)
25-
center_frame.grid_columnconfigure(2, weight=1)
26-
center_frame.grid_columnconfigure(3, weight=0)
27-
center_frame.grid_columnconfigure(4, weight=0)
27+
center_frame.grid()
28+
# center_frame.grid_columnconfigure(0, weight=0)
29+
# center_frame.grid_columnconfigure(1, weight=0)
30+
# center_frame.grid_columnconfigure(2, weight=0)
31+
# center_frame.grid_columnconfigure(3, weight=0)
32+
# center_frame.grid_columnconfigure(4, weight=1)
33+
# center_frame.grid_columnconfigure(5, weight=1)
34+
# center_frame.grid_columnconfigure(6, weight=0)
35+
# center_frame.grid_columnconfigure(7, weight=0)
36+
# center_frame.grid_columnconfigure(8, weight=0)
37+
# center_frame.grid_columnconfigure(9, weight=0)
2838

2939
row_index = 0
3040

41+
42+
image_utility = ImageUtility(self.theme_manager)
43+
44+
self.invisible_icon = image_utility.load('images\\invisible.png')
45+
self.fade_label = ttk.Label(center_frame, image=self.invisible_icon)
46+
self.fade_label.grid(row=0, column=0, sticky=(N,W))
47+
self.fade_label.bind("<Enter>", lambda event: self.controller.fade_app())
48+
self.fade_label.bind("<Leave>", lambda event: self.controller.unfade_app())
49+
50+
# 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
51+
3152
title = ttk.Label(center_frame, text="Mobbing Timer", font="Helvetica 60 bold italic")
32-
title.grid(row=row_index, columnspan=5, padx=150, pady=10)
53+
title.grid(row=row_index, column = 0, columnspan=6 ,padx=150, pady=10)
3354
row_index += 1
3455

56+
self.keyboard_icon = image_utility.load('images\\keyboard.png',75,75)
57+
self.keyboard_label = ttk.Label(center_frame, image=self.keyboard_icon)
58+
self.keyboard_label.grid(row=row_index, column=1, sticky=(N,E))
59+
3560
self.current_mobber_label = ttk.Label(center_frame, text="", font="Helvetica 50 bold italic",
3661
style="Highlight.TLabel")
37-
self.current_mobber_label.grid(row=row_index, columnspan=5, padx=30, pady=10)
38-
row_index += 1
62+
self.current_mobber_label.grid(row=row_index, column=2, columnspan=1, sticky=(N,W))
3963

40-
self.next_mobber_label = ttk.Label(center_frame, text="", font="Helvetica 20 bold italic")
41-
self.next_mobber_label.grid(row=row_index, columnspan=5, padx=30, pady=10)
42-
row_index += 1
4364

65+
66+
self.minions_icon = image_utility.load('images\\minions.png',75,75)
67+
self.minions_label = ttk.Label(center_frame, image=self.minions_icon)
68+
self.minions_label.grid(row=row_index, column=3, sticky=(N,E))
69+
70+
self.next_mobber_label = ttk.Label(center_frame, text="", font="Helvetica 50")
71+
self.next_mobber_label.grid(row=row_index, column=4, columnspan=1,sticky=(N,W))
72+
row_index += 1
73+
# 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
4474
start_button = ttk.Button(center_frame, text="Continue Mobbing!", style="StartButton.TButton", )
45-
start_button.grid(row=row_index, column=1, columnspan=3, sticky=N + E + W, padx=10, pady=10)
75+
start_button.grid(row=row_index, column=1, columnspan=4, sticky=N + E + W, padx=10, pady=10)
4676
start_button.bind("<Button-1>", lambda event: self.controller.show_transparent_countdown_frame())
4777
row_index += 1
4878

4979
if self.settings_manager.get_general_enable_tips():
5080
self.tip_text = ttk.Label(center_frame, text="", font="Helvetica 15 bold", wraplength=500)
51-
self.tip_text.grid(row=row_index, columnspan=3, padx=30, pady=10)
81+
self.tip_text.grid(row=row_index, column=1, columnspan=4, padx=30, pady=10, sticky=(N))
5282
row_index += 1
5383

5484
start_button = ttk.Button(center_frame, text="Mob Setup & Time")
55-
start_button.grid(row=row_index, column=2, columnspan=3, sticky=N + E + W, padx=90, pady=10)
85+
start_button.grid(row=row_index, column=1, columnspan=4, sticky=N + E + W, padx=90, pady=10)
5686
start_button.bind("<Button-1>", lambda event: self.controller.show_screen_blocker_frame())
5787
row_index += 1
5888

5989
start_button = ttk.Button(center_frame, text="Quit Mobbing")
60-
start_button.grid(row=row_index, column=2, columnspan=3, sticky=N + E + W, padx=200, pady=10)
90+
start_button.grid(row=row_index, column=1, columnspan=4, sticky=N + E + W, padx=90, pady=10)
6191
start_button.bind("<Button-1>", lambda event: self.controller.quit_and_destroy_session())
6292
row_index += 1
6393

94+
# 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
95+
6496
def mobber_list_change_callback(self, mobber_list, driver_index, navigator_index):
6597
self.current_mobber_label['text'] = ""
6698
self.next_mobber_label['text'] = ""
6799
for index in range(0, mobber_list.__len__()):
68100
name = mobber_list[index]
69101
if index == driver_index:
70-
self.current_mobber_label['text'] = "{}, time to drive!".format(name)
102+
self.current_mobber_label['text'] = "{}".format(name)
71103
if index == navigator_index:
72-
self.next_mobber_label['text'] = "{}, up next!".format(name)
104+
self.next_mobber_label['text'] = "{}".format(name)
73105
if self.settings_manager.get_general_enable_tips():
74106
self.tip_text['text'] = self.tips_manager.get_random_tip()

Frames/MobTimerController.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ def __init__(self, *args, **kwargs):
7676
self.bind_all("<Control-Return>", self.launch_transparent_countdown_if_blocking)
7777
self.time_options_manager.set_countdown_time(self.settings_manager.get_general_minutes(), self.settings_manager.get_general_seconds())
7878

79+
7980
def launch_transparent_countdown_if_blocking(self, event):
8081
if self.frame_is_screen_blocking():
8182

@@ -181,6 +182,14 @@ def set_partial_screen_transparent(self):
181182
controller.attributes("-alpha", alpha)
182183
self.toggle_transparent_frame_position()
183184

185+
def fade_app(self):
186+
for controller in self.containers:
187+
controller.attributes("-alpha", self.settings_manager.get_continue_screen_blocker_window_alpha_percent())
188+
189+
def unfade_app(self):
190+
for controller in self.containers:
191+
controller.attributes("-alpha", 1)
192+
184193
def toggle_transparent_frame_position(self, e=None):
185194
if self.state() == "withdrawn":
186195
return

Frames/ScreenBlockerFrame.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ def build_window_content(self):
108108
self.names_list = ttk.Treeview(center_frame)
109109
self.names_list.tag_configure(TAGNAME_CURRENT_MOBBER, background=self.theme_manager.highlight_color, foreground=self.theme_manager.background_color)
110110
self.names_list['show'] = 'tree'
111-
self.names_list.grid(row=row_index, rowspan=6, columnspan=2, column=1, padx=10, pady=button_pad,
111+
self.names_list.grid(row=row_index, rowspan=7, columnspan=2, column=1, padx=10, pady=button_pad,
112112
sticky=N + E + W + S)
113113

114114
remove_mobber_button = ttk.Button(center_frame, text="Remove Mobber")
@@ -142,6 +142,11 @@ def build_window_content(self):
142142
clear_mobbers_button.bind("<Button-1>", lambda event: self.mobber_manager.rewind_driver())
143143
row_index += 1
144144

145+
clear_mobbers_button = ttk.Button(center_frame, text="Add Team")
146+
clear_mobbers_button.grid(row=row_index, column=3, sticky=N + E + W, padx=10, pady=button_pad)
147+
clear_mobbers_button.bind("<Button-1>", self.add_default_team)
148+
row_index += 1
149+
145150
start_button = ttk.Button(center_frame, text="Start Mobbing!", style="StartButton.TButton", )
146151
start_button.grid(row=row_index, column=1, columnspan=3, sticky=N + E + W, padx=10, pady=button_pad)
147152
start_button.bind("<Button-1>", lambda event: self.controller.show_transparent_countdown_frame())
@@ -156,6 +161,12 @@ def build_window_content(self):
156161

157162
self.focus_mobber_entry()
158163

164+
def add_default_team(self,event):
165+
team = self.settings_manager.get_general_team().split(',')
166+
self.mobber_manager.clear()
167+
for member in team:
168+
self.mobber_manager.add_mobber(member)
169+
159170
def focus_mobber_entry(self):
160171
self.add_mobber_entry.focus_set()
161172

Frames/TransparentCountdownFrame.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,20 +45,17 @@ def create_frame_content(self):
4545
count_down_timer_font = "Helvetica {} bold".format(
4646
self.settings_manager.get_transparent_window_count_down_timer_font_size())
4747
self.label_time = ttk.Label(self, text="10:00", font=count_down_timer_font)
48-
# self.label_time.grid(row=row_index, sticky=(N))
4948
self.label_time.pack()
5049

5150
row_index += 1
5251
next_driver_font = "Helvetica {} bold".format(
5352
self.settings_manager.get_transparent_window_next_driver_font_size())
5453
self.label_navigator = ttk.Label(self, text=self.get_navigator_text(""), font=next_driver_font)
55-
# self.label_navigator.grid(row=row_index, sticky=(N))
5654
self.label_navigator.pack()
5755

5856
row_index += 1
5957
driver_font = "Helvetica {} bold".format(self.settings_manager.get_transparent_window_driver_font_size())
6058
self.label_driver = ttk.Label(self, text=self.get_driver_text(""), font=driver_font)
61-
# self.label_driver.grid(row=row_index, sticky=(N))
6259
self.label_driver.pack()
6360
row_index += 1
6461

Images/invisible.png

26.9 KB
Loading

Images/keyboard.png

20.4 KB
Loading

Images/minions.png

19.8 KB
Loading

Images/mouse.png

26.2 KB
Loading

Images/run.png

29.8 KB
Loading

Infrastructure/ImageUtility.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
from PIL import Image
2+
from PIL import ImageTk
3+
4+
class ImageUtility(object):
5+
def __init__(self, theme_manager):
6+
self.theme_manager = theme_manager
7+
8+
@staticmethod
9+
def hex_to_rgb(value):
10+
value = value.lstrip('#')
11+
lv = len(value)
12+
return tuple(int(value[i:i + lv // 3], 16) for i in range(0, lv, lv // 3))
13+
14+
def load(self, image_path, width=50, height=50):
15+
background_color = ImageUtility.hex_to_rgb(self.theme_manager.background_color)
16+
highlight_color = ImageUtility.hex_to_rgb(self.theme_manager.highlight_color)
17+
original = Image.open(image_path)
18+
resized = original.resize((width, height), Image.ANTIALIAS)
19+
pixel_access = resized.load()
20+
21+
for y in range(resized.size[1]):
22+
for x in range(resized.size[0]):
23+
pixel = pixel_access[x, y]
24+
if pixel[0] < 50:
25+
pixel_access[x, y] = (background_color[0] + pixel_access[x, y][0],
26+
background_color[1] + pixel_access[x, y][1],
27+
background_color[2] + pixel_access[x, y][2])
28+
elif pixel[0] > 50:
29+
pixel_access[x, y] = (int(highlight_color[0] * pixel_access[x, y][0]/255),
30+
int(highlight_color[1] * pixel_access[x, y][1]/255),
31+
int(highlight_color[2] * pixel_access[x, y][2]/255))
32+
33+
return ImageTk.PhotoImage(resized)

0 commit comments

Comments
 (0)