attempt adding scaling function to the gui
This commit is contained in:
parent
3d1692fbb3
commit
8734b9f22f
4 changed files with 159 additions and 18 deletions
|
@ -10,10 +10,14 @@ from core.gui.themes import FRAME_PAD, PADX, PADY
|
|||
if TYPE_CHECKING:
|
||||
from core.gui.app import Application
|
||||
|
||||
WIDTH = 1000
|
||||
HEIGHT = 800
|
||||
|
||||
|
||||
class PreferencesDialog(Dialog):
|
||||
def __init__(self, master: "Application", app: "Application"):
|
||||
super().__init__(master, app, "Preferences", modal=True)
|
||||
self.gui_scale = tk.DoubleVar(value=self.app.canvas.app_scale)
|
||||
preferences = self.app.guiconfig["preferences"]
|
||||
self.editor = tk.StringVar(value=preferences["editor"])
|
||||
self.theme = tk.StringVar(value=preferences["theme"])
|
||||
|
@ -64,6 +68,27 @@ class PreferencesDialog(Dialog):
|
|||
entry = ttk.Entry(frame, textvariable=self.gui3d)
|
||||
entry.grid(row=3, column=1, sticky="ew")
|
||||
|
||||
label = ttk.Label(frame, text="Scaling")
|
||||
label.grid(row=4, column=0, pady=PADY, padx=PADX, sticky="w")
|
||||
|
||||
scale_frame = ttk.Frame(frame)
|
||||
scale_frame.grid(row=4, column=1, sticky="ew")
|
||||
scale_frame.columnconfigure(0, weight=1)
|
||||
scale = ttk.Scale(
|
||||
scale_frame,
|
||||
from_=0.5,
|
||||
to=5,
|
||||
value=1,
|
||||
orient=tk.HORIZONTAL,
|
||||
variable=self.gui_scale,
|
||||
command=self.scale_adjust,
|
||||
)
|
||||
scale.grid(row=0, column=0, sticky="ew")
|
||||
entry = ttk.Entry(
|
||||
scale_frame, textvariable=self.gui_scale, width=4, state="disabled"
|
||||
)
|
||||
entry.grid(row=0, column=1)
|
||||
|
||||
def draw_buttons(self):
|
||||
frame = ttk.Frame(self.top)
|
||||
frame.grid(sticky="ew")
|
||||
|
@ -89,3 +114,17 @@ class PreferencesDialog(Dialog):
|
|||
preferences["theme"] = self.theme.get()
|
||||
self.app.save_config()
|
||||
self.destroy()
|
||||
|
||||
def scale_adjust(self, scale: str):
|
||||
self.gui_scale.set(round(self.gui_scale.get(), 2))
|
||||
app_scale = self.gui_scale.get()
|
||||
self.app.canvas.app_scale = app_scale
|
||||
screen_width = self.app.master.winfo_screenwidth()
|
||||
screen_height = self.app.master.winfo_screenheight()
|
||||
scaled_width = WIDTH * app_scale
|
||||
scaled_height = HEIGHT * app_scale
|
||||
x = int(screen_width / 2 - scaled_width / 2)
|
||||
y = int(screen_height / 2 - scaled_height / 2)
|
||||
self.app.master.geometry(f"{int(scaled_width)}x{int(scaled_height)}+{x}+{y}")
|
||||
|
||||
self.app.toolbar.scale(app_scale)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue