Implement click indicator with red circle display; update server run parameters
This commit is contained in:
		@@ -1,6 +1,33 @@
 | 
				
			|||||||
import pyautogui
 | 
					import pyautogui
 | 
				
			||||||
 | 
					import threading
 | 
				
			||||||
 | 
					import time
 | 
				
			||||||
 | 
					import tkinter as tk
 | 
				
			||||||
from objects.inputs import MouseInput, KeyboardInput, ButtonType
 | 
					from objects.inputs import MouseInput, KeyboardInput, ButtonType
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def show_click_indicator(x: int, y: int, duration: float = 2.0, size: int = 50) -> None:
 | 
				
			||||||
 | 
					    """Display a red circle at (x, y) for the given duration."""
 | 
				
			||||||
 | 
					    # Create a top-level window without decorations
 | 
				
			||||||
 | 
					    root = tk.Tk()
 | 
				
			||||||
 | 
					    root.overrideredirect(True)
 | 
				
			||||||
 | 
					    root.attributes('-topmost', True)
 | 
				
			||||||
 | 
					    # Semi-transparent window and disable to allow click-through
 | 
				
			||||||
 | 
					    root.attributes('-alpha', 0.5)
 | 
				
			||||||
 | 
					    try:
 | 
				
			||||||
 | 
					        root.attributes('-disabled', True)
 | 
				
			||||||
 | 
					    except Exception:
 | 
				
			||||||
 | 
					        pass
 | 
				
			||||||
 | 
					    # Position and size
 | 
				
			||||||
 | 
					    half = size // 2
 | 
				
			||||||
 | 
					    root.geometry(f"{size}x{size}+{x-half}+{y-half}")
 | 
				
			||||||
 | 
					    # Draw circle on canvas
 | 
				
			||||||
 | 
					    canvas = tk.Canvas(root, width=size, height=size, highlightthickness=0, bg='white')
 | 
				
			||||||
 | 
					    canvas.pack()
 | 
				
			||||||
 | 
					    canvas.create_oval(2, 2, size-2, size-2, outline='red', width=4)
 | 
				
			||||||
 | 
					    root.update()
 | 
				
			||||||
 | 
					    # Keep displayed for duration seconds
 | 
				
			||||||
 | 
					    time.sleep(duration)
 | 
				
			||||||
 | 
					    root.destroy()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def press_mouse(mouse_input: MouseInput) -> None:
 | 
					def press_mouse(mouse_input: MouseInput) -> None:
 | 
				
			||||||
    """Presses mouse buttons at the given position."""
 | 
					    """Presses mouse buttons at the given position."""
 | 
				
			||||||
    x, y = mouse_input.x, mouse_input.y
 | 
					    x, y = mouse_input.x, mouse_input.y
 | 
				
			||||||
@@ -13,6 +40,8 @@ def press_mouse(mouse_input: MouseInput) -> None:
 | 
				
			|||||||
        pyautogui.click(x, y, button='right')
 | 
					        pyautogui.click(x, y, button='right')
 | 
				
			||||||
    elif button == "middle":
 | 
					    elif button == "middle":
 | 
				
			||||||
        pyautogui.click(x, y, button='middle')
 | 
					        pyautogui.click(x, y, button='middle')
 | 
				
			||||||
 | 
					    # Show red circle indicator at click position for 2 seconds
 | 
				
			||||||
 | 
					    threading.Thread(target=show_click_indicator, args=(x, y), daemon=True).start()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def press_keyboard(keyboard_input: KeyboardInput) -> None:
 | 
					def press_keyboard(keyboard_input: KeyboardInput) -> None:
 | 
				
			||||||
    """Types the given sequence of keys."""
 | 
					    """Types the given sequence of keys."""
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								main.py
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								main.py
									
									
									
									
									
								
							@@ -12,7 +12,7 @@ def main():
 | 
				
			|||||||
        model=os.getenv("OPENAI_MODEL", "gpt-4.1")
 | 
					        model=os.getenv("OPENAI_MODEL", "gpt-4.1")
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
    server = webserver.web.WebServerApp(aip)
 | 
					    server = webserver.web.WebServerApp(aip)
 | 
				
			||||||
    server.run()
 | 
					    server.run(host="0.0.0.0", port=int(os.getenv("PORT", 5000)), debug=int(os.getenv("DEBUG", 0)) > 0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if __name__ == "__main__":
 | 
					if __name__ == "__main__":
 | 
				
			||||||
    main()
 | 
					    main()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from flask import Flask, request, jsonify
 | 
				
			|||||||
import os, ai.processor
 | 
					import os, ai.processor
 | 
				
			||||||
from dotenv import load_dotenv
 | 
					from dotenv import load_dotenv
 | 
				
			||||||
import io
 | 
					import io
 | 
				
			||||||
from PIL import ImageGrab
 | 
					from PIL import ImageGrab # type: ignore
 | 
				
			||||||
 | 
					
 | 
				
			||||||
load_dotenv()
 | 
					load_dotenv()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user