Skip to content

Commit 6ff6bf7

Browse files
committed
Unobtrusive mode added
1 parent c654ca8 commit 6ff6bf7

File tree

6 files changed

+65
-13
lines changed

6 files changed

+65
-13
lines changed

Frames/MobTimerController.py

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
class MobTimerController(Tk):
2323
def __init__(self, *args, **kwargs):
2424
Tk.__init__(self, *args, **kwargs)
25+
self.toggle_transparent_frame_position_function = self.toggle_transparent_frame_position_enabled
2526
self.transparent_frame_monitor_index = 0
2627
self.transparent_frame_position_index = 0
2728
self.settings_manager = SettingsManager()
@@ -33,8 +34,8 @@ def __init__(self, *args, **kwargs):
3334
self.timer_extension_count = self.settings_manager.get_timer_extension_count()
3435
self.extensions_used = 0
3536
atexit.register(self.session_manager.clear_sessions)
36-
# if self.session_manager.get_active_sessions().__len__() > 0:
37-
# self.quit_and_destroy_session()
37+
if self.session_manager.get_active_sessions().__len__() > 0:
38+
self.quit_and_destroy_session()
3839

3940
self.session_manager.create_session()
4041
self.iconbitmap(default='time-bomb.ico')
@@ -91,6 +92,8 @@ def frame_is_screen_blocking(self):
9192
return self.last_frame == ScreenBlockerFrame or self.last_frame == MinimalScreenBlockerFrame
9293

9394
def show_minimal_screen_blocker_frame(self):
95+
self.toggle_transparent_frame_position_function = self.toggle_transparent_frame_position_enabled
96+
self.theme_manager.reset_flashing_background_colors_to_normal()
9497
if self.last_frame != MinimalScreenBlockerFrame:
9598
self.launch_blocking_Frame(MinimalScreenBlockerFrame)
9699
self.mobber_manager.switch_next_driver()
@@ -122,7 +125,8 @@ def show_frame(self, frame_class):
122125
container.deiconify()
123126
else:
124127
container.withdraw()
125-
128+
container.focus_force()
129+
container.focus_set()
126130
return switched_frames
127131

128132
def show_screen_blocker_frame(self):
@@ -207,22 +211,30 @@ def unfade_app(self):
207211
for controller in self.containers:
208212
controller.master.attributes("-alpha", 1)
209213

214+
def flash_unobtrusive_transparent_countdown_frame(self):
215+
self.toggle_transparent_frame_position_function = self.toggle_transparent_frame_position_disabled
216+
for container in self.containers:
217+
container.master.attributes("-alpha", 1)
218+
container.focus_force()
219+
container.focus_set()
220+
221+
def toggle_transparent_frame_position_disabled(self):
222+
pass
223+
210224
def toggle_transparent_frame_position(self, e=None):
211225
if self.state() == "withdrawn":
212226
return
227+
self.toggle_transparent_frame_position_function()
213228

229+
def toggle_transparent_frame_position_enabled(self):
214230
monitors = ScreenUtility.get_monitors_or_default(self)
215231
monitor = monitors[self.transparent_frame_monitor_index]
216-
217232
screenwidth = monitor.width
218233
screenheight = monitor.height
219-
220234
self.set_always_on_top()
221235
self.remove_title_bar()
222236
self.disable_resizing()
223-
224237
size_percentage = self.settings_manager.get_transparent_window_screen_size_percent()
225-
226238
window_width = int(screenwidth * size_percentage)
227239
window_height = int(screenheight * size_percentage)
228240
if self.transparent_frame_position_index == 0:
@@ -231,8 +243,8 @@ def toggle_transparent_frame_position(self, e=None):
231243
else:
232244
self.transparent_frame_position = monitor.x + 0
233245
self.transparent_frame_position_index = (self.transparent_frame_position_index + 1) % 2
234-
235-
bottom_left_screen = "{}x{}+{}+{}".format(window_width, window_height, self.transparent_frame_position, monitor.y +
246+
bottom_left_screen = "{}x{}+{}+{}".format(window_width, window_height, self.transparent_frame_position,
247+
monitor.y +
236248
screenheight - window_height)
237249
self.geometry(bottom_left_screen)
238250

Frames/TransparentCountdownFrame.py

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
class TransparentCountdownFrame(ttk.Frame):
88
def __init__(self, master, controller, time_options_manager, mobber_manager, countdown_manager, settings_manager,
9-
tips_manager,theme_manager,
9+
tips_manager, theme_manager,
1010
**kwargs):
1111
super().__init__(master, **kwargs)
1212
self.master = master
@@ -18,11 +18,23 @@ def __init__(self, master, controller, time_options_manager, mobber_manager, cou
1818
self.mobber_manager.subscribe_to_mobber_list_change(self.mobber_list_change_callback)
1919
self.countdown_manager = countdown_manager
2020
self.countdown_manager.subscribe_to_time_changes(self.update_time_change_callback)
21+
self.unobtrusive_mode_enabled = self.settings_manager.get_general_enable_unobtrusive_mode()
22+
23+
24+
def reset_theme_and_continue_mobbing(self):
25+
self.controller.show_minimal_screen_blocker_frame()
26+
self.controller.theme_manager.reset_flashing_background_colors_to_normal()
2127

2228
def update_time_change_callback(self, days, minutes, seconds):
23-
if (days < 0 or minutes < 0 or seconds < 0) and not self.controller.frame_is_screen_blocking():
24-
self.controller.show_minimal_screen_blocker_frame()
2529
self.label_time['text'] = "{0:0>2}:{1:0>2}".format(minutes, seconds)
30+
if (days < 0 or minutes < 0 or seconds < 0) and not self.controller.frame_is_screen_blocking():
31+
if self.unobtrusive_mode_enabled:
32+
self.controller.flash_unobtrusive_transparent_countdown_frame()
33+
self.controller.theme_manager.toggle_flashing_background_style()
34+
self.label_time['text'] = "Click&Rotate!"
35+
else:
36+
self.controller.show_minimal_screen_blocker_frame()
37+
2638

2739
def mobber_list_change_callback(self, mobber_list, driver_index, navigator_index):
2840
mobber_count = mobber_list.__len__()
@@ -59,6 +71,12 @@ def create_frame_content(self):
5971
self.label_driver.pack()
6072
row_index += 1
6173

74+
75+
self.bind("<Button-1>", lambda event: self.reset_theme_and_continue_mobbing())
76+
self.label_time.bind("<Button-1>", lambda event: self.reset_theme_and_continue_mobbing())
77+
self.label_navigator.bind("<Button-1>", lambda event: self.reset_theme_and_continue_mobbing())
78+
self.label_driver.bind("<Button-1>", lambda event: self.reset_theme_and_continue_mobbing())
79+
6280
def get_navigator_text(self, name):
6381
return "Next: " + name
6482

Infrastructure/Sessions/6d45f552-e434-11e5-b958-20c9d042e8c0 renamed to Infrastructure/Sessions/00010203-0405-0607-0809-0a0b0c0d0e0f

File renamed without changes.

Infrastructure/SettingsManager.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,9 @@ def get_timer_extension_count(self):
8888
def get_general_enable_tips(self):
8989
return self.general_settings_.getboolean("enable tips", True)
9090

91+
def get_general_enable_unobtrusive_mode(self):
92+
return self.general_settings_.getboolean("enable unobtrusive mode", False)
93+
9194
def get_dojo_enabled(self):
9295
return self.code_dojo.getboolean("enable dojo mode", False)
9396

Infrastructure/ThemeManager.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,24 @@ def __init__(self):
2828
self.button_color = "#FFFFFF"
2929
self.text_color = "#000000"
3030
self.highlight_color = "#aaaaaa"
31+
self.normal_background_flash_color = True
32+
33+
def toggle_flashing_background_style(self):
34+
style = ttk.Style()
35+
style.theme_use('default')
36+
self.normal_background_flash_color = not self.normal_background_flash_color
37+
if self.normal_background_flash_color:
38+
style.configure('TFrame', background= self.background_color)
39+
style.configure('TLabel', background=self.background_color, foreground=self.text_color)
40+
else:
41+
style.configure('TFrame', background= self.highlight_color)
42+
style.configure('TLabel', background=self.highlight_color, foreground=self.background_color)
43+
44+
def reset_flashing_background_colors_to_normal(self):
45+
style = ttk.Style()
46+
style.theme_use('default')
47+
style.configure('TFrame', background= self.background_color)
48+
style.configure('TLabel', background=self.background_color, foreground=self.text_color)
3149

3250
def set_theme(self, theme_name):
3351
cfg_file = "Themes/{}.cfg".format(theme_name)

MobTimer.cfg

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ mouse wheel seconds delta = 1
33
click seconds delta = 5
44

55
[TRANSPARENT WINDOW SETTINGS]
6-
size percentage = 0.12
6+
size percentage = 0.14
77
alpha percentage = 0.4
88
count down timer font size = 30
99
driver font size = 15
@@ -22,6 +22,7 @@ randomize next driver = False
2222
use logo image = False
2323
logo image name = company-logo.png
2424
auto theme logo = False
25+
enable unobtrusive mode = True
2526

2627
[TIMER SETTINGS]
2728
minutes = 5

0 commit comments

Comments
 (0)