diff --git a/grid.py b/grid.py deleted file mode 100644 index b920c81..0000000 --- a/grid.py +++ /dev/null @@ -1,132 +0,0 @@ -# og source - thirds.exe -import tkinter as tk -import ctypes -from PIL import Image, ImageTk -from pynput import mouse, keyboard - -# Windows Constants -WS_EX_LAYERED = 0x00080000 -WS_EX_TRANSPARENT = 0x00000020 -GWL_EXSTYLE = -20 -HWND_TOPMOST = -1 -SWP_NOSIZE = 0x0001 -SWP_NOMOVE = 0x0002 -SWP_NOACTIVATE = 0x0010 - -def make_window_click_through(hwnd): - styles = ctypes.windll.user32.GetWindowLongPtrW(hwnd, GWL_EXSTYLE) - ctypes.windll.user32.SetWindowLongPtrW(hwnd, GWL_EXSTYLE, styles | WS_EX_LAYERED | WS_EX_TRANSPARENT) - -def make_window_always_on_top(hwnd): - ctypes.windll.user32.SetWindowPos( - hwnd, HWND_TOPMOST, 0, 0, 0, 0, - SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE - ) - -def create_red_square_icon(size=16): - img = Image.new("RGBA", (size, size), color=(255, 0, 0, 255)) - return ImageTk.PhotoImage(img) - -def main(): - root = tk.Tk() - root.title("Thirds") - - # 1 - icon_image = create_red_square_icon(size=32) - root.iconphoto(True, icon_image) - - # 2 - root.overrideredirect(True) - root.wm_attributes("-topmost", True) - - # 3 - screen_width = root.winfo_screenwidth() - screen_height = root.winfo_screenheight() - - # 4 - root.geometry(f"{screen_width}x{screen_height}+0+0") - - # 5 - TRANSPARENT_COLOR = "magenta" - root.config(bg=TRANSPARENT_COLOR) - root.wm_attributes("-transparentcolor", TRANSPARENT_COLOR) - - # Rule-of-Thirds lines - canvas = tk.Canvas( - root, - width=screen_width, - height=screen_height, - highlightthickness=0, - bg=TRANSPARENT_COLOR - ) - canvas.pack() - - # Rule of Thirds lines - line_v1 = canvas.create_line(screen_width/3, 0, - screen_width/3, screen_height, - fill="red", width=2) - line_v2 = canvas.create_line(2*screen_width/3, 0, - 2*screen_width/3, screen_height, - fill="red", width=2) - line_h1 = canvas.create_line(0, screen_height/3, - screen_width, screen_height/3, - fill="red", width=2) - line_h2 = canvas.create_line(0, 2*screen_height/3, - screen_width, 2*screen_height/3, - fill="red", width=2) - - # window to be drawn - root.update_idletasks() - - # native window handle via the window title - hwnd = ctypes.windll.user32.FindWindowW(None, "Rule of Thirds Overlay") - if not hwnd: - hwnd = root.winfo_id() # fallback - - # window click-through - make_window_click_through(hwnd) - - # window always on top - make_window_always_on_top(hwnd) - - - # Listeners - grid_visible = True - - def toggle_grid(): - nonlocal grid_visible - grid_visible = not grid_visible - new_state = "normal" if grid_visible else "hidden" - for line_id in (line_v1, line_v2, line_h1, line_h2): - canvas.itemconfig(line_id, state=new_state) - - def change_color(new_color): - for line_id in (line_v1, line_v2, line_h1, line_h2): - canvas.itemconfig(line_id, fill=new_color) - - def close_program(): - root.destroy() - - - def on_click(x, y, button, pressed): - if pressed and button == mouse.Button.middle: - toggle_grid() - - mouse_listener = mouse.Listener(on_click=on_click) - mouse_listener.start() - - - hotkeys = keyboard.GlobalHotKeys({ - '+1': lambda: change_color('red'), # Shift+1 → Red - '+2': lambda: change_color('light green'), # Shift+2 → Light green - '+3': lambda: change_color('white'), # Shift+3 → White - '+4': lambda: change_color('black'), # Shift+4 → Black - '+1': close_program # Ctrl+1 → Close - }) - hotkeys.start() - - - root.mainloop() - -if __name__ == "__main__": - main()