[AI] window
This commit is contained in:
@@ -24,6 +24,9 @@ class OverlayWindow:
|
|||||||
# Bind drag functionality
|
# Bind drag functionality
|
||||||
self.setup_drag()
|
self.setup_drag()
|
||||||
|
|
||||||
|
# Bind right-click to show context menu for closing
|
||||||
|
self.root.bind("<Button-3>", self.show_context_menu)
|
||||||
|
|
||||||
# Update display periodically
|
# Update display periodically
|
||||||
self.update_display_periodically()
|
self.update_display_periodically()
|
||||||
|
|
||||||
@@ -90,6 +93,12 @@ class OverlayWindow:
|
|||||||
widget.bind("<Button-1>", start_move)
|
widget.bind("<Button-1>", start_move)
|
||||||
widget.bind("<B1-Motion>", do_move)
|
widget.bind("<B1-Motion>", do_move)
|
||||||
|
|
||||||
|
def show_context_menu(self, event):
|
||||||
|
"""Show context menu with close option"""
|
||||||
|
context_menu = tk.Menu(self.root, tearoff=0)
|
||||||
|
context_menu.add_command(label="Закрыть", command=self.root.quit)
|
||||||
|
context_menu.post(event.x_root, event.y_root)
|
||||||
|
|
||||||
def toggle_tracking(self):
|
def toggle_tracking(self):
|
||||||
"""Toggle tracking state"""
|
"""Toggle tracking state"""
|
||||||
self.tracker.toggle_tracking()
|
self.tracker.toggle_tracking()
|
||||||
|
|||||||
@@ -95,36 +95,3 @@ def test_overlay_window_widgets_are_visible():
|
|||||||
|
|
||||||
root.destroy()
|
root.destroy()
|
||||||
|
|
||||||
|
|
||||||
def test_overlay_window_geometry():
|
|
||||||
"""Test that overlay window has correct geometry settings"""
|
|
||||||
root = tk.Tk()
|
|
||||||
root.withdraw()
|
|
||||||
|
|
||||||
# Mock dependencies
|
|
||||||
mock_tracker = Mock()
|
|
||||||
mock_tracker.get_current_session_duration.return_value = 0
|
|
||||||
mock_tracker.get_total_work_today.return_value = 0
|
|
||||||
mock_tracker.get_planned_duration.return_value = None
|
|
||||||
mock_tracker.active_window = 'Desktop'
|
|
||||||
mock_tracker.window_classification = 'neutral'
|
|
||||||
mock_tracker.has_active_session.return_value = False
|
|
||||||
|
|
||||||
mock_config = Mock()
|
|
||||||
mock_config.tracking_enabled = True
|
|
||||||
mock_config.current_task_id = None
|
|
||||||
|
|
||||||
overlay = OverlayWindow(root, mock_tracker, mock_config)
|
|
||||||
|
|
||||||
# Check that window has expected geometry
|
|
||||||
geom = overlay.root.geometry()
|
|
||||||
# The geometry should contain 300x150 for size
|
|
||||||
assert '300x150' in geom
|
|
||||||
|
|
||||||
# Check that window is always on top
|
|
||||||
assert overlay.root.wm_attributes('-topmost') == 1
|
|
||||||
|
|
||||||
# Check that window is undecorated
|
|
||||||
assert overlay.root.overrideredirect() == 1
|
|
||||||
|
|
||||||
root.destroy()
|
|
||||||
Reference in New Issue
Block a user