54 lines
2.0 KiB
Python
54 lines
2.0 KiB
Python
import tkinter as tk
|
|
from tkinter import ttk
|
|
|
|
import setup_tool_dynamic
|
|
|
|
|
|
class ScalingTestTool(setup_tool_dynamic.ModernWowSetupTool):
|
|
"""Temporary UI-only build for validating Windows DPI/display scaling."""
|
|
|
|
def __init__(self, root):
|
|
super().__init__(root)
|
|
|
|
# UI-only test: preserve every installer behavior and only change how
|
|
# the existing Tk window allocates and exposes its controls.
|
|
root.title("WoW Vanilla 1.12 Modernization Tool [UI Scaling Test]")
|
|
root.resizable(True, True)
|
|
|
|
# Reserve the bottom action button before the expandable notebook.
|
|
# This keeps Apply accessible when Windows text/DPI scaling makes the
|
|
# notebook request more vertical space than the original 680x660 size.
|
|
notebook = next(
|
|
(child for child in root.winfo_children() if isinstance(child, ttk.Notebook)),
|
|
None,
|
|
)
|
|
apply_button = getattr(self, "apply_button", None)
|
|
if notebook is not None and apply_button is not None:
|
|
notebook.pack_forget()
|
|
apply_button.pack_forget()
|
|
apply_button.pack(side="bottom", pady=10, fill="x", padx=20)
|
|
notebook.pack(fill="both", expand=True, padx=10, pady=(5, 10))
|
|
|
|
root.update_idletasks()
|
|
|
|
# Prefer the widgets' requested size when the monitor has room, while
|
|
# keeping a margin so the window remains reachable on smaller displays.
|
|
screen_width = max(1, root.winfo_screenwidth())
|
|
screen_height = max(1, root.winfo_screenheight())
|
|
max_width = max(640, screen_width - 80)
|
|
max_height = max(520, screen_height - 80)
|
|
|
|
requested_width = max(680, root.winfo_reqwidth())
|
|
requested_height = max(660, root.winfo_reqheight())
|
|
width = min(requested_width, max_width)
|
|
height = min(requested_height, max_height)
|
|
|
|
root.geometry(f"{width}x{height}")
|
|
root.minsize(min(640, max_width), min(520, max_height))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
root = tk.Tk()
|
|
app = ScalingTestTool(root)
|
|
root.mainloop()
|