Skip to content

Commit eab9054

Browse files
committed
Navigator and Driver indications are now functioning
1 parent 7c32295 commit eab9054

File tree

7 files changed

+129
-57
lines changed

7 files changed

+129
-57
lines changed

Frames/MobTimerController.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@ def __init__(self, *args, **kwargs):
1515
container.grid_rowconfigure(0, weight=1)
1616
container.grid_columnconfigure(0, weight=1)
1717

18-
time_options_manager = TimeOptionsManager()
19-
mobber_manager = MobberManager()
20-
countdown_manager = CountdownManager(container)
18+
self.time_options_manager = TimeOptionsManager()
19+
self.mobber_manager = MobberManager()
20+
self.countdown_manager = CountdownManager(container)
2121

2222
self.frames = {}
2323
for F in (ScreenBlockerFrame, TransparentCountdownFrame):
24-
frame = F(container, self, time_options_manager, mobber_manager, countdown_manager)
24+
frame = F(container, self, self.time_options_manager, self.mobber_manager, self.countdown_manager)
2525
self.frames[F] = frame
2626
frame.grid(row=0, column=0, sticky="nsew")
2727
self.last_frame = None
@@ -32,13 +32,13 @@ def show_frame(self, frame_class):
3232
if self.last_frame != frame_class:
3333
frame = self.frames[frame_class]
3434
frame.tkraise()
35-
print(frame_class)
3635
switched_frames = True
3736
self.last_frame = frame_class
3837
return switched_frames
3938

4039
def show_screen_blocker_frame(self):
4140
if self.show_frame(ScreenBlockerFrame):
41+
self.mobber_manager.switch_navigator_driver()
4242
self.set_full_screen_always_on_top()
4343

4444
def show_transparent_countdown_frame(self):

Frames/ScreenBlockerFrame.py

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,13 @@ def __init__(self, parent, controller, time_options_manager, mobber_manager, cou
1313
self.time_options_manager.subscribe_to_timechange(self.time_change_callback)
1414
self.mobber_manager.subscribe_to_mobber_list_change(self.mobber_list_change_callback)
1515

16-
def mobber_list_change_callback(self, mobber_list):
16+
def mobber_list_change_callback(self, mobber_list, driver_index, navigator_index ):
1717
self.names_list.delete(0, END)
1818
for index in range(0, mobber_list.__len__()):
1919
name = mobber_list[index]
20-
if index == 0:
20+
if index == driver_index:
2121
name += " <= Driver"
22-
if index == 1:
22+
if index == navigator_index:
2323
name += " <= Navigator"
2424
self.names_list.insert(END, name)
2525

@@ -59,14 +59,6 @@ def build_window_content(self):
5959
self.label_seconds.bind("<Button-3>", lambda event: self.time_options_manager.decrement_seconds())
6060
row_index += 1
6161

62-
self.label_current_mobber = Label(center_frame, text="Mobber Sit At the Keyboard", font="Helvetica 50 bold")
63-
self.label_current_mobber.grid(row=row_index, columnspan=3, padx=30, pady=0, sticky=N)
64-
row_index += 1
65-
66-
self.label_next_mobber = Label(center_frame, text="Next Mobber get ready!", font="Helvetica 16 bold")
67-
self.label_next_mobber.grid(row=row_index, columnspan=3, padx=30, pady=0, sticky=N)
68-
row_index += 1
69-
7062
self.add_mobber_entry = Entry(center_frame, text="Add Mobber", font="Helvetica 16 bold")
7163
self.add_mobber_entry.grid(row=row_index, columnspan=2, sticky=N + E + W, padx=10, pady=10)
7264
self.add_mobber_entry.bind("<Return>", self.add_mobber_left_click)

Frames/TransparentCountdownFrame.py

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ def __init__(self, parent, controller, time_options_manager, mobber_manager, cou
77
self.master = parent
88
self.controller = controller
99
self.create_frame_content()
10+
self.mobber_manager = mobber_manager
11+
self.mobber_manager.subscribe_to_mobber_list_change(self.mobber_list_change_callback)
1012
countdown_manager.subscribe_to_time_changes(self.update_time_change_callback)
1113

1214
def update_time_change_callback(self, days, minutes, seconds):
@@ -15,6 +17,17 @@ def update_time_change_callback(self, days, minutes, seconds):
1517
self.label_minutes['text'] = "{0:0>2}".format(minutes)
1618
self.label_seconds['text'] = "{0:0>2}".format(seconds)
1719

20+
def mobber_list_change_callback(self, mobber_list, driver_index, navigator_index):
21+
mobber_count = mobber_list.__len__()
22+
if mobber_count > navigator_index:
23+
self.label_navigator['text'] = self.get_navigator_text(mobber_list[navigator_index])
24+
else:
25+
self.label_navigator['text'] = self.get_navigator_text("")
26+
if mobber_count > driver_index:
27+
self.label_driver['text'] = self.get_driver_text(mobber_list[driver_index])
28+
else:
29+
self.label_driver['text'] = self.get_driver_text("")
30+
1831
def create_frame_content(self):
1932
row_index = 0
2033
self.label_minutes = Label(self, text="10", font="Helvetica 120 bold")
@@ -23,4 +36,16 @@ def create_frame_content(self):
2336
label_colon.grid(row=row_index, column=1, sticky=N)
2437
self.label_seconds = Label(self, text="30", font="Helvetica 120 bold")
2538
self.label_seconds.grid(row=row_index, column=2, sticky=W)
26-
row_index += 1
39+
row_index += 1
40+
self.label_driver = Label(self, text=self.get_driver_text(""), font="Helvetica 20 bold")
41+
self.label_driver.grid(row=row_index, columnspan=3, sticky=W)
42+
row_index += 1
43+
self.label_navigator = Label(self, text=self.get_navigator_text(""), font="Helvetica 20 bold")
44+
self.label_navigator.grid(row=row_index, columnspan=3, sticky=W)
45+
row_index += 1
46+
47+
def get_navigator_text(self,name ):
48+
return "Navigator: " + name
49+
50+
def get_driver_text(self, name):
51+
return "Driver: " + name

Infrastructure/CountdownManager.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,11 @@ def fire_time_change_callbacks(self):
2727
end_time = time.time()
2828
up_time = end_time - self.start_time
2929
remaining_time = self.count_down_total - datetime.timedelta(seconds=(int(up_time)))
30-
print(remaining_time.days)
3130
for callback in self.time_change_callbacks:
3231
if callback:
3332
callback(remaining_time.days, (remaining_time.seconds // 60) % 60, remaining_time.seconds % 60)
3433

3534
def refresh_timer(self):
35+
self.fire_time_change_callbacks()
3636
if self.root_tk_app:
37-
self.fire_time_change_callbacks()
3837
self.root_tk_app.after(500, self.refresh_timer)

Infrastructure/MobberManager.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
class MobberManager(object):
22
def __init__(self):
3+
self.driver_index = 0
4+
self.navigator_index = 1
35
self.mobber_list = []
46
self.mobber_list_change_callbacks = []
57

@@ -37,10 +39,26 @@ def subscribe_to_mobber_list_change(self, mobber_list_change_callback):
3739
self.fire_time_change_callbacks()
3840

3941
def fire_time_change_callbacks(self):
42+
self.update_navigator_driver_index()
4043
for mobber_list_change_callback in self.mobber_list_change_callbacks:
4144
if mobber_list_change_callback:
42-
mobber_list_change_callback(self.mobber_list)
45+
mobber_list_change_callback(self.mobber_list, self.driver_index, self.navigator_index)
4346

4447
def clear(self):
4548
self.mobber_list = []
46-
self.fire_time_change_callbacks()
49+
self.fire_time_change_callbacks()
50+
51+
def switch_navigator_driver(self):
52+
mobber_count = self.mobber_list.__len__()
53+
if mobber_count > 0:
54+
self.driver_index = (self.driver_index + 1) % mobber_count
55+
self.update_navigator_driver_index()
56+
self.fire_time_change_callbacks()
57+
58+
def update_navigator_driver_index(self):
59+
if self.mobber_list.__len__() > 0:
60+
self.driver_index = self.driver_index % self.mobber_list.__len__()
61+
self.navigator_index =(self.driver_index + 1) % self.mobber_list.__len__()
62+
else:
63+
self.driver_index = 0
64+
self.navigator_index = 1

tests/Infrastructure/MobberManager/TestsMobberManager.py

Lines changed: 53 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import os
22
import unittest
3-
43
from approvaltests import Approvals
54
from approvaltests.TextDiffReporter import TextDiffReporter
6-
75
from Infrastructure.MobberManager import MobberManager
86

7+
os.environ["APPROVALS_TEXT_DIFF_TOOL"] = "C:\\Program Files\\TortoiseSVN\\bin\\TortoiseMerge.exe"
8+
99

1010
class TestsMobberManager(unittest.TestCase):
1111
def test_empty_mobber_manager_has_no_items(self):
@@ -20,58 +20,58 @@ def test_add_mobber_chris_has_chris(self):
2020

2121
def test_add_mobber_joe_chris_has_joe_chris(self):
2222
mobber_manager = MobberManager()
23-
mobber_manager.add_mobber("Smokey Joe")
23+
mobber_manager.add_mobber("Joe")
2424
mobber_manager.add_mobber("Chris")
25-
result = ["Smokey Joe", "Chris"]
25+
result = ["Joe", "Chris"]
2626
self.assertEqual(mobber_manager.get_mobbers(), result)
2727

2828
def test_add_mobber_joe_chris_joe__remove_joe_has_joe_chris(self):
2929
mobber_manager = MobberManager()
30-
mobber_manager.add_mobber("Smokey Joe")
30+
mobber_manager.add_mobber("Joe")
3131
mobber_manager.add_mobber("Chris")
32-
mobber_manager.add_mobber("Smokey Joe")
32+
mobber_manager.add_mobber("Joe")
3333
mobber_manager.remove_mobber(2)
34-
result = ["Smokey Joe", "Chris"]
34+
result = ["Joe", "Chris"]
3535
self.assertEqual(mobber_manager.get_mobbers(), result)
3636

3737
def test_add_4_mobbers_move_up_middle(self):
3838
mobber_manager = MobberManager()
39-
mobber_manager.add_mobber("Smokey Joe")
39+
mobber_manager.add_mobber("Joe")
4040
mobber_manager.add_mobber("Chris")
4141
mobber_manager.add_mobber("Will")
4242
mobber_manager.add_mobber("Eric")
4343
mobber_manager.move_mobber_up(2)
44-
result = ["Smokey Joe", "Will", "Chris", "Eric"]
44+
result = ["Joe", "Will", "Chris", "Eric"]
4545
self.assertEqual(mobber_manager.get_mobbers(), result)
4646

4747
def test_add_4_mobbers_move_up_top(self):
4848
mobber_manager = MobberManager()
49-
mobber_manager.add_mobber("Smokey Joe")
49+
mobber_manager.add_mobber("Joe")
5050
mobber_manager.add_mobber("Chris")
5151
mobber_manager.add_mobber("Will")
5252
mobber_manager.add_mobber("Eric")
5353
mobber_manager.move_mobber_up(0)
54-
result = ["Eric", "Chris", "Will", "Smokey Joe"]
54+
result = ["Eric", "Chris", "Will", "Joe"]
5555
self.assertEqual(mobber_manager.get_mobbers(), result)
5656

5757
def test_add_4_mobbers_move_down_middle(self):
5858
mobber_manager = MobberManager()
59-
mobber_manager.add_mobber("Smokey Joe")
59+
mobber_manager.add_mobber("Joe")
6060
mobber_manager.add_mobber("Chris")
6161
mobber_manager.add_mobber("Will")
6262
mobber_manager.add_mobber("Eric")
6363
mobber_manager.move_mobber_down(2)
64-
result = ["Smokey Joe", "Chris", "Eric", "Will"]
64+
result = ["Joe", "Chris", "Eric", "Will"]
6565
self.assertEqual(mobber_manager.get_mobbers(), result)
6666

6767
def test_add_4_mobbers_move_down_bottom(self):
6868
mobber_manager = MobberManager()
69-
mobber_manager.add_mobber("Smokey Joe")
69+
mobber_manager.add_mobber("Joe")
7070
mobber_manager.add_mobber("Chris")
7171
mobber_manager.add_mobber("Will")
7272
mobber_manager.add_mobber("Eric")
7373
mobber_manager.move_mobber_down(3)
74-
result = ["Eric", "Chris", "Will", "Smokey Joe"]
74+
result = ["Eric", "Chris", "Will", "Joe"]
7575
self.assertEqual(mobber_manager.get_mobbers(), result)
7676

7777
def test_move_down_empty(self):
@@ -94,32 +94,46 @@ def test_remove_empty(self):
9494

9595
def test_clear(self):
9696
mobber_manager = MobberManager()
97-
mobber_manager.add_mobber("Smokey Joe")
97+
mobber_manager.add_mobber("Joe")
9898
mobber_manager.add_mobber("Chris")
9999
mobber_manager.add_mobber("Sam")
100100
mobber_manager.clear()
101101
result = []
102102
self.assertEqual(mobber_manager.get_mobbers(), result)
103103

104-
105104
def test_subscribe_to_mobber_list_changes(self):
106105
mobber_manager = MobberManager()
107-
result = { "result" : "Mobbers in List for Each Change\n", "increment" : 0}
106+
result = {"result": "Mobbers in List for Each Change\n", "increment": 0}
108107

109-
def time_change_callback(mobber_list):
108+
def time_change_callback(mobber_list, driver_index, navigator_index):
110109
result["increment"] += 1
111-
result["result"] += "Action " + result["increment"].__str__() + ":"
112-
for mobber in mobber_list:
113-
result["result"] += mobber + ","
110+
result["result"] += "Action " + result["increment"].__str__() + ":"
111+
for mobber_index in range(0, mobber_list.__len__()):
112+
result["result"] += mobber_list[mobber_index]
113+
if mobber_index == driver_index:
114+
result["result"] += " (Driver)"
115+
if mobber_index == navigator_index:
116+
result["result"] += " (Navigator)"
117+
result["result"] += ", "
118+
114119
result["result"] += "\n"
115120

116121
mobber_manager.subscribe_to_mobber_list_change(time_change_callback)
117122

118-
mobber_manager.add_mobber("Smokey Joe")
123+
mobber_manager.add_mobber("Joe")
119124
mobber_manager.add_mobber("Chris")
120125
mobber_manager.add_mobber("Sam")
126+
mobber_manager.add_mobber("John")
127+
mobber_manager.switch_navigator_driver()
128+
mobber_manager.add_mobber("Bill")
129+
mobber_manager.switch_navigator_driver()
130+
mobber_manager.switch_navigator_driver()
131+
mobber_manager.switch_navigator_driver()
132+
mobber_manager.switch_navigator_driver()
133+
mobber_manager.switch_navigator_driver()
121134
mobber_manager.remove_mobber(2)
122135
mobber_manager.remove_mobber(0)
136+
mobber_manager.switch_navigator_driver()
123137
mobber_manager.add_mobber("Seth")
124138
mobber_manager.move_mobber_down(0)
125139
mobber_manager.add_mobber("Fredrick")
@@ -130,6 +144,21 @@ def time_change_callback(mobber_list):
130144

131145
Approvals.verify(result["result"], TextDiffReporter())
132146

147+
def test_navigator1_driver0_index(self):
148+
mobber_manager = MobberManager()
149+
mobber_manager.add_mobber("Joe")
150+
mobber_manager.add_mobber("Chris")
151+
result = "Navigator: " + str(mobber_manager.navigator_index) + " Driver: " + str(mobber_manager.driver_index)
152+
self.assertEqual(result, "Navigator: 1 Driver: 0")
153+
154+
def test_switch_navigator0_driver1_index(self):
155+
mobber_manager = MobberManager()
156+
mobber_manager.add_mobber("Joe")
157+
mobber_manager.add_mobber("Chris")
158+
mobber_manager.switch_navigator_driver()
159+
result = "Navigator: " + str(mobber_manager.navigator_index) + " Driver: " + str(mobber_manager.driver_index)
160+
self.assertEqual(result, "Navigator: 0 Driver: 1")
161+
162+
133163
if __name__ == '__main__':
134-
os.environ["APPROVALS_TEXT_DIFF_TOOL"] = "meld"
135164
unittest.main()
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,23 @@
11
Mobbers in List for Each Change
22
Action 1:
3-
Action 2:Smokey Joe,
4-
Action 3:Smokey Joe,Chris,
5-
Action 4:Smokey Joe,Chris,Sam,
6-
Action 5:Smokey Joe,Chris,
7-
Action 6:Chris,
8-
Action 7:Chris,Seth,
9-
Action 8:Seth,Chris,
10-
Action 9:Seth,Chris,Fredrick,
11-
Action 10:Seth,Fredrick,Chris,
12-
Action 11:Seth,Chris,
13-
Action 12:Chris,
14-
Action 13:
3+
Action 2:Joe (Driver) (Navigator),
4+
Action 3:Joe (Driver), Chris (Navigator),
5+
Action 4:Joe (Driver), Chris (Navigator), Sam,
6+
Action 5:Joe (Driver), Chris (Navigator), Sam, John,
7+
Action 6:Joe, Chris (Driver), Sam (Navigator), John,
8+
Action 7:Joe, Chris (Driver), Sam (Navigator), John, Bill,
9+
Action 8:Joe, Chris, Sam (Driver), John (Navigator), Bill,
10+
Action 9:Joe, Chris, Sam, John (Driver), Bill (Navigator),
11+
Action 10:Joe (Navigator), Chris, Sam, John, Bill (Driver),
12+
Action 11:Joe (Driver), Chris (Navigator), Sam, John, Bill,
13+
Action 12:Joe, Chris (Driver), Sam (Navigator), John, Bill,
14+
Action 13:Joe, Chris (Driver), John (Navigator), Bill,
15+
Action 14:Chris, John (Driver), Bill (Navigator),
16+
Action 15:Chris (Navigator), John, Bill (Driver),
17+
Action 16:Chris, John, Bill (Driver), Seth (Navigator),
18+
Action 17:John, Chris, Bill (Driver), Seth (Navigator),
19+
Action 18:John, Chris, Bill (Driver), Seth (Navigator), Fredrick,
20+
Action 19:John, Bill, Chris (Driver), Seth (Navigator), Fredrick,
21+
Action 20:John, Chris, Seth (Driver), Fredrick (Navigator),
22+
Action 21:Chris (Navigator), Seth, Fredrick (Driver),
23+
Action 22:Seth (Driver), Fredrick (Navigator),

0 commit comments

Comments
 (0)