added clipcascade
This commit is contained in:
Executable
+45
@@ -0,0 +1,45 @@
|
||||
import logging
|
||||
import re
|
||||
from core.constants import *
|
||||
|
||||
|
||||
def center_window(win, max_height=None):
|
||||
"""Center a Tk/Toplevel window on the primary monitor."""
|
||||
logging.debug(f"Centering window with max_height={max_height}")
|
||||
win.update_idletasks()
|
||||
window_width = win.winfo_width()
|
||||
window_height = win.winfo_height()
|
||||
if max_height:
|
||||
window_height = min(window_height, max_height)
|
||||
logging.debug(f"Window dimensions: {window_width}x{window_height}")
|
||||
primary_x, primary_y = 0, 0
|
||||
primary_w, primary_h = win.winfo_screenwidth(), win.winfo_screenheight()
|
||||
try:
|
||||
if PLATFORM.startswith(LINUX):
|
||||
logging.debug("Detecting monitors on Linux platform")
|
||||
import subprocess
|
||||
|
||||
result = subprocess.run(
|
||||
["xrandr", "--query"], capture_output=True, text=True, timeout=2
|
||||
)
|
||||
for line in result.stdout.splitlines():
|
||||
if " connected primary" in line:
|
||||
m = re.search(r"(\d+)x(\d+)\+(\d+)\+(\d+)", line)
|
||||
if m:
|
||||
primary_w = int(m.group(1))
|
||||
primary_h = int(m.group(2))
|
||||
primary_x = int(m.group(3))
|
||||
primary_y = int(m.group(4))
|
||||
logging.debug(
|
||||
f"Primary monitor: position=({primary_x}, {primary_y}), size={primary_w}x{primary_h}"
|
||||
)
|
||||
break
|
||||
except Exception as e:
|
||||
logging.warning(f"Failed to detect primary monitor: {e}. Using fallback dimensions.")
|
||||
x = primary_x + (primary_w - window_width) // 2
|
||||
y = primary_y + (primary_h - window_height) // 2
|
||||
x = max(primary_x, x)
|
||||
y = max(primary_y, y)
|
||||
logging.debug(f"Calculated window position: ({x}, {y})")
|
||||
win.geometry(f"{window_width}x{window_height}+{x}+{y}")
|
||||
logging.debug(f"Applied geometry: {window_width}x{window_height}+{x}+{y}")
|
||||
Reference in New Issue
Block a user