Skip to content

Commit ef2ce73

Browse files
committed
Hides multi window top levels to prevent timer scattering
1 parent 214af36 commit ef2ce73

File tree

8 files changed

+72
-28
lines changed

8 files changed

+72
-28
lines changed

.idea/inspectionProfiles/Project_Default.xml

Lines changed: 15 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/inspectionProfiles/profiles_settings.xml

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Frames/MinimalScreenBlockerFrame.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ def __init__(self, master, controller, time_options_manager, mobber_manager, cou
1717
self.tips_manager = tips_manager
1818
self.mobber_manager.subscribe_to_mobber_list_change(self.mobber_list_change_callback)
1919

20-
2120
def build_window_content(self):
2221
center_frame = ttk.Frame(self)
2322
center_frame.grid(row=0, column=0)
@@ -42,7 +41,7 @@ def build_window_content(self):
4241
self.next_mobber_label.grid(row=row_index, columnspan=5, padx=30, pady=10)
4342
row_index += 1
4443

45-
start_button = ttk.Button(center_frame, text=" Start Mobbing! ", style="StartButton.TButton", )
44+
start_button = ttk.Button(center_frame, text="Start Mobbing!", style="StartButton.TButton", )
4645
start_button.grid(row=row_index, column=1, columnspan=3, sticky=N + E + W, padx=10, pady=10)
4746
start_button.bind("<Button-1>", lambda event: self.controller.show_transparent_countdown_frame())
4847
row_index += 1
@@ -57,7 +56,7 @@ def build_window_content(self):
5756
row_index += 1
5857

5958
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=90, pady=10)
59+
start_button.grid(row=row_index, column=2, columnspan=3, sticky=N + E + W, padx=200, pady=10)
6160
start_button.bind("<Button-1>", lambda event: self.controller.quit_and_destroy_session())
6261
row_index += 1
6362

Frames/MobTimerController.py

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,12 +75,17 @@ def __init__(self, *args, **kwargs):
7575
self.time_options_manager.set_countdown_time(self.settings_manager.get_general_minutes(), self.settings_manager.get_general_seconds())
7676

7777
def launch_transparent_countdown_if_blocking(self, event):
78-
if self.last_frame == ScreenBlockerFrame or self.last_frame == MinimalScreenBlockerFrame:
78+
if self.frame_is_screen_blocking():
79+
7980
self.show_transparent_countdown_frame()
8081

82+
def frame_is_screen_blocking(self):
83+
return self.last_frame == ScreenBlockerFrame or self.last_frame == MinimalScreenBlockerFrame
84+
8185
def show_minimal_screen_blocker_frame(self):
82-
if self.last_frame != ScreenBlockerFrame:
86+
if self.last_frame != MinimalScreenBlockerFrame:
8387
self.launch_blocking_Frame(MinimalScreenBlockerFrame)
88+
self.mobber_manager.switch_navigator_driver()
8489

8590
def quit_and_destroy_session(self):
8691
self.session_manager.clear_sessions()
@@ -93,6 +98,7 @@ def show_screen_blocker_when_session_interupted(self, days, minutes, seconds):
9398
self.session_manager.create_session()
9499

95100
def show_frame(self, frame_class):
101+
96102
switched_frames = False
97103
if self.last_frame != frame_class:
98104
for frame_instances in self.frames[frame_class]:
@@ -103,14 +109,21 @@ def show_frame(self, frame_class):
103109
self.focus_set()
104110
self.last_frame = frame_class
105111

112+
for container in self.containers:
113+
if isinstance(container, Toplevel):
114+
if self.frame_is_screen_blocking():
115+
container.deiconify()
116+
else:
117+
container.withdraw()
118+
106119
return switched_frames
107120

108121
def show_screen_blocker_frame(self):
109-
self.launch_blocking_Frame(ScreenBlockerFrame)
122+
if self.last_frame != ScreenBlockerFrame:
123+
self.launch_blocking_Frame(ScreenBlockerFrame)
110124

111125
def launch_blocking_Frame(self, frame):
112126
if self.show_frame(frame):
113-
self.mobber_manager.switch_navigator_driver()
114127
self.set_full_screen_always_on_top()
115128

116129
def show_transparent_countdown_frame(self):
@@ -167,6 +180,9 @@ def set_partial_screen_transparent(self):
167180
self.toggle_transparent_frame_position()
168181

169182
def toggle_transparent_frame_position(self, e=None):
183+
if self.state() == "withdrawn":
184+
print("withdrawn")
185+
return
170186
screenwidth = self.winfo_screenwidth()
171187
screenheight = self.winfo_screenheight()
172188

Frames/TransparentCountdownFrame.py

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55

66

77
class TransparentCountdownFrame(ttk.Frame):
8-
def __init__(self, master, controller, time_options_manager, mobber_manager, countdown_manager, settings_manager,tips_manager,
8+
def __init__(self, master, controller, time_options_manager, mobber_manager, countdown_manager, settings_manager,
9+
tips_manager,
910
**kwargs):
1011
super().__init__(master, **kwargs)
1112
self.master = master
@@ -15,13 +16,13 @@ def __init__(self, master, controller, time_options_manager, mobber_manager, cou
1516

1617
self.create_frame_content()
1718
self.mobber_manager.subscribe_to_mobber_list_change(self.mobber_list_change_callback)
18-
countdown_manager.subscribe_to_time_changes(self.update_time_change_callback)
19+
self.countdown_manager = countdown_manager
20+
self.countdown_manager.subscribe_to_time_changes(self.update_time_change_callback)
1921

2022
def update_time_change_callback(self, days, minutes, seconds):
21-
if days < 0 or minutes < 0 or seconds < 0:
23+
if (days < 0 or minutes < 0 or seconds < 0) and not self.controller.frame_is_screen_blocking():
2224
self.controller.show_minimal_screen_blocker_frame()
23-
self.label_minutes['text'] = "{0:0>2}".format(minutes)
24-
self.label_seconds['text'] = "{0:0>2}".format(seconds)
25+
self.label_time['text'] = "{0:0>2}:{1:0>2}".format(minutes, seconds)
2526

2627
def mobber_list_change_callback(self, mobber_list, driver_index, navigator_index):
2728
mobber_count = mobber_list.__len__()
@@ -35,28 +36,34 @@ def mobber_list_change_callback(self, mobber_list, driver_index, navigator_index
3536
self.label_driver['text'] = self.get_driver_text("")
3637

3738
def create_frame_content(self):
39+
self.grid_rowconfigure(0, weight=0)
40+
self.grid_rowconfigure(1, weight=0)
41+
self.grid_rowconfigure(2, weight=0)
42+
self.grid_rowconfigure(4, weight=1)
43+
3844
row_index = 0
39-
count_down_timer_font = "Helvetica {} bold".format(self.settings_manager.get_transparent_window_count_down_timer_font_size())
40-
self.label_minutes = ttk.Label(self, text="10", font=count_down_timer_font)
41-
self.label_minutes.grid(row=row_index, column=0, sticky=(N, E))
42-
label_colon = ttk.Label(self, text=":", font=count_down_timer_font)
43-
label_colon.grid(row=row_index, column=1, sticky=N)
44-
self.label_seconds = ttk.Label(self, text="30", font=count_down_timer_font)
45-
self.label_seconds.grid(row=row_index, column=2, sticky=(N,W))
45+
count_down_timer_font = "Helvetica {} bold".format(
46+
self.settings_manager.get_transparent_window_count_down_timer_font_size())
47+
self.label_time = ttk.Label(self, text="10:00", font=count_down_timer_font)
48+
# self.label_time.grid(row=row_index, sticky=(N))
49+
self.label_time.pack()
4650

4751
row_index += 1
48-
next_driver_font = "Helvetica {} bold".format(self.settings_manager.get_transparent_window_next_driver_font_size())
52+
next_driver_font = "Helvetica {} bold".format(
53+
self.settings_manager.get_transparent_window_next_driver_font_size())
4954
self.label_navigator = ttk.Label(self, text=self.get_navigator_text(""), font=next_driver_font)
50-
self.label_navigator.grid(row=row_index, columnspan=3, sticky=(N,W))
55+
# self.label_navigator.grid(row=row_index, sticky=(N))
56+
self.label_navigator.pack()
5157

5258
row_index += 1
5359
driver_font = "Helvetica {} bold".format(self.settings_manager.get_transparent_window_driver_font_size())
5460
self.label_driver = ttk.Label(self, text=self.get_driver_text(""), font=driver_font)
55-
self.label_driver.grid(row=row_index, columnspan=3, sticky=(N,W))
61+
# self.label_driver.grid(row=row_index, sticky=(N))
62+
self.label_driver.pack()
5663
row_index += 1
5764

5865
def get_navigator_text(self, name):
5966
return "Next: " + name
6067

6168
def get_driver_text(self, name):
62-
return "Current: " + name
69+
return "Driver: " + name

Infrastructure/Sessions/28f3a638-b379-11e5-9246-20c9d042e8c0

Whitespace-only changes.

Infrastructure/ThemeManager.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ def set_theme(self, theme_name):
3333
style.configure('TLabel', background=background_color, foreground=text_color)
3434
style.configure('Highlight.TLabel', background=background_color, foreground=highlight_color)
3535
style.configure("Treeview", background=background_color,
36-
foreground=text_color, fieldbackground=background_color, font="Helvetica 16 bold")
36+
foreground=text_color, fieldbackground=background_color, font="Helvetica 16 bold", rowheight=30)
3737
style.element_create("plain.field", "from", "clam")
3838
style.configure("StartButton.TButton",font="Helvetica 50 bold")
3939

MobTimer.cfg

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22
[TRANSPARENT WINDOW SETTINGS]
33
size percentage = 0.12
44
alpha percentage = 0.4
5-
count down timer font size = 40
6-
driver font size = 25
7-
next driver font size = 30
5+
count down timer font size = 30
6+
driver font size = 15
7+
next driver font size = 15
88

99
#Theme options either 'none' or a file form the Themes folder. e.g. 'Dark'
1010
[GENERAL SETTINGS]
11-
theme = Dark
11+
theme = Sky
1212

1313
[TIMER SETTINGS]
1414
minutes = 5

0 commit comments

Comments
 (0)