Skip to content

Commit 25bcf95

Browse files
author
Pipeline
committed
F Added logging of different types of events and setting of event logging to be toggleable
1 parent 62e45f7 commit 25bcf95

File tree

6 files changed

+107
-48
lines changed

6 files changed

+107
-48
lines changed

Frames/MobTimerController.py

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from Frames.ScreenBlockerFrame import ScreenBlockerFrame
1010
from Frames.TransparentCountdownFrame import TransparentCountdownFrame
1111
from Infrastructure.CountdownManager import CountdownManager
12+
from Infrastructure.DateTimeUtility import DateTimeUtility
1213
from Infrastructure.DojoManager import DojoManager
1314
from Infrastructure.MobberManager import MobberManager
1415
from Infrastructure.PlatformUtility import PlatformUtility
@@ -31,11 +32,12 @@ def __init__(self, *args, **kwargs):
3132
self.settings_manager = SettingsManager()
3233
self.tips_manager = TipsManager()
3334
self.time_options_manager = TimeSettingsManager()
35+
self.date_time_utility = DateTimeUtility()
36+
self.file_utilities = FileUtilities()
37+
self.event_logging_manager = EventLoggingManager(self.file_utilities, self.date_time_utility)
3438
self.mobber_manager = MobberManager(self.settings_manager.get_randomize_randomize_next_driver())
3539
self.countdown_manager = CountdownManager(self)
3640
self.session_manager = SessionManager(uuid)
37-
self.file_utilities = FileUtilities()
38-
self.event_logging_manager = EventLoggingManager(self.file_utilities)
3941
self.timer_extension_count = self.settings_manager.get_timer_extension_count()
4042
self.extensions_used = 0
4143
atexit.register(self.session_manager.clear_sessions)
@@ -74,7 +76,8 @@ def __init__(self, *args, **kwargs):
7476
container.grid_columnconfigure(0, weight=1)
7577
for frame_type in self.frame_types:
7678
frame_instance = frame_type(container, self, self.time_options_manager, self.mobber_manager,
77-
self.countdown_manager, self.settings_manager, self.tips_manager, self.theme_manager)
79+
self.countdown_manager, self.settings_manager, self.tips_manager,
80+
self.theme_manager)
7881
self.frames[frame_type].append(frame_instance)
7982
frame_instance.grid(row=0, column=0, sticky=(N, S, E, W))
8083
frame_instance.grid_rowconfigure(0, weight=1)
@@ -86,12 +89,22 @@ def __init__(self, *args, **kwargs):
8689
self.transparent_frame_position = 0
8790
self.title("Mob Timer")
8891
self.bind_all("<Control-Return>", self.launch_transparent_countdown_if_blocking)
89-
self.time_options_manager.set_countdown_time(self.settings_manager.get_timer_minutes(), self.settings_manager.get_timer_seconds())
92+
self.time_options_manager.set_countdown_time(self.settings_manager.get_timer_minutes(),
93+
self.settings_manager.get_timer_seconds())
9094

9195
self.dojo_manager = DojoManager(self)
9296

97+
if self.settings_manager.get_event_logging_enabled():
98+
self.mobber_manager.subscribe_to_mobber_add(self.add_mobber_callback)
99+
self.mobber_manager.subscribe_to_mobber_remove(self.remove_mobber_callback)
100+
101+
def remove_mobber_callback(self, mobber_name):
102+
self.event_logging_manager.log(f'Removed: {mobber_name}')
93103

94-
def launch_transparent_countdown_if_blocking(self, event = None):
104+
def add_mobber_callback(self, mobber_name):
105+
self.event_logging_manager.log(f'Added: {mobber_name}')
106+
107+
def launch_transparent_countdown_if_blocking(self, event=None):
95108
if self.frame_is_screen_blocking():
96109
self.show_transparent_countdown_frame()
97110

@@ -158,7 +171,7 @@ def show_transparent_countdown_frame(self, extend_minutes=None, extend_seconds=N
158171

159172
def get_current_window_geometry(self):
160173
return "{0}x{1}+0+0".format(
161-
self.winfo_screenwidth(), self.winfo_screenheight())
174+
self.winfo_screenwidth(), self.winfo_screenheight())
162175

163176
def disable_resizing(self):
164177
for container in self.containers:
@@ -190,7 +203,8 @@ def set_full_screen_always_on_top(self):
190203
monitor_string = "{}x{}+{}+{}".format(monitor.width, monitor.height, monitor.x, monitor.y)
191204
container.master.geometry(monitor_string)
192205
if not PlatformUtility.platform_is_mac():
193-
container.master.wait_visibility(container.master) # Mac removing this prevented the issue with the continue screen visibility
206+
container.master.wait_visibility(
207+
container.master) # Mac removing this prevented the issue with the continue screen visibility
194208
container.master.attributes("-alpha", 1)
195209

196210
def set_partial_screen_transparent(self):
@@ -212,7 +226,8 @@ def set_partial_screen_transparent(self):
212226

213227
def fade_app(self):
214228
for controller in self.containers:
215-
controller.master.attributes("-alpha", self.settings_manager.get_continue_screen_blocker_window_alpha_percent())
229+
controller.master.attributes("-alpha",
230+
self.settings_manager.get_continue_screen_blocker_window_alpha_percent())
216231

217232
def unfade_app(self):
218233
for controller in self.containers:
@@ -255,11 +270,10 @@ def toggle_transparent_frame_position_enabled(self):
255270
screenheight - window_height)
256271
self.geometry(bottom_left_screen)
257272

258-
def rewind_and_extend(self,minutes, seconds):
273+
def rewind_and_extend(self, minutes, seconds):
259274
self.extensions_used += 1
260275
self.mobber_manager.rewind_driver()
261276
result = self.show_transparent_countdown_frame(minutes, seconds)
262277
for minimal_frame in self.frames[MinimalScreenBlockerFrame]:
263278
minimal_frame.show_extend_time_button()
264279
return result
265-

Infrastructure/MobberManager.py

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,22 @@ def add_mobber(self, mobber_name):
2121
self.fire_mobber_add_callbacks(mobber_name)
2222
self.fire_mobber_list_change_callbacks()
2323

24+
def remove_mobber(self, remove_mobber_index):
25+
if self.mobber_count() == 0:
26+
return
27+
self.fire_mobber_remove_callbacks(self.mobber_list[remove_mobber_index])
28+
del self.mobber_list[remove_mobber_index]
29+
self.fire_mobber_list_change_callbacks()
30+
31+
def set_mobber_list(self, mobber_list):
32+
if self.mobber_list != mobber_list:
33+
for index in range(0, mobber_list.__len__()):
34+
self.remove_mobber(0)
35+
for mobber_name in mobber_list:
36+
clean_mobber_name = str(mobber_name).strip()
37+
if clean_mobber_name != "" and not self.mobber_list.__contains__(clean_mobber_name):
38+
self.add_mobber(clean_mobber_name)
39+
2440
def subscribe_to_mobber_add(self, mobber_add_callback):
2541
self.mobber_add_callbacks.append(mobber_add_callback)
2642

@@ -32,12 +48,7 @@ def fire_mobber_add_callbacks(self, mobber_name):
3248
def get_mobbers(self):
3349
return self.mobber_list
3450

35-
def remove_mobber(self, remove_mobber_index):
36-
if self.mobber_count() == 0:
37-
return
38-
self.fire_mobber_remove_callbacks(self.mobber_list[remove_mobber_index])
39-
del self.mobber_list[remove_mobber_index]
40-
self.fire_mobber_list_change_callbacks()
51+
4152

4253
def subscribe_to_mobber_remove(self, mobber_remove_callback):
4354
self.mobber_remove_callbacks.append(mobber_remove_callback)
@@ -107,12 +118,5 @@ def rewind_driver(self):
107118
self.update_next_driver_index()
108119
self.fire_mobber_list_change_callbacks()
109120

110-
def set_mobber_list(self, mobber_list):
111-
if self.mobber_list != mobber_list:
112-
self.mobber_list = []
113-
for mobber_name in mobber_list:
114-
clean_mobber_name = str(mobber_name).strip()
115-
if clean_mobber_name != "" and not self.mobber_list.__contains__(clean_mobber_name):
116-
self.mobber_list.append(mobber_name)
117-
self.fire_mobber_list_change_callbacks()
121+
118122

Infrastructure/SettingsManager.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ class SettingsManager(object):
88
CONTINUE_SCREEN_BLOCKER_SETTINGS = "CONTINUE SCREEN BLOCKER SETTINGS"
99
SCREEN_BLOCKER_SETTINGS = "SCREEN BLOCKER SETTINGS"
1010
CODE_DOJO = "CODE DOJO"
11+
EVENT_LOGGING = "EVENT LOGGING"
1112

1213
def __init__(self):
1314
self.config = configparser.ConfigParser()
@@ -18,6 +19,7 @@ def __init__(self):
1819
self.general_settings_ = self.config[SettingsManager.GENERAL_SETTINGS]
1920
self.timer_settings_ = self.config[SettingsManager.TIMER_SETTINGS]
2021
self.code_dojo = self.config[SettingsManager.CODE_DOJO]
22+
self.event_logging = self.config[SettingsManager.EVENT_LOGGING]
2123

2224
def get_transparent_window_screen_size_percent(self):
2325
return self.window_settings_.getfloat("size percentage", 0.3)
@@ -109,5 +111,8 @@ def get_dojo_session_id(self):
109111
def get_dojo_topic_root(self):
110112
return self.code_dojo.get("topic root", "MobTimer")
111113

114+
def get_event_logging_enabled(self):
115+
return self.event_logging.getboolean("enabled", True)
116+
112117
def get_general_enable_unobtrusive_mode_bouncing_screen(self):
113118
return self.general_settings_.getboolean("enable unobtrusive mode bouncing screen", False)

MobTimer.cfg

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,5 +42,4 @@ session id = 1337
4242
topic root = MobTimer
4343

4444
[EVENT LOGGING]
45-
enabled = True
46-
log file name = MobTimer.log
45+
enabled = False
Lines changed: 45 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,47 @@
11
Mobbers in List for Each Change
22
Action 1:
3-
Action 2:Joe (Driver) (Next),
4-
Action 3:Joe (Driver), Chris (Next),
5-
Action 4:Joe (Driver), Chris, Sam (Next),
6-
Action 5:Joe (Driver), Chris, Sam, John (Next),
7-
Action 6:Joe, Chris (Next), Sam, John (Driver),
8-
Action 7:Joe, Chris (Next), Sam, John (Driver), Bill,
9-
Action 8:Joe, Chris (Driver), Sam (Next), John, Bill,
10-
Action 9:Joe, Chris, Sam (Driver), John (Next), Bill,
11-
Action 10:Joe, Chris (Next), Sam, John (Driver), Bill,
12-
Action 11:Hello, Eric (Next), Joe,
13-
Action 12:Hello, Eric (Driver), Joe (Next),
14-
Action 13:Hello, Eric (Next), Joe (Driver),
15-
Action 14:Hello (Driver), Eric (Next),
16-
Action 15:Eric (Driver) (Next),
17-
Action 16:Eric (Driver) (Next),
18-
Action 17:Eric (Driver), Seth (Next),
19-
Action 18:Seth (Driver), Eric (Next),
20-
Action 19:Seth (Driver), Eric, Fredrick (Next),
21-
Action 20:Seth (Driver), Fredrick (Next), Eric,
22-
Action 21:Seth (Driver), Eric (Next),
23-
Action 22:Eric (Driver) (Next),
24-
Action 23:
3+
Action 2:Joe added
4+
Action 3:Joe (Driver) (Next),
5+
Action 4:Chris added
6+
Action 5:Joe (Driver), Chris (Next),
7+
Action 6:Sam added
8+
Action 7:Joe (Driver), Chris, Sam (Next),
9+
Action 8:John added
10+
Action 9:Joe (Driver), Chris, Sam, John (Next),
11+
Action 10:Joe, Chris (Next), Sam, John (Driver),
12+
Action 11:Bill added
13+
Action 12:Joe, Chris (Next), Sam, John (Driver), Bill,
14+
Action 13:Joe, Chris (Driver), Sam (Next), John, Bill,
15+
Action 14:Joe, Chris, Sam (Driver), John (Next), Bill,
16+
Action 15:Joe, Chris (Next), Sam, John (Driver), Bill,
17+
Action 16:Joe removed
18+
Action 17:Chris, Sam (Next), John, Bill (Driver),
19+
Action 18:Chris removed
20+
Action 19:Sam, John (Next), Bill,
21+
Action 20:Sam removed
22+
Action 21:John (Next), Bill (Driver),
23+
Action 22:Hello added
24+
Action 23:John, Bill (Driver), Hello (Next),
25+
Action 24:Eric added
26+
Action 25:John, Bill (Driver), Hello (Next), Eric,
27+
Action 26:Joe added
28+
Action 27:John, Bill (Driver), Hello, Eric (Next), Joe,
29+
Action 28:John, Bill (Next), Hello, Eric (Driver), Joe,
30+
Action 29:John, Bill (Driver), Hello, Eric, Joe (Next),
31+
Action 30:Hello removed
32+
Action 31:John, Bill (Driver), Eric, Joe (Next),
33+
Action 32:John removed
34+
Action 33:Bill, Eric (Driver), Joe (Next),
35+
Action 34:Bill (Next), Eric, Joe (Driver),
36+
Action 35:Seth added
37+
Action 36:Bill, Eric, Joe (Driver), Seth (Next),
38+
Action 37:Eric, Bill (Next), Joe (Driver), Seth,
39+
Action 38:Fredrick added
40+
Action 39:Eric (Next), Bill, Joe (Driver), Seth, Fredrick,
41+
Action 40:Eric, Joe, Bill (Driver), Seth (Next), Fredrick,
42+
Action 41:Joe removed
43+
Action 42:Eric, Bill, Seth (Driver), Fredrick (Next),
44+
Action 43:Eric removed
45+
Action 44:Bill, Seth (Next), Fredrick (Driver),
46+
Action 45:Bill removed
47+
Action 46:Seth (Driver), Fredrick (Next),

tests/Infrastructure/MobberManager/test_MobberManager.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,20 @@ def time_change_callback(mobber_list, driver_index, navigator_index):
176176

177177
result["result"] += "\n"
178178

179+
def on_mobber_add(mobber_name):
180+
result["increment"] += 1
181+
result["result"] += "Action " + result["increment"].__str__() + ":" + mobber_name + " added\n"
182+
183+
mobber_manager.subscribe_to_mobber_add(on_mobber_add)
184+
185+
186+
def on_mobber_remove(mobber_name):
187+
result["increment"] += 1
188+
result["result"] += "Action " + result["increment"].__str__() + ":" + mobber_name + " removed\n"
189+
190+
mobber_manager.subscribe_to_mobber_remove(on_mobber_remove)
191+
192+
179193
mobber_manager.subscribe_to_mobber_list_change(time_change_callback)
180194

181195
mobber_manager.add_mobber("Joe")

0 commit comments

Comments
 (0)