initial classes to help support creating layers for toggling visibility on the canvas for associated items

This commit is contained in:
Blake Harnden 2020-07-20 23:50:01 -07:00
parent 5e2ca0f549
commit f72d0d8a69
5 changed files with 176 additions and 0 deletions

View file

@ -0,0 +1,48 @@
import tkinter as tk
from tkinter import ttk
from typing import TYPE_CHECKING, Optional
from core.gui.dialogs.dialog import Dialog
from core.gui.themes import PADX, PADY
if TYPE_CHECKING:
from core.gui.app import Application
class SimpleStringDialog(Dialog):
def __init__(
self, master: tk.BaseWidget, app: "Application", title: str, prompt: str
):
super().__init__(app, title, master=master)
self.prompt: str = prompt
self.value = tk.StringVar()
self.entry: Optional[ttk.Entry] = None
self.canceled = False
self.draw()
def draw(self) -> None:
self.top.columnconfigure(0, weight=1)
label = ttk.Label(self.top, text=self.prompt)
label.grid(sticky=tk.EW, pady=PADY)
entry = ttk.Entry(self.top, textvariable=self.value)
entry.grid(stick=tk.EW, pady=PADY)
entry.focus_set()
frame = ttk.Frame(self.top)
frame.grid(sticky=tk.EW)
for i in range(2):
frame.columnconfigure(i, weight=1)
button = ttk.Button(frame, text="Submit", command=self.destroy)
button.grid(row=0, column=0, sticky=tk.EW, padx=PADX)
button = ttk.Button(frame, text="Cancel", command=self.click_cancel)
button.grid(row=0, column=1, sticky=tk.EW)
def click_cancel(self):
self.canceled = True
self.destroy()
def ask(self) -> Optional[str]:
self.show()
if self.canceled:
return None
else:
return self.value.get()